diff --git a/.clang-format b/.clang-format index 1254c0b..5ebe470 100644 --- a/.clang-format +++ b/.clang-format @@ -1,10 +1,8 @@ ---- # We'll use defaults from the LLVM style, but with 4 columns indentation. BasedOnStyle: LLVM IndentWidth: 4 ---- + Language: Cpp # Force pointers to the type for C++. DerivePointerAlignment: false -PointerAlignment: Left ---- \ No newline at end of file +PointerAlignment: Left \ No newline at end of file diff --git a/.gitignore b/.gitignore index 1899660..ad0a7b2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ build -.vscode \ No newline at end of file +.vscode +/.vs diff --git a/README.de.md b/README.de.md index e69de29..274cee6 100644 --- a/README.de.md +++ b/README.de.md @@ -0,0 +1,41 @@ +# ParadiSO - eine minimale 2D-Grafikengine + +**ParadiSO** wurde als stark abgespeckte 2D-Version meiner `pixwerx`-Engine konzipiert. _ParadiSO_ verfolgt einen minimalistischen Ansatz für 2D-Grafik zu Bildungszwecken. Es verwendet modernes C++ und ein datengetriebenes Design, jedoch keine ECS (Entity Component System). + +## Bildungszwecke + +Einige Argumente für seinen Bildungsaspekt: + +- Kombination verschiedener Konzepte und Paradigmen zur Erstellung ausdrucksstarker, aber knappen Codes +- Stark von Rust-Code inspiriert +- Für den mathematischen Code wird eine sofortige Auswertung verwendet (keine Expression-Templates), jedoch mit der Verwendung von `constexpr`, um eventuelle Performance-Overheads auszugleichen und optimale Vektorisierung zu erreichen. +- Versteckt alte `C`-APIs hinter einer modernisierten Fassade +- Es lehnt sich stark an die STL und ihre Algorithmen an + +## Minimalistisch + +Da diese Engine einige Muster und Designkonzepte zeigen soll, versucht sie, unnötigen Ballast zu vermeiden. + +## Abhängigkeiten + +ParadiSO wird mit den notwendigen Komponenten geliefert. Diese sollte jedoch hier erwähnt werden: + +- [GLFW 3.3.8](https://github.com/glfw/glfw) +- [GLAD](https://github.com/Dav1dde/glad) +- [STB image](https://github.com/nothings/stb) + +## Toolchains + +ParadiSO kann auf verschiedenen Plattformen gebaut werden + +- Windows (Visual Studio Build Tools 2022) +- MacOS (clang 14 or later) +- Linux (clang 14 or later, gcc 13.2.1) + +Andere Kombinationen sind möglich aber nicht getestet. + +## Beiträge + +- [Tim Götzelmann](https://code.technotecture.net/Timeplex) Windows Build +- [Robin Rottstädt](https://code.technotecture.net/robin_rottstaedt) Flappy Bird Clone, Bitmap Loader +- [brxxh](https://code.technotecture.net/brxxh) Flappy Bird Clone diff --git a/README.md b/README.md index 1db15bb..07828bc 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,41 @@ -# ParadisSO - a minimal 2D graphics engine +# ParadiSO - a minimal 2D graphics engine -**ParadiSO** was conceived as a heavily stripped down 2D version of my `pixwerx` engine. *ParadiSO* mimics a minimalistic approach to 2D graphics for educational purposes. It uses modern C++ and a data-driven design, but no ECS. +**ParadiSO** was conceived as a heavily stripped down 2D version of my `pixwerx` engine. _ParadiSO_ mimics a minimalistic approach to 2D graphics for educational purposes. It uses modern C++ and a data-driven design, but no ECS. ## Educational Some arguments for its educational side: -* mix and match of various concepts and paradigms to write expressive but concise code -* heavily inspired by Rust code -* math code is eager evaluation but `constexpr` to compensate overheads -* hides old-style `C` APIs behind a renovated facade -* it leans heavily on the STL and its algorithms +- mix and match of various concepts and paradigms to write expressive but concise code +- heavily inspired by Rust code +- math code is eager evaluation but `constexpr` to compensate overheads +- hides old-style `C` APIs behind a renovated facade +- it leans heavily on the STL and its algorithms ## Minimal -Because this engine should show some patterns and design concepts it tries to avoid adding unnecessary bloat. +Because this engine should show some patterns and design concepts it tries to avoid adding unnecessary bloat. ## Dependencies ParadiSO comes with batteries included. However, it should be mentioned here: -* [GLFW 3.3.8](https://github.com/glfw/glfw) -* [GLAD](https://github.com/Dav1dde/glad) +- [GLFW 3.3.8](https://github.com/glfw/glfw) +- [GLAD](https://github.com/Dav1dde/glad) +- [STB image](https://github.com/nothings/stb) +## Toolchains + +ParadiSO is being developed to work on all major desktop systems. + +- Windows (Visual Studio Build Tools 2022) +- MacOS (clang 14 or later) +- Linux (clang 14 or later, gcc 13.2.1) + +Other combinations might work but are untested. + +## Contributors + +- [Tim Götzelmann](https://code.technotecture.net/Timeplex) Windows Build +- [Robin Rottstädt](https://code.technotecture.net/robin_rottstaedt) Flappy Bird Clone, Bitmap Loader +- [brxxh](https://code.technotecture.net/brxxh) Flappy Bird Clone diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..64ecc08 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,50 @@ +# Todo + +Here some ideas for improving this tiny engine: + +## Rendering +- [ ] replace the OpenGL renderer with a Vulkan backend +- [ ] add animatable sprites (access to UV mapping and tiling) +- [ ] add a SDF based renderer (parametric tiles and font rendering) + +## Game Support +- [ ] audio! +- [ ] some minimal animation system with tweening with different f-curves + + +## System Level + +- [ ] add a `Asset` handler to load cache and manage assets +- [ ] introspection of file system if we load assset + +## Design + +- [ ] replace some of the 'unkown source' assets + +## Build / Dev Support +- [ ] add a test rig either with Snitch or Catch2 +- [ ] write some reasonable testcases +- [ ] add CPU and GPU benchmarks to address various issues + + +# Issues + + +```sh + Performance counter stats for 'bin/paradiso_pong': + + 555,35 msec task-clock:u # 0,042 CPUs utilized + 0 context-switches:u # 0,000 /sec + 0 cpu-migrations:u # 0,000 /sec + 4.072 page-faults:u # 7,332 K/sec + 319.484.735 cycles:u # 0,575 GHz + 358.165.995 instructions:u # 1,12 insn per cycle + 86.037.942 branches:u # 154,926 M/sec + 2.469.068 branch-misses:u # 2,87% of all branches + + 13,092775373 seconds time elapsed + + 0,311565000 seconds user + 0,247491000 seconds sys +``` +above run with `perf stat bin/paradiso_pong` shows some really bad performance issues. diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 2bdd295..9d4c49a 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -1,2 +1,3 @@ add_subdirectory(simple) -add_subdirectory(pong) \ No newline at end of file +add_subdirectory(pong) +add_subdirectory(quickwings) \ No newline at end of file diff --git a/examples/pong/pong.cpp b/examples/pong/pong.cpp index 11f89f0..2b979f7 100644 --- a/examples/pong/pong.cpp +++ b/examples/pong/pong.cpp @@ -1,7 +1,7 @@ /** * paradiso - Paradigmen der Softwareentwicklung * - * (c) Copyright 2023 Hartmut Seichter + * (c) Copyright 2023-2024 Hartmut Seichter * */ @@ -16,7 +16,6 @@ #include <unordered_map> -#include <iomanip> #include <iostream> struct PongStage { @@ -86,7 +85,7 @@ struct PongPaddle { velocity_horizontal *= whoopiness; sprite.pivot.x() += velocity_horizontal; - std::clamp(sprite.pivot.x(), -0.5f, 0.5f); + sprite.pivot.x() = std::clamp(sprite.pivot.x(), -0.5f, 0.5f); // update shader uniforms shader.set_uniform("pivot", sprite.pivot); @@ -151,7 +150,7 @@ struct PongBall { void draw(const paradiso::Shader& shader) { - std::clamp(sprite.pivot.x(), -0.5f, 0.5f); + sprite.pivot.x() = std::clamp(sprite.pivot.x(), -0.5f, 0.5f); // update shader uniforms shader.set_uniform("pivot", sprite.pivot); @@ -166,6 +165,9 @@ struct PongBall { paradiso::Renderer renderer{}; constexpr void push(const auto& impulse) noexcept { velocity += impulse; } + + constexpr void whoop(const auto& whoopiness) noexcept { velocity *= whoopiness; } + }; auto main() -> int { @@ -234,6 +236,19 @@ auto main() -> int { ball.sprite.pivot.x() = 0.0f; ball.sprite.pivot.y() = 0.9f; } + // speed adjust + if (w.keyboard_input().top().key == 'N') { + + std::cout << "Speed Up!\n"; + + ball.push(paradiso::Vector2<float>::make(0.f,0.01f)); + + } else if (w.keyboard_input().top().key == 'M') { + + ball.push(paradiso::Vector2<float>::make(0.f,-0.01f)); + + std::cout << "Speed Lower!\n"; + } } ball.interact(stage); @@ -251,4 +266,4 @@ auto main() -> int { }; return 0; -} \ No newline at end of file +} diff --git a/examples/quickwings/CMakeLists.txt b/examples/quickwings/CMakeLists.txt new file mode 100644 index 0000000..0b5ffe2 --- /dev/null +++ b/examples/quickwings/CMakeLists.txt @@ -0,0 +1,20 @@ +set(quickwings_srcs quickwings.cpp) +set(quickwings_assets + assets/background-day.png + assets/base.png + assets/pipe-green.png + assets/yellowbird-downflap.png + assets/yellowbird-midflap.png + assets/yellowbird-upflap.png + ) + +set_source_files_properties(${quickwings_assets} PROPERTIES HEADER_FILE_ONLY TRUE) + +add_executable(quickwings ${quickwings_srcs} ${quickwings_assets}) + +target_link_libraries(quickwings paradiso_core) + +add_custom_command(TARGET quickwings POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_directory + ${CMAKE_CURRENT_SOURCE_DIR}/assets/ $<TARGET_FILE_DIR:quickwings>/assets) + \ No newline at end of file diff --git a/examples/quickwings/assets/background-day.png b/examples/quickwings/assets/background-day.png new file mode 100644 index 0000000..f9ed139 Binary files /dev/null and b/examples/quickwings/assets/background-day.png differ diff --git a/examples/quickwings/assets/base.png b/examples/quickwings/assets/base.png new file mode 100644 index 0000000..26fa391 Binary files /dev/null and b/examples/quickwings/assets/base.png differ diff --git a/examples/quickwings/assets/gameover.png b/examples/quickwings/assets/gameover.png new file mode 100644 index 0000000..b1df7f5 Binary files /dev/null and b/examples/quickwings/assets/gameover.png differ diff --git a/examples/quickwings/assets/message.png b/examples/quickwings/assets/message.png new file mode 100644 index 0000000..9243ab5 Binary files /dev/null and b/examples/quickwings/assets/message.png differ diff --git a/examples/quickwings/assets/pipe-green.png b/examples/quickwings/assets/pipe-green.png new file mode 100644 index 0000000..4664401 Binary files /dev/null and b/examples/quickwings/assets/pipe-green.png differ diff --git a/examples/quickwings/assets/tappybird/Font/kenvector_future.ttf b/examples/quickwings/assets/tappybird/Font/kenvector_future.ttf new file mode 100644 index 0000000..39ebdfa Binary files /dev/null and b/examples/quickwings/assets/tappybird/Font/kenvector_future.ttf differ diff --git a/examples/quickwings/assets/tappybird/Font/kenvector_future_thin.ttf b/examples/quickwings/assets/tappybird/Font/kenvector_future_thin.ttf new file mode 100644 index 0000000..9f4b4fa Binary files /dev/null and b/examples/quickwings/assets/tappybird/Font/kenvector_future_thin.ttf differ diff --git a/examples/quickwings/assets/tappybird/PNG/Letters/letterA.png b/examples/quickwings/assets/tappybird/PNG/Letters/letterA.png new file mode 100644 index 0000000..eb9a6ab Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Letters/letterA.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Letters/letterB.png b/examples/quickwings/assets/tappybird/PNG/Letters/letterB.png new file mode 100644 index 0000000..75a6276 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Letters/letterB.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Letters/letterC.png b/examples/quickwings/assets/tappybird/PNG/Letters/letterC.png new file mode 100644 index 0000000..8ae3c7f Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Letters/letterC.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Letters/letterD.png b/examples/quickwings/assets/tappybird/PNG/Letters/letterD.png new file mode 100644 index 0000000..99dffaa Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Letters/letterD.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Letters/letterE.png b/examples/quickwings/assets/tappybird/PNG/Letters/letterE.png new file mode 100644 index 0000000..d9d0ecf Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Letters/letterE.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Letters/letterF.png b/examples/quickwings/assets/tappybird/PNG/Letters/letterF.png new file mode 100644 index 0000000..d118f25 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Letters/letterF.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Letters/letterG.png b/examples/quickwings/assets/tappybird/PNG/Letters/letterG.png new file mode 100644 index 0000000..6285343 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Letters/letterG.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Letters/letterH.png b/examples/quickwings/assets/tappybird/PNG/Letters/letterH.png new file mode 100644 index 0000000..c0969fd Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Letters/letterH.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Letters/letterI.png b/examples/quickwings/assets/tappybird/PNG/Letters/letterI.png new file mode 100644 index 0000000..9c5e737 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Letters/letterI.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Letters/letterJ.png b/examples/quickwings/assets/tappybird/PNG/Letters/letterJ.png new file mode 100644 index 0000000..ecb0f6e Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Letters/letterJ.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Letters/letterK.png b/examples/quickwings/assets/tappybird/PNG/Letters/letterK.png new file mode 100644 index 0000000..5362d89 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Letters/letterK.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Letters/letterL.png b/examples/quickwings/assets/tappybird/PNG/Letters/letterL.png new file mode 100644 index 0000000..e747d8a Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Letters/letterL.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Letters/letterM.png b/examples/quickwings/assets/tappybird/PNG/Letters/letterM.png new file mode 100644 index 0000000..e197a99 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Letters/letterM.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Letters/letterN.png b/examples/quickwings/assets/tappybird/PNG/Letters/letterN.png new file mode 100644 index 0000000..60884b3 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Letters/letterN.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Letters/letterO.png b/examples/quickwings/assets/tappybird/PNG/Letters/letterO.png new file mode 100644 index 0000000..390b566 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Letters/letterO.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Letters/letterP.png b/examples/quickwings/assets/tappybird/PNG/Letters/letterP.png new file mode 100644 index 0000000..70883d0 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Letters/letterP.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Letters/letterQ.png b/examples/quickwings/assets/tappybird/PNG/Letters/letterQ.png new file mode 100644 index 0000000..c8ee726 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Letters/letterQ.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Letters/letterR.png b/examples/quickwings/assets/tappybird/PNG/Letters/letterR.png new file mode 100644 index 0000000..fcae55c Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Letters/letterR.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Letters/letterS.png b/examples/quickwings/assets/tappybird/PNG/Letters/letterS.png new file mode 100644 index 0000000..c5b671f Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Letters/letterS.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Letters/letterT.png b/examples/quickwings/assets/tappybird/PNG/Letters/letterT.png new file mode 100644 index 0000000..5e4a3e7 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Letters/letterT.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Letters/letterU.png b/examples/quickwings/assets/tappybird/PNG/Letters/letterU.png new file mode 100644 index 0000000..8fb60a9 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Letters/letterU.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Letters/letterV.png b/examples/quickwings/assets/tappybird/PNG/Letters/letterV.png new file mode 100644 index 0000000..ad94fc7 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Letters/letterV.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Letters/letterW.png b/examples/quickwings/assets/tappybird/PNG/Letters/letterW.png new file mode 100644 index 0000000..0b3e63e Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Letters/letterW.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Letters/letterX.png b/examples/quickwings/assets/tappybird/PNG/Letters/letterX.png new file mode 100644 index 0000000..f65c348 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Letters/letterX.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Letters/letterY.png b/examples/quickwings/assets/tappybird/PNG/Letters/letterY.png new file mode 100644 index 0000000..ba733c2 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Letters/letterY.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Letters/letterZ.png b/examples/quickwings/assets/tappybird/PNG/Letters/letterZ.png new file mode 100644 index 0000000..d5e88ad Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Letters/letterZ.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Numbers/number0.png b/examples/quickwings/assets/tappybird/PNG/Numbers/number0.png new file mode 100644 index 0000000..a6ad98c Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Numbers/number0.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Numbers/number1.png b/examples/quickwings/assets/tappybird/PNG/Numbers/number1.png new file mode 100644 index 0000000..99b38b8 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Numbers/number1.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Numbers/number2.png b/examples/quickwings/assets/tappybird/PNG/Numbers/number2.png new file mode 100644 index 0000000..90dd749 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Numbers/number2.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Numbers/number3.png b/examples/quickwings/assets/tappybird/PNG/Numbers/number3.png new file mode 100644 index 0000000..1942bc4 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Numbers/number3.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Numbers/number4.png b/examples/quickwings/assets/tappybird/PNG/Numbers/number4.png new file mode 100644 index 0000000..b72f2e3 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Numbers/number4.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Numbers/number5.png b/examples/quickwings/assets/tappybird/PNG/Numbers/number5.png new file mode 100644 index 0000000..0bb43f8 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Numbers/number5.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Numbers/number6.png b/examples/quickwings/assets/tappybird/PNG/Numbers/number6.png new file mode 100644 index 0000000..f488ffb Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Numbers/number6.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Numbers/number7.png b/examples/quickwings/assets/tappybird/PNG/Numbers/number7.png new file mode 100644 index 0000000..7533db1 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Numbers/number7.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Numbers/number8.png b/examples/quickwings/assets/tappybird/PNG/Numbers/number8.png new file mode 100644 index 0000000..71ba693 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Numbers/number8.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Numbers/number9.png b/examples/quickwings/assets/tappybird/PNG/Numbers/number9.png new file mode 100644 index 0000000..18c1d42 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Numbers/number9.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Planes/planeBlue1.png b/examples/quickwings/assets/tappybird/PNG/Planes/planeBlue1.png new file mode 100644 index 0000000..ea52a1d Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Planes/planeBlue1.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Planes/planeBlue2.png b/examples/quickwings/assets/tappybird/PNG/Planes/planeBlue2.png new file mode 100644 index 0000000..566b1f4 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Planes/planeBlue2.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Planes/planeBlue3.png b/examples/quickwings/assets/tappybird/PNG/Planes/planeBlue3.png new file mode 100644 index 0000000..7264222 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Planes/planeBlue3.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Planes/planeGreen1.png b/examples/quickwings/assets/tappybird/PNG/Planes/planeGreen1.png new file mode 100644 index 0000000..ba2949b Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Planes/planeGreen1.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Planes/planeGreen2.png b/examples/quickwings/assets/tappybird/PNG/Planes/planeGreen2.png new file mode 100644 index 0000000..2ae3006 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Planes/planeGreen2.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Planes/planeGreen3.png b/examples/quickwings/assets/tappybird/PNG/Planes/planeGreen3.png new file mode 100644 index 0000000..4b22f29 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Planes/planeGreen3.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Planes/planeRed1.png b/examples/quickwings/assets/tappybird/PNG/Planes/planeRed1.png new file mode 100644 index 0000000..c0d1ddb Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Planes/planeRed1.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Planes/planeRed2.png b/examples/quickwings/assets/tappybird/PNG/Planes/planeRed2.png new file mode 100644 index 0000000..a492b1d Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Planes/planeRed2.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Planes/planeRed3.png b/examples/quickwings/assets/tappybird/PNG/Planes/planeRed3.png new file mode 100644 index 0000000..5ca6c70 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Planes/planeRed3.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Planes/planeYellow1.png b/examples/quickwings/assets/tappybird/PNG/Planes/planeYellow1.png new file mode 100644 index 0000000..906947d Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Planes/planeYellow1.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Planes/planeYellow2.png b/examples/quickwings/assets/tappybird/PNG/Planes/planeYellow2.png new file mode 100644 index 0000000..aedbe37 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Planes/planeYellow2.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/Planes/planeYellow3.png b/examples/quickwings/assets/tappybird/PNG/Planes/planeYellow3.png new file mode 100644 index 0000000..6f2af91 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/Planes/planeYellow3.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/UI/UIbg.png b/examples/quickwings/assets/tappybird/PNG/UI/UIbg.png new file mode 100644 index 0000000..0f238ff Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/UI/UIbg.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/UI/buttonLarge.png b/examples/quickwings/assets/tappybird/PNG/UI/buttonLarge.png new file mode 100644 index 0000000..edda3bc Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/UI/buttonLarge.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/UI/buttonSmall.png b/examples/quickwings/assets/tappybird/PNG/UI/buttonSmall.png new file mode 100644 index 0000000..ff1fbae Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/UI/buttonSmall.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/UI/medalBronze.png b/examples/quickwings/assets/tappybird/PNG/UI/medalBronze.png new file mode 100644 index 0000000..18ee3df Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/UI/medalBronze.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/UI/medalGold.png b/examples/quickwings/assets/tappybird/PNG/UI/medalGold.png new file mode 100644 index 0000000..9a41593 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/UI/medalGold.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/UI/medalSilver.png b/examples/quickwings/assets/tappybird/PNG/UI/medalSilver.png new file mode 100644 index 0000000..dd6bb8e Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/UI/medalSilver.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/UI/tap.png b/examples/quickwings/assets/tappybird/PNG/UI/tap.png new file mode 100644 index 0000000..5c82864 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/UI/tap.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/UI/tapLeft.png b/examples/quickwings/assets/tappybird/PNG/UI/tapLeft.png new file mode 100644 index 0000000..336fd1d Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/UI/tapLeft.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/UI/tapRight.png b/examples/quickwings/assets/tappybird/PNG/UI/tapRight.png new file mode 100644 index 0000000..daec2ca Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/UI/tapRight.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/UI/tapTick.png b/examples/quickwings/assets/tappybird/PNG/UI/tapTick.png new file mode 100644 index 0000000..5ba2731 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/UI/tapTick.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/UI/textGameOver.png b/examples/quickwings/assets/tappybird/PNG/UI/textGameOver.png new file mode 100644 index 0000000..11d730d Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/UI/textGameOver.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/UI/textGetReady.png b/examples/quickwings/assets/tappybird/PNG/UI/textGetReady.png new file mode 100644 index 0000000..ed0d035 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/UI/textGetReady.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/background.png b/examples/quickwings/assets/tappybird/PNG/background.png new file mode 100644 index 0000000..05c6a07 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/background.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/groundDirt.png b/examples/quickwings/assets/tappybird/PNG/groundDirt.png new file mode 100644 index 0000000..4223b3c Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/groundDirt.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/groundGrass.png b/examples/quickwings/assets/tappybird/PNG/groundGrass.png new file mode 100644 index 0000000..fd3655e Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/groundGrass.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/groundIce.png b/examples/quickwings/assets/tappybird/PNG/groundIce.png new file mode 100644 index 0000000..4ae4512 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/groundIce.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/groundRock.png b/examples/quickwings/assets/tappybird/PNG/groundRock.png new file mode 100644 index 0000000..c7fc7f1 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/groundRock.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/groundSnow.png b/examples/quickwings/assets/tappybird/PNG/groundSnow.png new file mode 100644 index 0000000..891e3e0 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/groundSnow.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/puffLarge.png b/examples/quickwings/assets/tappybird/PNG/puffLarge.png new file mode 100644 index 0000000..4023cc7 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/puffLarge.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/puffSmall.png b/examples/quickwings/assets/tappybird/PNG/puffSmall.png new file mode 100644 index 0000000..12dfc4b Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/puffSmall.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/rock.png b/examples/quickwings/assets/tappybird/PNG/rock.png new file mode 100644 index 0000000..1a89ad9 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/rock.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/rockDown.png b/examples/quickwings/assets/tappybird/PNG/rockDown.png new file mode 100644 index 0000000..90edad5 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/rockDown.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/rockGrass.png b/examples/quickwings/assets/tappybird/PNG/rockGrass.png new file mode 100644 index 0000000..2f06686 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/rockGrass.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/rockGrassDown.png b/examples/quickwings/assets/tappybird/PNG/rockGrassDown.png new file mode 100644 index 0000000..d6a18c6 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/rockGrassDown.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/rockIce.png b/examples/quickwings/assets/tappybird/PNG/rockIce.png new file mode 100644 index 0000000..7dc1fca Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/rockIce.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/rockIceDown.png b/examples/quickwings/assets/tappybird/PNG/rockIceDown.png new file mode 100644 index 0000000..1ed4858 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/rockIceDown.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/rockSnow.png b/examples/quickwings/assets/tappybird/PNG/rockSnow.png new file mode 100644 index 0000000..6c20222 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/rockSnow.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/rockSnowDown.png b/examples/quickwings/assets/tappybird/PNG/rockSnowDown.png new file mode 100644 index 0000000..7bac5dd Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/rockSnowDown.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/starBronze.png b/examples/quickwings/assets/tappybird/PNG/starBronze.png new file mode 100644 index 0000000..6ad5c8e Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/starBronze.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/starGold.png b/examples/quickwings/assets/tappybird/PNG/starGold.png new file mode 100644 index 0000000..c866382 Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/starGold.png differ diff --git a/examples/quickwings/assets/tappybird/PNG/starSilver.png b/examples/quickwings/assets/tappybird/PNG/starSilver.png new file mode 100644 index 0000000..3ad059c Binary files /dev/null and b/examples/quickwings/assets/tappybird/PNG/starSilver.png differ diff --git a/examples/quickwings/assets/tappybird/Spritesheet/planes.png b/examples/quickwings/assets/tappybird/Spritesheet/planes.png new file mode 100644 index 0000000..cd94487 Binary files /dev/null and b/examples/quickwings/assets/tappybird/Spritesheet/planes.png differ diff --git a/examples/quickwings/assets/tappybird/Spritesheet/planes.xml b/examples/quickwings/assets/tappybird/Spritesheet/planes.xml new file mode 100644 index 0000000..82733ab --- /dev/null +++ b/examples/quickwings/assets/tappybird/Spritesheet/planes.xml @@ -0,0 +1,14 @@ +<TextureAtlas imagePath="sheet.png"> + <SubTexture name="planeBlue1.png" x="0" y="73" width="88" height="73"/> + <SubTexture name="planeBlue2.png" x="0" y="0" width="88" height="73"/> + <SubTexture name="planeBlue3.png" x="0" y="365" width="88" height="73"/> + <SubTexture name="planeGreen1.png" x="88" y="219" width="88" height="73"/> + <SubTexture name="planeGreen2.png" x="88" y="146" width="88" height="73"/> + <SubTexture name="planeGreen3.png" x="88" y="73" width="88" height="73"/> + <SubTexture name="planeRed1.png" x="88" y="0" width="88" height="73"/> + <SubTexture name="planeRed2.png" x="0" y="438" width="88" height="73"/> + <SubTexture name="planeRed3.png" x="88" y="292" width="88" height="73"/> + <SubTexture name="planeYellow1.png" x="0" y="292" width="88" height="73"/> + <SubTexture name="planeYellow2.png" x="0" y="219" width="88" height="73"/> + <SubTexture name="planeYellow3.png" x="0" y="146" width="88" height="73"/> +</TextureAtlas> \ No newline at end of file diff --git a/examples/quickwings/assets/tappybird/Spritesheet/sheet.png b/examples/quickwings/assets/tappybird/Spritesheet/sheet.png new file mode 100644 index 0000000..2584c66 Binary files /dev/null and b/examples/quickwings/assets/tappybird/Spritesheet/sheet.png differ diff --git a/examples/quickwings/assets/tappybird/Spritesheet/sheet.xml b/examples/quickwings/assets/tappybird/Spritesheet/sheet.xml new file mode 100644 index 0000000..129f283 --- /dev/null +++ b/examples/quickwings/assets/tappybird/Spritesheet/sheet.xml @@ -0,0 +1,81 @@ +<TextureAtlas imagePath="sheet.png"> + <SubTexture name="UIbg.png" x="0" y="986" width="264" height="264"/> + <SubTexture name="background.png" x="0" y="355" width="800" height="480"/> + <SubTexture name="buttonLarge.png" x="0" y="1250" width="196" height="70"/> + <SubTexture name="buttonSmall.png" x="0" y="1320" width="136" height="80"/> + <SubTexture name="groundDirt.png" x="0" y="0" width="808" height="71"/> + <SubTexture name="groundGrass.png" x="0" y="142" width="808" height="71"/> + <SubTexture name="groundIce.png" x="0" y="71" width="808" height="71"/> + <SubTexture name="groundRock.png" x="0" y="284" width="808" height="71"/> + <SubTexture name="groundSnow.png" x="0" y="213" width="808" height="71"/> + <SubTexture name="letterA.png" x="412" y="835" width="61" height="64"/> + <SubTexture name="letterB.png" x="487" y="1537" width="50" height="66"/> + <SubTexture name="letterC.png" x="460" y="977" width="52" height="66"/> + <SubTexture name="letterD.png" x="432" y="1613" width="54" height="66"/> + <SubTexture name="letterE.png" x="511" y="1965" width="45" height="64"/> + <SubTexture name="letterF.png" x="512" y="963" width="44" height="64"/> + <SubTexture name="letterG.png" x="460" y="1107" width="52" height="66"/> + <SubTexture name="letterH.png" x="473" y="835" width="51" height="64"/> + <SubTexture name="letterI.png" x="524" y="835" width="22" height="64"/> + <SubTexture name="letterJ.png" x="512" y="1027" width="42" height="66"/> + <SubTexture name="letterK.png" x="432" y="1821" width="53" height="64"/> + <SubTexture name="letterL.png" x="512" y="899" width="44" height="64"/> + <SubTexture name="letterM.png" x="392" y="1967" width="66" height="64"/> + <SubTexture name="letterN.png" x="432" y="1679" width="53" height="64"/> + <SubTexture name="letterO.png" x="418" y="1284" width="60" height="66"/> + <SubTexture name="letterP.png" x="489" y="1427" width="48" height="65"/> + <SubTexture name="letterQ.png" x="418" y="1205" width="60" height="79"/> + <SubTexture name="letterR.png" x="478" y="1249" width="51" height="65"/> + <SubTexture name="letterS.png" x="511" y="1899" width="46" height="66"/> + <SubTexture name="letterT.png" x="460" y="1043" width="52" height="64"/> + <SubTexture name="letterU.png" x="485" y="1757" width="51" height="66"/> + <SubTexture name="letterV.png" x="400" y="913" width="61" height="64"/> + <SubTexture name="letterW.png" x="136" y="1320" width="76" height="64"/> + <SubTexture name="letterX.png" x="418" y="1409" width="58" height="64"/> + <SubTexture name="letterY.png" x="432" y="1473" width="57" height="64"/> + <SubTexture name="letterZ.png" x="486" y="1613" width="50" height="64"/> + <SubTexture name="medalBronze.png" x="0" y="1400" width="114" height="119"/> + <SubTexture name="medalGold.png" x="0" y="1519" width="114" height="119"/> + <SubTexture name="medalSilver.png" x="0" y="1638" width="114" height="119"/> + <SubTexture name="number0.png" x="432" y="1743" width="53" height="78"/> + <SubTexture name="number1.png" x="512" y="1093" width="37" height="76"/> + <SubTexture name="number2.png" x="477" y="1350" width="51" height="77"/> + <SubTexture name="number3.png" x="485" y="1679" width="51" height="78"/> + <SubTexture name="number4.png" x="432" y="1537" width="55" height="76"/> + <SubTexture name="number5.png" x="485" y="1823" width="50" height="76"/> + <SubTexture name="number6.png" x="432" y="1885" width="53" height="77"/> + <SubTexture name="number7.png" x="478" y="1173" width="51" height="76"/> + <SubTexture name="number8.png" x="461" y="899" width="51" height="78"/> + <SubTexture name="number9.png" x="458" y="1962" width="53" height="77"/> + <SubTexture name="planeBlue1.png" x="330" y="1371" width="88" height="73"/> + <SubTexture name="planeBlue2.png" x="372" y="1132" width="88" height="73"/> + <SubTexture name="planeBlue3.png" x="222" y="1562" width="88" height="73"/> + <SubTexture name="planeGreen1.png" x="114" y="1639" width="88" height="73"/> + <SubTexture name="planeGreen2.png" x="216" y="1951" width="88" height="73"/> + <SubTexture name="planeGreen3.png" x="222" y="1489" width="88" height="73"/> + <SubTexture name="planeRed1.png" x="216" y="1878" width="88" height="73"/> + <SubTexture name="planeRed2.png" x="372" y="1059" width="88" height="73"/> + <SubTexture name="planeRed3.png" x="372" y="986" width="88" height="73"/> + <SubTexture name="planeYellow1.png" x="304" y="1967" width="88" height="73"/> + <SubTexture name="planeYellow2.png" x="330" y="1298" width="88" height="73"/> + <SubTexture name="planeYellow3.png" x="330" y="1225" width="88" height="73"/> + <SubTexture name="puffLarge.png" x="114" y="1712" width="42" height="35"/> + <SubTexture name="puffSmall.png" x="196" y="1250" width="25" height="21"/> + <SubTexture name="rock.png" x="114" y="1400" width="108" height="239"/> + <SubTexture name="rockDown.png" x="324" y="1489" width="108" height="239"/> + <SubTexture name="rockGrass.png" x="0" y="1757" width="108" height="239"/> + <SubTexture name="rockGrassDown.png" x="264" y="986" width="108" height="239"/> + <SubTexture name="rockIce.png" x="216" y="1639" width="108" height="239"/> + <SubTexture name="rockIceDown.png" x="222" y="1250" width="108" height="239"/> + <SubTexture name="rockSnow.png" x="324" y="1728" width="108" height="239"/> + <SubTexture name="rockSnowDown.png" x="108" y="1757" width="108" height="239"/> + <SubTexture name="starBronze.png" x="170" y="1996" width="39" height="37"/> + <SubTexture name="starGold.png" x="369" y="1444" width="39" height="37"/> + <SubTexture name="starSilver.png" x="330" y="1444" width="39" height="37"/> + <SubTexture name="tap.png" x="156" y="1712" width="40" height="40"/> + <SubTexture name="tapLeft.png" x="0" y="1996" width="85" height="42"/> + <SubTexture name="tapRight.png" x="85" y="1996" width="85" height="42"/> + <SubTexture name="tapTick.png" x="418" y="1350" width="59" height="59"/> + <SubTexture name="textGameOver.png" x="0" y="835" width="412" height="78"/> + <SubTexture name="textGetReady.png" x="0" y="913" width="400" height="73"/> +</TextureAtlas> \ No newline at end of file diff --git a/examples/quickwings/assets/tappybird/Vector/vector.svg b/examples/quickwings/assets/tappybird/Vector/vector.svg new file mode 100644 index 0000000..92800b3 --- /dev/null +++ b/examples/quickwings/assets/tappybird/Vector/vector.svg @@ -0,0 +1,510 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <linearGradient gradientUnits="userSpaceOnUse" x1="-819.2" x2="819.2" spreadMethod="pad" gradientTransform="matrix(0.0298309326171875 -0.051666259765625 0.0516357421875 0.029815673828125 1132 845.5)" id="gradient0"> + <stop offset="0" stop-color="#FFFFFF" stop-opacity="0"/> + <stop offset="1" stop-color="#FFFFFF" stop-opacity="0.2"/> + </linearGradient> + <linearGradient gradientUnits="userSpaceOnUse" x1="-819.2" x2="819.2" spreadMethod="pad" gradientTransform="matrix(0.0298309326171875 -0.051666259765625 0.0516357421875 0.029815673828125 1262 845.5)" id="gradient1"> + <stop offset="0" stop-color="#FFFFFF" stop-opacity="0"/> + <stop offset="1" stop-color="#FFFFFF" stop-opacity="0.2"/> + </linearGradient> + <linearGradient gradientUnits="userSpaceOnUse" x1="-819.2" x2="819.2" spreadMethod="pad" gradientTransform="matrix(0.0298309326171875 -0.051666259765625 0.0516357421875 0.029815673828125 1392 845.5)" id="gradient2"> + <stop offset="0" stop-color="#FFFFFF" stop-opacity="0"/> + <stop offset="1" stop-color="#FFFFFF" stop-opacity="0.2"/> + </linearGradient> + </defs> + <g> + <path stroke="none" fill="#AD492E" d="M1076.55 849.3 L1076.5 846.75 Q1076.5 823.25 1093.1 806.6 1109.75 790 1133.25 790 1156.75 790 1173.4 806.6 1190 823.25 1190 846.75 L1189.95 849.25 Q1189.1 871.15 1173.4 886.9 1156.75 903.5 1133.25 903.5 1109.75 903.5 1093.1 886.9 1077.4 871.15 1076.55 849.3 M1188 846.75 Q1188 836.05 1184.45 826.9 1180.45 816.5 1172 808.05 1155.95 792 1133.25 792 1110.55 792 1094.55 808.05 1086.05 816.5 1082.05 826.9 1078.5 836.1 1078.5 846.75 1078.5 869.45 1094.55 885.5 1110.55 901.5 1133.25 901.5 1155.95 901.5 1172 885.5 1188 869.45 1188 846.75"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M1189.95 849.25 L1190 851.75 Q1190 875.25 1173.4 891.9 1156.75 908.5 1133.25 908.5 1109.75 908.5 1093.1 891.9 1076.5 875.25 1076.5 851.75 L1076.55 849.3 Q1077.4 871.15 1093.1 886.9 1109.75 903.5 1133.25 903.5 1156.75 903.5 1173.4 886.9 1189.1 871.15 1189.95 849.25"/> + <path stroke="none" fill="#F08B6E" d="M1183.4 846.75 Q1183.4 826 1168.7 811.35 1154 796.65 1133.25 796.65 1112.5 796.65 1097.85 811.35 1083.15 826 1083.15 846.75 1083.15 867.5 1097.85 882.2 1112.5 896.85 1133.25 896.85 1154 896.85 1168.7 882.2 1183.4 867.5 1183.4 846.75 M1188 846.75 Q1188 869.45 1172 885.5 1155.95 901.5 1133.25 901.5 1110.55 901.5 1094.55 885.5 1078.5 869.45 1078.5 846.75 1078.5 836.1 1082.05 826.9 1086.05 816.5 1094.55 808.05 1110.55 792 1133.25 792 1155.95 792 1172 808.05 1180.45 816.5 1184.45 826.9 1188 836.05 1188 846.75"/> + <path stroke="none" fill="#D76241" d="M1183.4 846.75 Q1183.4 867.5 1168.7 882.2 1154 896.85 1133.25 896.85 1112.5 896.85 1097.85 882.2 1083.15 867.5 1083.15 846.75 1083.15 826 1097.85 811.35 1112.5 796.65 1133.25 796.65 1154 796.65 1168.7 811.35 1183.4 826 1183.4 846.75"/> + <path stroke="none" fill="#8E8E8E" d="M1314.45 826.9 Q1310.45 816.5 1302 808.05 1285.95 792 1263.25 792 1240.55 792 1224.55 808.05 1216.05 816.5 1212.05 826.9 1208.5 836.1 1208.5 846.75 1208.5 869.45 1224.55 885.5 1240.55 901.5 1263.25 901.5 1285.95 901.5 1302 885.5 1318 869.45 1318 846.75 1318 836.05 1314.45 826.9 M1206.55 849.3 L1206.5 846.75 Q1206.5 823.25 1223.1 806.6 1239.75 790 1263.25 790 1286.75 790 1303.4 806.6 1320 823.25 1320 846.75 L1319.95 849.25 Q1319.1 871.15 1303.4 886.9 1286.75 903.5 1263.25 903.5 1239.75 903.5 1223.1 886.9 1207.4 871.15 1206.55 849.3"/> + <path stroke="none" fill="#F0F0F0" d="M1314.45 826.9 Q1318 836.05 1318 846.75 1318 869.45 1302 885.5 1285.95 901.5 1263.25 901.5 1240.55 901.5 1224.55 885.5 1208.5 869.45 1208.5 846.75 1208.5 836.1 1212.05 826.9 1216.05 816.5 1224.55 808.05 1240.55 792 1263.25 792 1285.95 792 1302 808.05 1310.45 816.5 1314.45 826.9 M1298.7 882.2 Q1313.4 867.5 1313.4 846.75 1313.4 826 1298.7 811.35 1284 796.65 1263.25 796.65 1242.5 796.65 1227.85 811.35 1213.15 826 1213.15 846.75 1213.15 867.5 1227.85 882.2 1242.5 896.85 1263.25 896.85 1284 896.85 1298.7 882.2"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M1319.95 849.25 L1320 851.75 Q1320 875.25 1303.4 891.9 1286.75 908.5 1263.25 908.5 1239.75 908.5 1223.1 891.9 1206.5 875.25 1206.5 851.75 L1206.55 849.3 Q1207.4 871.15 1223.1 886.9 1239.75 903.5 1263.25 903.5 1286.75 903.5 1303.4 886.9 1319.1 871.15 1319.95 849.25"/> + <path stroke="none" fill="#CCCCCC" d="M1298.7 882.2 Q1284 896.85 1263.25 896.85 1242.5 896.85 1227.85 882.2 1213.15 867.5 1213.15 846.75 1213.15 826 1227.85 811.35 1242.5 796.65 1263.25 796.65 1284 796.65 1298.7 811.35 1313.4 826 1313.4 846.75 1313.4 867.5 1298.7 882.2"/> + <path stroke="none" fill="#9A462E" d="M1116.35 827 Q1116.25 826.05 1116.55 825.2 L1116.55 825.1 Q1116.95 824.2 1117.65 823.45 1119.15 821.95 1121.3 821.95 L1149.2 821.95 Q1151.35 821.95 1152.9 823.45 1154.4 824.95 1154.4 827.1 L1154.4 827.6 Q1154.2 829.45 1152.9 830.8 1151.3 832.4 1149.05 832.15 L1147.95 832.05 1147.1 835.1 1147.55 835.15 1147.65 835.15 1151.6 835.5 1151.65 835.5 1152.15 835.6 1152.2 835.6 Q1154.85 835.9 1156.15 838.45 L1156.2 838.65 1156.25 838.8 1157.4 842.35 1157.4 837.25 Q1157.4 836.05 1158.25 835.2 L1158.3 835.15 Q1159.2 834.3 1160.35 834.3 1161.6 834.3 1162.5 835.2 1163.35 836.05 1163.35 837.25 L1163.35 848.7 1163.45 848.85 Q1164.3 850.25 1164.3 851.85 L1164.3 852.35 Q1164.15 853.65 1163.45 854.9 L1163.35 855.05 1163.35 857.05 1163.35 867.55 Q1163.35 868.5 1162.55 869.35 L1162.5 869.4 Q1161.55 870.3 1160.35 870.3 1159.15 870.35 1158.25 869.4 1157.4 868.55 1157.4 867.55 L1157.4 863.85 1157.4 861.85 1156.3 865.1 1155.9 865.9 Q1154.6 868.05 1152.3 868.6 L1152.25 868.6 1151.85 868.7 1151.85 868.75 1150.35 869 Q1149.95 871.05 1148.35 872.65 L1148.3 872.7 Q1146.1 874.9 1143 874.9 1139.9 874.9 1137.7 872.7 1136.15 871.15 1135.7 869.1 L1135.65 868.9 1135.55 868.9 1129.55 867.55 Q1128 867.1 1126.6 866.45 L1125.45 867.85 Q1123.45 869.9 1120.55 869.9 1117.65 869.9 1115.6 867.85 1113.75 866 1113.65 863.45 L1113.6 862.95 Q1113.6 860.05 1115.6 858 1115.85 857.75 1116.1 857.6 L1116.9 857 Q1114.05 851.9 1110.2 847.85 L1110.15 847.8 1109.55 847.2 1107.4 845.2 1102.5 840.75 1101.3 838.75 1101.3 838.7 1100.75 836.85 1100.7 836.85 1100.55 835.95 Q1100.35 833.8 1101.55 832.4 1102.6 831 1105 830.35 L1105.05 830.35 Q1111.7 828.6 1117.6 834.7 L1122.65 834.55 1123.15 834.55 1122.3 831.3 1121.45 831.4 1121.25 831.4 Q1119.15 831.3 1117.65 829.75 L1117.65 829.8 1117.1 829.1 1116.95 828.85 Q1116.45 827.9 1116.35 827 M1131.9 835 L1134.15 835.25 1138.5 834.8 1138.55 834.75 1138.75 834.65 1138.85 834.65 1139 834.55 1138.05 831.1 1132.45 830.9 1131.4 834.85 1131.9 835"/> + <path stroke="none" fill="#F08B6E" d="M1131.9 835 L1131.4 834.85 1132.45 830.9 1138.05 831.1 1139 834.55 1138.85 834.65 1138.75 834.65 1138.55 834.75 1138.5 834.8 1138.05 833.1 1132.45 832.9 1131.9 835 M1154.4 827.6 L1154.4 828.1 1154.4 828.6 1154.4 829.1 Q1154.4 831.25 1152.9 832.8 1151.3 834.4 1149.05 834.15 L1147.95 834.05 1147.65 835.15 1147.55 835.15 1147.1 835.1 1147.95 832.05 1149.05 832.15 Q1151.3 832.4 1152.9 830.8 1154.2 829.45 1154.4 827.6 M1164.3 852.35 L1164.3 852.85 1164.3 853.35 1164.3 853.85 Q1164.3 855.45 1163.45 856.9 L1163.35 857.05 1163.35 855.05 1163.45 854.9 Q1164.15 853.65 1164.3 852.35 M1163.35 867.55 L1163.35 869.3 Q1163.35 870.5 1162.55 871.35 L1162.5 871.4 Q1161.55 872.3 1160.35 872.3 1159.15 872.35 1158.25 871.4 1157.4 870.55 1157.4 869.3 L1157.4 867.55 Q1157.4 868.55 1158.25 869.4 1159.15 870.35 1160.35 870.3 1161.55 870.3 1162.5 869.4 L1162.55 869.35 Q1163.35 868.5 1163.35 867.55 M1157.4 863.85 L1156.3 867.1 1155.9 867.9 Q1154.6 870.05 1152.3 870.6 L1152.25 870.6 1151.85 870.7 1151.85 870.75 1150.35 871 Q1149.95 873.05 1148.35 874.65 L1148.3 874.7 Q1146.1 876.9 1143 876.9 1139.9 876.9 1137.7 874.7 1136.15 873.15 1135.7 871.1 L1135.65 870.9 1135.55 870.9 1129.55 869.55 Q1128 869.1 1126.6 868.45 L1125.45 869.85 Q1123.45 871.9 1120.55 871.9 1117.65 871.9 1115.6 869.85 1113.6 867.85 1113.6 864.95 L1113.65 864.45 1113.6 863.95 1113.65 863.45 Q1113.75 866 1115.6 867.85 1117.65 869.9 1120.55 869.9 1123.45 869.9 1125.45 867.85 L1126.6 866.45 Q1128 867.1 1129.55 867.55 L1135.55 868.9 1135.65 868.9 1135.7 869.1 Q1136.15 871.15 1137.7 872.7 1139.9 874.9 1143 874.9 1146.1 874.9 1148.3 872.7 L1148.35 872.65 Q1149.95 871.05 1150.35 869 L1151.85 868.75 1151.85 868.7 1152.25 868.6 1152.3 868.6 Q1154.6 868.05 1155.9 865.9 L1156.3 865.1 1157.4 861.85 1157.4 863.85 M1116.1 857.6 Q1113.45 853.3 1110.2 849.85 L1110.15 849.8 1109.55 849.2 1107.4 847.2 1102.5 842.75 1101.3 840.75 1101.3 840.7 1100.75 838.85 1100.7 838.85 Q1100.45 837.75 1100.55 836.85 L1100.55 835.95 1100.7 836.85 1100.75 836.85 1101.3 838.7 1101.3 838.75 1102.5 840.75 1107.4 845.2 1109.55 847.2 1110.15 847.8 1110.2 847.85 Q1114.05 851.9 1116.9 857 L1116.1 857.6 M1122.65 834.55 L1122.3 833.3 1121.45 833.4 1121.25 833.4 Q1119.15 833.3 1117.65 831.75 L1117.65 831.8 1117.1 831.1 1116.95 830.85 Q1116.2 829.3 1116.35 828 L1116.35 827 Q1116.45 827.9 1116.95 828.85 L1117.1 829.1 1117.65 829.8 1117.65 829.75 Q1119.15 831.3 1121.25 831.4 L1121.45 831.4 1122.3 831.3 1123.15 834.55 1122.65 834.55"/> + <path stroke="none" fill="#F0F0F0" d="M1261.9 835 L1261.4 834.85 1262.45 830.9 1268.05 831.1 1269 834.55 1268.85 834.65 1268.75 834.65 1268.55 834.75 1268.5 834.8 1268.05 833.1 1262.45 832.9 1261.9 835 M1284.4 827.6 L1284.4 828.1 1284.4 828.6 1284.4 829.1 Q1284.4 831.25 1282.9 832.8 1281.3 834.4 1279.05 834.15 L1277.95 834.05 1277.65 835.15 1277.55 835.15 1277.1 835.1 1277.95 832.05 1279.05 832.15 Q1281.3 832.4 1282.9 830.8 1284.2 829.45 1284.4 827.6 M1294.3 852.35 L1294.3 852.85 1294.3 853.35 1294.3 853.85 Q1294.3 855.55 1293.35 857.05 L1293.35 855.05 Q1294.15 853.75 1294.3 852.35 M1293.35 867.6 L1293.35 869.3 Q1293.35 870.5 1292.55 871.35 L1292.5 871.4 Q1291.55 872.3 1290.35 872.3 1289.15 872.35 1288.25 871.4 1287.4 870.55 1287.4 869.3 L1287.4 867.6 Q1287.4 868.55 1288.25 869.4 1289.15 870.35 1290.35 870.3 1291.55 870.3 1292.5 869.4 L1292.55 869.35 Q1293.35 868.5 1293.35 867.6 M1287.4 863.85 L1286.3 867.1 1285.9 867.9 Q1284.6 870.05 1282.3 870.6 L1282.25 870.6 1281.85 870.7 1281.85 870.75 1280.35 871 Q1279.95 873.05 1278.35 874.65 L1278.3 874.7 Q1276.1 876.9 1273 876.9 1269.9 876.9 1267.7 874.7 1266.15 873.15 1265.7 871.1 L1265.65 870.9 1265.55 870.9 1259.55 869.55 Q1258 869.1 1256.6 868.45 L1255.45 869.85 Q1253.45 871.9 1250.55 871.9 1247.65 871.9 1245.6 869.85 1243.6 867.85 1243.6 864.95 L1243.65 864.45 1243.6 863.95 1243.65 863.45 Q1243.75 866 1245.6 867.85 1247.65 869.9 1250.55 869.9 1253.45 869.9 1255.45 867.85 L1256.6 866.45 Q1258 867.1 1259.55 867.55 L1265.55 868.9 1265.65 868.9 1265.7 869.1 Q1266.15 871.15 1267.7 872.7 1269.9 874.9 1273 874.9 1276.1 874.9 1278.3 872.7 L1278.35 872.65 Q1279.95 871.05 1280.35 869 L1281.85 868.75 1281.85 868.7 1282.25 868.6 1282.3 868.6 Q1284.6 868.05 1285.9 865.9 L1286.3 865.1 1287.4 861.85 1287.4 863.85 M1246.1 857.6 Q1243.45 853.3 1240.2 849.85 L1240.15 849.8 1239.55 849.2 1237.4 847.2 1232.5 842.75 1231.3 840.75 1231.3 840.7 1230.75 838.85 1230.7 838.85 Q1230.45 837.75 1230.55 836.85 L1230.55 835.95 1230.7 836.85 1230.75 836.85 1231.3 838.7 1231.3 838.75 1232.5 840.75 1237.4 845.2 1239.55 847.2 1240.15 847.8 1240.2 847.85 Q1244.05 851.9 1246.9 857 L1246.1 857.6 M1252.65 834.55 L1252.3 833.3 1251.45 833.4 1251.25 833.4 Q1249.15 833.3 1247.65 831.75 L1247.65 831.8 1247.1 831.1 1246.95 830.85 Q1246.2 829.3 1246.35 828 L1246.35 827 Q1246.45 827.9 1246.95 828.85 L1247.1 829.1 1247.65 829.8 1247.65 829.75 Q1249.15 831.3 1251.25 831.4 L1251.45 831.4 1252.3 831.3 1253.15 834.55 1252.65 834.55"/> + <path stroke="none" fill="#A1A1A1" d="M1252.65 834.55 L1253.15 834.55 1252.3 831.3 1251.45 831.4 1251.25 831.4 Q1249.15 831.3 1247.65 829.75 L1247.65 829.8 1247.1 829.1 1246.95 828.85 Q1246.45 827.9 1246.35 827 1246.25 826.05 1246.55 825.2 L1246.55 825.1 Q1246.95 824.2 1247.65 823.45 L1248.15 823 Q1249.5 821.95 1251.3 821.95 L1279.2 821.95 Q1281 821.95 1282.4 823 L1282.9 823.45 Q1284.4 824.95 1284.4 827.1 L1284.4 827.6 Q1284.2 829.45 1282.9 830.8 1281.3 832.4 1279.05 832.15 L1277.95 832.05 1277.1 835.1 1277.55 835.15 1277.65 835.15 1281.6 835.5 1281.65 835.5 1282.15 835.6 1282.2 835.6 Q1284.85 835.9 1286.15 838.45 L1286.2 838.65 1286.25 838.8 1287.4 842.35 1287.4 837.25 Q1287.4 836.05 1288.25 835.2 L1288.3 835.15 Q1289.2 834.3 1290.35 834.3 1291.6 834.3 1292.5 835.2 1293.35 836.05 1293.35 837.25 L1293.35 848.7 Q1294.3 850.15 1294.3 851.85 L1294.3 852.35 Q1294.15 853.75 1293.35 855.05 L1293.35 857.05 1293.35 867.6 Q1293.35 868.5 1292.55 869.35 L1292.5 869.4 Q1291.55 870.3 1290.35 870.3 1289.15 870.35 1288.25 869.4 1287.4 868.55 1287.4 867.6 L1287.4 863.85 1287.4 861.85 1286.3 865.1 1285.9 865.9 Q1284.6 868.05 1282.3 868.6 L1282.25 868.6 1281.85 868.7 1281.85 868.75 1280.35 869 Q1279.95 871.05 1278.35 872.65 L1278.3 872.7 Q1276.1 874.9 1273 874.9 1269.9 874.9 1267.7 872.7 1266.15 871.15 1265.7 869.1 L1265.65 868.9 1265.55 868.9 1259.55 867.55 Q1258 867.1 1256.6 866.45 L1255.45 867.85 Q1253.45 869.9 1250.55 869.9 1247.65 869.9 1245.6 867.85 1243.75 866 1243.65 863.45 L1243.6 862.95 Q1243.6 860.05 1245.6 858 1245.85 857.75 1246.1 857.6 L1246.9 857 Q1244.05 851.9 1240.2 847.85 L1240.15 847.8 1239.55 847.2 1237.4 845.2 1232.5 840.75 1231.3 838.75 1231.3 838.7 1230.75 836.85 1230.7 836.85 1230.55 835.95 Q1230.35 833.8 1231.55 832.4 1232.6 831 1235 830.35 L1235.05 830.35 Q1241.7 828.6 1247.6 834.7 L1252.65 834.55 M1268.5 834.8 L1268.55 834.75 1268.75 834.65 1268.85 834.65 1269 834.55 1268.05 831.1 1262.45 830.9 1261.4 834.85 1261.9 835 1264.15 835.25 1268.5 834.8"/> + <path stroke="none" fill="#EEC830" d="M51.35 320.7 L48.5 320.95 Q46.4 320.85 44.9 319.3 L44.3 318.6 Q43.35 316.65 43.85 315.05 44.2 314.2 44.9 313.5 46.4 312 48.5 312 L86.7 312 Q88.8 312 90.3 313.5 91.8 315 91.8 317.1 91.8 319.2 90.3 320.7 88.8 322.2 86.7 322 L83.5 321.7 81.2 321.45 80.55 321.4 76.05 320.9 73 320.65 62.2 320.25 59.2 320.3 54.25 320.5 51.35 320.7 M30.05 339.75 L29.7 339.8 Q27.65 340.1 26.15 339.3 24.55 338.4 24.55 336.9 24.55 336.15 24.95 335.5 25.35 334.8 26.15 334.25 27.7 333.15 29.8 333.15 L41.7 333.1 Q42.75 333.1 43.45 333.8 44.1 334.45 44.05 335.45 44.05 336.45 43.3 337.2 42.55 338 41.45 338.15 L30.05 339.75 M83.35 348.2 L86.7 348.2 Q88.8 348.2 90.3 349.7 91.8 351.2 91.8 353.3 91.8 355.4 90.3 356.9 88.8 358.4 86.7 358.2 L84.75 358 81.95 357.75 81.2 357.65 78.85 357.4 58.35 356.55 55.95 356.6 48.5 357.15 Q46.4 357.05 44.9 355.5 L44.3 354.8 Q43.35 352.85 43.85 351.25 44.2 350.4 44.9 349.7 46.4 348.2 48.5 348.2 L51.75 348.2 54.7 348.2 58.7 348.2 61.7 348.2 62.4 348.2 63.9 348.2 73.4 348.2 76.35 348.2 79 348.2 80.35 348.2 83.35 348.2"/> + <path stroke="none" fill="#9F882A" d="M83.5 321.7 L86.7 322 Q88.8 322.2 90.3 320.7 91.8 319.2 91.8 317.1 91.8 315 90.3 313.5 88.8 312 86.7 312 L48.5 312 Q46.4 312 44.9 313.5 44.2 314.2 43.85 315.05 43.35 316.65 44.3 318.6 L44.9 319.3 Q46.4 320.85 48.5 320.95 L51.35 320.7 53.6 329.2 42.55 329.55 Q35.1 321.4 26.65 323.5 24.1 324.15 22.95 325.55 21.6 327.25 22.2 329.95 L22.95 332.2 Q23.7 333.95 24.95 335.5 24.55 336.15 24.55 336.9 24.55 338.4 26.15 339.3 27.65 340.1 29.7 339.8 L30.05 339.75 33.75 343.15 34.65 344.05 Q40.3 349.95 44.4 357.35 45.25 358.9 46.25 360.3 44.8 360.3 43.5 361.1 41.35 362.35 40.7 364.75 L40.55 365.55 40.7 365.55 41.25 366.1 39.05 366.85 38.75 366.4 Q38.5 365.9 38.6 365.3 L38.75 364.3 38.8 364.25 Q39.65 361.05 42.5 359.4 L43.1 359.05 42.65 358.35 Q38.7 351.2 33.25 345.5 L33.2 345.45 32.35 344.6 29.4 341.85 Q27 342.05 25.2 341.1 L25.2 341.05 Q22.45 339.5 22.55 336.9 L22.7 335.8 Q21.75 334.45 21.1 333 L21.1 332.95 20.3 330.45 20.25 330.4 Q19.4 326.65 21.4 324.3 22.85 322.4 26.15 321.55 L26.2 321.55 Q35.3 319.15 43.4 327.5 L51 327.25 49.85 322.85 48.7 322.95 48.4 322.95 Q45.5 322.8 43.5 320.7 L43.5 320.75 42.7 319.8 42.5 319.5 Q41.15 316.7 41.95 314.45 L42 314.3 Q42.5 313.1 43.5 312.1 45.55 310 48.5 310 L86.7 310 Q89.65 310 91.75 312.1 93.8 314.15 93.8 317.1 93.8 320.05 91.75 322.15 89.55 324.3 86.5 324 L84.95 323.85 83.85 328.05 81.8 327.95 83.5 321.7 M68 374.35 Q63.95 373.65 59.8 372.45 56.45 371.5 53.6 369.85 L52.85 369.4 52.8 369.4 52.65 370.4 50.95 368.75 51.85 368.55 52 368.6 52.25 367.85 52.45 366.7 Q56 369.25 60.35 370.5 64.2 371.6 68 372.3 L68 374.35"/> + <path stroke="none" fill="#D0D3E5" d="M51.35 320.7 L54.25 320.5 56.7 329.6 59.2 320.3 62.2 320.25 59.85 329 58.75 333.25 58.2 335.2 60.8 344.95 61.1 346.05 61.7 348.2 58.7 348.2 58.05 345.85 57.8 344.75 56.7 340.75 55.65 344.6 55.4 345.65 54.7 348.2 51.75 348.2 52.5 345.4 52.75 344.4 55.2 335.2 53.6 329.2 51.35 320.7 M73 320.65 L76.05 320.9 78.35 329.6 80.55 321.4 81.2 321.45 83.5 321.7 81.8 327.95 81.3 329.9 79.85 335.2 83.35 348.2 80.35 348.2 78.5 341.35 78.35 340.75 76.95 346.05 76.65 347.2 76.35 348.2 73.4 348.2 73.7 347 74 345.85 76.85 335.2 76.2 332.7 75.05 328.45 73 320.65 M99.9 344.4 L99.9 331 Q99.9 330.15 100.5 329.55 101.15 328.95 102 328.95 102.85 328.95 103.45 329.55 104.05 330.15 104.05 331 L104.05 347.3 104.05 354.65 104.05 372.15 Q104.05 373 103.45 373.6 102.85 374.25 102 374.25 101.15 374.25 100.5 373.6 99.9 373 99.9 372.15 L99.9 357.55 99.9 344.4"/> + <path stroke="none" fill="#8A8B98" d="M99.9 344.4 L98.25 343.85 97.55 343.65 97.3 343.6 97.15 343.65 Q96.3 338.65 94.4 333.6 L94.4 333.55 Q93.1 331 90.5 330.65 L89.75 330.55 81.3 329.9 81.8 327.95 83.85 328.05 84.45 328.1 89.95 328.55 90.05 328.6 90.75 328.7 90.8 328.7 Q94.4 329.15 96.2 332.65 L96.3 332.9 96.35 333.1 97.9 337.95 97.9 331 Q97.9 329.3 99.1 328.15 L99.15 328.1 Q100.4 326.95 102 326.95 103.7 326.95 104.9 328.15 106.05 329.3 106.05 331 L106.05 346.65 Q107.4 348.65 107.4 350.95 107.4 353.3 106.05 355.35 L106.05 372.15 Q106.05 373.85 104.9 375.05 L104.95 374.95 Q103.7 376.25 102 376.25 100.35 376.3 99.1 375.05 97.9 373.85 97.9 372.15 L97.9 364.7 96.4 369.15 95.9 370.2 Q94.1 373.15 90.95 373.95 L90.85 373.95 90.35 374.05 90.35 374.1 88.3 374.45 88.55 372.4 89.95 372.1 90.45 372 Q92.95 371.35 94.35 368.9 L94.4 368.8 Q96.45 363.6 97.3 358.3 L97.55 358.3 98.25 358.1 99.9 357.55 99.9 372.15 Q99.9 373 100.5 373.6 101.15 374.25 102 374.25 102.85 374.25 103.45 373.6 104.05 373 104.05 372.15 L104.05 354.65 Q105.4 352.95 105.4 350.95 105.4 349 104.05 347.3 L104.05 331 Q104.05 330.15 103.45 329.55 102.85 328.95 102 328.95 101.15 328.95 100.5 329.55 99.9 330.15 99.9 331 L99.9 344.4"/> + <path stroke="none" fill="#B2B4C2" d="M81.3 329.9 L89.75 330.55 90.5 330.65 Q93.1 331 94.4 333.55 L94.4 333.6 Q96.3 338.65 97.15 343.65 L97.7 348.75 Q98 353.55 97.3 358.3 96.45 363.6 94.4 368.8 L94.35 368.9 Q92.95 371.35 90.45 372 L89.95 372.1 88.55 372.4 86.5 372.7 86.5 372.25 Q86.5 368.85 84.05 366.4 81.65 364 78.2 364 L78.85 357.4 81.2 357.65 81.95 357.75 Q81.4 358.2 81.4 359 81.4 359.7 81.95 360.25 82.45 360.8 83.2 360.8 83.95 360.8 84.5 360.25 85 359.7 85 359 L84.75 358 86.7 358.2 Q88.8 358.4 90.3 356.9 91.8 355.4 91.8 353.3 91.8 351.2 90.3 349.7 88.8 348.2 86.7 348.2 L83.35 348.2 79.85 335.2 81.3 329.9 M83.2 333.35 Q82.45 333.35 81.95 333.85 81.4 334.4 81.4 335.15 81.4 335.9 81.95 336.4 82.45 336.95 83.2 336.95 83.95 336.95 84.5 336.4 85 335.9 85 335.15 85 334.4 84.5 333.85 83.95 333.35 83.2 333.35"/> + <path stroke="none" fill="#9698A6" d="M83.2 333.35 Q83.95 333.35 84.5 333.85 85 334.4 85 335.15 85 335.9 84.5 336.4 83.95 336.95 83.2 336.95 82.45 336.95 81.95 336.4 81.4 335.9 81.4 335.15 81.4 334.4 81.95 333.85 82.45 333.35 83.2 333.35 M84.75 358 L85 359 Q85 359.7 84.5 360.25 83.95 360.8 83.2 360.8 82.45 360.8 81.95 360.25 81.4 359.7 81.4 359 81.4 358.2 81.95 357.75 L84.75 358"/> + <path stroke="none" fill="#F1CC36" d="M97.15 343.65 L97.3 343.6 97.55 343.65 98.25 343.85 99.9 344.4 99.9 357.55 98.25 358.1 97.55 358.3 97.3 358.3 Q98 353.55 97.7 348.75 L97.15 343.65 M104.05 347.3 Q105.4 349 105.4 350.95 105.4 352.95 104.05 354.65 L104.05 347.3"/> + <path stroke="none" fill="#3D3D3D" d="M78.2 364 Q81.65 364 84.05 366.4 86.5 368.85 86.5 372.25 L86.5 372.7 Q86.35 375.85 84.05 378.1 81.65 380.55 78.2 380.55 74.8 380.55 72.35 378.1 70.05 375.8 69.95 372.6 L69.95 372.25 Q69.95 368.85 72.35 366.4 74.8 364 78.2 364 M58.75 333.25 L59.85 329 Q62.5 330.1 66 330.25 70.15 330.45 73.15 329.25 L74.35 328.7 75.05 328.45 76.2 332.7 74.8 333.3 Q71.05 334.85 65.8 334.6 61.8 334.4 58.75 333.25 M44 367.5 L44 367.7 Q44 368.5 44.55 369.15 45.15 369.75 46 369.75 46.85 369.75 47.4 369.15 L47.8 368.55 50.15 368.75 50.95 368.75 Q50.6 370.15 49.55 371.25 48.1 372.75 46 372.75 43.9 372.75 42.45 371.25 41 369.8 41 367.7 41 366.85 41.25 366.1 L42 366.6 44 367.5 M79.65 371.5 L79.4 371.1 Q78.9 370.6 78.2 370.6 77.55 370.6 77.05 371.1 L76.95 371.25 76.8 371.45 Q76.55 371.8 76.55 372.25 L76.6 372.65 76.6 372.7 76.85 373.2 77.05 373.45 Q77.55 373.9 78.2 373.9 78.9 373.9 79.4 373.45 L79.6 373.25 79.8 372.65 79.85 372.25 79.65 371.5"/> + <path stroke="none" fill="#1C1C1C" d="M39.05 366.85 L41.25 366.1 Q41 366.85 41 367.7 41 369.8 42.45 371.25 43.9 372.75 46 372.75 48.1 372.75 49.55 371.25 50.6 370.15 50.95 368.75 L52.65 370.4 52.5 370.5 52.45 370.55 51 372.65 Q48.95 374.75 46 374.75 43.05 374.75 41.05 372.7 L41 372.65 Q39 370.6 39 367.7 L39.05 366.85 M88.55 372.4 L88.3 374.45 Q87.7 377.3 85.5 379.5 L85.45 379.55 Q82.45 382.55 78.2 382.55 73.95 382.55 70.95 379.55 68.8 377.4 68.2 374.6 L68.15 374.35 68 374.35 68 372.3 69.95 372.6 Q70.05 375.8 72.35 378.1 74.8 380.55 78.2 380.55 81.65 380.55 84.05 378.1 86.35 375.85 86.5 372.7 L88.55 372.4"/> + <path stroke="none" fill="#B1B4C9" d="M54.25 320.5 L59.2 320.3 56.7 329.6 54.25 320.5 M62.2 320.25 L73 320.65 75.05 328.45 74.35 328.7 73.15 329.25 Q70.15 330.45 66 330.25 62.5 330.1 59.85 329 L62.2 320.25 M76.05 320.9 L80.55 321.4 78.35 329.6 76.05 320.9 M66.1 328.25 Q69.55 328.4 72.1 327.55 L72.4 327.4 72.5 327.4 72.7 327.3 71.45 322.55 63.75 322.25 62.3 327.7 66.1 328.25"/> + <path stroke="none" fill="#F5D657" d="M41.25 366.1 L40.7 365.55 40.55 365.55 40.7 364.75 Q41.35 362.35 43.5 361.1 44.8 360.3 46.25 360.3 45.25 358.9 44.4 357.35 40.3 349.95 34.65 344.05 L52.5 345.4 51.75 348.2 48.5 348.2 Q46.4 348.2 44.9 349.7 44.2 350.4 43.85 351.25 43.35 352.85 44.3 354.8 L44.9 355.5 Q46.4 357.05 48.5 357.15 L55.95 356.6 51.3 362.75 51.65 363.25 Q52.25 364.3 52.4 365.4 L58.35 356.55 78.85 357.4 78.2 364 Q74.8 364 72.35 366.4 69.95 368.85 69.95 372.25 L69.95 372.6 68 372.3 Q64.2 371.6 60.35 370.5 56 369.25 52.45 366.7 L52.25 367.85 52 368.6 51.85 368.55 50.95 368.75 50.15 368.75 47.8 368.55 46 368.1 44 367.5 42 366.6 41.25 366.1 M33.75 343.15 L30.05 339.75 41.45 338.15 Q42.55 338 43.3 337.2 44.05 336.45 44.05 335.45 44.1 334.45 43.45 333.8 42.75 333.1 41.7 333.1 L29.8 333.15 Q27.7 333.15 26.15 334.25 25.35 334.8 24.95 335.5 23.7 333.95 22.95 332.2 L22.2 329.95 Q21.6 327.25 22.95 325.55 24.1 324.15 26.65 323.5 35.1 321.4 42.55 329.55 L53.6 329.2 55.2 335.2 52.75 344.4 33.75 343.15 M58.75 333.25 Q61.8 334.4 65.8 334.6 71.05 334.85 74.8 333.3 L76.2 332.7 76.85 335.2 74 345.85 60.8 344.95 58.2 335.2 58.75 333.25 M76.95 346.05 L78.35 340.75 78.5 341.35 78.9 346.15 76.95 346.05 M73.7 347 L73.4 348.2 63.9 348.2 65.1 346.35 73.7 347 M76.35 348.2 L76.65 347.2 78.95 347.35 79 348.2 76.35 348.2 M62.4 348.2 L61.7 348.2 61.1 346.05 63.85 346.25 62.4 348.2 M58.7 348.2 L54.7 348.2 55.4 345.65 58.05 345.85 58.7 348.2 M55.65 344.6 L56.7 340.75 57.8 344.75 55.65 344.6 M58.85 363.75 Q58.35 363.2 57.55 363.2 56.85 363.2 56.3 363.75 55.8 364.2 55.8 364.9 L55.75 365 Q55.75 365.7 56.2 366.2 L56.3 366.3 Q56.85 366.85 57.55 366.85 58.25 366.85 58.75 366.35 L58.85 366.3 Q59.35 365.75 59.35 365 59.35 364.25 58.85 363.75"/> + <path stroke="none" fill="#FFE47B" d="M34.65 344.05 L33.75 343.15 52.75 344.4 52.5 345.4 34.65 344.05 M60.8 344.95 L74 345.85 73.7 347 65.1 346.35 63.9 348.2 62.4 348.2 63.85 346.25 61.1 346.05 60.8 344.95 M76.95 346.05 L78.9 346.15 78.95 347.35 76.65 347.2 76.95 346.05 M55.95 356.6 L58.35 356.55 52.4 365.4 Q52.25 364.3 51.65 363.25 L51.3 362.75 55.95 356.6 M55.65 344.6 L57.8 344.75 58.05 345.85 55.4 345.65 55.65 344.6"/> + <path stroke="none" fill="#989AA7" d="M78.9 346.15 L78.5 341.35 80.35 348.2 79 348.2 78.95 347.35 78.9 346.15"/> + <path stroke="none" fill="#FADC67" d="M58.85 363.75 Q59.35 364.25 59.35 365 59.35 365.75 58.85 366.3 L58.75 366.35 Q58.25 366.85 57.55 366.85 56.85 366.85 56.3 366.3 L56.2 366.2 Q55.75 365.7 55.75 365 L55.8 364.9 Q55.8 364.2 56.3 363.75 56.85 363.2 57.55 363.2 58.35 363.2 58.85 363.75"/> + <path stroke="none" fill="#F4F4F4" d="M47.8 368.55 L47.4 369.15 Q46.85 369.75 46 369.75 45.15 369.75 44.55 369.15 44 368.5 44 367.7 L44 367.5 46 368.1 47.8 368.55 M79.65 371.5 L79.85 372.25 79.8 372.65 79.6 373.25 79.4 373.45 Q78.9 373.9 78.2 373.9 77.55 373.9 77.05 373.45 L76.85 373.2 76.6 372.7 76.6 372.65 76.55 372.25 Q76.55 371.8 76.8 371.45 L76.95 371.25 77.05 371.1 Q77.55 370.6 78.2 370.6 78.9 370.6 79.4 371.1 L79.65 371.5"/> + <path stroke="none" fill="#DFE1EE" d="M102.9 330.2 Q103.25 330.55 103.25 331.05 L103.25 351.1 100.85 351.1 100.85 331.1 Q100.85 330.6 101.2 330.25 101.6 329.9 102.05 329.9 102.55 329.85 102.9 330.2"/> + <path stroke="none" fill="#DFE1EE" d="M202.9 337.2 Q203.25 337.55 203.25 338.05 L203.25 351.1 200.85 351.1 200.85 338.1 Q200.85 337.6 201.2 337.25 201.6 336.9 202.05 336.9 202.55 336.85 202.9 337.2"/> + <path stroke="none" fill="#D0D3E5" d="M202.9 337.2 Q202.55 336.85 202.05 336.9 201.6 336.9 201.2 337.25 200.85 337.6 200.85 338.1 L200.85 351.1 203.25 351.1 203.25 338.05 Q203.25 337.55 202.9 337.2 M181.8 327.95 L181.3 329.9 179.85 335.2 183.35 348.2 180.35 348.2 178.5 341.35 178.35 340.75 176.95 346.05 176.65 347.2 176.35 348.2 173.4 348.2 173.7 347 174 345.85 176.85 335.2 176.2 332.7 175.05 328.45 173 320.65 176.05 320.9 178.35 329.6 180.55 321.4 181.2 321.45 183.5 321.7 181.8 327.95 M199.9 344.4 L199.9 338 Q199.9 337.15 200.5 336.55 201.15 335.95 202 335.95 202.85 335.95 203.45 336.55 204.05 337.15 204.05 338 L204.05 347.3 204.05 354.65 204.05 365.15 Q204.05 366 203.45 366.6 202.85 367.25 202 367.25 201.15 367.25 200.5 366.6 199.9 366 199.9 365.15 L199.9 357.55 199.9 344.4 M151.35 320.7 L154.25 320.5 156.7 329.6 159.2 320.3 162.2 320.25 159.85 329 158.75 333.25 158.2 335.2 160.8 344.95 161.1 346.05 161.7 348.2 158.7 348.2 158.05 345.85 157.8 344.75 156.7 340.75 155.65 344.6 155.4 345.65 154.7 348.2 151.75 348.2 152.5 345.4 152.75 344.4 155.2 335.2 153.6 329.2 151.35 320.7"/> + <path stroke="none" fill="#8A8B98" d="M183.85 328.05 L184.45 328.1 189.95 328.55 190.05 328.6 190.75 328.7 190.8 328.7 Q194.4 329.15 196.2 332.65 L196.3 332.9 196.35 333.1 197.75 337.4 197.9 337.95 Q197.9 336.3 199.1 335.15 L199.15 335.1 Q200.4 333.95 202 333.95 203.7 333.95 204.9 335.15 206.05 336.3 206.05 338 L206.05 346.65 Q207.4 348.65 207.4 350.95 207.4 353.3 206.05 355.35 L206.05 365.15 Q206.05 366.85 204.9 368.05 L204.95 367.95 Q203.7 369.25 202 369.25 200.35 369.3 199.1 368.05 197.95 366.9 197.9 365.25 L197.9 364.7 196.4 369.15 195.9 370.2 Q194.1 373.15 190.95 373.95 L190.85 373.95 190.35 374.05 190.35 374.1 188.3 374.45 188.55 372.4 189.95 372.1 190.45 372 Q192.95 371.35 194.35 368.9 L194.4 368.8 Q196.45 363.6 197.3 358.3 L197.55 358.3 197.9 358.2 198.25 358.1 199.9 357.55 199.9 365.15 Q199.9 366 200.5 366.6 201.15 367.25 202 367.25 202.85 367.25 203.45 366.6 204.05 366 204.05 365.15 L204.05 354.65 Q205.4 352.95 205.4 350.95 205.4 349 204.05 347.3 L204.05 338 Q204.05 337.15 203.45 336.55 202.85 335.95 202 335.95 201.15 335.95 200.5 336.55 199.9 337.15 199.9 338 L199.9 344.4 198.25 343.85 197.9 343.75 197.55 343.65 197.3 343.6 197.15 343.65 Q196.3 338.65 194.4 333.6 L194.4 333.55 Q193.1 331 190.5 330.65 L189.75 330.55 181.3 329.9 181.8 327.95 183.85 328.05"/> + <path stroke="none" fill="#EEC830" d="M151.35 320.7 L148.5 320.95 Q146.4 320.85 144.9 319.3 L144.3 318.6 Q143.35 316.65 143.85 315.05 144.2 314.2 144.9 313.5 146.4 312 148.5 312 L186.7 312 Q188.8 312 190.3 313.5 191.8 315 191.8 317.1 191.8 319.2 190.3 320.7 188.8 322.2 186.7 322 L183.5 321.7 181.2 321.45 180.55 321.4 176.05 320.9 173 320.65 162.2 320.25 159.2 320.3 154.25 320.5 151.35 320.7 M183.35 348.2 L186.7 348.2 Q188.8 348.2 190.3 349.7 191.8 351.2 191.8 353.3 191.8 355.4 190.3 356.9 188.8 358.4 186.7 358.2 L184.75 358 181.95 357.75 181.2 357.65 178.85 357.4 158.35 356.55 155.95 356.6 148.5 357.15 Q146.4 357.05 144.9 355.5 L144.3 354.8 Q143.35 352.85 143.85 351.25 144.2 350.4 144.9 349.7 146.4 348.2 148.5 348.2 L151.75 348.2 154.7 348.2 158.7 348.2 161.7 348.2 162.4 348.2 163.9 348.2 173.4 348.2 176.35 348.2 179 348.2 180.35 348.2 183.35 348.2 M124.95 335.5 Q125.35 334.8 126.15 334.25 127.7 333.15 129.8 333.15 L141.7 333.1 Q142.75 333.1 143.45 333.8 144.1 334.45 144.05 335.45 144.05 336.45 143.3 337.2 142.55 338 141.45 338.15 L130.05 339.75 129.7 339.8 Q127.65 340.1 126.15 339.3 124.55 338.4 124.55 336.9 124.55 336.15 124.95 335.5"/> + <path stroke="none" fill="#9F882A" d="M124.95 335.5 Q124.55 336.15 124.55 336.9 124.55 338.4 126.15 339.3 127.65 340.1 129.7 339.8 L130.05 339.75 133.75 343.15 134.65 344.05 Q140.3 349.95 144.4 357.35 L146.25 360.3 Q144.8 360.3 143.5 361.1 141.35 362.35 140.7 364.75 L140.55 365.55 140.7 365.55 141.25 366.1 139.05 366.85 138.75 366.4 Q138.5 365.9 138.6 365.3 L138.75 364.3 138.8 364.25 Q139.65 361.05 142.5 359.4 L143.1 359.05 142.65 358.35 Q138.7 351.2 133.25 345.5 L133.2 345.45 132.35 344.6 129.4 341.85 Q127 342.05 125.2 341.1 L125.2 341.05 Q122.45 339.5 122.55 336.9 L122.7 335.8 Q121.75 334.45 121.1 333 L121.1 332.95 120.3 330.45 120.25 330.4 Q119.4 326.65 121.4 324.3 122.85 322.4 126.15 321.55 L126.2 321.55 Q135.3 319.15 143.4 327.5 L151 327.25 149.85 322.85 148.7 322.95 148.4 322.95 Q145.5 322.8 143.5 320.7 L143.5 320.75 142.7 319.8 142.5 319.5 Q141.15 316.7 141.95 314.45 L142 314.3 Q142.5 313.1 143.5 312.1 145.55 310 148.5 310 L186.7 310 Q189.65 310 191.75 312.1 193.8 314.15 193.8 317.1 193.8 320.05 191.75 322.15 189.55 324.3 186.5 324 L184.95 323.85 183.85 328.05 181.8 327.95 183.5 321.7 186.7 322 Q188.8 322.2 190.3 320.7 191.8 319.2 191.8 317.1 191.8 315 190.3 313.5 188.8 312 186.7 312 L148.5 312 Q146.4 312 144.9 313.5 144.2 314.2 143.85 315.05 143.35 316.65 144.3 318.6 L144.9 319.3 Q146.4 320.85 148.5 320.95 L151.35 320.7 153.6 329.2 142.55 329.55 Q135.1 321.4 126.65 323.5 124.1 324.15 122.95 325.55 121.6 327.25 122.2 329.95 L122.95 332.2 Q123.7 333.95 124.95 335.5 M168 374.35 Q163.95 373.65 159.8 372.45 156.45 371.5 153.6 369.85 L152.85 369.4 152.8 369.4 152.65 370.4 150.95 368.75 151.85 368.55 152 368.6 152.25 367.85 152.45 366.7 Q156 369.25 160.35 370.5 164.2 371.6 168 372.3 L168 374.35"/> + <path stroke="none" fill="#B1B4C9" d="M154.25 320.5 L159.2 320.3 156.7 329.6 154.25 320.5 M162.2 320.25 L173 320.65 175.05 328.45 174.35 328.7 173.15 329.25 Q170.15 330.45 166 330.25 162.5 330.1 159.85 329 L162.2 320.25 M176.05 320.9 L180.55 321.4 178.35 329.6 176.05 320.9 M163.75 322.25 L162.3 327.7 166.1 328.25 Q169.55 328.4 172.1 327.55 L172.4 327.4 172.5 327.4 172.7 327.3 171.45 322.55 163.75 322.25"/> + <path stroke="none" fill="#3D3D3D" d="M159.85 329 Q162.5 330.1 166 330.25 170.15 330.45 173.15 329.25 L174.35 328.7 175.05 328.45 176.2 332.7 174.8 333.3 Q171.05 334.85 165.8 334.6 161.8 334.4 158.75 333.25 L159.85 329 M178.2 364 Q181.65 364 184.05 366.4 186.5 368.85 186.5 372.25 L186.5 372.7 Q186.35 375.85 184.05 378.1 181.65 380.55 178.2 380.55 174.8 380.55 172.35 378.1 170.05 375.8 169.95 372.6 L169.95 372.25 Q169.95 368.85 172.35 366.4 174.8 364 178.2 364 M177.05 371.1 L176.95 371.25 176.8 371.45 Q176.55 371.8 176.55 372.25 L176.6 372.65 176.6 372.7 176.85 373.2 177.05 373.45 Q177.55 373.9 178.2 373.9 178.9 373.9 179.4 373.45 L179.6 373.25 179.8 372.65 179.85 372.25 179.65 371.5 179.4 371.1 Q178.9 370.6 178.2 370.6 177.55 370.6 177.05 371.1 M150.95 368.75 Q150.6 370.15 149.55 371.25 148.1 372.75 146 372.75 143.9 372.75 142.45 371.25 141 369.8 141 367.7 141 366.85 141.25 366.1 L142 366.6 144 367.5 144 367.7 Q144 368.5 144.55 369.15 145.15 369.75 146 369.75 146.85 369.75 147.4 369.15 L147.8 368.55 150.15 368.75 150.95 368.75"/> + <path stroke="none" fill="#F5D657" d="M150.95 368.75 L150.15 368.75 147.8 368.55 146 368.1 144 367.5 142 366.6 141.25 366.1 140.7 365.55 140.55 365.55 140.7 364.75 Q141.35 362.35 143.5 361.1 144.8 360.3 146.25 360.3 L144.4 357.35 Q140.3 349.95 134.65 344.05 L152.5 345.4 151.75 348.2 148.5 348.2 Q146.4 348.2 144.9 349.7 144.2 350.4 143.85 351.25 143.35 352.85 144.3 354.8 L144.9 355.5 Q146.4 357.05 148.5 357.15 L155.95 356.6 151.3 362.75 151.65 363.25 152.4 365.4 158.35 356.55 178.85 357.4 178.2 364 Q174.8 364 172.35 366.4 169.95 368.85 169.95 372.25 L169.95 372.6 168 372.3 Q164.2 371.6 160.35 370.5 156 369.25 152.45 366.7 L152.25 367.85 152 368.6 151.85 368.55 150.95 368.75 M158.75 333.25 Q161.8 334.4 165.8 334.6 171.05 334.85 174.8 333.3 L176.2 332.7 176.85 335.2 174 345.85 160.8 344.95 158.2 335.2 158.75 333.25 M176.95 346.05 L178.35 340.75 178.5 341.35 178.9 346.15 176.95 346.05 M176.35 348.2 L176.65 347.2 178.95 347.35 179 348.2 176.35 348.2 M173.4 348.2 L163.9 348.2 165.1 346.35 173.7 347 173.4 348.2 M162.4 348.2 L161.7 348.2 161.1 346.05 163.85 346.25 162.4 348.2 M158.7 348.2 L154.7 348.2 155.4 345.65 158.05 345.85 158.7 348.2 M124.95 335.5 Q123.7 333.95 122.95 332.2 L122.2 329.95 Q121.6 327.25 122.95 325.55 124.1 324.15 126.65 323.5 135.1 321.4 142.55 329.55 L153.6 329.2 155.2 335.2 152.75 344.4 133.75 343.15 130.05 339.75 141.45 338.15 Q142.55 338 143.3 337.2 144.05 336.45 144.05 335.45 144.1 334.45 143.45 333.8 142.75 333.1 141.7 333.1 L129.8 333.15 Q127.7 333.15 126.15 334.25 125.35 334.8 124.95 335.5 M157.8 344.75 L155.65 344.6 156.7 340.75 157.8 344.75 M158.85 363.75 Q158.35 363.2 157.55 363.2 156.85 363.2 156.3 363.75 155.8 364.2 155.8 364.9 L155.75 365 Q155.75 365.7 156.2 366.2 L156.3 366.3 Q156.85 366.85 157.55 366.85 158.25 366.85 158.75 366.35 L158.85 366.3 Q159.35 365.75 159.35 365 159.35 364.25 158.85 363.75"/> + <path stroke="none" fill="#B2B4C2" d="M181.3 329.9 L189.75 330.55 190.5 330.65 Q193.1 331 194.4 333.55 L194.4 333.6 Q196.3 338.65 197.15 343.65 L197.7 348.75 Q198 353.55 197.3 358.3 196.45 363.6 194.4 368.8 L194.35 368.9 Q192.95 371.35 190.45 372 L189.95 372.1 188.55 372.4 186.5 372.7 186.5 372.25 Q186.5 368.85 184.05 366.4 181.65 364 178.2 364 L178.85 357.4 181.2 357.65 181.95 357.75 Q181.4 358.2 181.4 359 181.4 359.7 181.95 360.25 182.45 360.8 183.2 360.8 183.95 360.8 184.5 360.25 185 359.7 185 359 L184.75 358 186.7 358.2 Q188.8 358.4 190.3 356.9 191.8 355.4 191.8 353.3 191.8 351.2 190.3 349.7 188.8 348.2 186.7 348.2 L183.35 348.2 179.85 335.2 181.3 329.9 M181.4 335.15 Q181.4 335.9 181.95 336.4 182.45 336.95 183.2 336.95 183.95 336.95 184.5 336.4 185 335.9 185 335.15 185 334.4 184.5 333.85 183.95 333.35 183.2 333.35 182.45 333.35 181.95 333.85 181.4 334.4 181.4 335.15"/> + <path stroke="none" fill="#9698A6" d="M181.4 335.15 Q181.4 334.4 181.95 333.85 182.45 333.35 183.2 333.35 183.95 333.35 184.5 333.85 185 334.4 185 335.15 185 335.9 184.5 336.4 183.95 336.95 183.2 336.95 182.45 336.95 181.95 336.4 181.4 335.9 181.4 335.15 M184.75 358 L185 359 Q185 359.7 184.5 360.25 183.95 360.8 183.2 360.8 182.45 360.8 181.95 360.25 181.4 359.7 181.4 359 181.4 358.2 181.95 357.75 L184.75 358"/> + <path stroke="none" fill="#F1CC36" d="M197.15 343.65 L197.3 343.6 197.55 343.65 197.9 343.75 198.25 343.85 199.9 344.4 199.9 357.55 198.25 358.1 197.9 358.2 197.55 358.3 197.3 358.3 Q198 353.55 197.7 348.75 L197.15 343.65 M204.05 347.3 Q205.4 349 205.4 350.95 205.4 352.95 204.05 354.65 L204.05 347.3"/> + <path stroke="none" fill="#FFE47B" d="M160.8 344.95 L174 345.85 173.7 347 165.1 346.35 163.9 348.2 162.4 348.2 163.85 346.25 161.1 346.05 160.8 344.95 M176.95 346.05 L178.9 346.15 178.95 347.35 176.65 347.2 176.95 346.05 M155.95 356.6 L158.35 356.55 152.4 365.4 151.65 363.25 151.3 362.75 155.95 356.6 M133.75 343.15 L152.75 344.4 152.5 345.4 134.65 344.05 133.75 343.15 M155.4 345.65 L155.65 344.6 157.8 344.75 158.05 345.85 155.4 345.65"/> + <path stroke="none" fill="#989AA7" d="M178.9 346.15 L178.5 341.35 180.35 348.2 179 348.2 178.95 347.35 178.9 346.15"/> + <path stroke="none" fill="#F4F4F4" d="M177.05 371.1 Q177.55 370.6 178.2 370.6 178.9 370.6 179.4 371.1 L179.65 371.5 179.85 372.25 179.8 372.65 179.6 373.25 179.4 373.45 Q178.9 373.9 178.2 373.9 177.55 373.9 177.05 373.45 L176.85 373.2 176.6 372.7 176.6 372.65 176.55 372.25 Q176.55 371.8 176.8 371.45 L176.95 371.25 177.05 371.1 M147.8 368.55 L147.4 369.15 Q146.85 369.75 146 369.75 145.15 369.75 144.55 369.15 144 368.5 144 367.7 L144 367.5 146 368.1 147.8 368.55"/> + <path stroke="none" fill="#1C1C1C" d="M188.3 374.45 Q187.7 377.3 185.5 379.5 L185.45 379.55 Q182.45 382.55 178.2 382.55 173.95 382.55 170.95 379.55 168.8 377.4 168.2 374.6 L168.15 374.35 168 374.35 168 372.3 169.95 372.6 Q170.05 375.8 172.35 378.1 174.8 380.55 178.2 380.55 181.65 380.55 184.05 378.1 186.35 375.85 186.5 372.7 L188.55 372.4 188.3 374.45 M152.65 370.4 L152.5 370.5 152.45 370.55 151 372.65 Q148.95 374.75 146 374.75 143.05 374.75 141.05 372.7 L141 372.65 Q139 370.6 139 367.7 L139.05 366.85 141.25 366.1 Q141 366.85 141 367.7 141 369.8 142.45 371.25 143.9 372.75 146 372.75 148.1 372.75 149.55 371.25 150.6 370.15 150.95 368.75 L152.65 370.4"/> + <path stroke="none" fill="#FADC67" d="M158.85 363.75 Q159.35 364.25 159.35 365 159.35 365.75 158.85 366.3 L158.75 366.35 Q158.25 366.85 157.55 366.85 156.85 366.85 156.3 366.3 L156.2 366.2 Q155.75 365.7 155.75 365 L155.8 364.9 Q155.8 364.2 156.3 363.75 156.85 363.2 157.55 363.2 158.35 363.2 158.85 363.75"/> + <path stroke="none" fill="#EEC830" d="M251.35 320.7 L248.5 320.95 Q246.4 320.85 244.9 319.3 L244.3 318.6 Q243.35 316.65 243.85 315.05 244.2 314.2 244.9 313.5 246.4 312 248.5 312 L286.7 312 Q288.8 312 290.3 313.5 291.8 315 291.8 317.1 291.8 319.2 290.3 320.7 288.8 322.2 286.7 322 L283.5 321.7 281.2 321.45 280.55 321.4 276.05 320.9 273 320.65 262.2 320.25 259.2 320.3 254.25 320.5 251.35 320.7 M230.05 339.75 L229.7 339.8 Q227.65 340.1 226.15 339.3 224.55 338.4 224.55 336.9 224.55 336.15 224.95 335.5 225.35 334.8 226.15 334.25 227.7 333.15 229.8 333.15 L241.7 333.1 Q242.75 333.1 243.45 333.8 244.1 334.45 244.05 335.45 244.05 336.45 243.3 337.2 242.55 338 241.45 338.15 L230.05 339.75 M283.35 348.2 L286.7 348.2 Q288.8 348.2 290.3 349.7 291.8 351.2 291.8 353.3 291.8 355.4 290.3 356.9 288.8 358.4 286.7 358.2 L284.75 358 281.95 357.75 281.2 357.65 278.85 357.4 258.35 356.55 255.95 356.6 248.5 357.15 Q246.4 357.05 244.9 355.5 L244.3 354.8 Q243.35 352.85 243.85 351.25 244.2 350.4 244.9 349.7 246.4 348.2 248.5 348.2 L251.75 348.2 254.7 348.2 258.7 348.2 261.7 348.2 262.4 348.2 263.9 348.2 273.4 348.2 276.35 348.2 279 348.2 280.35 348.2 283.35 348.2"/> + <path stroke="none" fill="#9F882A" d="M283.5 321.7 L286.7 322 Q288.8 322.2 290.3 320.7 291.8 319.2 291.8 317.1 291.8 315 290.3 313.5 288.8 312 286.7 312 L248.5 312 Q246.4 312 244.9 313.5 244.2 314.2 243.85 315.05 243.35 316.65 244.3 318.6 L244.9 319.3 Q246.4 320.85 248.5 320.95 L251.35 320.7 253.6 329.2 242.55 329.55 Q235.1 321.4 226.65 323.5 224.1 324.15 222.95 325.55 221.6 327.25 222.2 329.95 L222.95 332.2 Q223.7 333.95 224.95 335.5 224.55 336.15 224.55 336.9 224.55 338.4 226.15 339.3 227.65 340.1 229.7 339.8 L230.05 339.75 233.75 343.15 234.65 344.05 Q240.3 349.95 244.4 357.35 L246.25 360.3 Q244.8 360.3 243.5 361.1 241.35 362.35 240.7 364.75 L240.55 365.55 240.7 365.55 241.25 366.1 239.05 366.85 238.75 366.4 Q238.5 365.9 238.6 365.3 L238.75 364.3 238.8 364.25 Q239.65 361.05 242.5 359.4 L243.1 359.05 242.65 358.35 Q238.7 351.2 233.25 345.5 L233.2 345.45 232.35 344.6 229.4 341.85 Q227 342.05 225.2 341.1 L225.2 341.05 Q222.45 339.5 222.55 336.9 222.55 336.35 222.7 335.8 221.75 334.45 221.1 333 L221.1 332.95 220.3 330.45 220.25 330.4 Q219.4 326.65 221.4 324.3 222.85 322.4 226.15 321.55 L226.2 321.55 Q235.3 319.15 243.4 327.5 L251 327.25 249.85 322.85 248.7 322.95 248.4 322.95 Q245.5 322.8 243.5 320.7 L243.5 320.75 242.7 319.8 242.5 319.5 Q241.15 316.7 241.95 314.45 L242 314.3 Q242.5 313.1 243.5 312.1 245.55 310 248.5 310 L286.7 310 Q289.65 310 291.75 312.1 293.8 314.15 293.8 317.1 293.8 320.05 291.75 322.15 289.55 324.3 286.5 324 L284.95 323.85 283.85 328.05 281.8 327.95 283.5 321.7 M268 374.35 Q263.95 373.65 259.8 372.45 256.45 371.5 253.6 369.85 L252.85 369.4 252.8 369.4 252.65 370.4 250.95 368.75 251.85 368.55 252 368.6 252.25 367.85 252.45 366.7 Q256 369.25 260.35 370.5 L268 372.3 268 374.35"/> + <path stroke="none" fill="#B2B4C2" d="M284.5 336.4 Q285 335.9 285 335.15 285 334.4 284.5 333.85 283.95 333.35 283.2 333.35 282.45 333.35 281.95 333.85 281.4 334.4 281.4 335.15 281.4 335.9 281.95 336.4 282.45 336.95 283.2 336.95 283.95 336.95 284.5 336.4 M281.3 329.9 L289.75 330.55 290.5 330.65 Q293.1 331 294.4 333.55 L294.4 333.6 295 335.3 Q296.45 339.5 297.15 343.65 L297.7 348.75 Q298 353.5 297.3 358.25 296.6 362.75 295 367.15 L294.4 368.75 294.35 368.85 Q292.95 371.3 290.45 371.95 L289.95 372.05 288.55 372.35 288.55 372.4 286.5 372.7 286.5 372.25 Q286.5 368.85 284.05 366.4 281.65 364 278.2 364 L278.85 357.4 281.2 357.65 281.95 357.75 Q281.4 358.2 281.4 359 281.4 359.7 281.95 360.25 282.45 360.8 283.2 360.8 283.95 360.8 284.5 360.25 285 359.7 285 359 L284.75 358 286.7 358.2 Q288.8 358.4 290.3 356.9 291.8 355.4 291.8 353.3 291.8 351.2 290.3 349.7 288.8 348.2 286.7 348.2 L283.35 348.2 279.85 335.2 281.3 329.9"/> + <path stroke="none" fill="#9698A6" d="M284.5 336.4 Q283.95 336.95 283.2 336.95 282.45 336.95 281.95 336.4 281.4 335.9 281.4 335.15 281.4 334.4 281.95 333.85 282.45 333.35 283.2 333.35 283.95 333.35 284.5 333.85 285 334.4 285 335.15 285 335.9 284.5 336.4 M284.75 358 L285 359 Q285 359.7 284.5 360.25 283.95 360.8 283.2 360.8 282.45 360.8 281.95 360.25 281.4 359.7 281.4 359 281.4 358.2 281.95 357.75 L284.75 358"/> + <path stroke="none" fill="#8A8B98" d="M281.8 327.95 L283.85 328.05 284.45 328.1 289.95 328.55 290.05 328.6 290.75 328.7 290.8 328.7 Q293.35 329 295 330.9 L296.2 332.65 296.3 332.9 296.35 333.1 297.05 335.15 297.9 337.95 297.9 343.65 Q297.95 342 299.1 340.9 L299.15 340.85 Q300.4 339.7 302 339.7 303.7 339.7 304.9 340.9 306.05 342.05 306.05 343.75 L306.05 346.65 Q307.4 348.65 307.4 350.95 307.4 353.3 306.05 355.35 L306.05 358.3 Q306.05 360 304.9 361.2 L304.95 361.1 Q303.7 362.4 302 362.4 300.35 362.45 299.1 361.2 297.95 360.05 297.9 358.4 L297.9 364.65 296.8 368 296.4 369.1 Q296.35 369.6 295.9 370.15 L295 371.4 Q293.4 373.3 290.95 373.9 L290.85 373.9 290.35 374 290.35 374.05 288.3 374.4 288.55 372.4 288.55 372.35 289.95 372.05 290.45 371.95 Q292.95 371.3 294.35 368.85 L294.4 368.75 295 367.15 Q296.6 362.75 297.3 358.25 L297.55 358.25 297.9 358.15 297.9 358.2 298.25 358.1 299.9 357.55 299.9 358.3 Q299.9 359.15 300.5 359.75 301.15 360.4 302 360.4 302.85 360.4 303.45 359.75 304.05 359.15 304.05 358.3 L304.05 354.65 Q305.4 352.95 305.4 350.95 305.4 349 304.05 347.3 L304.05 343.75 Q304.05 342.9 303.45 342.3 302.85 341.7 302 341.7 301.15 341.7 300.5 342.3 299.9 342.9 299.9 343.75 L299.9 344.4 298.25 343.85 297.9 343.85 297.9 343.75 297.55 343.65 297.3 343.6 297.15 343.65 Q296.45 339.5 295 335.3 L294.4 333.6 294.4 333.55 Q293.1 331 290.5 330.65 L289.75 330.55 281.3 329.9 281.8 327.95"/> + <path stroke="none" fill="#D0D3E5" d="M281.8 327.95 L281.3 329.9 279.85 335.2 283.35 348.2 280.35 348.2 278.5 341.35 278.35 340.75 276.95 346.05 276.65 347.2 276.35 348.2 273.4 348.2 273.7 347 274 345.85 276.85 335.2 276.2 332.7 275.05 328.45 273 320.65 276.05 320.9 278.35 329.6 280.55 321.4 281.2 321.45 283.5 321.7 281.8 327.95 M251.35 320.7 L254.25 320.5 256.7 329.6 259.2 320.3 262.2 320.25 259.85 329 258.75 333.25 258.2 335.2 260.8 344.95 261.1 346.05 261.7 348.2 258.7 348.2 258.05 345.85 257.8 344.75 256.7 340.75 255.65 344.6 255.4 345.65 254.7 348.2 251.75 348.2 252.5 345.4 252.75 344.4 255.2 335.2 253.6 329.2 251.35 320.7 M299.9 344.4 L299.9 343.75 Q299.9 342.9 300.5 342.3 301.15 341.7 302 341.7 302.85 341.7 303.45 342.3 304.05 342.9 304.05 343.75 L304.05 347.3 304.05 354.65 304.05 358.3 Q304.05 359.15 303.45 359.75 302.85 360.4 302 360.4 301.15 360.4 300.5 359.75 299.9 359.15 299.9 358.3 L299.9 357.55 299.9 344.4 M300.85 343.75 L300.85 351.1 303.25 351.1 303.25 343.75 302.9 342.95 Q302.55 342.6 302.05 342.65 301.6 342.65 301.2 343 300.9 343.3 300.85 343.75"/> + <path stroke="none" fill="#B1B4C9" d="M254.25 320.5 L259.2 320.3 256.7 329.6 254.25 320.5 M262.2 320.25 L273 320.65 275.05 328.45 Q274.7 328.5 274.35 328.7 L273.15 329.25 Q270.15 330.45 266 330.25 262.5 330.1 259.85 329 L262.2 320.25 M276.05 320.9 L280.55 321.4 278.35 329.6 276.05 320.9 M263.75 322.25 L262.3 327.7 266.1 328.25 Q269.55 328.4 272.1 327.55 L272.4 327.4 272.5 327.4 272.7 327.3 271.45 322.55 263.75 322.25"/> + <path stroke="none" fill="#F5D657" d="M241.25 366.1 L240.7 365.55 240.55 365.55 240.7 364.75 Q241.35 362.35 243.5 361.1 244.8 360.3 246.25 360.3 L244.4 357.35 Q240.3 349.95 234.65 344.05 L252.5 345.4 251.75 348.2 248.5 348.2 Q246.4 348.2 244.9 349.7 244.2 350.4 243.85 351.25 243.35 352.85 244.3 354.8 L244.9 355.5 Q246.4 357.05 248.5 357.15 L255.95 356.6 251.3 362.75 251.65 363.25 252.4 365.4 258.35 356.55 278.85 357.4 278.2 364 Q274.8 364 272.35 366.4 269.95 368.85 269.95 372.25 L269.95 372.6 268 372.3 260.35 370.5 Q256 369.25 252.45 366.7 L252.25 367.85 252 368.6 251.85 368.55 250.95 368.75 250.15 368.75 247.8 368.55 246 368.1 244 367.5 242 366.6 241.25 366.1 M233.75 343.15 L230.05 339.75 241.45 338.15 Q242.55 338 243.3 337.2 244.05 336.45 244.05 335.45 244.1 334.45 243.45 333.8 242.75 333.1 241.7 333.1 L229.8 333.15 Q227.7 333.15 226.15 334.25 225.35 334.8 224.95 335.5 223.7 333.95 222.95 332.2 L222.2 329.95 Q221.6 327.25 222.95 325.55 224.1 324.15 226.65 323.5 235.1 321.4 242.55 329.55 L253.6 329.2 255.2 335.2 252.75 344.4 233.75 343.15 M260.8 344.95 L258.2 335.2 258.75 333.25 Q261.8 334.4 265.8 334.6 271.05 334.85 274.8 333.3 L276.2 332.7 276.85 335.2 274 345.85 260.8 344.95 M276.65 347.2 L278.95 347.35 279 348.2 276.35 348.2 276.65 347.2 M278.9 346.15 L276.95 346.05 278.35 340.75 278.5 341.35 278.9 346.15 M273.4 348.2 L263.9 348.2 265.1 346.35 273.7 347 273.4 348.2 M262.4 348.2 L261.7 348.2 261.1 346.05 263.85 346.25 262.4 348.2 M258.7 348.2 L254.7 348.2 255.4 345.65 258.05 345.85 258.7 348.2 M255.65 344.6 L256.7 340.75 257.8 344.75 255.65 344.6 M257.55 363.2 Q256.85 363.2 256.3 363.75 255.8 364.2 255.8 364.9 L255.75 365 Q255.75 365.7 256.2 366.2 L256.3 366.3 Q256.85 366.85 257.55 366.85 258.25 366.85 258.75 366.35 L258.85 366.3 Q259.35 365.75 259.35 365 259.35 364.25 258.85 363.75 258.35 363.2 257.55 363.2"/> + <path stroke="none" fill="#3D3D3D" d="M276.2 332.7 L274.8 333.3 Q271.05 334.85 265.8 334.6 261.8 334.4 258.75 333.25 L259.85 329 Q262.5 330.1 266 330.25 270.15 330.45 273.15 329.25 L274.35 328.7 Q274.7 328.5 275.05 328.45 L276.2 332.7 M278.2 364 Q281.65 364 284.05 366.4 286.5 368.85 286.5 372.25 L286.5 372.7 Q286.35 375.85 284.05 378.1 281.65 380.55 278.2 380.55 274.8 380.55 272.35 378.1 270.05 375.8 269.95 372.6 L269.95 372.25 Q269.95 368.85 272.35 366.4 274.8 364 278.2 364 M247.8 368.55 L250.15 368.75 250.95 368.75 Q250.6 370.15 249.55 371.25 248.1 372.75 246 372.75 243.9 372.75 242.45 371.25 241 369.8 241 367.7 241 366.85 241.25 366.1 L242 366.6 244 367.5 244 367.7 Q244 368.5 244.55 369.15 245.15 369.75 246 369.75 246.85 369.75 247.4 369.15 L247.8 368.55 M278.2 370.6 Q277.55 370.6 277.05 371.1 L276.95 371.25 276.8 371.45 Q276.55 371.8 276.55 372.25 L276.6 372.65 276.6 372.7 276.85 373.2 277.05 373.45 Q277.55 373.9 278.2 373.9 278.9 373.9 279.4 373.45 L279.6 373.25 279.8 372.65 279.85 372.25 279.65 371.5 279.4 371.1 Q278.9 370.6 278.2 370.6"/> + <path stroke="none" fill="#FFE47B" d="M234.65 344.05 L233.75 343.15 252.75 344.4 252.5 345.4 234.65 344.05 M260.8 344.95 L274 345.85 273.7 347 265.1 346.35 263.9 348.2 262.4 348.2 263.85 346.25 261.1 346.05 260.8 344.95 M276.65 347.2 L276.95 346.05 278.9 346.15 278.95 347.35 276.65 347.2 M255.95 356.6 L258.35 356.55 252.4 365.4 251.65 363.25 251.3 362.75 255.95 356.6 M255.65 344.6 L257.8 344.75 258.05 345.85 255.4 345.65 255.65 344.6"/> + <path stroke="none" fill="#989AA7" d="M278.95 347.35 L278.9 346.15 278.5 341.35 280.35 348.2 279 348.2 278.95 347.35"/> + <path stroke="none" fill="#FADC67" d="M257.55 363.2 Q258.35 363.2 258.85 363.75 259.35 364.25 259.35 365 259.35 365.75 258.85 366.3 L258.75 366.35 Q258.25 366.85 257.55 366.85 256.85 366.85 256.3 366.3 L256.2 366.2 Q255.75 365.7 255.75 365 L255.8 364.9 Q255.8 364.2 256.3 363.75 256.85 363.2 257.55 363.2"/> + <path stroke="none" fill="#1C1C1C" d="M239.05 366.85 L241.25 366.1 Q241 366.85 241 367.7 241 369.8 242.45 371.25 243.9 372.75 246 372.75 248.1 372.75 249.55 371.25 250.6 370.15 250.95 368.75 L252.65 370.4 252.5 370.5 252.45 370.55 251 372.65 Q248.95 374.75 246 374.75 243.05 374.75 241.05 372.7 L241 372.65 Q239 370.6 239 367.7 L239.05 366.85 M288.3 374.4 L288.3 374.45 Q287.7 377.3 285.5 379.5 L285.45 379.55 Q282.45 382.55 278.2 382.55 273.95 382.55 270.95 379.55 268.8 377.4 268.2 374.6 L268.15 374.35 268 374.35 268 372.3 269.95 372.6 Q270.05 375.8 272.35 378.1 274.8 380.55 278.2 380.55 281.65 380.55 284.05 378.1 286.35 375.85 286.5 372.7 L288.55 372.4 288.3 374.4"/> + <path stroke="none" fill="#F4F4F4" d="M244 367.5 L246 368.1 247.8 368.55 247.4 369.15 Q246.85 369.75 246 369.75 245.15 369.75 244.55 369.15 244 368.5 244 367.7 L244 367.5 M278.2 370.6 Q278.9 370.6 279.4 371.1 L279.65 371.5 279.85 372.25 279.8 372.65 279.6 373.25 279.4 373.45 Q278.9 373.9 278.2 373.9 277.55 373.9 277.05 373.45 L276.85 373.2 276.6 372.7 276.6 372.65 276.55 372.25 Q276.55 371.8 276.8 371.45 L276.95 371.25 277.05 371.1 Q277.55 370.6 278.2 370.6"/> + <path stroke="none" fill="#F1CC36" d="M297.15 343.65 L297.3 343.6 297.55 343.65 297.9 343.75 297.9 343.85 298.25 343.85 299.9 344.4 299.9 357.55 298.25 358.1 297.9 358.2 297.9 358.15 297.55 358.25 297.3 358.25 Q298 353.5 297.7 348.75 L297.15 343.65 M304.05 347.3 Q305.4 349 305.4 350.95 305.4 352.95 304.05 354.65 L304.05 347.3"/> + <path stroke="none" fill="#DFE1EE" d="M300.85 343.75 Q300.9 343.3 301.2 343 301.6 342.65 302.05 342.65 302.55 342.6 302.9 342.95 L303.25 343.75 303.25 351.1 300.85 351.1 300.85 343.75"/> + <path stroke="none" fill="#C24040" d="M230.05 609.75 L229.7 609.8 Q227.65 610.1 226.15 609.3 224.55 608.4 224.55 606.9 224.55 606.15 224.95 605.5 225.35 604.8 226.15 604.25 227.7 603.15 229.8 603.15 L241.7 603.1 Q242.75 603.1 243.45 603.8 244.1 604.45 244.05 605.45 244.05 606.45 243.3 607.2 242.55 608 241.45 608.15 L230.05 609.75 M251.35 590.7 L248.5 590.95 Q246.4 590.85 244.9 589.3 L244.3 588.6 Q243.35 586.65 243.85 585.05 244.2 584.2 244.9 583.5 246.4 582 248.5 582 L286.7 582 Q288.8 582 290.3 583.5 291.8 585 291.8 587.1 291.8 589.2 290.3 590.7 288.8 592.2 286.7 592 L283.5 591.7 281.2 591.45 280.55 591.4 276.05 590.9 273 590.65 262.2 590.25 259.2 590.3 254.25 590.5 251.35 590.7 M297.15 613.65 L297.3 613.6 297.55 613.65 297.9 613.75 297.9 613.85 298.25 613.85 299.9 614.4 299.9 627.55 298.25 628.1 297.9 628.2 297.9 628.15 297.55 628.25 297.3 628.25 Q298 623.5 297.7 618.75 L297.15 613.65 M304.05 617.3 Q305.4 619 305.4 620.95 305.4 622.95 304.05 624.65 L304.05 617.3 M283.35 618.2 L286.7 618.2 Q288.8 618.2 290.3 619.7 291.8 621.2 291.8 623.3 291.8 625.4 290.3 626.9 288.8 628.4 286.7 628.2 L284.75 628 281.95 627.75 281.2 627.65 278.85 627.4 258.35 626.55 255.95 626.6 248.5 627.15 Q246.4 627.05 244.9 625.5 L244.3 624.8 Q243.35 622.85 243.85 621.25 244.2 620.4 244.9 619.7 246.4 618.2 248.5 618.2 L251.75 618.2 254.7 618.2 258.7 618.2 261.7 618.2 262.4 618.2 263.9 618.2 273.4 618.2 276.35 618.2 279 618.2 280.35 618.2 283.35 618.2"/> + <path stroke="none" fill="#A63333" d="M239.05 636.85 L238.75 636.4 Q238.5 635.9 238.6 635.3 L238.75 634.3 238.8 634.25 Q239.65 631.05 242.5 629.4 L243.1 629.05 242.65 628.35 Q238.7 621.2 233.25 615.5 L233.2 615.45 232.35 614.6 229.4 611.85 Q227 612.05 225.2 611.1 L225.2 611.05 Q222.45 609.5 222.55 606.9 222.55 606.35 222.7 605.8 221.75 604.45 221.1 603 L221.1 602.95 220.3 600.45 220.25 600.4 Q219.4 596.65 221.4 594.3 222.85 592.4 226.15 591.55 L226.2 591.55 Q235.3 589.15 243.4 597.5 L251 597.25 249.85 592.85 248.7 592.95 248.4 592.95 Q245.5 592.8 243.5 590.7 L243.5 590.75 242.7 589.8 242.5 589.5 Q241.15 586.7 241.95 584.45 L242 584.3 Q242.5 583.1 243.5 582.1 245.55 580 248.5 580 L286.7 580 Q289.65 580 291.75 582.1 293.8 584.15 293.8 587.1 293.8 590.05 291.75 592.15 289.55 594.3 286.5 594 L284.95 593.85 283.85 598.05 281.8 597.95 283.5 591.7 286.7 592 Q288.8 592.2 290.3 590.7 291.8 589.2 291.8 587.1 291.8 585 290.3 583.5 288.8 582 286.7 582 L248.5 582 Q246.4 582 244.9 583.5 244.2 584.2 243.85 585.05 243.35 586.65 244.3 588.6 L244.9 589.3 Q246.4 590.85 248.5 590.95 L251.35 590.7 253.6 599.2 242.55 599.55 Q235.1 591.4 226.65 593.5 224.1 594.15 222.95 595.55 221.6 597.25 222.2 599.95 L222.95 602.2 Q223.7 603.95 224.95 605.5 224.55 606.15 224.55 606.9 224.55 608.4 226.15 609.3 227.65 610.1 229.7 609.8 L230.05 609.75 233.75 613.15 234.65 614.05 Q240.3 619.95 244.4 627.35 L246.25 630.3 Q244.8 630.3 243.5 631.1 241.35 632.35 240.7 634.75 L240.55 635.55 240.7 635.55 241.25 636.1 239.05 636.85 M268 644.35 Q263.95 643.65 259.8 642.45 256.45 641.5 253.6 639.85 L252.85 639.4 252.8 639.4 252.65 640.4 250.95 638.75 251.85 638.55 252 638.6 252.25 637.85 252.45 636.7 Q256 639.25 260.35 640.5 L268 642.3 268 644.35"/> + <path stroke="none" fill="#D24343" d="M241.25 636.1 L240.7 635.55 240.55 635.55 240.7 634.75 Q241.35 632.35 243.5 631.1 244.8 630.3 246.25 630.3 L244.4 627.35 Q240.3 619.95 234.65 614.05 L252.5 615.4 251.75 618.2 248.5 618.2 Q246.4 618.2 244.9 619.7 244.2 620.4 243.85 621.25 243.35 622.85 244.3 624.8 L244.9 625.5 Q246.4 627.05 248.5 627.15 L255.95 626.6 251.3 632.75 251.65 633.25 252.4 635.4 258.35 626.55 278.85 627.4 278.2 634 Q274.8 634 272.35 636.4 269.95 638.85 269.95 642.25 L269.95 642.6 268 642.3 260.35 640.5 Q256 639.25 252.45 636.7 L252.25 637.85 252 638.6 251.85 638.55 250.95 638.75 250.15 638.75 247.8 638.55 246 638.1 244 637.5 242 636.6 241.25 636.1 M233.75 613.15 L230.05 609.75 241.45 608.15 Q242.55 608 243.3 607.2 244.05 606.45 244.05 605.45 244.1 604.45 243.45 603.8 242.75 603.1 241.7 603.1 L229.8 603.15 Q227.7 603.15 226.15 604.25 225.35 604.8 224.95 605.5 223.7 603.95 222.95 602.2 L222.2 599.95 Q221.6 597.25 222.95 595.55 224.1 594.15 226.65 593.5 235.1 591.4 242.55 599.55 L253.6 599.2 255.2 605.2 252.75 614.4 233.75 613.15 M258.75 603.25 Q261.8 604.4 265.8 604.6 271.05 604.85 274.8 603.3 L276.2 602.7 276.85 605.2 274 615.85 260.8 614.95 258.2 605.2 258.75 603.25 M279 618.2 L276.35 618.2 276.65 617.2 278.95 617.35 279 618.2 M273.4 618.2 L263.9 618.2 265.1 616.35 273.7 617 273.4 618.2 M262.4 618.2 L261.7 618.2 261.1 616.05 263.85 616.25 262.4 618.2 M258.7 618.2 L254.7 618.2 255.4 615.65 258.05 615.85 258.7 618.2 M276.95 616.05 L278.35 610.75 278.5 611.35 278.9 616.15 276.95 616.05 M257.8 614.75 L255.65 614.6 256.7 610.75 257.8 614.75 M257.55 633.2 Q256.85 633.2 256.3 633.75 255.8 634.2 255.8 634.9 L255.75 635 Q255.75 635.7 256.2 636.2 L256.3 636.3 Q256.85 636.85 257.55 636.85 258.25 636.85 258.75 636.35 L258.85 636.3 Q259.35 635.75 259.35 635 259.35 634.25 258.85 633.75 258.35 633.2 257.55 633.2"/> + <path stroke="none" fill="#E94F4F" d="M257.55 633.2 Q258.35 633.2 258.85 633.75 259.35 634.25 259.35 635 259.35 635.75 258.85 636.3 L258.75 636.35 Q258.25 636.85 257.55 636.85 256.85 636.85 256.3 636.3 L256.2 636.2 Q255.75 635.7 255.75 635 L255.8 634.9 Q255.8 634.2 256.3 633.75 256.85 633.2 257.55 633.2 M234.65 614.05 L233.75 613.15 252.75 614.4 252.5 615.4 234.65 614.05 M263.9 618.2 L262.4 618.2 263.85 616.25 261.1 616.05 260.8 614.95 274 615.85 273.7 617 265.1 616.35 263.9 618.2 M255.95 626.6 L258.35 626.55 252.4 635.4 251.65 633.25 251.3 632.75 255.95 626.6 M276.95 616.05 L278.9 616.15 278.95 617.35 276.65 617.2 276.95 616.05 M258.05 615.85 L255.4 615.65 255.65 614.6 257.8 614.75 258.05 615.85"/> + <path stroke="none" fill="#3D3D3D" d="M250.95 638.75 Q250.6 640.15 249.55 641.25 248.1 642.75 246 642.75 243.9 642.75 242.45 641.25 241 639.8 241 637.7 241 636.85 241.25 636.1 L242 636.6 244 637.5 244 637.7 Q244 638.5 244.55 639.15 245.15 639.75 246 639.75 246.85 639.75 247.4 639.15 L247.8 638.55 250.15 638.75 250.95 638.75 M278.2 634 Q281.65 634 284.05 636.4 286.5 638.85 286.5 642.25 L286.5 642.7 Q286.35 645.85 284.05 648.1 281.65 650.55 278.2 650.55 274.8 650.55 272.35 648.1 270.05 645.8 269.95 642.6 L269.95 642.25 Q269.95 638.85 272.35 636.4 274.8 634 278.2 634 M259.85 599 Q262.5 600.1 266 600.25 270.15 600.45 273.15 599.25 L274.35 598.7 Q274.7 598.5 275.05 598.45 L276.2 602.7 274.8 603.3 Q271.05 604.85 265.8 604.6 261.8 604.4 258.75 603.25 L259.85 599 M279.65 641.5 L279.4 641.1 Q278.9 640.6 278.2 640.6 277.55 640.6 277.05 641.1 L276.95 641.25 276.8 641.45 Q276.55 641.8 276.55 642.25 L276.6 642.65 276.6 642.7 276.85 643.2 277.05 643.45 Q277.55 643.9 278.2 643.9 278.9 643.9 279.4 643.45 L279.6 643.25 279.8 642.65 279.85 642.25 279.65 641.5"/> + <path stroke="none" fill="#1C1C1C" d="M288.3 644.4 L288.3 644.45 Q287.7 647.3 285.5 649.5 L285.45 649.55 Q282.45 652.55 278.2 652.55 273.95 652.55 270.95 649.55 268.8 647.4 268.2 644.6 L268.15 644.35 268 644.35 268 642.3 269.95 642.6 Q270.05 645.8 272.35 648.1 274.8 650.55 278.2 650.55 281.65 650.55 284.05 648.1 286.35 645.85 286.5 642.7 L288.55 642.4 288.3 644.4 M252.65 640.4 L252.5 640.5 252.45 640.55 251 642.65 Q248.95 644.75 246 644.75 243.05 644.75 241.05 642.7 L241 642.65 Q239 640.6 239 637.7 L239.05 636.85 241.25 636.1 Q241 636.85 241 637.7 241 639.8 242.45 641.25 243.9 642.75 246 642.75 248.1 642.75 249.55 641.25 250.6 640.15 250.95 638.75 L252.65 640.4"/> + <path stroke="none" fill="#8A8B98" d="M283.85 598.05 L284.45 598.1 289.95 598.55 290.05 598.6 290.75 598.7 290.8 598.7 Q293.35 599 295 600.9 L296.2 602.65 296.3 602.9 296.35 603.1 297.05 605.15 297.9 607.95 297.9 613.65 Q297.95 612 299.1 610.9 L299.15 610.85 Q300.4 609.7 302 609.7 303.7 609.7 304.9 610.9 306.05 612.05 306.05 613.75 L306.05 616.65 Q307.4 618.65 307.4 620.95 307.4 623.3 306.05 625.35 L306.05 628.3 Q306.05 630 304.9 631.2 L304.95 631.1 Q303.7 632.4 302 632.4 300.35 632.45 299.1 631.2 297.95 630.05 297.9 628.4 L297.9 634.65 296.8 638 296.4 639.1 Q296.35 639.6 295.9 640.15 L295 641.4 Q293.4 643.3 290.95 643.9 L290.85 643.9 290.35 644 290.35 644.05 288.3 644.4 288.55 642.4 288.55 642.35 289.95 642.05 290.45 641.95 Q292.95 641.3 294.35 638.85 L294.4 638.75 295 637.15 Q296.6 632.75 297.3 628.25 L297.55 628.25 297.9 628.15 297.9 628.2 298.25 628.1 299.9 627.55 299.9 628.3 Q299.9 629.15 300.5 629.75 301.15 630.4 302 630.4 302.85 630.4 303.45 629.75 304.05 629.15 304.05 628.3 L304.05 624.65 Q305.4 622.95 305.4 620.95 305.4 619 304.05 617.3 L304.05 613.75 Q304.05 612.9 303.45 612.3 302.85 611.7 302 611.7 301.15 611.7 300.5 612.3 299.9 612.9 299.9 613.75 L299.9 614.4 298.25 613.85 297.9 613.85 297.9 613.75 297.55 613.65 297.3 613.6 297.15 613.65 Q296.45 609.5 295 605.3 L294.4 603.6 294.4 603.55 Q293.1 601 290.5 600.65 L289.75 600.55 281.3 599.9 281.8 597.95 283.85 598.05"/> + <path stroke="none" fill="#B2B4C2" d="M285 605.15 Q285 604.4 284.5 603.85 283.95 603.35 283.2 603.35 282.45 603.35 281.95 603.85 281.4 604.4 281.4 605.15 281.4 605.9 281.95 606.4 282.45 606.95 283.2 606.95 283.95 606.95 284.5 606.4 285 605.9 285 605.15 M281.3 599.9 L289.75 600.55 290.5 600.65 Q293.1 601 294.4 603.55 L294.4 603.6 295 605.3 Q296.45 609.5 297.15 613.65 L297.7 618.75 Q298 623.5 297.3 628.25 296.6 632.75 295 637.15 L294.4 638.75 294.35 638.85 Q292.95 641.3 290.45 641.95 L289.95 642.05 288.55 642.35 288.55 642.4 286.5 642.7 286.5 642.25 Q286.5 638.85 284.05 636.4 281.65 634 278.2 634 L278.85 627.4 281.2 627.65 281.95 627.75 Q281.4 628.2 281.4 629 281.4 629.7 281.95 630.25 282.45 630.8 283.2 630.8 283.95 630.8 284.5 630.25 285 629.7 285 629 L284.75 628 286.7 628.2 Q288.8 628.4 290.3 626.9 291.8 625.4 291.8 623.3 291.8 621.2 290.3 619.7 288.8 618.2 286.7 618.2 L283.35 618.2 279.85 605.2 281.3 599.9"/> + <path stroke="none" fill="#9698A6" d="M285 605.15 Q285 605.9 284.5 606.4 283.95 606.95 283.2 606.95 282.45 606.95 281.95 606.4 281.4 605.9 281.4 605.15 281.4 604.4 281.95 603.85 282.45 603.35 283.2 603.35 283.95 603.35 284.5 603.85 285 604.4 285 605.15 M284.75 628 L285 629 Q285 629.7 284.5 630.25 283.95 630.8 283.2 630.8 282.45 630.8 281.95 630.25 281.4 629.7 281.4 629 281.4 628.2 281.95 627.75 L284.75 628"/> + <path stroke="none" fill="#DFE1EE" d="M302.9 612.95 L303.25 613.75 303.25 621.1 300.85 621.1 300.85 613.75 Q300.9 613.3 301.2 613 301.6 612.65 302.05 612.65 302.55 612.6 302.9 612.95"/> + <path stroke="none" fill="#D0D3E5" d="M302.9 612.95 Q302.55 612.6 302.05 612.65 301.6 612.65 301.2 613 300.9 613.3 300.85 613.75 L300.85 621.1 303.25 621.1 303.25 613.75 302.9 612.95 M253.6 599.2 L251.35 590.7 254.25 590.5 256.7 599.6 259.2 590.3 262.2 590.25 259.85 599 258.75 603.25 258.2 605.2 260.8 614.95 261.1 616.05 261.7 618.2 258.7 618.2 258.05 615.85 257.8 614.75 256.7 610.75 255.65 614.6 255.4 615.65 254.7 618.2 251.75 618.2 252.5 615.4 252.75 614.4 255.2 605.2 253.6 599.2 M283.5 591.7 L281.8 597.95 281.3 599.9 279.85 605.2 283.35 618.2 280.35 618.2 278.5 611.35 278.35 610.75 276.95 616.05 276.65 617.2 276.35 618.2 273.4 618.2 273.7 617 274 615.85 276.85 605.2 276.2 602.7 275.05 598.45 273 590.65 276.05 590.9 278.35 599.6 280.55 591.4 281.2 591.45 283.5 591.7 M299.9 614.4 L299.9 613.75 Q299.9 612.9 300.5 612.3 301.15 611.7 302 611.7 302.85 611.7 303.45 612.3 304.05 612.9 304.05 613.75 L304.05 617.3 304.05 624.65 304.05 628.3 Q304.05 629.15 303.45 629.75 302.85 630.4 302 630.4 301.15 630.4 300.5 629.75 299.9 629.15 299.9 628.3 L299.9 627.55 299.9 614.4"/> + <path stroke="none" fill="#B1B4C9" d="M275.05 598.45 Q274.7 598.5 274.35 598.7 L273.15 599.25 Q270.15 600.45 266 600.25 262.5 600.1 259.85 599 L262.2 590.25 273 590.65 275.05 598.45 M276.05 590.9 L280.55 591.4 278.35 599.6 276.05 590.9 M272.1 597.55 L272.4 597.4 272.5 597.4 272.7 597.3 271.45 592.55 263.75 592.25 262.3 597.7 266.1 598.25 Q269.55 598.4 272.1 597.55 M254.25 590.5 L259.2 590.3 256.7 599.6 254.25 590.5"/> + <path stroke="none" fill="#989AA7" d="M280.35 618.2 L279 618.2 278.95 617.35 278.9 616.15 278.5 611.35 280.35 618.2"/> + <path stroke="none" fill="#F4F4F4" d="M247.8 638.55 L247.4 639.15 Q246.85 639.75 246 639.75 245.15 639.75 244.55 639.15 244 638.5 244 637.7 L244 637.5 246 638.1 247.8 638.55 M279.65 641.5 L279.85 642.25 279.8 642.65 279.6 643.25 279.4 643.45 Q278.9 643.9 278.2 643.9 277.55 643.9 277.05 643.45 L276.85 643.2 276.6 642.7 276.6 642.65 276.55 642.25 Q276.55 641.8 276.8 641.45 L276.95 641.25 277.05 641.1 Q277.55 640.6 278.2 640.6 278.9 640.6 279.4 641.1 L279.65 641.5"/> + <path stroke="none" fill="#C24040" d="M130.05 609.75 L129.7 609.8 Q127.65 610.1 126.15 609.3 124.55 608.4 124.55 606.9 124.55 606.15 124.95 605.5 125.35 604.8 126.15 604.25 127.7 603.15 129.8 603.15 L141.7 603.1 Q142.75 603.1 143.45 603.8 144.1 604.45 144.05 605.45 144.05 606.45 143.3 607.2 142.55 608 141.45 608.15 L130.05 609.75 M151.35 590.7 L148.5 590.95 Q146.4 590.85 144.9 589.3 L144.3 588.6 Q143.35 586.65 143.85 585.05 144.2 584.2 144.9 583.5 146.4 582 148.5 582 L186.7 582 Q188.8 582 190.3 583.5 191.8 585 191.8 587.1 191.8 589.2 190.3 590.7 188.8 592.2 186.7 592 L183.5 591.7 181.2 591.45 180.55 591.4 176.05 590.9 173 590.65 162.2 590.25 159.2 590.3 154.25 590.5 151.35 590.7 M162.4 618.2 L163.9 618.2 173.4 618.2 176.35 618.2 179 618.2 180.35 618.2 183.35 618.2 186.7 618.2 Q188.8 618.2 190.3 619.7 191.8 621.2 191.8 623.3 191.8 625.4 190.3 626.9 188.8 628.4 186.7 628.2 L184.75 628 181.95 627.75 181.2 627.65 178.85 627.4 158.35 626.55 155.95 626.6 148.5 627.15 Q146.4 627.05 144.9 625.5 L144.3 624.8 Q143.35 622.85 143.85 621.25 144.2 620.4 144.9 619.7 146.4 618.2 148.5 618.2 L151.75 618.2 154.7 618.2 158.7 618.2 161.7 618.2 162.4 618.2 M204.05 617.3 Q205.4 619 205.4 620.95 205.4 622.95 204.05 624.65 L204.05 617.3 M199.9 627.55 L198.25 628.1 197.9 628.2 197.55 628.3 197.3 628.3 Q198 623.55 197.7 618.75 L197.15 613.65 197.3 613.6 197.55 613.65 197.9 613.75 198.25 613.85 199.9 614.4 199.9 627.55"/> + <path stroke="none" fill="#A63333" d="M139.05 636.85 L138.75 636.4 Q138.5 635.9 138.6 635.3 L138.75 634.3 138.8 634.25 Q139.65 631.05 142.5 629.4 L143.1 629.05 142.65 628.35 Q138.7 621.2 133.25 615.5 L133.2 615.45 132.35 614.6 129.4 611.85 Q127 612.05 125.2 611.1 L125.2 611.05 Q122.45 609.5 122.55 606.9 L122.7 605.8 Q121.75 604.45 121.1 603 L121.1 602.95 120.3 600.45 120.25 600.4 Q119.4 596.65 121.4 594.3 122.85 592.4 126.15 591.55 L126.2 591.55 Q135.3 589.15 143.4 597.5 L151 597.25 149.85 592.85 148.7 592.95 148.4 592.95 Q145.5 592.8 143.5 590.7 L143.5 590.75 142.7 589.8 142.5 589.5 Q141.15 586.7 141.95 584.45 L142 584.3 Q142.5 583.1 143.5 582.1 145.55 580 148.5 580 L186.7 580 Q189.65 580 191.75 582.1 193.8 584.15 193.8 587.1 193.8 590.05 191.75 592.15 189.55 594.3 186.5 594 L184.95 593.85 183.85 598.05 181.8 597.95 183.5 591.7 186.7 592 Q188.8 592.2 190.3 590.7 191.8 589.2 191.8 587.1 191.8 585 190.3 583.5 188.8 582 186.7 582 L148.5 582 Q146.4 582 144.9 583.5 144.2 584.2 143.85 585.05 143.35 586.65 144.3 588.6 L144.9 589.3 Q146.4 590.85 148.5 590.95 L151.35 590.7 153.6 599.2 142.55 599.55 Q135.1 591.4 126.65 593.5 124.1 594.15 122.95 595.55 121.6 597.25 122.2 599.95 L122.95 602.2 Q123.7 603.95 124.95 605.5 124.55 606.15 124.55 606.9 124.55 608.4 126.15 609.3 127.65 610.1 129.7 609.8 L130.05 609.75 133.75 613.15 134.65 614.05 Q140.3 619.95 144.4 627.35 L146.25 630.3 Q144.8 630.3 143.5 631.1 141.35 632.35 140.7 634.75 L140.55 635.55 140.7 635.55 141.25 636.1 139.05 636.85 M168 644.35 Q163.95 643.65 159.8 642.45 156.45 641.5 153.6 639.85 L152.85 639.4 152.8 639.4 152.65 640.4 150.95 638.75 151.85 638.55 152 638.6 152.25 637.85 152.45 636.7 Q156 639.25 160.35 640.5 164.2 641.6 168 642.3 L168 644.35"/> + <path stroke="none" fill="#B1B4C9" d="M154.25 590.5 L159.2 590.3 156.7 599.6 154.25 590.5 M162.2 590.25 L173 590.65 175.05 598.45 174.35 598.7 173.15 599.25 Q170.15 600.45 166 600.25 162.5 600.1 159.85 599 L162.2 590.25 M176.05 590.9 L180.55 591.4 178.35 599.6 176.05 590.9 M172.5 597.4 L172.7 597.3 171.45 592.55 163.75 592.25 162.3 597.7 166.1 598.25 Q169.55 598.4 172.1 597.55 L172.4 597.4 172.5 597.4"/> + <path stroke="none" fill="#D24343" d="M141.25 636.1 L140.7 635.55 140.55 635.55 140.7 634.75 Q141.35 632.35 143.5 631.1 144.8 630.3 146.25 630.3 L144.4 627.35 Q140.3 619.95 134.65 614.05 L152.5 615.4 151.75 618.2 148.5 618.2 Q146.4 618.2 144.9 619.7 144.2 620.4 143.85 621.25 143.35 622.85 144.3 624.8 L144.9 625.5 Q146.4 627.05 148.5 627.15 L155.95 626.6 151.3 632.75 151.65 633.25 152.4 635.4 158.35 626.55 178.85 627.4 178.2 634 Q174.8 634 172.35 636.4 169.95 638.85 169.95 642.25 L169.95 642.6 168 642.3 Q164.2 641.6 160.35 640.5 156 639.25 152.45 636.7 L152.25 637.85 152 638.6 151.85 638.55 150.95 638.75 150.15 638.75 147.8 638.55 146 638.1 144 637.5 142 636.6 141.25 636.1 M133.75 613.15 L130.05 609.75 141.45 608.15 Q142.55 608 143.3 607.2 144.05 606.45 144.05 605.45 144.1 604.45 143.45 603.8 142.75 603.1 141.7 603.1 L129.8 603.15 Q127.7 603.15 126.15 604.25 125.35 604.8 124.95 605.5 123.7 603.95 122.95 602.2 L122.2 599.95 Q121.6 597.25 122.95 595.55 124.1 594.15 126.65 593.5 135.1 591.4 142.55 599.55 L153.6 599.2 155.2 605.2 152.75 614.4 133.75 613.15 M160.8 614.95 L158.2 605.2 158.75 603.25 Q161.8 604.4 165.8 604.6 171.05 604.85 174.8 603.3 L176.2 602.7 176.85 605.2 174 615.85 160.8 614.95 M161.1 616.05 L163.85 616.25 162.4 618.2 161.7 618.2 161.1 616.05 M163.9 618.2 L165.1 616.35 173.7 617 173.4 618.2 163.9 618.2 M157.8 614.75 L155.65 614.6 156.7 610.75 157.8 614.75 M155.4 615.65 L158.05 615.85 158.7 618.2 154.7 618.2 155.4 615.65 M179 618.2 L176.35 618.2 176.65 617.2 178.95 617.35 179 618.2 M155.75 635 Q155.75 635.7 156.2 636.2 L156.3 636.3 Q156.85 636.85 157.55 636.85 158.25 636.85 158.75 636.35 L158.85 636.3 Q159.35 635.75 159.35 635 159.35 634.25 158.85 633.75 158.35 633.2 157.55 633.2 156.85 633.2 156.3 633.75 155.8 634.2 155.8 634.9 L155.75 635 M176.95 616.05 L178.35 610.75 178.5 611.35 178.9 616.15 176.95 616.05"/> + <path stroke="none" fill="#D0D3E5" d="M176.95 616.05 L176.65 617.2 176.35 618.2 173.4 618.2 173.7 617 174 615.85 176.85 605.2 176.2 602.7 175.05 598.45 173 590.65 176.05 590.9 178.35 599.6 180.55 591.4 181.2 591.45 183.5 591.7 181.8 597.95 181.3 599.9 179.85 605.2 183.35 618.2 180.35 618.2 178.5 611.35 178.35 610.75 176.95 616.05 M153.6 599.2 L151.35 590.7 154.25 590.5 156.7 599.6 159.2 590.3 162.2 590.25 159.85 599 158.75 603.25 158.2 605.2 160.8 614.95 161.1 616.05 161.7 618.2 158.7 618.2 158.05 615.85 157.8 614.75 156.7 610.75 155.65 614.6 155.4 615.65 154.7 618.2 151.75 618.2 152.5 615.4 152.75 614.4 155.2 605.2 153.6 599.2 M202.9 607.2 Q202.55 606.85 202.05 606.9 201.6 606.9 201.2 607.25 200.85 607.6 200.85 608.1 L200.85 621.1 203.25 621.1 203.25 608.05 Q203.25 607.55 202.9 607.2 M199.9 614.4 L199.9 608 Q199.9 607.15 200.5 606.55 201.15 605.95 202 605.95 202.85 605.95 203.45 606.55 204.05 607.15 204.05 608 L204.05 617.3 204.05 624.65 204.05 635.15 Q204.05 636 203.45 636.6 202.85 637.25 202 637.25 201.15 637.25 200.5 636.6 199.9 636 199.9 635.15 L199.9 627.55 199.9 614.4"/> + <path stroke="none" fill="#3D3D3D" d="M176.2 602.7 L174.8 603.3 Q171.05 604.85 165.8 604.6 161.8 604.4 158.75 603.25 L159.85 599 Q162.5 600.1 166 600.25 170.15 600.45 173.15 599.25 L174.35 598.7 175.05 598.45 176.2 602.7 M169.95 642.6 L169.95 642.25 Q169.95 638.85 172.35 636.4 174.8 634 178.2 634 181.65 634 184.05 636.4 186.5 638.85 186.5 642.25 L186.5 642.7 Q186.35 645.85 184.05 648.1 181.65 650.55 178.2 650.55 174.8 650.55 172.35 648.1 170.05 645.8 169.95 642.6 M144 637.5 L144 637.7 Q144 638.5 144.55 639.15 145.15 639.75 146 639.75 146.85 639.75 147.4 639.15 L147.8 638.55 150.15 638.75 150.95 638.75 Q150.6 640.15 149.55 641.25 148.1 642.75 146 642.75 143.9 642.75 142.45 641.25 141 639.8 141 637.7 141 636.85 141.25 636.1 L142 636.6 144 637.5 M179.4 641.1 Q178.9 640.6 178.2 640.6 177.55 640.6 177.05 641.1 L176.95 641.25 176.8 641.45 Q176.55 641.8 176.55 642.25 L176.6 642.65 176.6 642.7 176.85 643.2 177.05 643.45 Q177.55 643.9 178.2 643.9 178.9 643.9 179.4 643.45 L179.6 643.25 179.8 642.65 179.85 642.25 179.65 641.5 179.4 641.1"/> + <path stroke="none" fill="#E94F4F" d="M134.65 614.05 L133.75 613.15 152.75 614.4 152.5 615.4 134.65 614.05 M160.8 614.95 L174 615.85 173.7 617 165.1 616.35 163.9 618.2 162.4 618.2 163.85 616.25 161.1 616.05 160.8 614.95 M157.8 614.75 L158.05 615.85 155.4 615.65 155.65 614.6 157.8 614.75 M158.35 626.55 L152.4 635.4 151.65 633.25 151.3 632.75 155.95 626.6 158.35 626.55 M155.75 635 L155.8 634.9 Q155.8 634.2 156.3 633.75 156.85 633.2 157.55 633.2 158.35 633.2 158.85 633.75 159.35 634.25 159.35 635 159.35 635.75 158.85 636.3 L158.75 636.35 Q158.25 636.85 157.55 636.85 156.85 636.85 156.3 636.3 L156.2 636.2 Q155.75 635.7 155.75 635 M176.95 616.05 L178.9 616.15 178.95 617.35 176.65 617.2 176.95 616.05"/> + <path stroke="none" fill="#1C1C1C" d="M188.3 644.45 Q187.7 647.3 185.5 649.5 L185.45 649.55 Q182.45 652.55 178.2 652.55 173.95 652.55 170.95 649.55 168.8 647.4 168.2 644.6 L168.15 644.35 168 644.35 168 642.3 169.95 642.6 Q170.05 645.8 172.35 648.1 174.8 650.55 178.2 650.55 181.65 650.55 184.05 648.1 186.35 645.85 186.5 642.7 L188.55 642.4 188.3 644.45 M152.65 640.4 L152.5 640.5 152.45 640.55 151 642.65 Q148.95 644.75 146 644.75 143.05 644.75 141.05 642.7 L141 642.65 Q139 640.6 139 637.7 L139.05 636.85 141.25 636.1 Q141 636.85 141 637.7 141 639.8 142.45 641.25 143.9 642.75 146 642.75 148.1 642.75 149.55 641.25 150.6 640.15 150.95 638.75 L152.65 640.4"/> + <path stroke="none" fill="#F4F4F4" d="M147.8 638.55 L147.4 639.15 Q146.85 639.75 146 639.75 145.15 639.75 144.55 639.15 144 638.5 144 637.7 L144 637.5 146 638.1 147.8 638.55 M179.4 641.1 L179.65 641.5 179.85 642.25 179.8 642.65 179.6 643.25 179.4 643.45 Q178.9 643.9 178.2 643.9 177.55 643.9 177.05 643.45 L176.85 643.2 176.6 642.7 176.6 642.65 176.55 642.25 Q176.55 641.8 176.8 641.45 L176.95 641.25 177.05 641.1 Q177.55 640.6 178.2 640.6 178.9 640.6 179.4 641.1"/> + <path stroke="none" fill="#8A8B98" d="M183.85 598.05 L184.45 598.1 189.95 598.55 190.05 598.6 190.75 598.7 190.8 598.7 Q194.4 599.15 196.2 602.65 L196.3 602.9 196.35 603.1 197.75 607.4 197.9 607.95 Q197.9 606.3 199.1 605.15 L199.15 605.1 Q200.4 603.95 202 603.95 203.7 603.95 204.9 605.15 206.05 606.3 206.05 608 L206.05 616.65 Q207.4 618.65 207.4 620.95 207.4 623.3 206.05 625.35 L206.05 635.15 Q206.05 636.85 204.9 638.05 L204.95 637.95 Q203.7 639.25 202 639.25 200.35 639.3 199.1 638.05 197.95 636.9 197.9 635.25 L197.9 634.7 196.4 639.15 195.9 640.2 Q194.1 643.15 190.95 643.95 L190.85 643.95 190.35 644.05 190.35 644.1 188.3 644.45 188.55 642.4 189.95 642.1 190.45 642 Q192.95 641.35 194.35 638.9 L194.4 638.8 Q196.45 633.6 197.3 628.3 L197.55 628.3 197.9 628.2 198.25 628.1 199.9 627.55 199.9 635.15 Q199.9 636 200.5 636.6 201.15 637.25 202 637.25 202.85 637.25 203.45 636.6 204.05 636 204.05 635.15 L204.05 624.65 Q205.4 622.95 205.4 620.95 205.4 619 204.05 617.3 L204.05 608 Q204.05 607.15 203.45 606.55 202.85 605.95 202 605.95 201.15 605.95 200.5 606.55 199.9 607.15 199.9 608 L199.9 614.4 198.25 613.85 197.9 613.75 197.55 613.65 197.3 613.6 197.15 613.65 Q196.3 608.65 194.4 603.6 L194.4 603.55 Q193.1 601 190.5 600.65 L189.75 600.55 181.3 599.9 181.8 597.95 183.85 598.05"/> + <path stroke="none" fill="#DFE1EE" d="M202.9 607.2 Q203.25 607.55 203.25 608.05 L203.25 621.1 200.85 621.1 200.85 608.1 Q200.85 607.6 201.2 607.25 201.6 606.9 202.05 606.9 202.55 606.85 202.9 607.2"/> + <path stroke="none" fill="#B2B4C2" d="M178.85 627.4 L181.2 627.65 181.95 627.75 Q181.4 628.2 181.4 629 181.4 629.7 181.95 630.25 182.45 630.8 183.2 630.8 183.95 630.8 184.5 630.25 185 629.7 185 629 L184.75 628 186.7 628.2 Q188.8 628.4 190.3 626.9 191.8 625.4 191.8 623.3 191.8 621.2 190.3 619.7 188.8 618.2 186.7 618.2 L183.35 618.2 179.85 605.2 181.3 599.9 189.75 600.55 190.5 600.65 Q193.1 601 194.4 603.55 L194.4 603.6 Q196.3 608.65 197.15 613.65 L197.7 618.75 Q198 623.55 197.3 628.3 196.45 633.6 194.4 638.8 L194.35 638.9 Q192.95 641.35 190.45 642 L189.95 642.1 188.55 642.4 186.5 642.7 186.5 642.25 Q186.5 638.85 184.05 636.4 181.65 634 178.2 634 L178.85 627.4 M185 605.15 Q185 604.4 184.5 603.85 183.95 603.35 183.2 603.35 182.45 603.35 181.95 603.85 181.4 604.4 181.4 605.15 181.4 605.9 181.95 606.4 182.45 606.95 183.2 606.95 183.95 606.95 184.5 606.4 185 605.9 185 605.15"/> + <path stroke="none" fill="#9698A6" d="M185 605.15 Q185 605.9 184.5 606.4 183.95 606.95 183.2 606.95 182.45 606.95 181.95 606.4 181.4 605.9 181.4 605.15 181.4 604.4 181.95 603.85 182.45 603.35 183.2 603.35 183.95 603.35 184.5 603.85 185 604.4 185 605.15 M181.95 627.75 L184.75 628 185 629 Q185 629.7 184.5 630.25 183.95 630.8 183.2 630.8 182.45 630.8 181.95 630.25 181.4 629.7 181.4 629 181.4 628.2 181.95 627.75"/> + <path stroke="none" fill="#989AA7" d="M180.35 618.2 L179 618.2 178.95 617.35 178.9 616.15 178.5 611.35 180.35 618.2"/> + <path stroke="none" fill="#C24040" d="M30.05 609.75 L29.7 609.8 Q27.65 610.1 26.15 609.3 24.55 608.4 24.55 606.9 24.55 606.15 24.95 605.5 25.35 604.8 26.15 604.25 27.7 603.15 29.8 603.15 L41.7 603.1 Q42.75 603.1 43.45 603.8 44.1 604.45 44.05 605.45 44.05 606.45 43.3 607.2 42.55 608 41.45 608.15 L30.05 609.75 M51.35 590.7 L48.5 590.95 Q46.4 590.85 44.9 589.3 L44.3 588.6 Q43.35 586.65 43.85 585.05 44.2 584.2 44.9 583.5 46.4 582 48.5 582 L86.7 582 Q88.8 582 90.3 583.5 91.8 585 91.8 587.1 91.8 589.2 90.3 590.7 88.8 592.2 86.7 592 L83.5 591.7 81.2 591.45 80.55 591.4 76.05 590.9 73 590.65 62.2 590.25 59.2 590.3 54.25 590.5 51.35 590.7 M80.35 618.2 L83.35 618.2 86.7 618.2 Q88.8 618.2 90.3 619.7 91.8 621.2 91.8 623.3 91.8 625.4 90.3 626.9 88.8 628.4 86.7 628.2 L84.75 628 81.95 627.75 81.2 627.65 78.85 627.4 58.35 626.55 55.95 626.6 48.5 627.15 Q46.4 627.05 44.9 625.5 L44.3 624.8 Q43.35 622.85 43.85 621.25 44.2 620.4 44.9 619.7 46.4 618.2 48.5 618.2 L51.75 618.2 54.7 618.2 58.7 618.2 61.7 618.2 62.4 618.2 63.9 618.2 73.4 618.2 76.35 618.2 79 618.2 80.35 618.2 M104.05 617.3 Q105.4 619 105.4 620.95 105.4 622.95 104.05 624.65 L104.05 617.3 M99.9 627.55 L98.25 628.1 97.55 628.3 97.3 628.3 Q98 623.55 97.7 618.75 L97.15 613.65 97.3 613.6 97.55 613.65 98.25 613.85 99.9 614.4 99.9 627.55"/> + <path stroke="none" fill="#A63333" d="M39.05 636.85 L38.75 636.4 Q38.5 635.9 38.6 635.3 L38.75 634.3 38.8 634.25 Q39.65 631.05 42.5 629.4 L43.1 629.05 42.65 628.35 Q38.7 621.2 33.25 615.5 L33.2 615.45 32.35 614.6 29.4 611.85 Q27 612.05 25.2 611.1 L25.2 611.05 Q22.45 609.5 22.55 606.9 L22.7 605.8 Q21.75 604.45 21.1 603 L21.1 602.95 20.3 600.45 20.25 600.4 Q19.4 596.65 21.4 594.3 22.85 592.4 26.15 591.55 L26.2 591.55 Q35.3 589.15 43.4 597.5 L51 597.25 49.85 592.85 48.7 592.95 48.4 592.95 Q45.5 592.8 43.5 590.7 L43.5 590.75 42.7 589.8 42.5 589.5 Q41.15 586.7 41.95 584.45 L42 584.3 Q42.5 583.1 43.5 582.1 45.55 580 48.5 580 L86.7 580 Q89.65 580 91.75 582.1 93.8 584.15 93.8 587.1 93.8 590.05 91.75 592.15 89.55 594.3 86.5 594 L84.95 593.85 83.85 598.05 81.8 597.95 83.5 591.7 86.7 592 Q88.8 592.2 90.3 590.7 91.8 589.2 91.8 587.1 91.8 585 90.3 583.5 88.8 582 86.7 582 L48.5 582 Q46.4 582 44.9 583.5 44.2 584.2 43.85 585.05 43.35 586.65 44.3 588.6 L44.9 589.3 Q46.4 590.85 48.5 590.95 L51.35 590.7 53.6 599.2 42.55 599.55 Q35.1 591.4 26.65 593.5 24.1 594.15 22.95 595.55 21.6 597.25 22.2 599.95 L22.95 602.2 Q23.7 603.95 24.95 605.5 24.55 606.15 24.55 606.9 24.55 608.4 26.15 609.3 27.65 610.1 29.7 609.8 L30.05 609.75 33.75 613.15 34.65 614.05 Q40.3 619.95 44.4 627.35 45.25 628.9 46.25 630.3 44.8 630.3 43.5 631.1 41.35 632.35 40.7 634.75 L40.55 635.55 40.7 635.55 41.25 636.1 39.05 636.85 M68 644.35 Q63.95 643.65 59.8 642.45 56.45 641.5 53.6 639.85 L52.85 639.4 52.8 639.4 52.65 640.4 50.95 638.75 51.85 638.55 52 638.6 52.25 637.85 52.45 636.7 Q56 639.25 60.35 640.5 64.2 641.6 68 642.3 L68 644.35"/> + <path stroke="none" fill="#B1B4C9" d="M76.05 590.9 L80.55 591.4 78.35 599.6 76.05 590.9 M72.7 597.3 L71.45 592.55 63.75 592.25 62.3 597.7 66.1 598.25 Q69.55 598.4 72.1 597.55 L72.4 597.4 72.5 597.4 72.7 597.3 M75.05 598.45 L74.35 598.7 73.15 599.25 Q70.15 600.45 66 600.25 62.5 600.1 59.85 599 L62.2 590.25 73 590.65 75.05 598.45 M54.25 590.5 L59.2 590.3 56.7 599.6 54.25 590.5"/> + <path stroke="none" fill="#3D3D3D" d="M59.85 599 Q62.5 600.1 66 600.25 70.15 600.45 73.15 599.25 L74.35 598.7 75.05 598.45 76.2 602.7 74.8 603.3 Q71.05 604.85 65.8 604.6 61.8 604.4 58.75 603.25 L59.85 599 M69.95 642.6 L69.95 642.25 Q69.95 638.85 72.35 636.4 74.8 634 78.2 634 81.65 634 84.05 636.4 86.5 638.85 86.5 642.25 L86.5 642.7 Q86.35 645.85 84.05 648.1 81.65 650.55 78.2 650.55 74.8 650.55 72.35 648.1 70.05 645.8 69.95 642.6 M78.2 640.6 Q77.55 640.6 77.05 641.1 L76.95 641.25 76.8 641.45 Q76.55 641.8 76.55 642.25 L76.6 642.65 76.6 642.7 76.85 643.2 77.05 643.45 Q77.55 643.9 78.2 643.9 78.9 643.9 79.4 643.45 L79.6 643.25 79.8 642.65 79.85 642.25 79.65 641.5 79.4 641.1 Q78.9 640.6 78.2 640.6 M44 637.5 L44 637.7 Q44 638.5 44.55 639.15 45.15 639.75 46 639.75 46.85 639.75 47.4 639.15 L47.8 638.55 50.15 638.75 50.95 638.75 Q50.6 640.15 49.55 641.25 48.1 642.75 46 642.75 43.9 642.75 42.45 641.25 41 639.8 41 637.7 41 636.85 41.25 636.1 L42 636.6 44 637.5"/> + <path stroke="none" fill="#D0D3E5" d="M53.6 599.2 L51.35 590.7 54.25 590.5 56.7 599.6 59.2 590.3 62.2 590.25 59.85 599 58.75 603.25 58.2 605.2 60.8 614.95 61.1 616.05 61.7 618.2 58.7 618.2 58.05 615.85 57.8 614.75 56.7 610.75 55.65 614.6 55.4 615.65 54.7 618.2 51.75 618.2 52.5 615.4 52.75 614.4 55.2 605.2 53.6 599.2 M83.5 591.7 L81.8 597.95 81.3 599.9 79.85 605.2 83.35 618.2 80.35 618.2 78.5 611.35 78.35 610.75 76.95 616.05 76.65 617.2 76.35 618.2 73.4 618.2 73.7 617 74 615.85 76.85 605.2 76.2 602.7 75.05 598.45 73 590.65 76.05 590.9 78.35 599.6 80.55 591.4 81.2 591.45 83.5 591.7 M99.9 614.4 L99.9 601 Q99.9 600.15 100.5 599.55 101.15 598.95 102 598.95 102.85 598.95 103.45 599.55 104.05 600.15 104.05 601 L104.05 617.3 104.05 624.65 104.05 642.15 Q104.05 643 103.45 643.6 102.85 644.25 102 644.25 101.15 644.25 100.5 643.6 99.9 643 99.9 642.15 L99.9 627.55 99.9 614.4"/> + <path stroke="none" fill="#D24343" d="M41.25 636.1 L40.7 635.55 40.55 635.55 40.7 634.75 Q41.35 632.35 43.5 631.1 44.8 630.3 46.25 630.3 45.25 628.9 44.4 627.35 40.3 619.95 34.65 614.05 L52.5 615.4 51.75 618.2 48.5 618.2 Q46.4 618.2 44.9 619.7 44.2 620.4 43.85 621.25 43.35 622.85 44.3 624.8 L44.9 625.5 Q46.4 627.05 48.5 627.15 L55.95 626.6 51.3 632.75 51.65 633.25 Q52.25 634.3 52.4 635.4 L58.35 626.55 78.85 627.4 78.2 634 Q74.8 634 72.35 636.4 69.95 638.85 69.95 642.25 L69.95 642.6 68 642.3 Q64.2 641.6 60.35 640.5 56 639.25 52.45 636.7 L52.25 637.85 52 638.6 51.85 638.55 50.95 638.75 50.15 638.75 47.8 638.55 46 638.1 44 637.5 42 636.6 41.25 636.1 M33.75 613.15 L30.05 609.75 41.45 608.15 Q42.55 608 43.3 607.2 44.05 606.45 44.05 605.45 44.1 604.45 43.45 603.8 42.75 603.1 41.7 603.1 L29.8 603.15 Q27.7 603.15 26.15 604.25 25.35 604.8 24.95 605.5 23.7 603.95 22.95 602.2 L22.2 599.95 Q21.6 597.25 22.95 595.55 24.1 594.15 26.65 593.5 35.1 591.4 42.55 599.55 L53.6 599.2 55.2 605.2 52.75 614.4 33.75 613.15 M58.75 603.25 Q61.8 604.4 65.8 604.6 71.05 604.85 74.8 603.3 L76.2 602.7 76.85 605.2 74 615.85 60.8 614.95 58.2 605.2 58.75 603.25 M76.95 616.05 L78.35 610.75 78.5 611.35 78.9 616.15 76.95 616.05 M73.7 617 L73.4 618.2 63.9 618.2 65.1 616.35 73.7 617 M76.35 618.2 L76.65 617.2 78.95 617.35 79 618.2 76.35 618.2 M57.8 614.75 L55.65 614.6 56.7 610.75 57.8 614.75 M55.4 615.65 L58.05 615.85 58.7 618.2 54.7 618.2 55.4 615.65 M61.7 618.2 L61.1 616.05 63.85 616.25 62.4 618.2 61.7 618.2 M55.8 634.9 L55.75 635 Q55.75 635.7 56.2 636.2 L56.3 636.3 Q56.85 636.85 57.55 636.85 58.25 636.85 58.75 636.35 L58.85 636.3 Q59.35 635.75 59.35 635 59.35 634.25 58.85 633.75 58.35 633.2 57.55 633.2 56.85 633.2 56.3 633.75 55.8 634.2 55.8 634.9"/> + <path stroke="none" fill="#E94F4F" d="M55.8 634.9 Q55.8 634.2 56.3 633.75 56.85 633.2 57.55 633.2 58.35 633.2 58.85 633.75 59.35 634.25 59.35 635 59.35 635.75 58.85 636.3 L58.75 636.35 Q58.25 636.85 57.55 636.85 56.85 636.85 56.3 636.3 L56.2 636.2 Q55.75 635.7 55.75 635 L55.8 634.9 M34.65 614.05 L33.75 613.15 52.75 614.4 52.5 615.4 34.65 614.05 M76.95 616.05 L78.9 616.15 78.95 617.35 76.65 617.2 76.95 616.05 M60.8 614.95 L74 615.85 73.7 617 65.1 616.35 63.9 618.2 62.4 618.2 63.85 616.25 61.1 616.05 60.8 614.95 M57.8 614.75 L58.05 615.85 55.4 615.65 55.65 614.6 57.8 614.75 M55.95 626.6 L58.35 626.55 52.4 635.4 Q52.25 634.3 51.65 633.25 L51.3 632.75 55.95 626.6"/> + <path stroke="none" fill="#989AA7" d="M78.9 616.15 L78.5 611.35 80.35 618.2 79 618.2 78.95 617.35 78.9 616.15"/> + <path stroke="none" fill="#B2B4C2" d="M83.35 618.2 L79.85 605.2 81.3 599.9 89.75 600.55 90.5 600.65 Q93.1 601 94.4 603.55 L94.4 603.6 Q96.3 608.65 97.15 613.65 L97.7 618.75 Q98 623.55 97.3 628.3 96.45 633.6 94.4 638.8 L94.35 638.9 Q92.95 641.35 90.45 642 L89.95 642.1 88.55 642.4 86.5 642.7 86.5 642.25 Q86.5 638.85 84.05 636.4 81.65 634 78.2 634 L78.85 627.4 81.2 627.65 81.95 627.75 Q81.4 628.2 81.4 629 81.4 629.7 81.95 630.25 82.45 630.8 83.2 630.8 83.95 630.8 84.5 630.25 85 629.7 85 629 L84.75 628 86.7 628.2 Q88.8 628.4 90.3 626.9 91.8 625.4 91.8 623.3 91.8 621.2 90.3 619.7 88.8 618.2 86.7 618.2 L83.35 618.2 M84.5 603.85 Q83.95 603.35 83.2 603.35 82.45 603.35 81.95 603.85 81.4 604.4 81.4 605.15 81.4 605.9 81.95 606.4 82.45 606.95 83.2 606.95 83.95 606.95 84.5 606.4 85 605.9 85 605.15 85 604.4 84.5 603.85"/> + <path stroke="none" fill="#1C1C1C" d="M88.3 644.45 Q87.7 647.3 85.5 649.5 L85.45 649.55 Q82.45 652.55 78.2 652.55 73.95 652.55 70.95 649.55 68.8 647.4 68.2 644.6 L68.15 644.35 68 644.35 68 642.3 69.95 642.6 Q70.05 645.8 72.35 648.1 74.8 650.55 78.2 650.55 81.65 650.55 84.05 648.1 86.35 645.85 86.5 642.7 L88.55 642.4 88.3 644.45 M52.65 640.4 L52.5 640.5 52.45 640.55 51 642.65 Q48.95 644.75 46 644.75 43.05 644.75 41.05 642.7 L41 642.65 Q39 640.6 39 637.7 L39.05 636.85 41.25 636.1 Q41 636.85 41 637.7 41 639.8 42.45 641.25 43.9 642.75 46 642.75 48.1 642.75 49.55 641.25 50.6 640.15 50.95 638.75 L52.65 640.4"/> + <path stroke="none" fill="#F4F4F4" d="M78.2 640.6 Q78.9 640.6 79.4 641.1 L79.65 641.5 79.85 642.25 79.8 642.65 79.6 643.25 79.4 643.45 Q78.9 643.9 78.2 643.9 77.55 643.9 77.05 643.45 L76.85 643.2 76.6 642.7 76.6 642.65 76.55 642.25 Q76.55 641.8 76.8 641.45 L76.95 641.25 77.05 641.1 Q77.55 640.6 78.2 640.6 M47.8 638.55 L47.4 639.15 Q46.85 639.75 46 639.75 45.15 639.75 44.55 639.15 44 638.5 44 637.7 L44 637.5 46 638.1 47.8 638.55"/> + <path stroke="none" fill="#8A8B98" d="M83.85 598.05 L84.45 598.1 89.95 598.55 90.05 598.6 90.75 598.7 90.8 598.7 Q94.4 599.15 96.2 602.65 L96.3 602.9 96.35 603.1 97.9 607.95 97.9 601 Q97.9 599.3 99.1 598.15 L99.15 598.1 Q100.4 596.95 102 596.95 103.7 596.95 104.9 598.15 106.05 599.3 106.05 601 L106.05 616.65 Q107.4 618.65 107.4 620.95 107.4 623.3 106.05 625.35 L106.05 642.15 Q106.05 643.85 104.9 645.05 L104.95 644.95 Q103.7 646.25 102 646.25 100.35 646.3 99.1 645.05 97.9 643.85 97.9 642.15 L97.9 634.7 96.4 639.15 95.9 640.2 Q94.1 643.15 90.95 643.95 L90.85 643.95 90.35 644.05 90.35 644.1 88.3 644.45 88.55 642.4 89.95 642.1 90.45 642 Q92.95 641.35 94.35 638.9 L94.4 638.8 Q96.45 633.6 97.3 628.3 L97.55 628.3 98.25 628.1 99.9 627.55 99.9 642.15 Q99.9 643 100.5 643.6 101.15 644.25 102 644.25 102.85 644.25 103.45 643.6 104.05 643 104.05 642.15 L104.05 624.65 Q105.4 622.95 105.4 620.95 105.4 619 104.05 617.3 L104.05 601 Q104.05 600.15 103.45 599.55 102.85 598.95 102 598.95 101.15 598.95 100.5 599.55 99.9 600.15 99.9 601 L99.9 614.4 98.25 613.85 97.55 613.65 97.3 613.6 97.15 613.65 Q96.3 608.65 94.4 603.6 L94.4 603.55 Q93.1 601 90.5 600.65 L89.75 600.55 81.3 599.9 81.8 597.95 83.85 598.05"/> + <path stroke="none" fill="#9698A6" d="M81.95 627.75 L84.75 628 85 629 Q85 629.7 84.5 630.25 83.95 630.8 83.2 630.8 82.45 630.8 81.95 630.25 81.4 629.7 81.4 629 81.4 628.2 81.95 627.75 M84.5 603.85 Q85 604.4 85 605.15 85 605.9 84.5 606.4 83.95 606.95 83.2 606.95 82.45 606.95 81.95 606.4 81.4 605.9 81.4 605.15 81.4 604.4 81.95 603.85 82.45 603.35 83.2 603.35 83.95 603.35 84.5 603.85"/> + <path stroke="none" fill="#DFE1EE" d="M103.25 601.05 L103.25 621.1 100.85 621.1 100.85 601.1 Q100.85 600.6 101.2 600.25 101.6 599.9 102.05 599.9 102.55 599.85 102.9 600.2 103.25 600.55 103.25 601.05"/> + <path stroke="none" fill="#79ABBD" d="M283.5 501.7 L286.7 502 Q288.8 502.2 290.3 500.7 291.8 499.2 291.8 497.1 291.8 495 290.3 493.5 288.8 492 286.7 492 L248.5 492 Q246.4 492 244.9 493.5 244.2 494.2 243.85 495.05 243.35 496.65 244.3 498.6 L244.9 499.3 Q246.4 500.85 248.5 500.95 L251.35 500.7 253.6 509.2 242.55 509.55 Q235.1 501.4 226.65 503.5 224.1 504.15 222.95 505.55 221.6 507.25 222.2 509.95 L222.95 512.2 Q223.7 513.95 224.95 515.5 224.55 516.15 224.55 516.9 224.55 518.4 226.15 519.3 227.65 520.1 229.7 519.8 L230.05 519.75 233.75 523.15 234.65 524.05 Q240.3 529.95 244.4 537.35 L246.25 540.3 Q244.8 540.3 243.5 541.1 241.35 542.35 240.7 544.75 L240.55 545.55 240.7 545.55 241.25 546.1 239.05 546.85 238.75 546.4 Q238.5 545.9 238.6 545.3 L238.75 544.3 238.8 544.25 Q239.65 541.05 242.5 539.4 L243.1 539.05 242.65 538.35 Q238.7 531.2 233.25 525.5 L233.2 525.45 232.35 524.6 229.4 521.85 Q227 522.05 225.2 521.1 L225.2 521.05 Q222.45 519.5 222.55 516.9 222.55 516.35 222.7 515.8 221.75 514.45 221.1 513 L221.1 512.95 220.3 510.45 220.25 510.4 Q219.4 506.65 221.4 504.3 222.85 502.4 226.15 501.55 L226.2 501.55 Q235.3 499.15 243.4 507.5 L251 507.25 249.85 502.85 248.7 502.95 248.4 502.95 Q245.5 502.8 243.5 500.7 L243.5 500.75 242.7 499.8 242.5 499.5 Q241.15 496.7 241.95 494.45 L242 494.3 Q242.5 493.1 243.5 492.1 245.55 490 248.5 490 L286.7 490 Q289.65 490 291.75 492.1 293.8 494.15 293.8 497.1 293.8 500.05 291.75 502.15 289.55 504.3 286.5 504 L284.95 503.85 283.85 508.05 281.8 507.95 283.5 501.7 M268 554.35 Q263.95 553.65 259.8 552.45 256.45 551.5 253.6 549.85 L252.85 549.4 252.8 549.4 252.65 550.4 250.95 548.75 251.85 548.55 252 548.6 252.25 547.85 252.45 546.7 Q256 549.25 260.35 550.5 L268 552.3 268 554.35"/> + <path stroke="none" fill="#9ECEE0" d="M251.35 500.7 L248.5 500.95 Q246.4 500.85 244.9 499.3 L244.3 498.6 Q243.35 496.65 243.85 495.05 244.2 494.2 244.9 493.5 246.4 492 248.5 492 L286.7 492 Q288.8 492 290.3 493.5 291.8 495 291.8 497.1 291.8 499.2 290.3 500.7 288.8 502.2 286.7 502 L283.5 501.7 281.2 501.45 280.55 501.4 276.05 500.9 273 500.65 262.2 500.25 259.2 500.3 254.25 500.5 251.35 500.7 M230.05 519.75 L229.7 519.8 Q227.65 520.1 226.15 519.3 224.55 518.4 224.55 516.9 224.55 516.15 224.95 515.5 225.35 514.8 226.15 514.25 227.7 513.15 229.8 513.15 L241.7 513.1 Q242.75 513.1 243.45 513.8 244.1 514.45 244.05 515.45 244.05 516.45 243.3 517.2 242.55 518 241.45 518.15 L230.05 519.75 M297.15 523.65 L297.3 523.6 297.55 523.65 297.9 523.75 297.9 523.85 298.25 523.85 299.9 524.4 299.9 537.55 298.25 538.1 297.9 538.2 297.9 538.15 297.55 538.25 297.3 538.25 Q298 533.5 297.7 528.75 L297.15 523.65 M304.05 527.3 Q305.4 529 305.4 530.95 305.4 532.95 304.05 534.65 L304.05 527.3 M283.35 528.2 L286.7 528.2 Q288.8 528.2 290.3 529.7 291.8 531.2 291.8 533.3 291.8 535.4 290.3 536.9 288.8 538.4 286.7 538.2 L284.75 538 281.95 537.75 281.2 537.65 278.85 537.4 258.35 536.55 255.95 536.6 248.5 537.15 Q246.4 537.05 244.9 535.5 L244.3 534.8 Q243.35 532.85 243.85 531.25 244.2 530.4 244.9 529.7 246.4 528.2 248.5 528.2 L251.75 528.2 254.7 528.2 258.7 528.2 261.7 528.2 262.4 528.2 263.9 528.2 273.4 528.2 276.35 528.2 279 528.2 280.35 528.2 283.35 528.2"/> + <path stroke="none" fill="#8A8B98" d="M281.8 507.95 L283.85 508.05 284.45 508.1 289.95 508.55 290.05 508.6 290.75 508.7 290.8 508.7 Q293.35 509 295 510.9 L296.2 512.65 296.3 512.9 296.35 513.1 297.05 515.15 297.9 517.95 297.9 523.65 Q297.95 522 299.1 520.9 L299.15 520.85 Q300.4 519.7 302 519.7 303.7 519.7 304.9 520.9 306.05 522.05 306.05 523.75 L306.05 526.65 Q307.4 528.65 307.4 530.95 307.4 533.3 306.05 535.35 L306.05 538.3 Q306.05 540 304.9 541.2 L304.95 541.1 Q303.7 542.4 302 542.4 300.35 542.45 299.1 541.2 297.95 540.05 297.9 538.4 L297.9 544.65 296.8 548 296.4 549.1 Q296.35 549.6 295.9 550.15 L295 551.4 Q293.4 553.3 290.95 553.9 L290.85 553.9 290.35 554 290.35 554.05 288.3 554.4 288.55 552.4 288.55 552.35 289.95 552.05 290.45 551.95 Q292.95 551.3 294.35 548.85 L294.4 548.75 295 547.15 Q296.6 542.75 297.3 538.25 L297.55 538.25 297.9 538.15 297.9 538.2 298.25 538.1 299.9 537.55 299.9 538.3 Q299.9 539.15 300.5 539.75 301.15 540.4 302 540.4 302.85 540.4 303.45 539.75 304.05 539.15 304.05 538.3 L304.05 534.65 Q305.4 532.95 305.4 530.95 305.4 529 304.05 527.3 L304.05 523.75 Q304.05 522.9 303.45 522.3 302.85 521.7 302 521.7 301.15 521.7 300.5 522.3 299.9 522.9 299.9 523.75 L299.9 524.4 298.25 523.85 297.9 523.85 297.9 523.75 297.55 523.65 297.3 523.6 297.15 523.65 Q296.45 519.5 295 515.3 L294.4 513.6 294.4 513.55 Q293.1 511 290.5 510.65 L289.75 510.55 281.3 509.9 281.8 507.95"/> + <path stroke="none" fill="#B2B4C2" d="M281.3 509.9 L289.75 510.55 290.5 510.65 Q293.1 511 294.4 513.55 L294.4 513.6 295 515.3 Q296.45 519.5 297.15 523.65 L297.7 528.75 Q298 533.5 297.3 538.25 296.6 542.75 295 547.15 L294.4 548.75 294.35 548.85 Q292.95 551.3 290.45 551.95 L289.95 552.05 288.55 552.35 288.55 552.4 286.5 552.7 286.5 552.25 Q286.5 548.85 284.05 546.4 281.65 544 278.2 544 L278.85 537.4 281.2 537.65 281.95 537.75 Q281.4 538.2 281.4 539 281.4 539.7 281.95 540.25 282.45 540.8 283.2 540.8 283.95 540.8 284.5 540.25 285 539.7 285 539 L284.75 538 286.7 538.2 Q288.8 538.4 290.3 536.9 291.8 535.4 291.8 533.3 291.8 531.2 290.3 529.7 288.8 528.2 286.7 528.2 L283.35 528.2 279.85 515.2 281.3 509.9 M284.5 516.4 Q285 515.9 285 515.15 285 514.4 284.5 513.85 283.95 513.35 283.2 513.35 282.45 513.35 281.95 513.85 281.4 514.4 281.4 515.15 281.4 515.9 281.95 516.4 282.45 516.95 283.2 516.95 283.95 516.95 284.5 516.4"/> + <path stroke="none" fill="#DFE1EE" d="M300.85 523.75 Q300.9 523.3 301.2 523 301.6 522.65 302.05 522.65 302.55 522.6 302.9 522.95 L303.25 523.75 303.25 531.1 300.85 531.1 300.85 523.75"/> + <path stroke="none" fill="#D0D3E5" d="M300.85 523.75 L300.85 531.1 303.25 531.1 303.25 523.75 302.9 522.95 Q302.55 522.6 302.05 522.65 301.6 522.65 301.2 523 300.9 523.3 300.85 523.75 M251.35 500.7 L254.25 500.5 256.7 509.6 259.2 500.3 262.2 500.25 259.85 509 258.75 513.25 258.2 515.2 260.8 524.95 261.1 526.05 261.7 528.2 258.7 528.2 258.05 525.85 257.8 524.75 256.7 520.75 255.65 524.6 255.4 525.65 254.7 528.2 251.75 528.2 252.5 525.4 252.75 524.4 255.2 515.2 253.6 509.2 251.35 500.7 M273 500.65 L276.05 500.9 278.35 509.6 280.55 501.4 281.2 501.45 283.5 501.7 281.8 507.95 281.3 509.9 279.85 515.2 283.35 528.2 280.35 528.2 278.5 521.35 278.35 520.75 276.95 526.05 276.65 527.2 276.35 528.2 273.4 528.2 273.7 527 274 525.85 276.85 515.2 276.2 512.7 275.05 508.45 273 500.65 M299.9 524.4 L299.9 523.75 Q299.9 522.9 300.5 522.3 301.15 521.7 302 521.7 302.85 521.7 303.45 522.3 304.05 522.9 304.05 523.75 L304.05 527.3 304.05 534.65 304.05 538.3 Q304.05 539.15 303.45 539.75 302.85 540.4 302 540.4 301.15 540.4 300.5 539.75 299.9 539.15 299.9 538.3 L299.9 537.55 299.9 524.4"/> + <path stroke="none" fill="#9698A6" d="M284.5 516.4 Q283.95 516.95 283.2 516.95 282.45 516.95 281.95 516.4 281.4 515.9 281.4 515.15 281.4 514.4 281.95 513.85 282.45 513.35 283.2 513.35 283.95 513.35 284.5 513.85 285 514.4 285 515.15 285 515.9 284.5 516.4 M284.75 538 L285 539 Q285 539.7 284.5 540.25 283.95 540.8 283.2 540.8 282.45 540.8 281.95 540.25 281.4 539.7 281.4 539 281.4 538.2 281.95 537.75 L284.75 538"/> + <path stroke="none" fill="#3D3D3D" d="M278.2 544 Q281.65 544 284.05 546.4 286.5 548.85 286.5 552.25 L286.5 552.7 Q286.35 555.85 284.05 558.1 281.65 560.55 278.2 560.55 274.8 560.55 272.35 558.1 270.05 555.8 269.95 552.6 L269.95 552.25 Q269.95 548.85 272.35 546.4 274.8 544 278.2 544 M259.85 509 Q262.5 510.1 266 510.25 270.15 510.45 273.15 509.25 L274.35 508.7 Q274.7 508.5 275.05 508.45 L276.2 512.7 274.8 513.3 Q271.05 514.85 265.8 514.6 261.8 514.4 258.75 513.25 L259.85 509 M279.65 551.5 L279.4 551.1 Q278.9 550.6 278.2 550.6 277.55 550.6 277.05 551.1 L276.95 551.25 276.8 551.45 Q276.55 551.8 276.55 552.25 L276.6 552.65 276.6 552.7 276.85 553.2 277.05 553.45 Q277.55 553.9 278.2 553.9 278.9 553.9 279.4 553.45 L279.6 553.25 279.8 552.65 279.85 552.25 279.65 551.5 M244 547.5 L244 547.7 Q244 548.5 244.55 549.15 245.15 549.75 246 549.75 246.85 549.75 247.4 549.15 L247.8 548.55 250.15 548.75 250.95 548.75 Q250.6 550.15 249.55 551.25 248.1 552.75 246 552.75 243.9 552.75 242.45 551.25 241 549.8 241 547.7 241 546.85 241.25 546.1 L242 546.6 244 547.5"/> + <path stroke="none" fill="#B1B4C9" d="M254.25 500.5 L259.2 500.3 256.7 509.6 254.25 500.5 M262.2 500.25 L273 500.65 275.05 508.45 Q274.7 508.5 274.35 508.7 L273.15 509.25 Q270.15 510.45 266 510.25 262.5 510.1 259.85 509 L262.2 500.25 M276.05 500.9 L280.55 501.4 278.35 509.6 276.05 500.9 M263.75 502.25 L262.3 507.7 266.1 508.25 Q269.55 508.4 272.1 507.55 L272.4 507.4 272.5 507.4 272.7 507.3 271.45 502.55 263.75 502.25"/> + <path stroke="none" fill="#ACDCEE" d="M241.25 546.1 L240.7 545.55 240.55 545.55 240.7 544.75 Q241.35 542.35 243.5 541.1 244.8 540.3 246.25 540.3 L244.4 537.35 Q240.3 529.95 234.65 524.05 L252.5 525.4 251.75 528.2 248.5 528.2 Q246.4 528.2 244.9 529.7 244.2 530.4 243.85 531.25 243.35 532.85 244.3 534.8 L244.9 535.5 Q246.4 537.05 248.5 537.15 L255.95 536.6 251.3 542.75 251.65 543.25 252.4 545.4 258.35 536.55 278.85 537.4 278.2 544 Q274.8 544 272.35 546.4 269.95 548.85 269.95 552.25 L269.95 552.6 268 552.3 260.35 550.5 Q256 549.25 252.45 546.7 L252.25 547.85 252 548.6 251.85 548.55 250.95 548.75 250.15 548.75 247.8 548.55 246 548.1 244 547.5 242 546.6 241.25 546.1 M233.75 523.15 L230.05 519.75 241.45 518.15 Q242.55 518 243.3 517.2 244.05 516.45 244.05 515.45 244.1 514.45 243.45 513.8 242.75 513.1 241.7 513.1 L229.8 513.15 Q227.7 513.15 226.15 514.25 225.35 514.8 224.95 515.5 223.7 513.95 222.95 512.2 L222.2 509.95 Q221.6 507.25 222.95 505.55 224.1 504.15 226.65 503.5 235.1 501.4 242.55 509.55 L253.6 509.2 255.2 515.2 252.75 524.4 233.75 523.15 M258.75 513.25 Q261.8 514.4 265.8 514.6 271.05 514.85 274.8 513.3 L276.2 512.7 276.85 515.2 274 525.85 260.8 524.95 258.2 515.2 258.75 513.25 M279 528.2 L276.35 528.2 276.65 527.2 278.95 527.35 279 528.2 M273.4 528.2 L263.9 528.2 265.1 526.35 273.7 527 273.4 528.2 M262.4 528.2 L261.7 528.2 261.1 526.05 263.85 526.25 262.4 528.2 M258.7 528.2 L254.7 528.2 255.4 525.65 258.05 525.85 258.7 528.2 M257.8 524.75 L255.65 524.6 256.7 520.75 257.8 524.75 M276.95 526.05 L278.35 520.75 278.5 521.35 278.9 526.15 276.95 526.05 M255.75 545 Q255.75 545.7 256.2 546.2 L256.3 546.3 Q256.85 546.85 257.55 546.85 258.25 546.85 258.75 546.35 L258.85 546.3 Q259.35 545.75 259.35 545 259.35 544.25 258.85 543.75 258.35 543.2 257.55 543.2 256.85 543.2 256.3 543.75 255.8 544.2 255.8 544.9 L255.75 545"/> + <path stroke="none" fill="#C4E8F5" d="M255.75 545 L255.8 544.9 Q255.8 544.2 256.3 543.75 256.85 543.2 257.55 543.2 258.35 543.2 258.85 543.75 259.35 544.25 259.35 545 259.35 545.75 258.85 546.3 L258.75 546.35 Q258.25 546.85 257.55 546.85 256.85 546.85 256.3 546.3 L256.2 546.2 Q255.75 545.7 255.75 545 M234.65 524.05 L233.75 523.15 252.75 524.4 252.5 525.4 234.65 524.05 M263.9 528.2 L262.4 528.2 263.85 526.25 261.1 526.05 260.8 524.95 274 525.85 273.7 527 265.1 526.35 263.9 528.2 M255.95 536.6 L258.35 536.55 252.4 545.4 251.65 543.25 251.3 542.75 255.95 536.6 M255.65 524.6 L257.8 524.75 258.05 525.85 255.4 525.65 255.65 524.6 M276.95 526.05 L278.9 526.15 278.95 527.35 276.65 527.2 276.95 526.05"/> + <path stroke="none" fill="#989AA7" d="M280.35 528.2 L279 528.2 278.95 527.35 278.9 526.15 278.5 521.35 280.35 528.2"/> + <path stroke="none" fill="#1C1C1C" d="M239.05 546.85 L241.25 546.1 Q241 546.85 241 547.7 241 549.8 242.45 551.25 243.9 552.75 246 552.75 248.1 552.75 249.55 551.25 250.6 550.15 250.95 548.75 L252.65 550.4 252.5 550.5 252.45 550.55 251 552.65 Q248.95 554.75 246 554.75 243.05 554.75 241.05 552.7 L241 552.65 Q239 550.6 239 547.7 L239.05 546.85 M288.3 554.4 L288.3 554.45 Q287.7 557.3 285.5 559.5 L285.45 559.55 Q282.45 562.55 278.2 562.55 273.95 562.55 270.95 559.55 268.8 557.4 268.2 554.6 L268.15 554.35 268 554.35 268 552.3 269.95 552.6 Q270.05 555.8 272.35 558.1 274.8 560.55 278.2 560.55 281.65 560.55 284.05 558.1 286.35 555.85 286.5 552.7 L288.55 552.4 288.3 554.4"/> + <path stroke="none" fill="#F4F4F4" d="M279.65 551.5 L279.85 552.25 279.8 552.65 279.6 553.25 279.4 553.45 Q278.9 553.9 278.2 553.9 277.55 553.9 277.05 553.45 L276.85 553.2 276.6 552.7 276.6 552.65 276.55 552.25 Q276.55 551.8 276.8 551.45 L276.95 551.25 277.05 551.1 Q277.55 550.6 278.2 550.6 278.9 550.6 279.4 551.1 L279.65 551.5 M247.8 548.55 L247.4 549.15 Q246.85 549.75 246 549.75 245.15 549.75 244.55 549.15 244 548.5 244 547.7 L244 547.5 246 548.1 247.8 548.55"/> + <path stroke="none" fill="#9ECEE0" d="M130.05 519.75 L129.7 519.8 Q127.65 520.1 126.15 519.3 124.55 518.4 124.55 516.9 124.55 516.15 124.95 515.5 125.35 514.8 126.15 514.25 127.7 513.15 129.8 513.15 L141.7 513.1 Q142.75 513.1 143.45 513.8 144.1 514.45 144.05 515.45 144.05 516.45 143.3 517.2 142.55 518 141.45 518.15 L130.05 519.75 M151.35 500.7 L148.5 500.95 Q146.4 500.85 144.9 499.3 L144.3 498.6 Q143.35 496.65 143.85 495.05 144.2 494.2 144.9 493.5 146.4 492 148.5 492 L186.7 492 Q188.8 492 190.3 493.5 191.8 495 191.8 497.1 191.8 499.2 190.3 500.7 188.8 502.2 186.7 502 L183.5 501.7 181.2 501.45 180.55 501.4 176.05 500.9 173 500.65 162.2 500.25 159.2 500.3 154.25 500.5 151.35 500.7 M155.95 536.6 L148.5 537.15 Q146.4 537.05 144.9 535.5 L144.3 534.8 Q143.35 532.85 143.85 531.25 144.2 530.4 144.9 529.7 146.4 528.2 148.5 528.2 L151.75 528.2 154.7 528.2 158.7 528.2 161.7 528.2 162.4 528.2 163.9 528.2 173.4 528.2 176.35 528.2 179 528.2 180.35 528.2 183.35 528.2 186.7 528.2 Q188.8 528.2 190.3 529.7 191.8 531.2 191.8 533.3 191.8 535.4 190.3 536.9 188.8 538.4 186.7 538.2 L184.75 538 181.95 537.75 181.2 537.65 178.85 537.4 158.35 536.55 155.95 536.6 M204.05 527.3 Q205.4 529 205.4 530.95 205.4 532.95 204.05 534.65 L204.05 527.3 M199.9 537.55 L198.25 538.1 197.9 538.2 197.55 538.3 197.3 538.3 Q198 533.55 197.7 528.75 L197.15 523.65 197.3 523.6 197.55 523.65 197.9 523.75 198.25 523.85 199.9 524.4 199.9 537.55"/> + <path stroke="none" fill="#79ABBD" d="M139.05 546.85 L138.75 546.4 Q138.5 545.9 138.6 545.3 L138.75 544.3 138.8 544.25 Q139.65 541.05 142.5 539.4 L143.1 539.05 142.65 538.35 Q138.7 531.2 133.25 525.5 L133.2 525.45 132.35 524.6 129.4 521.85 Q127 522.05 125.2 521.1 L125.2 521.05 Q122.45 519.5 122.55 516.9 L122.7 515.8 Q121.75 514.45 121.1 513 L121.1 512.95 120.3 510.45 120.25 510.4 Q119.4 506.65 121.4 504.3 122.85 502.4 126.15 501.55 L126.2 501.55 Q135.3 499.15 143.4 507.5 L151 507.25 149.85 502.85 148.7 502.95 148.4 502.95 Q145.5 502.8 143.5 500.7 L143.5 500.75 142.7 499.8 142.5 499.5 Q141.15 496.7 141.95 494.45 L142 494.3 Q142.5 493.1 143.5 492.1 145.55 490 148.5 490 L186.7 490 Q189.65 490 191.75 492.1 193.8 494.15 193.8 497.1 193.8 500.05 191.75 502.15 189.55 504.3 186.5 504 L184.95 503.85 183.85 508.05 181.8 507.95 183.5 501.7 186.7 502 Q188.8 502.2 190.3 500.7 191.8 499.2 191.8 497.1 191.8 495 190.3 493.5 188.8 492 186.7 492 L148.5 492 Q146.4 492 144.9 493.5 144.2 494.2 143.85 495.05 143.35 496.65 144.3 498.6 L144.9 499.3 Q146.4 500.85 148.5 500.95 L151.35 500.7 153.6 509.2 142.55 509.55 Q135.1 501.4 126.65 503.5 124.1 504.15 122.95 505.55 121.6 507.25 122.2 509.95 L122.95 512.2 Q123.7 513.95 124.95 515.5 124.55 516.15 124.55 516.9 124.55 518.4 126.15 519.3 127.65 520.1 129.7 519.8 L130.05 519.75 133.75 523.15 134.65 524.05 Q140.3 529.95 144.4 537.35 L146.25 540.3 Q144.8 540.3 143.5 541.1 141.35 542.35 140.7 544.75 L140.55 545.55 140.7 545.55 141.25 546.1 139.05 546.85 M168 554.35 Q163.95 553.65 159.8 552.45 156.45 551.5 153.6 549.85 L152.85 549.4 152.8 549.4 152.65 550.4 150.95 548.75 151.85 548.55 152 548.6 152.25 547.85 152.45 546.7 Q156 549.25 160.35 550.5 164.2 551.6 168 552.3 L168 554.35"/> + <path stroke="none" fill="#B1B4C9" d="M159.2 500.3 L156.7 509.6 154.25 500.5 159.2 500.3 M159.85 509 L162.2 500.25 173 500.65 175.05 508.45 174.35 508.7 173.15 509.25 Q170.15 510.45 166 510.25 162.5 510.1 159.85 509 M166.1 508.25 Q169.55 508.4 172.1 507.55 L172.4 507.4 172.5 507.4 172.7 507.3 171.45 502.55 163.75 502.25 162.3 507.7 166.1 508.25 M176.05 500.9 L180.55 501.4 178.35 509.6 176.05 500.9"/> + <path stroke="none" fill="#D0D3E5" d="M176.05 500.9 L178.35 509.6 180.55 501.4 181.2 501.45 183.5 501.7 181.8 507.95 181.3 509.9 179.85 515.2 183.35 528.2 180.35 528.2 178.5 521.35 178.35 520.75 176.95 526.05 176.65 527.2 176.35 528.2 173.4 528.2 173.7 527 174 525.85 176.85 515.2 176.2 512.7 175.05 508.45 173 500.65 176.05 500.9 M153.6 509.2 L151.35 500.7 154.25 500.5 156.7 509.6 159.2 500.3 162.2 500.25 159.85 509 158.75 513.25 158.2 515.2 160.8 524.95 161.1 526.05 161.7 528.2 158.7 528.2 158.05 525.85 157.8 524.75 156.7 520.75 155.65 524.6 155.4 525.65 154.7 528.2 151.75 528.2 152.5 525.4 152.75 524.4 155.2 515.2 153.6 509.2 M202.9 517.2 Q202.55 516.85 202.05 516.9 201.6 516.9 201.2 517.25 200.85 517.6 200.85 518.1 L200.85 531.1 203.25 531.1 203.25 518.05 Q203.25 517.55 202.9 517.2 M199.9 524.4 L199.9 518 Q199.9 517.15 200.5 516.55 201.15 515.95 202 515.95 202.85 515.95 203.45 516.55 204.05 517.15 204.05 518 L204.05 527.3 204.05 534.65 204.05 545.15 Q204.05 546 203.45 546.6 202.85 547.25 202 547.25 201.15 547.25 200.5 546.6 199.9 546 199.9 545.15 L199.9 537.55 199.9 524.4"/> + <path stroke="none" fill="#ACDCEE" d="M141.25 546.1 L140.7 545.55 140.55 545.55 140.7 544.75 Q141.35 542.35 143.5 541.1 144.8 540.3 146.25 540.3 L144.4 537.35 Q140.3 529.95 134.65 524.05 L152.5 525.4 151.75 528.2 148.5 528.2 Q146.4 528.2 144.9 529.7 144.2 530.4 143.85 531.25 143.35 532.85 144.3 534.8 L144.9 535.5 Q146.4 537.05 148.5 537.15 L155.95 536.6 151.3 542.75 151.65 543.25 152.4 545.4 158.35 536.55 178.85 537.4 178.2 544 Q174.8 544 172.35 546.4 169.95 548.85 169.95 552.25 L169.95 552.6 168 552.3 Q164.2 551.6 160.35 550.5 156 549.25 152.45 546.7 L152.25 547.85 152 548.6 151.85 548.55 150.95 548.75 150.15 548.75 147.8 548.55 146 548.1 144 547.5 142 546.6 141.25 546.1 M133.75 523.15 L130.05 519.75 141.45 518.15 Q142.55 518 143.3 517.2 144.05 516.45 144.05 515.45 144.1 514.45 143.45 513.8 142.75 513.1 141.7 513.1 L129.8 513.15 Q127.7 513.15 126.15 514.25 125.35 514.8 124.95 515.5 123.7 513.95 122.95 512.2 L122.2 509.95 Q121.6 507.25 122.95 505.55 124.1 504.15 126.65 503.5 135.1 501.4 142.55 509.55 L153.6 509.2 155.2 515.2 152.75 524.4 133.75 523.15 M157.8 524.75 L155.65 524.6 156.7 520.75 157.8 524.75 M155.4 525.65 L158.05 525.85 158.7 528.2 154.7 528.2 155.4 525.65 M160.8 524.95 L158.2 515.2 158.75 513.25 Q161.8 514.4 165.8 514.6 171.05 514.85 174.8 513.3 L176.2 512.7 176.85 515.2 174 525.85 160.8 524.95 M179 528.2 L176.35 528.2 176.65 527.2 178.95 527.35 179 528.2 M173.4 528.2 L163.9 528.2 165.1 526.35 173.7 527 173.4 528.2 M162.4 528.2 L161.7 528.2 161.1 526.05 163.85 526.25 162.4 528.2 M156.3 543.75 Q155.8 544.2 155.8 544.9 L155.75 545 Q155.75 545.7 156.2 546.2 L156.3 546.3 Q156.85 546.85 157.55 546.85 158.25 546.85 158.75 546.35 L158.85 546.3 Q159.35 545.75 159.35 545 159.35 544.25 158.85 543.75 158.35 543.2 157.55 543.2 156.85 543.2 156.3 543.75 M176.95 526.05 L178.35 520.75 178.5 521.35 178.9 526.15 176.95 526.05"/> + <path stroke="none" fill="#C4E8F5" d="M176.95 526.05 L178.9 526.15 178.95 527.35 176.65 527.2 176.95 526.05 M134.65 524.05 L133.75 523.15 152.75 524.4 152.5 525.4 134.65 524.05 M155.65 524.6 L157.8 524.75 158.05 525.85 155.4 525.65 155.65 524.6 M160.8 524.95 L174 525.85 173.7 527 165.1 526.35 163.9 528.2 162.4 528.2 163.85 526.25 161.1 526.05 160.8 524.95 M155.95 536.6 L158.35 536.55 152.4 545.4 151.65 543.25 151.3 542.75 155.95 536.6 M156.3 543.75 Q156.85 543.2 157.55 543.2 158.35 543.2 158.85 543.75 159.35 544.25 159.35 545 159.35 545.75 158.85 546.3 L158.75 546.35 Q158.25 546.85 157.55 546.85 156.85 546.85 156.3 546.3 L156.2 546.2 Q155.75 545.7 155.75 545 L155.8 544.9 Q155.8 544.2 156.3 543.75"/> + <path stroke="none" fill="#3D3D3D" d="M176.2 512.7 L174.8 513.3 Q171.05 514.85 165.8 514.6 161.8 514.4 158.75 513.25 L159.85 509 Q162.5 510.1 166 510.25 170.15 510.45 173.15 509.25 L174.35 508.7 175.05 508.45 176.2 512.7 M144 547.5 L144 547.7 Q144 548.5 144.55 549.15 145.15 549.75 146 549.75 146.85 549.75 147.4 549.15 L147.8 548.55 150.15 548.75 150.95 548.75 Q150.6 550.15 149.55 551.25 148.1 552.75 146 552.75 143.9 552.75 142.45 551.25 141 549.8 141 547.7 141 546.85 141.25 546.1 L142 546.6 144 547.5 M178.2 544 Q181.65 544 184.05 546.4 186.5 548.85 186.5 552.25 L186.5 552.7 Q186.35 555.85 184.05 558.1 181.65 560.55 178.2 560.55 174.8 560.55 172.35 558.1 170.05 555.8 169.95 552.6 L169.95 552.25 Q169.95 548.85 172.35 546.4 174.8 544 178.2 544 M179.65 551.5 L179.4 551.1 Q178.9 550.6 178.2 550.6 177.55 550.6 177.05 551.1 L176.95 551.25 176.8 551.45 Q176.55 551.8 176.55 552.25 L176.6 552.65 176.6 552.7 176.85 553.2 177.05 553.45 Q177.55 553.9 178.2 553.9 178.9 553.9 179.4 553.45 L179.6 553.25 179.8 552.65 179.85 552.25 179.65 551.5"/> + <path stroke="none" fill="#F4F4F4" d="M179.65 551.5 L179.85 552.25 179.8 552.65 179.6 553.25 179.4 553.45 Q178.9 553.9 178.2 553.9 177.55 553.9 177.05 553.45 L176.85 553.2 176.6 552.7 176.6 552.65 176.55 552.25 Q176.55 551.8 176.8 551.45 L176.95 551.25 177.05 551.1 Q177.55 550.6 178.2 550.6 178.9 550.6 179.4 551.1 L179.65 551.5 M144 547.5 L146 548.1 147.8 548.55 147.4 549.15 Q146.85 549.75 146 549.75 145.15 549.75 144.55 549.15 144 548.5 144 547.7 L144 547.5"/> + <path stroke="none" fill="#1C1C1C" d="M188.3 554.45 Q187.7 557.3 185.5 559.5 L185.45 559.55 Q182.45 562.55 178.2 562.55 173.95 562.55 170.95 559.55 168.8 557.4 168.2 554.6 L168.15 554.35 168 554.35 168 552.3 169.95 552.6 Q170.05 555.8 172.35 558.1 174.8 560.55 178.2 560.55 181.65 560.55 184.05 558.1 186.35 555.85 186.5 552.7 L188.55 552.4 188.3 554.45 M152.65 550.4 L152.5 550.5 152.45 550.55 151 552.65 Q148.95 554.75 146 554.75 143.05 554.75 141.05 552.7 L141 552.65 Q139 550.6 139 547.7 L139.05 546.85 141.25 546.1 Q141 546.85 141 547.7 141 549.8 142.45 551.25 143.9 552.75 146 552.75 148.1 552.75 149.55 551.25 150.6 550.15 150.95 548.75 L152.65 550.4"/> + <path stroke="none" fill="#8A8B98" d="M183.85 508.05 L184.45 508.1 189.95 508.55 190.05 508.6 190.75 508.7 190.8 508.7 Q194.4 509.15 196.2 512.65 L196.3 512.9 196.35 513.1 197.75 517.4 197.9 517.95 Q197.9 516.3 199.1 515.15 L199.15 515.1 Q200.4 513.95 202 513.95 203.7 513.95 204.9 515.15 206.05 516.3 206.05 518 L206.05 526.65 Q207.4 528.65 207.4 530.95 207.4 533.3 206.05 535.35 L206.05 545.15 Q206.05 546.85 204.9 548.05 L204.95 547.95 Q203.7 549.25 202 549.25 200.35 549.3 199.1 548.05 197.95 546.9 197.9 545.25 L197.9 544.7 196.4 549.15 195.9 550.2 Q194.1 553.15 190.95 553.95 L190.85 553.95 190.35 554.05 190.35 554.1 188.3 554.45 188.55 552.4 189.95 552.1 190.45 552 Q192.95 551.35 194.35 548.9 L194.4 548.8 Q196.45 543.6 197.3 538.3 L197.55 538.3 197.9 538.2 198.25 538.1 199.9 537.55 199.9 545.15 Q199.9 546 200.5 546.6 201.15 547.25 202 547.25 202.85 547.25 203.45 546.6 204.05 546 204.05 545.15 L204.05 534.65 Q205.4 532.95 205.4 530.95 205.4 529 204.05 527.3 L204.05 518 Q204.05 517.15 203.45 516.55 202.85 515.95 202 515.95 201.15 515.95 200.5 516.55 199.9 517.15 199.9 518 L199.9 524.4 198.25 523.85 197.9 523.75 197.55 523.65 197.3 523.6 197.15 523.65 Q196.3 518.65 194.4 513.6 L194.4 513.55 Q193.1 511 190.5 510.65 L189.75 510.55 181.3 509.9 181.8 507.95 183.85 508.05"/> + <path stroke="none" fill="#DFE1EE" d="M202.9 517.2 Q203.25 517.55 203.25 518.05 L203.25 531.1 200.85 531.1 200.85 518.1 Q200.85 517.6 201.2 517.25 201.6 516.9 202.05 516.9 202.55 516.85 202.9 517.2"/> + <path stroke="none" fill="#B2B4C2" d="M178.85 537.4 L181.2 537.65 181.95 537.75 Q181.4 538.2 181.4 539 181.4 539.7 181.95 540.25 182.45 540.8 183.2 540.8 183.95 540.8 184.5 540.25 185 539.7 185 539 L184.75 538 186.7 538.2 Q188.8 538.4 190.3 536.9 191.8 535.4 191.8 533.3 191.8 531.2 190.3 529.7 188.8 528.2 186.7 528.2 L183.35 528.2 179.85 515.2 181.3 509.9 189.75 510.55 190.5 510.65 Q193.1 511 194.4 513.55 L194.4 513.6 Q196.3 518.65 197.15 523.65 L197.7 528.75 Q198 533.55 197.3 538.3 196.45 543.6 194.4 548.8 L194.35 548.9 Q192.95 551.35 190.45 552 L189.95 552.1 188.55 552.4 186.5 552.7 186.5 552.25 Q186.5 548.85 184.05 546.4 181.65 544 178.2 544 L178.85 537.4 M181.4 515.15 Q181.4 515.9 181.95 516.4 182.45 516.95 183.2 516.95 183.95 516.95 184.5 516.4 185 515.9 185 515.15 185 514.4 184.5 513.85 183.95 513.35 183.2 513.35 182.45 513.35 181.95 513.85 181.4 514.4 181.4 515.15"/> + <path stroke="none" fill="#9698A6" d="M181.4 515.15 Q181.4 514.4 181.95 513.85 182.45 513.35 183.2 513.35 183.95 513.35 184.5 513.85 185 514.4 185 515.15 185 515.9 184.5 516.4 183.95 516.95 183.2 516.95 182.45 516.95 181.95 516.4 181.4 515.9 181.4 515.15 M181.95 537.75 L184.75 538 185 539 Q185 539.7 184.5 540.25 183.95 540.8 183.2 540.8 182.45 540.8 181.95 540.25 181.4 539.7 181.4 539 181.4 538.2 181.95 537.75"/> + <path stroke="none" fill="#989AA7" d="M180.35 528.2 L179 528.2 178.95 527.35 178.9 526.15 178.5 521.35 180.35 528.2"/> + <path stroke="none" fill="#8A8B98" d="M83.85 508.05 L84.45 508.1 89.95 508.55 90.05 508.6 90.75 508.7 90.8 508.7 Q94.4 509.15 96.2 512.65 L96.3 512.9 96.35 513.1 97.9 517.95 97.9 511 Q97.9 509.3 99.1 508.15 L99.15 508.1 Q100.4 506.95 102 506.95 103.7 506.95 104.9 508.15 106.05 509.3 106.05 511 L106.05 526.65 Q107.4 528.65 107.4 530.95 107.4 533.3 106.05 535.35 L106.05 552.15 Q106.05 553.85 104.9 555.05 L104.95 554.95 Q103.7 556.25 102 556.25 100.35 556.3 99.1 555.05 97.9 553.85 97.9 552.15 L97.9 544.7 96.4 549.15 95.9 550.2 Q94.1 553.15 90.95 553.95 L90.85 553.95 90.35 554.05 90.35 554.1 88.3 554.45 88.55 552.4 89.95 552.1 90.45 552 Q92.95 551.35 94.35 548.9 L94.4 548.8 Q96.45 543.6 97.3 538.3 L97.55 538.3 98.25 538.1 99.9 537.55 99.9 552.15 Q99.9 553 100.5 553.6 101.15 554.25 102 554.25 102.85 554.25 103.45 553.6 104.05 553 104.05 552.15 L104.05 534.65 Q105.4 532.95 105.4 530.95 105.4 529 104.05 527.3 L104.05 511 Q104.05 510.15 103.45 509.55 102.85 508.95 102 508.95 101.15 508.95 100.5 509.55 99.9 510.15 99.9 511 L99.9 524.4 98.25 523.85 97.55 523.65 97.3 523.6 97.15 523.65 Q96.3 518.65 94.4 513.6 L94.4 513.55 Q93.1 511 90.5 510.65 L89.75 510.55 81.3 509.9 81.8 507.95 83.85 508.05"/> + <path stroke="none" fill="#D0D3E5" d="M81.8 507.95 L81.3 509.9 79.85 515.2 83.35 528.2 80.35 528.2 78.5 521.35 78.35 520.75 76.95 526.05 76.65 527.2 76.35 528.2 73.4 528.2 73.7 527 74 525.85 76.85 515.2 76.2 512.7 75.05 508.45 73 500.65 76.05 500.9 78.35 509.6 80.55 501.4 81.2 501.45 83.5 501.7 81.8 507.95 M99.9 524.4 L99.9 511 Q99.9 510.15 100.5 509.55 101.15 508.95 102 508.95 102.85 508.95 103.45 509.55 104.05 510.15 104.05 511 L104.05 527.3 104.05 534.65 104.05 552.15 Q104.05 553 103.45 553.6 102.85 554.25 102 554.25 101.15 554.25 100.5 553.6 99.9 553 99.9 552.15 L99.9 537.55 99.9 524.4 M51.35 500.7 L54.25 500.5 56.7 509.6 59.2 500.3 62.2 500.25 59.85 509 58.75 513.25 58.2 515.2 60.8 524.95 61.1 526.05 61.7 528.2 58.7 528.2 58.05 525.85 57.8 524.75 56.7 520.75 55.65 524.6 55.4 525.65 54.7 528.2 51.75 528.2 52.5 525.4 52.75 524.4 55.2 515.2 53.6 509.2 51.35 500.7"/> + <path stroke="none" fill="#79ABBD" d="M51.35 500.7 L53.6 509.2 42.55 509.55 Q35.1 501.4 26.65 503.5 24.1 504.15 22.95 505.55 21.6 507.25 22.2 509.95 L22.95 512.2 Q23.7 513.95 24.95 515.5 24.55 516.15 24.55 516.9 24.55 518.4 26.15 519.3 27.65 520.1 29.7 519.8 L30.05 519.75 33.75 523.15 34.65 524.05 Q40.3 529.95 44.4 537.35 45.25 538.9 46.25 540.3 44.8 540.3 43.5 541.1 41.35 542.35 40.7 544.75 L40.55 545.55 40.7 545.55 41.25 546.1 39.05 546.85 38.75 546.4 Q38.5 545.9 38.6 545.3 L38.75 544.3 38.8 544.25 Q39.65 541.05 42.5 539.4 L43.1 539.05 42.65 538.35 Q38.7 531.2 33.25 525.5 L33.2 525.45 32.35 524.6 29.4 521.85 Q27 522.05 25.2 521.1 L25.2 521.05 Q22.45 519.5 22.55 516.9 L22.7 515.8 Q21.75 514.45 21.1 513 L21.1 512.95 20.3 510.45 20.25 510.4 Q19.4 506.65 21.4 504.3 22.85 502.4 26.15 501.55 L26.2 501.55 Q35.3 499.15 43.4 507.5 L51 507.25 49.85 502.85 48.7 502.95 48.4 502.95 Q45.5 502.8 43.5 500.7 L43.5 500.75 42.7 499.8 42.5 499.5 Q41.15 496.7 41.95 494.45 L42 494.3 Q42.5 493.1 43.5 492.1 45.55 490 48.5 490 L86.7 490 Q89.65 490 91.75 492.1 93.8 494.15 93.8 497.1 93.8 500.05 91.75 502.15 89.55 504.3 86.5 504 L84.95 503.85 83.85 508.05 81.8 507.95 83.5 501.7 86.7 502 Q88.8 502.2 90.3 500.7 91.8 499.2 91.8 497.1 91.8 495 90.3 493.5 88.8 492 86.7 492 L48.5 492 Q46.4 492 44.9 493.5 44.2 494.2 43.85 495.05 43.35 496.65 44.3 498.6 L44.9 499.3 Q46.4 500.85 48.5 500.95 L51.35 500.7 M68 554.35 Q63.95 553.65 59.8 552.45 56.45 551.5 53.6 549.85 L52.85 549.4 52.8 549.4 52.65 550.4 50.95 548.75 51.85 548.55 52 548.6 52.25 547.85 52.45 546.7 Q56 549.25 60.35 550.5 64.2 551.6 68 552.3 L68 554.35"/> + <path stroke="none" fill="#9ECEE0" d="M97.15 523.65 L97.3 523.6 97.55 523.65 98.25 523.85 99.9 524.4 99.9 537.55 98.25 538.1 97.55 538.3 97.3 538.3 Q98 533.55 97.7 528.75 L97.15 523.65 M104.05 527.3 Q105.4 529 105.4 530.95 105.4 532.95 104.05 534.65 L104.05 527.3 M51.35 500.7 L48.5 500.95 Q46.4 500.85 44.9 499.3 L44.3 498.6 Q43.35 496.65 43.85 495.05 44.2 494.2 44.9 493.5 46.4 492 48.5 492 L86.7 492 Q88.8 492 90.3 493.5 91.8 495 91.8 497.1 91.8 499.2 90.3 500.7 88.8 502.2 86.7 502 L83.5 501.7 81.2 501.45 80.55 501.4 76.05 500.9 73 500.65 62.2 500.25 59.2 500.3 54.25 500.5 51.35 500.7 M83.35 528.2 L86.7 528.2 Q88.8 528.2 90.3 529.7 91.8 531.2 91.8 533.3 91.8 535.4 90.3 536.9 88.8 538.4 86.7 538.2 L84.75 538 81.95 537.75 81.2 537.65 78.85 537.4 58.35 536.55 55.95 536.6 48.5 537.15 Q46.4 537.05 44.9 535.5 L44.3 534.8 Q43.35 532.85 43.85 531.25 44.2 530.4 44.9 529.7 46.4 528.2 48.5 528.2 L51.75 528.2 54.7 528.2 58.7 528.2 61.7 528.2 62.4 528.2 63.9 528.2 73.4 528.2 76.35 528.2 79 528.2 80.35 528.2 83.35 528.2 M24.95 515.5 Q25.35 514.8 26.15 514.25 27.7 513.15 29.8 513.15 L41.7 513.1 Q42.75 513.1 43.45 513.8 44.1 514.45 44.05 515.45 44.05 516.45 43.3 517.2 42.55 518 41.45 518.15 L30.05 519.75 29.7 519.8 Q27.65 520.1 26.15 519.3 24.55 518.4 24.55 516.9 24.55 516.15 24.95 515.5"/> + <path stroke="none" fill="#B2B4C2" d="M81.3 509.9 L89.75 510.55 90.5 510.65 Q93.1 511 94.4 513.55 L94.4 513.6 Q96.3 518.65 97.15 523.65 L97.7 528.75 Q98 533.55 97.3 538.3 96.45 543.6 94.4 548.8 L94.35 548.9 Q92.95 551.35 90.45 552 L89.95 552.1 88.55 552.4 86.5 552.7 86.5 552.25 Q86.5 548.85 84.05 546.4 81.65 544 78.2 544 L78.85 537.4 81.2 537.65 81.95 537.75 Q81.4 538.2 81.4 539 81.4 539.7 81.95 540.25 82.45 540.8 83.2 540.8 83.95 540.8 84.5 540.25 85 539.7 85 539 L84.75 538 86.7 538.2 Q88.8 538.4 90.3 536.9 91.8 535.4 91.8 533.3 91.8 531.2 90.3 529.7 88.8 528.2 86.7 528.2 L83.35 528.2 79.85 515.2 81.3 509.9 M84.5 516.4 Q85 515.9 85 515.15 85 514.4 84.5 513.85 83.95 513.35 83.2 513.35 82.45 513.35 81.95 513.85 81.4 514.4 81.4 515.15 81.4 515.9 81.95 516.4 82.45 516.95 83.2 516.95 83.95 516.95 84.5 516.4"/> + <path stroke="none" fill="#9698A6" d="M84.5 516.4 Q83.95 516.95 83.2 516.95 82.45 516.95 81.95 516.4 81.4 515.9 81.4 515.15 81.4 514.4 81.95 513.85 82.45 513.35 83.2 513.35 83.95 513.35 84.5 513.85 85 514.4 85 515.15 85 515.9 84.5 516.4 M81.95 537.75 L84.75 538 85 539 Q85 539.7 84.5 540.25 83.95 540.8 83.2 540.8 82.45 540.8 81.95 540.25 81.4 539.7 81.4 539 81.4 538.2 81.95 537.75"/> + <path stroke="none" fill="#1C1C1C" d="M88.55 552.4 L88.3 554.45 Q87.7 557.3 85.5 559.5 L85.45 559.55 Q82.45 562.55 78.2 562.55 73.95 562.55 70.95 559.55 68.8 557.4 68.2 554.6 L68.15 554.35 68 554.35 68 552.3 69.95 552.6 Q70.05 555.8 72.35 558.1 74.8 560.55 78.2 560.55 81.65 560.55 84.05 558.1 86.35 555.85 86.5 552.7 L88.55 552.4 M52.65 550.4 L52.5 550.5 52.45 550.55 51 552.65 Q48.95 554.75 46 554.75 43.05 554.75 41.05 552.7 L41 552.65 Q39 550.6 39 547.7 L39.05 546.85 41.25 546.1 Q41 546.85 41 547.7 41 549.8 42.45 551.25 43.9 552.75 46 552.75 48.1 552.75 49.55 551.25 50.6 550.15 50.95 548.75 L52.65 550.4"/> + <path stroke="none" fill="#3D3D3D" d="M78.2 544 Q81.65 544 84.05 546.4 86.5 548.85 86.5 552.25 L86.5 552.7 Q86.35 555.85 84.05 558.1 81.65 560.55 78.2 560.55 74.8 560.55 72.35 558.1 70.05 555.8 69.95 552.6 L69.95 552.25 Q69.95 548.85 72.35 546.4 74.8 544 78.2 544 M59.85 509 Q62.5 510.1 66 510.25 70.15 510.45 73.15 509.25 L74.35 508.7 75.05 508.45 76.2 512.7 74.8 513.3 Q71.05 514.85 65.8 514.6 61.8 514.4 58.75 513.25 L59.85 509 M41.25 546.1 L42 546.6 44 547.5 44 547.7 Q44 548.5 44.55 549.15 45.15 549.75 46 549.75 46.85 549.75 47.4 549.15 L47.8 548.55 50.15 548.75 50.95 548.75 Q50.6 550.15 49.55 551.25 48.1 552.75 46 552.75 43.9 552.75 42.45 551.25 41 549.8 41 547.7 41 546.85 41.25 546.1 M79.65 551.5 L79.4 551.1 Q78.9 550.6 78.2 550.6 77.55 550.6 77.05 551.1 L76.95 551.25 76.8 551.45 Q76.55 551.8 76.55 552.25 L76.6 552.65 76.6 552.7 76.85 553.2 77.05 553.45 Q77.55 553.9 78.2 553.9 78.9 553.9 79.4 553.45 L79.6 553.25 79.8 552.65 79.85 552.25 79.65 551.5"/> + <path stroke="none" fill="#B1B4C9" d="M54.25 500.5 L59.2 500.3 56.7 509.6 54.25 500.5 M62.2 500.25 L73 500.65 75.05 508.45 74.35 508.7 73.15 509.25 Q70.15 510.45 66 510.25 62.5 510.1 59.85 509 L62.2 500.25 M76.05 500.9 L80.55 501.4 78.35 509.6 76.05 500.9 M66.1 508.25 Q69.55 508.4 72.1 507.55 L72.4 507.4 72.5 507.4 72.7 507.3 71.45 502.55 63.75 502.25 62.3 507.7 66.1 508.25"/> + <path stroke="none" fill="#ACDCEE" d="M79 528.2 L76.35 528.2 76.65 527.2 78.95 527.35 79 528.2 M73.4 528.2 L63.9 528.2 65.1 526.35 73.7 527 73.4 528.2 M62.4 528.2 L61.7 528.2 61.1 526.05 63.85 526.25 62.4 528.2 M58.7 528.2 L54.7 528.2 55.4 525.65 58.05 525.85 58.7 528.2 M51.75 528.2 L48.5 528.2 Q46.4 528.2 44.9 529.7 44.2 530.4 43.85 531.25 43.35 532.85 44.3 534.8 L44.9 535.5 Q46.4 537.05 48.5 537.15 L55.95 536.6 51.3 542.75 51.65 543.25 Q52.25 544.3 52.4 545.4 L58.35 536.55 78.85 537.4 78.2 544 Q74.8 544 72.35 546.4 69.95 548.85 69.95 552.25 L69.95 552.6 68 552.3 Q64.2 551.6 60.35 550.5 56 549.25 52.45 546.7 L52.25 547.85 52 548.6 51.85 548.55 50.95 548.75 50.15 548.75 47.8 548.55 46 548.1 44 547.5 42 546.6 41.25 546.1 40.7 545.55 40.55 545.55 40.7 544.75 Q41.35 542.35 43.5 541.1 44.8 540.3 46.25 540.3 45.25 538.9 44.4 537.35 40.3 529.95 34.65 524.05 L52.5 525.4 51.75 528.2 M24.95 515.5 Q23.7 513.95 22.95 512.2 L22.2 509.95 Q21.6 507.25 22.95 505.55 24.1 504.15 26.65 503.5 35.1 501.4 42.55 509.55 L53.6 509.2 55.2 515.2 52.75 524.4 33.75 523.15 30.05 519.75 41.45 518.15 Q42.55 518 43.3 517.2 44.05 516.45 44.05 515.45 44.1 514.45 43.45 513.8 42.75 513.1 41.7 513.1 L29.8 513.15 Q27.7 513.15 26.15 514.25 25.35 514.8 24.95 515.5 M60.8 524.95 L58.2 515.2 58.75 513.25 Q61.8 514.4 65.8 514.6 71.05 514.85 74.8 513.3 L76.2 512.7 76.85 515.2 74 525.85 60.8 524.95 M55.65 524.6 L56.7 520.75 57.8 524.75 55.65 524.6 M76.95 526.05 L78.35 520.75 78.5 521.35 78.9 526.15 76.95 526.05 M59.35 545 Q59.35 544.25 58.85 543.75 58.35 543.2 57.55 543.2 56.85 543.2 56.3 543.75 55.8 544.2 55.8 544.9 L55.75 545 Q55.75 545.7 56.2 546.2 L56.3 546.3 Q56.85 546.85 57.55 546.85 58.25 546.85 58.75 546.35 L58.85 546.3 Q59.35 545.75 59.35 545"/> + <path stroke="none" fill="#C4E8F5" d="M59.35 545 Q59.35 545.75 58.85 546.3 L58.75 546.35 Q58.25 546.85 57.55 546.85 56.85 546.85 56.3 546.3 L56.2 546.2 Q55.75 545.7 55.75 545 L55.8 544.9 Q55.8 544.2 56.3 543.75 56.85 543.2 57.55 543.2 58.35 543.2 58.85 543.75 59.35 544.25 59.35 545 M63.9 528.2 L62.4 528.2 63.85 526.25 61.1 526.05 60.8 524.95 74 525.85 73.7 527 65.1 526.35 63.9 528.2 M55.95 536.6 L58.35 536.55 52.4 545.4 Q52.25 544.3 51.65 543.25 L51.3 542.75 55.95 536.6 M33.75 523.15 L52.75 524.4 52.5 525.4 34.65 524.05 33.75 523.15 M55.65 524.6 L57.8 524.75 58.05 525.85 55.4 525.65 55.65 524.6 M76.95 526.05 L78.9 526.15 78.95 527.35 76.65 527.2 76.95 526.05"/> + <path stroke="none" fill="#989AA7" d="M80.35 528.2 L79 528.2 78.95 527.35 78.9 526.15 78.5 521.35 80.35 528.2"/> + <path stroke="none" fill="#F4F4F4" d="M44 547.5 L46 548.1 47.8 548.55 47.4 549.15 Q46.85 549.75 46 549.75 45.15 549.75 44.55 549.15 44 548.5 44 547.7 L44 547.5 M79.65 551.5 L79.85 552.25 79.8 552.65 79.6 553.25 79.4 553.45 Q78.9 553.9 78.2 553.9 77.55 553.9 77.05 553.45 L76.85 553.2 76.6 552.7 76.6 552.65 76.55 552.25 Q76.55 551.8 76.8 551.45 L76.95 551.25 77.05 551.1 Q77.55 550.6 78.2 550.6 78.9 550.6 79.4 551.1 L79.65 551.5"/> + <path stroke="none" fill="#DFE1EE" d="M103.25 531.1 L100.85 531.1 100.85 511.1 Q100.85 510.6 101.2 510.25 101.6 509.9 102.05 509.9 102.55 509.85 102.9 510.2 103.25 510.55 103.25 511.05 L103.25 531.1"/> + <path stroke="none" fill="#729529" d="M239.05 456.85 L238.75 456.4 Q238.5 455.9 238.6 455.3 L238.75 454.3 238.8 454.25 Q239.65 451.05 242.5 449.4 L243.1 449.05 242.65 448.35 Q238.7 441.2 233.25 435.5 L233.2 435.45 232.35 434.6 229.4 431.85 Q227 432.05 225.2 431.1 L225.2 431.05 Q222.45 429.5 222.55 426.9 222.55 426.35 222.7 425.8 221.75 424.45 221.1 423 L221.1 422.95 220.3 420.45 220.25 420.4 Q219.4 416.65 221.4 414.3 222.85 412.4 226.15 411.55 L226.2 411.55 Q235.3 409.15 243.4 417.5 L251 417.25 249.85 412.85 248.7 412.95 248.4 412.95 Q245.5 412.8 243.5 410.7 L243.5 410.75 242.7 409.8 242.5 409.5 Q241.15 406.7 241.95 404.45 L242 404.3 Q242.5 403.1 243.5 402.1 245.55 400 248.5 400 L286.7 400 Q289.65 400 291.75 402.1 293.8 404.15 293.8 407.1 293.8 410.05 291.75 412.15 289.55 414.3 286.5 414 L284.95 413.85 283.85 418.05 281.8 417.95 283.5 411.7 286.7 412 Q288.8 412.2 290.3 410.7 291.8 409.2 291.8 407.1 291.8 405 290.3 403.5 288.8 402 286.7 402 L248.5 402 Q246.4 402 244.9 403.5 244.2 404.2 243.85 405.05 243.35 406.65 244.3 408.6 L244.9 409.3 Q246.4 410.85 248.5 410.95 L251.35 410.7 253.6 419.2 242.55 419.55 Q235.1 411.4 226.65 413.5 224.1 414.15 222.95 415.55 221.6 417.25 222.2 419.95 L222.95 422.2 Q223.7 423.95 224.95 425.5 224.55 426.15 224.55 426.9 224.55 428.4 226.15 429.3 227.65 430.1 229.7 429.8 L230.05 429.75 233.75 433.15 234.65 434.05 Q240.3 439.95 244.4 447.35 L246.25 450.3 Q244.8 450.3 243.5 451.1 241.35 452.35 240.7 454.75 L240.55 455.55 240.7 455.55 241.25 456.1 239.05 456.85 M268 464.35 Q263.95 463.65 259.8 462.45 256.45 461.5 253.6 459.85 L252.85 459.4 252.8 459.4 252.65 460.4 250.95 458.75 251.85 458.55 252 458.6 252.25 457.85 252.45 456.7 Q256 459.25 260.35 460.5 L268 462.3 268 464.35"/> + <path stroke="none" fill="#ACDD46" d="M241.25 456.1 L240.7 455.55 240.55 455.55 240.7 454.75 Q241.35 452.35 243.5 451.1 244.8 450.3 246.25 450.3 L244.4 447.35 Q240.3 439.95 234.65 434.05 L252.5 435.4 251.75 438.2 248.5 438.2 Q246.4 438.2 244.9 439.7 244.2 440.4 243.85 441.25 243.35 442.85 244.3 444.8 L244.9 445.5 Q246.4 447.05 248.5 447.15 L255.95 446.6 251.3 452.75 251.65 453.25 252.4 455.4 258.35 446.55 278.85 447.4 278.2 454 Q274.8 454 272.35 456.4 269.95 458.85 269.95 462.25 L269.95 462.6 268 462.3 260.35 460.5 Q256 459.25 252.45 456.7 L252.25 457.85 252 458.6 251.85 458.55 250.95 458.75 250.15 458.75 247.8 458.55 246 458.1 244 457.5 242 456.6 241.25 456.1 M233.75 433.15 L230.05 429.75 241.45 428.15 Q242.55 428 243.3 427.2 244.05 426.45 244.05 425.45 244.1 424.45 243.45 423.8 242.75 423.1 241.7 423.1 L229.8 423.15 Q227.7 423.15 226.15 424.25 225.35 424.8 224.95 425.5 223.7 423.95 222.95 422.2 L222.2 419.95 Q221.6 417.25 222.95 415.55 224.1 414.15 226.65 413.5 235.1 411.4 242.55 419.55 L253.6 419.2 255.2 425.2 252.75 434.4 233.75 433.15 M276.2 422.7 L276.85 425.2 274 435.85 260.8 434.95 258.2 425.2 258.75 423.25 Q261.8 424.4 265.8 424.6 271.05 424.85 274.8 423.3 L276.2 422.7 M273.7 437 L273.4 438.2 263.9 438.2 265.1 436.35 273.7 437 M276.35 438.2 L276.65 437.2 278.95 437.35 279 438.2 276.35 438.2 M276.95 436.05 L278.35 430.75 278.5 431.35 278.9 436.15 276.95 436.05 M254.7 438.2 L255.4 435.65 258.05 435.85 258.7 438.2 254.7 438.2 M255.65 434.6 L256.7 430.75 257.8 434.75 255.65 434.6 M261.7 438.2 L261.1 436.05 263.85 436.25 262.4 438.2 261.7 438.2 M259.35 455 Q259.35 454.25 258.85 453.75 258.35 453.2 257.55 453.2 256.85 453.2 256.3 453.75 255.8 454.2 255.8 454.9 L255.75 455 Q255.75 455.7 256.2 456.2 L256.3 456.3 Q256.85 456.85 257.55 456.85 258.25 456.85 258.75 456.35 L258.85 456.3 Q259.35 455.75 259.35 455"/> + <path stroke="none" fill="#96C23A" d="M230.05 429.75 L229.7 429.8 Q227.65 430.1 226.15 429.3 224.55 428.4 224.55 426.9 224.55 426.15 224.95 425.5 225.35 424.8 226.15 424.25 227.7 423.15 229.8 423.15 L241.7 423.1 Q242.75 423.1 243.45 423.8 244.1 424.45 244.05 425.45 244.05 426.45 243.3 427.2 242.55 428 241.45 428.15 L230.05 429.75 M251.35 410.7 L248.5 410.95 Q246.4 410.85 244.9 409.3 L244.3 408.6 Q243.35 406.65 243.85 405.05 244.2 404.2 244.9 403.5 246.4 402 248.5 402 L286.7 402 Q288.8 402 290.3 403.5 291.8 405 291.8 407.1 291.8 409.2 290.3 410.7 288.8 412.2 286.7 412 L283.5 411.7 281.2 411.45 280.55 411.4 276.05 410.9 273 410.65 262.2 410.25 259.2 410.3 254.25 410.5 251.35 410.7 M278.85 447.4 L258.35 446.55 255.95 446.6 248.5 447.15 Q246.4 447.05 244.9 445.5 L244.3 444.8 Q243.35 442.85 243.85 441.25 244.2 440.4 244.9 439.7 246.4 438.2 248.5 438.2 L251.75 438.2 254.7 438.2 258.7 438.2 261.7 438.2 262.4 438.2 263.9 438.2 273.4 438.2 276.35 438.2 279 438.2 280.35 438.2 283.35 438.2 286.7 438.2 Q288.8 438.2 290.3 439.7 291.8 441.2 291.8 443.3 291.8 445.4 290.3 446.9 288.8 448.4 286.7 448.2 L284.75 448 281.95 447.75 281.2 447.65 278.85 447.4 M304.05 437.3 Q305.4 439 305.4 440.95 305.4 442.95 304.05 444.65 L304.05 437.3 M299.9 447.55 L298.25 448.1 297.9 448.2 297.9 448.15 297.55 448.25 297.3 448.25 Q298 443.5 297.7 438.75 L297.15 433.65 297.3 433.6 297.55 433.65 297.9 433.75 297.9 433.85 298.25 433.85 299.9 434.4 299.9 447.55"/> + <path stroke="none" fill="#C2EC6A" d="M234.65 434.05 L233.75 433.15 252.75 434.4 252.5 435.4 234.65 434.05 M258.35 446.55 L252.4 455.4 251.65 453.25 251.3 452.75 255.95 446.6 258.35 446.55 M274 435.85 L273.7 437 265.1 436.35 263.9 438.2 262.4 438.2 263.85 436.25 261.1 436.05 260.8 434.95 274 435.85 M276.65 437.2 L276.95 436.05 278.9 436.15 278.95 437.35 276.65 437.2 M258.05 435.85 L255.4 435.65 255.65 434.6 257.8 434.75 258.05 435.85 M259.35 455 Q259.35 455.75 258.85 456.3 L258.75 456.35 Q258.25 456.85 257.55 456.85 256.85 456.85 256.3 456.3 L256.2 456.2 Q255.75 455.7 255.75 455 L255.8 454.9 Q255.8 454.2 256.3 453.75 256.85 453.2 257.55 453.2 258.35 453.2 258.85 453.75 259.35 454.25 259.35 455"/> + <path stroke="none" fill="#3D3D3D" d="M241.25 456.1 L242 456.6 244 457.5 244 457.7 Q244 458.5 244.55 459.15 245.15 459.75 246 459.75 246.85 459.75 247.4 459.15 L247.8 458.55 250.15 458.75 250.95 458.75 Q250.6 460.15 249.55 461.25 248.1 462.75 246 462.75 243.9 462.75 242.45 461.25 241 459.8 241 457.7 241 456.85 241.25 456.1 M269.95 462.6 L269.95 462.25 Q269.95 458.85 272.35 456.4 274.8 454 278.2 454 281.65 454 284.05 456.4 286.5 458.85 286.5 462.25 L286.5 462.7 Q286.35 465.85 284.05 468.1 281.65 470.55 278.2 470.55 274.8 470.55 272.35 468.1 270.05 465.8 269.95 462.6 M275.05 418.45 L276.2 422.7 274.8 423.3 Q271.05 424.85 265.8 424.6 261.8 424.4 258.75 423.25 L259.85 419 Q262.5 420.1 266 420.25 270.15 420.45 273.15 419.25 L274.35 418.7 Q274.7 418.5 275.05 418.45 M276.6 462.7 L276.85 463.2 277.05 463.45 Q277.55 463.9 278.2 463.9 278.9 463.9 279.4 463.45 L279.6 463.25 279.8 462.65 279.85 462.25 279.65 461.5 279.4 461.1 Q278.9 460.6 278.2 460.6 277.55 460.6 277.05 461.1 L276.95 461.25 276.8 461.45 Q276.55 461.8 276.55 462.25 L276.6 462.65 276.6 462.7"/> + <path stroke="none" fill="#1C1C1C" d="M288.3 464.4 L288.3 464.45 Q287.7 467.3 285.5 469.5 L285.45 469.55 Q282.45 472.55 278.2 472.55 273.95 472.55 270.95 469.55 268.8 467.4 268.2 464.6 L268.15 464.35 268 464.35 268 462.3 269.95 462.6 Q270.05 465.8 272.35 468.1 274.8 470.55 278.2 470.55 281.65 470.55 284.05 468.1 286.35 465.85 286.5 462.7 L288.55 462.4 288.3 464.4 M252.65 460.4 L252.5 460.5 252.45 460.55 251 462.65 Q248.95 464.75 246 464.75 243.05 464.75 241.05 462.7 L241 462.65 Q239 460.6 239 457.7 L239.05 456.85 241.25 456.1 Q241 456.85 241 457.7 241 459.8 242.45 461.25 243.9 462.75 246 462.75 248.1 462.75 249.55 461.25 250.6 460.15 250.95 458.75 L252.65 460.4"/> + <path stroke="none" fill="#B2B4C2" d="M278.2 454 L278.85 447.4 281.2 447.65 281.95 447.75 Q281.4 448.2 281.4 449 281.4 449.7 281.95 450.25 282.45 450.8 283.2 450.8 283.95 450.8 284.5 450.25 285 449.7 285 449 L284.75 448 286.7 448.2 Q288.8 448.4 290.3 446.9 291.8 445.4 291.8 443.3 291.8 441.2 290.3 439.7 288.8 438.2 286.7 438.2 L283.35 438.2 279.85 425.2 281.3 419.9 289.75 420.55 290.5 420.65 Q293.1 421 294.4 423.55 L294.4 423.6 295 425.3 Q296.45 429.5 297.15 433.65 L297.7 438.75 Q298 443.5 297.3 448.25 296.6 452.75 295 457.15 L294.4 458.75 294.35 458.85 Q292.95 461.3 290.45 461.95 L289.95 462.05 288.55 462.35 288.55 462.4 286.5 462.7 286.5 462.25 Q286.5 458.85 284.05 456.4 281.65 454 278.2 454 M285 425.15 Q285 424.4 284.5 423.85 283.95 423.35 283.2 423.35 282.45 423.35 281.95 423.85 281.4 424.4 281.4 425.15 281.4 425.9 281.95 426.4 282.45 426.95 283.2 426.95 283.95 426.95 284.5 426.4 285 425.9 285 425.15"/> + <path stroke="none" fill="#8A8B98" d="M283.85 418.05 L284.45 418.1 289.95 418.55 290.05 418.6 290.75 418.7 290.8 418.7 Q293.35 419 295 420.9 L296.2 422.65 296.3 422.9 296.35 423.1 297.05 425.15 297.9 427.95 297.9 433.65 Q297.95 432 299.1 430.9 L299.15 430.85 Q300.4 429.7 302 429.7 303.7 429.7 304.9 430.9 306.05 432.05 306.05 433.75 L306.05 436.65 Q307.4 438.65 307.4 440.95 307.4 443.3 306.05 445.35 L306.05 448.3 Q306.05 450 304.9 451.2 L304.95 451.1 Q303.7 452.4 302 452.4 300.35 452.45 299.1 451.2 297.95 450.05 297.9 448.4 L297.9 454.65 296.8 458 296.4 459.1 Q296.35 459.6 295.9 460.15 L295 461.4 Q293.4 463.3 290.95 463.9 L290.85 463.9 290.35 464 290.35 464.05 288.3 464.4 288.55 462.4 288.55 462.35 289.95 462.05 290.45 461.95 Q292.95 461.3 294.35 458.85 L294.4 458.75 295 457.15 Q296.6 452.75 297.3 448.25 L297.55 448.25 297.9 448.15 297.9 448.2 298.25 448.1 299.9 447.55 299.9 448.3 Q299.9 449.15 300.5 449.75 301.15 450.4 302 450.4 302.85 450.4 303.45 449.75 304.05 449.15 304.05 448.3 L304.05 444.65 Q305.4 442.95 305.4 440.95 305.4 439 304.05 437.3 L304.05 433.75 Q304.05 432.9 303.45 432.3 302.85 431.7 302 431.7 301.15 431.7 300.5 432.3 299.9 432.9 299.9 433.75 L299.9 434.4 298.25 433.85 297.9 433.85 297.9 433.75 297.55 433.65 297.3 433.6 297.15 433.65 Q296.45 429.5 295 425.3 L294.4 423.6 294.4 423.55 Q293.1 421 290.5 420.65 L289.75 420.55 281.3 419.9 281.8 417.95 283.85 418.05"/> + <path stroke="none" fill="#9698A6" d="M284.75 448 L285 449 Q285 449.7 284.5 450.25 283.95 450.8 283.2 450.8 282.45 450.8 281.95 450.25 281.4 449.7 281.4 449 281.4 448.2 281.95 447.75 L284.75 448 M285 425.15 Q285 425.9 284.5 426.4 283.95 426.95 283.2 426.95 282.45 426.95 281.95 426.4 281.4 425.9 281.4 425.15 281.4 424.4 281.95 423.85 282.45 423.35 283.2 423.35 283.95 423.35 284.5 423.85 285 424.4 285 425.15"/> + <path stroke="none" fill="#D0D3E5" d="M253.6 419.2 L251.35 410.7 254.25 410.5 256.7 419.6 259.2 410.3 262.2 410.25 259.85 419 258.75 423.25 258.2 425.2 260.8 434.95 261.1 436.05 261.7 438.2 258.7 438.2 258.05 435.85 257.8 434.75 256.7 430.75 255.65 434.6 255.4 435.65 254.7 438.2 251.75 438.2 252.5 435.4 252.75 434.4 255.2 425.2 253.6 419.2 M283.5 411.7 L281.8 417.95 281.3 419.9 279.85 425.2 283.35 438.2 280.35 438.2 278.5 431.35 278.35 430.75 276.95 436.05 276.65 437.2 276.35 438.2 273.4 438.2 273.7 437 274 435.85 276.85 425.2 276.2 422.7 275.05 418.45 273 410.65 276.05 410.9 278.35 419.6 280.55 411.4 281.2 411.45 283.5 411.7 M299.9 434.4 L299.9 433.75 Q299.9 432.9 300.5 432.3 301.15 431.7 302 431.7 302.85 431.7 303.45 432.3 304.05 432.9 304.05 433.75 L304.05 437.3 304.05 444.65 304.05 448.3 Q304.05 449.15 303.45 449.75 302.85 450.4 302 450.4 301.15 450.4 300.5 449.75 299.9 449.15 299.9 448.3 L299.9 447.55 299.9 434.4 M302.9 432.95 Q302.55 432.6 302.05 432.65 301.6 432.65 301.2 433 300.9 433.3 300.85 433.75 L300.85 441.1 303.25 441.1 303.25 433.75 302.9 432.95"/> + <path stroke="none" fill="#DFE1EE" d="M302.9 432.95 L303.25 433.75 303.25 441.1 300.85 441.1 300.85 433.75 Q300.9 433.3 301.2 433 301.6 432.65 302.05 432.65 302.55 432.6 302.9 432.95"/> + <path stroke="none" fill="#B1B4C9" d="M263.75 412.25 L262.3 417.7 266.1 418.25 Q269.55 418.4 272.1 417.55 L272.4 417.4 272.5 417.4 272.7 417.3 271.45 412.55 263.75 412.25 M276.05 410.9 L280.55 411.4 278.35 419.6 276.05 410.9 M273 410.65 L275.05 418.45 Q274.7 418.5 274.35 418.7 L273.15 419.25 Q270.15 420.45 266 420.25 262.5 420.1 259.85 419 L262.2 410.25 273 410.65 M254.25 410.5 L259.2 410.3 256.7 419.6 254.25 410.5"/> + <path stroke="none" fill="#989AA7" d="M278.5 431.35 L280.35 438.2 279 438.2 278.95 437.35 278.9 436.15 278.5 431.35"/> + <path stroke="none" fill="#F4F4F4" d="M244 457.5 L246 458.1 247.8 458.55 247.4 459.15 Q246.85 459.75 246 459.75 245.15 459.75 244.55 459.15 244 458.5 244 457.7 L244 457.5 M276.6 462.7 L276.6 462.65 276.55 462.25 Q276.55 461.8 276.8 461.45 L276.95 461.25 277.05 461.1 Q277.55 460.6 278.2 460.6 278.9 460.6 279.4 461.1 L279.65 461.5 279.85 462.25 279.8 462.65 279.6 463.25 279.4 463.45 Q278.9 463.9 278.2 463.9 277.55 463.9 277.05 463.45 L276.85 463.2 276.6 462.7"/> + <path stroke="none" fill="#DFE1EE" d="M202.9 427.2 Q203.25 427.55 203.25 428.05 L203.25 441.1 200.85 441.1 200.85 428.1 Q200.85 427.6 201.2 427.25 201.6 426.9 202.05 426.9 202.55 426.85 202.9 427.2"/> + <path stroke="none" fill="#D0D3E5" d="M202.9 427.2 Q202.55 426.85 202.05 426.9 201.6 426.9 201.2 427.25 200.85 427.6 200.85 428.1 L200.85 441.1 203.25 441.1 203.25 428.05 Q203.25 427.55 202.9 427.2 M181.8 417.95 L181.3 419.9 179.85 425.2 183.35 438.2 180.35 438.2 178.5 431.35 178.35 430.75 176.95 436.05 176.65 437.2 176.35 438.2 173.4 438.2 173.7 437 174 435.85 176.85 425.2 176.2 422.7 175.05 418.45 173 410.65 176.05 410.9 178.35 419.6 180.55 411.4 181.2 411.45 183.5 411.7 181.8 417.95 M199.9 434.4 L199.9 428 Q199.9 427.15 200.5 426.55 201.15 425.95 202 425.95 202.85 425.95 203.45 426.55 204.05 427.15 204.05 428 L204.05 437.3 204.05 444.65 204.05 455.15 Q204.05 456 203.45 456.6 202.85 457.25 202 457.25 201.15 457.25 200.5 456.6 199.9 456 199.9 455.15 L199.9 447.55 199.9 434.4 M151.35 410.7 L154.25 410.5 156.7 419.6 159.2 410.3 162.2 410.25 159.85 419 158.75 423.25 158.2 425.2 160.8 434.95 161.1 436.05 161.7 438.2 158.7 438.2 158.05 435.85 157.8 434.75 156.7 430.75 155.65 434.6 155.4 435.65 154.7 438.2 151.75 438.2 152.5 435.4 152.75 434.4 155.2 425.2 153.6 419.2 151.35 410.7"/> + <path stroke="none" fill="#8A8B98" d="M183.85 418.05 L184.45 418.1 189.95 418.55 190.05 418.6 190.75 418.7 190.8 418.7 Q194.4 419.15 196.2 422.65 L196.3 422.9 196.35 423.1 197.75 427.4 197.9 427.95 Q197.9 426.3 199.1 425.15 L199.15 425.1 Q200.4 423.95 202 423.95 203.7 423.95 204.9 425.15 206.05 426.3 206.05 428 L206.05 436.65 Q207.4 438.65 207.4 440.95 207.4 443.3 206.05 445.35 L206.05 455.15 Q206.05 456.85 204.9 458.05 L204.95 457.95 Q203.7 459.25 202 459.25 200.35 459.3 199.1 458.05 197.95 456.9 197.9 455.25 L197.9 454.7 196.4 459.15 195.9 460.2 Q194.1 463.15 190.95 463.95 L190.85 463.95 190.35 464.05 190.35 464.1 188.3 464.45 188.55 462.4 189.95 462.1 190.45 462 Q192.95 461.35 194.35 458.9 L194.4 458.8 Q196.45 453.6 197.3 448.3 L197.55 448.3 197.9 448.2 198.25 448.1 199.9 447.55 199.9 455.15 Q199.9 456 200.5 456.6 201.15 457.25 202 457.25 202.85 457.25 203.45 456.6 204.05 456 204.05 455.15 L204.05 444.65 Q205.4 442.95 205.4 440.95 205.4 439 204.05 437.3 L204.05 428 Q204.05 427.15 203.45 426.55 202.85 425.95 202 425.95 201.15 425.95 200.5 426.55 199.9 427.15 199.9 428 L199.9 434.4 198.25 433.85 197.9 433.75 197.55 433.65 197.3 433.6 197.15 433.65 Q196.3 428.65 194.4 423.6 L194.4 423.55 Q193.1 421 190.5 420.65 L189.75 420.55 181.3 419.9 181.8 417.95 183.85 418.05"/> + <path stroke="none" fill="#96C23A" d="M197.15 433.65 L197.3 433.6 197.55 433.65 197.9 433.75 198.25 433.85 199.9 434.4 199.9 447.55 198.25 448.1 197.9 448.2 197.55 448.3 197.3 448.3 Q198 443.55 197.7 438.75 L197.15 433.65 M204.05 437.3 Q205.4 439 205.4 440.95 205.4 442.95 204.05 444.65 L204.05 437.3 M151.35 410.7 L148.5 410.95 Q146.4 410.85 144.9 409.3 L144.3 408.6 Q143.35 406.65 143.85 405.05 144.2 404.2 144.9 403.5 146.4 402 148.5 402 L186.7 402 Q188.8 402 190.3 403.5 191.8 405 191.8 407.1 191.8 409.2 190.3 410.7 188.8 412.2 186.7 412 L183.5 411.7 181.2 411.45 180.55 411.4 176.05 410.9 173 410.65 162.2 410.25 159.2 410.3 154.25 410.5 151.35 410.7 M183.35 438.2 L186.7 438.2 Q188.8 438.2 190.3 439.7 191.8 441.2 191.8 443.3 191.8 445.4 190.3 446.9 188.8 448.4 186.7 448.2 L184.75 448 181.95 447.75 181.2 447.65 178.85 447.4 158.35 446.55 155.95 446.6 148.5 447.15 Q146.4 447.05 144.9 445.5 L144.3 444.8 Q143.35 442.85 143.85 441.25 144.2 440.4 144.9 439.7 146.4 438.2 148.5 438.2 L151.75 438.2 154.7 438.2 158.7 438.2 161.7 438.2 162.4 438.2 163.9 438.2 173.4 438.2 176.35 438.2 179 438.2 180.35 438.2 183.35 438.2 M124.95 425.5 Q125.35 424.8 126.15 424.25 127.7 423.15 129.8 423.15 L141.7 423.1 Q142.75 423.1 143.45 423.8 144.1 424.45 144.05 425.45 144.05 426.45 143.3 427.2 142.55 428 141.45 428.15 L130.05 429.75 129.7 429.8 Q127.65 430.1 126.15 429.3 124.55 428.4 124.55 426.9 124.55 426.15 124.95 425.5"/> + <path stroke="none" fill="#729529" d="M124.95 425.5 Q124.55 426.15 124.55 426.9 124.55 428.4 126.15 429.3 127.65 430.1 129.7 429.8 L130.05 429.75 133.75 433.15 134.65 434.05 Q140.3 439.95 144.4 447.35 L146.25 450.3 Q144.8 450.3 143.5 451.1 141.35 452.35 140.7 454.75 L140.55 455.55 140.7 455.55 141.25 456.1 139.05 456.85 138.75 456.4 Q138.5 455.9 138.6 455.3 L138.75 454.3 138.8 454.25 Q139.65 451.05 142.5 449.4 L143.1 449.05 142.65 448.35 Q138.7 441.2 133.25 435.5 L133.2 435.45 132.35 434.6 129.4 431.85 Q127 432.05 125.2 431.1 L125.2 431.05 Q122.45 429.5 122.55 426.9 L122.7 425.8 Q121.75 424.45 121.1 423 L121.1 422.95 120.3 420.45 120.25 420.4 Q119.4 416.65 121.4 414.3 122.85 412.4 126.15 411.55 L126.2 411.55 Q135.3 409.15 143.4 417.5 L151 417.25 149.85 412.85 148.7 412.95 148.4 412.95 Q145.5 412.8 143.5 410.7 L143.5 410.75 142.7 409.8 142.5 409.5 Q141.15 406.7 141.95 404.45 L142 404.3 Q142.5 403.1 143.5 402.1 145.55 400 148.5 400 L186.7 400 Q189.65 400 191.75 402.1 193.8 404.15 193.8 407.1 193.8 410.05 191.75 412.15 189.55 414.3 186.5 414 L184.95 413.85 183.85 418.05 181.8 417.95 183.5 411.7 186.7 412 Q188.8 412.2 190.3 410.7 191.8 409.2 191.8 407.1 191.8 405 190.3 403.5 188.8 402 186.7 402 L148.5 402 Q146.4 402 144.9 403.5 144.2 404.2 143.85 405.05 143.35 406.65 144.3 408.6 L144.9 409.3 Q146.4 410.85 148.5 410.95 L151.35 410.7 153.6 419.2 142.55 419.55 Q135.1 411.4 126.65 413.5 124.1 414.15 122.95 415.55 121.6 417.25 122.2 419.95 L122.95 422.2 Q123.7 423.95 124.95 425.5 M168 464.35 Q163.95 463.65 159.8 462.45 156.45 461.5 153.6 459.85 L152.85 459.4 152.8 459.4 152.65 460.4 150.95 458.75 151.85 458.55 152 458.6 152.25 457.85 152.45 456.7 Q156 459.25 160.35 460.5 164.2 461.6 168 462.3 L168 464.35"/> + <path stroke="none" fill="#B1B4C9" d="M154.25 410.5 L159.2 410.3 156.7 419.6 154.25 410.5 M162.2 410.25 L173 410.65 175.05 418.45 174.35 418.7 173.15 419.25 Q170.15 420.45 166 420.25 162.5 420.1 159.85 419 L162.2 410.25 M176.05 410.9 L180.55 411.4 178.35 419.6 176.05 410.9 M163.75 412.25 L162.3 417.7 166.1 418.25 Q169.55 418.4 172.1 417.55 L172.4 417.4 172.5 417.4 172.7 417.3 171.45 412.55 163.75 412.25"/> + <path stroke="none" fill="#3D3D3D" d="M159.85 419 Q162.5 420.1 166 420.25 170.15 420.45 173.15 419.25 L174.35 418.7 175.05 418.45 176.2 422.7 174.8 423.3 Q171.05 424.85 165.8 424.6 161.8 424.4 158.75 423.25 L159.85 419 M178.2 454 Q181.65 454 184.05 456.4 186.5 458.85 186.5 462.25 L186.5 462.7 Q186.35 465.85 184.05 468.1 181.65 470.55 178.2 470.55 174.8 470.55 172.35 468.1 170.05 465.8 169.95 462.6 L169.95 462.25 Q169.95 458.85 172.35 456.4 174.8 454 178.2 454 M176.55 462.25 L176.6 462.65 176.6 462.7 176.85 463.2 177.05 463.45 Q177.55 463.9 178.2 463.9 178.9 463.9 179.4 463.45 L179.6 463.25 179.8 462.65 179.85 462.25 179.65 461.5 179.4 461.1 Q178.9 460.6 178.2 460.6 177.55 460.6 177.05 461.1 L176.95 461.25 176.8 461.45 Q176.55 461.8 176.55 462.25 M141.25 456.1 L142 456.6 144 457.5 144 457.7 Q144 458.5 144.55 459.15 145.15 459.75 146 459.75 146.85 459.75 147.4 459.15 L147.8 458.55 150.15 458.75 150.95 458.75 Q150.6 460.15 149.55 461.25 148.1 462.75 146 462.75 143.9 462.75 142.45 461.25 141 459.8 141 457.7 141 456.85 141.25 456.1"/> + <path stroke="none" fill="#ACDD46" d="M141.25 456.1 L140.7 455.55 140.55 455.55 140.7 454.75 Q141.35 452.35 143.5 451.1 144.8 450.3 146.25 450.3 L144.4 447.35 Q140.3 439.95 134.65 434.05 L152.5 435.4 151.75 438.2 148.5 438.2 Q146.4 438.2 144.9 439.7 144.2 440.4 143.85 441.25 143.35 442.85 144.3 444.8 L144.9 445.5 Q146.4 447.05 148.5 447.15 L155.95 446.6 151.3 452.75 151.65 453.25 152.4 455.4 158.35 446.55 178.85 447.4 178.2 454 Q174.8 454 172.35 456.4 169.95 458.85 169.95 462.25 L169.95 462.6 168 462.3 Q164.2 461.6 160.35 460.5 156 459.25 152.45 456.7 L152.25 457.85 152 458.6 151.85 458.55 150.95 458.75 150.15 458.75 147.8 458.55 146 458.1 144 457.5 142 456.6 141.25 456.1 M158.75 423.25 Q161.8 424.4 165.8 424.6 171.05 424.85 174.8 423.3 L176.2 422.7 176.85 425.2 174 435.85 160.8 434.95 158.2 425.2 158.75 423.25 M163.9 438.2 L165.1 436.35 173.7 437 173.4 438.2 163.9 438.2 M161.1 436.05 L163.85 436.25 162.4 438.2 161.7 438.2 161.1 436.05 M176.95 436.05 L178.35 430.75 178.5 431.35 178.9 436.15 176.95 436.05 M176.65 437.2 L178.95 437.35 179 438.2 176.35 438.2 176.65 437.2 M130.05 429.75 L141.45 428.15 Q142.55 428 143.3 427.2 144.05 426.45 144.05 425.45 144.1 424.45 143.45 423.8 142.75 423.1 141.7 423.1 L129.8 423.15 Q127.7 423.15 126.15 424.25 125.35 424.8 124.95 425.5 123.7 423.95 122.95 422.2 L122.2 419.95 Q121.6 417.25 122.95 415.55 124.1 414.15 126.65 413.5 135.1 411.4 142.55 419.55 L153.6 419.2 155.2 425.2 152.75 434.4 133.75 433.15 130.05 429.75 M154.7 438.2 L155.4 435.65 158.05 435.85 158.7 438.2 154.7 438.2 M155.65 434.6 L156.7 430.75 157.8 434.75 155.65 434.6 M158.85 456.3 Q159.35 455.75 159.35 455 159.35 454.25 158.85 453.75 158.35 453.2 157.55 453.2 156.85 453.2 156.3 453.75 155.8 454.2 155.8 454.9 L155.75 455 Q155.75 455.7 156.2 456.2 L156.3 456.3 Q156.85 456.85 157.55 456.85 158.25 456.85 158.75 456.35 L158.85 456.3"/> + <path stroke="none" fill="#B2B4C2" d="M181.3 419.9 L189.75 420.55 190.5 420.65 Q193.1 421 194.4 423.55 L194.4 423.6 Q196.3 428.65 197.15 433.65 L197.7 438.75 Q198 443.55 197.3 448.3 196.45 453.6 194.4 458.8 L194.35 458.9 Q192.95 461.35 190.45 462 L189.95 462.1 188.55 462.4 186.5 462.7 186.5 462.25 Q186.5 458.85 184.05 456.4 181.65 454 178.2 454 L178.85 447.4 181.2 447.65 181.95 447.75 Q181.4 448.2 181.4 449 181.4 449.7 181.95 450.25 182.45 450.8 183.2 450.8 183.95 450.8 184.5 450.25 185 449.7 185 449 L184.75 448 186.7 448.2 Q188.8 448.4 190.3 446.9 191.8 445.4 191.8 443.3 191.8 441.2 190.3 439.7 188.8 438.2 186.7 438.2 L183.35 438.2 179.85 425.2 181.3 419.9 M181.95 423.85 Q181.4 424.4 181.4 425.15 181.4 425.9 181.95 426.4 182.45 426.95 183.2 426.95 183.95 426.95 184.5 426.4 185 425.9 185 425.15 185 424.4 184.5 423.85 183.95 423.35 183.2 423.35 182.45 423.35 181.95 423.85"/> + <path stroke="none" fill="#9698A6" d="M181.95 423.85 Q182.45 423.35 183.2 423.35 183.95 423.35 184.5 423.85 185 424.4 185 425.15 185 425.9 184.5 426.4 183.95 426.95 183.2 426.95 182.45 426.95 181.95 426.4 181.4 425.9 181.4 425.15 181.4 424.4 181.95 423.85 M184.75 448 L185 449 Q185 449.7 184.5 450.25 183.95 450.8 183.2 450.8 182.45 450.8 181.95 450.25 181.4 449.7 181.4 449 181.4 448.2 181.95 447.75 L184.75 448"/> + <path stroke="none" fill="#C2EC6A" d="M173.7 437 L165.1 436.35 163.9 438.2 162.4 438.2 163.85 436.25 161.1 436.05 160.8 434.95 174 435.85 173.7 437 M176.95 436.05 L178.9 436.15 178.95 437.35 176.65 437.2 176.95 436.05 M133.75 433.15 L152.75 434.4 152.5 435.4 134.65 434.05 133.75 433.15 M155.95 446.6 L158.35 446.55 152.4 455.4 151.65 453.25 151.3 452.75 155.95 446.6 M158.05 435.85 L155.4 435.65 155.65 434.6 157.8 434.75 158.05 435.85 M158.85 456.3 L158.75 456.35 Q158.25 456.85 157.55 456.85 156.85 456.85 156.3 456.3 L156.2 456.2 Q155.75 455.7 155.75 455 L155.8 454.9 Q155.8 454.2 156.3 453.75 156.85 453.2 157.55 453.2 158.35 453.2 158.85 453.75 159.35 454.25 159.35 455 159.35 455.75 158.85 456.3"/> + <path stroke="none" fill="#989AA7" d="M178.9 436.15 L178.5 431.35 180.35 438.2 179 438.2 178.95 437.35 178.9 436.15"/> + <path stroke="none" fill="#1C1C1C" d="M188.3 464.45 Q187.7 467.3 185.5 469.5 L185.45 469.55 Q182.45 472.55 178.2 472.55 173.95 472.55 170.95 469.55 168.8 467.4 168.2 464.6 L168.15 464.35 168 464.35 168 462.3 169.95 462.6 Q170.05 465.8 172.35 468.1 174.8 470.55 178.2 470.55 181.65 470.55 184.05 468.1 186.35 465.85 186.5 462.7 L188.55 462.4 188.3 464.45 M152.65 460.4 L152.5 460.5 152.45 460.55 151 462.65 Q148.95 464.75 146 464.75 143.05 464.75 141.05 462.7 L141 462.65 Q139 460.6 139 457.7 L139.05 456.85 141.25 456.1 Q141 456.85 141 457.7 141 459.8 142.45 461.25 143.9 462.75 146 462.75 148.1 462.75 149.55 461.25 150.6 460.15 150.95 458.75 L152.65 460.4"/> + <path stroke="none" fill="#F4F4F4" d="M176.55 462.25 Q176.55 461.8 176.8 461.45 L176.95 461.25 177.05 461.1 Q177.55 460.6 178.2 460.6 178.9 460.6 179.4 461.1 L179.65 461.5 179.85 462.25 179.8 462.65 179.6 463.25 179.4 463.45 Q178.9 463.9 178.2 463.9 177.55 463.9 177.05 463.45 L176.85 463.2 176.6 462.7 176.6 462.65 176.55 462.25 M144 457.5 L146 458.1 147.8 458.55 147.4 459.15 Q146.85 459.75 146 459.75 145.15 459.75 144.55 459.15 144 458.5 144 457.7 L144 457.5"/> + <path stroke="none" fill="#B1B4C9" d="M63.75 412.25 L62.3 417.7 66.1 418.25 Q69.55 418.4 72.1 417.55 L72.4 417.4 72.5 417.4 72.7 417.3 71.45 412.55 63.75 412.25 M62.2 410.25 L73 410.65 75.05 418.45 74.35 418.7 73.15 419.25 Q70.15 420.45 66 420.25 62.5 420.1 59.85 419 L62.2 410.25 M76.05 410.9 L80.55 411.4 78.35 419.6 76.05 410.9 M54.25 410.5 L59.2 410.3 56.7 419.6 54.25 410.5"/> + <path stroke="none" fill="#96C23A" d="M54.25 410.5 L51.35 410.7 48.5 410.95 Q46.4 410.85 44.9 409.3 L44.3 408.6 Q43.35 406.65 43.85 405.05 44.2 404.2 44.9 403.5 46.4 402 48.5 402 L86.7 402 Q88.8 402 90.3 403.5 91.8 405 91.8 407.1 91.8 409.2 90.3 410.7 88.8 412.2 86.7 412 L83.5 411.7 81.2 411.45 80.55 411.4 76.05 410.9 73 410.65 62.2 410.25 59.2 410.3 54.25 410.5 M30.05 429.75 L29.7 429.8 Q27.65 430.1 26.15 429.3 24.55 428.4 24.55 426.9 24.55 426.15 24.95 425.5 25.35 424.8 26.15 424.25 27.7 423.15 29.8 423.15 L41.7 423.1 Q42.75 423.1 43.45 423.8 44.1 424.45 44.05 425.45 44.05 426.45 43.3 427.2 42.55 428 41.45 428.15 L30.05 429.75 M54.7 438.2 L58.7 438.2 61.7 438.2 62.4 438.2 63.9 438.2 73.4 438.2 76.35 438.2 79 438.2 80.35 438.2 83.35 438.2 86.7 438.2 Q88.8 438.2 90.3 439.7 91.8 441.2 91.8 443.3 91.8 445.4 90.3 446.9 88.8 448.4 86.7 448.2 L84.75 448 81.95 447.75 81.2 447.65 78.85 447.4 58.35 446.55 55.95 446.6 48.5 447.15 Q46.4 447.05 44.9 445.5 L44.3 444.8 Q43.35 442.85 43.85 441.25 44.2 440.4 44.9 439.7 46.4 438.2 48.5 438.2 L51.75 438.2 54.7 438.2 M104.05 437.3 Q105.4 439 105.4 440.95 105.4 442.95 104.05 444.65 L104.05 437.3 M99.9 447.55 L98.25 448.1 97.55 448.3 97.3 448.3 Q98 443.55 97.7 438.75 L97.15 433.65 97.3 433.6 97.55 433.65 98.25 433.85 99.9 434.4 99.9 447.55"/> + <path stroke="none" fill="#D0D3E5" d="M99.9 447.55 L99.9 434.4 99.9 421 Q99.9 420.15 100.5 419.55 101.15 418.95 102 418.95 102.85 418.95 103.45 419.55 104.05 420.15 104.05 421 L104.05 437.3 104.05 444.65 104.05 462.15 Q104.05 463 103.45 463.6 102.85 464.25 102 464.25 101.15 464.25 100.5 463.6 99.9 463 99.9 462.15 L99.9 447.55 M73 410.65 L76.05 410.9 78.35 419.6 80.55 411.4 81.2 411.45 83.5 411.7 81.8 417.95 81.3 419.9 79.85 425.2 83.35 438.2 80.35 438.2 78.5 431.35 78.35 430.75 76.95 436.05 76.65 437.2 76.35 438.2 73.4 438.2 73.7 437 74 435.85 76.85 425.2 76.2 422.7 75.05 418.45 73 410.65 M51.35 410.7 L54.25 410.5 56.7 419.6 59.2 410.3 62.2 410.25 59.85 419 58.75 423.25 58.2 425.2 60.8 434.95 61.1 436.05 61.7 438.2 58.7 438.2 58.05 435.85 57.8 434.75 56.7 430.75 55.65 434.6 55.4 435.65 54.7 438.2 51.75 438.2 52.5 435.4 52.75 434.4 55.2 425.2 53.6 419.2 51.35 410.7"/> + <path stroke="none" fill="#729529" d="M51.35 410.7 L53.6 419.2 42.55 419.55 Q35.1 411.4 26.65 413.5 24.1 414.15 22.95 415.55 21.6 417.25 22.2 419.95 L22.95 422.2 Q23.7 423.95 24.95 425.5 24.55 426.15 24.55 426.9 24.55 428.4 26.15 429.3 27.65 430.1 29.7 429.8 L30.05 429.75 33.75 433.15 34.65 434.05 Q40.3 439.95 44.4 447.35 45.25 448.9 46.25 450.3 44.8 450.3 43.5 451.1 41.35 452.35 40.7 454.75 L40.55 455.55 40.7 455.55 41.25 456.1 39.05 456.85 38.75 456.4 Q38.5 455.9 38.6 455.3 L38.75 454.3 38.8 454.25 Q39.65 451.05 42.5 449.4 L43.1 449.05 42.65 448.35 Q38.7 441.2 33.25 435.5 L33.2 435.45 32.35 434.6 29.4 431.85 Q27 432.05 25.2 431.1 L25.2 431.05 Q22.45 429.5 22.55 426.9 L22.7 425.8 Q21.75 424.45 21.1 423 L21.1 422.95 20.3 420.45 20.25 420.4 Q19.4 416.65 21.4 414.3 22.85 412.4 26.15 411.55 L26.2 411.55 Q35.3 409.15 43.4 417.5 L51 417.25 49.85 412.85 48.7 412.95 48.4 412.95 Q45.5 412.8 43.5 410.7 L43.5 410.75 42.7 409.8 42.5 409.5 Q41.15 406.7 41.95 404.45 L42 404.3 Q42.5 403.1 43.5 402.1 45.55 400 48.5 400 L86.7 400 Q89.65 400 91.75 402.1 93.8 404.15 93.8 407.1 93.8 410.05 91.75 412.15 89.55 414.3 86.5 414 L84.95 413.85 83.85 418.05 81.8 417.95 83.5 411.7 86.7 412 Q88.8 412.2 90.3 410.7 91.8 409.2 91.8 407.1 91.8 405 90.3 403.5 88.8 402 86.7 402 L48.5 402 Q46.4 402 44.9 403.5 44.2 404.2 43.85 405.05 43.35 406.65 44.3 408.6 L44.9 409.3 Q46.4 410.85 48.5 410.95 L51.35 410.7 M68 464.35 Q63.95 463.65 59.8 462.45 56.45 461.5 53.6 459.85 L52.85 459.4 52.8 459.4 52.65 460.4 50.95 458.75 51.85 458.55 52 458.6 52.25 457.85 52.45 456.7 Q56 459.25 60.35 460.5 64.2 461.6 68 462.3 L68 464.35"/> + <path stroke="none" fill="#3D3D3D" d="M59.85 419 Q62.5 420.1 66 420.25 70.15 420.45 73.15 419.25 L74.35 418.7 75.05 418.45 76.2 422.7 74.8 423.3 Q71.05 424.85 65.8 424.6 61.8 424.4 58.75 423.25 L59.85 419 M69.95 462.6 L69.95 462.25 Q69.95 458.85 72.35 456.4 74.8 454 78.2 454 81.65 454 84.05 456.4 86.5 458.85 86.5 462.25 L86.5 462.7 Q86.35 465.85 84.05 468.1 81.65 470.55 78.2 470.55 74.8 470.55 72.35 468.1 70.05 465.8 69.95 462.6 M77.05 461.1 L76.95 461.25 76.8 461.45 Q76.55 461.8 76.55 462.25 L76.6 462.65 76.6 462.7 76.85 463.2 77.05 463.45 Q77.55 463.9 78.2 463.9 78.9 463.9 79.4 463.45 L79.6 463.25 79.8 462.65 79.85 462.25 79.65 461.5 79.4 461.1 Q78.9 460.6 78.2 460.6 77.55 460.6 77.05 461.1 M41.25 456.1 L42 456.6 44 457.5 44 457.7 Q44 458.5 44.55 459.15 45.15 459.75 46 459.75 46.85 459.75 47.4 459.15 L47.8 458.55 50.15 458.75 50.95 458.75 Q50.6 460.15 49.55 461.25 48.1 462.75 46 462.75 43.9 462.75 42.45 461.25 41 459.8 41 457.7 41 456.85 41.25 456.1"/> + <path stroke="none" fill="#ACDD46" d="M41.25 456.1 L40.7 455.55 40.55 455.55 40.7 454.75 Q41.35 452.35 43.5 451.1 44.8 450.3 46.25 450.3 45.25 448.9 44.4 447.35 40.3 439.95 34.65 434.05 L52.5 435.4 51.75 438.2 48.5 438.2 Q46.4 438.2 44.9 439.7 44.2 440.4 43.85 441.25 43.35 442.85 44.3 444.8 L44.9 445.5 Q46.4 447.05 48.5 447.15 L55.95 446.6 51.3 452.75 51.65 453.25 Q52.25 454.3 52.4 455.4 L58.35 446.55 78.85 447.4 78.2 454 Q74.8 454 72.35 456.4 69.95 458.85 69.95 462.25 L69.95 462.6 68 462.3 Q64.2 461.6 60.35 460.5 56 459.25 52.45 456.7 L52.25 457.85 52 458.6 51.85 458.55 50.95 458.75 50.15 458.75 47.8 458.55 46 458.1 44 457.5 42 456.6 41.25 456.1 M33.75 433.15 L30.05 429.75 41.45 428.15 Q42.55 428 43.3 427.2 44.05 426.45 44.05 425.45 44.1 424.45 43.45 423.8 42.75 423.1 41.7 423.1 L29.8 423.15 Q27.7 423.15 26.15 424.25 25.35 424.8 24.95 425.5 23.7 423.95 22.95 422.2 L22.2 419.95 Q21.6 417.25 22.95 415.55 24.1 414.15 26.65 413.5 35.1 411.4 42.55 419.55 L53.6 419.2 55.2 425.2 52.75 434.4 33.75 433.15 M58.75 423.25 Q61.8 424.4 65.8 424.6 71.05 424.85 74.8 423.3 L76.2 422.7 76.85 425.2 74 435.85 60.8 434.95 58.2 425.2 58.75 423.25 M54.7 438.2 L55.4 435.65 58.05 435.85 58.7 438.2 54.7 438.2 M55.65 434.6 L56.7 430.75 57.8 434.75 55.65 434.6 M79 438.2 L76.35 438.2 76.65 437.2 78.95 437.35 79 438.2 M73.4 438.2 L63.9 438.2 65.1 436.35 73.7 437 73.4 438.2 M62.4 438.2 L61.7 438.2 61.1 436.05 63.85 436.25 62.4 438.2 M76.95 436.05 L78.35 430.75 78.5 431.35 78.9 436.15 76.95 436.05 M57.55 453.2 Q56.85 453.2 56.3 453.75 55.8 454.2 55.8 454.9 L55.75 455 Q55.75 455.7 56.2 456.2 L56.3 456.3 Q56.85 456.85 57.55 456.85 58.25 456.85 58.75 456.35 L58.85 456.3 Q59.35 455.75 59.35 455 59.35 454.25 58.85 453.75 58.35 453.2 57.55 453.2"/> + <path stroke="none" fill="#C2EC6A" d="M57.55 453.2 Q58.35 453.2 58.85 453.75 59.35 454.25 59.35 455 59.35 455.75 58.85 456.3 L58.75 456.35 Q58.25 456.85 57.55 456.85 56.85 456.85 56.3 456.3 L56.2 456.2 Q55.75 455.7 55.75 455 L55.8 454.9 Q55.8 454.2 56.3 453.75 56.85 453.2 57.55 453.2 M34.65 434.05 L33.75 433.15 52.75 434.4 52.5 435.4 34.65 434.05 M60.8 434.95 L74 435.85 73.7 437 65.1 436.35 63.9 438.2 62.4 438.2 63.85 436.25 61.1 436.05 60.8 434.95 M58.05 435.85 L55.4 435.65 55.65 434.6 57.8 434.75 58.05 435.85 M55.95 446.6 L58.35 446.55 52.4 455.4 Q52.25 454.3 51.65 453.25 L51.3 452.75 55.95 446.6 M76.95 436.05 L78.9 436.15 78.95 437.35 76.65 437.2 76.95 436.05"/> + <path stroke="none" fill="#989AA7" d="M80.35 438.2 L79 438.2 78.95 437.35 78.9 436.15 78.5 431.35 80.35 438.2"/> + <path stroke="none" fill="#1C1C1C" d="M88.3 464.45 Q87.7 467.3 85.5 469.5 L85.45 469.55 Q82.45 472.55 78.2 472.55 73.95 472.55 70.95 469.55 68.8 467.4 68.2 464.6 L68.15 464.35 68 464.35 68 462.3 69.95 462.6 Q70.05 465.8 72.35 468.1 74.8 470.55 78.2 470.55 81.65 470.55 84.05 468.1 86.35 465.85 86.5 462.7 L88.55 462.4 88.3 464.45 M52.65 460.4 L52.5 460.5 52.45 460.55 51 462.65 Q48.95 464.75 46 464.75 43.05 464.75 41.05 462.7 L41 462.65 Q39 460.6 39 457.7 L39.05 456.85 41.25 456.1 Q41 456.85 41 457.7 41 459.8 42.45 461.25 43.9 462.75 46 462.75 48.1 462.75 49.55 461.25 50.6 460.15 50.95 458.75 L52.65 460.4"/> + <path stroke="none" fill="#F4F4F4" d="M77.05 461.1 Q77.55 460.6 78.2 460.6 78.9 460.6 79.4 461.1 L79.65 461.5 79.85 462.25 79.8 462.65 79.6 463.25 79.4 463.45 Q78.9 463.9 78.2 463.9 77.55 463.9 77.05 463.45 L76.85 463.2 76.6 462.7 76.6 462.65 76.55 462.25 Q76.55 461.8 76.8 461.45 L76.95 461.25 77.05 461.1 M44 457.5 L46 458.1 47.8 458.55 47.4 459.15 Q46.85 459.75 46 459.75 45.15 459.75 44.55 459.15 44 458.5 44 457.7 L44 457.5"/> + <path stroke="none" fill="#B2B4C2" d="M78.85 447.4 L81.2 447.65 81.95 447.75 Q81.4 448.2 81.4 449 81.4 449.7 81.95 450.25 82.45 450.8 83.2 450.8 83.95 450.8 84.5 450.25 85 449.7 85 449 L84.75 448 86.7 448.2 Q88.8 448.4 90.3 446.9 91.8 445.4 91.8 443.3 91.8 441.2 90.3 439.7 88.8 438.2 86.7 438.2 L83.35 438.2 79.85 425.2 81.3 419.9 89.75 420.55 90.5 420.65 Q93.1 421 94.4 423.55 L94.4 423.6 Q96.3 428.65 97.15 433.65 L97.7 438.75 Q98 443.55 97.3 448.3 96.45 453.6 94.4 458.8 L94.35 458.9 Q92.95 461.35 90.45 462 L89.95 462.1 88.55 462.4 86.5 462.7 86.5 462.25 Q86.5 458.85 84.05 456.4 81.65 454 78.2 454 L78.85 447.4 M85 425.15 Q85 424.4 84.5 423.85 83.95 423.35 83.2 423.35 82.45 423.35 81.95 423.85 81.4 424.4 81.4 425.15 81.4 425.9 81.95 426.4 82.45 426.95 83.2 426.95 83.95 426.95 84.5 426.4 85 425.9 85 425.15"/> + <path stroke="none" fill="#8A8B98" d="M83.85 418.05 L84.45 418.1 89.95 418.55 90.05 418.6 90.75 418.7 90.8 418.7 Q94.4 419.15 96.2 422.65 L96.3 422.9 96.35 423.1 97.9 427.95 97.9 421 Q97.9 419.3 99.1 418.15 L99.15 418.1 Q100.4 416.95 102 416.95 103.7 416.95 104.9 418.15 106.05 419.3 106.05 421 L106.05 436.65 Q107.4 438.65 107.4 440.95 107.4 443.3 106.05 445.35 L106.05 462.15 Q106.05 463.85 104.9 465.05 L104.95 464.95 Q103.7 466.25 102 466.25 100.35 466.3 99.1 465.05 97.9 463.85 97.9 462.15 L97.9 454.7 96.4 459.15 95.9 460.2 Q94.1 463.15 90.95 463.95 L90.85 463.95 90.35 464.05 90.35 464.1 88.3 464.45 88.55 462.4 89.95 462.1 90.45 462 Q92.95 461.35 94.35 458.9 L94.4 458.8 Q96.45 453.6 97.3 448.3 L97.55 448.3 98.25 448.1 99.9 447.55 99.9 462.15 Q99.9 463 100.5 463.6 101.15 464.25 102 464.25 102.85 464.25 103.45 463.6 104.05 463 104.05 462.15 L104.05 444.65 Q105.4 442.95 105.4 440.95 105.4 439 104.05 437.3 L104.05 421 Q104.05 420.15 103.45 419.55 102.85 418.95 102 418.95 101.15 418.95 100.5 419.55 99.9 420.15 99.9 421 L99.9 434.4 98.25 433.85 97.55 433.65 97.3 433.6 97.15 433.65 Q96.3 428.65 94.4 423.6 L94.4 423.55 Q93.1 421 90.5 420.65 L89.75 420.55 81.3 419.9 81.8 417.95 83.85 418.05"/> + <path stroke="none" fill="#9698A6" d="M81.95 447.75 L84.75 448 85 449 Q85 449.7 84.5 450.25 83.95 450.8 83.2 450.8 82.45 450.8 81.95 450.25 81.4 449.7 81.4 449 81.4 448.2 81.95 447.75 M85 425.15 Q85 425.9 84.5 426.4 83.95 426.95 83.2 426.95 82.45 426.95 81.95 426.4 81.4 425.9 81.4 425.15 81.4 424.4 81.95 423.85 82.45 423.35 83.2 423.35 83.95 423.35 84.5 423.85 85 424.4 85 425.15"/> + <path stroke="none" fill="#DFE1EE" d="M102.05 419.9 Q102.55 419.85 102.9 420.2 103.25 420.55 103.25 421.05 L103.25 441.1 100.85 441.1 100.85 421.1 Q100.85 420.6 101.2 420.25 101.6 419.9 102.05 419.9"/> + <path stroke="none" fill="#725639" d="M340 507.95 L340 505.8 373.55 503.55 381.15 511.15 430.2 514.85 474.05 503.15 496.05 478.2 496.7 477.7 497.5 477.5 587.9 473.75 588.7 473.9 648.85 496.9 689.05 496.9 713.2 482.25 Q713.65 481.95 714.2 481.95 L776.2 481.95 Q777 481.95 777.6 482.5 L810.65 514.1 848.7 514.1 849.45 514.25 874.5 524.55 912.1 524.55 937.65 497.55 Q938.15 497 938.9 496.9 L976.35 493.25 997.5 473.55 Q998.05 473 998.8 473 L1083.25 470 1084.15 470.2 Q1084.6 470.4 1084.9 470.8 L1103.9 495.65 1148.5 505.85 1148.5 507.9 1102.7 497.4 1083.3 472 998.85 475 977.2 495.15 939.1 498.9 912.95 526.55 874.1 526.55 848.7 516.1 809.85 516.1 776.2 483.95 714.2 483.95 689.55 498.9 648.45 498.9 587.95 475.75 497.55 479.5 475.15 504.9 430.35 516.85 380.25 513.1 372.55 505.4 340 507.95"/> + <path stroke="none" fill="#A87F54" d="M340 507.95 L372.55 505.4 380.25 513.1 430.35 516.85 475.15 504.9 497.55 479.5 587.95 475.75 648.45 498.9 689.55 498.9 714.2 483.95 776.2 483.95 809.85 516.1 848.7 516.1 874.1 526.55 912.95 526.55 939.1 498.9 977.2 495.15 998.85 475 1083.3 472 1102.7 497.4 1148.5 507.9 1148.5 514.95 1099.2 500.5 1079.2 475.25 1000.2 480 980.45 502 935.2 509.25 914.7 530.25 876.25 531.5 849 520 809.5 522.5 773.5 487.75 715.75 486.5 693.25 506.5 649.25 504 588.25 482 493.75 489.75 476.25 507.75 429.25 523 380 517 371.75 509.55 340 515.05 340 507.95 M1086.95 510.4 L1080.95 506.05 1079.85 496.75 1087.15 495.1 1092.8 506.05 1086.95 510.4 M1105.45 508.65 L1106.2 513.4 1101.25 517.95 1093.05 516.7 1090.35 513.25 1096.35 508.65 1105.45 508.65 M528.5 515.25 L522.5 519.6 516.65 515.25 522.3 504.3 529.6 505.95 528.5 515.25 M516.65 504.2 L510.65 514.75 502.8 514.75 497 504.95 503.75 496.2 514.5 496.2 516.65 504.2 M504 520.85 L513.1 520.85 519.1 525.45 516.4 528.9 508.2 530.15 503.25 525.6 504 520.85"/> + <path stroke="none" fill="#97714A" d="M504 520.85 L503.25 525.6 508.2 530.15 516.4 528.9 519.1 525.45 513.1 520.85 504 520.85 M1148.5 514.95 L1148.5 541.25 340 541.25 340 515.05 371.75 509.55 380 517 429.25 523 476.25 507.75 493.75 489.75 588.25 482 649.25 504 693.25 506.5 715.75 486.5 773.5 487.75 809.5 522.5 849 520 876.25 531.5 914.7 530.25 935.2 509.25 980.45 502 1000.2 480 1079.2 475.25 1099.2 500.5 1148.5 514.95 M1105.45 508.65 L1096.35 508.65 1090.35 513.25 1093.05 516.7 1101.25 517.95 1106.2 513.4 1105.45 508.65 M1086.95 510.4 L1092.8 506.05 1087.15 495.1 1079.85 496.75 1080.95 506.05 1086.95 510.4 M516.65 504.2 L514.5 496.2 503.75 496.2 497 504.95 502.8 514.75 510.65 514.75 516.65 504.2 M528.5 515.25 L529.6 505.95 522.3 504.3 516.65 515.25 522.5 519.6 528.5 515.25"/> + <path stroke="none" fill="#FFFFFF" d="M1148.5 587.9 L1102.7 577.4 1083.3 552 998.85 555 977.2 575.15 939.1 578.9 912.95 606.55 874.1 606.55 848.7 596.1 809.85 596.1 776.2 563.95 714.2 563.95 689.55 578.9 648.45 578.9 587.95 555.75 497.55 559.5 475.15 584.9 430.35 596.85 380.25 593.1 372.55 585.4 340 587.95 340 585.8 373.55 583.55 381.15 591.15 430.2 594.85 474.05 583.15 496.05 558.2 496.7 557.7 497.5 557.5 587.9 553.75 588.7 553.9 648.85 576.9 689.05 576.9 713.2 562.25 Q713.65 561.95 714.2 561.95 L776.2 561.95 Q777 561.95 777.6 562.5 L810.65 594.1 848.7 594.1 849.45 594.25 874.5 604.55 912.1 604.55 937.65 577.55 Q938.15 577 938.9 576.9 L976.35 573.25 997.5 553.55 Q998.05 553 998.8 553 L1083.25 550 1084.15 550.2 Q1084.6 550.4 1084.9 550.8 L1103.9 575.65 1148.5 585.85 1148.5 587.9"/> + <path stroke="none" fill="#A87F54" d="M1080.95 586.05 L1079.85 576.75 1087.15 575.1 1092.8 586.05 1086.95 590.4 1080.95 586.05 M1106.2 593.4 L1101.25 597.95 1093.05 596.7 1090.35 593.25 1096.35 588.65 1105.45 588.65 1106.2 593.4 M514.5 576.2 L516.65 584.2 510.65 594.75 502.8 594.75 497 584.95 503.75 576.2 514.5 576.2 M529.6 585.95 L528.5 595.25 522.5 599.6 516.65 595.25 522.3 584.3 529.6 585.95 M503.25 605.6 L504 600.85 513.1 600.85 519.1 605.45 516.4 608.9 508.2 610.15 503.25 605.6"/> + <path stroke="none" fill="#97714A" d="M503.25 605.6 L508.2 610.15 516.4 608.9 519.1 605.45 513.1 600.85 504 600.85 503.25 605.6 M340 595.05 L371.75 589.55 380 597 429.25 603 476.25 587.75 493.75 569.75 535.25 566.35 545.25 575.2 552.55 564.95 560.65 564.25 567 569.95 570.15 563.5 588.25 562 649.25 584 693.25 586.5 715.75 566.5 742.4 567.1 748.5 576.45 759.45 567.45 773.5 567.75 809.5 602.5 849 600 876.25 611.5 914.7 610.25 935.2 589.25 950.65 586.8 959.5 592.7 962.75 584.85 980.45 582 1000.2 560 1034.05 558 1041.25 563.2 1044.8 557.35 1050.95 556.95 1058 566.2 1064.8 556.15 1079.2 555.25 1099.2 580.5 1148.5 594.95 1148.5 621.25 340 621.25 340 595.05 M1080.95 586.05 L1086.95 590.4 1092.8 586.05 1087.15 575.1 1079.85 576.75 1080.95 586.05 M1106.2 593.4 L1105.45 588.65 1096.35 588.65 1090.35 593.25 1093.05 596.7 1101.25 597.95 1106.2 593.4 M529.6 585.95 L522.3 584.3 516.65 595.25 522.5 599.6 528.5 595.25 529.6 585.95 M514.5 576.2 L503.75 576.2 497 584.95 502.8 594.75 510.65 594.75 516.65 584.2 514.5 576.2"/> + <path stroke="none" fill="#E9F6FF" d="M1148.5 594.95 L1099.2 580.5 1079.2 555.25 1064.8 556.15 1058 566.2 1050.95 556.95 1044.8 557.35 1041.25 563.2 1034.05 558 1000.2 560 980.45 582 962.75 584.85 959.5 592.7 950.65 586.8 935.2 589.25 914.7 610.25 876.25 611.5 849 600 809.5 602.5 773.5 567.75 759.45 567.45 748.5 576.45 742.4 567.1 715.75 566.5 693.25 586.5 649.25 584 588.25 562 570.15 563.5 567 569.95 560.65 564.25 552.55 564.95 545.25 575.2 535.25 566.35 493.75 569.75 476.25 587.75 429.25 603 380 597 371.75 589.55 340 595.05 340 587.95 372.55 585.4 380.25 593.1 430.35 596.85 475.15 584.9 497.55 559.5 587.95 555.75 648.45 578.9 689.55 578.9 714.2 563.95 776.2 563.95 809.85 596.1 848.7 596.1 874.1 606.55 912.95 606.55 939.1 578.9 977.2 575.15 998.85 555 1083.3 552 1102.7 577.4 1148.5 587.9 1148.5 594.95"/> + <path stroke="none" fill="#FFFFFF" d="M340 667.95 L340 665.8 373.55 663.55 381.15 671.15 430.2 674.85 474.05 663.15 496.05 638.2 496.7 637.7 497.5 637.5 587.9 633.75 588.7 633.9 648.85 656.9 689.05 656.9 713.2 642.25 Q713.65 641.95 714.2 641.95 L776.2 641.95 Q777 641.95 777.6 642.5 L810.65 674.1 848.7 674.1 849.45 674.25 874.5 684.55 912.1 684.55 937.65 657.55 Q938.15 657 938.9 656.9 L976.35 653.25 997.5 633.55 Q998.05 633 998.8 633 L1083.25 630 1084.15 630.2 Q1084.6 630.4 1084.9 630.8 L1103.9 655.65 1148.5 665.85 1148.5 667.9 1102.7 657.4 1083.3 632 998.85 635 977.2 655.15 939.1 658.9 912.95 686.55 874.1 686.55 848.7 676.1 809.85 676.1 776.2 643.95 714.2 643.95 689.55 658.9 648.45 658.9 587.95 635.75 497.55 639.5 475.15 664.9 430.35 676.85 380.25 673.1 372.55 665.4 340 667.95"/> + <path stroke="none" fill="#E9F6FF" d="M340 667.95 L372.55 665.4 380.25 673.1 430.35 676.85 475.15 664.9 497.55 639.5 587.95 635.75 648.45 658.9 689.55 658.9 714.2 643.95 776.2 643.95 809.85 676.1 848.7 676.1 874.1 686.55 912.95 686.55 939.1 658.9 977.2 655.15 998.85 635 1083.3 632 1102.7 657.4 1148.5 667.9 1148.5 674.95 1099.2 660.5 1079.2 635.25 1064.8 636.15 1058 646.2 1050.95 636.95 1044.8 637.35 1041.25 643.2 1034.05 638 1000.2 640 980.45 662 962.75 664.85 959.5 672.7 950.65 666.8 935.2 669.25 914.7 690.25 876.25 691.5 849 680 809.5 682.5 773.5 647.75 759.45 647.45 748.5 656.45 742.4 647.1 715.75 646.5 693.25 666.5 649.25 664 588.25 642 570.15 643.5 567 649.95 560.65 644.25 552.55 644.95 545.25 655.2 535.25 646.35 493.75 649.75 476.25 667.75 429.25 683 380 677 371.75 669.55 340 675.05 340 667.95"/> + <path stroke="none" fill="#CFEAF5" d="M1148.5 674.95 L1148.5 701.25 340 701.25 340 675.05 371.75 669.55 380 677 429.25 683 476.25 667.75 493.75 649.75 535.25 646.35 545.25 655.2 552.55 644.95 560.65 644.25 567 649.95 570.15 643.5 588.25 642 649.25 664 693.25 666.5 715.75 646.5 742.4 647.1 748.5 656.45 759.45 647.45 773.5 647.75 809.5 682.5 849 680 876.25 691.5 914.7 690.25 935.2 669.25 950.65 666.8 959.5 672.7 962.75 664.85 980.45 662 1000.2 640 1034.05 638 1041.25 643.2 1044.8 637.35 1050.95 636.95 1058 646.2 1064.8 636.15 1079.2 635.25 1099.2 660.5 1148.5 674.95 M1079.85 656.75 L1080.95 666.05 1086.95 670.4 1092.8 666.05 1087.15 655.1 1079.85 656.75 M1093.05 676.7 L1101.25 677.95 1106.2 673.4 1105.45 668.65 1096.35 668.65 1090.35 673.25 1093.05 676.7 M522.3 664.3 L516.65 675.25 522.5 679.6 528.5 675.25 529.6 665.95 522.3 664.3 M497 664.95 L502.8 674.75 510.65 674.75 516.65 664.2 514.5 656.2 503.75 656.2 497 664.95 M504 680.85 L503.25 685.6 508.2 690.15 516.4 688.9 519.1 685.45 513.1 680.85 504 680.85"/> + <path stroke="none" fill="#BCDEEC" d="M504 680.85 L513.1 680.85 519.1 685.45 516.4 688.9 508.2 690.15 503.25 685.6 504 680.85 M1093.05 676.7 L1090.35 673.25 1096.35 668.65 1105.45 668.65 1106.2 673.4 1101.25 677.95 1093.05 676.7 M1079.85 656.75 L1087.15 655.1 1092.8 666.05 1086.95 670.4 1080.95 666.05 1079.85 656.75 M497 664.95 L503.75 656.2 514.5 656.2 516.65 664.2 510.65 674.75 502.8 674.75 497 664.95 M522.3 664.3 L529.6 665.95 528.5 675.25 522.5 679.6 516.65 675.25 522.3 664.3"/> + <path stroke="none" fill="#74982B" d="M340 347.95 L340 345.8 373.55 343.55 381.15 351.15 430.2 354.85 474.05 343.15 496.05 318.2 496.7 317.7 497.5 317.5 587.9 313.75 588.7 313.9 648.85 336.9 689.05 336.9 713.2 322.25 Q713.65 321.95 714.2 321.95 L776.2 321.95 Q777 321.95 777.6 322.5 L810.65 354.1 848.7 354.1 849.45 354.25 874.5 364.55 912.1 364.55 937.65 337.55 Q938.15 337 938.9 336.9 L976.35 333.25 997.5 313.55 Q998.05 313 998.8 313 L1083.25 310 1084.15 310.2 Q1084.6 310.4 1084.9 310.8 L1103.9 335.65 1148.5 345.85 1148.5 347.9 1102.7 337.4 1083.3 312 998.85 315 977.2 335.15 939.1 338.9 912.95 366.55 874.1 366.55 848.7 356.1 809.85 356.1 776.2 323.95 714.2 323.95 689.55 338.9 648.45 338.9 587.95 315.75 497.55 319.5 475.15 344.9 430.35 356.85 380.25 353.1 372.55 345.4 340 347.95"/> + <path stroke="none" fill="#97714A" d="M1148.5 354.95 L1148.5 381.25 340 381.25 340 355.05 371.75 349.55 380 357 429.25 363 476.25 347.75 493.75 329.75 588.25 322 649.25 344 693.25 346.5 715.75 326.5 773.5 327.75 809.5 362.5 849 360 876.25 371.5 914.7 370.25 935.2 349.25 980.45 342 1000.2 320 1079.2 315.25 1099.2 340.5 1148.5 354.95 M1079.85 336.75 L1080.95 346.05 1086.95 350.4 1092.8 346.05 1087.15 335.1 1079.85 336.75 M1093.05 356.7 L1101.25 357.95 1106.2 353.4 1105.45 348.65 1096.35 348.65 1090.35 353.25 1093.05 356.7 M508.2 370.15 L516.4 368.9 519.1 365.45 513.1 360.85 504 360.85 503.25 365.6 508.2 370.15 M516.65 355.25 L522.5 359.6 528.5 355.25 529.6 345.95 522.3 344.3 516.65 355.25 M514.5 336.2 L503.75 336.2 497 344.95 502.8 354.75 510.65 354.75 516.65 344.2 514.5 336.2"/> + <path stroke="none" fill="#96C23A" d="M1148.5 347.9 L1148.5 354.95 1099.2 340.5 1079.2 315.25 1000.2 320 980.45 342 935.2 349.25 914.7 370.25 876.25 371.5 849 360 809.5 362.5 773.5 327.75 715.75 326.5 693.25 346.5 649.25 344 588.25 322 493.75 329.75 476.25 347.75 429.25 363 380 357 371.75 349.55 340 355.05 340 347.95 372.55 345.4 380.25 353.1 430.35 356.85 475.15 344.9 497.55 319.5 587.95 315.75 648.45 338.9 689.55 338.9 714.2 323.95 776.2 323.95 809.85 356.1 848.7 356.1 874.1 366.55 912.95 366.55 939.1 338.9 977.2 335.15 998.85 315 1083.3 312 1102.7 337.4 1148.5 347.9"/> + <path stroke="none" fill="#A87F54" d="M1093.05 356.7 L1090.35 353.25 1096.35 348.65 1105.45 348.65 1106.2 353.4 1101.25 357.95 1093.05 356.7 M1079.85 336.75 L1087.15 335.1 1092.8 346.05 1086.95 350.4 1080.95 346.05 1079.85 336.75 M514.5 336.2 L516.65 344.2 510.65 354.75 502.8 354.75 497 344.95 503.75 336.2 514.5 336.2 M516.65 355.25 L522.3 344.3 529.6 345.95 528.5 355.25 522.5 359.6 516.65 355.25 M508.2 370.15 L503.25 365.6 504 360.85 513.1 360.85 519.1 365.45 516.4 368.9 508.2 370.15"/> + <path stroke="none" fill="#9095A6" d="M1148.5 427.9 L1148.5 434.95 1099.2 420.5 1079.2 395.25 1000.2 400 980.45 422 935.2 429.25 914.7 450.25 876.25 451.5 849 440 809.5 442.5 773.5 407.75 715.75 406.5 693.25 426.5 649.25 424 588.25 402 493.75 409.75 476.25 427.75 429.25 443 380 437 371.75 429.55 340 435.05 340 427.95 372.55 425.4 380.25 433.1 430.35 436.85 475.15 424.9 497.55 399.5 587.95 395.75 648.45 418.9 689.55 418.9 714.2 403.95 776.2 403.95 809.85 436.1 848.7 436.1 874.1 446.55 912.95 446.55 939.1 418.9 977.2 415.15 998.85 395 1083.3 392 1102.7 417.4 1148.5 427.9 M1079.85 416.75 L1087.15 415.1 1092.8 426.05 1086.95 430.4 1080.95 426.05 1079.85 416.75 M1106.2 433.4 L1101.25 437.95 1093.05 436.7 1090.35 433.25 1096.35 428.65 1105.45 428.65 1106.2 433.4 M528.5 435.25 L522.5 439.6 516.65 435.25 522.3 424.3 529.6 425.95 528.5 435.25 M503.75 416.2 L514.5 416.2 516.65 424.2 510.65 434.75 502.8 434.75 497 424.95 503.75 416.2 M504 440.85 L513.1 440.85 519.1 445.45 516.4 448.9 508.2 450.15 503.25 445.6 504 440.85"/> + <path stroke="none" fill="#656977" d="M340 427.95 L340 425.8 373.55 423.55 381.15 431.15 430.2 434.85 474.05 423.15 496.05 398.2 496.7 397.7 497.5 397.5 587.9 393.75 588.7 393.9 648.85 416.9 689.05 416.9 713.2 402.25 Q713.65 401.95 714.2 401.95 L776.2 401.95 Q777 401.95 777.6 402.5 L810.65 434.1 848.7 434.1 849.45 434.25 874.5 444.55 912.1 444.55 937.65 417.55 Q938.15 417 938.9 416.9 L976.35 413.25 997.5 393.55 Q998.05 393 998.8 393 L1083.25 390 1084.15 390.2 Q1084.6 390.4 1084.9 390.8 L1103.9 415.65 1148.5 425.85 1148.5 427.9 1102.7 417.4 1083.3 392 998.85 395 977.2 415.15 939.1 418.9 912.95 446.55 874.1 446.55 848.7 436.1 809.85 436.1 776.2 403.95 714.2 403.95 689.55 418.9 648.45 418.9 587.95 395.75 497.55 399.5 475.15 424.9 430.35 436.85 380.25 433.1 372.55 425.4 340 427.95"/> + <path stroke="none" fill="#838796" d="M1148.5 434.95 L1148.5 461.25 340 461.25 340 435.05 371.75 429.55 380 437 429.25 443 476.25 427.75 493.75 409.75 588.25 402 649.25 424 693.25 426.5 715.75 406.5 773.5 407.75 809.5 442.5 849 440 876.25 451.5 914.7 450.25 935.2 429.25 980.45 422 1000.2 400 1079.2 395.25 1099.2 420.5 1148.5 434.95 M1106.2 433.4 L1105.45 428.65 1096.35 428.65 1090.35 433.25 1093.05 436.7 1101.25 437.95 1106.2 433.4 M1079.85 416.75 L1080.95 426.05 1086.95 430.4 1092.8 426.05 1087.15 415.1 1079.85 416.75 M504 440.85 L503.25 445.6 508.2 450.15 516.4 448.9 519.1 445.45 513.1 440.85 504 440.85 M503.75 416.2 L497 424.95 502.8 434.75 510.65 434.75 516.65 424.2 514.5 416.2 503.75 416.2 M528.5 435.25 L529.6 425.95 522.3 424.3 516.65 435.25 522.5 439.6 528.5 435.25"/> + <path stroke="none" fill="#D0A600" d="M39.45 681.75 L44.55 688.3 Q45.2 689.2 46.3 689.3 47.4 689.45 48.25 688.8 L48.3 688.75 Q49.15 688.05 49.3 687 49.45 685.9 48.8 685 L43.7 678.45 Q43 677.6 41.95 677.45 40.8 677.3 39.95 678 L39.9 678.05 Q39.05 678.7 38.95 679.75 38.75 680.9 39.45 681.75 M38.7 676.45 Q40.15 675.2 42.2 675.5 L42.25 675.5 Q44.05 675.7 45.25 677.2 L45.3 677.25 50.4 683.8 50.45 683.85 Q51.55 685.4 51.3 687.3 51.05 689 49.75 690.2 L49.7 690.25 49.5 690.4 Q47.95 691.55 46.05 691.3 L46.15 691.3 Q44.1 691.1 42.95 689.5 L43 689.55 37.9 683 37.9 683.05 Q36.65 681.55 36.95 679.55 37.1 677.75 38.5 676.65 L38.55 676.6 38.7 676.45 M59.35 675.4 L59.3 675.4 Q61.15 674.6 62.9 675.35 L63.3 675.55 Q64.75 676.25 65.45 677.9 L65.5 678 Q66.2 679.7 65.5 681.45 L65.5 681.5 62.3 689.2 62.3 689.15 Q61.6 690.9 59.8 691.7 L59.75 691.7 Q58 692.4 56.25 691.7 L55.85 691.5 Q54.4 690.8 53.7 689.25 L53.65 689.1 Q52.95 687.3 53.65 685.6 L56.85 677.9 Q57.55 676.1 59.35 675.4 M58.7 678.65 L55.5 686.35 Q55.1 687.35 55.5 688.4 55.95 689.4 56.95 689.8 L57 689.85 Q58 690.25 59 689.85 60.05 689.4 60.45 688.4 L63.65 680.7 Q64.05 679.7 63.6 678.7 63.2 677.65 62.2 677.25 L62.15 677.2 60.1 677.25 Q59.1 677.65 58.7 678.65 M42.95 694.6 L34.65 694.6 Q33.55 694.6 32.75 695.35 32 696.15 32 697.25 L32 697.3 Q32 698.4 32.75 699.15 33.55 699.95 34.65 699.95 L42.95 699.95 Q44.05 699.95 44.8 699.15 45.6 698.4 45.6 697.3 L45.6 697.25 Q45.6 696.15 44.8 695.35 44.05 694.6 42.95 694.6 M47.6 697.25 L47.6 697.3 Q47.6 699.2 46.25 700.55 L46.2 700.6 Q44.85 701.95 42.95 701.95 L34.65 701.95 Q32.7 701.95 31.35 700.6 30 699.25 30 697.3 L30 697.25 Q30 695.35 31.3 694 L31.4 693.9 Q32.75 692.6 34.65 692.6 L42.95 692.6 Q44.9 692.6 46.25 693.95 47.6 695.3 47.6 697.25"/> + <path stroke="none" fill="#FFCC00" d="M39.45 681.75 Q38.75 680.9 38.95 679.75 39.05 678.7 39.9 678.05 L39.95 678 Q40.8 677.3 41.95 677.45 43 677.6 43.7 678.45 L48.8 685 Q49.45 685.9 49.3 687 49.15 688.05 48.3 688.75 L48.25 688.8 Q47.4 689.45 46.3 689.3 45.2 689.2 44.55 688.3 L39.45 681.75 M42.95 694.6 Q44.05 694.6 44.8 695.35 45.6 696.15 45.6 697.25 L45.6 697.3 Q45.6 698.4 44.8 699.15 44.05 699.95 42.95 699.95 L34.65 699.95 Q33.55 699.95 32.75 699.15 32 698.4 32 697.3 L32 697.25 Q32 696.15 32.75 695.35 33.55 694.6 34.65 694.6 L42.95 694.6 M58.7 678.65 Q59.1 677.65 60.1 677.25 L62.15 677.2 62.2 677.25 Q63.2 677.65 63.6 678.7 64.05 679.7 63.65 680.7 L60.45 688.4 Q60.05 689.4 59 689.85 58 690.25 57 689.85 L56.95 689.8 Q55.95 689.4 55.5 688.4 55.1 687.35 55.5 686.35 L58.7 678.65"/> + <path stroke="none" fill="#B8B8B8" d="M168.15 717.6 L166.95 720.15 Q164.7 723.85 159.95 726.6 155.2 729.25 151.05 729.35 L151 729.35 Q145.8 729.6 144.1 726.35 L144.1 726.3 143.55 725.45 136.15 723.35 Q133.45 722.8 132.05 720.45 L131.5 719.35 Q130.85 717.55 131.4 715.65 L131.6 715.15 Q132.15 713.4 133.6 712.25 L134.25 711.75 134.45 711.6 135.35 711.25 130.7 703.15 130.65 703.15 130.25 702.25 Q129.6 700.45 130.15 698.55 130.75 696.45 132.45 695.3 L132.95 694.95 Q135 693.85 137.3 694.35 L137.35 694.35 Q139.75 694.95 141.05 697.15 L143.25 701 144.65 700.15 144.7 700.1 Q149.4 697.45 153.65 697.25 L153.75 697.25 Q158.85 697.2 160.55 700.4 L167.65 712.65 Q169 714.8 168.15 717.6 M165.25 719.1 Q167.2 715.9 165.9 713.65 L158.8 701.4 Q157.5 699.2 153.75 699.25 149.9 699.45 145.65 701.85 143.9 702.85 142.65 703.95 L142.6 703.95 139.3 698.15 Q138.45 696.7 136.85 696.3 135.3 695.95 133.9 696.7 L133.85 696.8 Q132.5 697.55 132.05 699.1 L131.95 699.7 Q131.75 700.95 132.4 702.15 L138.7 713.05 Q136.95 712.6 135.35 713.4 L134.65 714 Q133.75 714.85 133.4 716 L133.3 716.15 133.2 716.6 Q132.95 718.1 133.75 719.4 134.7 721 136.5 721.35 L144.8 723.7 145.8 725.3 Q147.1 727.55 150.95 727.35 154.7 727.25 158.95 724.85 163.2 722.4 165.25 719.1"/> + <path stroke="none" fill="#FFFFFF" d="M165.25 719.1 Q163.2 722.4 158.95 724.85 154.7 727.25 150.95 727.35 147.1 727.55 145.8 725.3 L144.8 723.7 136.5 721.35 Q134.7 721 133.75 719.4 132.95 718.1 133.2 716.6 L133.3 716.15 133.4 716 Q133.75 714.85 134.65 714 L135.35 713.4 Q136.95 712.6 138.7 713.05 L132.4 702.15 Q131.75 700.95 131.95 699.7 L132.05 699.1 Q132.5 697.55 133.85 696.8 L133.9 696.7 Q135.3 695.95 136.85 696.3 138.45 696.7 139.3 698.15 L142.6 703.95 142.65 703.95 Q143.9 702.85 145.65 701.85 149.9 699.45 153.75 699.25 157.5 699.2 158.8 701.4 L165.9 713.65 Q167.2 715.9 165.25 719.1"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M131.5 719.35 L132.05 720.45 Q133.45 722.8 136.15 723.35 L143.55 725.45 144.1 726.3 144.1 726.35 Q145.8 729.6 151 729.35 L151.05 729.35 Q155.2 729.25 159.95 726.6 164.7 723.85 166.95 720.15 L168.15 717.6 Q169.2 720.4 166.95 724.15 164.7 727.85 159.95 730.6 155.2 733.25 151.05 733.35 L151 733.35 Q145.8 733.6 144.1 730.35 L144.1 730.3 143.55 729.45 136.15 727.35 Q133.45 726.8 132.05 724.45 130.7 722.2 131.4 719.65 L131.5 719.35"/> + <path stroke="none" fill="#B8B8B8" d="M88.15 717.6 L86.95 720.15 Q84.7 723.85 79.95 726.6 75.2 729.25 71.05 729.35 L71 729.35 Q65.8 729.6 64.1 726.35 L64.1 726.3 63.55 725.45 56.15 723.35 Q53.45 722.8 52.05 720.45 L51.5 719.35 Q50.85 717.55 51.4 715.65 L51.6 715.15 Q52.15 713.4 53.6 712.25 53.9 711.95 54.25 711.75 L54.45 711.6 55.35 711.25 50.7 703.15 50.65 703.15 50.25 702.25 Q49.6 700.45 50.15 698.55 50.75 696.45 52.45 695.3 L52.95 694.95 Q55 693.85 57.3 694.35 L57.35 694.35 Q59.75 694.95 61.05 697.15 L63.25 701 64.65 700.15 64.7 700.1 Q69.4 697.45 73.65 697.25 L73.75 697.25 Q78.85 697.2 80.55 700.4 L87.65 712.65 Q89 714.8 88.15 717.6 M85.25 719.1 Q87.2 715.9 85.9 713.65 L78.8 701.4 Q77.5 699.2 73.75 699.25 69.9 699.45 65.65 701.85 63.9 702.85 62.65 703.95 L62.6 703.95 59.3 698.15 Q58.45 696.7 56.85 696.3 55.3 695.95 53.9 696.7 L53.85 696.8 Q52.5 697.55 52.05 699.1 L51.95 699.7 Q51.75 700.95 52.4 702.15 L58.7 713.05 Q56.95 712.6 55.35 713.4 L54.65 714 Q53.75 714.85 53.4 716 L53.3 716.15 53.2 716.6 Q52.95 718.1 53.75 719.4 54.7 721 56.5 721.35 L64.8 723.7 65.8 725.3 Q67.1 727.55 70.95 727.35 74.7 727.25 78.95 724.85 83.2 722.4 85.25 719.1"/> + <path stroke="none" fill="#FFFFFF" d="M85.25 719.1 Q83.2 722.4 78.95 724.85 74.7 727.25 70.95 727.35 67.1 727.55 65.8 725.3 L64.8 723.7 56.5 721.35 Q54.7 721 53.75 719.4 52.95 718.1 53.2 716.6 L53.3 716.15 53.4 716 Q53.75 714.85 54.65 714 L55.35 713.4 Q56.95 712.6 58.7 713.05 L52.4 702.15 Q51.75 700.95 51.95 699.7 L52.05 699.1 Q52.5 697.55 53.85 696.8 L53.9 696.7 Q55.3 695.95 56.85 696.3 58.45 696.7 59.3 698.15 L62.6 703.95 62.65 703.95 Q63.9 702.85 65.65 701.85 69.9 699.45 73.75 699.25 77.5 699.2 78.8 701.4 L85.9 713.65 Q87.2 715.9 85.25 719.1"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M51.5 719.35 L52.05 720.45 Q53.45 722.8 56.15 723.35 L63.55 725.45 64.1 726.3 64.1 726.35 Q65.8 729.6 71 729.35 L71.05 729.35 Q75.2 729.25 79.95 726.6 84.7 723.85 86.95 720.15 L88.15 717.6 Q89.2 720.4 86.95 724.15 84.7 727.85 79.95 730.6 75.2 733.25 71.05 733.35 L71 733.35 Q65.8 733.6 64.1 730.35 L64.1 730.3 63.55 729.45 56.15 727.35 Q53.45 726.8 52.05 724.45 50.7 722.2 51.4 719.65 L51.5 719.35"/> + <path stroke="none" fill="#7B2B2B" d="M197.1 738.5 L197 738 Q197 737.2 197.6 736.6 L214.45 719.6 Q215 719 215.85 719 L280 719 Q280.85 719 281.45 719.6 282 720.15 282 721 L282 755.05 Q282 755.8 281.45 756.4 280.85 756.95 280 756.95 L215.85 756.95 Q215 756.95 214.45 756.35 L197.6 739.4 Q197.2 739 197.1 738.5 M280 754.95 L280 721 215.85 721 199 738 215.85 754.95 280 754.95"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M282 755.05 L282 758.95 Q282 759.8 281.45 760.4 280.85 760.95 280 760.95 L215.85 760.95 Q215 760.95 214.45 760.35 L197.6 743.4 Q197 742.8 197 742 L197.1 741.5 197 741 197.1 740.5 197 740 197.1 739.5 197 739 197.1 738.5 Q197.2 739 197.6 739.4 L214.45 756.35 Q215 756.95 215.85 756.95 L280 756.95 Q280.85 756.95 281.45 756.4 282 755.8 282 755.05"/> + <path stroke="none" fill="#E24A4A" d="M278 752.95 L278 723 216.7 723 201.85 738 216.7 752.95 278 752.95 M280 754.95 L215.85 754.95 199 738 215.85 721 280 721 280 754.95"/> + <path stroke="none" fill="#C83E3E" d="M278 752.95 L216.7 752.95 201.85 738 216.7 723 278 723 278 752.95"/> + <path stroke="none" fill="#FFFFFF" d="M245.75 731.6 L245.9 731.8 247.25 734.8 248.6 738 250 741.65 251.5 745.85 251.5 746.1 251.4 746.3 251.1 746.4 247.7 746.4 247.45 746.3 247.3 746.1 246.85 744.65 246.4 743.35 241.5 743.35 241.05 744.65 240.55 746.1 240.4 746.35 240.15 746.4 236.85 746.4 236.6 746.3 236.45 746.1 236.45 745.85 237.95 741.65 239.35 738 240.7 734.8 242.1 731.8 242.25 731.6 242.45 731.55 245.5 731.55 245.75 731.6 M253.5 731.9 Q253.6 731.75 253.75 731.75 L255.95 731.45 258.05 731.4 Q261.35 731.4 263.1 732.55 265 733.75 265 736.5 265 739.3 263.1 740.55 261.3 741.7 258 741.7 L257.4 741.7 257.4 746 257.3 746.3 256.95 746.4 253.8 746.4 253.5 746.3 253.4 746 253.4 732.15 253.5 731.9 M257.4 734.95 L257.4 738.2 258 738.2 Q259.5 738.2 260.25 737.8 260.85 737.45 260.85 736.5 L260.7 735.75 260.25 735.3 259.45 735 258.25 734.9 257.6 734.95 257.4 734.95 M244.35 737.35 L243.9 736.3 243.55 737.35 242.95 738.85 242.55 740 245.35 740 244.9 738.85 244.35 737.35 M225.1 734.95 L225 734.65 225 731.95 225.1 731.65 225.4 731.55 237.1 731.55 237.4 731.65 237.5 731.95 237.5 734.65 237.4 734.95 237.1 735.1 233.25 735.1 233.25 746 233.15 746.3 232.85 746.4 229.65 746.4 229.35 746.3 229.25 746 229.25 735.1 225.4 735.1 225.1 734.95"/> + <path stroke="none" fill="#7B2B2B" d="M197 705.1 L197 671 Q197 670.15 197.55 669.6 198.15 669 199 669 L263.15 669 Q264 669 264.55 669.6 L281.4 686.6 Q282 687.2 282 688 L281.9 688.5 281.4 689.4 264.55 706.35 Q264 706.95 263.15 706.95 L199 706.95 Q198.15 706.95 197.55 706.4 197 705.8 197 705.1 M199 671 L199 704.95 263.15 704.95 280 688 263.15 671 199 671"/> + <path stroke="none" fill="#E24A4A" d="M199 671 L263.15 671 280 688 263.15 704.95 199 704.95 199 671 M201 673 L201 702.95 262.3 702.95 277.15 688 262.3 673 201 673"/> + <path stroke="none" fill="#C83E3E" d="M201 673 L262.3 673 277.15 688 262.3 702.95 201 702.95 201 673"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M197 705.1 Q197 705.8 197.55 706.4 198.15 706.95 199 706.95 L263.15 706.95 Q264 706.95 264.55 706.35 L281.4 689.4 281.9 688.5 282 689 281.9 689.5 282 690 281.9 690.5 282 691 281.9 691.5 282 692 Q282 692.8 281.4 693.4 L264.55 710.35 Q264 710.95 263.15 710.95 L199 710.95 Q198.15 710.95 197.55 710.4 197 709.8 197 708.95 L197 705.1"/> + <path stroke="none" fill="#FFFFFF" d="M214.4 685.1 L214.1 684.95 214 684.65 214 681.95 214.1 681.65 214.4 681.55 226.1 681.55 226.4 681.65 226.5 681.95 226.5 684.65 226.4 684.95 226.1 685.1 222.25 685.1 222.25 696 222.15 696.3 221.85 696.4 218.65 696.4 218.35 696.3 218.25 696 218.25 685.1 214.4 685.1 M231.1 681.8 L231.25 681.6 231.45 681.55 234.5 681.55 234.75 681.6 234.9 681.8 236.25 684.8 237.6 688 239 691.65 240.5 695.85 240.5 696.1 240.4 696.3 240.1 696.4 236.7 696.4 236.45 696.3 236.3 696.1 235.85 694.65 235.4 693.35 230.5 693.35 230.05 694.65 229.55 696.1 229.4 696.35 229.15 696.4 225.85 696.4 225.6 696.3 225.45 696.1 225.45 695.85 226.95 691.65 228.35 688 229.7 684.8 231.1 681.8 M242.5 681.9 L242.75 681.75 244.95 681.45 247.05 681.4 Q250.35 681.4 252.1 682.55 254 683.75 254 686.5 254 689.3 252.1 690.55 250.3 691.7 247 691.7 L246.4 691.7 246.4 696 246.3 696.3 245.95 696.4 242.8 696.4 242.5 696.3 242.4 696 242.4 682.15 242.5 681.9 M249.25 685.3 L248.45 685 247.25 684.9 246.6 684.95 246.4 684.95 246.4 688.2 247 688.2 249.25 687.8 Q249.85 687.45 249.85 686.5 L249.7 685.75 249.25 685.3 M232.9 686.3 L232.55 687.35 231.95 688.85 231.55 690 234.35 690 233.9 688.85 233.35 687.35 232.9 686.3"/> + <path stroke="none" fill="#AD492E" d="M361.95 738.75 L360.95 738.1 Q360.35 737.9 359.8 738.1 L358.8 738.75 353 745.95 344.3 749.25 Q343.75 749.45 343.4 749.95 343 750.45 343 751.1 343 751.7 343.35 752.2 L348.45 759.95 348.9 769.2 Q348.95 769.8 349.3 770.3 L350.25 771 351.45 771.05 360.35 768.6 369.3 771.05 370.45 771 Q371.05 770.8 371.4 770.3 L371.8 769.2 372.25 759.95 377.35 752.2 377.65 751.1 Q377.65 750.45 377.3 749.95 376.9 749.45 376.35 749.25 L367.7 746 361.95 738.75 M361.6 736.2 L361.55 736.2 Q362.7 736.55 363.5 737.5 L368.95 744.3 377.05 747.35 377.1 747.35 Q378.2 747.8 378.95 748.8 L378.9 748.8 Q379.6 749.8 379.65 751.05 379.7 752.25 379 753.3 L374.2 760.6 373.8 769.3 Q373.75 770.5 373 771.5 372.25 772.5 371.1 772.9 L368.75 772.95 360.35 770.65 351.95 772.95 352 772.95 349.65 772.9 349.6 772.9 Q348.45 772.5 347.7 771.5 346.95 770.5 346.9 769.3 L346.45 760.6 341.65 753.3 Q340.95 752.25 341 751.05 341.05 749.8 341.75 748.8 342.45 747.8 343.6 747.35 L351.8 744.3 357.25 737.5 Q358 736.55 359.15 736.2 L359.25 736.15 361.6 736.2"/> + <path stroke="none" fill="#F08B6E" d="M361.95 738.75 L367.7 746 376.35 749.25 Q376.9 749.45 377.3 749.95 377.65 750.45 377.65 751.1 L377.35 752.2 372.25 759.95 371.8 769.2 371.4 770.3 Q371.05 770.8 370.45 771 L369.3 771.05 360.35 768.6 351.45 771.05 350.25 771 349.3 770.3 Q348.95 769.8 348.9 769.2 L348.45 759.95 343.35 752.2 Q343 751.7 343 751.1 343 750.45 343.4 749.95 343.75 749.45 344.3 749.25 L353 745.95 358.8 738.75 359.8 738.1 Q360.35 737.9 360.95 738.1 L361.95 738.75 M345 751.1 L350.4 759.3 350.9 769.1 360.35 766.5 369.8 769.1 370.25 759.3 375.65 751.1 366.45 747.65 360.35 740 354.2 747.65 345 751.1"/> + <path stroke="none" fill="#D76241" d="M345 751.1 L354.2 747.65 360.35 740 366.45 747.65 375.65 751.1 370.25 759.3 369.8 769.1 360.35 766.5 350.9 769.1 350.4 759.3 345 751.1"/> + <path stroke="none" fill="#8E8E8E" d="M437.1 747.35 Q438.2 747.8 438.95 748.8 L438.9 748.8 Q439.6 749.8 439.65 751.05 439.7 752.25 439 753.3 L434.2 760.6 433.8 769.3 Q433.75 770.5 433 771.5 432.25 772.5 431.1 772.9 L428.75 772.95 420.35 770.65 411.95 772.95 412 772.95 409.65 772.9 409.6 772.9 Q408.45 772.5 407.7 771.5 406.95 770.5 406.9 769.3 L406.45 760.6 401.65 753.3 Q400.95 752.25 401 751.05 401.05 749.8 401.75 748.8 402.45 747.8 403.6 747.35 L411.8 744.3 417.25 737.5 Q418 736.55 419.15 736.2 L419.25 736.15 421.6 736.2 421.55 736.2 Q422.7 736.55 423.5 737.5 L428.95 744.3 437.05 747.35 437.1 747.35 M437.35 752.2 L437.65 751.1 Q437.65 750.45 437.3 749.95 436.9 749.45 436.35 749.25 L427.7 746 421.95 738.75 420.95 738.1 Q420.35 737.9 419.8 738.1 419.2 738.25 418.8 738.75 L413 745.95 404.3 749.25 Q403.75 749.45 403.4 749.95 403 750.45 403 751.1 403 751.7 403.35 752.2 L408.45 759.95 408.9 769.2 Q408.95 769.8 409.3 770.3 409.65 770.8 410.25 771 L411.45 771.05 420.35 768.6 429.3 771.05 430.45 771 431.4 770.3 431.8 769.2 432.25 759.95 437.35 752.2"/> + <path stroke="none" fill="#F0F0F0" d="M437.35 752.2 L432.25 759.95 431.8 769.2 431.4 770.3 430.45 771 429.3 771.05 420.35 768.6 411.45 771.05 410.25 771 Q409.65 770.8 409.3 770.3 408.95 769.8 408.9 769.2 L408.45 759.95 403.35 752.2 Q403 751.7 403 751.1 403 750.45 403.4 749.95 403.75 749.45 404.3 749.25 L413 745.95 418.8 738.75 Q419.2 738.25 419.8 738.1 420.35 737.9 420.95 738.1 L421.95 738.75 427.7 746 436.35 749.25 Q436.9 749.45 437.3 749.95 437.65 750.45 437.65 751.1 L437.35 752.2 M435.65 751.1 L426.45 747.65 420.35 740 414.2 747.65 405 751.1 410.4 759.3 410.9 769.1 420.35 766.5 429.8 769.1 430.25 759.3 435.65 751.1"/> + <path stroke="none" fill="#CCCCCC" d="M435.65 751.1 L430.25 759.3 429.8 769.1 420.35 766.5 410.9 769.1 410.4 759.3 405 751.1 414.2 747.65 420.35 740 426.45 747.65 435.65 751.1"/> + <path stroke="none" fill="#9F882A" d="M497.1 747.35 Q498.2 747.8 498.95 748.8 L498.9 748.8 Q499.6 749.8 499.65 751.05 499.7 752.25 499 753.3 L494.2 760.6 493.8 769.3 Q493.75 770.5 493 771.5 492.25 772.5 491.1 772.9 L488.75 772.95 480.35 770.65 471.95 772.95 472 772.95 469.65 772.9 469.6 772.9 Q468.45 772.5 467.7 771.5 466.95 770.5 466.9 769.3 L466.45 760.6 461.65 753.3 Q460.95 752.25 461 751.05 461.05 749.8 461.75 748.8 462.45 747.8 463.6 747.35 L471.8 744.3 477.25 737.5 Q478 736.55 479.15 736.2 L479.25 736.15 481.6 736.2 481.55 736.2 Q482.7 736.55 483.5 737.5 L488.95 744.3 497.05 747.35 497.1 747.35 M497.65 751.1 Q497.65 750.45 497.3 749.95 L496.35 749.25 487.7 746 481.95 738.75 480.95 738.1 Q480.35 737.9 479.8 738.1 479.2 738.25 478.8 738.75 L473 745.95 464.3 749.25 Q463.75 749.45 463.4 749.95 463 750.45 463 751.1 463 751.7 463.35 752.2 L468.45 759.95 468.9 769.2 Q468.95 769.8 469.3 770.3 L470.25 771 471.45 771.05 480.35 768.6 489.3 771.05 490.45 771 491.4 770.3 491.8 769.2 492.25 759.95 497.35 752.2 497.65 751.1"/> + <path stroke="none" fill="#FAE697" d="M497.65 751.1 L497.35 752.2 492.25 759.95 491.8 769.2 491.4 770.3 490.45 771 489.3 771.05 480.35 768.6 471.45 771.05 470.25 771 469.3 770.3 Q468.95 769.8 468.9 769.2 L468.45 759.95 463.35 752.2 Q463 751.7 463 751.1 463 750.45 463.4 749.95 463.75 749.45 464.3 749.25 L473 745.95 478.8 738.75 Q479.2 738.25 479.8 738.1 480.35 737.9 480.95 738.1 L481.95 738.75 487.7 746 496.35 749.25 497.3 749.95 Q497.65 750.45 497.65 751.1 M490.25 759.3 L495.65 751.1 486.45 747.65 480.35 740 474.2 747.65 465 751.1 470.4 759.3 470.9 769.1 480.35 766.5 489.8 769.1 490.25 759.3"/> + <path stroke="none" fill="#FFCC00" d="M490.25 759.3 L489.8 769.1 480.35 766.5 470.9 769.1 470.4 759.3 465 751.1 474.2 747.65 480.35 740 486.45 747.65 495.65 751.1 490.25 759.3"/> + <path stroke="none" fill="#97714A" d="M67.95 866.85 L74.6 858.65 84.35 806.9 89.75 802.7 100 893.8 101.85 926.9 110.15 937.1 113.25 964.35 115.35 993.15 123.15 1004.4 126 1026.4 22 1026.4 36.75 971.1 50.85 958.15 58.25 913.85 67.95 866.85"/> + <path stroke="none" fill="#A87F54" d="M67.95 866.85 L83.4 792 88.55 792 89.75 802.7 84.35 806.9 74.6 858.65 67.95 866.85 M58.25 913.85 L50.85 958.15 36.75 971.1 50.05 921.25 58.25 913.85 M123.15 1004.4 L115.35 993.15 113.25 964.35 118.45 968.35 123.15 1004.4 M110.15 937.1 L101.85 926.9 100 893.8 100.05 894.25 105.2 894.25 110.15 937.1"/> + <path stroke="none" fill="#725639" d="M110.15 937.1 L105.2 894.25 100.05 894.25 100 893.8 89.75 802.7 88.55 792 83.4 792 67.95 866.85 58.25 913.85 50.05 921.25 36.75 971.1 22 1026.4 126 1026.4 123.15 1004.4 118.45 968.35 113.25 964.35 110.15 937.1 M83.4 790 L88.55 790 Q89.3 790 89.9 790.5 90.45 791 90.55 791.8 L101.85 892.25 105.2 892.25 Q105.95 892.25 106.55 892.75 107.1 893.25 107.2 894.05 L115.15 963.3 119.7 966.8 Q120.35 967.3 120.45 968.1 L128 1026.15 127.8 1027.25 127.1 1028.1 126 1028.4 22 1028.4 Q21.35 1028.4 20.85 1028.05 20.35 1027.7 20.15 1027.1 19.9 1026.5 20.1 1025.9 L48.15 920.75 Q48.25 920.15 48.7 919.8 L56.45 912.8 81.45 791.6 Q81.6 790.9 82.15 790.45 82.7 790 83.4 790"/> + <path stroke="none" fill="#999999" d="M224.25 842.8 L218.55 792 213.4 792 200.95 852.45 197.95 866.85 188.25 913.85 180.05 921.25 173.45 946.1 166.75 971.1 152 1026.4 256 1026.4 253.15 1004.4 251.2 989.2 248.45 968.35 243.25 964.35 240.15 937.1 238.25 920.6 235.2 894.25 230.05 894.25 230 893.8 224.25 842.8 M219.9 790.5 Q220.45 791 220.55 791.8 L231.85 892.25 235.2 892.25 Q235.95 892.25 236.55 892.75 237.1 893.25 237.2 894.05 L245.15 963.3 249.7 966.8 Q250.35 967.3 250.45 968.1 L258 1026.15 257.8 1027.25 257.1 1028.1 256 1028.4 152 1028.4 Q151.35 1028.4 150.85 1028.05 150.35 1027.7 150.15 1027.1 149.9 1026.5 150.1 1025.9 L178.15 920.75 Q178.25 920.15 178.7 919.8 L186.45 912.8 211.45 791.6 Q211.6 790.9 212.15 790.45 212.7 790 213.4 790 L218.55 790 Q219.3 790 219.9 790.5"/> + <path stroke="none" fill="#FFFFFF" d="M224.25 842.8 L217.85 838.65 216.35 813.4 212.75 815.5 209.85 817.15 203.35 851.15 200.95 852.45 213.4 792 218.55 792 224.25 842.8 M188.25 913.85 L186.45 924.75 181.1 928.65 176.35 944.9 173.45 946.1 180.05 921.25 188.25 913.85 M244 974.7 L243.25 964.35 248.45 968.35 251.2 989.2 249.1 987.4 247.85 978.65 244 974.7 M230.5 903.15 L230.3 898.95 230.15 896.25 230.1 895.45 230.05 894.25 235.2 894.25 238.25 920.6 235.6 918.15 233.85 907.15 230.5 903.15"/> + <path stroke="none" fill="#A1784E" d="M230.5 903.15 L233.85 907.15 235.6 918.15 238.25 920.6 240.15 937.1 231.85 926.9 230.5 903.15 M200.95 852.45 L203.35 851.15 209.85 817.15 212.75 815.5 204.6 858.65 197.95 866.85 200.95 852.45 M186.45 924.75 L180.85 958.15 166.75 971.1 173.45 946.1 176.35 944.9 181.1 928.65 186.45 924.75 M253.15 1004.4 L245.35 993.15 244 974.7 247.85 978.65 249.1 987.4 251.2 989.2 253.15 1004.4 M230.1 895.45 L230 893.8 230.05 894.25 230.1 895.45"/> + <path stroke="none" fill="#97714A" d="M230.1 895.45 L230.15 896.25 230.3 898.95 230.5 903.15 231.85 926.9 240.15 937.1 243.25 964.35 244 974.7 245.35 993.15 253.15 1004.4 256 1026.4 152 1026.4 166.75 971.1 180.85 958.15 186.45 924.75 188.25 913.85 197.95 866.85 204.6 858.65 212.75 815.5 216.35 813.4 217.85 838.65 224.25 842.8 230 893.8 230.1 895.45"/> + <path stroke="none" fill="#74982B" d="M461.05 841.85 L471.45 791.6 Q471.6 790.9 472.15 790.45 472.7 790 473.4 790 L478.55 790 Q479.3 790 479.9 790.5 480.45 791 480.55 791.8 L482.4 808.35 480.55 809.7 478.55 792 473.4 792 463.45 840.15 461.05 841.85 M491.85 892.25 L495.2 892.25 Q495.95 892.25 496.55 892.75 497.1 893.25 497.2 894.05 L501.05 927.55 498.75 924.95 495.2 894.25 490.05 894.25 490 893.8 491.85 892.25 M505.15 963.3 L509.7 966.8 Q510.35 967.3 510.45 968.1 L513.85 994.3 511.65 992.95 508.45 968.35 503.25 964.35 505.15 963.3 M426.35 964.9 L438.15 920.75 Q438.25 920.15 438.7 919.8 L446.45 912.8 448.25 913.85 440.05 921.25 429.55 960.55 426.35 964.9"/> + <path stroke="none" fill="#725639" d="M426.35 964.9 L429.55 960.55 426.75 971.1 412 1026.4 516 1026.4 513.15 1004.4 511.65 992.95 513.85 994.3 518 1026.15 517.8 1027.25 517.1 1028.1 516 1028.4 412 1028.4 Q411.35 1028.4 410.85 1028.05 410.35 1027.7 410.15 1027.1 409.9 1026.5 410.1 1025.9 L426.35 964.9 M482.4 808.35 L491.85 892.25 490 893.8 480.55 809.7 482.4 808.35 M501.05 927.55 L505.15 963.3 503.25 964.35 500.15 937.1 498.75 924.95 501.05 927.55 M446.45 912.8 L461.05 841.85 463.45 840.15 457.95 866.85 448.25 913.85 446.45 912.8"/> + <path stroke="none" fill="#96C23A" d="M463.45 840.15 L473.4 792 478.55 792 480.55 809.7 475.2 813.6 471.95 834.1 468.8 836.35 463.45 840.15 M448.25 913.85 L446.05 926.95 439.7 932.6 434.45 953.85 429.55 960.55 440.05 921.25 448.25 913.85 M503.75 971.1 L503.25 964.35 508.45 968.35 511.65 992.95 509.45 991.6 508.2 976.1 503.75 971.1 M490.45 902.1 L490 893.8 490.05 894.25 495.2 894.25 498.75 924.95 496.2 922.1 494.2 905.35 490.45 902.1"/> + <path stroke="none" fill="#97714A" d="M490.45 902.1 L491.85 926.9 500.15 937.1 503.25 964.35 503.75 971.1 505.35 993.15 513.15 1004.4 516 1026.4 412 1026.4 426.75 971.1 440.85 958.15 446.05 926.95 448.25 913.85 457.95 866.85 464.6 858.65 468.8 836.35 471.95 834.1 475.2 813.6 480.55 809.7 490 893.8 490.45 902.1"/> + <path stroke="none" fill="#A87F54" d="M490.45 902.1 L494.2 905.35 496.2 922.1 498.75 924.95 500.15 937.1 491.85 926.9 490.45 902.1 M468.8 836.35 L464.6 858.65 457.95 866.85 463.45 840.15 468.8 836.35 M446.05 926.95 L440.85 958.15 426.75 971.1 429.55 960.55 434.45 953.85 439.7 932.6 446.05 926.95 M513.15 1004.4 L505.35 993.15 503.75 971.1 508.2 976.1 509.45 991.6 511.65 992.95 513.15 1004.4"/> + <path stroke="none" fill="#90B7C6" d="M303.45 946.1 L296.75 971.1 282 1026.4 386 1026.4 383.15 1004.4 381.2 989.2 378.45 968.35 373.25 964.35 370.15 937.1 368.25 920.6 365.2 894.25 360.05 894.25 360 893.8 354.25 842.8 348.55 792 343.4 792 330.95 852.45 327.95 866.85 318.25 913.85 310.05 921.25 303.45 946.1 M316.45 912.8 L341.45 791.6 Q341.6 790.9 342.15 790.45 342.7 790 343.4 790 L348.55 790 Q349.3 790 349.9 790.5 350.45 791 350.55 791.8 L361.85 892.25 365.2 892.25 Q365.95 892.25 366.55 892.75 367.1 893.25 367.2 894.05 L375.15 963.3 379.7 966.8 Q380.35 967.3 380.45 968.1 L388 1026.15 387.8 1027.25 387.1 1028.1 386 1028.4 282 1028.4 Q281.35 1028.4 280.85 1028.05 L280.15 1027.1 Q279.9 1026.5 280.1 1025.9 L308.15 920.75 Q308.25 920.15 308.7 919.8 L316.45 912.8"/> + <path stroke="none" fill="#FFFFFF" d="M316.45 924.75 L311.1 928.65 306.35 944.9 303.45 946.1 310.05 921.25 318.25 913.85 316.45 924.75 M330.95 852.45 L343.4 792 348.55 792 354.25 842.8 347.85 838.65 346.35 813.4 342.75 815.5 339.85 817.15 333.35 851.15 330.95 852.45 M360.05 894.25 L365.2 894.25 368.25 920.6 365.6 918.15 363.85 907.15 360.5 903.15 360.3 898.95 360.15 896.25 360.1 895.45 360.05 894.25 M373.25 964.35 L378.45 968.35 381.2 989.2 379.1 987.4 377.85 978.65 374 974.7 373.25 964.35"/> + <path stroke="none" fill="#CFEAF5" d="M373.25 964.35 L374 974.7 375.35 993.15 383.15 1004.4 386 1026.4 282 1026.4 296.75 971.1 310.85 958.15 316.45 924.75 318.25 913.85 327.95 866.85 334.6 858.65 342.75 815.5 346.35 813.4 347.85 838.65 354.25 842.8 360 893.8 360.1 895.45 360.15 896.25 360.3 898.95 360.5 903.15 361.85 926.9 370.15 937.1 373.25 964.35"/> + <path stroke="none" fill="#E9F6FF" d="M303.45 946.1 L306.35 944.9 311.1 928.65 316.45 924.75 310.85 958.15 296.75 971.1 303.45 946.1 M368.25 920.6 L370.15 937.1 361.85 926.9 360.5 903.15 363.85 907.15 365.6 918.15 368.25 920.6 M381.2 989.2 L383.15 1004.4 375.35 993.15 374 974.7 377.85 978.65 379.1 987.4 381.2 989.2 M330.95 852.45 L333.35 851.15 339.85 817.15 342.75 815.5 334.6 858.65 327.95 866.85 330.95 852.45"/> + <path stroke="none" fill="#A1784E" d="M360 893.8 L360.05 894.25 360.1 895.45 360 893.8"/> + <path stroke="none" fill="#725639" d="M540.15 791.3 Q540.35 790.7 540.85 790.35 541.35 790 542 790 L646 790 647.1 790.3 647.8 791.15 648 792.25 640.45 850.3 Q640.35 851.1 639.7 851.6 L635.15 855.1 627.2 924.35 Q627.1 925.15 626.55 925.65 625.95 926.15 625.2 926.15 L621.85 926.15 610.55 1026.6 Q610.45 1027.4 609.9 1027.9 609.3 1028.4 608.55 1028.4 L603.4 1028.4 602.15 1027.95 Q601.6 1027.5 601.45 1026.8 L576.45 905.6 568.7 898.6 Q568.25 898.25 568.15 897.65 L540.1 792.5 Q539.9 791.9 540.15 791.3 M643.15 814 L646 792 542 792 556.75 847.3 570.05 897.15 578.25 904.55 587.95 951.55 603.4 1026.4 608.55 1026.4 609.75 1015.7 620 924.6 620.05 924.15 625.2 924.15 630.15 881.3 633.25 854.05 638.45 850.05 643.15 814"/> + <path stroke="none" fill="#97714A" d="M643.15 814 L635.35 825.25 633.25 854.05 630.15 881.3 621.85 891.5 620 924.6 609.75 1015.7 604.35 1011.5 594.6 959.75 587.95 951.55 578.25 904.55 570.85 860.25 556.75 847.3 542 792 646 792 643.15 814"/> + <path stroke="none" fill="#A87F54" d="M643.15 814 L638.45 850.05 633.25 854.05 635.35 825.25 643.15 814 M630.15 881.3 L625.2 924.15 620.05 924.15 620 924.6 621.85 891.5 630.15 881.3 M609.75 1015.7 L608.55 1026.4 603.4 1026.4 587.95 951.55 594.6 959.75 604.35 1011.5 609.75 1015.7 M578.25 904.55 L570.05 897.15 556.75 847.3 570.85 860.25 578.25 904.55"/> + <path stroke="none" fill="#999999" d="M670.15 791.3 Q670.35 790.7 670.85 790.35 671.35 790 672 790 L776 790 777.1 790.3 777.8 791.15 778 792.25 770.45 850.3 Q770.35 851.1 769.7 851.6 L765.15 855.1 757.2 924.35 Q757.1 925.15 756.55 925.65 755.95 926.15 755.2 926.15 L751.85 926.15 740.55 1026.6 Q740.45 1027.4 739.9 1027.9 739.3 1028.4 738.55 1028.4 L733.4 1028.4 732.15 1027.95 Q731.6 1027.5 731.45 1026.8 L706.45 905.6 698.7 898.6 Q698.25 898.25 698.15 897.65 L670.1 792.5 Q669.9 791.9 670.15 791.3 M693.45 872.3 L700.05 897.15 708.25 904.55 717.95 951.55 720.95 965.95 733.4 1026.4 738.55 1026.4 744.25 975.6 750 924.6 750.05 924.15 755.2 924.15 758.25 897.8 760.15 881.3 763.25 854.05 768.45 850.05 771.2 829.2 773.15 814 776 792 672 792 686.75 847.3 693.45 872.3"/> + <path stroke="none" fill="#FFFFFF" d="M693.45 872.3 L696.35 873.5 701.1 889.75 706.45 893.65 708.25 904.55 700.05 897.15 693.45 872.3 M771.2 829.2 L768.45 850.05 763.25 854.05 764 843.7 767.85 839.75 769.1 831 771.2 829.2 M758.25 897.8 L755.2 924.15 750.05 924.15 750.1 922.95 750.15 922.15 750.3 919.45 750.5 915.25 753.85 911.25 755.6 900.25 758.25 897.8 M744.25 975.6 L738.55 1026.4 733.4 1026.4 720.95 965.95 723.35 967.25 729.85 1001.25 732.75 1002.9 736.35 1005 737.85 979.75 744.25 975.6"/> + <path stroke="none" fill="#A1784E" d="M706.45 893.65 L701.1 889.75 696.35 873.5 693.45 872.3 686.75 847.3 700.85 860.25 706.45 893.65 M773.15 814 L771.2 829.2 769.1 831 767.85 839.75 764 843.7 765.35 825.25 773.15 814 M760.15 881.3 L758.25 897.8 755.6 900.25 753.85 911.25 750.5 915.25 751.85 891.5 760.15 881.3 M750.05 924.15 L750 924.6 750.1 922.95 750.05 924.15 M720.95 965.95 L717.95 951.55 724.6 959.75 732.75 1002.9 729.85 1001.25 723.35 967.25 720.95 965.95"/> + <path stroke="none" fill="#97714A" d="M708.25 904.55 L706.45 893.65 700.85 860.25 686.75 847.3 672 792 776 792 773.15 814 765.35 825.25 764 843.7 763.25 854.05 760.15 881.3 751.85 891.5 750.5 915.25 750.3 919.45 750.15 922.15 750.1 922.95 750 924.6 744.25 975.6 737.85 979.75 736.35 1005 732.75 1002.9 724.6 959.75 717.95 951.55 708.25 904.55"/> + <path stroke="none" fill="#725639" d="M946.35 853.5 L930.1 792.5 Q929.9 791.9 930.15 791.3 930.35 790.7 930.85 790.35 931.35 790 932 790 L1036 790 1037.1 790.3 1037.8 791.15 1038 792.25 1033.85 824.1 1031.65 825.45 1033.15 814 1036 792 932 792 946.75 847.3 949.55 857.85 946.35 853.5 M1025.15 855.1 L1021.05 890.85 1018.75 893.45 1020.15 881.3 1023.25 854.05 1025.15 855.1 M1011.85 926.15 L1002.4 1010.05 1000.55 1008.7 1010 924.6 1011.85 926.15 M981.05 976.55 L966.45 905.6 968.25 904.55 977.95 951.55 983.45 978.25 981.05 976.55"/> + <path stroke="none" fill="#96C23A" d="M949.55 857.85 L954.45 864.55 959.7 885.8 966.05 891.45 968.25 904.55 960.05 897.15 949.55 857.85 M988.8 982.05 L991.95 984.3 995.2 1004.8 1000.55 1008.7 998.55 1026.4 993.4 1026.4 983.45 978.25 988.8 982.05 M1010 924.6 L1010.45 916.3 1014.2 913.05 1016.2 896.3 1018.75 893.45 1015.2 924.15 1010.05 924.15 1010 924.6 M1023.25 854.05 L1023.75 847.3 1028.2 842.3 1029.45 826.8 1031.65 825.45 1028.45 850.05 1023.25 854.05"/> + <path stroke="none" fill="#A87F54" d="M949.55 857.85 L946.75 847.3 960.85 860.25 966.05 891.45 959.7 885.8 954.45 864.55 949.55 857.85 M1033.15 814 L1031.65 825.45 1029.45 826.8 1028.2 842.3 1023.75 847.3 1025.35 825.25 1033.15 814 M977.95 951.55 L984.6 959.75 988.8 982.05 983.45 978.25 977.95 951.55 M1010.45 916.3 L1011.85 891.5 1020.15 881.3 1018.75 893.45 1016.2 896.3 1014.2 913.05 1010.45 916.3"/> + <path stroke="none" fill="#97714A" d="M1010.45 916.3 L1010 924.6 1000.55 1008.7 995.2 1004.8 991.95 984.3 988.8 982.05 984.6 959.75 977.95 951.55 968.25 904.55 966.05 891.45 960.85 860.25 946.75 847.3 932 792 1036 792 1033.15 814 1025.35 825.25 1023.75 847.3 1023.25 854.05 1020.15 881.3 1011.85 891.5 1010.45 916.3"/> + <path stroke="none" fill="#74982B" d="M946.35 853.5 L949.55 857.85 960.05 897.15 968.25 904.55 966.45 905.6 958.7 898.6 Q958.25 898.25 958.15 897.65 L946.35 853.5 M1031.65 825.45 L1033.85 824.1 1030.45 850.3 Q1030.35 851.1 1029.7 851.6 L1025.15 855.1 1023.25 854.05 1028.45 850.05 1031.65 825.45 M1021.05 890.85 L1017.2 924.35 Q1017.1 925.15 1016.55 925.65 1015.95 926.15 1015.2 926.15 L1011.85 926.15 1010 924.6 1010.05 924.15 1015.2 924.15 1018.75 893.45 1021.05 890.85 M1002.4 1010.05 L1000.55 1026.6 Q1000.45 1027.4 999.9 1027.9 999.3 1028.4 998.55 1028.4 L993.4 1028.4 992.15 1027.95 Q991.6 1027.5 991.45 1026.8 L981.05 976.55 983.45 978.25 993.4 1026.4 998.55 1026.4 1000.55 1008.7 1002.4 1010.05"/> + <path stroke="none" fill="#CFEAF5" d="M838.25 904.55 L836.45 893.65 830.85 860.25 816.75 847.3 802 792 906 792 903.15 814 895.35 825.25 894 843.7 893.25 854.05 890.15 881.3 881.85 891.5 880.5 915.25 880.3 919.45 880.15 922.15 880.1 922.95 880 924.6 874.25 975.6 867.85 979.75 866.35 1005 862.75 1002.9 854.6 959.75 847.95 951.55 838.25 904.55"/> + <path stroke="none" fill="#E9F6FF" d="M836.45 893.65 L831.1 889.75 826.35 873.5 823.45 872.3 816.75 847.3 830.85 860.25 836.45 893.65 M903.15 814 L901.2 829.2 899.1 831 897.85 839.75 894 843.7 895.35 825.25 903.15 814 M890.15 881.3 L888.25 897.8 885.6 900.25 883.85 911.25 880.5 915.25 881.85 891.5 890.15 881.3 M850.95 965.95 L847.95 951.55 854.6 959.75 862.75 1002.9 859.85 1001.25 853.35 967.25 850.95 965.95"/> + <path stroke="none" fill="#90B7C6" d="M850.95 965.95 L863.4 1026.4 868.55 1026.4 874.25 975.6 880 924.6 880.05 924.15 885.2 924.15 888.25 897.8 890.15 881.3 893.25 854.05 898.45 850.05 901.2 829.2 903.15 814 906 792 802 792 816.75 847.3 823.45 872.3 830.05 897.15 838.25 904.55 847.95 951.55 850.95 965.95 M907.1 790.3 Q907.55 790.65 907.8 791.15 L908 792.25 900.45 850.3 Q900.35 851.1 899.7 851.6 L895.15 855.1 887.2 924.35 Q887.1 925.15 886.55 925.65 885.95 926.15 885.2 926.15 L881.85 926.15 870.55 1026.6 Q870.45 1027.4 869.9 1027.9 869.3 1028.4 868.55 1028.4 L863.4 1028.4 Q862.7 1028.4 862.15 1027.95 861.6 1027.5 861.45 1026.8 L836.45 905.6 828.7 898.6 Q828.25 898.25 828.15 897.65 L800.1 792.5 Q799.9 791.9 800.15 791.3 800.35 790.7 800.85 790.35 801.35 790 802 790 L906 790 Q906.6 790 907.1 790.3"/> + <path stroke="none" fill="#FFFFFF" d="M823.45 872.3 L826.35 873.5 831.1 889.75 836.45 893.65 838.25 904.55 830.05 897.15 823.45 872.3 M901.2 829.2 L898.45 850.05 893.25 854.05 894 843.7 897.85 839.75 899.1 831 901.2 829.2 M888.25 897.8 L885.2 924.15 880.05 924.15 880.1 922.95 880.15 922.15 880.3 919.45 880.5 915.25 883.85 911.25 885.6 900.25 888.25 897.8 M874.25 975.6 L868.55 1026.4 863.4 1026.4 850.95 965.95 853.35 967.25 859.85 1001.25 862.75 1002.9 866.35 1005 867.85 979.75 874.25 975.6"/> + <path stroke="none" fill="#A1784E" d="M880.05 924.15 L880 924.6 880.1 922.95 880.05 924.15"/> + <path stroke="none" fill="#FFFFFF" d="M551.8 744.05 Q554.4 744.05 556.2 745.85 558.05 747.7 558.05 750.3 L558.05 750.45 562.4 751 562.4 758 558.05 758.55 558.05 758.7 Q558.05 761.3 556.2 763.1 554.4 764.95 551.8 764.95 549.25 764.95 547.4 763.1 546.35 762.1 545.9 760.8 L543.8 761.15 Q541.2 761.15 539.35 759.3 537.55 757.5 537.55 754.9 537.55 752.35 539.35 750.5 541.2 748.7 543.8 748.7 L545.7 749 Q546.05 747.2 547.4 745.85 549.25 744.05 551.8 744.05"/> + <path stroke="none" fill="#FFFFFF" d="M594.95 764.65 Q590.65 764.65 587.55 761.55 584.55 758.55 584.55 754.2 584.55 749.95 587.55 746.85 590.65 743.85 594.95 743.85 L598.15 744.35 Q598.75 741.35 601 739.1 604.05 736.05 608.35 736.05 612.65 736.05 615.7 739.1 618.75 742.15 618.75 746.5 L618.75 746.75 626.05 747.7 626.05 759.35 618.75 760.3 618.75 760.55 Q618.75 764.9 615.7 767.9 612.65 770.95 608.35 770.95 604.05 770.95 601 767.9 599.25 766.2 598.5 764.05 596.8 764.65 594.95 764.65"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M1322.05 238.3 Q1322.75 245.6 1319.7 250.45 L1319.6 250.65 Q1318.2 253 1316 254.9 L1316.25 255.25 1320.45 260.45 1320.6 260.65 1324.3 265.9 1324.45 266.05 1328.2 271.9 Q1329 273.3 1328.8 275 1328.55 276.65 1327.4 277.75 L1327.4 277.8 Q1326.15 278.95 1324.55 279.05 L1311.3 280.4 Q1310 280.55 1308.85 280 L1308.75 279.95 Q1307.65 279.45 1306.9 278.45 L1306.85 278.4 1303.45 273.5 1300.05 268.8 1300 268.75 1296.55 264.5 1296.45 264.3 1296.35 264.15 1296.3 264.2 1297.55 276.95 Q1297.8 278.95 1296.55 280.45 1295.3 282.05 1293.35 282.2 L1281.5 283.4 Q1279.55 283.6 1278 282.35 1276.45 281.1 1276.25 279.1 L1272.6 242.85 1272.35 243.1 Q1270.75 244.3 1268.8 244.05 L1249.9 241.55 1249.8 242.4 1266.05 244.55 Q1268 244.8 1269.25 246.35 1270.45 247.95 1270.15 249.9 L1268.9 259.55 Q1268.65 261.55 1267.05 262.75 1265.5 263.9 1263.5 263.7 L1247.3 261.55 1246.9 264.7 1267.5 267.4 Q1269.45 267.7 1270.65 269.25 1271.9 270.85 1271.6 272.8 L1270.3 282.7 Q1270.05 284.65 1268.45 285.85 1266.9 287.05 1264.95 286.8 L1227.8 281.95 Q1225.85 281.7 1224.65 280.15 1223.45 278.55 1223.7 276.65 L1225.65 262.1 1220.95 276.7 1220.95 276.65 Q1220.5 277.95 1219.45 278.85 1218.3 279.65 1216.9 279.85 L1205.55 281.05 Q1204.15 281.25 1203 280.65 L1203 280.7 Q1201.7 280 1201 278.9 L1200.95 278.85 1193.25 265.6 1191.75 262.85 1191.15 264.45 Q1188.75 270.6 1184.55 274.7 L1184.5 274.75 Q1180.3 278.9 1174.5 281.05 L1174.15 281.2 Q1168.6 283.05 1162.35 283.05 1156.1 283.05 1150.55 281.05 L1150.5 281 Q1144.75 278.85 1140.45 274.75 L1140.3 274.6 Q1136.15 270.5 1133.7 264.45 1131.3 258.6 1131.3 250.75 1131.3 242.9 1133.75 236.95 1136.3 230.9 1140.6 226.75 L1140.6 226.7 Q1145 222.5 1150.7 220.4 1156.3 218.35 1162.35 218.35 1168.65 218.35 1174.2 220.4 L1176.95 221.55 1177.85 221.3 1190.95 219.9 Q1192.4 219.75 1193.8 220.5 1195.2 221.3 1195.8 222.65 L1200.15 232.1 1204.85 242.15 1208 248.6 1209.7 241.6 1212.15 230.8 1214.35 220.65 Q1214.7 219.1 1215.85 218.1 1217 217.05 1218.5 216.9 L1231.2 215.5 Q1232.65 215.35 1234.05 216.15 L1234.1 216.15 Q1235.4 216.9 1236.05 218.35 L1236.45 220.15 1271.35 224.7 1271.5 224.75 1271.85 224.05 Q1272.85 222.65 1274.45 222.2 1278.45 221 1282.8 220.2 L1290.65 219.1 Q1304.2 217.75 1311.9 222.1 1320.85 226.7 1322.05 238.3 M1299.65 239.05 L1293.7 238.6 1294.25 243.6 Q1298.05 243.1 1299.85 242 1300.35 241.45 1300.25 240.35 1300.15 239.45 1299.65 239.05 M951.45 218.2 L951.9 218.2 957.4 218.6 961.8 219.5 961.9 219.5 962 219.55 961.95 219.55 964.7 220.55 964.65 220.5 Q966.1 221.25 966.85 222.65 967.65 224.1 967.3 225.8 L967.3 225.75 965.4 235.7 965.4 235.75 Q965.05 237.1 964.2 238.1 963.15 239.15 961.9 239.45 L961.85 239.45 959.15 239.3 Q956.95 238.5 954.1 238.15 951.5 237.8 948.55 238.25 942.9 239.1 940.75 242.35 L940.7 242.4 940.7 242.45 940.65 242.5 Q938.7 246.35 939.6 252.15 940.05 255.25 941.1 257.65 L941.15 257.8 Q942.05 259.75 943.45 261.1 943.55 261.1 943.6 261.2 944.95 262.5 946.75 262.95 L951.2 263.1 952.35 262.95 950.25 249.1 Q949.9 247.15 951.05 245.55 952.25 243.95 954.25 243.65 L966 241.9 Q967.95 241.55 969.55 242.75 971.15 243.9 971.45 245.9 L972 249.25 972.75 247.5 972.8 247.55 Q975.7 241.3 978.5 235.75 L978.55 235.55 984.55 224.45 Q985.2 223.3 986.45 222.65 987.65 221.95 989 222.05 L1000.4 222.75 Q1001.75 222.85 1002.9 223.65 L1002.85 223.65 Q1003.95 224.45 1004.45 225.75 L1008.9 237.1 1008.9 237.4 1013.35 250 1013.4 250.4 1014.65 254.05 1014.55 248.6 Q1014.45 241.45 1014.65 234.75 L1015.05 222.7 Q1015.15 220.95 1016.45 219.65 1017.7 218.4 1019.4 218.25 L1030.8 217.3 Q1032.05 217.2 1033.2 217.75 1034.4 218.35 1035.1 219.45 L1038.9 225.6 1043.15 233 1043.4 233.4 1047 240.1 1049.55 232.9 1049.6 232.6 1052.65 224.45 Q1054.15 220.4 1055.4 217.75 1055.9 216.6 1057 215.85 1058.05 215.05 1059.35 214.95 L1070.2 214.05 Q1071.95 213.9 1073.4 215 1074.8 216 1075.2 217.75 L1077.6 229.55 1078 231.8 1078.85 221.85 Q1079.05 219.9 1080.55 218.6 1082.1 217.3 1084.05 217.5 L1119.65 220.6 Q1121.65 220.75 1122.9 222.25 1124.15 223.8 1123.95 225.8 L1123.1 235.7 Q1122.95 237.7 1121.45 238.95 1119.9 240.15 1117.95 240.05 L1098.95 238.35 1098.85 239.25 1115.2 240.65 Q1117.15 240.85 1118.5 242.35 1119.75 243.9 1119.55 245.9 L1118.75 255.55 Q1118.55 257.55 1117.05 258.8 1115.5 260.05 1113.55 259.85 L1097.2 258.45 1096.95 261.65 1117.65 263.45 Q1119.65 263.65 1120.85 265.15 1122.15 266.65 1122 268.65 L1121.15 278.55 Q1120.95 280.55 1119.4 281.8 1118 283.1 1116 282.95 L1078.7 279.7 Q1076.7 279.5 1075.4 278.05 1074.75 277.25 1074.5 276.35 L1067.9 276.9 Q1065.95 277.05 1064.5 275.85 L1064.45 275.85 Q1062.95 274.6 1062.8 272.7 L1061.05 258.05 1059.8 261.7 1059.75 261.8 1059.7 261.9 1057.65 268.1 1057.65 268.05 Q1057.2 269.4 1056.1 270.3 L1056.05 270.3 Q1054.95 271.25 1053.55 271.35 L1045.25 272.05 Q1043.85 272.15 1042.55 271.45 1041.35 270.8 1040.7 269.6 L1040.65 269.6 1037.5 263.65 1037.35 263.35 1035.6 260.05 1036.3 274.85 Q1036.4 276.75 1035.15 278.25 1033.85 279.7 1031.9 279.9 L1022.55 280.65 Q1022.8 281.95 1022.35 283.2 L1022.3 283.25 Q1021.75 284.75 1020.45 285.55 L1020.45 285.6 Q1019.1 286.4 1017.6 286.3 L1004.85 285.55 Q1003.2 285.45 1002 284.4 1000.85 283.35 1000.45 281.8 L1000.45 281.85 999.1 276.7 999.05 276.4 998.2 273.65 984.45 272.8 983.45 275.4 983.4 275.35 981.2 280.8 Q980.7 282.2 979.4 283.05 L979.35 283.05 Q978.05 283.95 976.5 283.8 L964.15 283.05 Q962.6 283 961.4 282 L961.4 281.95 960.7 281.3 953.5 282.7 Q946.85 283.7 941.15 282.55 L940.85 282.5 Q934.65 281.2 930 277.55 925.25 274.1 922.05 268.35 919.05 262.9 917.9 255.5 916.75 248 918.25 241.75 919.85 235.45 923.4 230.65 926.95 225.85 932.15 222.85 L932.4 222.7 Q937.6 219.75 943.95 218.75 L951.45 218.2 M1166.35 239.15 Q1164.6 238.35 1162.35 238.35 L1159.25 238.8 Q1156.75 239.6 1155.35 241.9 1154.4 243.25 1153.85 245.15 L1153.85 245.1 Q1153.1 247.7 1153.1 250.75 1153.1 253.9 1153.85 256.4 1154.5 258.5 1155.65 260.05 L1155.65 260.1 1155.75 260.2 Q1156.9 261.55 1158.4 262.3 1160.1 263.1 1162.35 263.1 1164.6 263.1 1166.35 262.3 1167.9 261.55 1169 260.2 L1169.05 260.2 Q1170.25 258.6 1170.9 256.4 1171.7 253.9 1171.7 250.75 1171.7 247.7 1171 245.25 L1170.9 245.05 Q1170.25 242.85 1169 241.2 1168 240 1166.6 239.2 L1166.35 239.15 M1207.45 252.8 L1207.4 252.7 1207.4 252.8 1207.45 252.8 M1219.05 221.7 L1219.1 221.65 1219.05 221.65 1219.05 221.7"/> + <path stroke="none" fill="#8A2323" d="M1274.15 221.85 Q1275.3 223.4 1275.05 225.4 L1273.75 235.3 Q1273.45 237.25 1271.95 238.45 1270.35 239.65 1268.4 239.4 L1249.5 236.9 1249.4 237.75 1265.65 239.95 Q1267.6 240.15 1268.85 241.75 1270.05 243.3 1269.75 245.25 L1268.5 254.9 Q1268.25 256.9 1266.65 258.1 1265.1 259.25 1263.1 259.05 L1246.9 256.9 1246.5 260.05 1267.1 262.75 Q1269.05 263.05 1270.25 264.6 1271.5 266.2 1271.2 268.15 L1269.9 278.05 Q1269.65 280 1268.05 281.2 1266.5 282.45 1264.55 282.15 L1227.4 277.3 Q1225.45 277.05 1224.25 275.5 1223.05 273.95 1223.3 272 L1230.2 219.55 Q1230.45 217.6 1232.05 216.35 1233.55 215.2 1235.55 215.4 L1270.95 220.05 Q1272.9 220.3 1274.15 221.85 M1272.25 223.35 Q1271.6 222.5 1270.65 222.4 L1235.25 217.75 Q1234.25 217.6 1233.5 218.3 1232.65 218.85 1232.55 219.8 L1225.65 272.25 Q1225.5 273.2 1226.15 274.05 1226.75 274.8 1227.7 274.9 L1264.85 279.75 Q1265.85 279.9 1266.6 279.3 1267.4 278.7 1267.5 277.75 L1268.85 267.85 Q1268.95 266.85 1268.4 266.1 1267.8 265.3 1266.8 265.15 L1243.8 262.2 1244.85 254.25 1263.45 256.7 Q1264.4 256.85 1265.25 256.25 1266 255.6 1266.15 254.65 L1267.4 244.95 Q1267.5 244 1266.95 243.25 1266.3 242.45 1265.3 242.3 L1246.75 239.9 1247.45 234.25 1268.7 237 Q1269.7 237.15 1270.5 236.6 1271.25 235.95 1271.4 235 L1272.7 225.1 Q1272.85 224.1 1272.25 223.35"/> + <path stroke="none" fill="#E55C5C" d="M1272.25 223.35 Q1272.85 224.1 1272.7 225.1 L1271.4 235 Q1271.25 235.95 1270.5 236.6 1269.7 237.15 1268.7 237 L1247.45 234.25 1246.75 239.9 1265.3 242.3 Q1266.3 242.45 1266.95 243.25 1267.5 244 1267.4 244.95 L1266.15 254.65 Q1266 255.6 1265.25 256.25 1264.4 256.85 1263.45 256.7 L1244.85 254.25 1243.8 262.2 1266.8 265.15 Q1267.8 265.3 1268.4 266.1 1268.95 266.85 1268.85 267.85 L1267.5 277.75 Q1267.4 278.7 1266.6 279.3 1265.85 279.9 1264.85 279.75 L1227.7 274.9 Q1226.75 274.8 1226.15 274.05 1225.5 273.2 1225.65 272.25 L1232.55 219.8 Q1232.65 218.85 1233.5 218.3 1234.25 217.6 1235.25 217.75 L1270.65 222.4 Q1271.6 222.5 1272.25 223.35 M1269 234.65 L1270.3 224.75 1234.9 220.15 1228.05 272.6 1265.2 277.45 1266.5 267.55 1243.5 264.55 Q1242.5 264.45 1241.95 263.65 1241.3 262.85 1241.45 261.85 L1242.45 253.95 Q1242.6 252.95 1243.4 252.4 1244.2 251.75 1245.15 251.9 L1263.75 254.3 1265 244.65 1246.45 242.2 Q1245.45 242.1 1244.85 241.35 1244.25 240.55 1244.35 239.55 L1245.1 233.95 Q1245.2 233 1246.05 232.4 1246.8 231.8 1247.8 231.9 L1269 234.65"/> + <path stroke="none" fill="#C83E3E" d="M1269 234.65 L1247.8 231.9 Q1246.8 231.8 1246.05 232.4 1245.2 233 1245.1 233.95 L1244.35 239.55 Q1244.25 240.55 1244.85 241.35 1245.45 242.1 1246.45 242.2 L1265 244.65 1263.75 254.3 1245.15 251.9 Q1244.2 251.75 1243.4 252.4 1242.6 252.95 1242.45 253.95 L1241.45 261.85 Q1241.3 262.85 1241.95 263.65 1242.5 264.45 1243.5 264.55 L1266.5 267.55 1265.2 277.45 1228.05 272.6 1234.9 220.15 1270.3 224.75 1269 234.65"/> + <path stroke="none" fill="#8A2323" d="M966.45 256.05 L972.35 242.85 972.4 242.9 Q975.3 236.65 978.1 231.1 L978.15 230.9 Q981.1 225.25 984.15 219.8 984.8 218.65 986.05 218.05 L986.05 218 Q987.25 217.3 988.6 217.4 L1000 218.1 Q1001.35 218.2 1002.5 219 L1002.45 219 Q1003.55 219.8 1004.05 221.1 L1008.5 232.45 1008.5 232.75 1012.95 245.35 1013 245.75 1017.35 259.5 1022 275.65 1022.05 275.6 Q1022.45 277.1 1021.95 278.55 L1021.9 278.6 Q1021.35 280.1 1020.05 280.9 L1020.05 280.95 Q1018.7 281.75 1017.2 281.65 L1004.45 280.9 Q1002.8 280.8 1001.6 279.75 1000.45 278.7 1000.05 277.15 L1000.05 277.2 998.7 272.05 998.65 271.75 997.8 269 984.05 268.15 983.05 270.75 983 270.7 980.8 276.15 Q980.3 277.55 979 278.4 L978.95 278.4 Q977.65 279.3 976.1 279.15 L963.75 278.4 Q962.2 278.35 961 277.35 L961 277.3 Q959.75 276.3 959.4 274.85 L959.4 274.8 Q959.05 273.25 959.7 271.8 L959.65 271.85 966.25 256.35 966.45 256.05 M962.55 275.5 Q963.1 276 963.85 276.05 L976.25 276.75 977.7 276.45 Q978.3 276 978.55 275.3 L980.8 269.85 982.55 265.7 999.7 266.75 1000.95 271.1 1000.95 271.05 1002.35 276.65 Q1002.55 277.45 1003.15 277.95 1003.75 278.45 1004.55 278.5 L1017.3 279.3 1018.8 278.9 1019.7 277.75 Q1019.9 277.05 1019.7 276.25 L1015.1 260.15 1010.7 246.1 1006.3 233.6 Q1004.15 227.65 1001.8 222 1001.6 221.35 1001.05 220.95 1000.45 220.55 999.75 220.5 L988.4 219.8 987.15 220.1 Q986.55 220.4 986.15 221 983.15 226.4 980.35 231.95 L980.35 232 974.55 243.85 968.45 257.3 961.85 272.75 Q961.55 273.45 961.7 274.25 961.9 274.95 962.55 275.5 M995.1 248.85 L995.05 248.9 996.05 252.25 987.85 251.75 989.25 248.55 991.75 243 991.8 242.95 992.65 241.2 993.25 243.1 995.1 248.85"/> + <path stroke="none" fill="#E55C5C" d="M995.1 248.85 L993.25 243.1 992.65 241.2 991.8 242.95 991.75 243 989.25 248.55 987.85 251.75 996.05 252.25 995.05 248.9 995.1 248.85 M970.65 258.25 L970.65 258.3 964 273.65 976.35 274.4 978.5 269.2 978.55 268.9 980.35 264.8 Q980.65 264.1 981.25 263.65 981.9 263.25 982.65 263.3 L999.85 264.35 Q1000.6 264.4 1001.2 264.95 1001.8 265.45 1002 266.15 L1003.15 270.2 1003.2 270.35 1004.7 276.15 1017.45 276.9 1012.8 260.85 1012.8 260.9 1008.35 246.9 1008.3 246.6 1004.1 234.5 1004.05 234.45 999.6 222.9 988.3 222.15 Q985.35 227.4 982.55 232.9 L982.45 233.15 Q979.65 238.65 976.7 244.85 L970.65 258.25 M962.55 275.5 Q961.9 274.95 961.7 274.25 961.55 273.45 961.85 272.75 L968.45 257.3 974.55 243.85 980.35 232 980.35 231.95 Q983.15 226.4 986.15 221 986.55 220.4 987.15 220.1 L988.4 219.8 999.75 220.5 Q1000.45 220.55 1001.05 220.95 1001.6 221.35 1001.8 222 1004.15 227.65 1006.3 233.6 L1010.7 246.1 1015.1 260.15 1019.7 276.25 Q1019.9 277.05 1019.7 277.75 L1018.8 278.9 1017.3 279.3 1004.55 278.5 Q1003.75 278.45 1003.15 277.95 1002.55 277.45 1002.35 276.65 L1000.95 271.05 1000.95 271.1 999.7 266.75 982.55 265.7 980.8 269.85 978.55 275.3 Q978.3 276 977.7 276.45 L976.25 276.75 963.85 276.05 Q963.1 276 962.55 275.5 M990.45 240.15 Q990.75 239.5 991.4 239.1 992 238.7 992.8 238.8 993.5 238.8 994.1 239.3 994.65 239.7 994.9 240.4 L995.5 242.3 995.5 242.35 995.55 242.45 997.35 248.2 998.35 251.6 Q998.6 252.4 998.3 253.05 998 253.8 997.35 254.25 996.7 254.7 995.95 254.65 L987.7 254.15 Q986.9 254.1 986.25 253.6 985.7 253.05 985.55 252.35 985.3 251.6 985.7 250.85 L987.1 247.55 989.6 242.05 989.6 241.95 989.6 241.9 990.45 240.15"/> + <path stroke="none" fill="#C83E3E" d="M990.45 240.15 L989.6 241.9 989.6 241.95 989.6 242.05 987.1 247.55 985.7 250.85 Q985.3 251.6 985.55 252.35 985.7 253.05 986.25 253.6 986.9 254.1 987.7 254.15 L995.95 254.65 Q996.7 254.7 997.35 254.25 998 253.8 998.3 253.05 998.6 252.4 998.35 251.6 L997.35 248.2 995.55 242.45 995.5 242.35 995.5 242.3 994.9 240.4 Q994.65 239.7 994.1 239.3 993.5 238.8 992.8 238.8 992 238.7 991.4 239.1 990.75 239.5 990.45 240.15 M970.65 258.25 L976.7 244.85 Q979.65 238.65 982.45 233.15 L982.55 232.9 Q985.35 227.4 988.3 222.15 L999.6 222.9 1004.05 234.45 1004.1 234.5 1008.3 246.6 1008.35 246.9 1012.8 260.9 1012.8 260.85 1017.45 276.9 1004.7 276.15 1003.2 270.35 1003.15 270.2 1002 266.15 Q1001.8 265.45 1001.2 264.95 1000.6 264.4 999.85 264.35 L982.65 263.3 Q981.9 263.25 981.25 263.65 980.65 264.1 980.35 264.8 L978.55 268.9 978.5 269.2 976.35 274.4 964 273.65 970.65 258.3 970.65 258.25"/> + <path stroke="none" fill="#8A2323" d="M961.5 214.9 L961.55 214.9 964.3 215.9 964.25 215.85 Q965.7 216.6 966.45 218.05 967.25 219.45 966.9 221.15 L966.9 221.1 965 231.05 965 231.1 Q964.65 232.45 963.8 233.45 962.75 234.5 961.5 234.8 L961.45 234.8 958.75 234.65 953.7 233.5 Q951.1 233.15 948.15 233.6 942.5 234.45 940.35 237.7 L940.3 237.75 940.3 237.8 940.25 237.85 Q938.3 241.7 939.2 247.55 939.65 250.6 940.7 253 L940.75 253.15 Q941.65 255.1 943.05 256.45 L943.2 256.55 Q944.55 257.85 946.35 258.3 L950.8 258.45 951.95 258.3 949.85 244.45 Q949.5 242.5 950.65 240.9 951.85 239.3 953.85 239.05 L965.6 237.25 Q967.55 236.9 969.15 238.1 970.75 239.25 971.05 241.25 L975 267.15 Q975.25 268.55 974.55 269.9 973.9 271.25 972.65 272 L972.7 272 Q970.5 273.3 965.4 275.1 960.5 276.95 953.1 278.05 946.45 279.05 940.75 277.9 L940.45 277.85 Q934.25 276.55 929.6 272.9 924.85 269.45 921.65 263.7 918.65 258.25 917.5 250.85 916.35 243.35 917.85 237.1 919.45 230.8 923 226 926.55 221.2 931.75 218.2 L932 218.05 Q937.2 215.1 943.55 214.1 L951.05 213.55 951.5 213.55 957 213.95 961.4 214.85 961.5 214.9 M951.05 215.9 L943.9 216.5 Q938.05 217.4 933.15 220.1 928.2 222.95 924.9 227.4 921.55 231.85 920.2 237.7 918.85 243.45 919.9 250.5 920.95 257.4 923.8 262.6 926.65 267.75 931 271.05 L931 271 Q935.3 274.3 940.95 275.5 L940.95 275.45 Q946.35 276.65 952.75 275.75 959.85 274.65 964.6 272.9 969.35 271.15 971.45 269.9 L972.4 268.9 972.65 267.5 968.7 241.6 Q968.5 240.6 967.75 240 966.95 239.45 966 239.6 L954.2 241.4 Q953.2 241.55 952.6 242.3 952 243.1 952.15 244.1 L954.65 260.25 954.5 260.25 951.2 260.8 945.65 260.65 Q943.35 259.95 941.6 258.3 939.75 256.65 938.65 254.15 L938.65 254.2 Q937.35 251.4 936.8 247.9 935.75 240.9 938.3 236.45 940.9 232.3 947.8 231.25 951.1 230.7 954.05 231.15 957.1 231.55 959.5 232.35 L960.8 232.45 Q961.5 232.35 962 231.85 962.5 231.3 962.65 230.55 L964.6 220.7 Q964.7 219.8 964.35 219.15 964 218.35 963.3 218.05 962.5 217.65 960.85 217.15 L960.75 217.15 956.65 216.3 951.05 215.9"/> + <path stroke="none" fill="#C83E3E" d="M944.25 218.85 L950.95 218.3 956.3 218.65 956.35 218.65 960 219.4 960.1 219.45 960.15 219.5 962.2 220.2 960.25 230.15 Q957.65 229.2 954.4 228.75 951.1 228.3 947.45 228.85 939.4 230.1 936.4 235 L936.3 235.2 936.25 235.25 Q933.3 240.4 934.45 248.3 935.1 252.15 936.45 255.15 L936.55 255.3 Q937.85 258.2 940 260.05 L940.15 260.25 Q942.2 262.05 944.75 262.85 L945.05 262.95 951.55 263.15 954.9 262.65 954.95 262.65 955.35 262.5 Q956.2 262.2 956.65 261.4 957.1 260.75 957.05 259.9 L954.55 243.75 966.35 241.95 970.3 267.85 963.8 270.65 Q959.25 272.3 952.4 273.35 946.45 274.25 941.4 273.1 L941.3 273.05 Q936.3 272.05 932.45 269.15 L932.45 269.1 Q928.45 266.15 925.85 261.4 923.25 256.6 922.2 250.15 921.25 243.55 922.5 238.2 923.8 232.85 926.8 228.85 L926.8 228.8 Q929.8 224.75 934.35 222.2 L934.4 222.15 Q938.85 219.65 944.25 218.85"/> + <path stroke="none" fill="#E55C5C" d="M944.25 218.85 Q938.85 219.65 934.4 222.15 L934.35 222.2 Q929.8 224.75 926.8 228.8 L926.8 228.85 Q923.8 232.85 922.5 238.2 921.25 243.55 922.2 250.15 923.25 256.6 925.85 261.4 928.45 266.15 932.45 269.1 L932.45 269.15 Q936.3 272.05 941.3 273.05 L941.4 273.1 Q946.45 274.25 952.4 273.35 959.25 272.3 963.8 270.65 L970.3 267.85 966.35 241.95 954.55 243.75 957.05 259.9 Q957.1 260.75 956.65 261.4 956.2 262.2 955.35 262.5 L954.95 262.65 954.9 262.65 951.55 263.15 945.05 262.95 944.75 262.85 Q942.2 262.05 940.15 260.25 L940 260.05 Q937.85 258.2 936.55 255.3 L936.45 255.15 Q935.1 252.15 934.45 248.3 933.3 240.4 936.25 235.25 L936.3 235.2 936.4 235 Q939.4 230.1 947.45 228.85 951.1 228.3 954.4 228.75 957.65 229.2 960.25 230.15 L962.2 220.2 960.15 219.5 960.1 219.45 960 219.4 956.35 218.65 956.3 218.65 950.95 218.3 944.25 218.85 M951.05 215.9 L956.65 216.3 960.75 217.15 960.85 217.15 Q962.5 217.65 963.3 218.05 964 218.35 964.35 219.15 964.7 219.8 964.6 220.7 L962.65 230.55 Q962.5 231.3 962 231.85 961.5 232.35 960.8 232.45 L959.5 232.35 Q957.1 231.55 954.05 231.15 951.1 230.7 947.8 231.25 940.9 232.3 938.3 236.45 935.75 240.9 936.8 247.9 937.35 251.4 938.65 254.2 L938.65 254.15 Q939.75 256.65 941.6 258.3 943.35 259.95 945.65 260.65 L951.2 260.8 954.5 260.25 954.65 260.25 952.15 244.1 Q952 243.1 952.6 242.3 953.2 241.55 954.2 241.4 L966 239.6 Q966.95 239.45 967.75 240 968.5 240.6 968.7 241.6 L972.65 267.5 972.4 268.9 971.45 269.9 Q969.35 271.15 964.6 272.9 959.85 274.65 952.75 275.75 946.35 276.65 940.95 275.45 L940.95 275.5 Q935.3 274.3 931 271 L931 271.05 Q926.65 267.75 923.8 262.6 920.95 257.4 919.9 250.5 918.85 243.45 920.2 237.7 921.55 231.85 924.9 227.4 928.2 222.95 933.15 220.1 938.05 217.4 943.9 216.5 L951.05 215.9"/> + <path stroke="none" fill="#E55C5C" d="M1301.25 230.1 Q1304.2 231.45 1304.65 235.25 1305.05 239.2 1302.4 241.2 L1302.3 241.3 Q1299.55 243.2 1292.9 243.9 L1291.9 243.95 Q1290.9 244.05 1290.25 243.45 1289.4 242.8 1289.35 241.8 L1288.35 232.15 Q1288.25 231.2 1288.85 230.5 1289.4 229.65 1290.3 229.55 L1292.4 229.25 Q1297.9 228.75 1300.9 230 L1301.25 230.1 M1302.25 235.45 Q1301.95 233.1 1300.15 232.25 1297.5 231.15 1292.6 231.65 L1290.7 231.9 1291.65 241.6 1292.65 241.5 Q1298.55 240.85 1300.9 239.3 1302.45 238 1302.25 235.45 M1316.85 234.1 Q1315.95 225.2 1309.25 221.6 1302.5 218.05 1290.7 219.25 L1283.25 220.3 Q1279.15 221.05 1275.4 222.05 L1280.6 273.95 1292.45 272.8 1290.75 256 Q1290.65 255 1291.3 254.25 1291.85 253.45 1292.85 253.35 L1295.2 253.1 Q1296.15 253 1297 253.7 L1297.05 253.75 1297.2 253.85 1299.8 256.8 1299.9 256.9 1303.35 261.2 1303.5 261.4 1306.95 266.1 1306.95 266.05 1310.4 271 1323.65 269.65 1320.15 264.15 1320.1 264.1 1316.25 258.7 1316.2 258.65 1316.2 258.6 1312.25 253.7 1310.45 251.6 Q1309.95 251.1 1309.85 250.4 1309.7 249.75 1310 249.1 1310.25 248.45 1310.8 248.05 1313.65 246.05 1315.2 243.35 L1315.25 243.3 1315.3 243.25 Q1317.4 239.5 1316.85 234.1 M1319.25 233.85 Q1319.85 240.25 1317.25 244.55 L1317.2 244.55 Q1315.45 247.65 1312.2 249.95 L1314.05 252.1 1318.1 257.3 1322.1 262.75 1325.7 268.45 Q1326.1 269.2 1326.05 270 1325.9 270.8 1325.25 271.4 L1323.85 272.05 1310.6 273.4 1309.45 273.15 1308.45 272.4 1305 267.5 1301.5 262.7 1297.95 258.3 1295.5 255.55 1295.45 255.5 1293.1 255.75 1294.8 272.6 Q1294.85 273.55 1294.35 274.35 1293.65 275.1 1292.65 275.2 L1280.85 276.35 Q1279.85 276.5 1279.15 275.85 1278.3 275.25 1278.25 274.25 L1273 222.35 Q1272.9 221.5 1273.4 220.75 1273.9 220.05 1274.7 219.8 1278.6 218.65 1282.9 217.95 L1290.45 216.85 Q1303.15 215.6 1310.35 219.5 1318.2 223.65 1319.25 233.85"/> + <path stroke="none" fill="#C83E3E" d="M1301.25 230.1 L1300.9 230 Q1297.9 228.75 1292.4 229.25 L1290.3 229.55 Q1289.4 229.65 1288.85 230.5 1288.25 231.2 1288.35 232.15 L1289.35 241.8 Q1289.4 242.8 1290.25 243.45 1290.9 244.05 1291.9 243.95 L1292.9 243.9 Q1299.55 243.2 1302.3 241.3 L1302.4 241.2 Q1305.05 239.2 1304.65 235.25 1304.2 231.45 1301.25 230.1 M1316.85 234.1 Q1317.4 239.5 1315.3 243.25 L1315.25 243.3 1315.2 243.35 Q1313.65 246.05 1310.8 248.05 1310.25 248.45 1310 249.1 1309.7 249.75 1309.85 250.4 1309.95 251.1 1310.45 251.6 L1312.25 253.7 1316.2 258.6 1316.2 258.65 1316.25 258.7 1320.1 264.1 1320.15 264.15 1323.65 269.65 1310.4 271 1306.95 266.05 1306.95 266.1 1303.5 261.4 1303.35 261.2 1299.9 256.9 1299.8 256.8 1297.2 253.85 1297.05 253.75 1297 253.7 Q1296.15 253 1295.2 253.1 L1292.85 253.35 Q1291.85 253.45 1291.3 254.25 1290.65 255 1290.75 256 L1292.45 272.8 1280.6 273.95 1275.4 222.05 Q1279.15 221.05 1283.25 220.3 L1290.7 219.25 Q1302.5 218.05 1309.25 221.6 1315.95 225.2 1316.85 234.1"/> + <path stroke="none" fill="#8A2323" d="M1302.25 235.45 Q1302.45 238 1300.9 239.3 1298.55 240.85 1292.65 241.5 L1291.65 241.6 1290.7 231.9 1292.6 231.65 Q1297.5 231.15 1300.15 232.25 1301.95 233.1 1302.25 235.45 M1299.85 235.7 Q1299.75 234.8 1299.25 234.4 L1293.3 233.95 1293.85 238.95 Q1297.65 238.45 1299.45 237.35 1299.95 236.8 1299.85 235.7 M1319.25 233.85 Q1318.2 223.65 1310.35 219.5 1303.15 215.6 1290.45 216.85 L1282.9 217.95 Q1278.6 218.65 1274.7 219.8 1273.9 220.05 1273.4 220.75 1272.9 221.5 1273 222.35 L1278.25 274.25 Q1278.3 275.25 1279.15 275.85 1279.85 276.5 1280.85 276.35 L1292.65 275.2 Q1293.65 275.1 1294.35 274.35 1294.85 273.55 1294.8 272.6 L1293.1 255.75 1295.45 255.5 1295.5 255.55 1297.95 258.3 1301.5 262.7 1305 267.5 1308.45 272.4 1309.45 273.15 1310.6 273.4 1323.85 272.05 1325.25 271.4 Q1325.9 270.8 1326.05 270 1326.1 269.2 1325.7 268.45 L1322.1 262.75 1318.1 257.3 1314.05 252.1 1312.2 249.95 Q1315.45 247.65 1317.2 244.55 L1317.25 244.55 Q1319.85 240.25 1319.25 233.85 M1321.65 233.65 Q1322.35 240.95 1319.3 245.8 L1319.2 246 Q1317.8 248.35 1315.6 250.25 L1315.85 250.6 1320.05 255.8 1320.2 256.05 1323.9 261.25 1324.05 261.4 1327.8 267.25 Q1328.6 268.65 1328.4 270.35 1328.15 272 1327 273.1 L1327 273.15 Q1325.75 274.3 1324.15 274.4 L1310.9 275.75 Q1309.6 275.9 1308.45 275.35 L1308.35 275.3 Q1307.25 274.85 1306.5 273.8 L1306.45 273.75 1303.05 268.85 1299.65 264.15 1299.6 264.1 1296.15 259.85 1296.05 259.65 1295.95 259.5 1295.9 259.55 1297.15 272.3 Q1297.4 274.3 1296.15 275.8 1294.9 277.4 1292.95 277.55 L1281.1 278.75 Q1279.15 278.95 1277.6 277.7 1276.05 276.45 1275.85 274.45 L1270.65 222.55 Q1270.45 220.9 1271.45 219.4 1272.45 218.05 1274.05 217.55 L1282.4 215.55 1290.25 214.45 Q1303.8 213.1 1311.5 217.45 1320.45 222.05 1321.65 233.65"/> + <path stroke="none" fill="#8A2323" d="M1130.9 246.1 Q1130.9 238.25 1133.35 232.35 1135.9 226.25 1140.2 222.1 L1140.2 222.05 Q1144.6 217.85 1150.3 215.75 1155.9 213.7 1161.95 213.7 1168.25 213.7 1173.8 215.75 1179.6 217.85 1183.95 222.05 L1184 222.1 Q1188.2 226.25 1190.65 232.35 1193.1 238.25 1193.1 246.1 1193.1 253.9 1190.75 259.8 1188.35 265.95 1184.15 270.05 L1184.1 270.1 Q1179.9 274.25 1174.1 276.4 L1173.75 276.55 Q1168.2 278.4 1161.95 278.4 1155.7 278.4 1150.15 276.4 L1150.1 276.35 Q1144.35 274.2 1140.05 270.1 L1139.9 269.95 Q1135.75 265.9 1133.3 259.8 1130.9 253.95 1130.9 246.1 M1151.2 239.8 Q1152 237.1 1153.5 235.2 1154.95 233.35 1157.05 232.35 L1157 232.35 Q1159.2 231.35 1161.95 231.35 1164.7 231.35 1166.95 232.35 1169.05 233.3 1170.45 235.1 1172 237.05 1172.8 239.75 L1172.8 239.7 Q1173.65 242.6 1173.65 246.1 1173.65 249.6 1172.8 252.45 1172 255.1 1170.45 257.05 1169 258.85 1166.9 259.8 1164.7 260.85 1161.95 260.85 1159.2 260.85 1157 259.8 1154.95 258.85 1153.5 257.05 1152 255.1 1151.2 252.45 1150.3 249.6 1150.3 246.1 1150.3 242.65 1151.2 239.8 M1182.3 223.85 L1182.3 223.8 Q1178.3 219.9 1173.05 218 1167.8 216.1 1161.95 216.1 1156.3 216.1 1151.2 218 1145.9 219.9 1141.9 223.8 L1141.85 223.8 Q1137.85 227.6 1135.6 233.25 1133.3 238.8 1133.3 246.1 1133.3 253.4 1135.55 258.95 1137.8 264.6 1141.75 268.4 1145.7 272.15 1150.95 274.15 L1151 274.2 Q1156.15 276.05 1161.95 276.05 1167.95 276.05 1173.2 274.2 L1173.25 274.2 Q1178.55 272.15 1182.45 268.4 1186.3 264.55 1188.5 258.9 1190.7 253.4 1190.7 246.1 1190.7 238.8 1188.5 233.25 1186.2 227.65 1182.3 223.85 M1154.95 237.25 Q1154 238.6 1153.45 240.5 L1153.45 240.45 Q1152.7 243.05 1152.7 246.1 1152.7 249.25 1153.45 251.75 1154.1 253.85 1155.25 255.4 L1155.25 255.45 1155.35 255.55 Q1156.5 256.95 1158 257.65 1159.7 258.45 1161.95 258.45 1164.2 258.45 1165.95 257.65 1167.5 256.95 1168.6 255.6 L1168.65 255.55 Q1169.85 253.95 1170.5 251.75 1171.3 249.25 1171.3 246.1 1171.3 243.1 1170.6 240.6 L1170.5 240.4 Q1169.85 238.2 1168.6 236.55 1167.6 235.35 1166.2 234.6 L1165.95 234.5 Q1164.2 233.7 1161.95 233.7 L1158.85 234.15 Q1156.35 234.95 1154.95 237.25"/> + <path stroke="none" fill="#E55C5C" d="M1186.25 234.15 Q1184.2 229 1180.65 225.55 L1180.6 225.5 Q1176.95 222 1172.2 220.25 1167.35 218.45 1161.95 218.45 1156.7 218.45 1151.95 220.25 1147.2 222 1143.6 225.45 L1143.55 225.5 Q1139.9 229 1137.8 234.15 1135.65 239.3 1135.65 246.1 1135.65 252.9 1137.75 258.05 1139.8 263.2 1143.35 266.65 L1143.55 266.8 Q1147.05 270.15 1151.8 271.9 L1152.05 272 Q1156.7 273.65 1161.95 273.65 1167.55 273.65 1172.4 271.9 L1172.45 271.9 Q1177.25 270.1 1180.75 266.65 1184.3 263.2 1186.3 258.05 L1186.35 258.05 Q1188.35 252.9 1188.35 246.1 1188.35 239.3 1186.25 234.15 M1175.1 239.05 Q1176.05 242.2 1176.05 246.1 1176.05 250 1175.1 253.15 1174.1 256.25 1172.35 258.5 L1172.15 258.75 Q1170.4 260.85 1167.95 261.95 1165.25 263.2 1161.95 263.2 1158.65 263.2 1156.05 261.95 L1156 261.95 Q1153.45 260.8 1151.65 258.55 L1151.6 258.45 Q1149.85 256.2 1148.9 253.15 1147.95 250 1147.95 246.1 1147.95 242.3 1148.9 239.1 1149.85 235.95 1151.55 233.8 L1151.65 233.7 Q1153.45 231.45 1156 230.15 L1156.3 230.05 Q1158.8 228.95 1161.95 228.95 1165.2 228.95 1167.8 230.1 L1167.95 230.1 Q1170.5 231.4 1172.3 233.6 L1172.3 233.65 Q1174.1 235.85 1175.05 238.9 L1175.1 239 1175.1 239.05 M1182.3 223.85 Q1186.2 227.65 1188.5 233.25 1190.7 238.8 1190.7 246.1 1190.7 253.4 1188.5 258.9 1186.3 264.55 1182.45 268.4 1178.55 272.15 1173.25 274.2 L1173.2 274.2 Q1167.95 276.05 1161.95 276.05 1156.15 276.05 1151 274.2 L1150.95 274.15 Q1145.7 272.15 1141.75 268.4 1137.8 264.6 1135.55 258.95 1133.3 253.4 1133.3 246.1 1133.3 238.8 1135.6 233.25 1137.85 227.6 1141.85 223.8 L1141.9 223.8 Q1145.9 219.9 1151.2 218 1156.3 216.1 1161.95 216.1 1167.8 216.1 1173.05 218 1178.3 219.9 1182.3 223.8 L1182.3 223.85 M1151.2 239.8 Q1150.3 242.65 1150.3 246.1 1150.3 249.6 1151.2 252.45 1152 255.1 1153.5 257.05 1154.95 258.85 1157 259.8 1159.2 260.85 1161.95 260.85 1164.7 260.85 1166.9 259.8 1169 258.85 1170.45 257.05 1172 255.1 1172.8 252.45 1173.65 249.6 1173.65 246.1 1173.65 242.6 1172.8 239.7 L1172.8 239.75 Q1172 237.05 1170.45 235.1 1169.05 233.3 1166.95 232.35 1164.7 231.35 1161.95 231.35 1159.2 231.35 1157 232.35 L1157.05 232.35 Q1154.95 233.35 1153.5 235.2 1152 237.1 1151.2 239.8"/> + <path stroke="none" fill="#C83E3E" d="M1186.25 234.15 Q1188.35 239.3 1188.35 246.1 1188.35 252.9 1186.35 258.05 L1186.3 258.05 Q1184.3 263.2 1180.75 266.65 1177.25 270.1 1172.45 271.9 L1172.4 271.9 Q1167.55 273.65 1161.95 273.65 1156.7 273.65 1152.05 272 L1151.8 271.9 Q1147.05 270.15 1143.55 266.8 L1143.35 266.65 Q1139.8 263.2 1137.75 258.05 1135.65 252.9 1135.65 246.1 1135.65 239.3 1137.8 234.15 1139.9 229 1143.55 225.5 L1143.6 225.45 Q1147.2 222 1151.95 220.25 1156.7 218.45 1161.95 218.45 1167.35 218.45 1172.2 220.25 1176.95 222 1180.6 225.5 L1180.65 225.55 Q1184.2 229 1186.25 234.15 M1175.1 239.05 L1175.1 239 1175.05 238.9 Q1174.1 235.85 1172.3 233.65 L1172.3 233.6 Q1170.5 231.4 1167.95 230.1 L1167.8 230.1 Q1165.2 228.95 1161.95 228.95 1158.8 228.95 1156.3 230.05 L1156 230.15 Q1153.45 231.45 1151.65 233.7 L1151.55 233.8 Q1149.85 235.95 1148.9 239.1 1147.95 242.3 1147.95 246.1 1147.95 250 1148.9 253.15 1149.85 256.2 1151.6 258.45 L1151.65 258.55 Q1153.45 260.8 1156 261.95 L1156.05 261.95 Q1158.65 263.2 1161.95 263.2 1165.25 263.2 1167.95 261.95 1170.4 260.85 1172.15 258.75 L1172.35 258.5 Q1174.1 256.25 1175.1 253.15 1176.05 250 1176.05 246.1 1176.05 242.2 1175.1 239.05"/> + <path stroke="none" fill="#E55C5C" d="M1094.85 229.35 Q1095.6 228.75 1096.6 228.75 L1117.95 230.65 1118.8 220.7 1083.2 217.6 1078.7 270.3 1116 273.5 1116.85 263.6 1093.75 261.55 Q1092.75 261.5 1092.15 260.75 1091.5 260 1091.6 259 L1092.25 251.05 Q1092.35 250.05 1093.1 249.4 1093.9 248.8 1094.85 248.85 L1113.6 250.45 1114.4 240.8 1095.7 239.15 Q1094.7 239.1 1094.1 238.35 1093.45 237.6 1093.5 236.6 L1094 231 Q1094.1 230 1094.85 229.35 M1095.9 236.8 L1114.6 238.4 Q1115.6 238.5 1116.25 239.3 1116.85 240 1116.75 241 L1115.95 250.7 Q1115.85 251.65 1115.1 252.35 1114.35 252.9 1113.35 252.85 L1094.65 251.2 1093.95 259.2 1117.1 261.2 Q1118.1 261.3 1118.65 262.05 1119.3 262.8 1119.2 263.8 L1118.35 273.75 Q1118.25 274.75 1117.55 275.35 1116.75 276 1115.8 275.9 L1078.45 272.65 Q1077.45 272.6 1076.9 271.85 1076.2 271.05 1076.3 270.05 L1080.85 217.4 Q1080.95 216.4 1081.75 215.8 1082.45 215.15 1083.45 215.25 L1119 218.35 Q1120 218.45 1120.7 219.2 1121.25 219.9 1121.2 220.9 L1120.35 230.85 Q1120.25 231.85 1119.5 232.5 1118.75 233.15 1117.75 233.05 L1096.4 231.15 1095.9 236.8"/> + <path stroke="none" fill="#C83E3E" d="M1094.85 229.35 Q1094.1 230 1094 231 L1093.5 236.6 Q1093.45 237.6 1094.1 238.35 1094.7 239.1 1095.7 239.15 L1114.4 240.8 1113.6 250.45 1094.85 248.85 Q1093.9 248.8 1093.1 249.4 1092.35 250.05 1092.25 251.05 L1091.6 259 Q1091.5 260 1092.15 260.75 1092.75 261.5 1093.75 261.55 L1116.85 263.6 1116 273.5 1078.7 270.3 1083.2 217.6 1118.8 220.7 1117.95 230.65 1096.6 228.75 Q1095.6 228.75 1094.85 229.35"/> + <path stroke="none" fill="#8A2323" d="M1098.45 234.6 L1114.8 236 Q1116.75 236.2 1118.1 237.7 1119.35 239.25 1119.15 241.25 L1118.35 250.9 Q1118.15 252.9 1116.65 254.15 1115.1 255.4 1113.15 255.2 L1096.8 253.8 1096.55 257 1117.25 258.8 Q1119.25 259 1120.45 260.5 1121.75 262 1121.6 264 L1120.75 273.95 Q1120.55 275.9 1119 277.15 1117.6 278.45 1115.6 278.3 L1078.3 275.05 Q1076.3 274.85 1075 273.4 1073.75 271.85 1073.9 269.9 L1078.45 217.2 Q1078.65 215.25 1080.15 214 1081.7 212.65 1083.65 212.85 L1119.25 215.95 Q1121.25 216.1 1122.5 217.6 1123.75 219.15 1123.55 221.15 L1122.7 231.05 Q1122.55 233.05 1121.05 234.3 1119.5 235.5 1117.55 235.4 L1098.55 233.7 1098.45 234.6 M1095.9 236.8 L1096.4 231.15 1117.75 233.05 Q1118.75 233.15 1119.5 232.5 1120.25 231.85 1120.35 230.85 L1121.2 220.9 Q1121.25 219.9 1120.7 219.2 1120 218.45 1119 218.35 L1083.45 215.25 Q1082.45 215.15 1081.75 215.8 1080.95 216.4 1080.85 217.4 L1076.3 270.05 Q1076.2 271.05 1076.9 271.85 1077.45 272.6 1078.45 272.65 L1115.8 275.9 Q1116.75 276 1117.55 275.35 1118.25 274.75 1118.35 273.75 L1119.2 263.8 Q1119.3 262.8 1118.65 262.05 1118.1 261.3 1117.1 261.2 L1093.95 259.2 1094.65 251.2 1113.35 252.85 Q1114.35 252.9 1115.1 252.35 1115.85 251.65 1115.95 250.7 L1116.75 241 Q1116.85 240 1116.25 239.3 1115.6 238.5 1114.6 238.4 L1095.9 236.8"/> + <path stroke="none" fill="#8A2323" d="M1034.7 214.8 L1038.5 220.95 1042.75 228.35 1043 228.75 1046.6 235.45 1049.15 228.25 1049.2 227.95 1052.25 219.8 Q1053.75 215.8 1055 213.1 1055.5 211.95 1056.6 211.2 1057.65 210.4 1058.95 210.3 L1069.8 209.4 Q1071.55 209.25 1073 210.35 1074.4 211.35 1074.8 213.1 L1077.2 224.9 1079.5 238.5 1079.5 238.55 1081.55 252.6 1083.4 265.9 Q1083.6 267.25 1083.1 268.45 1082.55 269.65 1081.45 270.4 1080.4 271.2 1079.05 271.3 L1067.5 272.25 Q1065.55 272.4 1064.1 271.2 L1064.05 271.2 Q1062.55 269.95 1062.4 268.05 L1060.65 253.4 Q1059.95 255.25 1059.4 257.05 L1059.35 257.15 1059.3 257.25 1057.25 263.45 1057.25 263.4 Q1056.8 264.75 1055.7 265.65 L1055.65 265.65 Q1054.55 266.6 1053.15 266.7 L1044.85 267.4 Q1043.45 267.5 1042.15 266.8 1040.95 266.15 1040.3 264.95 L1040.25 264.95 1037.1 259 1036.95 258.7 1035.2 255.4 1035.9 270.2 Q1036 272.15 1034.75 273.6 1033.45 275.05 1031.5 275.25 L1019.95 276.2 1017.45 275.75 Q1016.3 275.15 1015.65 274 L1015.6 274 Q1014.8 272.9 1014.75 271.6 L1014.35 258.2 1014.15 243.95 Q1014.05 236.8 1014.25 230.1 L1014.65 218.05 Q1014.75 216.3 1016.05 215 1017.3 213.75 1019 213.6 L1030.4 212.65 Q1031.65 212.55 1032.8 213.1 1034 213.7 1034.7 214.8 M1031.8 215.3 L1030.5 215.05 1019.2 216 Q1018.35 216.05 1017.7 216.7 1017.05 217.35 1017 218.25 1016.7 223.55 1016.65 230.15 L1016.55 243.95 1016.8 258.1 1017.15 271.5 Q1017.15 272.15 1017.5 272.7 1017.9 273.3 1018.55 273.55 L1019.75 273.8 1031.3 272.85 Q1032.25 272.75 1032.95 272.05 1033.55 271.3 1033.55 270.35 L1032.75 253.55 1032.5 245.1 1035.45 250.7 1035.45 250.75 1039.25 257.85 1042.35 263.8 Q1042.65 264.4 1043.35 264.75 L1044.65 265 1052.9 264.3 Q1053.65 264.25 1054.2 263.8 L1055 262.7 1057.1 256.4 1057.05 256.45 1059.65 248.75 1061.6 242.65 1062.7 251.1 1064.75 267.75 Q1064.85 268.7 1065.6 269.35 1066.35 269.95 1067.3 269.9 L1078.85 268.95 1080.1 268.5 1080.85 267.5 1081 266.2 1079.2 252.95 1077.15 238.9 1074.9 225.35 1072.5 213.65 Q1072.25 212.75 1071.55 212.25 1070.8 211.75 1069.95 211.75 L1059.1 212.65 Q1058.5 212.7 1058 213.1 1057.4 213.5 1057.2 214.1 1055.95 216.75 1054.45 220.7 L1051.45 229.05 1048.25 238.15 1047.1 241.55 1045.45 238.4 1040.9 229.9 1036.45 222.15 1032.7 216.15 Q1032.35 215.55 1031.8 215.3"/> + <path stroke="none" fill="#E55C5C" d="M1031.8 215.3 Q1032.35 215.55 1032.7 216.15 L1036.45 222.15 1040.9 229.9 1045.45 238.4 1047.1 241.55 1048.25 238.15 1051.45 229.05 1054.45 220.7 Q1055.95 216.75 1057.2 214.1 1057.4 213.5 1058 213.1 1058.5 212.7 1059.1 212.65 L1069.95 211.75 Q1070.8 211.75 1071.55 212.25 1072.25 212.75 1072.5 213.65 L1074.9 225.35 1077.15 238.9 1079.2 252.95 1081 266.2 1080.85 267.5 1080.1 268.5 1078.85 268.95 1067.3 269.9 Q1066.35 269.95 1065.6 269.35 1064.85 268.7 1064.75 267.75 L1062.7 251.1 1061.6 242.65 1059.65 248.75 1057.05 256.45 1057.1 256.4 1055 262.7 1054.2 263.8 Q1053.65 264.25 1052.9 264.3 L1044.65 265 1043.35 264.75 Q1042.65 264.4 1042.35 263.8 L1039.25 257.85 1035.45 250.75 1035.45 250.7 1032.5 245.1 1032.75 253.55 1033.55 270.35 Q1033.55 271.3 1032.95 272.05 1032.25 272.75 1031.3 272.85 L1019.75 273.8 1018.55 273.55 Q1017.9 273.3 1017.5 272.7 1017.15 272.15 1017.15 271.5 L1016.8 258.1 1016.55 243.95 1016.65 230.15 Q1016.7 223.55 1017 218.25 1017.05 217.35 1017.7 216.7 1018.35 216.05 1019.2 216 L1030.5 215.05 1031.8 215.3 M1030.7 217.45 L1019.35 218.4 1019.4 218.45 1019 230.2 Q1018.85 236.75 1018.95 243.85 L1018.95 243.9 1019.2 258.05 1019.55 271.4 1031.1 270.45 1030.4 253.65 1030.1 245.2 Q1030.1 244.35 1030.55 243.65 L1031.85 242.75 1033.45 242.95 Q1034.15 243.2 1034.6 244 L1037.55 249.6 1041.3 256.75 1041.35 256.9 1044.45 262.65 1052.75 261.9 1054.7 256 1054.8 255.65 1057.35 248 1059.4 241.95 Q1059.6 241.15 1060.3 240.7 1061 240.25 1061.8 240.3 1062.65 240.4 1063.2 240.95 1063.9 241.55 1064 242.4 L1065.1 250.75 1065.1 250.9 1067.1 267.5 1078.65 266.55 1076.9 253.3 1074.75 239.25 1072.5 225.8 Q1071.35 219.35 1070.2 214.2 L1070.15 214.15 1059.3 215.05 1056.7 221.55 Q1055.2 225.35 1053.65 229.85 L1053.6 229.9 1050.55 238.9 1050.45 239.05 1049.4 242.25 Q1049.05 243.25 1048.25 243.7 L1046.4 243.85 Q1045.45 243.55 1045.05 242.65 L1043.35 239.5 1038.9 231.1 1038.85 231.05 1034.45 223.4 1030.7 217.45"/> + <path stroke="none" fill="#C83E3E" d="M1030.7 217.45 L1034.45 223.4 1038.85 231.05 1038.9 231.1 1043.35 239.5 1045.05 242.65 Q1045.45 243.55 1046.4 243.85 L1048.25 243.7 Q1049.05 243.25 1049.4 242.25 L1050.45 239.05 1050.55 238.9 1053.6 229.9 1053.65 229.85 Q1055.2 225.35 1056.7 221.55 L1059.3 215.05 1070.15 214.15 1070.2 214.2 Q1071.35 219.35 1072.5 225.8 L1074.75 239.25 1076.9 253.3 1078.65 266.55 1067.1 267.5 1065.1 250.9 1065.1 250.75 1064 242.4 Q1063.9 241.55 1063.2 240.95 1062.65 240.4 1061.8 240.3 1061 240.25 1060.3 240.7 1059.6 241.15 1059.4 241.95 L1057.35 248 1054.8 255.65 1054.7 256 1052.75 261.9 1044.45 262.65 1041.35 256.9 1041.3 256.75 1037.55 249.6 1034.6 244 Q1034.15 243.2 1033.45 242.95 L1031.85 242.75 1030.55 243.65 Q1030.1 244.35 1030.1 245.2 L1030.4 253.65 1031.1 270.45 1019.55 271.4 1019.2 258.05 1018.95 243.9 1018.95 243.85 Q1018.85 236.75 1019 230.2 L1019.4 218.45 1019.35 218.4 1030.7 217.45"/> + <path stroke="none" fill="#8A2323" d="M1206.9 247.9 L1206.9 247.85 1206.75 247.55 1202.35 238.5 1197.6 228.4 1193.25 218.95 1192.25 217.95 Q1191.55 217.55 1190.8 217.6 L1177.7 219 Q1176.95 219.1 1176.35 219.65 1175.8 220.2 1175.65 220.95 1175.5 221.7 1175.8 222.5 L1181.1 233.4 1181.1 233.45 1187.6 246.25 1194.95 259.75 Q1198.75 266.65 1202.65 273 L1203.6 273.85 1204.9 274.05 1216.3 272.85 1217.5 272.35 1218.25 271.25 Q1220.7 264.25 1222.95 256.75 L1227.25 241.95 1230.85 228 1230.85 227.95 1233.6 216.2 Q1233.75 215.35 1233.5 214.7 L1232.45 213.55 Q1231.75 213.1 1231 213.2 L1218.35 214.6 Q1217.65 214.65 1217.05 215.25 1216.5 215.8 1216.3 216.45 L1214.1 226.6 1211.6 237.5 1209.1 247.95 1208.35 250.7 1207.2 248.55 1207 248.15 1207.05 248.15 1206.9 247.9 M1174.75 217.9 Q1175.9 216.85 1177.45 216.7 L1190.55 215.25 Q1192 215.1 1193.4 215.85 1194.8 216.65 1195.4 218.05 L1199.75 227.45 1204.45 237.5 1207.6 243.95 1209.3 236.95 1211.75 226.15 1213.95 216 Q1214.3 214.45 1215.45 213.45 1216.6 212.4 1218.1 212.25 L1230.8 210.85 Q1232.25 210.7 1233.65 211.5 L1233.7 211.5 Q1235 212.25 1235.65 213.7 1236.2 215.2 1235.9 216.7 L1233.2 228.3 1233.1 228.55 1229.5 242.55 1229.45 242.8 1225.25 257.4 1220.55 272.05 1220.55 272 Q1220.1 273.3 1219.05 274.2 1217.9 275 1216.5 275.2 L1205.15 276.4 Q1203.75 276.6 1202.6 276 L1202.6 276.05 Q1201.3 275.35 1200.6 274.25 L1200.55 274.2 1192.85 260.95 1185.5 247.35 Q1181.95 240.65 1178.95 234.45 L1178.9 234.3 1173.6 223.4 Q1173 222 1173.3 220.5 L1173.3 220.45 Q1173.65 218.95 1174.8 217.95 L1174.75 217.9"/> + <path stroke="none" fill="#E55C5C" d="M1207 248.15 L1207.2 248.55 1208.35 250.7 1209.1 247.95 1211.6 237.5 1214.1 226.6 1216.3 216.45 Q1216.5 215.8 1217.05 215.25 1217.65 214.65 1218.35 214.6 L1231 213.2 Q1231.75 213.1 1232.45 213.55 L1233.5 214.7 Q1233.75 215.35 1233.6 216.2 L1230.85 227.95 1230.85 228 1227.25 241.95 1222.95 256.75 Q1220.7 264.25 1218.25 271.25 L1217.5 272.35 1216.3 272.85 1204.9 274.05 1203.6 273.85 1202.65 273 Q1198.75 266.65 1194.95 259.75 L1187.6 246.25 1181.1 233.45 1181.1 233.4 1175.8 222.5 Q1175.5 221.7 1175.65 220.95 1175.8 220.2 1176.35 219.65 1176.95 219.1 1177.7 219 L1190.8 217.6 Q1191.55 217.55 1192.25 217.95 L1193.25 218.95 1197.6 228.4 1202.35 238.5 1206.75 247.55 1206.9 247.85 1206.9 247.9 1207 248.15 M1218.65 217 L1216.45 227.15 1213.95 238.05 1211.4 248.45 1211.4 248.6 1210.65 251.4 1209.9 252.55 Q1209.35 253 1208.6 253.1 1207.8 253.15 1207.2 252.8 L1206.2 251.85 1205.1 249.7 1204.9 249.2 1204.9 249.1 1204.6 248.6 1200.2 239.55 1195.4 229.4 1191.05 219.95 1178 221.4 1178 221.45 1183.2 232.35 1183.3 232.5 1189.7 245.1 Q1193.2 251.85 1197.05 258.6 1200.85 265.45 1204.65 271.7 L1216.05 270.45 1220.7 256.05 1224.95 241.3 1224.9 241.3 1228.5 227.4 1231.25 215.65 1231.25 215.6 1218.7 217 1218.65 217"/> + <path stroke="none" fill="#C83E3E" d="M1218.65 217 L1218.65 217.05 1218.7 217 1231.25 215.6 1231.25 215.65 1228.5 227.4 1224.9 241.3 1224.95 241.3 1220.7 256.05 1216.05 270.45 1204.65 271.7 Q1200.85 265.45 1197.05 258.6 1193.2 251.85 1189.7 245.1 L1183.3 232.5 1183.2 232.35 1178 221.45 1178 221.4 1191.05 219.95 1195.4 229.4 1200.2 239.55 1204.6 248.6 1204.9 249.1 1204.9 249.2 1205.1 249.7 1206.2 251.85 1207.2 252.8 Q1207.8 253.15 1208.6 253.1 1209.35 253 1209.9 252.55 L1210.65 251.4 1211.4 248.6 1211.4 248.45 1213.95 238.05 1216.45 227.15 1218.65 217"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M1312.5 127.25 Q1314.15 127.45 1315.35 128.65 L1315.3 128.65 Q1316.5 129.9 1316.65 131.5 1316.85 133.15 1315.9 134.55 1310.65 142.55 1305.1 150 L1294.4 163.8 1292.3 182.3 Q1292.1 184.3 1290.6 185.5 1289.05 186.7 1287.1 186.45 L1275.4 185.15 Q1273.45 184.9 1272.25 183.4 1271 181.9 1271.2 179.9 L1273.3 161.6 1268.6 151.6 1268.35 158.1 Q1267.5 165.95 1264.4 171.45 L1264.2 171.75 Q1261.05 177.35 1256.05 180.7 1251 184.15 1244.25 185.4 1237.9 186.55 1230.3 185.75 L1222.7 184.65 1219.6 184.05 Q1218.65 184.55 1217.55 184.55 L1204.9 184.55 Q1203.35 184.55 1202.05 183.6 1200.8 182.6 1200.4 181.1 L1200.4 181.15 1198.75 176.1 1198.65 175.9 1197.7 173.2 1184 173.2 1183.2 175.65 1183.15 175.75 1183 176.15 1182.2 178.6 1182.05 179.1 1181.35 181.25 Q1180.9 182.7 1179.7 183.6 L1179.65 183.6 Q1178.4 184.55 1176.85 184.55 L1164.65 184.55 Q1163.6 184.55 1162.75 184.15 1162.4 185.9 1160.95 187 1159.45 188.2 1157.5 188 L1120.75 183.65 Q1119.5 183.5 1118.55 182.85 L1112.35 183.55 1109.85 183.1 Q1108.7 182.6 1108.05 181.6 L1108 181.6 1104.5 176.75 1101.15 172.15 1101.1 172.1 1097.65 167.9 1097.5 167.75 1097.45 167.6 1097.4 167.65 1098.8 180.25 Q1099 182.2 1097.8 183.7 1096.55 185.25 1094.6 185.45 L1082.95 186.75 Q1081 186.95 1079.45 185.7 1077.95 184.5 1077.75 182.55 L1072.15 131.3 Q1071.95 129.6 1072.9 128.2 1073.9 126.75 1075.45 126.3 1079.4 125.1 1083.75 124.25 L1091.4 123.15 Q1104.85 121.65 1112.5 125.9 L1112.45 125.85 Q1119.15 129.25 1121.55 136.6 L1122.7 126.55 Q1122.9 124.6 1124.4 123.4 1126 122.2 1127.95 122.4 L1163 126.55 Q1164.95 126.75 1166.1 128.25 1167.3 129.85 1167.1 131.8 L1165.95 141.6 Q1165.7 143.55 1164.2 144.7 1162.7 145.9 1160.75 145.7 L1142.05 143.5 1141.95 144.4 1158 146.3 Q1159.95 146.5 1161.15 148 1162.35 149.55 1162.15 151.5 L1161 161.05 Q1160.8 163 1159.25 164.2 1157.7 165.4 1155.75 165.2 L1139.7 163.3 1139.35 166.45 1159.75 168.85 Q1161.7 169.05 1162.9 170.6 L1165.75 162.6 1165.95 162.3 Q1168.5 155.25 1171 148.95 L1171.05 148.95 Q1173.5 142.6 1176 137 L1176 136.8 Q1178.55 131 1181.2 125.5 1181.8 124.3 1182.95 123.6 L1183 123.55 Q1184.1 122.85 1185.45 122.85 L1196.75 122.85 Q1198.05 122.85 1199.25 123.6 L1199.2 123.6 Q1200.35 124.3 1200.95 125.5 L1205.95 136.5 1206.1 136.75 1211.15 148.95 1211.25 149.3 1213.2 154.2 1216.2 126.85 Q1216.4 125.2 1217.65 124 1218.85 122.85 1220.55 122.7 1224.95 122.4 1229.6 122.55 L1237.5 123.2 Q1244.75 123.95 1250.6 126.2 L1250.7 126.3 Q1256.4 128.6 1260.4 132.35 L1258.75 128.1 Q1258.2 126.5 1258.7 124.95 1259.2 123.4 1260.6 122.45 1262.05 121.55 1263.75 121.7 L1277.35 123.25 Q1278.7 123.4 1279.75 124.3 L1279.8 124.35 Q1280.8 125.25 1281.25 126.55 L1281.25 126.6 Q1282.95 132.05 1285.1 137.55 L1285.1 137.5 1286.55 141.15 1288.75 137.95 1295 128.1 1295.05 128.1 Q1295.75 126.9 1296.95 126.3 L1297.05 126.25 Q1298.25 125.65 1299.65 125.8 L1312.5 127.25 M951.15 120.8 L956.55 121.2 961.05 122.15 960.95 122.2 961.1 122.25 Q963 122.75 963.8 123.2 L963.8 123.15 Q965.25 123.85 965.95 125.3 966.7 126.75 966.35 128.35 L966.35 128.3 964.4 138.15 Q964.15 139.55 963.2 140.5 962.25 141.55 960.9 141.85 L960.85 141.85 958.25 141.7 Q956.05 140.9 953.3 140.55 950.7 140.15 947.8 140.6 942.2 141.4 940.05 144.6 L940.05 144.65 940 144.65 940 144.75 939.95 144.8 Q938 148.6 938.85 154.35 939.3 157.4 940.35 159.8 L940.4 159.95 Q941.3 161.8 942.6 163.2 L942.85 163.3 Q944.15 164.55 945.9 165.05 L950.3 165.2 951.4 165.05 949.4 151.35 Q949.1 149.4 950.25 147.85 951.4 146.3 953.35 146 L965 144.25 966.4 144.25 968.45 126.55 Q968.7 124.6 970.2 123.4 971.75 122.15 973.7 122.4 L1005.05 126.1 Q1006.3 124.65 1008.2 124.5 L1051.4 121.35 Q1053.35 121.2 1054.85 122.5 1056.3 123.75 1056.45 125.75 L1057.15 135.7 Q1057.3 137.7 1056.05 139.15 1054.75 140.6 1052.8 140.75 L1041.75 141.55 1044.5 179 Q1044.65 180.95 1043.4 182.4 1042.1 183.9 1040.15 184.05 L1028.45 184.9 Q1026.5 185.05 1025 183.75 1023.55 182.5 1023.4 180.55 L1020.65 143.1 1010.85 143.8 1009.95 144.7 Q1008.4 145.95 1006.45 145.7 L987.8 143.5 987.7 144.35 1003.75 146.25 Q1005.7 146.45 1006.9 148 1008.15 149.5 1007.9 151.45 L1006.8 161.05 Q1006.55 163 1005 164.2 1003.5 165.35 1001.55 165.15 L985.5 163.25 985.1 166.4 1005.5 168.8 Q1007.45 169.05 1008.65 170.6 1009.85 172.1 1009.6 174.05 L1008.45 183.85 Q1008.25 185.8 1006.7 187 1005.2 188.25 1003.25 188 L966.5 183.7 Q964.7 183.45 963.5 182.15 958.95 183.6 952.5 184.55 945.95 185.55 940.3 184.35 L940 184.25 Q933.9 183.05 929.3 179.4 924.6 175.95 921.5 170.25 918.55 164.8 917.45 157.5 916.35 150.1 917.85 143.95 919.4 137.7 922.95 133 926.45 128.35 931.7 125.35 L931.85 125.15 Q937.05 122.3 943.3 121.4 L950.7 120.8 951.15 120.8 M1119.3 155.6 L1116.85 158.3 1117.05 158.65 1118.75 160.6 1119.3 155.6 M1100.75 145.65 Q1101.25 145.1 1101.1 144.05 1101 143.15 1100.45 142.75 L1094.65 142.35 1095.2 147.3 Q1098.95 146.7 1100.75 145.65 M1235.8 142.55 L1233.2 166.4 Q1239.4 167.05 1242.9 164.6 L1242.95 164.5 Q1246.25 161.5 1246.9 155.75 1247.55 149.95 1245.3 146.55 L1245.25 146.5 Q1242.45 143.3 1236 142.6 L1235.8 142.55"/> + <path stroke="none" fill="#BF9900" d="M1125.9 120.3 Q1125.15 120.85 1125.05 121.85 L1118.95 173.75 Q1118.85 174.7 1119.45 175.5 1120 176.25 1121 176.35 L1157.75 180.7 Q1158.7 180.8 1159.55 180.2 1160.3 179.55 1160.4 178.6 L1161.55 168.8 Q1161.65 167.8 1161.1 167.1 1160.4 166.3 1159.45 166.2 L1136.7 163.5 1137.65 155.65 1156.05 157.85 Q1157.05 157.95 1157.8 157.35 1158.55 156.75 1158.65 155.75 L1159.8 146.2 Q1159.9 145.25 1159.3 144.45 1158.7 143.7 1157.7 143.6 L1139.3 141.4 1139.95 135.9 1161 138.4 Q1161.95 138.5 1162.75 137.9 1163.45 137.25 1163.6 136.3 L1164.75 126.5 Q1164.85 125.5 1164.25 124.8 1163.65 124 1162.7 123.9 L1127.65 119.75 Q1126.65 119.65 1125.9 120.3 M1124.4 118.4 Q1126 117.2 1127.95 117.4 L1163 121.55 Q1164.95 121.75 1166.1 123.25 1167.3 124.85 1167.1 126.8 L1165.95 136.6 Q1165.7 138.55 1164.2 139.7 1162.7 140.9 1160.75 140.7 L1142.05 138.5 1141.95 139.4 1158 141.3 Q1159.95 141.5 1161.15 143 1162.35 144.55 1162.15 146.5 L1161 156.05 Q1160.8 158 1159.25 159.2 1157.7 160.4 1155.75 160.2 L1139.7 158.3 1139.35 161.45 1159.75 163.85 Q1161.7 164.05 1162.9 165.6 1164.1 167.15 1163.9 169.1 L1162.75 178.9 Q1162.5 180.85 1160.95 182 1159.45 183.2 1157.5 183 L1120.75 178.65 Q1118.8 178.45 1117.55 176.95 1116.35 175.4 1116.6 173.45 L1122.7 121.55 Q1122.9 119.6 1124.4 118.4"/> + <path stroke="none" fill="#FFE16D" d="M1125.9 120.3 Q1126.65 119.65 1127.65 119.75 L1162.7 123.9 Q1163.65 124 1164.25 124.8 1164.85 125.5 1164.75 126.5 L1163.6 136.3 Q1163.45 137.25 1162.75 137.9 1161.95 138.5 1161 138.4 L1139.95 135.9 1139.3 141.4 1157.7 143.6 Q1158.7 143.7 1159.3 144.45 1159.9 145.25 1159.8 146.2 L1158.65 155.75 Q1158.55 156.75 1157.8 157.35 1157.05 157.95 1156.05 157.85 L1137.65 155.65 1136.7 163.5 1159.45 166.2 Q1160.4 166.3 1161.1 167.1 1161.65 167.8 1161.55 168.8 L1160.4 178.6 Q1160.3 179.55 1159.55 180.2 1158.7 180.8 1157.75 180.7 L1121 176.35 Q1120 176.25 1119.45 175.5 1118.85 174.7 1118.95 173.75 L1125.05 121.85 Q1125.15 120.85 1125.9 120.3 M1127.4 122.1 L1121.3 174 1158.05 178.35 1159.2 168.55 1136.45 165.85 Q1135.45 165.75 1134.85 165 1134.25 164.25 1134.35 163.25 L1135.3 155.4 Q1135.4 154.45 1136.2 153.8 1136.9 153.2 1137.9 153.3 L1156.3 155.5 1157.45 145.95 1139.05 143.75 Q1138.05 143.65 1137.45 142.9 1136.85 142.15 1136.95 141.15 L1137.6 135.65 Q1137.7 134.65 1138.5 134.05 1139.25 133.45 1140.25 133.55 L1161.3 136.05 1162.45 126.25 1127.4 122.1"/> + <path stroke="none" fill="#FFCC00" d="M1127.4 122.1 L1162.45 126.25 1161.3 136.05 1140.25 133.55 Q1139.25 133.45 1138.5 134.05 1137.7 134.65 1137.6 135.65 L1136.95 141.15 Q1136.85 142.15 1137.45 142.9 1138.05 143.65 1139.05 143.75 L1157.45 145.95 1156.3 155.5 1137.9 153.3 Q1136.9 153.2 1136.2 153.8 1135.4 154.45 1135.3 155.4 L1134.35 163.25 Q1134.25 164.25 1134.85 165 1135.45 165.75 1136.45 165.85 L1159.2 168.55 1158.05 178.35 1121.3 174 1127.4 122.1"/> + <path stroke="none" fill="#BF9900" d="M1261.15 128.15 L1261.35 128.25 1261.35 128.3 Q1265.35 132.6 1267.3 138.75 L1267.4 139.05 Q1269.2 145 1268.35 153.1 1267.5 160.95 1264.4 166.45 L1264.2 166.75 Q1261.05 172.35 1256.05 175.7 1251 179.15 1244.25 180.4 1237.9 181.55 1230.3 180.75 L1222.7 179.65 Q1218.15 178.9 1213.9 177.55 1212.3 177 1211.4 175.6 1210.5 174.15 1210.65 172.5 L1216.2 121.85 Q1216.4 120.2 1217.65 119 1218.85 117.85 1220.55 117.7 1224.95 117.4 1229.6 117.55 L1237.5 118.2 Q1244.75 118.95 1250.6 121.2 L1250.7 121.3 Q1256.95 123.8 1261.15 128.1 L1261.15 128.15 M1265.1 139.7 Q1263.35 133.85 1259.5 129.8 L1259.45 129.8 Q1255.6 125.8 1249.8 123.45 1244.25 121.3 1237.25 120.55 L1229.55 119.95 Q1225 119.75 1220.7 120.05 1219.9 120.15 1219.25 120.75 1218.65 121.25 1218.55 122.1 L1213 172.75 Q1212.95 173.55 1213.4 174.3 1213.85 175.05 1214.65 175.3 1218.7 176.6 1223.1 177.3 L1230.55 178.4 Q1237.75 179.15 1243.85 178.1 1250.05 176.95 1254.7 173.8 1259.35 170.65 1262.3 165.35 L1262.35 165.3 Q1265.2 160.15 1266 152.85 1266.8 145.3 1265.15 139.7 L1265.1 139.7 M1233.7 135 L1233.85 135.05 1236.25 135.3 Q1243.85 136.1 1247.05 139.95 1250 144 1249.25 151.05 1248.5 157.8 1244.55 161.3 1240.35 164.6 1232.7 163.75 L1230.55 163.5 1233.7 135 M1235.8 137.55 L1233.2 161.4 Q1239.4 162.05 1242.9 159.6 L1242.95 159.5 Q1246.25 156.5 1246.9 150.75 1247.55 144.95 1245.3 141.55 L1245.25 141.5 Q1242.45 138.3 1236 137.6 L1235.8 137.55"/> + <path stroke="none" fill="#FFE16D" d="M1265.1 139.7 L1265.15 139.7 Q1266.8 145.3 1266 152.85 1265.2 160.15 1262.35 165.3 L1262.3 165.35 Q1259.35 170.65 1254.7 173.8 1250.05 176.95 1243.85 178.1 1237.75 179.15 1230.55 178.4 L1223.1 177.3 Q1218.7 176.6 1214.65 175.3 1213.85 175.05 1213.4 174.3 1212.95 173.55 1213 172.75 L1218.55 122.1 Q1218.65 121.25 1219.25 120.75 1219.9 120.15 1220.7 120.05 1225 119.75 1229.55 119.95 L1237.25 120.55 Q1244.25 121.3 1249.8 123.45 1255.6 125.8 1259.45 129.8 L1259.5 129.8 Q1263.35 133.85 1265.1 139.7 M1234.05 132.65 L1234.1 132.65 1236.5 132.95 Q1245.2 133.9 1248.85 138.45 L1248.95 138.55 Q1252.5 143.2 1251.6 151.3 1250.75 158.9 1246.3 162.9 L1245.95 163.1 Q1241.2 167.05 1232.45 166.1 L1230.3 165.85 Q1229.3 165.7 1228.75 165 1228.15 164.15 1228.25 163.25 L1231.4 134.75 Q1231.45 134.15 1231.85 133.65 1232.25 133.1 1232.8 132.9 L1234.05 132.65 M1262.9 140.4 Q1261.3 135.1 1257.75 131.4 1254.2 127.8 1249 125.65 1243.65 123.6 1237 122.9 L1229.4 122.3 Q1225 122.1 1220.9 122.4 L1215.35 173.05 1223.5 175 1223.55 175 1230.8 176.05 Q1237.65 176.8 1243.45 175.8 1249.15 174.75 1253.4 171.8 1257.6 169 1260.3 164.2 L1260.3 164.15 Q1262.9 159.35 1263.65 152.6 1264.4 145.6 1262.9 140.4 M1233.7 135 L1230.55 163.5 1232.7 163.75 Q1240.35 164.6 1244.55 161.3 1248.5 157.8 1249.25 151.05 1250 144 1247.05 139.95 1243.85 136.1 1236.25 135.3 L1233.85 135.05 1233.7 135"/> + <path stroke="none" fill="#FFCC00" d="M1262.9 140.4 Q1264.4 145.6 1263.65 152.6 1262.9 159.35 1260.3 164.15 L1260.3 164.2 Q1257.6 169 1253.4 171.8 1249.15 174.75 1243.45 175.8 1237.65 176.8 1230.8 176.05 L1223.55 175 1223.5 175 1215.35 173.05 1220.9 122.4 Q1225 122.1 1229.4 122.3 L1237 122.9 Q1243.65 123.6 1249 125.65 1254.2 127.8 1257.75 131.4 1261.3 135.1 1262.9 140.4 M1234.05 132.65 L1232.8 132.9 Q1232.25 133.1 1231.85 133.65 1231.45 134.15 1231.4 134.75 L1228.25 163.25 Q1228.15 164.15 1228.75 165 1229.3 165.7 1230.3 165.85 L1232.45 166.1 Q1241.2 167.05 1245.95 163.1 L1246.3 162.9 Q1250.75 158.9 1251.6 151.3 1252.5 143.2 1248.95 138.55 L1248.85 138.45 Q1245.2 133.9 1236.5 132.95 L1234.1 132.65 1234.05 132.65"/> + <path stroke="none" fill="#BF9900" d="M1314 128.25 L1314.35 126.75 Q1314.25 125.9 1313.65 125.3 1313.05 124.7 1312.2 124.6 L1299.35 123.15 Q1298.65 123.05 1298.05 123.4 L1297.05 124.3 1290.7 134.25 1286 140.9 1282.9 133.4 Q1280.75 127.85 1279 122.25 1278.85 121.65 1278.25 121.15 1277.7 120.7 1277 120.6 L1263.45 119.05 Q1262.6 119 1261.9 119.45 1261.2 119.9 1260.95 120.7 1260.65 121.45 1260.95 122.3 1264.3 131.2 1268.05 139.7 1271.65 147.9 1275.7 156.15 L1273.55 175.15 Q1273.45 176.15 1274.05 176.95 1274.65 177.65 1275.65 177.8 L1287.35 179.1 Q1288.35 179.2 1289.1 178.65 1289.85 178.05 1289.95 177.05 L1292.15 157.9 1303.2 143.6 Q1308.7 136.2 1314 128.25 M1315.3 123.65 Q1316.5 124.9 1316.65 126.5 1316.85 128.15 1315.9 129.55 1310.65 137.55 1305.1 145 L1294.4 158.8 1292.3 177.3 Q1292.1 179.3 1290.6 180.5 1289.05 181.7 1287.1 181.45 L1275.4 180.15 Q1273.45 179.9 1272.25 178.4 1271 176.9 1271.2 174.9 L1273.3 156.6 1265.9 140.6 Q1262.15 132.05 1258.75 123.1 1258.2 121.5 1258.7 119.95 1259.2 118.4 1260.6 117.45 1262.05 116.55 1263.75 116.7 L1277.35 118.25 Q1278.7 118.4 1279.75 119.3 L1279.8 119.35 Q1280.8 120.25 1281.25 121.55 L1281.25 121.6 Q1282.95 127.05 1285.1 132.55 L1285.1 132.5 1286.55 136.15 1288.75 132.95 1295 123.1 1295.05 123.1 Q1295.75 121.9 1296.95 121.3 L1297.05 121.25 Q1298.25 120.65 1299.65 120.8 L1312.5 122.25 Q1314.15 122.45 1315.35 123.65 L1315.3 123.65"/> + <path stroke="none" fill="#FFE16D" d="M1314 128.25 Q1308.7 136.2 1303.2 143.6 L1292.15 157.9 1289.95 177.05 Q1289.85 178.05 1289.1 178.65 1288.35 179.2 1287.35 179.1 L1275.65 177.8 Q1274.65 177.65 1274.05 176.95 1273.45 176.15 1273.55 175.15 L1275.7 156.15 Q1271.65 147.9 1268.05 139.7 1264.3 131.2 1260.95 122.3 1260.65 121.45 1260.95 120.7 1261.2 119.9 1261.9 119.45 1262.6 119 1263.45 119.05 L1277 120.6 Q1277.7 120.7 1278.25 121.15 1278.85 121.65 1279 122.25 1280.75 127.85 1282.9 133.4 L1286 140.9 1290.7 134.25 1297.05 124.3 1298.05 123.4 Q1298.65 123.05 1299.35 123.15 L1312.2 124.6 Q1313.05 124.7 1313.65 125.3 1314.25 125.9 1314.35 126.75 L1314 128.25 M1299.1 125.55 Q1296.1 130.7 1292.65 135.6 L1287.9 142.3 1286.5 143.2 1284.9 143.05 Q1284.15 142.65 1283.85 141.85 L1280.7 134.25 1276.8 123 1276.7 122.95 1263.2 121.4 1263.2 121.45 Q1266.5 130.25 1270.25 138.75 L1277.85 155.1 Q1278.15 155.75 1278.05 156.45 L1275.9 175.45 1287.6 176.75 1289.8 157.6 Q1289.85 156.9 1290.35 156.35 L1301.3 142.2 1311.95 126.95 1299.15 125.5 1299.1 125.55"/> + <path stroke="none" fill="#FFCC00" d="M1299.1 125.55 L1299.15 125.5 1311.95 126.95 1301.3 142.2 1290.35 156.35 Q1289.85 156.9 1289.8 157.6 L1287.6 176.75 1275.9 175.45 1278.05 156.45 Q1278.15 155.75 1277.85 155.1 L1270.25 138.75 Q1266.5 130.25 1263.2 121.45 L1263.2 121.4 1276.7 122.95 1276.8 123 1280.7 134.25 1283.85 141.85 Q1284.15 142.65 1284.9 143.05 L1286.5 143.2 1287.9 142.3 1292.65 135.6 Q1296.1 130.7 1299.1 125.55"/> + <path stroke="none" fill="#BF9900" d="M1220.3 178.6 Q1219.05 179.55 1217.55 179.55 L1204.9 179.55 Q1203.35 179.55 1202.05 178.6 1200.8 177.6 1200.4 176.1 L1200.4 176.15 1198.75 171.1 1198.65 170.9 1197.7 168.2 1184 168.2 1183.2 170.65 1183.15 170.75 1183 171.15 1182.2 173.6 1182.05 174.1 1181.35 176.25 Q1180.9 177.7 1179.7 178.6 L1179.65 178.6 Q1178.4 179.55 1176.85 179.55 L1164.65 179.55 Q1163.1 179.55 1161.85 178.6 1160.6 177.7 1160.15 176.25 L1160.1 176.2 Q1159.7 174.7 1160.2 173.25 L1160.2 173.3 1165.75 157.6 1165.95 157.3 Q1168.5 150.25 1171 143.95 L1171.05 143.95 Q1173.5 137.6 1176 132 L1176 131.8 Q1178.55 126 1181.2 120.5 1181.8 119.3 1182.95 118.6 L1183 118.55 Q1184.1 117.85 1185.45 117.85 L1196.75 117.85 Q1198.05 117.85 1199.25 118.6 L1199.2 118.6 Q1200.35 119.3 1200.95 120.5 L1205.95 131.5 1206.1 131.75 1211.15 143.95 1211.25 144.3 1216.35 157.6 1221.95 173.3 1221.95 173.25 Q1222.45 174.7 1222.05 176.2 L1222.05 176.25 Q1221.55 177.7 1220.35 178.6 L1220.3 178.6 M1219.8 175.5 Q1220 174.75 1219.75 174.05 L1214.15 158.45 1208.95 144.8 1203.9 132.75 Q1201.45 127 1198.8 121.55 L1197.95 120.6 Q1197.35 120.2 1196.7 120.2 L1185.45 120.2 Q1184.8 120.2 1184.2 120.55 1183.6 120.9 1183.35 121.55 1180.65 127 1178.2 132.75 L1173.2 144.8 1168 158.4 1168 158.45 1162.45 174.05 Q1162.15 174.75 1162.4 175.5 1162.6 176.25 1163.25 176.7 1163.85 177.15 1164.65 177.15 L1176.85 177.15 Q1177.65 177.15 1178.25 176.75 L1179.1 175.5 1180.95 170 1182.4 165.85 1199.4 165.85 1200.9 170.05 1202.65 175.5 Q1202.85 176.25 1203.5 176.7 1204.1 177.15 1204.9 177.15 L1217.5 177.15 1218.95 176.7 Q1219.55 176.25 1219.8 175.5 M1191.6 142.85 L1191.6 142.9 1193.75 148.45 1193.75 148.5 1194.95 151.8 1186.8 151.8 1188 148.55 1190.15 142.85 1190.85 141.05 1191.6 142.85"/> + <path stroke="none" fill="#FFE16D" d="M1191.6 142.85 L1190.85 141.05 1190.15 142.85 1188 148.55 1186.8 151.8 1194.95 151.8 1193.75 148.5 1193.75 148.45 1191.6 142.9 1191.6 142.85 M1219.8 175.5 Q1219.55 176.25 1218.95 176.7 L1217.5 177.15 1204.9 177.15 Q1204.1 177.15 1203.5 176.7 1202.85 176.25 1202.65 175.5 L1200.9 170.05 1199.4 165.85 1182.4 165.85 1180.95 170 1179.1 175.5 1178.25 176.75 Q1177.65 177.15 1176.85 177.15 L1164.65 177.15 Q1163.85 177.15 1163.25 176.7 1162.6 176.25 1162.4 175.5 1162.15 174.75 1162.45 174.05 L1168 158.45 1168 158.4 1173.2 144.8 1178.2 132.75 Q1180.65 127 1183.35 121.55 1183.6 120.9 1184.2 120.55 1184.8 120.2 1185.45 120.2 L1196.7 120.2 Q1197.35 120.2 1197.95 120.6 L1198.8 121.55 Q1201.45 127 1203.9 132.75 L1208.95 144.8 1214.15 158.45 1219.75 174.05 Q1220 174.75 1219.8 175.5 M1180.35 133.7 Q1177.9 139.35 1175.4 145.65 L1170.2 159.2 1170.2 159.3 1164.65 174.8 1176.85 174.8 1178.6 169.55 1178.7 169.25 1180.2 165.05 Q1180.4 164.35 1181.05 163.95 1181.65 163.5 1182.4 163.5 L1199.4 163.5 Q1200.15 163.5 1200.75 163.95 1201.4 164.4 1201.65 165.1 L1203 169.05 1203.1 169.25 1204.9 174.8 1217.5 174.8 1211.95 159.2 1211.95 159.25 1206.75 145.7 1206.65 145.45 1201.8 133.75 1201.75 133.7 1196.7 122.55 1185.45 122.55 Q1182.85 127.9 1180.4 133.5 L1180.35 133.7 M1190.85 138.65 L1192.2 139.05 Q1192.8 139.5 1193.05 140.15 L1193.8 141.95 1193.8 142 1193.8 142.15 1195.95 147.65 1196 147.7 1197.15 151 Q1197.45 151.7 1197.2 152.45 L1196.35 153.7 1194.95 154.15 1186.8 154.15 1185.35 153.7 Q1184.75 153.2 1184.55 152.5 1184.3 151.7 1184.6 151 L1185.8 147.65 1187.95 142.05 1187.95 141.95 1188.65 140.15 Q1188.9 139.5 1189.55 139.05 1190.15 138.65 1190.85 138.65"/> + <path stroke="none" fill="#FFCC00" d="M1190.85 138.65 Q1190.15 138.65 1189.55 139.05 1188.9 139.5 1188.65 140.15 L1187.95 141.95 1187.95 142.05 1185.8 147.65 1184.6 151 Q1184.3 151.7 1184.55 152.5 1184.75 153.2 1185.35 153.7 L1186.8 154.15 1194.95 154.15 1196.35 153.7 1197.2 152.45 Q1197.45 151.7 1197.15 151 L1196 147.7 1195.95 147.65 1193.8 142.15 1193.8 142 1193.8 141.95 1193.05 140.15 Q1192.8 139.5 1192.2 139.05 L1190.85 138.65 M1180.35 133.7 L1180.4 133.5 Q1182.85 127.9 1185.45 122.55 L1196.7 122.55 1201.75 133.7 1201.8 133.75 1206.65 145.45 1206.75 145.7 1211.95 159.25 1211.95 159.2 1217.5 174.8 1204.9 174.8 1203.1 169.25 1203 169.05 1201.65 165.1 Q1201.4 164.4 1200.75 163.95 1200.15 163.5 1199.4 163.5 L1182.4 163.5 Q1181.65 163.5 1181.05 163.95 1180.4 164.35 1180.2 165.05 L1178.7 169.25 1178.6 169.55 1176.85 174.8 1164.65 174.8 1170.2 159.3 1170.2 159.2 1175.4 145.65 Q1177.9 139.35 1180.35 133.7"/> + <path stroke="none" fill="#BF9900" d="M970.2 118.4 Q971.75 117.15 973.7 117.4 L1008.7 121.5 Q1010.65 121.75 1011.9 123.3 1013.1 124.8 1012.85 126.75 L1011.7 136.55 Q1011.5 138.5 1009.95 139.7 1008.4 140.95 1006.45 140.7 L987.8 138.5 987.7 139.35 1003.75 141.25 Q1005.7 141.45 1006.9 143 1008.15 144.5 1007.9 146.45 L1006.8 156.05 Q1006.55 158 1005 159.2 1003.5 160.35 1001.55 160.15 L985.5 158.25 985.1 161.4 1005.5 163.8 Q1007.45 164.05 1008.65 165.6 1009.85 167.1 1009.6 169.05 L1008.45 178.85 Q1008.25 180.8 1006.7 182 1005.2 183.25 1003.25 183 L966.5 178.7 Q964.55 178.45 963.3 176.9 962.15 175.4 962.35 173.45 L968.45 121.55 Q968.7 119.6 970.2 118.4 M971.7 120.25 Q970.9 120.85 970.8 121.8 L964.7 173.7 Q964.6 174.65 965.2 175.5 965.8 176.2 966.8 176.35 L1003.55 180.65 Q1004.5 180.75 1005.25 180.2 1006.05 179.55 1006.15 178.6 L1007.3 168.8 Q1007.4 167.85 1006.8 167.05 1006.2 166.25 1005.25 166.15 L982.5 163.5 983.4 155.65 1001.8 157.8 Q1002.8 157.9 1003.6 157.35 1004.3 156.7 1004.45 155.75 L1005.55 146.15 Q1005.65 145.2 1005.1 144.5 1004.5 143.7 1003.5 143.6 L985.1 141.45 985.75 135.9 1006.75 138.35 1008.5 137.9 Q1009.25 137.25 1009.35 136.3 L1010.5 126.5 Q1010.6 125.55 1010.05 124.75 1009.45 123.95 1008.45 123.85 L973.45 119.75 Q972.45 119.6 971.7 120.25"/> + <path stroke="none" fill="#FFE16D" d="M971.7 120.25 Q972.45 119.6 973.45 119.75 L1008.45 123.85 Q1009.45 123.95 1010.05 124.75 1010.6 125.55 1010.5 126.5 L1009.35 136.3 Q1009.25 137.25 1008.5 137.9 L1006.75 138.35 985.75 135.9 985.1 141.45 1003.5 143.6 Q1004.5 143.7 1005.1 144.5 1005.65 145.2 1005.55 146.15 L1004.45 155.75 Q1004.3 156.7 1003.6 157.35 1002.8 157.9 1001.8 157.8 L983.4 155.65 982.5 163.5 1005.25 166.15 Q1006.2 166.25 1006.8 167.05 1007.4 167.85 1007.3 168.8 L1006.15 178.6 Q1006.05 179.55 1005.25 180.2 1004.5 180.75 1003.55 180.65 L966.8 176.35 Q965.8 176.2 965.2 175.5 964.6 174.65 964.7 173.7 L970.8 121.8 Q970.9 120.85 971.7 120.25 M982.75 141.15 L983.4 135.6 Q983.5 134.6 984.25 134.05 985 133.4 986 133.55 L1007 136 1008.15 126.2 973.15 122.1 967.05 174 1003.8 178.3 1004.95 168.5 982.2 165.85 Q981.2 165.7 980.65 165 980 164.2 980.15 163.2 L981.05 155.35 Q981.15 154.4 981.95 153.85 982.7 153.2 983.7 153.35 L1002.1 155.5 1003.2 145.9 984.8 143.75 Q983.8 143.6 983.25 142.9 982.6 142.1 982.75 141.15"/> + <path stroke="none" fill="#FFCC00" d="M982.75 141.15 Q982.6 142.1 983.25 142.9 983.8 143.6 984.8 143.75 L1003.2 145.9 1002.1 155.5 983.7 153.35 Q982.7 153.2 981.95 153.85 981.15 154.4 981.05 155.35 L980.15 163.2 Q980 164.2 980.65 165 981.2 165.7 982.2 165.85 L1004.95 168.5 1003.8 178.3 967.05 174 973.15 122.1 1008.15 126.2 1007 136 986 133.55 Q985 133.4 984.25 134.05 983.5 134.6 983.4 135.6 L982.75 141.15"/> + <path stroke="none" fill="#BF9900" d="M1054.8 130.85 L1054.1 120.9 Q1054 119.9 1053.3 119.3 1052.55 118.65 1051.55 118.75 L1008.35 121.9 Q1007.35 122 1006.75 122.75 1006.1 123.45 1006.2 124.45 L1006.9 134.4 Q1007 135.4 1007.75 136.05 1008.45 136.65 1009.45 136.55 L1022.85 135.55 1025.75 175.35 Q1025.85 176.3 1026.6 176.95 1027.3 177.6 1028.3 177.55 L1040 176.7 Q1041 176.6 1041.65 175.85 1042.25 175.1 1042.15 174.15 L1039.25 134.35 1052.65 133.4 Q1053.65 133.3 1054.3 132.6 1054.9 131.85 1054.8 130.85 M1057.15 130.7 Q1057.3 132.7 1056.05 134.15 1054.75 135.6 1052.8 135.75 L1041.75 136.55 1044.5 174 Q1044.65 175.95 1043.4 177.4 1042.1 178.9 1040.15 179.05 L1028.45 179.9 Q1026.5 180.05 1025 178.75 1023.55 177.5 1023.4 175.55 L1020.65 138.1 1009.6 138.9 Q1007.65 139.05 1006.15 137.8 1004.7 136.55 1004.55 134.55 L1003.85 124.6 Q1003.7 122.6 1004.95 121.15 1006.25 119.65 1008.2 119.5 L1051.4 116.35 Q1053.35 116.2 1054.85 117.5 1056.3 118.75 1056.45 120.75 L1057.15 130.7"/> + <path stroke="none" fill="#FFE16D" d="M1054.8 130.85 Q1054.9 131.85 1054.3 132.6 1053.65 133.3 1052.65 133.4 L1039.25 134.35 1042.15 174.15 Q1042.25 175.1 1041.65 175.85 1041 176.6 1040 176.7 L1028.3 177.55 Q1027.3 177.6 1026.6 176.95 1025.85 176.3 1025.75 175.35 L1022.85 135.55 1009.45 136.55 Q1008.45 136.65 1007.75 136.05 1007 135.4 1006.9 134.4 L1006.2 124.45 Q1006.1 123.45 1006.75 122.75 1007.35 122 1008.35 121.9 L1051.55 118.75 Q1052.55 118.65 1053.3 119.3 1054 119.9 1054.1 120.9 L1054.8 130.85 M1052.45 131.05 L1051.75 121.1 1008.55 124.25 1009.25 134.2 1022.65 133.2 Q1023.6 133.15 1024.4 133.8 1025.1 134.45 1025.2 135.4 L1028.1 175.2 1039.8 174.35 1036.9 134.55 Q1036.8 133.6 1037.45 132.85 1038.1 132.1 1039.05 132 L1052.45 131.05"/> + <path stroke="none" fill="#FFCC00" d="M1052.45 131.05 L1039.05 132 Q1038.1 132.1 1037.45 132.85 1036.8 133.6 1036.9 134.55 L1039.8 174.35 1028.1 175.2 1025.2 135.4 Q1025.1 134.45 1024.4 133.8 1023.6 133.15 1022.65 133.2 L1009.25 134.2 1008.55 124.25 1051.75 121.1 1052.45 131.05"/> + <path stroke="none" fill="#BF9900" d="M1112.45 120.85 Q1121.35 125.35 1122.6 136.8 1123.4 144 1120.45 148.8 L1120.3 149.05 Q1118.95 151.35 1116.85 153.3 L1117.05 153.65 1121.25 158.75 1121.4 158.95 1125.1 164.05 1125.25 164.2 1128.95 169.95 1128.95 170 Q1129.85 171.35 1129.6 173 L1129.6 173.05 Q1129.4 174.65 1128.25 175.75 L1128.2 175.8 Q1127 176.95 1125.4 177.1 L1112.35 178.55 1109.85 178.1 Q1108.7 177.6 1108.05 176.6 L1108 176.6 1104.5 171.75 1101.15 167.15 1101.1 167.1 1097.65 162.9 1097.5 162.75 1097.45 162.6 1097.4 162.65 1098.8 175.25 Q1099 177.2 1097.8 178.7 1096.55 180.25 1094.6 180.45 L1082.95 181.75 Q1081 181.95 1079.45 180.7 1077.95 179.5 1077.75 177.55 L1072.15 126.3 Q1071.95 124.6 1072.9 123.2 1073.9 121.75 1075.45 121.3 1079.4 120.1 1083.75 119.25 L1091.4 118.15 Q1104.85 116.65 1112.5 120.9 L1112.45 120.85 M1101.4 135.6 Q1103.2 136.4 1103.45 138.75 1103.75 141.25 1102.15 142.55 1099.85 144.1 1094.05 144.75 L1093.1 144.85 1092.05 135.35 1093.95 135.05 Q1098.75 134.55 1101.4 135.6 M1100.45 137.75 L1094.65 137.35 1095.2 142.3 Q1098.95 141.7 1100.75 140.65 1101.25 140.1 1101.1 139.05 1101 138.15 1100.45 137.75 M1120.25 137.05 Q1119.15 126.95 1111.4 122.95 1104.2 119.1 1091.65 120.5 L1084.2 121.6 Q1079.95 122.35 1076.15 123.55 1075.35 123.75 1074.9 124.5 1074.4 125.2 1074.5 126.05 L1080.1 177.3 Q1080.2 178.25 1080.95 178.85 1081.7 179.5 1082.7 179.4 L1094.35 178.1 Q1095.35 178 1095.95 177.25 1096.55 176.45 1096.45 175.5 L1094.6 158.85 1096.9 158.6 1097 158.65 1099.5 161.35 1099.45 161.35 1103 165.65 1102.95 165.65 1106.45 170.35 1109.9 175.2 1110.85 175.95 1112.1 176.2 1125.15 174.75 Q1126 174.65 1126.55 174.1 1127.2 173.45 1127.3 172.7 1127.35 171.9 1126.95 171.15 L1123.3 165.6 1119.35 160.15 1119.4 160.15 1115.3 155.15 1113.4 153 Q1116.6 150.7 1118.4 147.6 1120.95 143.35 1120.25 137.05"/> + <path stroke="none" fill="#FFE16D" d="M1120.25 137.05 Q1120.95 143.35 1118.4 147.6 1116.6 150.7 1113.4 153 L1115.3 155.15 1119.4 160.15 1119.35 160.15 1123.3 165.6 1126.95 171.15 Q1127.35 171.9 1127.3 172.7 1127.2 173.45 1126.55 174.1 1126 174.65 1125.15 174.75 L1112.1 176.2 1110.85 175.95 1109.9 175.2 1106.45 170.35 1102.95 165.65 1103 165.65 1099.45 161.35 1099.5 161.35 1097 158.65 1096.9 158.6 1094.6 158.85 1096.45 175.5 Q1096.55 176.45 1095.95 177.25 1095.35 178 1094.35 178.1 L1082.7 179.4 Q1081.7 179.5 1080.95 178.85 1080.2 178.25 1080.1 177.3 L1074.5 126.05 Q1074.4 125.2 1074.9 124.5 1075.35 123.75 1076.15 123.55 1079.95 122.35 1084.2 121.6 L1091.65 120.5 Q1104.2 119.1 1111.4 122.95 1119.15 126.95 1120.25 137.05 M1110.3 125 L1110.25 125.05 Q1103.6 121.5 1091.9 122.8 L1084.6 123.95 Q1080.5 124.65 1076.85 125.8 L1082.45 177.05 1094.1 175.75 1092.25 159.1 Q1092.15 158.15 1092.8 157.4 1093.4 156.6 1094.35 156.5 L1096.65 156.25 Q1097.65 156.15 1098.45 156.75 L1098.45 156.8 1098.65 157 1101.25 159.85 1101.3 159.95 1104.8 164.15 1104.95 164.35 1108.4 169.05 1108.35 169 1111.85 173.85 1124.9 172.4 1121.4 166.95 1121.35 166.85 1117.5 161.6 1117.45 161.55 1117.4 161.55 1113.5 156.7 1111.7 154.6 Q1111.2 154.1 1111.1 153.45 1110.95 152.8 1111.25 152.15 1111.5 151.5 1112.05 151.1 1114.8 149.1 1116.35 146.45 L1116.4 146.35 1116.45 146.3 Q1118.5 142.65 1117.9 137.3 1116.95 128.55 1110.3 125 M1101.4 135.6 Q1098.75 134.55 1093.95 135.05 L1092.05 135.35 1093.1 144.85 1094.05 144.75 Q1099.85 144.1 1102.15 142.55 1103.75 141.25 1103.45 138.75 1103.2 136.4 1101.4 135.6 M1093.7 132.7 Q1099.1 132.1 1102.1 133.35 L1102.45 133.45 Q1105.4 134.7 1105.8 138.5 1106.25 142.4 1103.65 144.4 L1103.55 144.5 Q1100.9 146.4 1094.3 147.1 L1093.35 147.2 Q1092.4 147.3 1091.65 146.75 1090.85 146.1 1090.75 145.1 L1089.7 135.6 Q1089.6 134.65 1090.2 133.95 1090.7 133.2 1091.65 133 L1093.7 132.7"/> + <path stroke="none" fill="#FFCC00" d="M1093.7 132.7 L1091.65 133 Q1090.7 133.2 1090.2 133.95 1089.6 134.65 1089.7 135.6 L1090.75 145.1 Q1090.85 146.1 1091.65 146.75 1092.4 147.3 1093.35 147.2 L1094.3 147.1 Q1100.9 146.4 1103.55 144.5 L1103.65 144.4 Q1106.25 142.4 1105.8 138.5 1105.4 134.7 1102.45 133.45 L1102.1 133.35 Q1099.1 132.1 1093.7 132.7 M1110.3 125 Q1116.95 128.55 1117.9 137.3 1118.5 142.65 1116.45 146.3 L1116.4 146.35 1116.35 146.45 Q1114.8 149.1 1112.05 151.1 1111.5 151.5 1111.25 152.15 1110.95 152.8 1111.1 153.45 1111.2 154.1 1111.7 154.6 L1113.5 156.7 1117.4 161.55 1117.45 161.55 1117.5 161.6 1121.35 166.85 1121.4 166.95 1124.9 172.4 1111.85 173.85 1108.35 169 1108.4 169.05 1104.95 164.35 1104.8 164.15 1101.3 159.95 1101.25 159.85 1098.65 157 1098.45 156.8 1098.45 156.75 Q1097.65 156.15 1096.65 156.25 L1094.35 156.5 Q1093.4 156.6 1092.8 157.4 1092.15 158.15 1092.25 159.1 L1094.1 175.75 1082.45 177.05 1076.85 125.8 Q1080.5 124.65 1084.6 123.95 L1091.9 122.8 Q1103.6 121.5 1110.25 125.05 L1110.3 125"/> + <path stroke="none" fill="#BF9900" d="M951.15 115.8 L956.55 116.2 961.05 117.15 960.95 117.2 961.1 117.25 Q963 117.75 963.8 118.2 L963.8 118.15 Q965.25 118.85 965.95 120.3 966.7 121.75 966.35 123.35 L966.35 123.3 964.4 133.15 Q964.15 134.55 963.2 135.5 962.25 136.55 960.9 136.85 L960.85 136.85 958.25 136.7 Q956.05 135.9 953.3 135.55 950.7 135.15 947.8 135.6 942.2 136.4 940.05 139.6 L940.05 139.65 940 139.65 940 139.75 939.95 139.8 Q938 143.6 938.85 149.35 939.3 152.4 940.35 154.8 L940.4 154.95 Q941.3 156.8 942.6 158.2 L942.85 158.3 Q944.15 159.55 945.9 160.05 L950.3 160.2 951.4 160.05 949.4 146.35 Q949.1 144.4 950.25 142.85 951.4 141.3 953.35 141 L965 139.25 Q966.95 139 968.5 140.15 970.05 141.25 970.35 143.2 L974.15 168.8 Q974.35 170.25 973.75 171.6 L973.75 171.65 Q973.05 172.9 971.85 173.6 969.7 174.9 964.65 176.75 959.8 178.45 952.5 179.55 945.95 180.55 940.3 179.35 L940 179.25 Q933.9 178.05 929.3 174.4 924.6 170.95 921.5 165.25 918.55 159.8 917.45 152.5 916.35 145.1 917.85 138.95 919.4 132.7 922.95 128 926.45 123.35 931.7 120.35 L931.85 120.15 Q937.05 117.3 943.3 116.4 L950.7 115.8 951.15 115.8 M950.7 118.15 L943.65 118.7 Q937.85 119.55 933.05 122.25 928.15 125 924.8 129.45 921.5 133.75 920.15 139.55 918.75 145.2 919.8 152.15 920.8 159 923.55 164.2 926.4 169.35 930.7 172.55 L930.7 172.5 Q934.9 175.85 940.45 177 L940.45 176.95 Q945.85 178.2 952.15 177.25 959.2 176.2 963.85 174.5 968.6 172.8 970.65 171.6 L971.65 170.6 Q971.95 169.9 971.85 169.15 L968.05 143.55 Q967.9 142.6 967.15 142.05 966.35 141.45 965.35 141.6 L953.7 143.35 Q952.75 143.5 952.15 144.3 951.55 145.05 951.7 146 L954.05 162 953.9 162 950.65 162.5 945.25 162.35 Q943 161.65 941.2 160.05 939.4 158.35 938.3 155.85 L938.3 155.9 Q937.05 153.2 936.55 149.7 935.55 142.85 938.1 138.35 940.6 134.25 947.45 133.25 950.7 132.75 953.6 133.2 956.65 133.6 959 134.5 L960.3 134.55 961.5 133.9 962.15 132.7 964.1 122.9 Q964.25 122.05 963.85 121.35 963.5 120.65 962.8 120.3 L960.4 119.45 960.3 119.4 956.25 118.55 950.7 118.15"/> + <path stroke="none" fill="#FFE16D" d="M950.7 118.15 L956.25 118.55 960.3 119.4 960.4 119.45 962.8 120.3 Q963.5 120.65 963.85 121.35 964.25 122.05 964.1 122.9 L962.15 132.7 961.5 133.9 960.3 134.55 959 134.5 Q956.65 133.6 953.6 133.2 950.7 132.75 947.45 133.25 940.6 134.25 938.1 138.35 935.55 142.85 936.55 149.7 937.05 153.2 938.3 155.9 L938.3 155.85 Q939.4 158.35 941.2 160.05 943 161.65 945.25 162.35 L950.65 162.5 953.9 162 954.05 162 951.7 146 Q951.55 145.05 952.15 144.3 952.75 143.5 953.7 143.35 L965.35 141.6 Q966.35 141.45 967.15 142.05 967.9 142.6 968.05 143.55 L971.85 169.15 Q971.95 169.9 971.65 170.6 L970.65 171.6 Q968.6 172.8 963.85 174.5 959.2 176.2 952.15 177.25 945.85 178.2 940.45 176.95 L940.45 177 Q934.9 175.85 930.7 172.5 L930.7 172.55 Q926.4 169.35 923.55 164.2 920.8 159 919.8 152.15 918.75 145.2 920.15 139.55 921.5 133.75 924.8 129.45 928.15 125 933.05 122.25 937.85 119.55 943.65 118.7 L950.7 118.15 M950.65 120.5 L944 121.05 Q938.65 121.8 934.25 124.3 L934.2 124.35 Q929.7 126.8 926.7 130.8 L926.7 130.85 Q923.7 134.75 922.45 140.1 921.15 145.4 922.1 151.85 923.05 158.25 925.65 163 928.2 167.75 932.1 170.65 L932.15 170.65 Q935.95 173.6 940.85 174.65 L940.95 174.65 Q945.95 175.75 951.8 174.9 958.55 173.9 963.05 172.25 967.5 170.7 969.5 169.5 L965.7 143.9 954.05 145.65 956.4 161.65 Q956.55 162.45 956.1 163.2 955.65 163.9 954.8 164.2 L954.4 164.3 954.3 164.3 951 164.85 944.65 164.65 944.3 164.5 Q941.8 163.7 939.8 161.95 L939.55 161.75 Q937.55 159.85 936.2 157.05 L936.15 156.85 Q934.75 153.9 934.2 150.05 933.05 142.3 936 137.25 L936.05 137.15 936.15 137 936.2 136.95 Q939.1 132.15 947.1 130.95 950.7 130.4 953.95 130.85 L954 130.85 Q957.2 131.35 959.8 132.25 L961.75 122.45 Q961.1 122.1 959.7 121.7 L959.6 121.65 959.5 121.65 956 120.9 955.95 120.9 950.65 120.5"/> + <path stroke="none" fill="#FFCC00" d="M950.65 120.5 L955.95 120.9 956 120.9 959.5 121.65 959.6 121.65 959.7 121.7 Q961.1 122.1 961.75 122.45 L959.8 132.25 Q957.2 131.35 954 130.85 L953.95 130.85 Q950.7 130.4 947.1 130.95 939.1 132.15 936.2 136.95 L936.15 137 936.05 137.15 936 137.25 Q933.05 142.3 934.2 150.05 934.75 153.9 936.15 156.85 L936.2 157.05 Q937.55 159.85 939.55 161.75 L939.8 161.95 Q941.8 163.7 944.3 164.5 L944.65 164.65 951 164.85 954.3 164.3 954.4 164.3 954.8 164.2 Q955.65 163.9 956.1 163.2 956.55 162.45 956.4 161.65 L954.05 145.65 965.7 143.9 969.5 169.5 Q967.5 170.7 963.05 172.25 958.55 173.9 951.8 174.9 945.95 175.75 940.95 174.65 L940.85 174.65 Q935.95 173.6 932.15 170.65 L932.1 170.65 Q928.2 167.75 925.65 163 923.05 158.25 922.1 151.85 921.15 145.4 922.45 140.1 923.7 134.75 926.7 130.85 L926.7 130.8 Q929.7 126.8 934.2 124.35 L934.25 124.3 Q938.65 121.8 944 121.05 L950.65 120.5"/> + <path stroke="none" fill="#D5EDF7" d="M241.85 195.95 L238.2 196.2 Q235.25 196.6 232.45 197.6 227.9 199.3 224.45 202.6 221 205.95 219 210.85 216.95 215.75 216.95 222.2 216.95 228 218.55 232.6 220.15 237.15 222.95 240.4 225.8 243.75 229.65 245.65 233.5 247.55 238 248.1 238.9 251.2 240.5 253.5 242.15 255.85 244.95 257.4 247.75 259.05 251.75 259.9 L261.45 261.05 263.75 252.8 258.4 252.25 253.95 251.4 Q252.1 250.8 250.85 249.95 249.6 249 249.3 247.55 253.15 246.55 256.45 244.5 259.7 242.4 262.05 239.2 264.45 236 265.75 231.8 267.05 227.5 267.05 222.2 267.05 215.75 265.1 210.85 263.1 205.95 259.7 202.6 256.25 199.3 251.7 197.6 248.9 196.6 245.85 196.2 L242.15 195.95 242 195.95 241.85 195.95 M231.7 195.5 Q236.6 193.7 242 193.7 247.55 193.7 252.5 195.5 257.5 197.3 261.3 201 264.3 204 266.3 208.1 L267.2 210 Q269.3 215.25 269.3 222.2 269.3 227.9 267.95 232.45 L267.9 232.45 Q266.5 237.05 263.85 240.55 L263.9 240.55 Q261.3 244.1 257.7 246.4 L257.65 246.4 Q255.55 247.75 253.2 248.7 L254.6 249.25 254.7 249.25 258.6 250 258.7 250 262.2 250.4 264 250.55 Q264.6 250.6 265.2 251.05 265.7 251.45 265.9 252.15 266.15 252.75 266 253.4 L265.95 253.4 263.65 261.65 262.75 262.9 Q262.15 263.35 261.35 263.3 255.5 263.1 251.3 262.15 246.85 261.15 243.8 259.4 L243.85 259.4 Q240.55 257.55 238.65 254.75 237.2 252.75 236.3 250.15 232.2 249.45 228.65 247.65 L228.7 247.65 Q224.4 245.6 221.25 241.9 218.15 238.35 216.45 233.35 214.7 228.45 214.7 222.2 214.7 215.25 216.9 210 L217.7 208.2 Q219.7 204 222.85 201 L222.9 201 Q226.7 197.3 231.7 195.5 M229.55 215.6 Q230.45 212.55 232.15 210.45 233.9 208.3 236.3 207.05 238.8 205.9 242 205.9 245.1 205.9 247.65 207.05 250.1 208.2 251.8 210.3 253.55 212.5 254.45 215.5 255.35 218.5 255.35 222.2 255.35 225.95 254.45 228.9 253.55 231.85 251.8 234 250.1 236.2 247.65 237.3 245.4 238.35 242.75 238.5 L242 238.5 241.2 238.5 Q238.5 238.35 236.3 237.3 233.9 236.2 232.15 234 230.45 231.85 229.55 228.9 228.65 225.95 228.65 222.2 228.65 218.6 229.55 215.6 M237.35 209.1 Q235.35 210.1 233.95 211.85 232.5 213.65 231.75 216.2 230.9 218.95 230.9 222.2 230.9 225.55 231.75 228.3 232.5 230.75 233.95 232.6 L234.15 232.9 Q235.5 234.45 237.3 235.25 239.35 236.2 242 236.2 244.6 236.2 246.7 235.25 248.55 234.4 249.9 232.8 L250.05 232.6 Q251.5 230.75 252.3 228.3 253.1 225.55 253.1 222.2 253.1 218.85 252.3 216.15 L252.3 216.2 Q251.5 213.6 250.05 211.75 248.7 210.05 246.75 209.1 L246.65 209.05 Q244.55 208.15 242 208.15 239.35 208.15 237.3 209.15 L237.35 209.1"/> + <path stroke="none" fill="#ACDCEE" d="M241.85 195.95 L242 195.95 242.15 195.95 245.85 196.2 Q248.9 196.6 251.7 197.6 256.25 199.3 259.7 202.6 263.1 205.95 265.1 210.85 267.05 215.75 267.05 222.2 267.05 227.5 265.75 231.8 264.45 236 262.05 239.2 259.7 242.4 256.45 244.5 253.15 246.55 249.3 247.55 249.6 249 250.85 249.95 252.1 250.8 253.95 251.4 L258.4 252.25 263.75 252.8 261.45 261.05 251.75 259.9 Q247.75 259.05 244.95 257.4 242.15 255.85 240.5 253.5 238.9 251.2 238 248.1 233.5 247.55 229.65 245.65 225.8 243.75 222.95 240.4 220.15 237.15 218.55 232.6 216.95 228 216.95 222.2 216.95 215.75 219 210.85 221 205.95 224.45 202.6 227.9 199.3 232.45 197.6 235.25 196.6 238.2 196.2 L241.85 195.95 M229.55 215.6 Q228.65 218.6 228.65 222.2 228.65 225.95 229.55 228.9 230.45 231.85 232.15 234 233.9 236.2 236.3 237.3 238.5 238.35 241.2 238.5 L242 238.5 242.75 238.5 Q245.4 238.35 247.65 237.3 250.1 236.2 251.8 234 253.55 231.85 254.45 228.9 255.35 225.95 255.35 222.2 255.35 218.5 254.45 215.5 253.55 212.5 251.8 210.3 250.1 208.2 247.65 207.05 245.1 205.9 242 205.9 238.8 205.9 236.3 207.05 233.9 208.3 232.15 210.45 230.45 212.55 229.55 215.6"/> + <path stroke="none" fill="#5DA3BD" d="M231.7 195.5 Q226.7 197.3 222.9 201 L222.85 201 Q219.7 204 217.7 208.2 L216.9 210 Q214.7 215.25 214.7 222.2 214.7 228.45 216.45 233.35 218.15 238.35 221.25 241.9 224.4 245.6 228.7 247.65 L228.65 247.65 Q232.2 249.45 236.3 250.15 237.2 252.75 238.65 254.75 240.55 257.55 243.85 259.4 L243.8 259.4 Q246.85 261.15 251.3 262.15 255.5 263.1 261.35 263.3 262.15 263.35 262.75 262.9 L263.65 261.65 265.95 253.4 266 253.4 Q266.15 252.75 265.9 252.15 265.7 251.45 265.2 251.05 264.6 250.6 264 250.55 L262.2 250.4 258.7 250 258.6 250 254.7 249.25 254.6 249.25 253.2 248.7 Q255.55 247.75 257.65 246.4 L257.7 246.4 Q261.3 244.1 263.9 240.55 L263.85 240.55 Q266.5 237.05 267.9 232.45 L267.95 232.45 Q269.3 227.9 269.3 222.2 269.3 215.25 267.2 210 L266.3 208.1 Q264.3 204 261.3 201 257.5 197.3 252.5 195.5 247.55 193.7 242 193.7 236.6 193.7 231.7 195.5 M237.35 209.1 L237.3 209.15 Q239.35 208.15 242 208.15 244.55 208.15 246.65 209.05 L246.75 209.1 Q248.7 210.05 250.05 211.75 251.5 213.6 252.3 216.2 L252.3 216.15 Q253.1 218.85 253.1 222.2 253.1 225.55 252.3 228.3 251.5 230.75 250.05 232.6 L249.9 232.8 Q248.55 234.4 246.7 235.25 244.6 236.2 242 236.2 239.35 236.2 237.3 235.25 235.5 234.45 234.15 232.9 L233.95 232.6 Q232.5 230.75 231.75 228.3 230.9 225.55 230.9 222.2 230.9 218.95 231.75 216.2 232.5 213.65 233.95 211.85 235.35 210.1 237.35 209.1 M250.7 224.45 L250.85 222.2 Q250.85 219.35 250.2 217 L250.1 216.8 Q249.45 214.7 248.25 213.15 L246 211.25 245.8 211.2 Q244.1 210.45 242 210.45 L239.1 210.85 238.9 210.95 Q237.1 211.6 235.9 213.05 L235.8 213.15 235.7 213.25 235.5 213.55 235.35 213.85 235.2 214.05 Q234.4 215.25 233.9 216.9 L233.9 216.85 Q233.15 219.3 233.15 222.2 L233.3 224.5 233.9 227.6 Q234.5 229.6 235.6 231.05 L235.65 231.1 235.7 231.2 Q236.75 232.5 238.25 233.2 239.85 233.95 242 233.95 244.05 233.95 245.75 233.2 247.25 232.5 248.25 231.2 L248.3 231.2 Q249.45 229.65 250.1 227.6 L250.7 224.45 M212.5 224.5 L212.4 222.2 Q212.4 214.8 214.8 209.1 217.2 203.35 221.25 199.4 L221.25 199.35 221.3 199.3 Q225.45 195.35 230.9 193.35 236.2 191.4 242 191.4 247.95 191.4 253.25 193.35 258.75 195.35 262.9 199.35 L262.9 199.4 Q266.95 203.35 269.25 209.15 271.6 214.8 271.6 222.2 L271.55 224.5 Q271.3 229.2 270.1 233.1 L270 233.45 Q268.5 238.05 265.85 241.65 L265.7 241.9 Q263.15 245.45 259.65 247.8 L264.15 248.25 264.15 248.3 264.2 248.3 Q265.55 248.4 266.6 249.25 L266.6 249.3 Q267.65 250.15 268.05 251.45 L268.05 251.4 Q268.5 252.7 268.15 254 L267.8 255.3 265.85 262.25 265.85 262.3 Q265.4 263.8 264.1 264.7 L264.15 264.7 Q262.85 265.65 261.25 265.6 L250.75 264.35 250.8 264.35 Q246 263.3 242.65 261.35 L242.4 261.15 Q238.85 259.1 236.75 256.05 235.5 254.3 234.65 252.15 231.05 251.35 227.9 249.8 L227.65 249.7 Q222.95 247.4 219.55 243.35 216.2 239.5 214.25 234.1 L214.25 233.95 Q212.75 229.65 212.5 224.5"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M212.5 224.5 Q212.75 229.65 214.25 233.95 L214.25 234.1 Q216.2 239.5 219.55 243.35 222.95 247.4 227.65 249.7 L227.9 249.8 Q231.05 251.35 234.65 252.15 235.5 254.3 236.75 256.05 238.85 259.1 242.4 261.15 L242.65 261.35 Q246 263.3 250.8 264.35 L250.75 264.35 261.25 265.6 Q262.85 265.65 264.15 264.7 L264.1 264.7 Q265.4 263.8 265.85 262.3 L265.85 262.25 267.8 255.3 268.05 256 268.05 255.95 Q268.5 257.25 268.15 258.55 L265.85 266.8 265.85 266.85 Q265.4 268.25 264.25 269.15 L264.1 269.25 264.15 269.25 Q262.85 270.2 261.25 270.1 L252.2 269.15 250.75 268.85 250.8 268.85 Q246 267.85 242.65 265.9 L242.4 265.7 Q238.85 263.6 236.75 260.6 235.5 258.8 234.65 256.7 231.05 255.9 227.9 254.35 L227.65 254.25 Q222.95 251.95 219.55 247.9 216.2 244.05 214.25 238.65 L214.25 238.5 Q212.4 233.25 212.4 226.75 L212.5 224.5 M233.3 224.5 L233.15 222.2 Q233.15 219.3 233.9 216.85 L233.9 216.9 Q234.4 215.25 235.2 214.05 L235.35 213.85 235.5 213.55 235.7 213.25 235.8 213.15 235.9 213.05 Q237.1 211.6 238.9 210.95 L239.1 210.85 242 210.45 Q244.1 210.45 245.8 211.2 L246 211.25 248.25 213.15 Q249.45 214.7 250.1 216.8 L250.2 217 Q250.85 219.35 250.85 222.2 L250.7 224.45 250.2 221.55 250.1 221.35 Q249.45 219.25 248.25 217.7 247.3 216.5 246 215.8 L245.8 215.75 Q244.1 214.95 242 214.95 L239.1 215.4 238.9 215.45 Q237.1 216.15 235.9 217.6 L235.8 217.7 235.7 217.8 235.5 218.1 235.35 218.35 235.2 218.55 Q234.4 219.8 233.9 221.45 L233.9 221.4 233.3 224.5 M271.55 224.5 L271.6 226.75 Q271.6 232.75 270.1 237.65 L270 238 Q268.5 242.6 265.85 246.2 L265.7 246.4 264.2 248.3 264.15 248.3 264.15 248.25 259.65 247.8 Q263.15 245.45 265.7 241.9 L265.85 241.65 Q268.5 238.05 270 233.45 L270.1 233.1 Q271.3 229.2 271.55 224.5"/> + <path stroke="none" fill="#5DA3BD" d="M604.9 198.95 L604.5 197.25 Q604.25 195.85 604.8 194.65 605.3 193.35 606.45 192.6 L606.5 192.55 Q607.6 191.8 609 191.8 L621.25 191.8 Q622.9 191.8 624.2 192.85 625.45 193.9 625.75 195.55 L627.3 204.4 629.15 213.55 629.3 214.3 629.45 213.65 631.3 207.15 631.35 206.95 633.05 200.5 633.05 200.45 Q633.5 198.95 634.7 198.05 L634.75 198.05 Q635.95 197.1 637.45 197.1 L647.1 197.1 Q648.55 197.1 649.75 198.05 L649.8 198.05 Q651 198.9 651.45 200.35 L653.4 207.2 653.5 207.5 655.2 213.5 655.35 214 655.45 213.6 655.5 213.4 657.15 204.4 657.2 204.2 658.7 195.55 Q659 193.9 660.25 192.85 661.55 191.8 663.15 191.8 L674.9 191.8 Q676.25 191.8 677.45 192.55 678.55 193.3 679.1 194.6 679.65 195.85 679.35 197.25 L679.05 198.95 Q676.6 210.7 673.5 222.85 L673.45 223.1 Q670.1 236.2 666.2 248.05 665.75 249.4 664.6 250.25 L664.55 250.3 Q663.35 251.15 661.9 251.15 L651.5 251.15 Q650.05 251.15 648.9 250.3 647.75 249.5 647.25 248.15 644.65 241.1 642.25 233.35 L642.2 233.2 642.15 232.95 641.95 232.25 641.6 233.3 Q639.2 241.05 636.6 248.15 L636.6 248.2 Q636.1 249.5 634.95 250.3 633.8 251.15 632.4 251.15 L622.05 251.15 Q620.55 251.15 619.4 250.25 L619.4 250.3 Q618.15 249.45 617.7 248.1 L617.7 248.05 Q613.8 236.2 610.45 223.1 L610.45 223.05 Q607.35 210.8 604.9 198.95 M628.9 223.3 L628.85 223 626.9 214 625.1 204.8 623.7 197.05 623.5 195.95 Q623.35 195.1 622.75 194.6 622.1 194.05 621.25 194.05 L609 194.05 Q608.3 194.05 607.75 194.45 607.15 194.8 606.9 195.5 606.6 196.1 606.75 196.8 L606.8 196.95 Q609.3 209.5 612.65 222.5 615.95 235.55 619.85 247.3 620.1 248 620.7 248.45 621.3 248.85 622.05 248.85 L632.35 248.85 Q633.05 248.85 633.65 248.45 L634.5 247.4 639.45 232.65 641.9 224.5 644.45 232.65 Q646.8 240.35 649.4 247.4 649.6 248.05 650.2 248.45 650.8 248.85 651.5 248.85 L661.9 248.85 Q662.6 248.85 663.25 248.45 663.85 248 664.05 247.3 667.95 235.55 671.3 222.5 674.6 209.5 677.15 196.9 L677.15 196.8 Q677.3 196.1 677.05 195.45 L676.2 194.45 Q675.6 194.05 674.9 194.05 L663.15 194.05 Q662.3 194.05 661.7 194.6 661.05 195.1 660.9 195.95 L660.75 197.05 659.35 204.85 659.35 204.8 657.65 214.1 657.65 214.05 655.8 223 653.5 215.5 651.2 207.8 649.75 202.55 649.3 201 Q649.05 200.3 648.45 199.85 647.85 199.4 647.1 199.4 L637.45 199.4 Q636.7 199.4 636.1 199.9 635.45 200.35 635.25 201.05 L634.9 202.55 633.5 207.75 631.35 215.35 629 223.3 628.9 223.3"/> + <path stroke="none" fill="#D5EDF7" d="M628.9 223.3 L628.95 223.45 629 223.3 631.35 215.35 633.5 207.75 634.9 202.55 635.25 201.05 Q635.45 200.35 636.1 199.9 636.7 199.4 637.45 199.4 L647.1 199.4 Q647.85 199.4 648.45 199.85 649.05 200.3 649.3 201 L649.75 202.55 651.2 207.8 653.5 215.5 655.8 223 657.65 214.05 657.65 214.1 659.35 204.8 659.35 204.85 660.75 197.05 660.9 195.95 Q661.05 195.1 661.7 194.6 662.3 194.05 663.15 194.05 L674.9 194.05 Q675.6 194.05 676.2 194.45 L677.05 195.45 Q677.3 196.1 677.15 196.8 L677.15 196.9 Q674.6 209.5 671.3 222.5 667.95 235.55 664.05 247.3 663.85 248 663.25 248.45 662.6 248.85 661.9 248.85 L651.5 248.85 Q650.8 248.85 650.2 248.45 649.6 248.05 649.4 247.4 646.8 240.35 644.45 232.65 L641.9 224.5 639.45 232.65 634.5 247.4 633.65 248.45 Q633.05 248.85 632.35 248.85 L622.05 248.85 Q621.3 248.85 620.7 248.45 620.1 248 619.85 247.3 615.95 235.55 612.65 222.5 609.3 209.5 606.8 196.95 L606.75 196.8 Q606.6 196.1 606.9 195.5 607.15 194.8 607.75 194.45 608.3 194.05 609 194.05 L621.25 194.05 Q622.1 194.05 622.75 194.6 623.35 195.1 623.5 195.95 L623.7 197.05 625.1 204.8 626.9 214 628.85 223 628.9 223.3 M661.6 205.2 L659.9 214.45 658 223.45 656.1 231.5 653.75 224.1 651.3 216.15 649 208.4 647.1 201.65 637.45 201.65 635.65 208.3 633.5 216 631.15 223.95 628.6 231.5 626.6 223.45 624.65 214.45 622.85 205.2 621.25 196.35 609 196.35 Q611.55 208.9 614.85 221.95 618.15 234.9 622.05 246.6 L632.35 246.6 Q634.9 239.6 637.25 231.95 L641.85 216.65 646.6 231.95 Q649 239.6 651.5 246.6 L661.9 246.6 Q665.75 234.9 669.1 221.95 672.4 208.9 674.9 196.35 L663.15 196.35 661.6 205.2"/> + <path stroke="none" fill="#ACDCEE" d="M661.6 205.2 L663.15 196.35 674.9 196.35 Q672.4 208.9 669.1 221.95 665.75 234.9 661.9 246.6 L651.5 246.6 Q649 239.6 646.6 231.95 L641.85 216.65 637.25 231.95 Q634.9 239.6 632.35 246.6 L622.05 246.6 Q618.15 234.9 614.85 221.95 611.55 208.9 609 196.35 L621.25 196.35 622.85 205.2 624.65 214.45 626.6 223.45 628.6 231.5 631.15 223.95 633.5 216 635.65 208.3 637.45 201.65 647.1 201.65 649 208.4 651.3 216.15 653.75 224.1 656.1 231.5 658 223.45 659.9 214.45 661.6 205.2"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M679.05 198.95 L679.1 199.15 Q679.65 200.4 679.35 201.75 676.85 214.35 673.5 227.4 L673.45 227.65 Q670.1 240.75 666.2 252.6 665.75 253.95 664.6 254.8 L664.55 254.85 Q663.35 255.7 661.9 255.7 L651.5 255.7 Q650.05 255.7 648.9 254.85 647.75 254 647.25 252.7 644.65 245.6 642.25 237.85 L642.2 237.7 642.15 237.5 641.95 236.8 641.6 237.85 Q639.2 245.6 636.6 252.7 L636.6 252.75 Q636.1 254.05 634.95 254.85 633.8 255.7 632.4 255.7 L622.05 255.7 Q620.55 255.7 619.4 254.8 L619.4 254.85 Q618.15 253.95 617.7 252.6 613.8 240.75 610.45 227.65 L610.45 227.6 Q607.15 214.45 604.5 201.75 604.25 200.4 604.8 199.15 L604.9 198.95 Q607.35 210.8 610.45 223.05 L610.45 223.1 Q613.8 236.2 617.7 248.05 L617.7 248.1 Q618.15 249.45 619.4 250.3 L619.4 250.25 Q620.55 251.15 622.05 251.15 L632.4 251.15 Q633.8 251.15 634.95 250.3 636.1 249.5 636.6 248.2 L636.6 248.15 Q639.2 241.05 641.6 233.3 L641.95 232.25 642.15 232.95 642.2 233.2 642.25 233.35 Q644.65 241.1 647.25 248.15 647.75 249.5 648.9 250.3 650.05 251.15 651.5 251.15 L661.9 251.15 Q663.35 251.15 664.55 250.3 L664.6 250.25 Q665.75 249.4 666.2 248.05 670.1 236.2 673.45 223.1 L673.5 222.85 Q676.6 210.7 679.05 198.95"/> + <path stroke="none" fill="#000000" d="M628.9 223.3 L629 223.3 628.95 223.45 628.9 223.3"/> + <path stroke="none" fill="#D5EDF7" d="M307.75 196 L307.35 196 302.2 196.2 300.25 196.35 292.6 197.3 292.6 246.9 303.9 246.9 303.9 228.55 309.5 228.55 312.45 232.45 315.35 236.95 318.3 241.9 321.1 246.9 333.75 246.9 330.9 241.25 327.75 235.8 324.5 230.7 321.25 226.35 Q325.85 224.5 328.25 221.15 330.7 217.85 330.7 212.6 330.7 204.1 324.65 200.05 320.95 197.55 315.3 196.6 L307.75 196 M303.9 205.9 L305.8 205.8 308 205.7 Q313.45 205.7 316.2 207.25 319 208.8 319 212.5 319 216.35 316.25 217.95 314.15 219.2 309.7 219.45 L308.45 219.55 307.1 219.55 303.9 219.55 303.9 205.9 M306.2 208.05 L306.2 217.25 307.1 217.25 308.45 217.25 Q312.25 217.1 314.35 216.3 L315.1 216 Q316.75 214.9 316.75 212.5 316.75 210.25 315.1 209.25 312.7 207.95 308 207.95 L306.2 208.05 M300.1 194.05 L307.35 193.75 Q319.5 193.75 325.95 198.2 329.8 200.7 331.55 204.8 333 208.15 333 212.6 333 218.7 330.1 222.5 328.05 225.3 324.8 227.15 L326.35 229.4 328.25 232.15 329.75 234.6 329.7 234.6 332.1 238.65 332.9 240.2 335.8 245.95 Q336.15 246.7 336 247.45 L335.15 248.7 333.75 249.15 321.1 249.15 319.95 248.85 319.1 248.05 316.3 243.05 313.45 238.15 313.5 238.15 310.55 233.7 308.4 230.8 306.2 230.8 306.2 246.9 Q306.2 247.85 305.55 248.55 304.85 249.15 303.9 249.15 L292.6 249.15 Q291.65 249.15 291.05 248.55 290.35 247.85 290.35 246.9 L290.35 197.3 Q290.35 196.5 290.9 195.85 291.4 195.25 292.2 195.1 L300.1 194.05"/> + <path stroke="none" fill="#ACDCEE" d="M307.75 196 L315.3 196.6 Q320.95 197.55 324.65 200.05 330.7 204.1 330.7 212.6 330.7 217.85 328.25 221.15 325.85 224.5 321.25 226.35 L324.5 230.7 327.75 235.8 330.9 241.25 333.75 246.9 321.1 246.9 318.3 241.9 315.35 236.95 312.45 232.45 309.5 228.55 303.9 228.55 303.9 246.9 292.6 246.9 292.6 197.3 300.25 196.35 302.2 196.2 307.35 196 307.75 196 M303.9 205.9 L303.9 219.55 307.1 219.55 308.45 219.55 309.7 219.45 Q314.15 219.2 316.25 217.95 319 216.35 319 212.5 319 208.8 316.2 207.25 313.45 205.7 308 205.7 L305.8 205.8 303.9 205.9"/> + <path stroke="none" fill="#5DA3BD" d="M308.45 214.75 L308.45 215 310.25 214.9 Q312.6 214.6 313.95 214 314.45 213.55 314.45 212.5 314.45 211.65 314 211.2 312.05 210.3 308.45 210.25 L308.45 214.75 M306.2 208.05 L308 207.95 Q312.7 207.95 315.1 209.25 316.75 210.25 316.75 212.5 316.75 214.9 315.1 216 L314.35 216.3 Q312.25 217.1 308.45 217.25 L307.1 217.25 306.2 217.25 306.2 208.05 M288.1 247.15 L288.1 197.3 Q288.1 195.7 289.15 194.4 290.2 193.15 291.8 192.85 L299.9 191.8 307.35 191.5 Q320.35 191.5 327.25 196.35 L327.2 196.3 Q335.25 201.5 335.25 212.6 L335.2 214.85 Q334.7 220.3 331.95 223.9 L331.8 224.05 Q330.25 226.15 328 227.8 L328.25 228.1 329.95 230.7 331.65 233.45 331.8 233.65 334.8 238.95 334.9 239.1 337.85 245 Q338.55 246.4 338.15 247.95 L338.15 248 337.7 249.15 336.6 250.45 336.55 250.5 Q335.3 251.45 333.75 251.45 L321.1 251.45 Q319.85 251.45 318.8 250.8 317.7 250.2 317.15 249.15 L317.1 249.15 314.3 244.15 311.55 239.4 311.5 239.35 308.65 234.95 308.55 234.8 308.5 234.65 308.45 234.7 308.45 239.25 308.45 247 Q308.4 248.85 307.15 250.1 305.8 251.45 303.9 251.45 L292.6 251.45 Q290.75 251.45 289.4 250.1 288.15 248.9 288.1 247.15 M300.1 194.05 L292.2 195.1 Q291.4 195.25 290.9 195.85 290.35 196.5 290.35 197.3 L290.35 246.9 Q290.35 247.85 291.05 248.55 291.65 249.15 292.6 249.15 L303.9 249.15 Q304.85 249.15 305.55 248.55 306.2 247.85 306.2 246.9 L306.2 230.8 308.4 230.8 310.55 233.7 313.5 238.15 313.45 238.15 316.3 243.05 319.1 248.05 319.95 248.85 321.1 249.15 333.75 249.15 335.15 248.7 336 247.45 Q336.15 246.7 335.8 245.95 L332.9 240.2 332.1 238.65 329.7 234.6 329.75 234.6 328.25 232.15 326.35 229.4 324.8 227.15 Q328.05 225.3 330.1 222.5 333 218.7 333 212.6 333 208.15 331.55 204.8 329.8 200.7 325.95 198.2 319.5 193.75 307.35 193.75 L300.1 194.05"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M310.25 214.9 L308.45 214.75 308.45 210.25 Q312.05 210.3 314 211.2 314.45 211.65 314.45 212.5 314.45 213.55 313.95 214 312.6 214.6 310.25 214.9 M335.2 214.85 L335.25 217.1 Q335.25 224.1 331.95 228.4 L331.8 228.6 329.95 230.7 328.25 228.1 328 227.8 Q330.25 226.15 331.8 224.05 L331.95 223.9 Q334.7 220.3 335.2 214.85 M337.7 249.15 L337.85 249.5 337.85 249.55 Q338.55 250.95 338.15 252.5 L338.15 252.55 Q337.8 254.05 336.6 255 L336.55 255.05 Q335.3 256 333.75 256 L321.1 256 Q319.85 256 318.8 255.35 317.7 254.75 317.15 253.7 L317.1 253.65 314.3 248.7 311.55 243.95 311.5 243.9 308.65 239.5 308.55 239.35 308.5 239.2 308.45 239.25 308.45 234.7 308.5 234.65 308.55 234.8 308.65 234.95 311.5 239.35 311.55 239.4 314.3 244.15 317.1 249.15 317.15 249.15 Q317.7 250.2 318.8 250.8 319.85 251.45 321.1 251.45 L333.75 251.45 Q335.3 251.45 336.55 250.5 L336.6 250.45 337.7 249.15 M308.45 247 L308.45 251.45 Q308.45 253.35 307.15 254.65 305.8 256 303.9 256 L292.6 256 Q290.75 256 289.4 254.65 288.1 253.35 288.1 251.45 L288.1 247.15 Q288.15 248.9 289.4 250.1 290.75 251.45 292.6 251.45 L303.9 251.45 Q305.8 251.45 307.15 250.1 308.4 248.85 308.45 247"/> + <path stroke="none" fill="#5DA3BD" d="M409.55 206.1 L409.55 196.35 Q409.55 194.45 410.85 193.1 412.2 191.8 414.1 191.8 L455.8 191.8 Q457.65 191.8 459 193.1 460.3 194.45 460.3 196.35 L460.3 206.1 Q460.25 207.9 459 209.2 457.65 210.5 455.8 210.5 L445.1 210.5 445.1 215.05 445.1 246.85 Q445.05 248.6 443.8 249.8 442.45 251.15 440.6 251.15 L429.3 251.15 Q427.4 251.15 426.05 249.8 424.8 248.55 424.75 246.7 L424.75 215.05 424.75 210.5 414.1 210.5 Q412.2 210.5 410.85 209.2 409.6 207.9 409.55 206.1 M457.4 194.75 Q456.7 194.05 455.8 194.05 L414.1 194.05 Q413.15 194.05 412.5 194.75 411.8 195.4 411.8 196.35 L411.8 205.95 Q411.8 206.9 412.5 207.6 413.15 208.25 414.1 208.25 L427 208.25 427 246.6 Q427 247.55 427.7 248.25 428.35 248.85 429.3 248.85 L440.6 248.85 Q441.5 248.85 442.2 248.25 442.85 247.55 442.85 246.6 L442.85 208.25 455.8 208.25 Q456.7 208.25 457.4 207.6 458.05 206.9 458.05 205.95 L458.05 196.35 Q458.05 195.4 457.4 194.75"/> + <path stroke="none" fill="#D5EDF7" d="M457.4 194.75 Q458.05 195.4 458.05 196.35 L458.05 205.95 Q458.05 206.9 457.4 207.6 456.7 208.25 455.8 208.25 L442.85 208.25 442.85 246.6 Q442.85 247.55 442.2 248.25 441.5 248.85 440.6 248.85 L429.3 248.85 Q428.35 248.85 427.7 248.25 427 247.55 427 246.6 L427 208.25 414.1 208.25 Q413.15 208.25 412.5 207.6 411.8 206.9 411.8 205.95 L411.8 196.35 Q411.8 195.4 412.5 194.75 413.15 194.05 414.1 194.05 L455.8 194.05 Q456.7 194.05 457.4 194.75 M455.8 205.95 L455.8 196.35 414.1 196.35 414.1 205.95 429.3 205.95 429.3 246.6 440.6 246.6 440.6 205.95 455.8 205.95"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M460.3 206.1 L460.3 210.5 Q460.3 212.4 459 213.7 457.65 215.05 455.8 215.05 L445.1 215.05 445.1 210.5 455.8 210.5 Q457.65 210.5 459 209.2 460.25 207.9 460.3 206.1 M445.1 246.85 L445.1 251.15 Q445.1 253.05 443.8 254.35 442.45 255.7 440.6 255.7 L429.3 255.7 Q427.4 255.7 426.05 254.35 424.75 253.05 424.75 251.15 L424.75 246.7 Q424.8 248.55 426.05 249.8 427.4 251.15 429.3 251.15 L440.6 251.15 Q442.45 251.15 443.8 249.8 445.05 248.6 445.1 246.85 M424.75 215.05 L414.1 215.05 Q412.2 215.05 410.85 213.7 409.55 212.4 409.55 210.5 L409.55 206.1 Q409.6 207.9 410.85 209.2 412.2 210.5 414.1 210.5 L424.75 210.5 424.75 215.05"/> + <path stroke="none" fill="#ACDCEE" d="M455.8 205.95 L440.6 205.95 440.6 246.6 429.3 246.6 429.3 205.95 414.1 205.95 414.1 196.35 455.8 196.35 455.8 205.95"/> + <path stroke="none" fill="#5DA3BD" d="M797.75 194.05 Q797.05 194.05 796.55 194.45 795.95 194.8 795.7 195.4 L794.75 197.5 790.7 205.65 786.9 212.45 783.15 205.65 Q781 201.6 779.15 197.45 L778.2 195.4 777.4 194.45 Q776.8 194.05 776.15 194.05 L763 194.05 Q762.2 194.05 761.55 194.6 760.95 195.1 760.8 195.85 760.65 196.35 760.8 196.9 L761 197.4 Q765.15 205.5 769.65 213.25 773.95 220.7 778.75 228.2 L778.75 246.6 Q778.75 247.55 779.4 248.25 780.05 248.85 781 248.85 L792.35 248.85 Q793.3 248.85 793.95 248.25 794.6 247.55 794.6 246.6 L794.6 228.05 803.65 213.2 812.25 197.35 812.45 196.9 812.45 195.85 Q812.25 195.1 811.65 194.6 811 194.05 810.25 194.05 L797.75 194.05 M759.05 198.65 L758.95 198.4 Q758.2 196.95 758.55 195.4 758.85 193.85 760.1 192.8 761.35 191.8 763 191.8 L776.15 191.8 Q777.45 191.8 778.6 192.5 L778.65 192.55 Q779.7 193.25 780.3 194.5 782.5 199.6 785.15 204.6 L785.15 204.55 786.9 207.85 788.7 204.55 793.6 194.5 793.65 194.5 Q794.15 193.25 795.25 192.55 L795.35 192.5 Q796.45 191.8 797.75 191.8 L810.25 191.8 Q811.8 191.8 813.1 192.8 L813.05 192.8 Q814.3 193.85 814.65 195.4 815 196.95 814.25 198.35 L814.15 198.65 Q810.05 206.7 805.6 214.3 801.45 221.5 796.9 228.7 L796.9 233.2 796.9 246.7 Q796.85 248.55 795.55 249.8 794.25 251.15 792.35 251.15 L781 251.15 Q779.1 251.15 777.8 249.8 776.5 248.55 776.45 246.7 L776.45 233.35 776.45 228.85 767.65 214.4 Q763.15 206.7 759.05 198.65"/> + <path stroke="none" fill="#D5EDF7" d="M797.75 194.05 L810.25 194.05 Q811 194.05 811.65 194.6 812.25 195.1 812.45 195.85 L812.45 196.9 812.25 197.35 803.65 213.2 794.6 228.05 794.6 246.6 Q794.6 247.55 793.95 248.25 793.3 248.85 792.35 248.85 L781 248.85 Q780.05 248.85 779.4 248.25 778.75 247.55 778.75 246.6 L778.75 228.2 Q773.95 220.7 769.65 213.25 765.15 205.5 761 197.4 L760.8 196.9 Q760.65 196.35 760.8 195.85 760.95 195.1 761.55 194.6 762.2 194.05 763 194.05 L776.15 194.05 Q776.8 194.05 777.4 194.45 L778.2 195.4 779.15 197.45 Q781 201.6 783.15 205.65 L786.9 212.45 790.7 205.65 794.75 197.5 795.7 195.4 Q795.95 194.8 796.55 194.45 797.05 194.05 797.75 194.05 M797.75 196.35 L792.7 206.7 786.85 216.95 781.1 206.7 Q778.45 201.55 776.15 196.35 L763 196.35 Q767.15 204.4 771.6 212.15 776.05 219.8 781 227.5 L781 246.6 792.35 246.6 792.35 227.35 801.7 212.05 810.25 196.35 797.75 196.35"/> + <path stroke="none" fill="#ACDCEE" d="M797.75 196.35 L810.25 196.35 801.7 212.05 792.35 227.35 792.35 246.6 781 246.6 781 227.5 Q776.05 219.8 771.6 212.15 767.15 204.4 763 196.35 L776.15 196.35 Q778.45 201.55 781.1 206.7 L786.85 216.95 792.7 206.7 797.75 196.35"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M814.15 198.65 L814.65 199.9 Q815 201.45 814.25 202.9 810.1 211.1 805.6 218.85 L796.9 233.2 796.9 228.7 Q801.45 221.5 805.6 214.3 810.05 206.7 814.15 198.65 M796.9 246.7 L796.9 251.15 Q796.9 253.05 795.55 254.35 794.25 255.7 792.35 255.7 L781 255.7 Q779.1 255.7 777.8 254.35 776.45 253.05 776.45 251.15 L776.45 246.7 Q776.5 248.55 777.8 249.8 779.1 251.15 781 251.15 L792.35 251.15 Q794.25 251.15 795.55 249.8 796.85 248.55 796.9 246.7 M776.45 233.35 L767.65 218.95 Q763.15 211.15 758.95 202.95 758.2 201.45 758.55 199.9 L758.55 199.95 759.05 198.65 Q763.15 206.7 767.65 214.4 L776.45 228.85 776.45 233.35"/> + <path stroke="none" fill="#5DA3BD" d="M471.9 228.2 L471.9 195.85 Q471.9 193.95 473.25 192.6 474.55 191.3 476.45 191.3 L487.8 191.3 Q489.7 191.3 491 192.6 492.3 193.95 492.3 195.85 L492.3 226.65 Q492.4 228.55 492.8 229.9 L492.8 229.95 Q493.2 231.1 493.85 231.85 L493.95 232 494.65 232.45 494.75 232.5 497 232.8 Q499.1 232.8 500.4 231.7 L500.45 231.65 Q501.6 230.1 501.75 226.7 L501.75 195.85 Q501.75 193.95 503.05 192.6 504.4 191.3 506.25 191.3 L517.6 191.3 Q519.5 191.3 520.85 192.6 522.15 193.95 522.15 195.85 L522.15 228.2 Q522 232.65 520.8 236.45 L520.7 236.65 Q519.15 241.4 515.85 244.75 L515.7 244.9 Q512.7 248 508.05 249.8 L507.75 249.95 Q503.15 251.65 496.85 251.65 490.65 251.65 486.2 249.95 L486.05 249.9 Q481.2 247.95 478.05 244.65 L478.05 244.6 Q474.9 241.25 473.35 236.6 472.05 232.8 471.9 228.2 M474.85 194.25 Q474.2 194.9 474.2 195.85 L474.2 227.1 Q474.2 231.9 475.5 235.9 476.85 240.05 479.75 243.05 482.55 246.05 486.9 247.75 491.05 249.4 496.85 249.4 502.7 249.4 506.95 247.85 L506.95 247.8 Q511.4 246.15 514.2 243.15 L514.25 243.1 Q517.15 240.15 518.55 235.95 519.9 231.9 519.9 227.1 L519.9 195.85 Q519.9 194.9 519.25 194.25 518.55 193.55 517.6 193.55 L506.25 193.55 Q505.35 193.55 504.7 194.25 504 194.9 504 195.85 L504 226.15 Q504 231.05 502.1 233.2 L501.45 233.8 Q499.65 235.05 497 235.05 L494 234.65 493.95 234.6 492.65 233.85 492.15 233.35 492.1 233.35 Q491.2 232.25 490.6 230.6 L490.6 230.65 Q490.05 228.8 490.05 226.15 L490.05 195.85 Q490.05 194.9 489.4 194.25 488.75 193.55 487.8 193.55 L476.45 193.55 Q475.5 193.55 474.85 194.25"/> + <path stroke="none" fill="#D5EDF7" d="M474.85 194.25 Q475.5 193.55 476.45 193.55 L487.8 193.55 Q488.75 193.55 489.4 194.25 490.05 194.9 490.05 195.85 L490.05 226.15 Q490.05 228.8 490.6 230.65 L490.6 230.6 Q491.2 232.25 492.1 233.35 L492.15 233.35 492.65 233.85 493.95 234.6 494 234.65 497 235.05 Q499.65 235.05 501.45 233.8 L502.1 233.2 Q504 231.05 504 226.15 L504 195.85 Q504 194.9 504.7 194.25 505.35 193.55 506.25 193.55 L517.6 193.55 Q518.55 193.55 519.25 194.25 519.9 194.9 519.9 195.85 L519.9 227.1 Q519.9 231.9 518.55 235.95 517.15 240.15 514.25 243.1 L514.2 243.15 Q511.4 246.15 506.95 247.8 L506.95 247.85 Q502.7 249.4 496.85 249.4 491.05 249.4 486.9 247.75 482.55 246.05 479.75 243.05 476.85 240.05 475.5 235.9 474.2 231.9 474.2 227.1 L474.2 195.85 Q474.2 194.9 474.85 194.25 M476.45 227.1 Q476.45 231.5 477.65 235.2 478.85 238.85 481.35 241.5 483.85 244.15 487.7 245.65 491.55 247.1 496.85 247.1 502.25 247.1 506.15 245.7 510.1 244.2 512.6 241.55 515.15 238.9 516.4 235.2 517.6 231.5 517.6 227.1 L517.6 195.85 506.25 195.85 506.25 226.15 Q506.25 232.25 503.7 234.8 501.3 237.2 497.35 237.35 L497.1 237.35 497 237.35 496.95 237.35 496.35 237.35 493.25 236.75 Q491.55 236.15 490.4 234.85 489.2 233.5 488.45 231.3 487.8 229.2 487.8 226.15 L487.8 195.85 476.45 195.85 476.45 227.1"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M522.15 228.2 L522.15 231.65 Q522.15 236.7 520.8 240.95 L520.7 241.2 Q519.15 245.9 515.85 249.3 L515.7 249.45 Q512.7 252.55 508.05 254.35 L507.75 254.5 Q503.15 256.2 496.85 256.2 490.65 256.2 486.2 254.5 L486.05 254.4 Q481.2 252.5 478.05 249.15 474.9 245.8 473.35 241.15 471.9 236.85 471.9 231.65 L471.9 228.2 Q472.05 232.8 473.35 236.6 474.9 241.25 478.05 244.6 L478.05 244.65 Q481.2 247.95 486.05 249.9 L486.2 249.95 Q490.65 251.65 496.85 251.65 503.15 251.65 507.75 249.95 L508.05 249.8 Q512.7 248 515.7 244.9 L515.85 244.75 Q519.15 241.4 520.7 236.65 L520.8 236.45 Q522 232.65 522.15 228.2"/> + <path stroke="none" fill="#ACDCEE" d="M476.45 227.1 L476.45 195.85 487.8 195.85 487.8 226.15 Q487.8 229.2 488.45 231.3 489.2 233.5 490.4 234.85 491.55 236.15 493.25 236.75 L496.35 237.35 496.95 237.35 497 237.35 497.1 237.35 497.35 237.35 Q501.3 237.2 503.7 234.8 506.25 232.25 506.25 226.15 L506.25 195.85 517.6 195.85 517.6 227.1 Q517.6 231.5 516.4 235.2 515.15 238.9 512.6 241.55 510.1 244.2 506.15 245.7 502.25 247.1 496.85 247.1 491.55 247.1 487.7 245.65 483.85 244.15 481.35 241.5 478.85 238.85 477.65 235.2 476.45 231.5 476.45 227.1"/> + <path stroke="none" fill="#5DA3BD" d="M355.25 212.6 L355.15 210.35 Q355.15 205.8 356.85 202.2 L356.95 202 Q358.7 198.35 361.85 195.8 364.8 193.4 368.9 192.1 L369.15 192 Q373.15 190.75 378.2 190.75 384 190.75 388.25 192 L388.45 192.1 Q392.55 193.25 395.3 194.75 396.7 195.6 397.3 197.15 397.9 198.7 397.3 200.3 L397 201.1 394.05 209.2 394.05 209.25 Q393.6 210.45 392.55 211.25 391.5 212.05 390.2 212.2 L390.25 212.15 Q388.95 212.3 387.75 211.7 L387.7 211.7 Q385.95 210.75 383.75 210.1 381.7 209.45 378.9 209.45 L376.25 209.65 376.25 209.7 Q377 210.2 378 210.55 L378.25 210.65 381.4 211.85 381.6 211.9 Q385.7 213.4 388.8 214.95 L389.05 215.1 391.45 216.45 394.85 219.1 395.05 219.4 Q397.5 221.85 398.7 225.15 L398.75 225.15 398.8 225.35 398.85 225.4 Q400 228.5 400 232.9 L399.95 235.05 Q399.2 242.95 393.3 247.45 L393.2 247.5 Q387.35 252.25 375.65 252.25 L368.95 251.8 363.7 250.75 363.35 250.65 359.5 249.3 356.5 247.75 356.5 247.8 Q355.4 247.15 354.85 246.1 L354.55 245.45 Q353.95 243.9 354.55 242.35 L357.75 233.35 Q358.2 232.1 359.3 231.3 L359.25 231.3 Q360.35 230.45 361.7 230.35 363.05 230.25 364.25 230.9 365.9 231.85 368.4 232.65 L368.8 232.75 368.85 232.75 Q371.6 233.5 375.65 233.5 L378.55 233.25 379.2 233.05 379.2 232.95 378.9 232.5 Q376.85 231.2 372 229.55 L371.75 229.45 371.65 229.4 366.95 227.45 366.65 227.35 Q363.55 226 361.1 223.85 L361.05 223.8 Q358.45 221.5 356.9 218.3 L356.9 218.35 Q355.6 215.85 355.25 212.6 M391.95 245.65 Q397.75 241.15 397.75 232.9 397.75 228.85 396.65 226 L396.6 225.95 396.4 225.45 Q395.3 222.8 393.25 220.75 L393.2 220.7 Q391.1 218.6 387.8 217 L387.85 217 Q384.8 215.55 380.85 214.05 L380.8 214.05 377.4 212.75 Q376.05 212.25 375.05 211.65 L375 211.6 Q374.25 211.15 373.8 210.55 L373.55 209.5 Q373.5 208.45 374.3 207.95 375.7 207.15 378.9 207.15 382.15 207.15 384.45 207.9 L388.8 209.7 390.05 209.95 391.2 209.5 391.95 208.45 395.2 199.55 395.3 199.3 Q395.45 198.65 395.15 197.95 394.85 197.15 394.15 196.8 391.6 195.35 387.6 194.2 383.65 193 378.2 193 373.6 193 369.9 194.15 366 195.3 363.3 197.55 360.45 199.85 358.9 203.15 L358.75 203.6 Q357.4 206.65 357.4 210.35 357.4 214.45 358.9 217.3 360.3 220.05 362.6 222.1 L362.6 222.15 Q364.8 224.05 367.6 225.3 L367.55 225.3 372.65 227.35 372.7 227.4 Q377.95 229.15 380.15 230.65 381.4 231.5 381.5 232.85 L381.3 234.2 380.8 234.75 380.7 234.8 Q380.1 235.2 379.1 235.5 L376.5 235.8 375.65 235.8 Q371.25 235.8 368.2 234.95 365.2 234.05 363.15 232.9 L361.85 232.6 Q361.2 232.65 360.65 233.1 L359.9 234.1 356.7 243.1 Q356.4 243.9 356.7 244.65 356.95 245.45 357.65 245.85 L360.4 247.2 364.3 248.55 369.3 249.6 375.65 250 Q386.5 250 391.9 245.6 L391.9 245.65 391.95 245.65"/> + <path stroke="none" fill="#D5EDF7" d="M391.95 245.65 L391.9 245.6 Q386.5 250 375.65 250 L369.3 249.6 364.3 248.55 360.4 247.2 357.65 245.85 Q356.95 245.45 356.7 244.65 356.4 243.9 356.7 243.1 L359.9 234.1 360.65 233.1 Q361.2 232.65 361.85 232.6 L363.15 232.9 Q365.2 234.05 368.2 234.95 371.25 235.8 375.65 235.8 L376.5 235.8 379.1 235.5 Q380.1 235.2 380.7 234.8 L380.8 234.75 381.3 234.2 381.5 232.85 Q381.4 231.5 380.15 230.65 377.95 229.15 372.7 227.4 L372.65 227.35 367.55 225.3 367.6 225.3 Q364.8 224.05 362.6 222.15 L362.6 222.1 Q360.3 220.05 358.9 217.3 357.4 214.45 357.4 210.35 357.4 206.65 358.75 203.6 L358.9 203.15 Q360.45 199.85 363.3 197.55 366 195.3 369.9 194.15 373.6 193 378.2 193 383.65 193 387.6 194.2 391.6 195.35 394.15 196.8 394.85 197.15 395.15 197.95 395.45 198.65 395.3 199.3 L395.2 199.55 391.95 208.45 391.2 209.5 390.05 209.95 388.8 209.7 384.45 207.9 Q382.15 207.15 378.9 207.15 375.7 207.15 374.3 207.95 373.5 208.45 373.55 209.5 L373.8 210.55 Q374.25 211.15 375 211.6 L375.05 211.65 Q376.05 212.25 377.4 212.75 L380.8 214.05 380.85 214.05 Q384.8 215.55 387.85 217 L387.8 217 Q391.1 218.6 393.2 220.7 L393.25 220.75 Q395.3 222.8 396.4 225.45 L396.6 225.95 396.65 226 Q397.75 228.85 397.75 232.9 397.75 241.15 391.95 245.65 M393.05 198.75 Q390.65 197.4 386.95 196.35 L383.05 195.55 378.55 195.25 378.4 195.25 378.2 195.25 378.05 195.25 374.95 195.4 Q372.55 195.7 370.5 196.3 367.1 197.35 364.7 199.35 362.3 201.3 360.95 204.05 359.65 206.85 359.65 210.35 359.65 213.85 360.9 216.3 362.15 218.65 364.1 220.4 366.05 222.1 368.5 223.2 L373.45 225.25 Q379.1 227.15 381.45 228.75 383.75 230.4 383.75 232.85 383.75 234 383.4 234.95 383.05 235.9 382.1 236.6 381.2 237.3 379.65 237.7 L376.95 238 375.8 238.05 375.65 238.05 375.4 238.05 371.85 237.85 367.55 237.1 Q364.25 236.15 362 234.9 L358.8 243.9 361.3 245.1 364.9 246.35 369.6 247.3 375.65 247.75 Q385.55 247.75 390.5 243.85 395.45 240 395.45 232.9 395.45 229.3 394.5 226.75 393.6 224.2 391.6 222.35 389.7 220.45 386.8 219.05 383.9 217.6 380 216.15 L376.55 214.9 Q375 214.3 373.8 213.5 372.6 212.75 371.9 211.8 371.3 210.85 371.3 209.5 371.3 207.15 373.05 206.05 374.85 204.9 378.9 204.9 382.5 204.9 385.1 205.75 387.7 206.55 389.8 207.65 L393.05 198.75"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M397 201.1 L397.3 201.7 Q397.9 203.25 397.3 204.85 L394.05 213.75 394.05 213.8 Q393.6 215 392.55 215.8 L391.45 216.45 389.05 215.1 388.8 214.95 Q385.7 213.4 381.6 211.9 L381.4 211.85 378.25 210.65 378 210.55 Q377 210.2 376.25 209.7 L376.25 209.65 378.9 209.45 Q381.7 209.45 383.75 210.1 385.95 210.75 387.7 211.7 L387.75 211.7 Q388.95 212.3 390.25 212.15 L390.2 212.2 Q391.5 212.05 392.55 211.25 393.6 210.45 394.05 209.25 L394.05 209.2 397 201.1 M399.95 235.05 L400 237.45 Q400 246.85 393.3 251.95 L393.2 252.05 Q387.35 256.8 375.65 256.8 L368.95 256.35 363.7 255.3 363.35 255.2 Q361.05 254.5 359.5 253.8 L356.5 252.3 356.5 252.35 Q355.1 251.5 354.55 250 L354.55 249.95 Q353.95 248.4 354.55 246.9 L354.85 246.1 Q355.4 247.15 356.5 247.8 L356.5 247.75 359.5 249.3 363.35 250.65 363.7 250.75 368.95 251.8 375.65 252.25 Q387.35 252.25 393.2 247.5 L393.3 247.45 Q399.2 242.95 399.95 235.05 M368.4 232.65 L366.95 232 366.65 231.9 Q363.55 230.55 361.1 228.4 L361.05 228.35 Q358.45 226.05 356.9 222.85 L356.9 222.9 Q355.15 219.55 355.15 214.9 L355.25 212.6 Q355.6 215.85 356.9 218.35 L356.9 218.3 Q358.45 221.5 361.05 223.8 L361.1 223.85 Q363.55 226 366.65 227.35 L366.95 227.45 371.65 229.4 371.75 229.45 372 229.55 Q376.85 231.2 378.9 232.5 L379.2 232.95 379.2 233.05 378.55 233.25 375.65 233.5 Q371.6 233.5 368.85 232.75 L368.8 232.75 368.4 232.65"/> + <path stroke="none" fill="#ACDCEE" d="M393.05 198.75 L389.8 207.65 Q387.7 206.55 385.1 205.75 382.5 204.9 378.9 204.9 374.85 204.9 373.05 206.05 371.3 207.15 371.3 209.5 371.3 210.85 371.9 211.8 372.6 212.75 373.8 213.5 375 214.3 376.55 214.9 L380 216.15 Q383.9 217.6 386.8 219.05 389.7 220.45 391.6 222.35 393.6 224.2 394.5 226.75 395.45 229.3 395.45 232.9 395.45 240 390.5 243.85 385.55 247.75 375.65 247.75 L369.6 247.3 364.9 246.35 361.3 245.1 358.8 243.9 362 234.9 Q364.25 236.15 367.55 237.1 L371.85 237.85 375.4 238.05 375.65 238.05 375.8 238.05 376.95 238 379.65 237.7 Q381.2 237.3 382.1 236.6 383.05 235.9 383.4 234.95 383.75 234 383.75 232.85 383.75 230.4 381.45 228.75 379.1 227.15 373.45 225.25 L368.5 223.2 Q366.05 222.1 364.1 220.4 362.15 218.65 360.9 216.3 359.65 213.85 359.65 210.35 359.65 206.85 360.95 204.05 362.3 201.3 364.7 199.35 367.1 197.35 370.5 196.3 372.55 195.7 374.95 195.4 L378.05 195.25 378.2 195.25 378.4 195.25 378.55 195.25 383.05 195.55 386.95 196.35 Q390.65 197.4 393.05 198.75"/> + <path stroke="none" fill="#FF0000" d="M391.95 245.65 L391.9 245.65 391.9 245.6 391.95 245.65"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M856.65 232.6 L853.5 232.6 854.85 230.6 Q858.15 225.85 861.55 221.45 864.9 217 868 213.3 L873.3 207.3 Q874.5 206 874.55 204.3 L874.55 208.7 Q874.55 210.5 873.3 211.85 L868 217.8 Q864.9 221.55 861.55 226 L856.65 232.6 M827.9 205.95 Q827.95 207.75 829.2 209.05 830.55 210.35 832.45 210.35 L845.6 210.35 845.3 210.8 842.2 214.9 832.45 214.9 Q830.55 214.9 829.2 213.6 827.9 212.25 827.9 210.35 L827.9 205.95 M826.75 246.75 Q826.8 248.55 828.1 249.85 829.4 251.15 831.3 251.15 L870.85 251.15 Q872.75 251.15 874.05 249.85 875.3 248.6 875.35 246.85 L875.35 251.15 Q875.35 253.05 874.05 254.35 872.75 255.7 870.85 255.7 L831.3 255.7 Q829.4 255.7 828.1 254.35 826.75 253.05 826.75 251.15 L826.75 246.75"/> + <path stroke="none" fill="#5DA3BD" d="M826.75 246.75 L826.75 239.9 Q826.75 238.75 827.3 237.8 L827.3 237.75 Q829.35 233.85 832.45 229.15 835.4 224.6 838.65 219.95 L842.2 214.9 845.3 210.8 845.6 210.35 832.45 210.35 Q830.55 210.35 829.2 209.05 827.95 207.75 827.9 205.95 L827.9 196.35 Q827.9 194.45 829.2 193.15 830.55 191.8 832.45 191.8 L870 191.8 Q871.9 191.8 873.2 193.15 874.55 194.45 874.55 196.35 L874.55 204.3 Q874.5 206 873.3 207.3 L868 213.3 Q864.9 217 861.55 221.45 858.15 225.85 854.85 230.6 L853.5 232.6 856.65 232.6 870.85 232.6 Q872.75 232.6 874.05 233.9 875.35 235.25 875.35 237.15 L875.35 246.85 Q875.3 248.6 874.05 249.85 872.75 251.15 870.85 251.15 L831.3 251.15 Q829.4 251.15 828.1 249.85 826.8 248.55 826.75 246.75 M871.65 205.75 Q872.25 205.1 872.25 204.15 L872.25 196.35 Q872.25 195.4 871.65 194.75 870.95 194.1 870 194.1 L832.45 194.1 Q831.5 194.1 830.85 194.75 830.15 195.4 830.15 196.35 L830.15 205.85 Q830.15 206.8 830.85 207.45 831.5 208.1 832.45 208.1 L850.25 208.1 847.1 212.2 845 214.9 840.5 221.2 834.35 230.4 Q831.85 234.25 830 237.6 L829.3 238.85 829.05 239.9 829.05 246.6 Q829.05 247.55 829.7 248.25 830.35 248.9 831.3 248.9 L870.85 248.9 Q871.8 248.9 872.45 248.25 873.1 247.55 873.1 246.6 L873.1 237.15 Q873.1 236.2 872.45 235.55 871.8 234.85 870.85 234.85 L849.3 234.85 853 229.3 Q856.3 224.55 859.7 220.1 L859.7 220.05 866.25 211.85 871.65 205.75"/> + <path stroke="none" fill="#D5EDF7" d="M871.65 205.75 L866.25 211.85 859.7 220.05 859.7 220.1 Q856.3 224.55 853 229.3 L849.3 234.85 870.85 234.85 Q871.8 234.85 872.45 235.55 873.1 236.2 873.1 237.15 L873.1 246.6 Q873.1 247.55 872.45 248.25 871.8 248.9 870.85 248.9 L831.3 248.9 Q830.35 248.9 829.7 248.25 829.05 247.55 829.05 246.6 L829.05 239.9 829.3 238.85 830 237.6 Q831.85 234.25 834.35 230.4 L840.5 221.2 845 214.9 847.1 212.2 850.25 208.1 832.45 208.1 Q831.5 208.1 830.85 207.45 830.15 206.8 830.15 205.85 L830.15 196.35 Q830.15 195.4 830.85 194.75 831.5 194.1 832.45 194.1 L870 194.1 Q870.95 194.1 871.65 194.75 872.25 195.4 872.25 196.35 L872.25 204.15 Q872.25 205.1 871.65 205.75 M864.55 210.35 Q867.7 206.6 870 204.15 L870 196.35 832.45 196.35 832.45 205.85 855 205.85 848.9 213.55 Q845.55 217.9 842.35 222.5 L836.25 231.6 Q833.3 236.15 831.3 239.9 L831.3 246.6 870.85 246.6 870.85 237.15 845.2 237.15 Q847.8 232.75 851.15 228 L857.9 218.7 864.55 210.35"/> + <path stroke="none" fill="#ACDCEE" d="M864.55 210.35 L857.9 218.7 851.15 228 Q847.8 232.75 845.2 237.15 L870.85 237.15 870.85 246.6 831.3 246.6 831.3 239.9 Q833.3 236.15 836.25 231.6 L842.35 222.5 Q845.55 217.9 848.9 213.55 L855 205.85 832.45 205.85 832.45 196.35 870 196.35 870 204.15 Q867.7 206.6 864.55 210.35"/> + <path stroke="none" fill="#5DA3BD" d="M692.9 198.6 Q692.15 197.3 692.35 195.75 692.6 194.05 693.85 192.95 695.15 191.8 696.85 191.8 L710.6 191.8 Q711.75 191.8 712.75 192.4 713.8 192.95 714.45 193.95 L720.35 203.4 726.1 193.95 726.1 194 Q726.7 193 727.75 192.4 L727.8 192.4 Q728.8 191.8 729.95 191.8 L742.9 191.8 Q744.55 191.8 745.85 192.95 747.15 194.1 747.35 195.75 747.6 197.25 746.8 198.6 L746.65 198.85 732.45 220.55 734.05 222.65 Q738 228.1 741 233 745.25 239.8 747.7 244.5 748.45 245.95 748.15 247.55 L747.6 248.95 746.55 250.15 Q745.3 251.15 743.7 251.15 L730.1 251.15 Q728.85 251.15 727.75 250.5 726.65 249.8 726.05 248.65 L726.05 248.6 721.6 240.4 719.7 237.3 717.95 240.15 717.7 240.45 715 245.15 713.2 248.5 Q712.6 249.7 711.5 250.45 710.4 251.15 709.05 251.15 L696.15 251.15 Q694.5 251.15 693.25 250.15 L693.25 250.1 692.2 248.95 691.7 247.55 691.7 247.5 Q691.35 245.85 692.15 244.45 695.45 238.4 699.8 231.8 L706 222.7 707.55 220.5 693.05 198.9 692.9 198.6 M728.85 194.4 L728.05 195.15 720.4 207.7 712.5 195.15 711.65 194.4 710.6 194.1 696.85 194.1 Q696 194.1 695.4 194.65 694.7 195.2 694.6 196.05 L694.65 196.9 694.95 197.65 710.3 220.55 707.35 224.75 701.7 233.05 Q698.2 238.4 695.35 243.5 L694.15 245.55 Q693.75 246.25 693.9 247.05 694.05 247.85 694.7 248.35 695.35 248.9 696.15 248.9 L709.05 248.9 710.3 248.55 711.15 247.55 713.05 244 716 239 719.05 234.2 719.05 234.15 719.7 233.2 723.6 239.25 Q726.05 243.45 728.1 247.65 728.4 248.2 728.95 248.55 729.5 248.9 730.1 248.9 L743.7 248.9 Q744.5 248.9 745.15 248.4 745.75 247.85 745.9 247.05 746.05 246.3 745.7 245.55 L743.6 241.8 739.1 234.2 732.75 224.7 729.7 220.6 744.75 197.6 745.05 196.9 745.15 196.05 Q745 195.2 744.35 194.65 743.75 194.1 742.85 194.1 L729.95 194.1 Q729.35 194.1 728.85 194.4"/> + <path stroke="none" fill="#D5EDF7" d="M728.85 194.4 Q729.35 194.1 729.95 194.1 L742.85 194.1 Q743.75 194.1 744.35 194.65 745 195.2 745.15 196.05 L745.05 196.9 744.75 197.6 729.7 220.6 732.75 224.7 739.1 234.2 743.6 241.8 745.7 245.55 Q746.05 246.3 745.9 247.05 745.75 247.85 745.15 248.4 744.5 248.9 743.7 248.9 L730.1 248.9 Q729.5 248.9 728.95 248.55 728.4 248.2 728.1 247.65 726.05 243.45 723.6 239.25 L719.7 233.2 719.05 234.15 719.05 234.2 716 239 713.05 244 711.15 247.55 710.3 248.55 709.05 248.9 696.15 248.9 Q695.35 248.9 694.7 248.35 694.05 247.85 693.9 247.05 693.75 246.25 694.15 245.55 L695.35 243.5 Q698.2 238.4 701.7 233.05 L707.35 224.75 710.3 220.55 694.95 197.65 694.65 196.9 694.6 196.05 Q694.7 195.2 695.4 194.65 696 194.1 696.85 194.1 L710.6 194.1 711.65 194.4 712.5 195.15 720.4 207.7 728.05 195.15 728.85 194.4 M720.4 212 L710.6 196.35 696.85 196.35 713.05 220.6 Q707.8 227.85 703.6 234.3 699.35 240.7 696.15 246.6 L709.05 246.6 711.05 242.9 714 237.85 717.15 232.9 719.7 229.3 Q723 233.8 725.5 238.1 L730.1 246.6 743.7 246.6 737.15 235.35 Q733.05 228.65 726.9 220.75 L742.85 196.35 729.95 196.35 720.4 212"/> + <path stroke="none" fill="#ACDCEE" d="M720.4 212 L729.95 196.35 742.85 196.35 726.9 220.75 Q733.05 228.65 737.15 235.35 L743.7 246.6 730.1 246.6 725.5 238.1 Q723 233.8 719.7 229.3 L717.15 232.9 714 237.85 711.05 242.9 709.05 246.6 696.15 246.6 Q699.35 240.7 703.6 234.3 707.8 227.85 713.05 220.6 L696.85 196.35 710.6 196.35 720.4 212"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M746.8 198.6 L747.35 200.3 Q747.6 201.95 746.65 203.4 L734.05 222.65 732.45 220.55 746.65 198.85 746.8 198.6 M747.6 248.95 L747.7 249.05 Q748.45 250.5 748.15 252.05 747.8 253.65 746.55 254.65 745.3 255.7 743.7 255.7 L730.1 255.7 Q728.85 255.7 727.75 255 726.65 254.35 726.05 253.2 L726.05 253.15 721.6 244.9 719.7 241.8 717.95 244.7 717.7 245 715 249.7 713.2 253.05 Q712.6 254.25 711.5 255 710.4 255.7 709.05 255.7 L696.15 255.7 Q694.5 255.7 693.25 254.65 692 253.6 691.7 252.05 691.35 250.4 692.15 249 L692.2 248.95 693.25 250.1 693.25 250.15 Q694.5 251.15 696.15 251.15 L709.05 251.15 Q710.4 251.15 711.5 250.45 712.6 249.7 713.2 248.5 L715 245.15 717.7 240.45 717.95 240.15 719.7 237.3 721.6 240.4 726.05 248.6 726.05 248.65 Q726.65 249.8 727.75 250.5 728.85 251.15 730.1 251.15 L743.7 251.15 Q745.3 251.15 746.55 250.15 L747.6 248.95 M706 222.7 L693.05 203.4 Q692.15 202 692.35 200.3 692.45 199.35 692.9 198.6 L693.05 198.9 707.55 220.5 706 222.7"/> + <path stroke="none" fill="#5DA3BD" d="M534 198.75 L533.65 197.8 Q533.2 196.4 533.65 195 L533.65 194.95 Q534.1 193.6 535.25 192.7 536.5 191.8 537.95 191.8 L550.45 191.8 Q551.9 191.8 553.1 192.7 L553.15 192.7 Q554.3 193.55 554.75 194.9 L557.9 204.3 561.35 214.25 563.65 220.75 565.95 214.25 569.4 204.3 572.55 194.9 Q573 193.55 574.2 192.7 575.4 191.8 576.85 191.8 L588.95 191.8 Q590.4 191.8 591.6 192.7 L591.65 192.7 Q592.8 193.6 593.25 195 593.65 196.45 593.2 197.85 L592.9 198.7 589.45 208.55 589.35 208.8 584.5 221.65 584.4 221.85 578.95 235.25 572.95 248.55 573 248.6 Q572.45 249.7 571.35 250.45 570.2 251.15 568.85 251.15 L558 251.15 Q556.65 251.15 555.55 250.45 L555.55 250.5 Q554.45 249.75 553.9 248.6 L553.85 248.55 547.95 235.25 Q545 228.35 542.4 221.65 L537.5 208.8 537.45 208.65 534 198.75 M553.15 197.2 L552.6 195.65 Q552.4 194.95 551.8 194.55 551.2 194.1 550.45 194.1 L537.95 194.1 Q537.2 194.1 536.65 194.55 536 194.95 535.8 195.65 535.6 196.25 535.75 196.9 L535.8 197.1 539.65 208 539.65 208.05 544.5 220.8 Q547.1 227.55 550.05 234.35 552.95 241.25 555.95 247.6 556.2 248.15 556.8 248.55 L558 248.9 568.85 248.9 570.1 248.55 570.9 247.6 576.85 234.35 582.35 220.8 587.25 208.05 587.25 208 591.05 197.1 591.15 196.95 591.1 195.7 Q590.85 195 590.25 194.55 589.65 194.1 588.9 194.1 L576.85 194.1 Q576.15 194.1 575.55 194.55 574.9 194.95 574.7 195.65 L574.15 197.25 571.55 205 568.1 215 564.75 224.3 564.65 224.6 563.6 227.2 562.85 225.05 562.65 224.6 562.45 224 562.35 223.85 559.25 215 555.75 205 553.15 197.2"/> + <path stroke="none" fill="#D5EDF7" d="M553.15 197.2 L555.75 205 559.25 215 562.35 223.85 562.45 224 562.65 224.6 562.85 225.05 563.6 227.2 564.65 224.6 564.75 224.3 568.1 215 571.55 205 574.15 197.25 574.7 195.65 Q574.9 194.95 575.55 194.55 576.15 194.1 576.85 194.1 L588.9 194.1 Q589.65 194.1 590.25 194.55 590.85 195 591.1 195.7 L591.15 196.95 591.05 197.1 587.25 208 587.25 208.05 582.35 220.8 576.85 234.35 570.9 247.6 570.1 248.55 568.85 248.9 558 248.9 556.8 248.55 Q556.2 248.15 555.95 247.6 552.95 241.25 550.05 234.35 547.1 227.55 544.5 220.8 L539.65 208.05 539.65 208 535.8 197.1 535.75 196.9 Q535.6 196.25 535.8 195.65 536 194.95 536.65 194.55 537.2 194.1 537.95 194.1 L550.45 194.1 Q551.2 194.1 551.8 194.55 552.4 194.95 552.6 195.65 L553.15 197.2 M553.6 205.7 L550.45 196.35 537.95 196.35 541.75 207.25 546.6 219.95 Q549.2 226.65 552.15 233.45 L558 246.6 568.85 246.6 574.75 233.45 580.25 219.95 585.1 207.25 588.9 196.35 576.85 196.35 573.7 205.7 570.25 215.8 566.75 225.4 563.6 233.3 560.5 225.4 557.1 215.8 553.6 205.7"/> + <path stroke="none" fill="#ACDCEE" d="M553.6 205.7 L557.1 215.8 560.5 225.4 563.6 233.3 566.75 225.4 570.25 215.8 573.7 205.7 576.85 196.35 588.9 196.35 585.1 207.25 580.25 219.95 574.75 233.45 568.85 246.6 558 246.6 552.15 233.45 Q549.2 226.65 546.6 219.95 L541.75 207.25 537.95 196.35 550.45 196.35 553.6 205.7"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M592.9 198.7 L593.25 199.55 Q593.65 201 593.2 202.4 L589.45 213.1 589.35 213.3 584.5 226.15 584.4 226.4 578.95 239.8 572.95 253.1 573 253.1 Q572.45 254.25 571.35 255 570.2 255.7 568.85 255.7 L558 255.7 Q556.65 255.7 555.55 255 554.45 254.3 553.9 253.1 L553.85 253.1 547.95 239.8 542.4 226.15 537.5 213.3 537.45 213.15 533.65 202.35 533.65 202.3 Q533.2 200.9 533.65 199.55 L533.65 199.5 Q533.75 199.1 534 198.75 L537.45 208.65 537.5 208.8 542.4 221.65 Q545 228.35 547.95 235.25 L553.85 248.55 553.9 248.6 Q554.45 249.75 555.55 250.5 L555.55 250.45 Q556.65 251.15 558 251.15 L568.85 251.15 Q570.2 251.15 571.35 250.45 572.45 249.7 573 248.6 L573 248.55 572.95 248.55 578.95 235.25 584.4 221.85 584.5 221.65 589.35 208.8 589.45 208.55 592.9 198.7"/> + <path stroke="none" fill="#000000" d="M573 248.6 L572.95 248.55 573 248.55 573 248.6"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M343.45 131.05 L343.45 135.35 Q343.45 137.25 342.15 138.55 341.55 139.15 340.8 139.5 340.5 138.4 339.6 137.5 338.3 136.2 336.4 136.2 L320.85 136.2 320.85 135.35 338.95 135.35 Q340.85 135.35 342.15 134.05 343.4 132.8 343.45 131.05 M340.95 150.1 L340.95 154.5 Q340.95 156.3 339.75 157.6 L320.85 157.6 320.85 154.5 336.4 154.5 Q338.3 154.5 339.6 153.2 340.9 151.9 340.95 150.1 M345.15 171.7 L345.15 176.15 Q345.15 178.05 343.8 179.35 342.5 180.7 340.6 180.7 L305 180.7 Q303.1 180.7 301.8 179.35 300.45 178.05 300.45 176.15 L300.45 171.7 Q300.5 173.55 301.8 174.8 303.1 176.15 305 176.15 L340.6 176.15 Q342.5 176.15 343.8 174.8 345.1 173.55 345.15 171.7"/> + <path stroke="none" fill="#5DA3BD" d="M345.15 171.7 Q345.1 173.55 343.8 174.8 342.5 176.15 340.6 176.15 L305 176.15 Q303.1 176.15 301.8 174.8 300.5 173.55 300.45 171.7 L300.45 121.35 Q300.45 119.45 301.8 118.1 303.1 116.8 305 116.8 L338.95 116.8 Q340.85 116.8 342.15 118.1 343.45 119.45 343.45 121.35 L343.45 131.05 Q343.4 132.8 342.15 134.05 340.85 135.35 338.95 135.35 L320.85 135.35 320.85 136.2 336.4 136.2 Q338.3 136.2 339.6 137.5 340.5 138.4 340.8 139.5 L340.95 140.7 340.95 150.1 Q340.9 151.9 339.6 153.2 338.3 154.5 336.4 154.5 L320.85 154.5 320.85 157.6 339.75 157.6 340.6 157.6 Q342.5 157.6 343.8 158.9 345.15 160.25 345.15 162.1 L345.15 171.7 M303.4 119.75 Q302.7 120.4 302.7 121.35 L302.7 171.6 Q302.7 172.55 303.4 173.25 304.05 173.85 305 173.85 L340.6 173.85 Q341.55 173.85 342.25 173.25 342.85 172.55 342.85 171.6 L342.85 162.1 Q342.85 161.15 342.25 160.55 341.55 159.85 340.6 159.85 L318.55 159.85 318.55 152.25 336.4 152.25 Q337.35 152.25 338.05 151.6 338.65 150.95 338.65 150 L338.65 140.7 338.5 139.9 338.05 139.15 Q337.35 138.45 336.4 138.45 L318.55 138.45 318.55 133.1 338.95 133.1 Q339.9 133.1 340.55 132.45 341.2 131.75 341.2 130.8 L341.2 121.35 Q341.2 120.4 340.55 119.75 339.9 119.05 338.95 119.05 L305 119.05 Q304.05 119.05 303.4 119.75"/> + <path stroke="none" fill="#D5EDF7" d="M303.4 119.75 Q304.05 119.05 305 119.05 L338.95 119.05 Q339.9 119.05 340.55 119.75 341.2 120.4 341.2 121.35 L341.2 130.8 Q341.2 131.75 340.55 132.45 339.9 133.1 338.95 133.1 L318.55 133.1 318.55 138.45 336.4 138.45 Q337.35 138.45 338.05 139.15 L338.5 139.9 338.65 140.7 338.65 150 Q338.65 150.95 338.05 151.6 337.35 152.25 336.4 152.25 L318.55 152.25 318.55 159.85 340.6 159.85 Q341.55 159.85 342.25 160.55 342.85 161.15 342.85 162.1 L342.85 171.6 Q342.85 172.55 342.25 173.25 341.55 173.85 340.6 173.85 L305 173.85 Q304.05 173.85 303.4 173.25 302.7 172.55 302.7 171.6 L302.7 121.35 Q302.7 120.4 303.4 119.75 M316.3 140.7 L316.3 130.8 338.95 130.8 338.95 121.35 305 121.35 305 171.6 340.6 171.6 340.6 162.1 316.3 162.1 316.3 150 336.4 150 336.4 140.7 316.3 140.7"/> + <path stroke="none" fill="#ACDCEE" d="M316.3 140.7 L336.4 140.7 336.4 150 316.3 150 316.3 162.1 340.6 162.1 340.6 171.6 305 171.6 305 121.35 338.95 121.35 338.95 130.8 316.3 130.8 316.3 140.7"/> + <path stroke="none" fill="#5DA3BD" d="M555.85 171.7 L555.85 121.35 Q555.85 119.45 557.15 118.1 558.5 116.8 560.4 116.8 L571.7 116.8 Q573.55 116.8 574.9 118.1 576.2 119.45 576.2 121.35 L576.2 171.85 Q576.15 173.6 574.9 174.8 573.55 176.15 571.7 176.15 L560.4 176.15 Q558.5 176.15 557.15 174.8 555.9 173.55 555.85 171.7 M573.95 121.35 Q573.95 120.4 573.3 119.75 572.6 119.05 571.7 119.05 L560.4 119.05 Q559.45 119.05 558.8 119.75 558.1 120.4 558.1 121.35 L558.1 171.6 Q558.1 172.55 558.8 173.25 559.45 173.85 560.4 173.85 L571.7 173.85 Q572.6 173.85 573.3 173.25 573.95 172.55 573.95 171.6 L573.95 121.35"/> + <path stroke="none" fill="#D5EDF7" d="M573.95 121.35 L573.95 171.6 Q573.95 172.55 573.3 173.25 572.6 173.85 571.7 173.85 L560.4 173.85 Q559.45 173.85 558.8 173.25 558.1 172.55 558.1 171.6 L558.1 121.35 Q558.1 120.4 558.8 119.75 559.45 119.05 560.4 119.05 L571.7 119.05 Q572.6 119.05 573.3 119.75 573.95 120.4 573.95 121.35 M571.7 171.6 L571.7 121.35 560.4 121.35 560.4 171.6 571.7 171.6"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M576.2 171.85 L576.2 176.15 Q576.2 178.05 574.9 179.35 573.55 180.7 571.7 180.7 L560.4 180.7 Q558.5 180.7 557.15 179.35 555.85 178.05 555.85 176.15 L555.85 171.7 Q555.9 173.55 557.15 174.8 558.5 176.15 560.4 176.15 L571.7 176.15 Q573.55 176.15 574.9 174.8 576.15 173.6 576.2 171.85"/> + <path stroke="none" fill="#ACDCEE" d="M571.7 171.6 L560.4 171.6 560.4 121.35 571.7 121.35 571.7 171.6"/> + <path stroke="none" fill="#5DA3BD" d="M717.8 171.75 L717.8 121.35 Q717.8 119.45 719.15 118.1 720.45 116.8 722.35 116.8 L733.65 116.8 Q735.55 116.8 736.85 118.1 738.2 119.45 738.2 121.35 L738.2 157.35 755.95 157.35 Q757.85 157.35 759.15 158.7 760.5 160 760.5 161.9 L760.5 171.75 Q760.45 173.55 759.15 174.85 757.85 176.15 755.95 176.15 L722.35 176.15 Q720.45 176.15 719.15 174.85 717.85 173.55 717.8 171.75 M735.25 119.75 Q734.6 119.05 733.65 119.05 L722.35 119.05 Q721.4 119.05 720.75 119.75 720.1 120.4 720.1 121.35 L720.1 171.6 Q720.1 172.55 720.75 173.25 721.4 173.9 722.35 173.9 L755.95 173.9 Q756.9 173.9 757.6 173.25 758.2 172.55 758.2 171.6 L758.2 161.9 Q758.2 160.95 757.6 160.3 756.9 159.65 755.95 159.65 L735.9 159.65 735.9 121.35 Q735.9 120.4 735.25 119.75"/> + <path stroke="none" fill="#D5EDF7" d="M735.25 119.75 Q735.9 120.4 735.9 121.35 L735.9 159.65 755.95 159.65 Q756.9 159.65 757.6 160.3 758.2 160.95 758.2 161.9 L758.2 171.6 Q758.2 172.55 757.6 173.25 756.9 173.9 755.95 173.9 L722.35 173.9 Q721.4 173.9 720.75 173.25 720.1 172.55 720.1 171.6 L720.1 121.35 Q720.1 120.4 720.75 119.75 721.4 119.05 722.35 119.05 L733.65 119.05 Q734.6 119.05 735.25 119.75 M755.95 171.6 L755.95 161.9 733.65 161.9 733.65 121.35 722.35 121.35 722.35 171.6 755.95 171.6"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M760.5 171.75 L760.5 176.15 Q760.5 178.05 759.15 179.35 757.85 180.7 755.95 180.7 L722.35 180.7 Q720.45 180.7 719.15 179.35 717.8 178.05 717.8 176.15 L717.8 171.75 Q717.85 173.55 719.15 174.85 720.45 176.15 722.35 176.15 L755.95 176.15 Q757.85 176.15 759.15 174.85 760.45 173.55 760.5 171.75"/> + <path stroke="none" fill="#ACDCEE" d="M755.95 171.6 L722.35 171.6 722.35 121.35 733.65 121.35 733.65 161.9 755.95 161.9 755.95 171.6"/> + <path stroke="none" fill="#5DA3BD" d="M682.85 146.45 L688.9 153.3 689.1 153.5 Q694.95 160.6 700.25 169.25 701.15 170.65 700.9 172.35 L700.3 173.9 699.35 175.05 699.35 175.1 Q698.05 176.15 696.4 176.15 L682.9 176.15 Q681.7 176.15 680.7 175.55 L680.75 175.6 Q679.65 175 679.05 174 L679.05 173.95 675.8 169.05 675.7 168.95 671.55 163.65 671.45 163.5 671.4 163.5 669.15 160.9 669.15 165.45 669.15 171.75 Q669.1 173.55 667.8 174.85 666.5 176.15 664.6 176.15 L653.3 176.15 Q651.4 176.15 650.05 174.85 648.8 173.55 648.75 171.75 L648.75 121.35 Q648.75 119.45 650.05 118.1 651.4 116.8 653.3 116.8 L664.6 116.8 Q666.5 116.8 667.8 118.1 669.15 119.45 669.15 121.35 L669.15 128.65 670.05 127.6 678.4 118.3 Q679.05 117.6 679.95 117.2 L681.8 116.8 695.25 116.8 Q697 116.8 698.35 118.05 L698.4 118.05 Q699.65 119.3 699.8 121.05 L699.8 121.1 Q699.85 122.45 699.2 123.6 L698.7 124.3 688.25 136.15 688.2 136.2 688.2 136.25 680.6 144.25 682.85 146.45 M696.8 119.7 Q696.15 119.05 695.25 119.05 L681.8 119.05 680.9 119.25 Q680.45 119.45 680.15 119.85 L671.75 129.1 669.15 132.05 666.85 134.55 666.85 121.35 Q666.85 120.4 666.2 119.75 665.55 119.05 664.6 119.05 L653.3 119.05 Q652.35 119.05 651.7 119.75 651 120.4 651 121.35 L651 171.6 Q651 172.55 651.7 173.25 652.35 173.9 653.3 173.9 L664.6 173.9 Q665.55 173.9 666.2 173.25 666.85 172.55 666.85 171.6 L666.85 155.3 668.2 156.6 668.25 156.65 673.15 162.05 677.5 167.55 677.55 167.6 681 172.8 681.85 173.6 682.9 173.9 696.4 173.9 Q697.2 173.9 697.85 173.35 698.5 172.8 698.65 172 L698.65 171.2 698.3 170.45 Q693.1 161.95 687.4 155 684.4 151.25 681.25 148.1 L677.3 144.35 686.55 134.65 686.6 134.65 697 122.8 697.45 121.9 697.5 121.2 Q697.5 120.3 696.8 119.7"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M699.2 123.6 Q699.7 124.5 699.8 125.6 L699.8 125.65 Q699.85 127.4 698.7 128.8 L688.25 140.7 688.2 140.75 688.2 140.8 682.85 146.45 680.6 144.25 688.2 136.25 688.2 136.2 688.25 136.15 698.7 124.3 699.2 123.6 M700.3 173.9 Q701.15 175.3 700.9 176.85 700.6 178.5 699.35 179.6 L699.35 179.65 Q698.05 180.7 696.4 180.7 L682.9 180.7 Q681.7 180.7 680.7 180.1 L680.75 180.1 Q679.65 179.5 679.05 178.55 L679.05 178.5 675.8 173.6 675.7 173.45 671.55 168.2 671.55 168.15 671.45 168.05 671.4 168 669.15 165.45 669.15 160.9 671.4 163.5 671.45 163.5 671.55 163.65 675.7 168.95 675.8 169.05 679.05 173.95 679.05 174 Q679.65 175 680.75 175.6 L680.7 175.55 Q681.7 176.15 682.9 176.15 L696.4 176.15 Q698.05 176.15 699.35 175.1 L699.35 175.05 700.3 173.9 M669.15 171.75 L669.15 176.15 Q669.15 178.05 667.8 179.35 666.5 180.7 664.6 180.7 L653.3 180.7 Q651.4 180.7 650.05 179.35 648.75 178.05 648.75 176.15 L648.75 171.75 Q648.8 173.55 650.05 174.85 651.4 176.15 653.3 176.15 L664.6 176.15 Q666.5 176.15 667.8 174.85 669.1 173.55 669.15 171.75"/> + <path stroke="none" fill="#D5EDF7" d="M696.8 119.7 Q697.5 120.3 697.5 121.2 L697.45 121.9 697 122.8 686.6 134.65 686.55 134.65 677.3 144.35 681.25 148.1 Q684.4 151.25 687.4 155 693.1 161.95 698.3 170.45 L698.65 171.2 698.65 172 Q698.5 172.8 697.85 173.35 697.2 173.9 696.4 173.9 L682.9 173.9 681.85 173.6 681 172.8 677.55 167.6 677.5 167.55 673.15 162.05 668.25 156.65 668.2 156.6 666.85 155.3 666.85 171.6 Q666.85 172.55 666.2 173.25 665.55 173.9 664.6 173.9 L653.3 173.9 Q652.35 173.9 651.7 173.25 651 172.55 651 171.6 L651 121.35 Q651 120.4 651.7 119.75 652.35 119.05 653.3 119.05 L664.6 119.05 Q665.55 119.05 666.2 119.75 666.85 120.4 666.85 121.35 L666.85 134.55 669.15 132.05 671.75 129.1 680.15 119.85 Q680.45 119.45 680.9 119.25 L681.8 119.05 695.25 119.05 Q696.15 119.05 696.8 119.7 M664.6 121.35 L653.3 121.35 653.3 171.6 664.6 171.6 664.6 150.35 669.85 155 674.85 160.55 679.35 166.25 682.9 171.6 696.4 171.6 Q691.25 163.25 685.6 156.4 680 149.45 673.95 144.45 L684.9 133.1 695.25 121.35 681.8 121.35 673.45 130.65 664.6 140.3 664.6 121.35"/> + <path stroke="none" fill="#ACDCEE" d="M664.6 121.35 L664.6 140.3 673.45 130.65 681.8 121.35 695.25 121.35 684.9 133.1 673.95 144.45 Q680 149.45 685.6 156.4 691.25 163.25 696.4 171.6 L682.9 171.6 679.35 166.25 674.85 160.55 669.85 155 664.6 150.35 664.6 171.6 653.3 171.6 653.3 121.35 664.6 121.35"/> + <path stroke="none" fill="#5DA3BD" d="M590.65 170.4 L590.25 169.4 Q589.8 167.8 590.45 166.35 L594.2 157.6 Q594.75 156.35 595.85 155.6 596.95 154.85 598.25 154.8 599.55 154.8 600.75 155.45 L604.55 157.3 604.8 157.45 608.1 157.9 610.65 157.4 Q611.3 156.2 611.35 153.9 L611.35 120.85 Q611.35 118.95 612.65 117.6 614 116.3 615.9 116.3 L627.2 116.3 Q629.1 116.3 630.4 117.6 631.7 118.95 631.7 120.85 L631.7 155.1 Q631.6 158.85 630.75 162.25 629.65 166.6 626.95 169.8 L626.9 169.85 626.85 169.95 626.8 170 Q624.15 173 619.8 174.85 L619.6 174.95 Q615.4 176.65 608.95 176.65 603.2 176.65 599 175.25 L598.7 175.1 Q594.7 173.7 592.05 171.85 L592.05 171.9 Q591.15 171.25 590.65 170.4 M614.3 119.25 Q613.6 119.9 613.6 120.85 L613.6 153.6 Q613.6 157.3 612.35 158.95 L611.25 159.65 608.1 160.2 Q605.75 160.2 603.7 159.45 601.5 158.55 599.55 157.45 599 157.05 598.35 157.1 597.65 157.15 597.15 157.5 596.55 157.85 596.3 158.5 L592.5 167.25 Q592.2 167.95 592.45 168.75 592.65 169.55 593.35 170 595.9 171.75 599.75 173.1 603.65 174.4 608.95 174.4 614.85 174.4 618.7 172.85 L618.75 172.85 Q622.8 171.2 625.2 168.35 627.6 165.5 628.55 161.75 629.45 158.2 629.45 154.2 L629.45 120.85 Q629.45 119.9 628.8 119.25 628.15 118.55 627.2 118.55 L615.9 118.55 Q614.95 118.55 614.3 119.25"/> + <path stroke="none" fill="#D5EDF7" d="M614.3 119.25 Q614.95 118.55 615.9 118.55 L627.2 118.55 Q628.15 118.55 628.8 119.25 629.45 119.9 629.45 120.85 L629.45 154.2 Q629.45 158.2 628.55 161.75 627.6 165.5 625.2 168.35 622.8 171.2 618.75 172.85 L618.7 172.85 Q614.85 174.4 608.95 174.4 603.65 174.4 599.75 173.1 595.9 171.75 593.35 170 592.65 169.55 592.45 168.75 592.2 167.95 592.5 167.25 L596.3 158.5 Q596.55 157.85 597.15 157.5 597.65 157.15 598.35 157.1 599 157.05 599.55 157.45 601.5 158.55 603.7 159.45 605.75 160.2 608.1 160.2 L611.25 159.65 612.35 158.95 Q613.6 157.3 613.6 153.6 L613.6 120.85 Q613.6 119.9 614.3 119.25 M627.2 120.85 L615.9 120.85 615.9 153.6 Q615.9 158.4 614.05 160.45 612.35 162.35 608.5 162.45 L608.1 162.45 607.25 162.45 Q604.9 162.3 602.9 161.55 600.45 160.6 598.4 159.35 L594.6 168.15 Q596.95 169.7 600.45 170.9 604.05 172.15 608.95 172.15 614.35 172.15 617.9 170.75 621.4 169.3 623.5 166.9 625.5 164.45 626.35 161.15 627.2 157.9 627.2 154.2 L627.2 120.85"/> + <path stroke="none" fill="#ACDCEE" d="M627.2 120.85 L627.2 154.2 Q627.2 157.9 626.35 161.15 625.5 164.45 623.5 166.9 621.4 169.3 617.9 170.75 614.35 172.15 608.95 172.15 604.05 172.15 600.45 170.9 596.95 169.7 594.6 168.15 L598.4 159.35 Q600.45 160.6 602.9 161.55 604.9 162.3 607.25 162.45 L608.1 162.45 608.5 162.45 Q612.35 162.35 614.05 160.45 615.9 158.4 615.9 153.6 L615.9 120.85 627.2 120.85"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M631.7 155.1 L631.7 158.75 Q631.7 163 630.75 166.8 629.65 171.15 626.95 174.35 L626.9 174.35 626.85 174.5 626.8 174.5 Q624.15 177.55 619.8 179.4 L619.6 179.5 618.2 180 Q614.35 181.2 608.95 181.2 603.7 181.2 599.8 180 L599 179.75 598.7 179.6 Q594.7 178.2 592.05 176.4 L592.05 176.45 Q590.7 175.5 590.25 173.95 589.8 172.35 590.45 170.9 L590.65 170.4 Q591.15 171.25 592.05 171.9 L592.05 171.85 Q594.7 173.7 598.7 175.1 L599 175.25 Q603.2 176.65 608.95 176.65 615.4 176.65 619.6 174.95 L619.8 174.85 Q624.15 173 626.8 170 L626.85 169.95 626.9 169.85 626.95 169.8 Q629.65 166.6 630.75 162.25 631.6 158.85 631.7 155.1"/> + <path stroke="none" fill="#5DA3BD" d="M488.25 171.85 L488.25 121.35 Q488.25 119.45 489.55 118.1 490.9 116.8 492.75 116.8 L504.05 116.8 Q505.95 116.8 507.3 118.1 508.6 119.45 508.6 121.35 L508.6 136 518.55 136 518.55 121.35 Q518.55 119.45 519.85 118.1 521.2 116.8 523.1 116.8 L534.4 116.8 Q536.3 116.8 537.6 118.1 538.9 119.45 538.9 121.35 L538.9 171.85 Q538.85 173.6 537.6 174.85 536.3 176.15 534.4 176.15 L523.1 176.15 Q521.2 176.15 519.85 174.85 518.6 173.55 518.55 171.75 L518.55 159.35 518.55 154.85 508.6 154.85 508.6 159.35 508.6 171.75 Q508.55 173.55 507.3 174.85 505.95 176.15 504.05 176.15 L492.75 176.15 Q490.9 176.15 489.55 174.85 488.3 173.6 488.25 171.85 M536 119.75 Q535.35 119.05 534.4 119.05 L523.1 119.05 Q522.15 119.05 521.5 119.75 520.8 120.4 520.8 121.35 L520.8 138.25 506.35 138.25 506.35 121.35 Q506.35 120.4 505.7 119.75 505 119.05 504.05 119.05 L492.75 119.05 Q491.8 119.05 491.2 119.75 490.5 120.4 490.5 121.35 L490.5 171.6 Q490.5 172.55 491.2 173.25 491.8 173.9 492.75 173.9 L504.05 173.9 Q505 173.9 505.7 173.25 506.35 172.55 506.35 171.6 L506.35 152.55 520.8 152.55 520.8 171.6 Q520.8 172.55 521.5 173.25 522.15 173.9 523.1 173.9 L534.4 173.9 Q535.35 173.9 536 173.25 536.65 172.55 536.65 171.6 L536.65 121.35 Q536.65 120.4 536 119.75"/> + <path stroke="none" fill="#D5EDF7" d="M536 119.75 Q536.65 120.4 536.65 121.35 L536.65 171.6 Q536.65 172.55 536 173.25 535.35 173.9 534.4 173.9 L523.1 173.9 Q522.15 173.9 521.5 173.25 520.8 172.55 520.8 171.6 L520.8 152.55 506.35 152.55 506.35 171.6 Q506.35 172.55 505.7 173.25 505 173.9 504.05 173.9 L492.75 173.9 Q491.8 173.9 491.2 173.25 490.5 172.55 490.5 171.6 L490.5 121.35 Q490.5 120.4 491.2 119.75 491.8 119.05 492.75 119.05 L504.05 119.05 Q505 119.05 505.7 119.75 506.35 120.4 506.35 121.35 L506.35 138.25 520.8 138.25 520.8 121.35 Q520.8 120.4 521.5 119.75 522.15 119.05 523.1 119.05 L534.4 119.05 Q535.35 119.05 536 119.75 M504.05 140.55 L504.05 121.35 492.75 121.35 492.75 171.6 504.05 171.6 504.05 150.3 523.1 150.3 523.1 171.6 534.4 171.6 534.4 121.35 523.1 121.35 523.1 140.55 504.05 140.55"/> + <path stroke="none" fill="#ACDCEE" d="M504.05 140.55 L523.1 140.55 523.1 121.35 534.4 121.35 534.4 171.6 523.1 171.6 523.1 150.3 504.05 150.3 504.05 171.6 492.75 171.6 492.75 121.35 504.05 121.35 504.05 140.55"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M538.9 171.85 L538.9 176.15 Q538.9 178.05 537.6 179.35 536.3 180.7 534.4 180.7 L523.1 180.7 Q521.2 180.7 519.85 179.35 518.55 178.05 518.55 176.15 L518.55 171.75 Q518.6 173.55 519.85 174.85 521.2 176.15 523.1 176.15 L534.4 176.15 Q536.3 176.15 537.6 174.85 538.85 173.6 538.9 171.85 M518.55 159.35 L508.6 159.35 508.6 154.85 518.55 154.85 518.55 159.35 M508.6 171.75 L508.6 176.15 Q508.6 178.05 507.3 179.35 505.95 180.7 504.05 180.7 L492.75 180.7 Q490.9 180.7 489.55 179.35 488.25 178.05 488.25 176.15 L488.25 171.85 Q488.3 173.6 489.55 174.85 490.9 176.15 492.75 176.15 L504.05 176.15 Q505.95 176.15 507.3 174.85 508.55 173.55 508.6 171.75"/> + <path stroke="none" fill="#5DA3BD" d="M421.05 148.85 L420.95 146.5 Q420.95 139.3 423.25 133.65 425.6 127.9 429.65 123.95 433.65 119.95 439.05 117.9 L439.25 117.75 Q444.6 115.75 450.65 115.75 L457.8 116.2 458.25 116.35 463.35 117.45 Q465.85 118.2 467.45 119 L467.4 119 467.55 119.1 Q469.2 119.85 469.95 120.4 L469.9 120.35 Q471.2 121.2 471.7 122.7 472.2 124.15 471.65 125.65 L471.35 126.45 468.4 134.7 468.4 134.75 Q467.95 136 466.9 136.8 465.85 137.6 464.55 137.75 L464.5 137.75 Q463.2 137.85 462 137.2 460.05 136.15 457.45 135.4 455.05 134.65 452.2 134.65 446.8 134.65 444.3 137.4 L444.3 137.45 444.25 137.45 444.2 137.55 444.15 137.6 Q441.8 140.9 441.8 146.5 L441.9 148.8 Q442.05 150.45 442.45 151.9 L442.45 152 Q443.05 153.95 444.15 155.4 L444.3 155.55 Q445.4 156.95 446.95 157.7 448.8 158.45 451.15 158.45 L452.2 158.45 452.2 145.15 Q452.2 143.25 453.55 141.95 454.85 140.6 456.75 140.6 L459.5 140.6 467.7 140.6 468.1 140.6 Q470 140.6 471.3 141.95 472.65 143.25 472.65 145.15 L472.65 170.15 Q472.6 171.5 471.85 172.6 L471.85 172.65 Q471 173.8 469.7 174.3 L469.75 174.3 Q467.5 175.2 462.45 176.2 L450.5 177.2 Q444.1 177.2 438.9 175.25 L438.6 175.15 Q433 173.05 429.1 169 425.1 165 423 159.2 421.3 154.55 421.05 148.85 M462.7 119.65 L457.45 118.5 450.65 118 Q445.05 118 440.1 119.9 435 121.8 431.25 125.55 428.2 128.55 426.25 132.6 L425.4 134.5 Q423.25 139.75 423.25 146.5 423.25 153.15 425.15 158.45 427.1 163.75 430.7 167.4 L430.75 167.4 Q434.3 171.1 439.4 173.05 L439.4 173 Q444.35 174.95 450.5 174.95 L462 174 468.95 172.15 470 171.35 Q470.35 170.75 470.35 170.05 L470.35 145.15 Q470.35 144.2 469.7 143.55 469.05 142.85 468.1 142.85 L456.75 142.85 Q455.8 142.85 455.15 143.55 454.5 144.2 454.5 145.15 L454.5 160.65 454.35 160.65 452.2 160.7 451.15 160.7 Q448.2 160.7 446 159.75 444.05 158.85 442.7 157.25 L442.5 157 Q441.05 155.15 440.3 152.6 L440.3 152.65 Q439.5 149.9 439.5 146.5 439.5 139.8 442.6 135.95 445.55 132.4 452.2 132.4 455.4 132.4 458.1 133.25 460.9 134.05 463.05 135.2 L464.3 135.45 465.55 135 466.3 133.95 469.55 124.9 469.6 124.7 Q469.75 124.05 469.55 123.4 469.3 122.65 468.65 122.25 468 121.8 466.5 121.1 L466.45 121.05 Q464.95 120.3 462.7 119.65"/> + <path stroke="none" fill="#D5EDF7" d="M462.7 119.65 Q464.95 120.3 466.45 121.05 L466.5 121.1 Q468 121.8 468.65 122.25 469.3 122.65 469.55 123.4 469.75 124.05 469.6 124.7 L469.55 124.9 466.3 133.95 465.55 135 464.3 135.45 463.05 135.2 Q460.9 134.05 458.1 133.25 455.4 132.4 452.2 132.4 445.55 132.4 442.6 135.95 439.5 139.8 439.5 146.5 439.5 149.9 440.3 152.65 L440.3 152.6 Q441.05 155.15 442.5 157 L442.7 157.25 Q444.05 158.85 446 159.75 448.2 160.7 451.15 160.7 L452.2 160.7 454.35 160.65 454.5 160.65 454.5 145.15 Q454.5 144.2 455.15 143.55 455.8 142.85 456.75 142.85 L468.1 142.85 Q469.05 142.85 469.7 143.55 470.35 144.2 470.35 145.15 L470.35 170.05 Q470.35 170.75 470 171.35 L468.95 172.15 462 174 450.5 174.95 Q444.35 174.95 439.4 173 L439.4 173.05 Q434.3 171.1 430.75 167.4 L430.7 167.4 Q427.1 163.75 425.15 158.45 423.25 153.15 423.25 146.5 423.25 139.75 425.4 134.5 L426.25 132.6 Q428.2 128.55 431.25 125.55 435 121.8 440.1 119.9 445.05 118 450.65 118 L457.45 118.5 462.7 119.65 M462.05 121.8 L457.1 120.7 454.05 120.4 450.65 120.25 450.5 120.25 446.75 120.55 Q443.7 120.95 440.9 122 436.25 123.75 432.85 127.15 429.45 130.5 427.45 135.35 425.5 140.2 425.5 146.5 425.5 152.75 427.25 157.65 429.05 162.5 432.35 165.8 435.6 169.2 440.2 170.9 444.8 172.65 450.5 172.65 L461.55 171.75 468.1 170.05 468.1 145.15 456.75 145.15 456.75 162.65 454.45 162.95 452.2 163 451.15 163 450.05 162.95 Q447.25 162.8 445.1 161.8 442.5 160.65 440.75 158.4 439 156.25 438.1 153.25 437.25 150.25 437.25 146.5 437.25 138.9 440.8 134.5 444.3 130.15 452.2 130.15 455.75 130.15 458.75 131.05 461.8 131.95 464.15 133.2 L467.4 124.1 465.45 123.1 Q464.15 122.4 462.05 121.8"/> + <path stroke="none" fill="#ACDCEE" d="M462.05 121.8 Q464.15 122.4 465.45 123.1 L467.4 124.1 464.15 133.2 Q461.8 131.95 458.75 131.05 455.75 130.15 452.2 130.15 444.3 130.15 440.8 134.5 437.25 138.9 437.25 146.5 437.25 150.25 438.1 153.25 439 156.25 440.75 158.4 442.5 160.65 445.1 161.8 447.25 162.8 450.05 162.95 L451.15 163 452.2 163 454.45 162.95 456.75 162.65 456.75 145.15 468.1 145.15 468.1 170.05 461.55 171.75 450.5 172.65 Q444.8 172.65 440.2 170.9 435.6 169.2 432.35 165.8 429.05 162.5 427.25 157.65 425.5 152.75 425.5 146.5 425.5 140.2 427.45 135.35 429.45 130.5 432.85 127.15 436.25 123.75 440.9 122 443.7 120.95 446.75 120.55 L450.5 120.25 450.65 120.25 454.05 120.4 457.1 120.7 462.05 121.8"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M471.35 126.45 L471.7 127.2 Q472.2 128.7 471.65 130.2 L471.65 130.15 468.4 139.25 468.4 139.3 467.7 140.6 459.5 140.6 457.45 139.9 Q455.05 139.2 452.2 139.2 446.8 139.2 444.3 141.95 L444.25 142 444.2 142.1 444.15 142.1 Q442.3 144.75 441.9 148.8 L441.8 146.5 Q441.8 140.9 444.15 137.6 L444.2 137.55 444.25 137.45 444.3 137.45 444.3 137.4 Q446.8 134.65 452.2 134.65 455.05 134.65 457.45 135.4 460.05 136.15 462 137.2 463.2 137.85 464.5 137.75 L464.55 137.75 Q465.85 137.6 466.9 136.8 467.95 136 468.4 134.75 L468.4 134.7 471.35 126.45 M472.65 170.15 L472.65 174.6 Q472.65 176 471.85 177.15 L471.85 177.2 Q471 178.35 469.7 178.8 L469.75 178.8 Q467.5 179.75 462.45 180.75 L450.5 181.75 Q444.1 181.75 438.9 179.75 L438.6 179.7 Q433 177.6 429.1 173.55 425.1 169.5 423 163.75 420.95 158.15 420.95 151.05 L421.05 148.85 Q421.3 154.55 423 159.2 425.1 165 429.1 169 433 173.05 438.6 175.15 L438.9 175.25 Q444.1 177.2 450.5 177.2 L462.45 176.2 Q467.5 175.2 469.75 174.3 L469.7 174.3 Q471 173.8 471.85 172.65 L471.85 172.6 Q472.6 171.5 472.65 170.15"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M405.65 130.95 L405.65 135.35 Q405.65 137.25 404.3 138.55 L402.85 139.6 401.85 138.1 Q400.55 136.8 398.65 136.8 L383.3 136.8 383.3 135.35 401.1 135.35 Q403 135.35 404.3 134.05 405.6 132.75 405.65 130.95 M403.2 150.95 L403.2 155.4 Q403.2 157.3 401.85 158.6 400.55 159.95 398.65 159.95 L383.3 159.95 383.3 155.4 398.65 155.4 Q400.55 155.4 401.85 154.05 403.15 152.8 403.2 150.95 M383.3 171.75 L383.3 176.15 Q383.3 178.05 381.95 179.35 380.65 180.7 378.75 180.7 L367.45 180.7 Q365.55 180.7 364.25 179.35 362.9 178.05 362.9 176.15 L362.9 171.75 Q362.95 173.55 364.25 174.85 365.55 176.15 367.45 176.15 L378.75 176.15 Q380.65 176.15 381.95 174.85 383.25 173.55 383.3 171.75"/> + <path stroke="none" fill="#5DA3BD" d="M383.3 171.75 Q383.25 173.55 381.95 174.85 380.65 176.15 378.75 176.15 L367.45 176.15 Q365.55 176.15 364.25 174.85 362.95 173.55 362.9 171.75 L362.9 121.35 Q362.9 119.45 364.25 118.1 365.55 116.8 367.45 116.8 L401.1 116.8 Q403 116.8 404.3 118.1 405.65 119.45 405.65 121.35 L405.65 130.95 Q405.6 132.75 404.3 134.05 403 135.35 401.1 135.35 L383.3 135.35 383.3 136.8 398.65 136.8 Q400.55 136.8 401.85 138.1 L402.85 139.6 Q403.2 140.4 403.2 141.35 L403.2 150.95 Q403.15 152.8 401.85 154.05 400.55 155.4 398.65 155.4 L383.3 155.4 383.3 159.95 383.3 171.75 M367.45 119.05 Q366.5 119.05 365.85 119.75 365.2 120.4 365.2 121.35 L365.2 171.6 Q365.2 172.55 365.85 173.25 366.5 173.9 367.45 173.9 L378.75 173.9 Q379.7 173.9 380.4 173.25 381.05 172.55 381.05 171.6 L381.05 153.15 398.65 153.15 Q399.6 153.15 400.25 152.5 400.9 151.8 400.9 150.85 L400.9 141.35 Q400.9 140.5 400.4 139.9 L400.25 139.75 Q399.6 139.05 398.65 139.05 L381.05 139.05 381.05 133.1 401.1 133.1 Q402.05 133.1 402.7 132.45 403.35 131.75 403.35 130.85 L403.35 121.35 Q403.35 120.4 402.7 119.75 402.05 119.05 401.1 119.05 L367.45 119.05"/> + <path stroke="none" fill="#D5EDF7" d="M367.45 119.05 L401.1 119.05 Q402.05 119.05 402.7 119.75 403.35 120.4 403.35 121.35 L403.35 130.85 Q403.35 131.75 402.7 132.45 402.05 133.1 401.1 133.1 L381.05 133.1 381.05 139.05 398.65 139.05 Q399.6 139.05 400.25 139.75 L400.4 139.9 Q400.9 140.5 400.9 141.35 L400.9 150.85 Q400.9 151.8 400.25 152.5 399.6 153.15 398.65 153.15 L381.05 153.15 381.05 171.6 Q381.05 172.55 380.4 173.25 379.7 173.9 378.75 173.9 L367.45 173.9 Q366.5 173.9 365.85 173.25 365.2 172.55 365.2 171.6 L365.2 121.35 Q365.2 120.4 365.85 119.75 366.5 119.05 367.45 119.05 M378.75 141.35 L378.75 130.85 401.1 130.85 401.1 121.35 367.45 121.35 367.45 171.6 378.75 171.6 378.75 150.85 398.65 150.85 398.65 141.35 378.75 141.35"/> + <path stroke="none" fill="#ACDCEE" d="M378.75 141.35 L398.65 141.35 398.65 150.85 378.75 150.85 378.75 171.6 367.45 171.6 367.45 121.35 401.1 121.35 401.1 130.85 378.75 130.85 378.75 141.35"/> + <path stroke="none" fill="#5DA3BD" d="M230.7 171.1 L230.7 122 Q230.7 120.35 231.75 119.05 232.8 117.8 234.4 117.5 L243.1 116.45 250.7 116.2 Q257.7 116.2 263.5 117.75 L263.65 117.8 Q269.85 119.5 274.35 123.25 L274.5 123.4 Q278.85 127.1 281.3 132.75 L281.45 133 Q283.8 138.55 283.8 146.4 L283.8 148.65 Q283.45 154.85 281.45 159.55 L281.3 159.85 Q278.8 165.55 274.45 169.3 270 173.1 263.65 175 257.7 176.8 250.3 176.8 L242.95 176.55 234.35 175.45 Q232.75 175.1 231.75 173.85 230.75 172.65 230.7 171.1 M248.8 132.7 L248.95 132.7 251.25 132.7 Q258.65 132.7 262.1 136.05 265.35 139.6 265.35 146.4 265.35 152.65 262.2 156.4 L261.9 156.7 Q258.3 160.25 251.1 160.25 L250.9 160.25 248.8 160.25 248.8 132.7 M250.7 118.45 L243.25 118.75 234.8 119.75 Q234.05 119.9 233.5 120.55 232.95 121.15 232.95 122 L232.95 170.95 Q232.95 171.75 233.5 172.4 234 173.05 234.8 173.2 L243.1 174.25 250.3 174.5 Q257.3 174.5 263 172.85 268.85 171.1 272.95 167.6 277.05 164.1 279.35 158.7 L279.4 158.7 Q281.55 153.45 281.55 146.4 281.55 139.1 279.4 133.9 L279.35 133.9 278.85 132.8 Q276.65 128.1 272.95 125 L272.9 125 Q268.75 121.6 263 120 257.45 118.45 250.7 118.45 M262.95 148.6 L263.05 146.4 Q263.05 140.75 260.6 137.75 L260.5 137.65 Q257.5 134.95 251.25 134.95 L251.1 134.95 251.1 139.5 251.1 158 Q257.1 157.95 260.15 155.25 L260.25 155.15 Q262.5 152.6 262.95 148.6"/> + <path stroke="none" fill="#D5EDF7" d="M262.4 122.15 L256.85 121.05 250.7 120.75 250.65 120.75 250.5 120.75 244.4 120.9 243.35 121 235.25 122 235.25 170.95 243.2 172 250.3 172.25 Q257 172.25 262.4 170.65 267.7 169.1 271.5 165.85 275.2 162.7 277.25 157.8 279.3 153 279.3 146.4 279.3 139.6 277.25 134.75 275.2 129.9 271.45 126.75 267.65 123.65 262.4 122.15 M250.7 118.45 Q257.45 118.45 263 120 268.75 121.6 272.9 125 L272.95 125 Q276.65 128.1 278.85 132.8 L279.35 133.9 279.4 133.9 Q281.55 139.1 281.55 146.4 281.55 153.45 279.4 158.7 L279.35 158.7 Q277.05 164.1 272.95 167.6 268.85 171.1 263 172.85 257.3 174.5 250.3 174.5 L243.1 174.25 234.8 173.2 Q234 173.05 233.5 172.4 232.95 171.75 232.95 170.95 L232.95 122 Q232.95 121.15 233.5 120.55 234.05 119.9 234.8 119.75 L243.25 118.75 250.7 118.45 M248.8 132.7 L248.8 160.25 250.9 160.25 251.1 160.25 Q258.3 160.25 261.9 156.7 L262.2 156.4 Q265.35 152.65 265.35 146.4 265.35 139.6 262.1 136.05 258.65 132.7 251.25 132.7 L248.95 132.7 248.8 132.7 M246.55 130.6 L248.9 130.45 251.25 130.4 Q259.75 130.4 263.7 134.45 267.6 138.5 267.6 146.4 267.6 153.95 263.5 158.25 260 161.95 253.25 162.45 L251.1 162.55 250.9 162.55 248.45 162.5 246.55 162.4 246.55 130.6"/> + <path stroke="none" fill="#ACDCEE" d="M246.55 130.6 L246.55 162.4 248.45 162.5 250.9 162.55 251.1 162.55 253.25 162.45 Q260 161.95 263.5 158.25 267.6 153.95 267.6 146.4 267.6 138.5 263.7 134.45 259.75 130.4 251.25 130.4 L248.9 130.45 246.55 130.6 M262.4 122.15 Q267.65 123.65 271.45 126.75 275.2 129.9 277.25 134.75 279.3 139.6 279.3 146.4 279.3 153 277.25 157.8 275.2 162.7 271.5 165.85 267.7 169.1 262.4 170.65 257 172.25 250.3 172.25 L243.2 172 235.25 170.95 235.25 122 243.35 121 244.4 120.9 250.5 120.75 250.65 120.75 250.7 120.75 256.85 121.05 262.4 122.15"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M283.8 148.65 L283.8 150.95 Q283.8 158.55 281.45 164.1 L281.3 164.4 Q278.8 170.1 274.45 173.85 270 177.65 263.65 179.55 257.7 181.35 250.3 181.35 L242.95 181.05 234.35 179.95 Q232.75 179.65 231.75 178.4 230.7 177.15 230.7 175.5 L230.7 171.1 Q230.75 172.65 231.75 173.85 232.75 175.1 234.35 175.45 L242.95 176.55 250.3 176.8 Q257.7 176.8 263.65 175 270 173.1 274.45 169.3 278.8 165.55 281.3 159.85 L281.45 159.55 Q283.45 154.85 283.8 148.65 M251.1 139.5 L251.1 134.95 251.25 134.95 Q257.5 134.95 260.5 137.65 L260.6 137.75 Q263.05 140.75 263.05 146.4 L262.95 148.6 Q262.55 144.6 260.6 142.3 L260.5 142.2 Q257.5 139.5 251.25 139.5 L251.1 139.5"/> + <path stroke="none" fill="#5DA3BD" d="M15.95 173.8 L15.6 172.95 15.55 172.95 Q15.15 171.5 15.6 170.1 L15.6 170.15 21 155.05 21.15 154.75 26 141.9 26.05 141.9 Q28.45 135.8 30.8 130.4 L30.85 130.2 35.85 119.35 Q36.4 118.2 37.5 117.5 L37.55 117.5 Q38.65 116.8 39.95 116.8 L50.8 116.8 Q52.05 116.8 53.2 117.5 L53.15 117.5 Q54.25 118.2 54.8 119.35 L59.65 129.95 59.8 130.2 64.65 141.9 64.75 142.25 69.7 155.05 75.05 170.15 75.05 170.1 Q75.55 171.5 75.1 172.95 L74.75 173.85 Q74.3 174.65 73.5 175.25 L73.45 175.3 Q72.25 176.15 70.8 176.15 L58.65 176.15 Q57.15 176.15 55.9 175.25 54.7 174.3 54.3 172.85 L54.3 172.9 52.75 168.05 52.65 167.85 51.7 165.25 37.1 165.25 37.75 166.25 Q37.95 166.9 37.8 167.6 L37.75 167.7 35.95 173 36 173 Q35.55 174.4 34.35 175.3 33.15 176.15 31.65 176.15 L19.9 176.15 Q18.4 176.15 17.2 175.3 L17.2 175.25 Q16.4 174.65 15.95 173.8 M51.95 119.45 Q51.4 119.05 50.75 119.05 L39.95 119.05 Q39.3 119.05 38.7 119.4 38.15 119.75 37.9 120.35 L36.85 122.6 Q34.85 126.8 32.95 131.15 30.6 136.6 28.15 142.75 25.7 148.9 23.15 155.8 L23.15 155.85 17.8 170.85 Q17.5 171.55 17.75 172.3 L18.55 173.45 Q19.15 173.9 19.9 173.9 L31.65 173.9 33 173.45 Q33.6 173 33.8 172.3 L35.6 167 37 163 53.35 163 54.8 167.05 56.5 172.25 Q56.7 172.95 57.3 173.45 57.9 173.9 58.65 173.9 L70.8 173.9 72.15 173.45 Q72.75 172.95 72.95 172.3 73.15 171.55 72.95 170.85 L67.55 155.85 62.55 142.75 57.7 131.15 53.85 122.6 52.8 120.35 51.95 119.45 M45.15 139.1 L45.85 140.9 47.9 146.25 47.9 146.3 49.1 149.45 41.2 149.45 42.4 146.3 44.45 140.9 44.45 140.85 45.15 139.1 M45.7 146.8 L45.2 145.4 44.5 147.1 44.45 147.2 45.85 147.2 45.75 147.05 45.7 146.8"/> + <path stroke="none" fill="#D5EDF7" d="M51.95 119.45 L52.8 120.35 53.85 122.6 57.7 131.15 62.55 142.75 67.55 155.85 72.95 170.85 Q73.15 171.55 72.95 172.3 72.75 172.95 72.15 173.45 L70.8 173.9 58.65 173.9 Q57.9 173.9 57.3 173.45 56.7 172.95 56.5 172.25 L54.8 167.05 53.35 163 37 163 35.6 167 33.8 172.3 Q33.6 173 33 173.45 L31.65 173.9 19.9 173.9 Q19.15 173.9 18.55 173.45 L17.75 172.3 Q17.5 171.55 17.8 170.85 L23.15 155.85 23.15 155.8 Q25.7 148.9 28.15 142.75 30.6 136.6 32.95 131.15 34.85 126.8 36.85 122.6 L37.9 120.35 Q38.15 119.75 38.7 119.4 39.3 119.05 39.95 119.05 L50.75 119.05 Q51.4 119.05 51.95 119.45 M44 135.65 L45.05 132.7 46.25 135.65 47.95 140.05 50 145.5 52.3 151.75 37.95 151.75 40.25 145.5 42.3 140.05 44 135.65 M45.15 139.1 L44.45 140.85 44.45 140.9 42.4 146.3 41.2 149.45 49.1 149.45 47.9 146.3 47.9 146.25 45.85 140.9 45.15 139.1 M55.6 132.05 L50.75 121.35 39.95 121.35 Q37.4 126.55 35 132.05 L30.25 143.55 25.25 156.6 19.9 171.6 31.65 171.6 33.45 166.25 35.35 160.75 55 160.75 56.9 166.25 58.65 171.6 70.8 171.6 65.4 156.6 60.4 143.55 55.6 132.05"/> + <path stroke="none" fill="#ACDCEE" d="M55.6 132.05 L60.4 143.55 65.4 156.6 70.8 171.6 58.65 171.6 56.9 166.25 55 160.75 35.35 160.75 33.45 166.25 31.65 171.6 19.9 171.6 25.25 156.6 30.25 143.55 35 132.05 Q37.4 126.55 39.95 121.35 L50.75 121.35 55.6 132.05 M44 135.65 L42.3 140.05 40.25 145.5 37.95 151.75 52.3 151.75 50 145.5 47.95 140.05 46.25 135.65 45.05 132.7 44 135.65"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M74.75 173.85 L75.05 174.65 Q75.55 176.05 75.1 177.45 L75.1 177.5 Q74.65 178.9 73.5 179.8 L73.45 179.8 Q72.25 180.7 70.8 180.7 L58.65 180.7 Q57.15 180.7 55.9 179.8 54.7 178.85 54.3 177.4 L54.3 177.45 52.75 172.6 52.65 172.35 51.7 169.8 37.1 169.8 37.75 170.8 Q37.95 171.4 37.8 172.15 L37.75 172.25 35.95 177.55 36 177.5 36 177.55 Q35.55 178.95 34.35 179.8 33.15 180.7 31.65 180.7 L19.9 180.7 Q18.4 180.7 17.2 179.8 16 178.9 15.6 177.5 L15.55 177.45 Q15.15 176.05 15.6 174.65 L15.95 173.8 Q16.4 174.65 17.2 175.25 L17.2 175.3 Q18.4 176.15 19.9 176.15 L31.65 176.15 Q33.15 176.15 34.35 175.3 35.55 174.4 36 173 L36 172.95 35.95 173 37.75 167.7 37.8 167.6 Q37.95 166.9 37.75 166.25 L37.1 165.25 51.7 165.25 52.65 167.85 52.75 168.05 54.3 172.9 54.3 172.85 Q54.7 174.3 55.9 175.25 57.15 176.15 58.65 176.15 L70.8 176.15 Q72.25 176.15 73.45 175.3 L73.5 175.25 Q74.3 174.65 74.75 173.85 M45.7 146.8 L45.75 147.05 45.85 147.2 44.45 147.2 44.5 147.1 45.2 145.4 45.7 146.8"/> + <path stroke="none" fill="#000000" d="M36 173 L35.95 173 36 172.95 36 173"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M209.1 126.5 L209.4 127.2 209.4 127.15 Q209.95 128.65 209.4 130.2 L206.15 139.35 Q205.7 140.55 204.7 141.4 203.6 142.25 202.3 142.35 200.95 142.45 199.8 141.8 197.8 140.8 195.25 140.1 L195.05 140 189.45 139.35 186.2 139.85 185.85 140 Q184.3 140.55 183.15 141.7 L183.1 141.7 Q181.85 143 181.05 145.05 180.5 146.6 180.3 148.6 L180.2 146.3 Q180.2 142.9 181.05 140.55 181.85 138.45 183.1 137.15 L183.15 137.15 Q184.3 136 185.85 135.45 L186.2 135.3 189.45 134.85 195.05 135.45 195.25 135.55 Q197.8 136.25 199.8 137.3 200.95 137.95 202.3 137.8 203.6 137.7 204.7 136.85 205.7 136.05 206.15 134.8 L209.1 126.5 M209.85 171.15 L210.15 172 Q210.65 173.5 210.15 175.05 209.6 176.55 208.2 177.4 L208.25 177.4 Q205.45 179.1 200.3 180.5 195.45 181.8 189 181.8 174.55 181.8 167.1 173.55 L167.05 173.55 Q159.4 165.65 159.4 151.05 L159.45 148.9 Q160 161.8 167.05 169 L167.1 169.05 Q174.55 177.3 189 177.3 195.45 177.3 200.3 175.95 205.45 174.55 208.25 172.85 L208.2 172.85 Q209.25 172.2 209.85 171.15"/> + <path stroke="none" fill="#5DA3BD" d="M209.85 171.15 Q209.25 172.2 208.2 172.85 L208.25 172.85 Q205.45 174.55 200.3 175.95 195.45 177.3 189 177.3 174.55 177.3 167.1 169.05 L167.05 169 Q160 161.8 159.45 148.9 L159.4 146.5 Q159.4 139.35 161.7 133.7 164.05 127.9 168.05 123.95 172.2 119.85 177.8 117.8 L177.8 117.75 Q183.25 115.75 189.6 115.75 L196 116.25 196.05 116.25 196.25 116.25 201.3 117.5 Q203.7 118.2 205.2 119.05 L207.55 120.25 207.55 120.3 Q208.9 121.15 209.4 122.65 L209.4 122.6 Q209.95 124.15 209.4 125.65 L209.1 126.5 206.15 134.8 Q205.7 136.05 204.7 136.85 203.6 137.7 202.3 137.8 200.95 137.95 199.8 137.3 197.8 136.25 195.25 135.55 L195.05 135.45 189.45 134.85 186.2 135.3 185.85 135.45 Q184.3 136 183.15 137.15 L183.1 137.15 Q181.85 138.45 181.05 140.55 180.2 142.9 180.2 146.3 L180.3 148.6 180.85 151.55 180.9 151.7 Q181.4 153.75 182.45 155.25 L182.55 155.3 Q183.6 156.55 185.25 157.3 187.25 158.2 190.05 158.2 L193.8 157.9 194 157.9 196.8 157.35 196.75 157.35 198.75 156.7 200.9 155.75 Q202.1 155.2 203.35 155.4 204.6 155.6 205.6 156.35 L205.65 156.4 Q206.65 157.2 207.05 158.4 L207 158.4 210.15 167.5 Q210.65 168.95 210.15 170.5 L209.85 171.15 M180.7 156.6 Q179.25 154.8 178.7 152.25 L178.65 152.2 Q177.95 149.55 177.95 146.3 177.95 142.45 178.95 139.75 179.95 137.15 181.55 135.6 183.1 134 185.1 133.3 187.25 132.55 189.45 132.55 193.05 132.55 195.85 133.35 198.7 134.15 200.85 135.3 L202.1 135.55 203.3 135.1 204.05 134.05 207.3 124.9 207.4 124.7 Q207.55 124 207.3 123.35 207.05 122.6 206.35 122.2 L204.2 121.05 Q202.8 120.3 200.65 119.65 L195.8 118.5 189.6 118 Q183.7 118 178.6 119.9 173.45 121.8 169.65 125.55 166.65 128.5 164.7 132.55 L163.8 134.55 Q161.65 139.8 161.65 146.5 161.65 160.1 168.7 167.45 175.65 175 189 175 195.1 175 199.75 173.75 204.45 172.5 207.05 170.95 L208.05 169.75 Q208.3 168.95 208.05 168.25 L204.9 159.15 204.15 158.15 Q203.7 157.75 203.05 157.65 L201.85 157.8 199.7 158.8 197.35 159.55 194.2 160.2 194.15 160.2 190.05 160.45 Q186.65 160.45 184.35 159.4 182.45 158.55 181.15 157.2 L180.65 156.65 180.7 156.6"/> + <path stroke="none" fill="#D5EDF7" d="M180.7 156.6 L180.65 156.6 180.65 156.65 181.15 157.2 Q182.45 158.55 184.35 159.4 186.65 160.45 190.05 160.45 L194.15 160.2 194.2 160.2 197.35 159.55 199.7 158.8 201.85 157.8 203.05 157.65 Q203.7 157.75 204.15 158.15 L204.9 159.15 208.05 168.25 Q208.3 168.95 208.05 169.75 L207.05 170.95 Q204.45 172.5 199.75 173.75 195.1 175 189 175 175.65 175 168.7 167.45 161.65 160.1 161.65 146.5 161.65 139.8 163.8 134.55 L164.7 132.55 Q166.65 128.5 169.65 125.55 173.45 121.8 178.6 119.9 183.7 118 189.6 118 L195.8 118.5 200.65 119.65 Q202.8 120.3 204.2 121.05 L206.35 122.2 Q207.05 122.6 207.3 123.35 207.55 124 207.4 124.7 L207.3 124.9 204.05 134.05 203.3 135.1 202.1 135.55 200.85 135.3 Q198.7 134.15 195.85 133.35 193.05 132.55 189.45 132.55 187.25 132.55 185.1 133.3 183.1 134 181.55 135.6 179.95 137.15 178.95 139.75 177.95 142.45 177.95 146.3 177.95 149.55 178.65 152.2 L178.7 152.25 Q179.25 154.8 180.7 156.6 M205.15 124.15 L203.25 123.1 Q202 122.45 199.95 121.8 L195.4 120.75 194.1 120.55 189.6 120.25 189.4 120.25 185.45 120.55 Q182.3 120.95 179.35 122 174.7 123.75 171.25 127.15 167.85 130.5 165.9 135.4 163.9 140.25 163.9 146.5 163.9 159.1 170.35 165.9 176.75 172.75 189 172.75 194.75 172.75 199.15 171.55 203.5 170.4 205.85 168.95 L202.75 159.9 200.65 160.85 197.95 161.75 194.5 162.4 192.05 162.7 190.05 162.7 190 162.7 188.65 162.7 Q185.55 162.5 183.35 161.45 180.6 160.15 178.9 158 177.2 155.8 176.45 152.8 175.65 149.85 175.65 146.3 175.65 141.95 176.85 138.9 178 135.85 179.9 133.95 181.85 132.05 184.35 131.15 186.85 130.3 189.45 130.3 193.4 130.3 196.45 131.15 199.55 132.05 201.9 133.3 L205.15 124.15"/> + <path stroke="none" fill="#ACDCEE" d="M205.15 124.15 L201.9 133.3 Q199.55 132.05 196.45 131.15 193.4 130.3 189.45 130.3 186.85 130.3 184.35 131.15 181.85 132.05 179.9 133.95 178 135.85 176.85 138.9 175.65 141.95 175.65 146.3 175.65 149.85 176.45 152.8 177.2 155.8 178.9 158 180.6 160.15 183.35 161.45 185.55 162.5 188.65 162.7 L190 162.7 190.05 162.7 192.05 162.7 194.5 162.4 197.95 161.75 200.65 160.85 202.75 159.9 205.85 168.95 Q203.5 170.4 199.15 171.55 194.75 172.75 189 172.75 176.75 172.75 170.35 165.9 163.9 159.1 163.9 146.5 163.9 140.25 165.9 135.4 167.85 130.5 171.25 127.15 174.7 123.75 179.35 122 182.3 120.95 185.45 120.55 L189.4 120.25 189.6 120.25 194.1 120.55 195.4 120.75 199.95 121.8 Q202 122.45 203.25 123.1 L205.15 124.15"/> + <path stroke="none" fill="#000000" d="M180.7 156.6 L180.65 156.65 180.65 156.6 180.7 156.6"/> + <path stroke="none" fill="#5DA3BD" d="M132.9 127 L132.9 127.05 Q131 123.75 127.55 121.8 124.3 119.95 119.85 119.25 L119.9 119.25 110.7 118.45 102.8 118.8 95 119.8 Q94.15 119.95 93.65 120.6 93.1 121.2 93.1 122.05 L93.1 170.8 Q93.1 171.6 93.6 172.25 94.1 172.85 94.9 173 L103.75 174.25 112.1 174.55 Q124.35 174.55 130.55 170.2 137.35 165.55 137.35 156.4 137.35 152.85 136.1 149.8 L135.35 148.2 134.9 147.5 Q133.6 145.45 131.1 144 134.85 140.3 134.85 134.9 134.85 131.45 133.8 128.85 L132.9 127 M136.1 145.25 L137.35 147.15 137.45 147.35 Q139.55 151.4 139.6 156.4 L139.5 158.85 Q138.65 167.45 131.85 172.05 125.25 176.8 112.1 176.8 L103.6 176.55 94.4 175.2 Q92.85 174.85 91.85 173.65 L91.8 173.6 Q90.9 172.45 90.85 171 L90.85 122.05 Q90.85 120.35 91.9 119.1 92.95 117.85 94.6 117.55 L102.6 116.55 110.7 116.2 120.3 117 120.5 117.05 Q125.25 117.85 128.7 119.85 132.65 122.1 134.85 125.9 137.1 129.5 137.1 134.9 L137 137.05 Q136.55 140.7 134.45 143.6 L136.1 145.25 M108.65 138.8 L108.65 132.25 109.45 132.2 112.5 132.15 Q116.3 132.15 118.3 133.15 119.35 133.8 119.35 135.4 119.35 137.05 118.25 137.8 L118.2 137.8 Q116.3 138.8 111.95 138.8 L108.65 138.8 M110.9 136.55 L111.95 136.55 Q115.35 136.55 117 135.8 L117.05 135.4 117.05 135.05 112.5 134.45 110.9 134.45 110.9 136.55 M113.5 152 Q117.6 152 119.9 153.15 L119.95 153.15 Q121.35 154.1 121.35 156.15 121.35 158.55 119.55 159.5 L118.85 159.75 Q116.2 160.7 112.25 160.7 L110.9 160.7 109.2 160.6 109.15 160.6 108.65 160.6 108.65 152 113.5 152 M110.9 158.45 L112.25 158.45 Q116.05 158.45 118.45 157.45 119.05 157.05 119.05 156.15 L118.75 155.1 Q116.85 154.25 113.5 154.25 L110.9 154.25 110.9 158.45"/> + <path stroke="none" fill="#D5EDF7" d="M132.9 127 L133.8 128.85 Q134.85 131.45 134.85 134.9 134.85 140.3 131.1 144 133.6 145.45 134.9 147.5 L135.35 148.2 136.1 149.8 Q137.35 152.85 137.35 156.4 137.35 165.55 130.55 170.2 124.35 174.55 112.1 174.55 L103.75 174.25 94.9 173 Q94.1 172.85 93.6 172.25 93.1 171.6 93.1 170.8 L93.1 122.05 Q93.1 121.2 93.65 120.6 94.15 119.95 95 119.8 L102.8 118.8 110.7 118.45 119.9 119.25 119.85 119.25 Q124.3 119.95 127.55 121.8 131 123.75 132.9 127.05 L132.9 127 M130.95 128.2 Q129.3 125.45 126.4 123.75 123.5 122.1 119.5 121.45 L116.45 121.05 111 120.75 110.7 120.75 105 120.95 102.95 121.1 95.35 122.05 95.35 170.8 103.9 172 112.1 172.25 Q123.5 172.25 129.3 168.3 135.05 164.3 135.05 156.4 135.05 152.45 133.35 149.3 131.6 146.2 126.8 144.4 132.55 140.95 132.55 134.9 132.55 130.9 130.95 128.2 M106.35 141.1 L106.35 130.1 109.35 129.95 112.5 129.9 Q117 129.9 119.35 131.1 121.6 132.35 121.6 135.4 121.6 138.4 119.4 139.7 117.65 140.75 114.25 141 L111.95 141.1 106.35 141.1 M108.65 138.8 L111.95 138.8 Q116.3 138.8 118.2 137.8 L118.25 137.8 Q119.35 137.05 119.35 135.4 119.35 133.8 118.3 133.15 116.3 132.15 112.5 132.15 L109.45 132.2 108.65 132.25 108.65 138.8 M113.5 152 L108.65 152 108.65 160.6 109.15 160.6 109.2 160.6 110.9 160.7 112.25 160.7 Q116.2 160.7 118.85 159.75 L119.55 159.5 Q121.35 158.55 121.35 156.15 121.35 154.1 119.95 153.15 L119.9 153.15 Q117.6 152 113.5 152 M113.5 149.75 Q118.35 149.75 121 151.15 123.6 152.65 123.6 156.15 123.6 160.05 120.45 161.55 117.95 162.7 114.15 162.95 L112.4 162.95 112.25 162.95 111.6 162.95 110.9 162.95 109.1 162.9 106.35 162.7 106.35 149.75 113.5 149.75"/> + <path stroke="none" fill="#ACDCEE" d="M113.5 149.75 L106.35 149.75 106.35 162.7 109.1 162.9 110.9 162.95 111.6 162.95 112.25 162.95 112.4 162.95 114.15 162.95 Q117.95 162.7 120.45 161.55 123.6 160.05 123.6 156.15 123.6 152.65 121 151.15 118.35 149.75 113.5 149.75 M130.95 128.2 Q132.55 130.9 132.55 134.9 132.55 140.95 126.8 144.4 131.6 146.2 133.35 149.3 135.05 152.45 135.05 156.4 135.05 164.3 129.3 168.3 123.5 172.25 112.1 172.25 L103.9 172 95.35 170.8 95.35 122.05 102.95 121.1 105 120.95 110.7 120.75 111 120.75 116.45 121.05 119.5 121.45 Q123.5 122.1 126.4 123.75 129.3 125.45 130.95 128.2 M106.35 141.1 L111.95 141.1 114.25 141 Q117.65 140.75 119.4 139.7 121.6 138.4 121.6 135.4 121.6 132.35 119.35 131.1 117 129.9 112.5 129.9 L109.35 129.95 106.35 130.1 106.35 141.1"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M137 137.05 L137.1 139.45 Q137.15 142.6 136.1 145.25 L134.45 143.6 Q136.55 140.7 137 137.05 M139.5 158.85 L139.6 160.9 Q139.6 171.35 131.85 176.55 125.25 181.35 112.1 181.35 L103.6 181.05 94.4 179.75 Q92.85 179.4 91.85 178.2 L91.8 178.15 Q90.85 176.9 90.85 175.35 L90.85 171 Q90.9 172.45 91.8 173.6 L91.85 173.65 Q92.85 174.85 94.4 175.2 L103.6 176.55 112.1 176.8 Q125.25 176.8 131.85 172.05 138.65 167.45 139.5 158.85 M110.9 136.55 L110.9 134.45 112.5 134.45 117.05 135.05 117.05 135.4 117 135.8 Q115.35 136.55 111.95 136.55 L110.9 136.55 M110.9 158.45 L110.9 154.25 113.5 154.25 Q116.85 154.25 118.75 155.1 L119.05 156.15 Q119.05 157.05 118.45 157.45 116.05 158.45 112.25 158.45 L110.9 158.45"/> + <path stroke="none" fill="#D5EDF7" d="M133.65 210.15 Q131.7 205.25 128.3 201.9 124.85 198.6 120.3 196.9 117.5 195.9 114.45 195.5 L110.75 195.25 110.6 195.25 110.45 195.25 106.8 195.5 Q103.85 195.9 101.05 196.9 96.5 198.6 93.05 201.9 89.6 205.25 87.6 210.15 85.55 215.05 85.55 221.5 85.55 228 87.5 232.85 89.5 237.8 92.9 241.05 96.35 244.35 100.9 246.05 105.5 247.7 110.6 247.7 115.85 247.7 120.5 246.05 125.15 244.35 128.45 241.05 131.8 237.8 133.7 232.85 135.65 228 135.65 221.5 135.65 215.05 133.65 210.15 M134.9 207.4 L135.8 209.3 Q137.9 214.55 137.9 221.5 137.9 228.5 135.85 233.7 133.7 239.05 130.05 242.7 126.4 246.35 121.3 248.2 116.3 250 110.6 250 105.05 250 100.15 248.2 L100.1 248.2 Q95.1 246.35 91.35 242.75 L91.35 242.7 Q87.6 239.1 85.45 233.75 83.3 228.5 83.3 221.5 83.3 214.55 85.5 209.3 L86.3 207.5 Q88.3 203.3 91.45 200.3 L91.5 200.3 Q95.3 196.6 100.3 194.8 105.15 193 110.6 193 116.15 193 121.1 194.8 126.1 196.6 129.9 200.3 132.9 203.3 134.9 207.4 M123.95 221.5 Q123.95 225.25 123.05 228.2 122.15 231.15 120.4 233.3 118.7 235.5 116.25 236.6 114 237.65 111.35 237.8 L110.6 237.8 109.8 237.8 Q107.1 237.65 104.9 236.6 102.5 235.5 100.75 233.3 99.05 231.15 98.15 228.2 97.25 225.25 97.25 221.5 97.25 217.9 98.15 214.9 99.05 211.85 100.75 209.75 102.5 207.6 104.9 206.35 107.4 205.2 110.6 205.2 113.7 205.2 116.25 206.35 118.7 207.5 120.4 209.6 122.15 211.8 123.05 214.8 123.95 217.8 123.95 221.5 M102.55 211.15 Q101.1 212.95 100.35 215.5 99.5 218.25 99.5 221.5 99.5 224.85 100.35 227.6 101.1 230.05 102.55 231.9 L102.75 232.2 Q104.1 233.75 105.9 234.55 107.95 235.5 110.6 235.5 113.2 235.5 115.3 234.55 117.15 233.7 118.5 232.1 L118.65 231.9 Q120.1 230.05 120.9 227.6 121.7 224.85 121.7 221.5 121.7 218.15 120.9 215.45 L120.9 215.5 Q120.1 212.9 118.65 211.05 117.3 209.35 115.35 208.4 L115.25 208.35 Q113.15 207.45 110.6 207.45 107.95 207.45 105.9 208.45 L105.95 208.4 Q103.95 209.4 102.55 211.15"/> + <path stroke="none" fill="#ACDCEE" d="M133.65 210.15 Q135.65 215.05 135.65 221.5 135.65 228 133.7 232.85 131.8 237.8 128.45 241.05 125.15 244.35 120.5 246.05 115.85 247.7 110.6 247.7 105.5 247.7 100.9 246.05 96.35 244.35 92.9 241.05 89.5 237.8 87.5 232.85 85.55 228 85.55 221.5 85.55 215.05 87.6 210.15 89.6 205.25 93.05 201.9 96.5 198.6 101.05 196.9 103.85 195.9 106.8 195.5 L110.45 195.25 110.6 195.25 110.75 195.25 114.45 195.5 Q117.5 195.9 120.3 196.9 124.85 198.6 128.3 201.9 131.7 205.25 133.65 210.15 M123.95 221.5 Q123.95 217.8 123.05 214.8 122.15 211.8 120.4 209.6 118.7 207.5 116.25 206.35 113.7 205.2 110.6 205.2 107.4 205.2 104.9 206.35 102.5 207.6 100.75 209.75 99.05 211.85 98.15 214.9 97.25 217.9 97.25 221.5 97.25 225.25 98.15 228.2 99.05 231.15 100.75 233.3 102.5 235.5 104.9 236.6 107.1 237.65 109.8 237.8 L110.6 237.8 111.35 237.8 Q114 237.65 116.25 236.6 118.7 235.5 120.4 233.3 122.15 231.15 123.05 228.2 123.95 225.25 123.95 221.5"/> + <path stroke="none" fill="#5DA3BD" d="M134.9 207.4 Q132.9 203.3 129.9 200.3 126.1 196.6 121.1 194.8 116.15 193 110.6 193 105.15 193 100.3 194.8 95.3 196.6 91.5 200.3 L91.45 200.3 Q88.3 203.3 86.3 207.5 L85.5 209.3 Q83.3 214.55 83.3 221.5 83.3 228.5 85.45 233.75 87.6 239.1 91.35 242.7 L91.35 242.75 Q95.1 246.35 100.1 248.2 L100.15 248.2 Q105.05 250 110.6 250 116.3 250 121.3 248.2 126.4 246.35 130.05 242.7 133.7 239.05 135.85 233.7 137.9 228.5 137.9 221.5 137.9 214.55 135.8 209.3 L134.9 207.4 M81.1 223.8 L81 221.5 Q81 214.1 83.4 208.4 85.8 202.65 89.85 198.7 L89.85 198.65 89.9 198.6 Q94.05 194.65 99.5 192.65 104.8 190.7 110.6 190.7 116.55 190.7 121.85 192.65 127.3 194.65 131.5 198.65 L131.5 198.7 Q135.55 202.65 137.85 208.45 140.2 214.1 140.2 221.5 L140.15 223.8 Q139.85 229.8 137.95 234.55 135.65 240.4 131.65 244.3 127.65 248.3 122.1 250.35 L121.75 250.45 Q116.5 252.25 110.6 252.25 104.65 252.25 99.35 250.35 L99.3 250.35 99.3 250.3 Q93.85 248.25 89.75 244.35 L89.6 244.2 Q85.65 240.3 83.3 234.55 81.4 229.85 81.1 223.8 M119.3 223.75 L119.4 221.5 Q119.4 218.65 118.8 216.3 L118.7 216.1 Q118.05 214 116.85 212.45 115.9 211.3 114.6 210.55 L114.4 210.5 Q112.7 209.75 110.6 209.75 L107.8 210.1 Q105.2 211.1 103.8 213.3 103 214.55 102.5 216.2 L102.5 216.15 Q101.75 218.6 101.75 221.5 L101.9 223.8 Q102.05 225.45 102.5 226.9 103.1 228.9 104.2 230.35 L104.25 230.4 104.3 230.5 Q105.35 231.8 106.85 232.5 108.45 233.25 110.6 233.25 112.65 233.25 114.35 232.5 115.85 231.8 116.85 230.5 L116.9 230.5 Q118.05 228.95 118.7 226.9 L119.3 223.75 M102.55 211.15 Q103.95 209.4 105.95 208.4 L105.9 208.45 Q107.95 207.45 110.6 207.45 113.15 207.45 115.25 208.35 L115.35 208.4 Q117.3 209.35 118.65 211.05 120.1 212.9 120.9 215.5 L120.9 215.45 Q121.7 218.15 121.7 221.5 121.7 224.85 120.9 227.6 120.1 230.05 118.65 231.9 L118.5 232.1 Q117.15 233.7 115.3 234.55 113.2 235.5 110.6 235.5 107.95 235.5 105.9 234.55 104.1 233.75 102.75 232.2 L102.55 231.9 Q101.1 230.05 100.35 227.6 99.5 224.85 99.5 221.5 99.5 218.25 100.35 215.5 101.1 212.95 102.55 211.15"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M140.15 223.8 L140.2 226.05 Q140.2 233.45 137.95 239.05 135.65 244.95 131.65 248.8 L131.65 248.85 Q127.65 252.85 122.1 254.85 121.95 254.95 121.75 255 116.5 256.8 110.6 256.8 104.65 256.8 99.35 254.85 L99.3 254.85 Q93.85 252.8 89.75 248.9 L89.6 248.75 Q85.65 244.85 83.3 239.1 81 233.5 81 226.05 L81.1 223.8 Q81.4 229.85 83.3 234.55 85.65 240.3 89.6 244.2 L89.75 244.35 Q93.85 248.25 99.3 250.3 L99.3 250.35 99.35 250.35 Q104.65 252.25 110.6 252.25 116.5 252.25 121.75 250.45 L122.1 250.35 Q127.65 248.3 131.65 244.3 135.65 240.4 137.95 234.55 139.85 229.8 140.15 223.8 M119.3 223.75 L118.8 220.85 118.7 220.65 Q118.05 218.55 116.85 217 115.9 215.8 114.6 215.1 L114.4 215.05 Q112.7 214.25 110.6 214.25 L107.8 214.65 Q105.2 215.65 103.8 217.8 103 219.05 102.5 220.75 L102.5 220.7 Q102.05 222.15 101.9 223.8 L101.75 221.5 Q101.75 218.6 102.5 216.15 L102.5 216.2 Q103 214.55 103.8 213.3 105.2 211.1 107.8 210.1 L110.6 209.75 Q112.7 209.75 114.4 210.5 L114.6 210.55 Q115.9 211.3 116.85 212.45 118.05 214 118.7 216.1 L118.8 216.3 Q119.4 218.65 119.4 221.5 L119.3 223.75"/> + <path stroke="none" fill="#5DA3BD" d="M154 247.15 L154 197.3 Q154 195.7 155.05 194.4 156.1 193.15 157.7 192.85 L166 191.8 173.6 191.5 Q186.5 191.5 193.4 196.2 201.4 201.3 201.4 212.95 L201.35 215.25 Q200.65 225.25 193.3 229.85 L193.35 229.8 Q186.65 234.45 174.35 234.6 L174.35 239.15 174.35 247 Q174.3 248.85 173.05 250.1 171.7 251.45 169.8 251.45 L158.5 251.45 Q156.65 251.45 155.3 250.1 154.05 248.9 154 247.15 M156.8 195.85 Q156.25 196.5 156.25 197.3 L156.25 246.9 Q156.25 247.85 156.95 248.55 157.55 249.15 158.5 249.15 L169.8 249.15 Q170.75 249.15 171.45 248.55 172.1 247.85 172.1 246.9 L172.1 232.35 173.4 232.35 Q185.55 232.35 192.05 227.95 199.15 223.4 199.15 212.95 199.15 208.1 197.6 204.55 195.85 200.5 192.1 198.1 185.65 193.75 173.6 193.75 L166.2 194.05 158.1 195.1 Q157.3 195.25 156.8 195.85 M182.5 210.45 L182.5 210.5 Q182.95 211.45 182.95 212.85 182.95 215.7 181.2 216.85 L181.2 216.8 180.7 217.05 Q178.35 218 174.35 218.15 L173.4 218.15 172.1 218.15 172.1 208.05 174.3 207.95 178.5 208.25 178.45 208.25 Q180.05 208.5 181.15 209.15 182 209.65 182.5 210.45 M179.05 215.25 L180.05 214.85 Q180.7 214.2 180.7 212.85 L180.5 211.65 180.5 211.6 180.05 211.1 Q179.35 210.75 178.4 210.55 L178.15 210.5 174.35 210.25 174.35 214.75 174.35 215.85 179.05 215.25"/> + <path stroke="none" fill="#D5EDF7" d="M156.8 195.85 Q157.3 195.25 158.1 195.1 L166.2 194.05 173.6 193.75 Q185.65 193.75 192.1 198.1 195.85 200.5 197.6 204.55 199.15 208.1 199.15 212.95 199.15 223.4 192.05 227.95 185.55 232.35 173.4 232.35 L172.1 232.35 172.1 246.9 Q172.1 247.85 171.45 248.55 170.75 249.15 169.8 249.15 L158.5 249.15 Q157.55 249.15 156.95 248.55 156.25 247.85 156.25 246.9 L156.25 197.3 Q156.25 196.5 156.8 195.85 M158.5 197.3 L158.5 246.9 169.8 246.9 169.8 230.1 173.4 230.1 Q184.7 230.1 190.8 226.05 196.9 222.05 196.9 212.95 196.9 203.95 190.85 200 187.1 197.5 181.3 196.55 L173.6 196 173.5 196 167.85 196.2 166.35 196.35 158.5 197.3 M182.5 210.45 Q182 209.65 181.15 209.15 180.05 208.5 178.45 208.25 L178.5 208.25 174.3 207.95 172.1 208.05 172.1 218.15 173.4 218.15 174.35 218.15 Q178.35 218 180.7 217.05 L181.2 216.8 181.2 216.85 Q182.95 215.7 182.95 212.85 182.95 211.45 182.5 210.5 L182.5 210.45 M184.45 209.35 Q185.25 210.75 185.25 212.85 185.25 217.2 182.25 218.8 180 220.05 176.1 220.3 L175.4 220.35 174.35 220.4 173.4 220.4 169.8 220.4 169.8 205.9 171.9 205.8 174.3 205.7 178.8 206 Q180.85 206.35 182.3 207.15 183.7 208 184.45 209.35"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M201.35 215.25 L201.4 217.5 Q201.4 229.3 193.3 234.4 L193.35 234.35 Q186.65 238.95 174.35 239.15 L174.35 234.6 Q186.65 234.45 193.35 229.8 L193.3 229.85 Q200.65 225.25 201.35 215.25 M174.35 247 L174.35 251.45 Q174.35 253.35 173.05 254.65 171.7 256 169.8 256 L158.5 256 Q156.65 256 155.3 254.65 154 253.35 154 251.45 L154 247.15 Q154.05 248.9 155.3 250.1 156.65 251.45 158.5 251.45 L169.8 251.45 Q171.7 251.45 173.05 250.1 174.3 248.85 174.35 247 M174.35 214.75 L174.35 210.25 178.15 210.5 178.4 210.55 Q179.35 210.75 180.05 211.1 L180.5 211.6 180.5 211.65 180.7 212.85 Q180.7 214.2 180.05 214.85 L179.05 215.25 178.4 215.1 178.15 215.05 174.35 214.75"/> + <path stroke="none" fill="#ACDCEE" d="M158.5 197.3 L166.35 196.35 167.85 196.2 173.5 196 173.6 196 181.3 196.55 Q187.1 197.5 190.85 200 196.9 203.95 196.9 212.95 196.9 222.05 190.8 226.05 184.7 230.1 173.4 230.1 L169.8 230.1 169.8 246.9 158.5 246.9 158.5 197.3 M184.45 209.35 Q183.7 208 182.3 207.15 180.85 206.35 178.8 206 L174.3 205.7 171.9 205.8 169.8 205.9 169.8 220.4 173.4 220.4 174.35 220.4 175.4 220.35 176.1 220.3 Q180 220.05 182.25 218.8 185.25 217.2 185.25 212.85 185.25 210.75 184.45 209.35"/> + <path stroke="none" fill="#5DA3BD" d="M64.45 194.75 Q63.75 194.1 62.8 194.1 L51.55 194.1 Q50.6 194.1 49.95 194.75 49.25 195.4 49.25 196.35 L49.25 218.65 47.8 216.55 47 215.45 41.8 208.3 35.8 200.75 30.4 194.75 Q29.75 194.1 28.8 194.1 L19.55 194.1 Q18.6 194.1 17.95 194.75 17.3 195.4 17.3 196.35 L17.3 246.6 Q17.3 247.55 17.95 248.25 18.6 248.9 19.55 248.9 L30.7 248.9 Q31.65 248.9 32.35 248.25 33 247.55 33 246.6 L33 220 Q37.1 225.2 40.9 230.85 46.5 239.15 51.3 247.75 L52.15 248.6 53.3 248.9 62.8 248.9 Q63.75 248.9 64.45 248.25 65.05 247.55 65.05 246.6 L65.05 196.35 Q65.05 195.4 64.45 194.75 M15.05 246.85 L15.05 196.35 Q15.05 194.45 16.35 193.15 17.65 191.8 19.55 191.8 L28.8 191.8 Q30.7 191.8 32 193.15 L37.55 199.35 43.4 206.7 43.6 206.95 47 211.55 47 196.35 Q47 194.45 48.35 193.15 49.65 191.8 51.55 191.8 L62.8 191.8 Q64.7 191.8 66 193.15 67.35 194.45 67.35 196.35 L67.35 246.75 Q67.3 248.55 66 249.85 64.7 251.15 62.8 251.15 L53.3 251.15 Q52.05 251.15 50.95 250.5 L51 250.55 Q49.9 249.9 49.35 248.85 L49.3 248.85 Q44.65 240.5 39.2 232.4 L39 232.1 35.25 226.75 35.25 231.25 35.25 246.75 Q35.2 248.55 33.95 249.85 32.6 251.15 30.7 251.15 L19.55 251.15 Q17.65 251.15 16.35 249.85 15.1 248.6 15.05 246.85"/> + <path stroke="none" fill="#D5EDF7" d="M64.45 194.75 Q65.05 195.4 65.05 196.35 L65.05 246.6 Q65.05 247.55 64.45 248.25 63.75 248.9 62.8 248.9 L53.3 248.9 52.15 248.6 51.3 247.75 Q46.5 239.15 40.9 230.85 37.1 225.2 33 220 L33 246.6 Q33 247.55 32.35 248.25 31.65 248.9 30.7 248.9 L19.55 248.9 Q18.6 248.9 17.95 248.25 17.3 247.55 17.3 246.6 L17.3 196.35 Q17.3 195.4 17.95 194.75 18.6 194.1 19.55 194.1 L28.8 194.1 Q29.75 194.1 30.4 194.75 L35.8 200.75 41.8 208.3 47 215.45 47.8 216.55 49.25 218.65 49.25 196.35 Q49.25 195.4 49.95 194.75 50.6 194.1 51.55 194.1 L62.8 194.1 Q63.75 194.1 64.45 194.75 M51.55 226 L45.95 217.85 39.95 209.65 34.05 202.2 28.8 196.35 19.55 196.35 19.55 246.6 30.7 246.6 30.7 213.65 Q37.1 221.15 42.75 229.55 48.45 237.95 53.3 246.6 L62.8 246.6 62.8 196.35 51.55 196.35 51.55 226"/> + <path stroke="none" fill="#ACDCEE" d="M51.55 226 L51.55 196.35 62.8 196.35 62.8 246.6 53.3 246.6 Q48.45 237.95 42.75 229.55 37.1 221.15 30.7 213.65 L30.7 246.6 19.55 246.6 19.55 196.35 28.8 196.35 34.05 202.2 39.95 209.65 45.95 217.85 51.55 226"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M67.35 246.75 L67.35 251.15 Q67.35 253.05 66 254.35 64.7 255.7 62.8 255.7 L53.3 255.7 Q52.05 255.7 50.95 255.05 L51 255.1 Q49.9 254.45 49.35 253.4 L49.3 253.4 Q44.65 245.05 39.2 236.95 L39 236.65 35.25 231.25 35.25 226.75 39 232.1 39.2 232.4 Q44.65 240.5 49.3 248.85 L49.35 248.85 Q49.9 249.9 51 250.55 L50.95 250.5 Q52.05 251.15 53.3 251.15 L62.8 251.15 Q64.7 251.15 66 249.85 67.3 248.55 67.35 246.75 M35.25 246.75 L35.25 251.15 Q35.25 253.05 33.95 254.35 32.6 255.7 30.7 255.7 L19.55 255.7 Q17.65 255.7 16.35 254.35 15.05 253.05 15.05 251.15 L15.05 246.85 Q15.1 248.6 16.35 249.85 17.65 251.15 19.55 251.15 L30.7 251.15 Q32.6 251.15 33.95 249.85 35.2 248.55 35.25 246.75"/> + <path stroke="none" fill="#5DA3BD" d="M783.15 120.2 Q782.35 120.2 781.7 120.75 781.05 121.25 780.95 122.15 L780.8 123.15 Q780.15 127.8 779.6 133.4 778.9 139.65 778.45 146.4 L777.55 159.9 776.9 172.6 Q776.85 173.2 777.15 173.8 L778 174.7 779.15 175 790.2 175 Q791.1 175 791.8 174.35 792.4 173.7 792.45 172.8 L793.05 156.85 Q793.2 152.85 793.5 148.8 L795.8 154.35 795.8 154.4 798.85 161.45 801.35 167.3 Q801.6 167.9 802.2 168.25 802.75 168.6 803.4 168.6 L811.3 168.6 Q812 168.6 812.55 168.2 L813.4 167.25 815.9 161.45 815.85 161.45 818.9 154.35 821.25 148.8 821.65 156.85 822.25 172.8 Q822.3 173.7 822.9 174.35 823.6 175 824.5 175 L835.55 175 836.7 174.7 837.55 173.8 837.8 172.6 837.15 159.9 836.25 146.4 835.15 133.4 834 123.15 833.85 122.15 Q833.7 121.25 833.05 120.75 832.4 120.2 831.6 120.2 L821.25 120.2 820.15 120.5 Q819.55 120.8 819.3 121.35 L817.95 123.9 Q817.1 125.45 816.2 127.35 L812.65 135.05 808.95 143.45 807.6 146.6 806.25 143.45 802.6 135.05 799.05 127.35 797.35 123.95 795.95 121.35 795.15 120.5 793.95 120.2 783.15 120.2 M774.75 173.95 L774.6 172.5 775.3 159.75 776.2 146.25 Q776.65 139.45 777.35 133.2 777.95 126.85 778.65 121.8 778.9 120.1 780.2 119 781.5 117.9 783.15 117.9 L794 117.9 Q795.2 117.9 796.25 118.55 797.35 119.15 797.95 120.25 L801.05 126.4 804.5 133.8 804.7 134.15 807.6 140.8 810.55 134.1 810.7 133.85 814.15 126.4 Q815.95 122.7 817.3 120.25 817.9 119.15 818.95 118.55 820 117.9 821.25 117.9 L831.6 117.9 Q833.25 117.9 834.55 119 835.8 120.1 836.1 121.8 L837.4 133.2 838.55 146.2 838.55 146.25 839.4 159.75 840.1 172.5 839.95 173.95 839.55 174.9 Q838.95 175.95 837.9 176.6 836.8 177.25 835.55 177.25 L824.5 177.25 Q822.65 177.25 821.35 175.95 820 174.7 820 172.85 L819.5 158.85 818 162.25 817.95 162.35 815.5 168.15 815.5 168.1 Q814.95 169.35 813.85 170.1 L813.8 170.1 Q812.7 170.85 811.3 170.85 L803.4 170.85 Q802.1 170.85 800.95 170.15 799.85 169.45 799.3 168.2 L799.25 168.2 796.75 162.35 796.6 162 795.25 158.75 794.7 172.85 Q794.7 174.7 793.35 175.95 792.05 177.25 790.2 177.25 L779.15 177.25 Q777.9 177.25 776.85 176.6 775.75 175.95 775.2 174.9 L775.15 174.9 774.75 173.95"/> + <path stroke="none" fill="#D5EDF7" d="M783.15 120.2 L793.95 120.2 795.15 120.5 795.95 121.35 797.35 123.95 799.05 127.35 802.6 135.05 806.25 143.45 807.6 146.6 808.95 143.45 812.65 135.05 816.2 127.35 Q817.1 125.45 817.95 123.9 L819.3 121.35 Q819.55 120.8 820.15 120.5 L821.25 120.2 831.6 120.2 Q832.4 120.2 833.05 120.75 833.7 121.25 833.85 122.15 L834 123.15 835.15 133.4 836.25 146.4 837.15 159.9 837.8 172.6 837.55 173.8 836.7 174.7 835.55 175 824.5 175 Q823.6 175 822.9 174.35 822.3 173.7 822.25 172.8 L821.65 156.85 821.25 148.8 818.9 154.35 815.85 161.45 815.9 161.45 813.4 167.25 812.55 168.2 Q812 168.6 811.3 168.6 L803.4 168.6 Q802.75 168.6 802.2 168.25 801.6 167.9 801.35 167.3 L798.85 161.45 795.8 154.4 795.8 154.35 793.5 148.8 Q793.2 152.85 793.05 156.85 L792.45 172.8 Q792.4 173.7 791.8 174.35 791.1 175 790.2 175 L779.15 175 778 174.7 777.15 173.8 Q776.85 173.2 776.9 172.6 L777.55 159.9 778.45 146.4 Q778.9 139.65 779.6 133.4 780.15 127.8 780.8 123.15 L780.95 122.15 Q781.05 121.25 781.7 120.75 782.35 120.2 783.15 120.2 M783.15 122.45 Q782.45 127.45 781.85 133.65 L780.75 146.55 779.85 160 779.15 172.7 790.2 172.7 790.8 156.75 Q791.15 148.1 791.85 139.35 L794.75 146.05 797.9 153.5 800.9 160.55 803.4 166.35 811.3 166.35 813.8 160.55 816.8 153.5 819.95 146.05 822.85 139.35 823.9 156.75 824.5 172.7 835.55 172.7 834.85 160 834 146.55 832.9 133.65 831.6 122.45 821.25 122.45 818.25 128.35 814.7 136 811 144.35 807.6 152.4 804.15 144.35 800.55 136 797 128.35 793.95 122.45 783.15 122.45"/> + <path stroke="none" fill="#ACDCEE" d="M783.15 122.45 L793.95 122.45 797 128.35 800.55 136 804.15 144.35 807.6 152.4 811 144.35 814.7 136 818.25 128.35 821.25 122.45 831.6 122.45 832.9 133.65 834 146.55 834.85 160 835.55 172.7 824.5 172.7 823.9 156.75 822.85 139.35 819.95 146.05 816.8 153.5 813.8 160.55 811.3 166.35 803.4 166.35 800.9 160.55 797.9 153.5 794.75 146.05 791.85 139.35 Q791.15 148.1 790.8 156.75 L790.2 172.7 779.15 172.7 779.85 160 780.75 146.55 781.85 133.65 Q782.45 127.45 783.15 122.45"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M839.95 173.95 L840.1 177.05 Q840.15 178.3 839.55 179.4 838.95 180.5 837.9 181.15 836.8 181.8 835.55 181.8 L824.5 181.8 Q822.65 181.8 821.35 180.5 820 179.2 820 177.35 L819.5 163.4 818 166.8 817.95 166.85 817.95 166.9 815.5 172.7 815.5 172.65 Q814.95 173.9 813.85 174.65 L813.8 174.65 Q812.7 175.4 811.3 175.4 L803.4 175.4 Q802.1 175.4 800.95 174.7 799.85 173.95 799.3 172.75 L799.25 172.7 796.75 166.85 796.6 166.5 795.25 163.3 794.7 177.4 Q794.7 179.2 793.35 180.5 792.05 181.8 790.2 181.8 L779.15 181.8 Q777.9 181.8 776.85 181.15 775.75 180.5 775.2 179.4 L775.15 179.4 Q774.55 178.3 774.6 177.05 L774.75 173.95 775.15 174.9 775.2 174.9 Q775.75 175.95 776.85 176.6 777.9 177.25 779.15 177.25 L790.2 177.25 Q792.05 177.25 793.35 175.95 794.7 174.7 794.7 172.85 L795.25 158.75 796.6 162 796.75 162.35 799.25 168.2 799.3 168.2 Q799.85 169.45 800.95 170.15 802.1 170.85 803.4 170.85 L811.3 170.85 Q812.7 170.85 813.8 170.1 L813.85 170.1 Q814.95 169.35 815.5 168.1 L815.5 168.15 817.95 162.35 818 162.25 819.5 158.85 820 172.85 Q820 174.7 821.35 175.95 822.65 177.25 824.5 177.25 L835.55 177.25 Q836.8 177.25 837.9 176.6 838.95 175.95 839.55 174.9 L839.95 173.95"/> + <path stroke="none" fill="#C6A726" d="M1321.85 312 L1199.85 312 Q1194.85 312 1194.85 317 L1194.85 376 Q1194.85 381 1199.85 381 L1321.85 381 Q1326.85 381 1326.85 376 L1326.85 317 Q1326.85 312 1321.85 312 M1192.85 376.45 L1192.85 317 Q1192.85 310 1199.85 310 L1321.85 310 Q1328.85 310 1328.85 317 L1328.85 376.45 Q1328.65 383 1321.85 383 L1199.85 383 Q1193.05 383 1192.85 376.45"/> + <path stroke="none" fill="#FADD69" d="M1324.85 317 Q1324.85 314 1321.85 314 L1199.85 314 Q1196.85 314 1196.85 317 L1196.85 376 Q1196.85 379 1199.85 379 L1321.85 379 Q1324.85 379 1324.85 376 L1324.85 317 M1321.85 312 Q1326.85 312 1326.85 317 L1326.85 376 Q1326.85 381 1321.85 381 L1199.85 381 Q1194.85 381 1194.85 376 L1194.85 317 Q1194.85 312 1199.85 312 L1321.85 312"/> + <path stroke="none" fill="#F1CC36" d="M1324.85 317 L1324.85 376 Q1324.85 379 1321.85 379 L1199.85 379 Q1196.85 379 1196.85 376 L1196.85 317 Q1196.85 314 1199.85 314 L1321.85 314 Q1324.85 314 1324.85 317"/> + <path stroke="none" fill="#C29B00" d="M1328.85 376.45 L1328.85 383 Q1328.85 390 1321.85 390 L1199.85 390 Q1192.85 390 1192.85 383 L1192.85 376.45 Q1193.05 383 1199.85 383 L1321.85 383 Q1328.65 383 1328.85 376.45"/> + <path stroke="none" fill="#C6A726" d="M1381.85 412 L1199.85 412 Q1194.85 412 1194.85 417 L1194.85 466 Q1194.85 471 1199.85 471 L1381.85 471 Q1386.85 471 1386.85 466 L1386.85 417 Q1386.85 412 1381.85 412 M1192.85 466.45 L1192.85 417 Q1192.85 410 1199.85 410 L1381.85 410 Q1388.85 410 1388.85 417 L1388.85 466.45 Q1388.65 473 1381.85 473 L1199.85 473 Q1193.05 473 1192.85 466.45"/> + <path stroke="none" fill="#FADD69" d="M1384.85 417 Q1384.85 414 1381.85 414 L1199.85 414 Q1196.85 414 1196.85 417 L1196.85 466 Q1196.85 469 1199.85 469 L1381.85 469 Q1384.85 469 1384.85 466 L1384.85 417 M1381.85 412 Q1386.85 412 1386.85 417 L1386.85 466 Q1386.85 471 1381.85 471 L1199.85 471 Q1194.85 471 1194.85 466 L1194.85 417 Q1194.85 412 1199.85 412 L1381.85 412"/> + <path stroke="none" fill="#F1CC36" d="M1384.85 417 L1384.85 466 Q1384.85 469 1381.85 469 L1199.85 469 Q1196.85 469 1196.85 466 L1196.85 417 Q1196.85 414 1199.85 414 L1381.85 414 Q1384.85 414 1384.85 417"/> + <path stroke="none" fill="#C29B00" d="M1388.85 466.45 L1388.85 473 Q1388.85 480 1381.85 480 L1199.85 480 Q1192.85 480 1192.85 473 L1192.85 466.45 Q1193.05 473 1199.85 473 L1381.85 473 Q1388.65 473 1388.85 466.45"/> + <path stroke="none" fill="#D3BF8F" d="M1449.8 502.95 L1199.9 502.95 Q1194.85 502.95 1194.85 507.95 L1194.85 757.9 Q1194.85 762.95 1199.9 762.95 L1449.8 762.95 Q1454.85 762.95 1454.85 757.9 L1454.85 507.95 Q1454.85 502.95 1449.8 502.95 M1456.85 507.95 L1456.85 757.9 Q1456.85 764.95 1449.8 764.95 L1199.9 764.95 Q1192.85 764.95 1192.85 757.9 L1192.85 507.95 Q1192.85 500.95 1199.9 500.95 L1449.8 500.95 Q1456.85 500.95 1456.85 507.95"/> + <path stroke="none" fill="#ECE0C5" d="M1452.85 507.95 Q1452.85 504.95 1449.8 504.95 L1199.9 504.95 Q1196.85 504.95 1196.85 507.95 L1196.85 757.9 Q1196.85 760.95 1199.9 760.95 L1449.8 760.95 Q1452.85 760.95 1452.85 757.9 L1452.85 507.95 M1449.8 502.95 Q1454.85 502.95 1454.85 507.95 L1454.85 757.9 Q1454.85 762.95 1449.8 762.95 L1199.9 762.95 Q1194.85 762.95 1194.85 757.9 L1194.85 507.95 Q1194.85 502.95 1199.9 502.95 L1449.8 502.95"/> + <path stroke="none" fill="#E0D1AF" d="M1452.85 507.95 L1452.85 757.9 Q1452.85 760.95 1449.8 760.95 L1199.9 760.95 Q1196.85 760.95 1196.85 757.9 L1196.85 507.95 Q1196.85 504.95 1199.9 504.95 L1449.8 504.95 Q1452.85 504.95 1452.85 507.95"/> + <path stroke="none" fill="url(#gradient0)" d="M1168.7 811.35 Q1177.3 819.95 1180.9 830.65 L1117.15 894.35 Q1106.45 890.8 1097.85 882.2 1094.6 878.95 1092.1 875.45 L1161.95 805.6 Q1165.45 808.1 1168.7 811.35 M1133.25 796.65 Q1142.65 796.65 1150.85 799.7 L1086.2 864.35 Q1083.15 856.15 1083.15 846.75 L1083.2 845.35 1131.85 796.7 1133.25 796.65"/> + <path stroke="none" fill="url(#gradient1)" d="M1310.9 830.65 L1247.15 894.35 Q1236.45 890.8 1227.85 882.2 1224.6 878.95 1222.1 875.45 L1291.95 805.6 Q1295.45 808.1 1298.7 811.35 1307.3 819.95 1310.9 830.65 M1213.2 845.35 L1261.85 796.7 1263.25 796.65 Q1272.65 796.65 1280.85 799.7 L1216.2 864.35 Q1213.15 856.15 1213.15 846.75 L1213.2 845.35"/> + <path stroke="none" fill="#BB9500" d="M1354.55 808.05 Q1346.05 816.5 1342.05 826.9 1338.5 836.1 1338.5 846.75 1338.5 869.45 1354.55 885.5 1370.55 901.5 1393.25 901.5 1415.95 901.5 1432 885.5 1448 869.45 1448 846.75 1448 836.05 1444.45 826.9 1440.45 816.5 1432 808.05 1415.95 792 1393.25 792 1370.55 792 1354.55 808.05 M1336.55 849.3 L1336.5 846.75 Q1336.5 823.25 1353.1 806.6 1369.75 790 1393.25 790 1416.75 790 1433.4 806.6 1450 823.25 1450 846.75 L1449.95 849.25 Q1449.1 871.15 1433.4 886.9 1416.75 903.5 1393.25 903.5 1369.75 903.5 1353.1 886.9 1337.4 871.15 1336.55 849.3"/> + <path stroke="none" fill="#FFE680" d="M1354.55 808.05 Q1370.55 792 1393.25 792 1415.95 792 1432 808.05 1440.45 816.5 1444.45 826.9 1448 836.05 1448 846.75 1448 869.45 1432 885.5 1415.95 901.5 1393.25 901.5 1370.55 901.5 1354.55 885.5 1338.5 869.45 1338.5 846.75 1338.5 836.1 1342.05 826.9 1346.05 816.5 1354.55 808.05 M1343.15 846.75 Q1343.15 867.5 1357.85 882.2 1372.5 896.85 1393.25 896.85 1414 896.85 1428.7 882.2 1443.4 867.5 1443.4 846.75 1443.4 826 1428.7 811.35 1414 796.65 1393.25 796.65 1372.5 796.65 1357.85 811.35 1343.15 826 1343.15 846.75"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M1449.95 849.25 L1450 851.75 Q1450 875.25 1433.4 891.9 1416.75 908.5 1393.25 908.5 1369.75 908.5 1353.1 891.9 1336.5 875.25 1336.5 851.75 L1336.55 849.3 Q1337.4 871.15 1353.1 886.9 1369.75 903.5 1393.25 903.5 1416.75 903.5 1433.4 886.9 1449.1 871.15 1449.95 849.25"/> + <path stroke="none" fill="#F5D657" d="M1343.15 846.75 Q1343.15 826 1357.85 811.35 1372.5 796.65 1393.25 796.65 1414 796.65 1428.7 811.35 1443.4 826 1443.4 846.75 1443.4 867.5 1428.7 882.2 1414 896.85 1393.25 896.85 1372.5 896.85 1357.85 882.2 1343.15 867.5 1343.15 846.75"/> + <path stroke="none" fill="#C9A000" d="M1376.35 827 Q1376.25 826.05 1376.55 825.2 L1376.55 825.1 Q1376.95 824.2 1377.65 823.45 1379.15 821.95 1381.3 821.95 L1409.2 821.95 Q1411.35 821.95 1412.9 823.45 1414.4 824.95 1414.4 827.1 L1414.4 827.6 Q1414.2 829.45 1412.9 830.8 1411.3 832.4 1409.05 832.15 L1407.95 832.05 1407.1 835.1 1407.55 835.15 1407.65 835.15 1411.6 835.5 1411.65 835.5 1412.15 835.6 1412.2 835.6 Q1414.85 835.9 1416.15 838.45 L1416.2 838.65 1416.25 838.8 1417.4 842.35 1417.4 837.25 Q1417.4 836.05 1418.25 835.2 L1418.3 835.15 Q1419.2 834.3 1420.35 834.3 1421.6 834.3 1422.5 835.2 1423.35 836.05 1423.35 837.25 L1423.35 848.7 Q1424.3 850.15 1424.3 851.85 L1424.3 852.35 Q1424.15 853.75 1423.35 855.05 L1423.35 857.05 1423.35 867.55 Q1423.35 868.5 1422.55 869.35 L1422.5 869.4 Q1421.55 870.3 1420.35 870.3 1419.15 870.35 1418.25 869.4 1417.4 868.55 1417.4 867.55 L1417.4 863.85 1417.4 861.85 1416.3 865.1 1415.9 865.9 Q1414.6 868.05 1412.3 868.6 L1412.25 868.6 1411.85 868.7 1411.85 868.75 1410.35 869 Q1409.95 871.05 1408.35 872.65 L1408.3 872.7 Q1406.1 874.9 1403 874.9 1399.9 874.9 1397.7 872.7 1396.15 871.15 1395.7 869.1 L1395.65 868.9 1395.55 868.9 1389.55 867.55 1386.6 866.45 1385.45 867.85 Q1383.45 869.9 1380.55 869.9 1377.65 869.9 1375.6 867.85 1373.75 866 1373.65 863.45 L1373.6 862.95 Q1373.6 860.05 1375.6 858 1375.85 857.75 1376.1 857.6 1376.45 857.25 1376.9 857 1374.05 851.9 1370.2 847.85 L1370.15 847.8 1369.55 847.2 1367.4 845.2 1362.5 840.75 1361.3 838.75 1361.3 838.7 1360.75 836.85 1360.7 836.85 1360.55 835.95 Q1360.35 833.8 1361.55 832.4 1362.6 831 1365 830.35 L1365.05 830.35 Q1371.7 828.6 1377.6 834.7 L1382.65 834.55 1383.15 834.55 1382.3 831.3 1381.45 831.4 1381.25 831.4 Q1379.15 831.3 1377.65 829.75 L1377.65 829.8 1377.1 829.1 1376.95 828.85 Q1376.45 827.9 1376.35 827 M1398.5 834.8 L1398.55 834.75 1398.75 834.65 1398.85 834.65 1399 834.55 1398.05 831.1 1392.45 830.9 1391.4 834.85 1391.9 835 1394.15 835.25 1398.5 834.8"/> + <path stroke="none" fill="#FFEA98" d="M1398.5 834.8 L1398.05 833.1 1392.45 832.9 1391.9 835 1391.4 834.85 1392.45 830.9 1398.05 831.1 1399 834.55 1398.85 834.65 1398.75 834.65 1398.55 834.75 1398.5 834.8 M1382.65 834.55 L1382.3 833.3 1381.45 833.4 1381.25 833.4 Q1379.15 833.3 1377.65 831.75 L1377.65 831.8 1377.1 831.1 1376.95 830.85 Q1376.2 829.3 1376.35 828 L1376.35 827 Q1376.45 827.9 1376.95 828.85 L1377.1 829.1 1377.65 829.8 1377.65 829.75 Q1379.15 831.3 1381.25 831.4 L1381.45 831.4 1382.3 831.3 1383.15 834.55 1382.65 834.55 M1414.4 827.6 L1414.4 828.1 1414.4 828.6 1414.4 829.1 Q1414.4 831.25 1412.9 832.8 1411.3 834.4 1409.05 834.15 L1407.95 834.05 1407.65 835.15 1407.55 835.15 1407.1 835.1 1407.95 832.05 1409.05 832.15 Q1411.3 832.4 1412.9 830.8 1414.2 829.45 1414.4 827.6 M1424.3 852.35 L1424.3 852.85 1424.3 853.35 1424.3 853.85 Q1424.3 855.55 1423.35 857.05 L1423.35 855.05 Q1424.15 853.75 1424.3 852.35 M1423.35 867.55 L1423.35 869.3 Q1423.35 870.5 1422.55 871.35 L1422.5 871.4 Q1421.55 872.3 1420.35 872.3 1419.15 872.35 1418.25 871.4 1417.4 870.55 1417.4 869.3 L1417.4 867.55 Q1417.4 868.55 1418.25 869.4 1419.15 870.35 1420.35 870.3 1421.55 870.3 1422.5 869.4 L1422.55 869.35 Q1423.35 868.5 1423.35 867.55 M1417.4 863.85 L1416.3 867.1 1415.9 867.9 Q1414.6 870.05 1412.3 870.6 L1412.25 870.6 1411.85 870.7 1411.85 870.75 1410.35 871 Q1409.95 873.05 1408.35 874.65 L1408.3 874.7 Q1406.1 876.9 1403 876.9 1399.9 876.9 1397.7 874.7 1396.15 873.15 1395.7 871.1 L1395.65 870.9 1395.55 870.9 1389.55 869.55 1386.6 868.45 1385.45 869.85 Q1383.45 871.9 1380.55 871.9 1377.65 871.9 1375.6 869.85 1373.6 867.85 1373.6 864.95 L1373.65 864.45 1373.6 863.95 1373.65 863.45 Q1373.75 866 1375.6 867.85 1377.65 869.9 1380.55 869.9 1383.45 869.9 1385.45 867.85 L1386.6 866.45 1389.55 867.55 1395.55 868.9 1395.65 868.9 1395.7 869.1 Q1396.15 871.15 1397.7 872.7 1399.9 874.9 1403 874.9 1406.1 874.9 1408.3 872.7 L1408.35 872.65 Q1409.95 871.05 1410.35 869 L1411.85 868.75 1411.85 868.7 1412.25 868.6 1412.3 868.6 Q1414.6 868.05 1415.9 865.9 L1416.3 865.1 1417.4 861.85 1417.4 863.85 M1376.1 857.6 Q1373.45 853.3 1370.2 849.85 L1370.15 849.8 1369.55 849.2 1367.4 847.2 1362.5 842.75 1361.3 840.75 1361.3 840.7 1360.75 838.85 1360.7 838.85 Q1360.45 837.75 1360.55 836.85 L1360.55 835.95 1360.7 836.85 1360.75 836.85 1361.3 838.7 1361.3 838.75 1362.5 840.75 1367.4 845.2 1369.55 847.2 1370.15 847.8 1370.2 847.85 Q1374.05 851.9 1376.9 857 1376.45 857.25 1376.1 857.6"/> + <path stroke="none" fill="url(#gradient2)" d="M1343.15 846.75 L1343.2 845.35 1391.85 796.7 1393.25 796.65 Q1402.65 796.65 1410.85 799.7 L1346.2 864.35 Q1343.15 856.15 1343.15 846.75 M1352.1 875.45 L1421.95 805.6 Q1425.45 808.1 1428.7 811.35 1437.3 819.95 1440.9 830.65 L1377.15 894.35 Q1366.45 890.8 1357.85 882.2 1354.6 878.95 1352.1 875.45"/> + <path stroke="none" fill="#D5EDF7" d="M15.05 1543.95 L15.05 1063.95 815.05 1063.95 815.05 1543.95 15.05 1543.95"/> + <path stroke="none" fill="#EAF5FA" d="M15.05 1431.45 L15.05 1275.55 Q20.4 1272.85 27 1272.85 33.5 1272.85 38.9 1275.5 51.6 1269.85 66.8 1269.85 L68.1 1269.85 Q69.5 1263.1 75.05 1257.95 82.5 1251 93.1 1251 100.7 1251 106.65 1254.55 109.55 1250.95 113.1 1247.65 121.4 1239.9 131.2 1235.55 131.75 1232.55 133.1 1229.9 131.25 1226.15 130.9 1221.9 L130.8 1219.9 130.85 1218.85 Q131.2 1209.65 138.25 1203.1 145.75 1196.15 156.3 1196.15 L161.85 1196.7 Q166.6 1186.85 175.45 1178.65 194.55 1160.85 221.65 1160.85 237.35 1160.85 250.4 1166.85 256.3 1163.35 263.85 1163.35 274.45 1163.35 281.9 1170.3 288.65 1176.55 289.35 1185.15 L296.1 1184.35 Q306.7 1184.35 314.15 1191.3 317.85 1194.7 319.7 1198.85 346.65 1198.9 365.75 1216.65 371.85 1222.35 376 1228.8 L376.5 1228.3 Q383.95 1221.35 394.55 1221.35 405.15 1221.35 412.6 1228.3 417.65 1233 419.3 1239 L423.8 1238.85 Q430.95 1238.85 437.55 1240.1 439.05 1233.45 444.5 1228.4 451.95 1221.45 462.55 1221.45 471.45 1221.45 478.1 1226.3 491.1 1215.3 507.65 1212.15 509.3 1206.05 514.4 1201.3 521.85 1194.35 532.45 1194.35 543.05 1194.35 550.5 1201.3 555.2 1205.65 556.95 1211.2 L561.45 1210.85 Q572 1210.85 579.5 1217.8 586.65 1224.45 586.95 1233.75 L586.95 1234.6 586.95 1235.15 586.9 1236.75 586.85 1237.15 586.9 1237.15 Q591.95 1234.85 598 1234.85 608.6 1234.85 616.05 1241.8 L616.8 1242.55 627 1241.85 Q652.85 1241.85 671.4 1258 L673.45 1255.8 Q680.95 1248.85 691.55 1248.85 702.15 1248.85 709.6 1255.8 713.75 1259.65 715.6 1264.45 723.05 1261.5 731.35 1260.45 732.8 1250.8 740.05 1243.55 745.25 1238.35 751.65 1236.15 756.45 1234.5 761.9 1234.5 774.7 1234.5 783.75 1243.55 785.95 1245.75 787.65 1248.2 798.2 1249.25 806 1257.05 814.75 1265.8 815.05 1278.1 L815.05 1509.25 815 1509.25 815 1431.5 798.1 1431.5 787.1 1450.7 769.1 1445.6 757.55 1393.5 740.8 1384.5 727.95 1309.3 711.9 1309.3 690.05 1402.5 679.1 1405.7 660.75 1488.65 637.5 1488.65 632.15 1464.2 623.8 1460.35 616.1 1431.45 591.05 1431.45 572.4 1463.6 560.15 1463.6 537.65 1506 515.8 1506 508.1 1483.5 460.5 1459.7 457.95 1425 447 1420.5 435.45 1273.95 423.25 1273.95 406.5 1349.15 396.25 1356.85 386.6 1408.95 378.85 1408.95 355.1 1495.7 327.45 1491.85 304.95 1452 294.65 1452 274.1 1364.55 237.45 1364.55 222.7 1419.2 211.75 1419.2 193.75 1450.7 175.75 1445.6 164.2 1393.5 147.45 1384.5 134.6 1309.3 118.55 1309.3 96.7 1402.5 85.75 1405.7 67.4 1488.65 44.15 1488.65 38.8 1464.2 30.45 1460.35 22.75 1431.45 15.05 1431.45"/> + <path stroke="none" fill="#CFEAF5" d="M15.05 1431.45 L22.75 1431.45 30.45 1460.35 38.8 1464.2 44.15 1488.65 67.4 1488.65 85.75 1405.7 96.7 1402.5 118.55 1309.3 134.6 1309.3 147.45 1384.5 164.2 1393.5 175.75 1445.6 193.75 1450.7 211.75 1419.2 222.7 1419.2 237.45 1364.55 274.1 1364.55 294.65 1452 304.95 1452 327.45 1491.85 355.1 1495.7 378.85 1408.95 386.6 1408.95 396.25 1356.85 406.5 1349.15 423.25 1273.95 435.45 1273.95 447 1420.5 457.95 1425 460.5 1459.7 508.1 1483.5 515.8 1506 537.65 1506 560.15 1463.6 572.4 1463.6 591.05 1431.45 616.1 1431.45 623.8 1460.35 632.15 1464.2 637.5 1488.65 660.75 1488.65 679.1 1405.7 690.05 1402.5 711.9 1309.3 727.95 1309.3 740.8 1384.5 757.55 1393.5 769.1 1445.6 787.1 1450.7 798.1 1431.5 815 1431.5 815 1509.25 815 1543.95 15.05 1543.95 15.05 1431.45"/> + <path stroke="none" fill="#FFFFFF" d="M41.05 24.35 L43.25 24.15 44 24.15 44.35 24.15 46.8 24.3 Q54.95 25.3 59.95 32.25 L59.95 32.3 Q66 40.85 66 56.8 66 72.8 59.95 81.4 54.15 89.55 44 89.55 33.8 89.55 28 81.4 22 72.85 22 56.8 22 48.7 23.55 42.5 L23.55 42.55 Q25.15 36.5 28.15 32.35 31 28.35 35.05 26.25 37.8 24.8 41.05 24.35 M49.85 34.55 Q47.45 32.4 44 32.4 40.4 32.4 38.15 34.6 36.05 36.5 34.75 39.95 33.55 43.15 33.05 47.5 L33.1 47.5 Q32.55 51.65 32.55 56.8 32.55 61.95 33.1 66.15 L33.05 66.15 Q33.55 70.55 34.75 73.7 L34.75 73.75 Q36.05 77.2 38.15 79.1 40.3 81.2 43.7 81.3 L43.95 81.3 44 81.3 44.15 81.3 44.4 81.3 Q47.55 81.15 49.85 79.15 52 77.2 53.25 73.7 54.35 70.55 54.9 66.15 55.35 61.9 55.35 56.8 55.35 51.7 54.9 47.55 L54.9 47.5 Q54.35 43.15 53.25 40 52 36.5 49.85 34.6 L49.85 34.55"/> + <path stroke="none" fill="#FFCC00" d="M49.85 34.55 L49.85 34.6 Q52 36.5 53.25 40 54.35 43.15 54.9 47.5 L54.9 47.55 Q55.35 51.7 55.35 56.8 55.35 61.9 54.9 66.15 54.35 70.55 53.25 73.7 52 77.2 49.85 79.15 47.55 81.15 44.4 81.3 L44.15 81.3 44 81.3 43.95 81.3 43.7 81.3 Q40.3 81.2 38.15 79.1 36.05 77.2 34.75 73.75 L34.75 73.7 Q33.55 70.55 33.05 66.15 L33.1 66.15 Q32.55 61.95 32.55 56.8 32.55 51.65 33.1 47.5 L33.05 47.5 Q33.55 43.15 34.75 39.95 36.05 36.5 38.15 34.6 40.4 32.4 44 32.4 47.45 32.4 49.85 34.55 M41.05 24.35 Q37.8 24.8 35.05 26.25 31 28.35 28.15 32.35 25.15 36.5 23.55 42.55 L23.55 42.5 Q22 48.7 22 56.8 22 72.85 28 81.4 33.8 89.55 44 89.55 54.15 89.55 59.95 81.4 66 72.8 66 56.8 66 40.85 59.95 32.3 L59.95 32.25 Q54.95 25.3 46.8 24.3 L44.35 24.15 44 24.15 43.25 24.15 41.05 24.35 M44 34.4 Q41.25 34.4 39.5 36.05 37.75 37.7 36.6 40.65 35.5 43.65 35.05 47.75 34.55 51.8 34.55 56.8 34.55 61.8 35.05 65.9 35.5 70.05 36.6 73 37.45 75.25 38.7 76.8 L39.5 77.65 Q41.25 79.3 44 79.3 46.65 79.3 48.5 77.65 L49.3 76.85 Q50.55 75.35 51.35 73 52.4 70.05 52.9 65.9 53.35 61.8 53.35 56.8 53.35 51.8 52.9 47.75 52.4 43.65 51.35 40.65 50.3 37.7 48.5 36.05 46.65 34.4 44 34.4 M63.7 34.65 Q68 43.15 68 56.8 68 73.6 61.55 82.55 55.2 91.55 44 91.55 32.75 91.55 26.35 82.55 20 73.6 20 56.8 20 48.45 21.6 42 22.6 38.2 24.15 35.05 25.2 32.95 26.5 31.15 29.65 26.75 34.1 24.45 38.5 22.15 44 22.15 55.2 22.15 61.55 31.1 L63.7 34.65"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M51.35 58.75 L50.9 52 50.95 52 Q50.45 48.15 49.45 45.3 L49.5 45.35 Q48.6 42.9 47.2 41.55 L47.15 41.55 Q45.85 40.4 44 40.4 42.1 40.4 40.9 41.5 39.45 42.9 38.5 45.4 L38.5 45.35 Q37.45 48.15 37.05 52 36.65 55.15 36.6 58.9 L36.55 56.8 Q36.55 51.95 37.05 48 37.45 44.15 38.5 41.35 L38.5 41.4 Q39.45 38.9 40.9 37.5 42.1 36.4 44 36.4 45.85 36.4 47.15 37.55 L47.2 37.55 Q48.6 38.9 49.5 41.35 L49.45 41.3 Q50.45 44.15 50.95 48 L50.9 48 Q51.35 51.9 51.35 56.8 L51.35 58.75 M70 58.8 L70 60.8 Q70 78.4 63.2 87.75 L63.2 87.7 Q56.25 97.55 44 97.55 31.7 97.55 24.75 87.7 18 78.35 18 60.8 L18.05 58.8 Q18.4 74.9 24.75 83.7 31.7 93.55 44 93.55 56.25 93.55 63.2 83.7 L63.2 83.75 Q69.6 74.9 70 58.8"/> + <path stroke="none" fill="#999999" d="M70 58.8 Q69.6 74.9 63.2 83.75 L63.2 83.7 Q56.25 93.55 44 93.55 31.7 93.55 24.75 83.7 18.4 74.9 18.05 58.8 L18 56.8 Q18 48.2 19.65 41.55 L19.7 41.5 Q21.45 34.7 24.9 30 28.3 25.15 33.2 22.7 38 20.15 44 20.15 56.25 20.15 63.2 29.95 70 39.3 70 56.8 L70 58.8 M51.35 58.75 L51.35 56.8 Q51.35 51.9 50.9 48 L50.95 48 Q50.45 44.15 49.45 41.3 L49.5 41.35 Q48.6 38.9 47.2 37.55 L47.15 37.55 Q45.85 36.4 44 36.4 42.1 36.4 40.9 37.5 39.45 38.9 38.5 41.4 L38.5 41.35 Q37.45 44.15 37.05 48 36.55 51.95 36.55 56.8 L36.6 58.9 Q36.65 62.55 37.05 65.65 L37.05 65.7 Q37.45 69.55 38.5 72.3 39.45 74.8 40.9 76.2 42.1 77.3 44 77.3 45.85 77.3 47.15 76.2 L47.2 76.15 Q48.6 74.8 49.45 72.35 L49.5 72.35 Q50.45 69.55 50.95 65.65 L50.9 65.7 51.35 58.75 M63.7 34.65 L61.55 31.1 Q55.2 22.15 44 22.15 38.5 22.15 34.1 24.45 29.65 26.75 26.5 31.15 25.2 32.95 24.15 35.05 22.6 38.2 21.6 42 20 48.45 20 56.8 20 73.6 26.35 82.55 32.75 91.55 44 91.55 55.2 91.55 61.55 82.55 68 73.6 68 56.8 68 43.15 63.7 34.65 M44 34.4 Q46.65 34.4 48.5 36.05 50.3 37.7 51.35 40.65 52.4 43.65 52.9 47.75 53.35 51.8 53.35 56.8 53.35 61.8 52.9 65.9 52.4 70.05 51.35 73 50.55 75.35 49.3 76.85 L48.5 77.65 Q46.65 79.3 44 79.3 41.25 79.3 39.5 77.65 L38.7 76.8 Q37.45 75.25 36.6 73 35.5 70.05 35.05 65.9 34.55 61.8 34.55 56.8 34.55 51.8 35.05 47.75 35.5 43.65 36.6 40.65 37.75 37.7 39.5 36.05 41.25 34.4 44 34.4"/> + <path stroke="none" fill="#999999" d="M105.75 39.9 L105.1 38.25 Q104.8 37.45 105.1 36.75 105.45 35.95 106.2 35.65 L111.85 33.05 111.9 33.05 Q114.85 31.65 117.6 29.9 L117.65 29.9 123 26.3 123.05 26.25 Q125.5 24.4 127.5 22.35 127.8 22.05 128.2 21.9 L128.95 21.7 138.9 21.7 Q139.75 21.7 140.35 22.3 140.9 22.85 140.9 23.7 L140.9 90.4 Q140.9 91.05 140.35 91.65 139.75 92.2 138.9 92.2 L124.65 92.2 Q123.8 92.2 123.25 91.65 122.65 91.05 122.65 90.4 L122.65 49.85 122.65 45.85 119.05 47.65 Q115.4 49.25 111.95 50.45 L110.5 50.4 Q109.75 50.05 109.45 49.3 L105.75 39.9 M128.95 23.7 Q126.85 25.9 124.2 27.85 L118.65 31.6 Q115.8 33.4 112.75 34.85 109.75 36.35 106.95 37.5 L111.3 48.55 118.2 45.8 Q121.75 44.2 124.65 42.3 L124.65 90.2 138.9 90.2 138.9 23.7 128.95 23.7"/> + <path stroke="none" fill="#FFCC00" d="M128.95 23.7 L138.9 23.7 138.9 90.2 124.65 90.2 124.65 42.3 Q121.75 44.2 118.2 45.8 L111.3 48.55 106.95 37.5 Q109.75 36.35 112.75 34.85 115.8 33.4 118.65 31.6 L124.2 27.85 Q126.85 25.9 128.95 23.7 M129.8 25.7 L125.4 29.45 125.45 29.45 119.75 33.3 119.7 33.35 113.6 36.65 113.6 36.7 109.55 38.6 112.45 46 117.4 44 Q120.75 42.45 123.55 40.65 124.2 40.2 124.95 40.35 125.65 40.4 126.15 41 126.65 41.55 126.65 42.3 L126.65 88.2 136.9 88.2 136.9 25.7 129.8 25.7"/> + <path stroke="none" fill="#FFFFFF" d="M129.8 25.7 L136.9 25.7 136.9 88.2 126.65 88.2 126.65 42.3 Q126.65 41.55 126.15 41 125.65 40.4 124.95 40.35 124.2 40.2 123.55 40.65 120.75 42.45 117.4 44 L112.45 46 109.55 38.6 113.6 36.7 113.6 36.65 119.7 33.35 119.75 33.3 125.45 29.45 125.4 29.45 129.8 25.7"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M140.9 90.4 L140.9 94.2 Q140.9 95.05 140.35 95.65 139.75 96.2 138.9 96.2 L124.65 96.2 Q123.8 96.2 123.25 95.65 122.65 95.05 122.65 94.2 L122.65 90.4 Q122.65 91.05 123.25 91.65 123.8 92.2 124.65 92.2 L138.9 92.2 Q139.75 92.2 140.35 91.65 140.9 91.05 140.9 90.4 M122.65 49.85 L119.05 51.65 Q115.4 53.25 111.95 54.45 L110.5 54.4 Q109.75 54.05 109.45 53.3 L105.1 42.25 Q104.8 41.45 105.1 40.75 105.35 40.2 105.75 39.9 L109.45 49.3 Q109.75 50.05 110.5 50.4 L111.95 50.45 Q115.4 49.25 119.05 47.65 L122.65 45.85 122.65 49.85"/> + <path stroke="none" fill="#FFCC00" d="M194.85 38 L194.9 38 195 37.85 Q196.5 36.6 198.5 35.45 200.55 34.25 203 33.4 L202.95 33.4 Q205.55 32.4 208.45 32.4 212.7 32.4 215.6 34.55 218.85 36.7 218.85 42.1 218.85 44.45 217.8 46.75 L217.75 46.8 Q216.8 48.9 215.1 50.95 L211.4 54.95 207.1 59.1 207.1 59.15 201.1 64.9 Q198.15 67.6 195.9 70.8 193.65 73.85 192.25 77.5 L192.25 77.45 Q190.9 81 190.9 85.25 L190.9 87.55 190.9 88.2 231.45 88.2 231.45 80.2 204.85 80.2 Q204.2 80.2 203.7 79.85 203.15 79.45 202.95 78.85 202.75 78.2 202.95 77.6 203.3 76.4 204.75 74.55 L204.75 74.5 207.55 71.25 207.6 71.2 210.85 67.7 214.05 64.65 219.65 59.2 224.6 53.45 224.6 53.4 Q226.75 50.55 228.1 47.4 L228.15 47.35 Q229.45 44.35 229.45 41.1 229.45 37.1 228.25 34 L228.25 33.95 Q227.15 30.9 224.8 28.8 L224.75 28.8 Q222.3 26.55 218.55 25.4 216.65 24.8 214.45 24.5 L209.6 24.15 209.05 24.15 208.45 24.15 205.65 24.35 Q201.55 24.8 197.85 26.5 193.4 28.55 189.9 31.5 L194.6 38.15 194.6 38.2 194.85 38 M203.65 35.25 Q201.4 36.05 199.5 37.15 L196.25 39.4 194.25 41.1 187.2 31.15 Q191.4 27.25 197 24.65 202.6 22.15 209.05 22.15 214.95 22.15 219.15 23.5 223.35 24.8 226.1 27.3 228.5 29.45 229.75 32.4 L230.1 33.25 Q231.45 36.7 231.45 41.1 231.45 44.8 229.95 48.15 228.5 51.55 226.2 54.6 223.95 57.75 221.05 60.6 L215.4 66.1 212.25 69.1 209.05 72.55 206.3 75.75 Q205.15 77.25 204.85 78.2 L233.45 78.2 233.45 90.2 189.1 90.2 188.9 87.55 188.9 85.25 Q188.9 80.6 190.35 76.75 L191.6 74 Q192.75 71.7 194.25 69.6 196.65 66.3 199.7 63.45 L205.7 57.65 210 53.5 213.55 49.65 214.35 48.7 Q215.35 47.3 215.95 45.9 216.85 44.05 216.85 42.1 216.85 37.9 214.4 36.15 212 34.4 208.45 34.4 205.9 34.4 203.65 35.25"/> + <path stroke="none" fill="#FFFFFF" d="M194.6 38.15 L189.9 31.5 Q193.4 28.55 197.85 26.5 201.55 24.8 205.65 24.35 L208.45 24.15 209.05 24.15 209.6 24.15 214.45 24.5 Q216.65 24.8 218.55 25.4 222.3 26.55 224.75 28.8 L224.8 28.8 Q227.15 30.9 228.25 33.95 L228.25 34 Q229.45 37.1 229.45 41.1 229.45 44.35 228.15 47.35 L228.1 47.4 Q226.75 50.55 224.6 53.4 L224.6 53.45 219.65 59.2 214.05 64.65 210.85 67.7 207.6 71.2 207.55 71.25 204.75 74.5 204.75 74.55 Q203.3 76.4 202.95 77.6 202.75 78.2 202.95 78.85 203.15 79.45 203.7 79.85 204.2 80.2 204.85 80.2 L231.45 80.2 231.45 88.2 190.9 88.2 190.9 87.55 190.9 85.25 Q190.9 81 192.25 77.45 L192.25 77.5 Q193.65 73.85 195.9 70.8 198.15 67.6 201.1 64.9 L207.1 59.15 207.1 59.1 211.4 54.95 215.1 50.95 Q216.8 48.9 217.75 46.8 L217.8 46.75 Q218.85 44.45 218.85 42.1 218.85 36.7 215.6 34.55 212.7 32.4 208.45 32.4 205.55 32.4 202.95 33.4 L203 33.4 Q200.55 34.25 198.5 35.45 196.5 36.6 195 37.85 L194.9 38 194.85 38 194.6 38.15"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M186.3 33.3 L192.65 42.25 193.5 42.95 194.6 43.1 195.6 42.6 197.5 40.95 197.55 40.95 Q198.8 39.9 200.55 38.9 L200.5 38.9 Q202.25 37.85 204.35 37.15 206.25 36.4 208.45 36.4 211.3 36.4 213.25 37.8 214.85 39.1 214.85 42.1 L214.6 43.95 Q214.2 42.55 213.25 41.8 211.3 40.4 208.45 40.4 206.25 40.4 204.35 41.15 202.25 41.85 200.5 42.9 L200.55 42.9 Q198.8 43.9 197.55 44.95 L197.5 44.95 195.6 46.6 194.6 47.1 193.5 46.95 192.65 46.25 185.6 36.3 Q185.15 35.7 185.2 34.95 185.3 34.2 185.85 33.7 L186.3 33.3 M186.9 88.4 Q186.95 89.6 187.15 90.55 187.25 91.25 187.85 91.75 188.4 92.2 189.1 92.2 L233.45 92.2 Q234.3 92.2 234.9 91.65 235.45 91.05 235.45 90.4 L235.45 94.2 Q235.45 95.05 234.9 95.65 234.3 96.2 233.45 96.2 L189.1 96.2 Q188.4 96.2 187.85 95.75 187.25 95.25 187.15 94.55 186.9 93.3 186.9 91.55 L186.9 89.25 186.9 88.4 M212.1 76.2 L208.5 76.2 210.55 73.9 210.6 73.85 213.7 70.55 213.65 70.55 216.8 67.6 216.75 67.6 222.45 62.05 222.5 62 Q225.45 59.05 227.8 55.8 L227.85 55.8 Q230.25 52.55 231.8 49 L231.8 48.95 Q233.1 46.05 233.4 42.9 L233.45 45.1 Q233.45 49.2 231.8 52.95 L231.8 53 Q230.25 56.55 227.85 59.8 L227.8 59.8 Q225.45 63.05 222.5 66 L222.45 66.05 216.75 71.6 216.8 71.6 213.65 74.55 213.7 74.55 212.1 76.2"/> + <path stroke="none" fill="#999999" d="M212.1 76.2 L233.45 76.2 Q234.3 76.2 234.9 76.8 235.45 77.35 235.45 78.2 L235.45 90.4 Q235.45 91.05 234.9 91.65 234.3 92.2 233.45 92.2 L189.1 92.2 Q188.4 92.2 187.85 91.75 187.25 91.25 187.15 90.55 186.95 89.6 186.9 88.4 L186.9 87.55 186.9 85.25 Q186.9 80.2 188.5 76.05 190.05 71.95 192.65 68.45 195.15 65 198.35 62 L198.3 62 204.3 56.2 204.35 56.2 208.6 52.1 212 48.4 212.05 48.4 Q213.4 46.75 214.15 45.1 L214.15 45.05 214.6 43.95 214.85 42.1 Q214.85 39.1 213.25 37.8 211.3 36.4 208.45 36.4 206.25 36.4 204.35 37.15 202.25 37.85 200.5 38.9 L200.55 38.9 Q198.8 39.9 197.55 40.95 L197.5 40.95 195.6 42.6 194.6 43.1 193.5 42.95 192.65 42.25 186.3 33.3 185.6 32.3 Q185.15 31.7 185.2 30.95 185.3 30.2 185.85 29.7 190.25 25.55 196.15 22.85 L196.2 22.85 Q202.15 20.15 209.05 20.15 215.3 20.15 219.75 21.6 224.4 23.05 227.45 25.8 L227.45 25.85 Q230.55 28.6 232 32.6 L232 32.55 Q233.45 36.3 233.45 41.1 L233.4 42.9 Q233.1 46.05 231.8 48.95 L231.8 49 Q230.25 52.55 227.85 55.8 L227.8 55.8 Q225.45 59.05 222.5 62 L222.45 62.05 216.75 67.6 216.8 67.6 213.65 70.55 213.7 70.55 210.6 73.85 210.55 73.9 208.5 76.2 212.1 76.2 M203.65 35.25 Q205.9 34.4 208.45 34.4 212 34.4 214.4 36.15 216.85 37.9 216.85 42.1 216.85 44.05 215.95 45.9 215.35 47.3 214.35 48.7 L213.55 49.65 210 53.5 205.7 57.65 199.7 63.45 Q196.65 66.3 194.25 69.6 192.75 71.7 191.6 74 L190.35 76.75 Q188.9 80.6 188.9 85.25 L188.9 87.55 189.1 90.2 233.45 90.2 233.45 78.2 204.85 78.2 Q205.15 77.25 206.3 75.75 L209.05 72.55 212.25 69.1 215.4 66.1 221.05 60.6 Q223.95 57.75 226.2 54.6 228.5 51.55 229.95 48.15 231.45 44.8 231.45 41.1 231.45 36.7 230.1 33.25 L229.75 32.4 Q228.5 29.45 226.1 27.3 223.35 24.8 219.15 23.5 214.95 22.15 209.05 22.15 202.6 22.15 197 24.65 191.4 27.25 187.2 31.15 L194.25 41.1 196.25 39.4 199.5 37.15 Q201.4 36.05 203.65 35.25"/> + <path stroke="none" fill="#00CC99" d="M194.85 38 L194.6 38.2 194.6 38.15 194.85 38"/> + <path stroke="none" fill="#999999" d="M269.95 30.5 L269.2 29 Q268.85 28.3 269.1 27.55 269.3 26.85 269.95 26.45 271.55 25.35 273.7 24.35 L273.75 24.3 Q275.95 23.15 278.5 22.25 281.1 21.35 284.1 20.75 L284.15 20.75 290.5 20.15 Q296.7 20.15 301.3 21.65 L301.25 21.65 Q305.95 23.15 309 26 L309.05 26.05 Q312.2 28.85 313.65 32.7 L313.7 32.75 Q315.15 36.4 315.15 40.85 L315.05 42.65 Q314.65 46.15 312.7 49.55 311.15 52.1 309 53.9 310.2 54.65 311.3 55.55 313.25 57.2 314.65 59.3 317.8 63.9 317.8 70.4 L317.75 72.45 Q317.45 76.3 316.1 79.65 L316.15 79.65 Q314.45 83.95 310.85 87.15 L310.8 87.2 Q307.2 90.2 301.8 91.95 296.5 93.65 289.25 93.65 L283.55 93.35 283.5 93.35 277.8 92.35 272.75 91.05 272.65 91 269.05 89.75 268.4 89.3 268.05 88.8 Q267.75 88.15 267.9 87.45 L270.7 75.55 Q270.85 74.95 271.3 74.55 271.7 74.15 272.3 74.05 L273.45 74.15 279.6 76.35 Q283.25 77.45 288.7 77.45 294.45 77.45 297.15 75.4 298.7 74.1 299.2 72.25 L299.45 70.25 Q299.45 68.3 298.65 66.95 L298.6 66.9 Q297.8 65.55 296.35 64.7 L296.3 64.7 Q294.65 63.8 292.45 63.45 L287.15 63 281.55 63 Q280.7 63 280.15 62.45 279.55 61.85 279.55 61.2 L279.55 49.5 Q279.55 48.65 280.15 48.1 280.7 47.5 281.55 47.5 L287.9 47.5 291.55 47.15 294.45 46.15 Q295.5 45.45 296.2 44.35 L296.55 43.55 296.85 41.35 Q296.85 40.1 296.35 39.15 L296.3 39.15 Q295.8 38.2 294.95 37.6 294 36.9 292.75 36.6 L292.8 36.6 290.1 36.25 Q286.3 36.25 283.2 37.4 L283.15 37.4 Q279.9 38.5 277.15 40.25 L276.05 40.55 275 40.25 Q274.5 39.95 274.25 39.45 L269.95 30.5 M290.5 22.15 L284.5 22.7 279.15 24.15 Q276.7 25 274.6 26.1 L271 28.1 276.05 38.55 Q279 36.7 282.5 35.5 285.95 34.25 290.1 34.25 L293.3 34.65 Q294.9 35.1 296.1 35.95 297.3 36.8 298.05 38.15 298.85 39.55 298.85 41.35 298.85 43.75 297.9 45.35 L296.7 46.9 295.5 47.85 Q293.95 48.7 291.95 49.1 L287.9 49.5 281.55 49.5 281.55 61 287.15 61 292.75 61.45 Q295.4 61.9 297.3 62.95 299.25 64.1 300.3 65.85 301.45 67.65 301.45 70.25 301.45 73.85 299.25 76.2 L298.4 76.95 Q295.3 79.45 288.7 79.45 282.9 79.45 279 78.25 L272.65 76 269.85 87.9 273.3 89.1 278.2 90.4 283.75 91.35 289.25 91.65 Q296.15 91.65 301.2 90.05 306.2 88.45 309.5 85.65 312.75 82.8 314.25 78.9 315.8 75 315.8 70.4 315.8 66.2 314.35 62.9 L313 60.4 Q311.7 58.5 309.95 57.05 307.8 55.25 305 54.1 308.75 52.2 310.95 48.5 313.15 44.8 313.15 40.85 313.15 36.8 311.8 33.45 L311.55 32.75 Q310.2 29.75 307.65 27.5 304.9 24.9 300.65 23.55 296.35 22.15 290.5 22.15"/> + <path stroke="none" fill="#FFCC00" d="M290.5 22.15 Q296.35 22.15 300.65 23.55 304.9 24.9 307.65 27.5 310.2 29.75 311.55 32.75 L311.8 33.45 Q313.15 36.8 313.15 40.85 313.15 44.8 310.95 48.5 308.75 52.2 305 54.1 307.8 55.25 309.95 57.05 311.7 58.5 313 60.4 L314.35 62.9 Q315.8 66.2 315.8 70.4 315.8 75 314.25 78.9 312.75 82.8 309.5 85.65 306.2 88.45 301.2 90.05 296.15 91.65 289.25 91.65 L283.75 91.35 278.2 90.4 273.3 89.1 269.85 87.9 272.65 76 279 78.25 Q282.9 79.45 288.7 79.45 295.3 79.45 298.4 76.95 L299.25 76.2 Q301.45 73.85 301.45 70.25 301.45 67.65 300.3 65.85 299.25 64.1 297.3 62.95 295.4 61.9 292.75 61.45 L287.15 61 281.55 61 281.55 49.5 287.9 49.5 291.95 49.1 Q293.95 48.7 295.5 47.85 L296.7 46.9 297.9 45.35 Q298.85 43.75 298.85 41.35 298.85 39.55 298.05 38.15 297.3 36.8 296.1 35.95 294.9 35.1 293.3 34.65 L290.1 34.25 Q285.95 34.25 282.5 35.5 279 36.7 276.05 38.55 L271 28.1 274.6 26.1 Q276.7 25 279.15 24.15 L284.5 22.7 290.5 22.15 M283.95 89.35 L289.25 89.65 Q295.8 89.65 300.6 88.15 305.15 86.7 308.2 84.15 311.05 81.6 312.4 78.2 L312.4 78.15 Q313.8 74.6 313.8 70.4 313.8 65.2 311.35 61.55 308.8 57.8 304.25 55.95 303.5 55.65 303.2 54.95 302.85 54.2 303.15 53.45 303.4 52.7 304.1 52.35 307.35 50.7 309.25 47.5 311.15 44.25 311.15 40.85 311.15 37.2 309.95 34.2 L309.95 34.15 Q308.8 31.15 306.35 29 L306.3 28.95 Q303.85 26.65 300.05 25.45 L294.75 24.35 291.05 24.15 290.5 24.15 287.6 24.3 284.9 24.7 284.9 24.65 279.8 26.05 Q277.5 26.85 275.55 27.9 L275.5 27.9 273.6 28.9 276.95 35.75 Q279.25 34.5 281.85 33.6 L281.85 33.65 Q285.6 32.25 290.1 32.25 L293.8 32.75 293.85 32.75 Q295.8 33.3 297.25 34.35 298.8 35.4 299.8 37.2 L299.8 37.15 Q300.85 39 300.85 41.35 300.85 44.35 299.65 46.4 L299.65 46.35 Q298.5 48.35 296.6 49.55 L296.45 49.6 Q294.65 50.6 292.35 51.05 L290.15 51.4 288.65 51.5 287.9 51.5 283.55 51.5 283.55 59 287.15 59 293.1 59.5 Q296.1 60 298.3 61.2 L298.35 61.25 Q300.7 62.65 302 64.8 303.45 67 303.45 70.25 303.45 75.4 299.7 78.5 L299.65 78.5 Q296.85 80.85 291.55 81.35 L288.95 81.45 288.7 81.45 287.35 81.45 283.15 81.15 278.4 80.15 274.1 78.7 272.2 86.65 273.9 87.2 273.95 87.2 278.6 88.45 283.95 89.4 284 89.4 283.95 89.35"/> + <path stroke="none" fill="#FFFFFF" d="M283.95 89.35 L283.95 89.4 278.6 88.45 273.95 87.2 273.9 87.2 272.2 86.65 274.1 78.7 278.4 80.15 283.15 81.15 287.35 81.45 288.7 81.45 288.95 81.45 291.55 81.35 Q296.85 80.85 299.65 78.5 L299.7 78.5 Q303.45 75.4 303.45 70.25 303.45 67 302 64.8 300.7 62.65 298.35 61.25 L298.3 61.2 Q296.1 60 293.1 59.5 L287.15 59 283.55 59 283.55 51.5 287.9 51.5 288.65 51.5 290.15 51.4 292.35 51.05 Q294.65 50.6 296.45 49.6 L296.6 49.55 Q298.5 48.35 299.65 46.35 L299.65 46.4 Q300.85 44.35 300.85 41.35 300.85 39 299.8 37.15 L299.8 37.2 Q298.8 35.4 297.25 34.35 295.8 33.3 293.85 32.75 L293.8 32.75 290.1 32.25 Q285.6 32.25 281.85 33.65 L281.85 33.6 Q279.25 34.5 276.95 35.75 L273.6 28.9 275.5 27.9 275.55 27.9 Q277.5 26.85 279.8 26.05 L284.9 24.65 284.9 24.7 287.6 24.3 290.5 24.15 291.05 24.15 294.75 24.35 300.05 25.45 Q303.85 26.65 306.3 28.95 L306.35 29 Q308.8 31.15 309.95 34.15 L309.95 34.2 Q311.15 37.2 311.15 40.85 311.15 44.25 309.25 47.5 307.35 50.7 304.1 52.35 303.4 52.7 303.15 53.45 302.85 54.2 303.2 54.95 303.5 55.65 304.25 55.95 308.8 57.8 311.35 61.55 313.8 65.2 313.8 70.4 313.8 74.6 312.4 78.15 L312.4 78.2 Q311.05 81.6 308.2 84.15 305.15 86.7 300.6 88.15 295.8 89.65 289.25 89.65 L283.95 89.35"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M315.05 42.65 L315.15 44.85 Q315.15 49.35 312.7 53.55 L311.3 55.55 Q310.2 54.65 309 53.9 311.15 52.1 312.7 49.55 314.65 46.15 315.05 42.65 M317.75 72.45 L317.8 74.4 Q317.8 79.4 316.1 83.65 L316.15 83.65 Q314.45 87.95 310.85 91.15 L310.8 91.2 Q307.2 94.2 301.8 95.95 296.5 97.65 289.25 97.65 L283.55 97.35 283.5 97.35 277.8 96.35 272.75 95.05 272.65 95 269.05 93.75 Q268.4 93.45 268.05 92.8 267.75 92.15 267.9 91.45 L268.4 89.3 269.05 89.75 272.65 91 272.75 91.05 277.8 92.35 283.5 93.35 283.55 93.35 289.25 93.65 Q296.5 93.65 301.8 91.95 307.2 90.2 310.8 87.2 L310.85 87.15 Q314.45 83.95 316.15 79.65 L316.1 79.65 Q317.45 76.3 317.75 72.45 M299.2 72.25 L298.65 70.95 298.6 70.9 Q297.8 69.55 296.35 68.7 L296.3 68.7 Q294.65 67.8 292.45 67.45 L287.15 67 281.55 67 Q280.7 67 280.15 66.45 279.55 65.85 279.55 65 L279.55 61.2 Q279.55 61.85 280.15 62.45 280.7 63 281.55 63 L287.15 63 292.45 63.45 Q294.65 63.8 296.3 64.7 L296.35 64.7 Q297.8 65.55 298.6 66.9 L298.65 66.95 Q299.45 68.3 299.45 70.25 L299.2 72.25 M296.55 43.55 L296.35 43.15 296.3 43.15 Q295.8 42.2 294.95 41.6 294 40.9 292.75 40.6 L292.8 40.6 290.1 40.25 Q286.3 40.25 283.2 41.4 L283.15 41.4 Q279.9 42.5 277.15 44.25 L276.05 44.55 275 44.25 Q274.5 43.95 274.25 43.45 L269.2 33 Q268.85 32.3 269.1 31.55 269.3 30.85 269.95 30.5 L274.25 39.45 Q274.5 39.95 275 40.25 L276.05 40.55 277.15 40.25 Q279.9 38.5 283.15 37.4 L283.2 37.4 Q286.3 36.25 290.1 36.25 L292.8 36.6 292.75 36.6 Q294 36.9 294.95 37.6 295.8 38.2 296.3 39.15 L296.35 39.15 Q296.85 40.1 296.85 41.35 L296.55 43.55"/> + <path stroke="none" fill="#00CC99" d="M283.95 89.35 L284 89.4 283.95 89.4 283.95 89.35"/> + <path stroke="none" fill="#999999" d="M350.8 75.55 L350.8 64.85 351.05 63.95 Q353.2 59.65 356.4 54.35 359.55 48.95 363.5 43.25 L363.5 43.2 Q367.45 37.55 371.8 32.15 376.15 26.65 380.65 22.3 381.25 21.7 382.05 21.7 L395.55 21.7 Q396.4 21.7 397 22.3 397.55 22.85 397.55 23.7 L397.55 61.6 402.65 61.6 Q403.5 61.6 404.1 62.2 404.65 62.75 404.65 63.6 L404.65 75.55 Q404.65 76.2 404.1 76.8 403.5 77.35 402.65 77.35 L397.55 77.35 397.55 81.35 397.55 90.4 Q397.55 91.05 397 91.65 396.4 92.2 395.55 92.2 L381.5 92.2 Q380.65 92.2 380.1 91.65 379.5 91.05 379.5 90.4 L379.5 81.35 379.5 77.35 352.8 77.35 Q351.95 77.35 351.4 76.8 350.8 76.2 350.8 75.55 M382.05 23.7 Q377.65 28 373.35 33.4 369.05 38.75 365.15 44.35 361.25 50 358.1 55.35 L355.05 60.65 352.8 64.85 352.8 75.35 381.5 75.35 381.5 90.2 395.55 90.2 395.55 75.35 402.65 75.35 402.65 63.6 395.55 63.6 395.55 23.7 382.05 23.7 M379.5 51.1 L379.5 47.1 375.2 53 Q372.05 57.25 369.7 61.6 L372.05 61.6 379.5 61.6 379.5 51.1 M366.45 63.6 Q369.3 57.6 373.55 51.8 L381.5 41.1 381.5 63.6 366.45 63.6"/> + <path stroke="none" fill="#FFCC00" d="M366.45 63.6 L381.5 63.6 381.5 41.1 373.55 51.8 Q369.3 57.6 366.45 63.6 M374.95 34.65 L374.9 34.65 Q370.65 39.95 366.8 45.5 362.95 51.05 359.85 56.4 356.85 61.3 354.8 65.3 L354.8 73.35 381.5 73.35 Q382.35 73.35 382.95 73.95 383.5 74.5 383.5 75.35 L383.5 88.2 393.55 88.2 393.55 75.35 Q393.55 74.5 394.15 73.95 394.7 73.35 395.55 73.35 L400.65 73.35 400.65 65.6 395.55 65.6 Q394.7 65.6 394.15 65.05 393.55 64.45 393.55 63.6 L393.55 25.7 382.9 25.7 Q378.85 29.7 374.95 34.65 M379.9 39.9 Q380.3 39.4 380.9 39.2 381.5 39 382.15 39.2 382.75 39.4 383.15 39.95 383.5 40.45 383.5 41.1 L383.5 63.6 Q383.5 64.45 382.95 65.05 382.35 65.6 381.5 65.6 L366.45 65.6 Q365.75 65.6 365.2 65.2 L364.5 64.05 Q364.35 63.4 364.65 62.75 367.55 56.6 371.95 50.65 L379.9 39.9 M382.05 23.7 L395.55 23.7 395.55 63.6 402.65 63.6 402.65 75.35 395.55 75.35 395.55 90.2 381.5 90.2 381.5 75.35 352.8 75.35 352.8 64.85 355.05 60.65 358.1 55.35 Q361.25 50 365.15 44.35 369.05 38.75 373.35 33.4 377.65 28 382.05 23.7"/> + <path stroke="none" fill="#FFFFFF" d="M379.9 39.9 L371.95 50.65 Q367.55 56.6 364.65 62.75 364.35 63.4 364.5 64.05 L365.2 65.2 Q365.75 65.6 366.45 65.6 L381.5 65.6 Q382.35 65.6 382.95 65.05 383.5 64.45 383.5 63.6 L383.5 41.1 Q383.5 40.45 383.15 39.95 382.75 39.4 382.15 39.2 381.5 39 380.9 39.2 380.3 39.4 379.9 39.9 M374.95 34.65 Q378.85 29.7 382.9 25.7 L393.55 25.7 393.55 63.6 Q393.55 64.45 394.15 65.05 394.7 65.6 395.55 65.6 L400.65 65.6 400.65 73.35 395.55 73.35 Q394.7 73.35 394.15 73.95 393.55 74.5 393.55 75.35 L393.55 88.2 383.5 88.2 383.5 75.35 Q383.5 74.5 382.95 73.95 382.35 73.35 381.5 73.35 L354.8 73.35 354.8 65.3 Q356.85 61.3 359.85 56.4 362.95 51.05 366.8 45.5 370.65 39.95 374.9 34.65 L374.95 34.65"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M404.65 75.55 L404.65 79.35 Q404.65 80.2 404.1 80.8 403.5 81.35 402.65 81.35 L397.55 81.35 397.55 77.35 402.65 77.35 Q403.5 77.35 404.1 76.8 404.65 76.2 404.65 75.55 M397.55 90.4 L397.55 94.2 Q397.55 95.05 397 95.65 396.4 96.2 395.55 96.2 L381.5 96.2 Q380.65 96.2 380.1 95.65 379.5 95.05 379.5 94.2 L379.5 90.4 Q379.5 91.05 380.1 91.65 380.65 92.2 381.5 92.2 L395.55 92.2 Q396.4 92.2 397 91.65 397.55 91.05 397.55 90.4 M379.5 81.35 L352.8 81.35 Q351.95 81.35 351.4 80.8 350.8 80.2 350.8 79.35 L350.8 75.55 Q350.8 76.2 351.4 76.8 351.95 77.35 352.8 77.35 L379.5 77.35 379.5 81.35 M372.05 61.6 L369.7 61.6 Q372.05 57.25 375.2 53 L379.5 47.1 379.5 51.1 375.2 57 372.05 61.6"/> + <path stroke="none" fill="#FFCC00" d="M451.85 89.35 L457 89.65 Q463.3 89.65 468 88.1 472.5 86.6 475.5 84 478.4 81.4 479.85 77.9 481.3 74.35 481.3 70.15 481.3 61.15 475.35 56.1 471.05 52.5 463.6 50.95 L458.2 50.15 455.85 49.95 454.8 49.6 454.15 48.75 Q453.9 48.25 454 47.7 L454.5 42.2 454.9 35.6 Q454.95 34.8 455.55 34.25 456.1 33.7 456.9 33.7 L478.9 33.7 478.9 25.7 446.85 25.7 445.85 41.1 444.4 57.15 455.45 57.9 Q461 58.7 464.3 60.3 L464.25 60.3 Q468 62.05 469.5 64.7 L469.55 64.75 Q471 67.3 471 70.6 471.05 75 467.4 78.3 464.65 80.85 459.2 81.35 L456.65 81.45 456.45 81.45 451.6 81.25 446.5 80.4 442.15 79.1 440.45 87 441.9 87.45 441.85 87.4 446.5 88.5 451.85 89.4 451.9 89.4 451.85 89.35 M456.5 42.35 L455.95 47.95 458.4 48.15 Q470.6 49.4 476.65 54.55 479.75 57.15 481.4 60.75 483.3 64.8 483.3 70.15 483.3 74.75 481.7 78.65 480.05 82.6 476.8 85.5 473.55 88.35 468.6 90 463.65 91.65 457 91.65 L451.6 91.35 446.1 90.45 441.35 89.35 438.1 88.2 440.7 76.35 Q443.1 77.45 447 78.45 450.95 79.45 456.45 79.45 463.05 79.45 466.05 76.8 L466.8 76.05 Q469 73.65 469 70.6 469 67.85 467.8 65.7 466.5 63.55 463.4 62.1 460.35 60.6 455.15 59.85 L442.15 59.1 443.85 40.95 444.8 25.7 444.9 23.7 480.9 23.7 480.9 35.7 456.9 35.7 456.5 42.35"/> + <path stroke="none" fill="#FFFFFF" d="M451.85 89.4 L446.5 88.5 441.85 87.4 441.9 87.45 440.45 87 442.15 79.1 446.5 80.4 451.6 81.25 456.45 81.45 456.65 81.45 459.2 81.35 Q464.65 80.85 467.4 78.3 471.05 75 471 70.6 471 67.3 469.55 64.75 L469.5 64.7 Q468 62.05 464.25 60.3 L464.3 60.3 Q461 58.7 455.45 57.9 L444.4 57.15 445.85 41.1 446.85 25.7 478.9 25.7 478.9 33.7 456.9 33.7 Q456.1 33.7 455.55 34.25 454.95 34.8 454.9 35.6 L454.5 42.2 454 47.7 Q453.9 48.25 454.15 48.75 L454.8 49.6 455.85 49.95 458.2 50.15 463.6 50.95 Q471.05 52.5 475.35 56.1 481.3 61.15 481.3 70.15 481.3 74.35 479.85 77.9 478.4 81.4 475.5 84 472.5 86.6 468 88.1 463.3 89.65 457 89.65 L451.85 89.35 451.85 89.4"/> + <path stroke="none" fill="#999999" d="M456.5 42.35 L456.9 35.7 480.9 35.7 480.9 23.7 444.9 23.7 444.8 25.7 443.85 40.95 442.15 59.1 455.15 59.85 Q460.35 60.6 463.4 62.1 466.5 63.55 467.8 65.7 469 67.85 469 70.6 469 73.65 466.8 76.05 L466.05 76.8 Q463.05 79.45 456.45 79.45 450.95 79.45 447 78.45 443.1 77.45 440.7 76.35 L438.1 88.2 441.35 89.35 446.1 90.45 451.6 91.35 457 91.65 Q463.65 91.65 468.6 90 473.55 88.35 476.8 85.5 480.05 82.6 481.7 78.65 483.3 74.75 483.3 70.15 483.3 64.8 481.4 60.75 479.75 57.15 476.65 54.55 470.6 49.4 458.4 48.15 L455.95 47.95 456.5 42.35 M440.45 60.15 L440.35 60 Q440.1 59.45 440.15 58.9 L441.85 40.8 442.9 23.65 Q442.95 22.8 443.55 22.25 444.1 21.7 444.9 21.7 L480.9 21.7 Q481.75 21.7 482.35 22.3 482.9 22.85 482.9 23.7 L482.9 35.9 Q482.9 36.55 482.35 37.15 481.75 37.7 480.9 37.7 L458.8 37.7 458.5 42.5 458.2 46.15 458.55 46.15 Q471.55 47.45 477.95 53.05 485.3 59.15 485.3 70.15 L485.25 72.1 Q484.95 76 483.55 79.4 L483.55 79.45 Q481.7 83.8 478.15 87 474.6 90.1 469.25 91.9 464 93.65 457 93.65 L451.4 93.35 451.35 93.35 445.75 92.45 445.7 92.4 440.85 91.3 440.8 91.3 437.25 90 436.65 89.6 436.3 89.1 Q436 88.45 436.15 87.8 L438.75 75.95 Q438.9 75.35 439.35 74.9 439.75 74.5 440.4 74.4 L441.55 74.55 Q443.8 75.55 447.5 76.55 L447.5 76.5 Q451.25 77.45 456.45 77.45 462.1 77.45 464.75 75.3 466.2 73.95 466.75 72.35 L467 70.6 Q467 68.4 466.05 66.7 L466.1 66.75 Q465 65.05 462.55 63.9 459.7 62.55 454.9 61.85 L454.85 61.85 442.15 61.1 441.1 60.8 440.45 60.15"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M440.45 60.15 L441.1 60.8 442.15 61.1 454.85 61.85 454.9 61.85 Q459.7 62.55 462.55 63.9 465 65.05 466.1 66.75 L466.05 66.7 Q467 68.4 467 70.6 L466.75 72.35 466.05 70.7 466.1 70.75 Q465 69.05 462.55 67.9 459.7 66.55 454.9 65.85 L454.85 65.85 442.15 65.1 441.1 64.8 440.35 64 Q440.1 63.45 440.15 62.9 L440.45 60.15 M482.9 35.9 L482.9 39.7 Q482.9 40.55 482.35 41.15 481.75 41.7 480.9 41.7 L458.8 41.7 458.55 46.15 458.2 46.15 458.5 42.5 458.8 37.7 480.9 37.7 Q481.75 37.7 482.35 37.15 482.9 36.55 482.9 35.9 M485.25 72.1 L485.3 74.15 Q485.3 79.15 483.55 83.4 L483.55 83.45 Q481.7 87.8 478.15 91 474.6 94.1 469.25 95.9 464 97.65 457 97.65 L451.4 97.35 451.35 97.35 445.75 96.45 445.7 96.4 440.85 95.3 440.8 95.3 437.25 94 Q436.6 93.7 436.3 93.1 436 92.45 436.15 91.8 L436.65 89.6 437.25 90 440.8 91.3 440.85 91.3 445.7 92.4 445.75 92.45 451.35 93.35 451.4 93.35 457 93.65 Q464 93.65 469.25 91.9 474.6 90.1 478.15 87 481.7 83.8 483.55 79.45 L483.55 79.4 Q484.95 76 485.25 72.1"/> + <path stroke="none" fill="#00CC99" d="M451.85 89.35 L451.9 89.4 451.85 89.4 451.85 89.35"/> + <path stroke="none" fill="#999999" d="M519.6 65 L519.55 63 Q519.55 53.05 522.65 45.3 525.8 37.45 531.7 32.15 537.5 26.8 545.75 24.05 L545.7 24.05 Q553.85 21.3 564 21.2 564.8 21.2 565.4 21.75 565.95 22.3 566 23.1 L566.35 28.85 566.75 34.8 566.55 35.75 566.55 35.8 565.8 36.6 564.8 36.9 556 37.8 555.95 37.85 Q552 38.5 548.7 40.15 545.55 41.7 543.2 44.15 L543.15 44.2 Q542.3 45.1 541.6 46.2 L541.7 46.2 545.95 45.8 546.15 45.8 Q552.75 45.8 557.4 47.6 562.3 49.4 565.35 52.65 L565.35 52.6 Q568.4 55.8 569.8 60.1 L569.8 60.05 Q571.2 64.2 571.2 68.85 L571.15 70.75 Q570.85 74 569.7 77.4 568.15 81.8 565.1 85.35 L565.05 85.4 Q561.95 88.95 557.25 91.25 552.5 93.55 546.05 93.55 533 93.55 526.25 85.25 520 77.75 519.6 65 M546.35 25.95 Q538.55 28.55 533.05 33.6 528.75 37.55 525.95 42.9 525.15 44.4 524.5 46.05 521.55 53.45 521.55 63 521.55 76.35 527.8 83.95 534.05 91.55 546.05 91.55 552 91.55 556.35 89.45 560.7 87.35 563.55 84.05 566.4 80.8 567.8 76.75 569.2 72.7 569.2 68.85 569.2 64.55 567.9 60.7 L567.2 58.85 Q565.95 56.15 563.9 54 561.15 51.1 556.7 49.45 552.35 47.8 546.15 47.8 L543.4 47.95 542 48.15 Q539.8 48.55 537.7 49.5 539.15 45.6 541.7 42.8 544.3 40.1 547.8 38.35 551.35 36.6 555.6 35.85 559.85 35 564.75 34.9 L564.35 29 564.1 25.2 564 23.2 Q554.2 23.3 546.35 25.95 M536 61.5 L536.05 60.35 Q537.4 59.7 539.8 59.3 L544.3 58.9 Q550.05 58.9 552.5 61.55 554.95 64.2 554.95 69.05 554.95 70.8 554.4 72.65 553.9 74.55 552.8 76.1 L552.35 76.75 Q551.35 77.85 550 78.6 548.35 79.65 545.95 79.65 543.1 79.65 541.15 78.35 L539.35 76.75 538.05 74.75 Q536.9 72.45 536.4 69.4 535.95 66.3 535.95 62.85 L536 61.5 M552.8 70.85 L552.95 69.05 Q552.95 65.1 551.05 62.9 549 60.9 544.3 60.9 L540.15 61.3 538 61.75 537.95 62.85 538.05 65.75 538.4 69.15 538.4 69.1 Q538.85 71.8 539.85 73.85 540.75 75.65 542.25 76.7 543.75 77.65 545.95 77.65 547.7 77.65 548.95 76.95 L549.05 76.85 Q550.35 76.15 551.2 74.95 552.05 73.7 552.5 72.15 L552.5 72.1 552.8 70.85"/> + <path stroke="none" fill="#FFCC00" d="M546.35 25.95 Q554.2 23.3 564 23.2 L564.1 25.2 564.35 29 564.75 34.9 Q559.85 35 555.6 35.85 551.35 36.6 547.8 38.35 544.3 40.1 541.7 42.8 539.15 45.6 537.7 49.5 539.8 48.55 542 48.15 L543.4 47.95 546.15 47.8 Q552.35 47.8 556.7 49.45 561.15 51.1 563.9 54 565.95 56.15 567.2 58.85 L567.9 60.7 Q569.2 64.55 569.2 68.85 569.2 72.7 567.8 76.75 566.4 80.8 563.55 84.05 560.7 87.35 556.35 89.45 552 91.55 546.05 91.55 534.05 91.55 527.8 83.95 521.55 76.35 521.55 63 521.55 53.45 524.5 46.05 525.15 44.4 525.95 42.9 528.75 37.55 533.05 33.6 538.55 28.55 546.35 25.95 M562.35 29.15 L562.1 25.25 554.2 26.05 Q550.4 26.7 547 27.85 539.6 30.3 534.4 35.1 529.2 39.85 526.35 46.8 523.55 53.85 523.55 63 523.55 75.5 529.35 82.7 535.1 89.55 546.05 89.55 551.5 89.55 555.5 87.65 559.45 85.75 562.05 82.75 564.65 79.8 565.9 76.1 567.2 72.4 567.2 68.85 567.2 64.9 566 61.35 564.9 57.9 562.45 55.4 560 52.8 556 51.35 553.55 50.4 550.45 50.05 L546.55 49.8 546.15 49.8 546.05 49.8 543.75 49.95 542.35 50.15 Q540.4 50.5 538.55 51.35 L537 51.4 Q536.2 51.1 535.9 50.35 535.55 49.55 535.85 48.8 537.4 44.5 540.25 41.45 543.1 38.45 546.9 36.55 L546.95 36.55 Q550.7 34.7 555.2 33.9 L555.25 33.9 562.65 33 562.35 29.15 M534.05 60.35 Q534.05 59.8 534.35 59.3 534.65 58.8 535.2 58.55 536.7 57.8 539.5 57.35 L544.3 56.9 Q551.1 56.9 554 60.2 556.95 63.3 556.95 69.05 556.95 71.05 556.35 73.15 555.75 75.4 554.45 77.25 553.05 79.15 551 80.35 L551.1 80.3 Q549.15 81.55 546.45 81.65 L546.05 81.65 545.95 81.65 545.4 81.65 Q542.25 81.55 540.05 80.05 L540.05 80 Q537.7 78.45 536.3 75.7 L536.25 75.65 Q534.95 73.1 534.45 69.75 L534.45 69.7 Q533.95 66.45 533.95 62.85 L534 61.4 534.05 60.35 M536 61.5 L535.95 62.85 Q535.95 66.3 536.4 69.4 536.9 72.45 538.05 74.75 L539.35 76.75 541.15 78.35 Q543.1 79.65 545.95 79.65 548.35 79.65 550 78.6 551.35 77.85 552.35 76.75 L552.8 76.1 Q553.9 74.55 554.4 72.65 554.95 70.8 554.95 69.05 554.95 64.2 552.5 61.55 550.05 58.9 544.3 58.9 L539.8 59.3 Q537.4 59.7 536.05 60.35 L536 61.5"/> + <path stroke="none" fill="#FFFFFF" d="M562.35 29.15 L562.65 33 555.25 33.9 555.2 33.9 Q550.7 34.7 546.95 36.55 L546.9 36.55 Q543.1 38.45 540.25 41.45 537.4 44.5 535.85 48.8 535.55 49.55 535.9 50.35 536.2 51.1 537 51.4 L538.55 51.35 Q540.4 50.5 542.35 50.15 L543.75 49.95 546.05 49.8 546.15 49.8 546.55 49.8 550.45 50.05 Q553.55 50.4 556 51.35 560 52.8 562.45 55.4 564.9 57.9 566 61.35 567.2 64.9 567.2 68.85 567.2 72.4 565.9 76.1 564.65 79.8 562.05 82.75 559.45 85.75 555.5 87.65 551.5 89.55 546.05 89.55 535.1 89.55 529.35 82.7 523.55 75.5 523.55 63 523.55 53.85 526.35 46.8 529.2 39.85 534.4 35.1 539.6 30.3 547 27.85 550.4 26.7 554.2 26.05 L562.1 25.25 562.35 29.15 M534.05 60.35 L534 61.4 533.95 62.85 Q533.95 66.45 534.45 69.7 L534.45 69.75 Q534.95 73.1 536.25 75.65 L536.3 75.7 Q537.7 78.45 540.05 80 L540.05 80.05 Q542.25 81.55 545.4 81.65 L545.95 81.65 546.05 81.65 546.45 81.65 Q549.15 81.55 551.1 80.3 L551 80.35 Q553.05 79.15 554.45 77.25 555.75 75.4 556.35 73.15 556.95 71.05 556.95 69.05 556.95 63.3 554 60.2 551.1 56.9 544.3 56.9 L539.5 57.35 Q536.7 57.8 535.2 58.55 534.65 58.8 534.35 59.3 534.05 59.8 534.05 60.35"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M566.55 35.8 L566.75 38.8 566.55 39.8 565.8 40.6 564.8 40.9 556 41.8 555.95 41.85 Q552 42.5 548.7 44.15 L545.95 45.8 541.7 46.2 541.6 46.2 Q542.3 45.1 543.15 44.2 L543.2 44.15 Q545.55 41.7 548.7 40.15 552 38.5 555.95 37.85 L556 37.8 564.8 36.9 565.8 36.6 566.55 35.8 M571.15 70.75 L571.2 72.85 Q571.2 77 569.7 81.4 568.15 85.8 565.1 89.35 L565.05 89.4 Q561.95 92.95 557.25 95.25 552.5 97.55 546.05 97.55 533 97.55 526.25 89.25 519.55 81.2 519.55 67 L519.6 65 Q520 77.75 526.25 85.25 533 93.55 546.05 93.55 552.5 93.55 557.25 91.25 561.95 88.95 565.05 85.4 L565.1 85.35 Q568.15 81.8 569.7 77.4 570.85 74 571.15 70.75 M552.8 70.85 Q552.4 68.45 551.05 66.9 549 64.9 544.3 64.9 L540.15 65.3 538.05 65.75 537.95 62.85 538 61.75 540.15 61.3 544.3 60.9 Q549 60.9 551.05 62.9 552.95 65.1 552.95 69.05 L552.8 70.85"/> + <path stroke="none" fill="#999999" d="M652.2 33.95 L652.2 23.6 605.7 23.6 605.7 35.8 634.6 35.8 630.7 41.8 629.85 43.35 627.95 46.95 Q624.7 53.45 622.05 60.7 619.4 68.05 617.6 75.6 615.75 83.2 615.2 90.2 L629.7 90.2 Q630.25 81.6 632.7 72.9 635.15 64.3 638.45 56.75 641.75 49.25 645.45 43.3 649.2 37.35 652.2 33.95 M603.7 36 L603.7 23.6 Q603.7 22.75 604.3 22.2 604.85 21.6 605.7 21.6 L652.2 21.6 Q653.05 21.6 653.65 22.2 654.2 22.75 654.2 23.6 L654.2 34.1 Q654.2 34.7 653.7 35.3 650.8 38.6 647.15 44.4 L647.15 44.35 Q643.5 50.2 640.3 57.55 637.05 65 634.65 73.45 632.25 81.95 631.7 90.35 631.65 91.1 631.1 91.65 630.5 92.2 629.7 92.2 L615.2 92.2 Q614.65 92.2 614.15 91.9 L613.5 91.2 613.45 91.1 Q613.15 90.6 613.2 90.05 613.75 82.9 615.65 75.15 617.5 67.45 620.2 60.05 622.85 52.65 626.15 46.05 L628.4 41.8 630.8 37.8 605.7 37.8 Q604.85 37.8 604.3 37.25 603.7 36.65 603.7 36"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M603.7 36 Q603.7 36.65 604.3 37.25 604.85 37.8 605.7 37.8 L630.8 37.8 628.4 41.8 605.7 41.8 Q604.85 41.8 604.3 41.25 603.7 40.65 603.7 39.8 L603.7 36 M654.2 34.1 L654.2 37.95 Q654.2 38.7 653.7 39.3 650.8 42.6 647.15 48.4 L647.15 48.35 Q643.5 54.2 640.3 61.55 637.05 69 634.65 77.45 632.25 85.95 631.7 94.35 631.65 95.1 631.1 95.65 630.5 96.2 629.7 96.2 L615.2 96.2 Q614.65 96.2 614.15 95.9 L613.45 95.1 Q613.15 94.6 613.2 94.05 L613.5 91.2 614.15 91.9 Q614.65 92.2 615.2 92.2 L629.7 92.2 Q630.5 92.2 631.1 91.65 631.65 91.1 631.7 90.35 632.25 81.95 634.65 73.45 637.05 65 640.3 57.55 643.5 50.2 647.15 44.35 L647.15 44.4 Q650.8 38.6 653.7 35.3 654.2 34.7 654.2 34.1"/> + <path stroke="none" fill="#FFCC00" d="M650.2 33.2 L650.2 25.6 607.7 25.6 607.7 33.8 634.6 33.8 Q635.35 33.8 635.95 34.35 636.5 34.85 636.6 35.6 636.7 36.35 636.25 37 632.9 41.5 629.75 47.85 626.55 54.25 623.95 61.4 621.3 68.65 619.55 76.1 618 82.35 617.4 88.2 L627.85 88.2 Q628.55 80.3 630.8 72.35 633.25 63.6 636.65 55.95 640 48.3 643.75 42.25 647.3 36.6 650.2 33.2 M652.2 33.95 Q649.2 37.35 645.45 43.3 641.75 49.25 638.45 56.75 635.15 64.3 632.7 72.9 630.25 81.6 629.7 90.2 L615.2 90.2 Q615.75 83.2 617.6 75.6 619.4 68.05 622.05 60.7 624.7 53.45 627.95 46.95 L629.85 43.35 630.7 41.8 634.6 35.8 605.7 35.8 605.7 23.6 652.2 23.6 652.2 33.95"/> + <path stroke="none" fill="#FFFFFF" d="M650.2 33.2 Q647.3 36.6 643.75 42.25 640 48.3 636.65 55.95 633.25 63.6 630.8 72.35 628.55 80.3 627.85 88.2 L617.4 88.2 Q618 82.35 619.55 76.1 621.3 68.65 623.95 61.4 626.55 54.25 629.75 47.85 632.9 41.5 636.25 37 636.7 36.35 636.6 35.6 636.5 34.85 635.95 34.35 635.35 33.8 634.6 33.8 L607.7 33.8 607.7 25.6 650.2 25.6 650.2 33.2"/> + <path stroke="none" fill="#FFCC00" d="M704.05 25.6 L704.05 25.65 Q700.3 27.05 697.7 29.45 695.1 31.8 693.7 35 L693.7 34.95 Q692.3 38.1 692.3 41.55 692.3 46 694 48.9 L693.95 48.85 Q695.8 51.8 699.65 54.95 L700.3 55.95 700.25 57.15 699.6 58.1 Q697.75 59.45 696.15 61.05 694.6 62.55 693.35 64.3 L693.4 64.25 Q692.2 66 691.5 68.2 L691.5 68.15 Q690.85 70.3 690.85 72.8 690.85 75.3 691.9 78.25 692.9 81.15 695.25 83.6 L695.3 83.6 Q697.85 86.1 701.9 87.85 706 89.55 712.3 89.55 717.8 89.55 721.95 88.15 725.95 86.8 728.65 84.45 L728.7 84.4 Q731.3 82 732.65 78.85 733.95 75.6 733.95 71.7 733.95 67.1 731.9 63.65 729.7 60.1 724.7 56.85 L723.9 55.8 Q723.7 55.15 723.95 54.5 724.15 53.8 724.75 53.45 728 51.4 730.2 47.8 732.35 44.3 732.35 40.3 732.35 37.45 731.3 34.6 730.2 31.75 727.9 29.55 L727.85 29.55 Q725.45 27.2 721.7 25.7 L721.65 25.7 Q719.35 24.75 716.45 24.4 L712.8 24.15 712.4 24.15 711.65 24.15 709.6 24.3 Q706.6 24.6 704.05 25.6 M691.85 34.15 L691.9 34.05 Q693.5 30.55 696.35 27.95 699.2 25.35 703.3 23.75 707.35 22.15 712.4 22.15 718.25 22.15 722.4 23.85 726.6 25.5 729.25 28.1 731.65 30.35 732.85 33.15 L733.15 33.9 Q734.35 37.1 734.35 40.3 734.35 44.85 731.9 48.85 729.45 52.85 725.8 55.15 L730.05 58.4 Q732.3 60.45 733.6 62.6 L734.45 64.25 Q735.95 67.55 735.95 71.7 735.95 76 734.5 79.6 733 83.2 730 85.9 727.05 88.55 722.6 90.05 718.15 91.55 712.3 91.55 705.55 91.55 701.1 89.7 696.65 87.8 693.85 85 691.15 82.25 690 78.9 688.85 75.6 688.85 72.8 688.85 69.95 689.6 67.55 L690.3 65.7 Q690.9 64.35 691.7 63.15 692.95 61.35 694.55 59.8 L694.75 59.6 698.35 56.5 Q694.25 53.1 692.25 49.9 690.3 46.6 690.3 41.55 690.3 37.7 691.85 34.15 M704.75 34.75 Q705.95 33.35 707.9 32.55 709.75 31.65 712.4 31.65 715.1 31.65 717 32.55 L717.05 32.55 Q718.9 33.5 720.1 34.8 L720.15 34.8 Q721.4 36.2 722 37.7 722.55 39.25 722.55 40.65 722.55 44.95 720.6 47.9 718.7 50.8 715.25 52.95 714.85 53.2 714.45 53.25 L713.55 53.15 Q707.45 51.05 705 47.9 L704.95 47.9 Q702.2 44.65 702.25 40.85 702.25 39.4 702.85 37.8 L702.85 37.75 Q703.4 36.2 704.75 34.75 M704.7 38.45 Q704.25 39.7 704.25 40.85 704.25 43.95 706.5 46.6 L706.55 46.65 Q708.8 49.35 714.2 51.25 716.55 49.8 718.1 47.95 L718.9 46.8 Q720.55 44.3 720.55 40.65 L720.1 38.4 Q719.65 37.25 718.65 36.15 717.65 35.1 716.15 34.35 714.6 33.65 712.4 33.65 710.25 33.65 708.75 34.35 707.2 35 706.2 36.1 705.15 37.25 704.7 38.45 M714.15 62.95 L709.1 61.1 Q706.45 63.1 704.6 65.85 702.75 68.5 702.75 72.25 702.75 73.4 703.3 74.8 703.75 76.15 704.9 77.25 L705 77.35 Q706.15 78.5 707.95 79.3 709.75 80.05 712.4 80.05 717.35 80.05 719.65 77.65 L719.8 77.5 Q721.95 75.15 721.95 72.25 721.95 70.05 720.95 68.3 719.95 66.6 718.25 65.3 716.5 64 714.15 62.95 M709.75 59.2 L714.9 61.1 715 61.15 Q717.55 62.25 719.45 63.7 L719.5 63.7 Q721.5 65.25 722.7 67.3 723.95 69.5 723.95 72.25 724 76 721.1 79.05 718.6 81.75 713.45 82.05 L712.55 82.05 712.4 82.05 712.25 82.05 711.25 82 Q708.9 81.9 707.2 81.15 L707.15 81.15 Q705 80.2 703.6 78.8 L703.65 78.8 Q702.05 77.3 701.45 75.5 700.75 73.7 700.75 72.25 700.75 67.85 702.95 64.75 705 61.7 707.9 59.5 708.3 59.2 708.8 59.15 L709.75 59.2"/> + <path stroke="none" fill="#FFFFFF" d="M709.75 59.2 L708.8 59.15 Q708.3 59.2 707.9 59.5 705 61.7 702.95 64.75 700.75 67.85 700.75 72.25 700.75 73.7 701.45 75.5 702.05 77.3 703.65 78.8 L703.6 78.8 Q705 80.2 707.15 81.15 L707.2 81.15 Q708.9 81.9 711.25 82 L712.25 82.05 712.4 82.05 712.55 82.05 713.45 82.05 Q718.6 81.75 721.1 79.05 724 76 723.95 72.25 723.95 69.5 722.7 67.3 721.5 65.25 719.5 63.7 L719.45 63.7 Q717.55 62.25 715 61.15 L714.9 61.1 709.75 59.2 M704.05 25.6 Q706.6 24.6 709.6 24.3 L711.65 24.15 712.4 24.15 712.8 24.15 716.45 24.4 Q719.35 24.75 721.65 25.7 L721.7 25.7 Q725.45 27.2 727.85 29.55 L727.9 29.55 Q730.2 31.75 731.3 34.6 732.35 37.45 732.35 40.3 732.35 44.3 730.2 47.8 728 51.4 724.75 53.45 724.15 53.8 723.95 54.5 723.7 55.15 723.9 55.8 L724.7 56.85 Q729.7 60.1 731.9 63.65 733.95 67.1 733.95 71.7 733.95 75.6 732.65 78.85 731.3 82 728.7 84.4 L728.65 84.45 Q725.95 86.8 721.95 88.15 717.8 89.55 712.3 89.55 706 89.55 701.9 87.85 697.85 86.1 695.3 83.6 L695.25 83.6 Q692.9 81.15 691.9 78.25 690.85 75.3 690.85 72.8 690.85 70.3 691.5 68.15 L691.5 68.2 Q692.2 66 693.4 64.25 L693.35 64.3 Q694.6 62.55 696.15 61.05 697.75 59.45 699.6 58.1 L700.25 57.15 700.3 55.95 699.65 54.95 Q695.8 51.8 693.95 48.85 L694 48.9 Q692.3 46 692.3 41.55 692.3 38.1 693.7 34.95 L693.7 35 Q695.1 31.8 697.7 29.45 700.3 27.05 704.05 25.65 L704.05 25.6 M704.75 34.75 Q703.4 36.2 702.85 37.75 L702.85 37.8 Q702.25 39.4 702.25 40.85 702.2 44.65 704.95 47.9 L705 47.9 Q707.45 51.05 713.55 53.15 L714.45 53.25 Q714.85 53.2 715.25 52.95 718.7 50.8 720.6 47.9 722.55 44.95 722.55 40.65 722.55 39.25 722 37.7 721.4 36.2 720.15 34.8 L720.1 34.8 Q718.9 33.5 717.05 32.55 L717 32.55 Q715.1 31.65 712.4 31.65 709.75 31.65 707.9 32.55 705.95 33.35 704.75 34.75"/> + <path stroke="none" fill="#999999" d="M691.85 34.15 Q690.3 37.7 690.3 41.55 690.3 46.6 692.25 49.9 694.25 53.1 698.35 56.5 L694.75 59.6 694.55 59.8 Q692.95 61.35 691.7 63.15 690.9 64.35 690.3 65.7 L689.6 67.55 Q688.85 69.95 688.85 72.8 688.85 75.6 690 78.9 691.15 82.25 693.85 85 696.65 87.8 701.1 89.7 705.55 91.55 712.3 91.55 718.15 91.55 722.6 90.05 727.05 88.55 730 85.9 733 83.2 734.5 79.6 735.95 76 735.95 71.7 735.95 67.55 734.45 64.25 L733.6 62.6 Q732.3 60.45 730.05 58.4 L725.8 55.15 Q729.45 52.85 731.9 48.85 734.35 44.85 734.35 40.3 734.35 37.1 733.15 33.9 L732.85 33.15 Q731.65 30.35 729.25 28.1 726.6 25.5 722.4 23.85 718.25 22.15 712.4 22.15 707.35 22.15 703.3 23.75 699.2 25.35 696.35 27.95 693.5 30.55 691.9 34.05 L691.85 34.15 M718.3 43.2 L718.55 40.65 718.25 39.1 718.25 39.15 Q717.9 38.3 717.2 37.55 L717.2 37.5 715.35 36.2 Q714.1 35.65 712.4 35.65 710.75 35.65 709.6 36.15 L709.55 36.2 Q708.4 36.65 707.7 37.45 706.9 38.3 706.6 39.15 706.25 40 706.25 40.85 706.25 41.95 706.65 43.05 707.1 44.2 708.05 45.3 L708.05 45.35 Q709.85 47.45 713.95 49.05 716 47.55 717.25 45.75 L717.25 45.7 Q717.95 44.6 718.3 43.2 M704.7 38.45 Q705.15 37.25 706.2 36.1 707.2 35 708.75 34.35 710.25 33.65 712.4 33.65 714.6 33.65 716.15 34.35 717.65 35.1 718.65 36.15 719.65 37.25 720.1 38.4 L720.55 40.65 Q720.55 44.3 718.9 46.8 L718.1 47.95 Q716.55 49.8 714.2 51.25 708.8 49.35 706.55 46.65 L706.5 46.6 Q704.25 43.95 704.25 40.85 704.25 39.7 704.7 38.45 M688.4 43.7 L688.3 41.55 Q688.3 37.3 690.05 33.35 691.8 29.4 695 26.5 698.1 23.65 702.6 21.9 706.95 20.15 712.4 20.15 718.7 20.15 723.15 22 727.7 23.8 730.65 26.65 L730.65 26.7 Q733.7 29.55 735.05 33.2 736.35 36.75 736.35 40.3 L736.25 42.3 Q735.8 46.3 733.6 49.9 731.75 52.95 729.25 55.1 L731.45 56.95 Q733.9 59.2 735.35 61.6 737.95 65.9 737.95 71.7 L737.9 73.75 Q737.6 77.25 736.35 80.35 L736.35 80.4 Q734.7 84.4 731.35 87.4 728.1 90.3 723.25 91.95 718.5 93.55 712.3 93.55 705.1 93.55 700.35 91.55 695.45 89.5 692.45 86.45 L692.45 86.4 Q689.4 83.3 688.1 79.55 687.2 76.95 686.95 74.7 L686.85 72.8 Q686.85 69.6 687.7 66.95 688.6 64.2 690.05 62.05 L690.1 62 Q691.45 60.05 693.15 58.4 L693.35 58.2 695.25 56.45 Q692.2 53.65 690.55 50.95 688.75 47.95 688.4 43.7 M719.6 74.1 L719.95 72.25 Q719.95 70.6 719.25 69.3 L719.25 69.35 Q718.4 67.95 717.05 66.9 715.45 65.75 713.35 64.8 L713.45 64.8 709.5 63.35 Q707.6 64.95 706.25 67 704.75 69.2 704.75 72.25 704.75 72.95 705.05 73.75 L705.15 74.1 705.2 74.15 Q705.55 75.1 706.4 75.9 L706.45 75.95 Q707.35 76.85 708.75 77.5 L708.75 77.45 Q710.2 78.05 712.4 78.05 716.35 78.05 718.2 76.3 L719.6 74.1 M714.15 62.95 Q716.5 64 718.25 65.3 719.95 66.6 720.95 68.3 721.95 70.05 721.95 72.25 721.95 75.15 719.8 77.5 L719.65 77.65 Q717.35 80.05 712.4 80.05 709.75 80.05 707.95 79.3 706.15 78.5 705 77.35 L704.9 77.25 Q703.75 76.15 703.3 74.8 702.75 73.4 702.75 72.25 702.75 68.5 704.6 65.85 706.45 63.1 709.1 61.1 L714.15 62.95"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M706.65 43.05 Q706.25 41.95 706.25 40.85 706.25 40 706.6 39.15 706.9 38.3 707.7 37.45 708.4 36.65 709.55 36.2 L709.6 36.15 Q710.75 35.65 712.4 35.65 714.1 35.65 715.35 36.2 L717.2 37.5 717.2 37.55 Q717.9 38.3 718.25 39.15 L718.25 39.1 718.55 40.65 718.3 43.2 718.25 43.1 718.25 43.15 Q717.9 42.3 717.2 41.55 L717.2 41.5 715.35 40.2 Q714.1 39.65 712.4 39.65 710.75 39.65 709.6 40.15 L709.55 40.2 Q708.4 40.65 707.7 41.45 706.95 42.25 706.65 43.05 M736.25 42.3 L736.35 44.3 Q736.35 49.4 733.6 53.9 L731.45 56.95 729.25 55.1 Q731.75 52.95 733.6 49.9 735.8 46.3 736.25 42.3 M737.9 73.75 L737.95 75.7 Q737.95 80.4 736.35 84.35 L736.35 84.4 Q734.7 88.4 731.35 91.4 728.1 94.3 723.25 95.95 718.5 97.55 712.3 97.55 705.1 97.55 700.35 95.55 695.45 93.5 692.45 90.45 L692.45 90.4 Q689.4 87.3 688.1 83.55 686.85 79.9 686.85 76.8 L686.95 74.7 Q687.2 76.95 688.1 79.55 689.4 83.3 692.45 86.4 L692.45 86.45 Q695.45 89.5 700.35 91.55 705.1 93.55 712.3 93.55 718.5 93.55 723.25 91.95 728.1 90.3 731.35 87.4 734.7 84.4 736.35 80.4 L736.35 80.35 Q737.6 77.25 737.9 73.75 M693.15 58.4 Q691.6 56.65 690.55 54.95 688.3 51.2 688.3 45.55 L688.4 43.7 Q688.75 47.95 690.55 50.95 692.2 53.65 695.25 56.45 L693.35 58.2 693.15 58.4 M705.05 73.75 Q704.75 72.95 704.75 72.25 704.75 69.2 706.25 67 707.6 64.95 709.5 63.35 L713.45 64.8 713.35 64.8 Q715.45 65.75 717.05 66.9 718.4 67.95 719.25 69.35 L719.25 69.3 Q719.95 70.6 719.95 72.25 L719.6 74.1 719.25 73.3 719.25 73.35 Q718.4 71.95 717.05 70.9 715.45 69.75 713.35 68.8 L713.45 68.8 709.5 67.35 Q707.6 68.95 706.25 71 705.4 72.25 705.05 73.75"/> + <path stroke="none" fill="#999999" d="M815.65 34.25 Q814.45 31.75 812.75 29.7 806.5 22.05 794.1 22.05 788.05 22.05 783.8 24.2 779.5 26.35 776.7 29.7 774.9 31.85 773.7 34.35 L772.65 37 Q771.3 41.05 771.3 44.85 771.3 49.5 772.7 53.35 774.05 57.15 776.85 59.9 779.7 62.65 784.1 64.15 788.55 65.65 794.75 65.65 L798.95 65.2 Q801.35 64.75 803.4 63.8 802.05 68.05 799.75 70.8 L799.45 71.2 Q797.1 73.7 794 75.3 790.65 76.95 786.25 77.7 L776.35 78.5 776.5 80.5 776.7 84.45 777 90.4 Q787.95 90.3 795.95 87.75 803.9 85.25 809 80.3 814.15 75.45 816.6 68.2 819.05 61 819.05 51.6 819.05 41.15 815.65 34.25 M774.55 81.7 L774.35 78.65 Q774.3 78.05 774.6 77.6 L775.3 76.8 776.35 76.5 785.95 75.75 Q790 75.05 793.15 73.5 L793.1 73.55 Q794.7 72.7 796.1 71.6 L798.25 69.5 798.25 69.55 799.9 67.1 799.35 67.2 799.3 67.2 794.75 67.65 Q788.15 67.65 783.45 66.05 778.6 64.4 775.45 61.35 772.35 58.25 770.85 54.05 769.65 50.8 769.4 47 L769.3 44.85 Q769.3 40.75 770.75 36.4 772.15 31.95 775.2 28.4 L775.2 28.45 Q778.2 24.75 782.9 22.4 L782.9 22.45 Q787.5 20.05 794.1 20.05 807.55 20.05 814.3 28.45 821.05 36.5 821.05 51.6 L821.05 53.7 Q820.8 62.15 818.5 68.85 815.9 76.55 810.4 81.75 804.95 87 796.55 89.65 788.3 92.3 777.05 92.4 776.2 92.4 775.65 91.85 775.05 91.3 775 90.5 L774.7 84.6 774.7 84.55 774.55 81.7 M802.5 51.65 L802.55 51.6 802.65 51 802.65 50.6 802.15 44.4 802.15 44.45 Q801.65 41.7 800.65 39.7 L800.7 39.7 Q799.75 37.95 798.2 36.95 796.7 35.95 794.5 35.95 792.75 35.95 791.4 36.65 790.1 37.35 789.4 38.5 L789.35 38.6 Q788.45 39.8 788.05 41.3 L788.05 41.35 Q787.55 42.9 787.55 44.3 L787.75 46.6 Q788.15 49.1 789.5 50.6 791.65 52.5 796.4 52.5 L800.65 52.1 800.7 52.1 802.5 51.65 M786.1 40.75 Q786.6 38.9 787.7 37.4 788.7 35.85 790.45 34.9 792.2 33.95 794.5 33.95 797.35 33.95 799.3 35.25 801.3 36.55 802.45 38.8 803.55 41.05 804.1 44.1 804.55 47.1 804.65 50.55 L804.6 51.25 804.55 52 804.55 52.85 802.65 53.7 801 54.05 796.4 54.5 Q790.65 54.5 788.1 52 L788.05 51.95 Q785.55 49.4 785.55 44.3 785.55 42.6 786.1 40.75"/> + <path stroke="none" fill="#FFCC00" d="M786.1 40.75 Q785.55 42.6 785.55 44.3 785.55 49.4 788.05 51.95 L788.1 52 Q790.65 54.5 796.4 54.5 L801 54.05 802.65 53.7 804.55 52.85 804.55 52 804.6 51.25 804.65 50.55 Q804.55 47.1 804.1 44.1 803.55 41.05 802.45 38.8 801.3 36.55 799.3 35.25 797.35 33.95 794.5 33.95 792.2 33.95 790.45 34.9 788.7 35.85 787.7 37.4 786.6 38.9 786.1 40.75 M815.65 34.25 Q819.05 41.15 819.05 51.6 819.05 61 816.6 68.2 814.15 75.45 809 80.3 803.9 85.25 795.95 87.75 787.95 90.3 777 90.4 L776.7 84.45 776.5 80.5 776.35 78.5 786.25 77.7 Q790.65 76.95 794 75.3 797.1 73.7 799.45 71.2 L799.75 70.8 Q802.05 68.05 803.4 63.8 801.35 64.75 798.95 65.2 L794.75 65.65 Q788.55 65.65 784.1 64.15 779.7 62.65 776.85 59.9 774.05 57.15 772.7 53.35 771.3 49.5 771.3 44.85 771.3 41.05 772.65 37 L773.7 34.35 Q774.9 31.85 776.7 29.7 779.5 26.35 783.8 24.2 788.05 22.05 794.1 22.05 806.5 22.05 812.75 29.7 814.45 31.75 815.65 34.25 M786.05 36.35 Q787.3 34.35 789.5 33.15 791.65 31.95 794.5 31.95 798 31.95 800.4 33.6 802.85 35.15 804.25 37.9 L804.25 37.95 Q805.45 40.4 806.1 43.75 L806.1 43.8 Q806.55 46.9 806.65 50.5 L806.65 50.55 806.6 51.5 806.6 51.55 806.55 52 806.55 52.85 806.35 53.8 805.7 54.5 Q804.3 55.55 801.35 56.05 L801.4 56.05 798.5 56.4 796.4 56.5 796.25 56.5 794.6 56.45 Q789.25 56.05 786.7 53.45 783.55 50.5 783.55 44.3 783.55 42.35 784.15 40.25 L784.2 40.25 Q784.75 38.1 786 36.35 L786.05 36.35 M814.7 67.55 Q817.05 60.65 817.05 51.6 817.05 38.2 811.2 31 806.55 25.35 798.15 24.3 L794.1 24.05 793.4 24.05 790.95 24.2 Q787.45 24.6 784.7 26 780.8 27.95 778.25 31 775.75 33.95 774.55 37.6 L774.55 37.65 Q773.3 41.35 773.3 44.85 773.3 49.15 774.6 52.7 775.75 56 778.25 58.45 780.8 60.9 784.75 62.25 788.95 63.65 794.75 63.65 L798.6 63.25 Q800.75 62.8 802.55 62 L804.05 61.9 Q804.85 62.15 805.2 62.9 805.55 63.65 805.3 64.4 803.8 69.05 801.3 72.1 798.6 75.2 794.9 77.1 791.3 78.85 786.6 79.7 L786.55 79.7 778.5 80.45 778.7 84.35 778.95 88.35 Q788.3 88.1 795.35 85.85 802.8 83.5 807.6 78.9 L807.65 78.85 Q812.4 74.3 814.7 67.55"/> + <path stroke="none" fill="#000000" fill-opacity="0.10196078431372549" d="M821.05 53.7 L821.05 55.6 Q821.05 65.35 818.5 72.85 815.9 80.55 810.4 85.75 804.95 91 796.55 93.65 788.3 96.3 777.05 96.4 776.2 96.4 775.65 95.85 775.05 95.3 775 94.5 L774.7 88.6 774.7 88.55 774.35 82.65 Q774.3 82.1 774.55 81.7 L774.7 84.55 774.7 84.6 775 90.5 Q775.05 91.3 775.65 91.85 776.2 92.4 777.05 92.4 788.3 92.3 796.55 89.65 804.95 87 810.4 81.75 815.9 76.55 818.5 68.85 820.8 62.15 821.05 53.7 M796.1 71.6 L794.75 71.65 Q788.15 71.65 783.45 70.05 778.6 68.4 775.45 65.35 772.35 62.25 770.85 58.05 769.3 53.85 769.3 48.85 L769.4 47 Q769.65 50.8 770.85 54.05 772.35 58.25 775.45 61.35 778.6 64.4 783.45 66.05 788.15 67.65 794.75 67.65 L799.3 67.2 799.35 67.2 799.9 67.1 798.25 69.55 798.25 69.5 796.1 71.6 M787.75 46.6 L787.55 44.3 Q787.55 42.9 788.05 41.35 L788.05 41.3 Q788.45 39.8 789.35 38.6 L789.4 38.5 Q790.1 37.35 791.4 36.65 792.75 35.95 794.5 35.95 796.7 35.95 798.2 36.95 799.75 37.95 800.7 39.7 L800.65 39.7 Q801.65 41.7 802.15 44.45 L802.15 44.4 802.65 50.6 802.65 51 802.55 51.6 802.5 51.65 802.15 48.4 802.15 48.45 Q801.65 45.7 800.65 43.7 L800.7 43.7 Q799.75 41.95 798.2 40.95 796.7 39.95 794.5 39.95 792.75 39.95 791.4 40.65 790.1 41.35 789.4 42.5 L789.35 42.6 Q788.45 43.8 788.05 45.3 L788.05 45.35 787.75 46.6"/> + <path stroke="none" fill="#FFFFFF" d="M814.7 67.55 Q812.4 74.3 807.65 78.85 L807.6 78.9 Q802.8 83.5 795.35 85.85 788.3 88.1 778.95 88.35 L778.7 84.35 778.5 80.45 786.55 79.7 786.6 79.7 Q791.3 78.85 794.9 77.1 798.6 75.2 801.3 72.1 803.8 69.05 805.3 64.4 805.55 63.65 805.2 62.9 804.85 62.15 804.05 61.9 L802.55 62 Q800.75 62.8 798.6 63.25 L794.75 63.65 Q788.95 63.65 784.75 62.25 780.8 60.9 778.25 58.45 775.75 56 774.6 52.7 773.3 49.15 773.3 44.85 773.3 41.35 774.55 37.65 L774.55 37.6 Q775.75 33.95 778.25 31 780.8 27.95 784.7 26 787.45 24.6 790.95 24.2 L793.4 24.05 794.1 24.05 798.15 24.3 Q806.55 25.35 811.2 31 817.05 38.2 817.05 51.6 817.05 60.65 814.7 67.55 M786.05 36.35 L786 36.35 Q784.75 38.1 784.2 40.25 L784.15 40.25 Q783.55 42.35 783.55 44.3 783.55 50.5 786.7 53.45 789.25 56.05 794.6 56.45 L796.25 56.5 796.4 56.5 798.5 56.4 801.4 56.05 801.35 56.05 Q804.3 55.55 805.7 54.5 L806.35 53.8 806.55 52.85 806.55 52 806.6 51.55 806.6 51.5 806.65 50.55 806.65 50.5 Q806.55 46.9 806.1 43.8 L806.1 43.75 Q805.45 40.4 804.25 37.95 L804.25 37.9 Q802.85 35.15 800.4 33.6 798 31.95 794.5 31.95 791.65 31.95 789.5 33.15 787.3 34.35 786.05 36.35"/> + </g> +</svg> \ No newline at end of file diff --git a/examples/quickwings/assets/tappybird/Vector/vector.swf b/examples/quickwings/assets/tappybird/Vector/vector.swf new file mode 100644 index 0000000..4956561 Binary files /dev/null and b/examples/quickwings/assets/tappybird/Vector/vector.swf differ diff --git a/examples/quickwings/assets/tappybird/license.txt b/examples/quickwings/assets/tappybird/license.txt new file mode 100644 index 0000000..b1a5ebe --- /dev/null +++ b/examples/quickwings/assets/tappybird/license.txt @@ -0,0 +1,14 @@ + +############################################################################### + + Tappy Plane by Kenney Vleugels (www.kenney.nl) + + ------------------------------ + + License (CC0) + http://creativecommons.org/publicdomain/zero/1.0/ + + You may use these graphics in personal and commercial projects. + Credit (Kenney or www.kenney.nl) would be nice but is not mandatory. + +############################################################################### \ No newline at end of file diff --git a/examples/quickwings/assets/tappybird/preview.png b/examples/quickwings/assets/tappybird/preview.png new file mode 100644 index 0000000..21772c0 Binary files /dev/null and b/examples/quickwings/assets/tappybird/preview.png differ diff --git a/examples/quickwings/assets/tappybird/sample.png b/examples/quickwings/assets/tappybird/sample.png new file mode 100644 index 0000000..efccaf4 Binary files /dev/null and b/examples/quickwings/assets/tappybird/sample.png differ diff --git a/examples/quickwings/assets/yellowbird-downflap.png b/examples/quickwings/assets/yellowbird-downflap.png new file mode 100644 index 0000000..e9e1c77 Binary files /dev/null and b/examples/quickwings/assets/yellowbird-downflap.png differ diff --git a/examples/quickwings/assets/yellowbird-midflap.png b/examples/quickwings/assets/yellowbird-midflap.png new file mode 100644 index 0000000..2ca3c2d Binary files /dev/null and b/examples/quickwings/assets/yellowbird-midflap.png differ diff --git a/examples/quickwings/assets/yellowbird-upflap.png b/examples/quickwings/assets/yellowbird-upflap.png new file mode 100644 index 0000000..2f693da Binary files /dev/null and b/examples/quickwings/assets/yellowbird-upflap.png differ diff --git a/examples/quickwings/quickwings.cpp b/examples/quickwings/quickwings.cpp new file mode 100644 index 0000000..9df112b --- /dev/null +++ b/examples/quickwings/quickwings.cpp @@ -0,0 +1,529 @@ +/** + * paradiso - Paradigmen der Softwareentwicklung + * + * (c) Copyright 2023-2024 Hartmut Seichter, Robin Rottstädt, brxxh (Hannes Brothuhn) + * + */ + +#include <paradiso/bitmap.hpp> +#include <paradiso/bitmap_io.hpp> +#include <paradiso/context.hpp> +#include <paradiso/geometry.hpp> +#include <paradiso/renderer.hpp> +#include <paradiso/shader.hpp> +#include <paradiso/sprite.hpp> +#include <paradiso/vector.hpp> +#include <paradiso/window.hpp> + +#include <chrono> +#include <thread> + +const int frame_rate = 60; +bool game_over = false; +float risky_pos_x; +float risky_pos_max_x; +float risky_pos_bottom_y; +float risky_pos_top_y; +float risky_pos_bottom_max_y; +float risky_pos_top_max_y; + +struct Background { + paradiso::Sprite backgroundLeft; + paradiso::Sprite backgroundRight; + paradiso::Sprite grassLeft; + paradiso::Sprite grassRight; + + paradiso::Sprite* scrolling[2] = {&backgroundLeft, &backgroundRight}; + + paradiso::Renderer renderer{}; + + Background() { + auto backgroundImage = + paradiso::BitmapIO::get().load("background-day.png"); + backgroundLeft = paradiso::Sprite{ + .bitmap = backgroundImage, + .pivot = {paradiso::Vector2<float>::make(0.0f, 0.16f)}, + .scale = {paradiso::Vector2<float>::make(1.01f, 1.3f)}}; + backgroundRight = paradiso::Sprite{ + .bitmap = backgroundImage, + .pivot = {paradiso::Vector2<float>::make(2.018f, 0.16f)}, + .scale = {paradiso::Vector2<float>::make(1.01f, 1.3f)}}; + + auto grassImage = paradiso::BitmapIO::get().load("base.png"); + grassLeft = paradiso::Sprite{ + .bitmap = grassImage, + .pivot = {paradiso::Vector2<float>::make(0.0f, -1.0f)}, + .scale = {paradiso::Vector2<float>::make(1.0f, 0.33333f)}}; + grassRight = paradiso::Sprite{ + .bitmap = grassImage, + .pivot = {paradiso::Vector2<float>::make(2.0f, -1.0f)}, + .scale = {paradiso::Vector2<float>::make(1.0f, 0.33333f)}}; + } + + void draw(const paradiso::Shader& shader) { + for (auto sprite : scrolling) { + if (game_over == false) { + if (sprite->pivot.x() <= -2.0f) { + sprite->pivot.x() += 4.0f; + } + sprite->pivot.x() -= 0.002f; + } + shader.set_uniform("pivot", sprite->pivot); + shader.set_uniform("scale", sprite->scale); + shader.set_uniform("rotation", sprite->rotation); + renderer.draw(*sprite, shader); + } + } +}; + +struct Pipe { + paradiso::Sprite pipe_top; + paradiso::Sprite pipe_bottom; + + paradiso::Renderer renderer1{}; + paradiso::Renderer renderer2{}; + + bool paused = false; + + int pipe_spawn_rand_int = rand() % 80 + 15; + float pipe_spawn_rand = float(pipe_spawn_rand_int) / 100; + + bool pos_reset = false; + + Pipe() { + auto pipe_image = paradiso::BitmapIO::get().load("pipe-green.png"); + + pipe_top = paradiso::Sprite{ + .bitmap = pipe_image, + .pivot = {paradiso::Vector2<float>::make(1.4f, pipe_spawn_rand + 1.0f)}, + .scale = {paradiso::Vector2<float>::make(((500.0f - (500.0f - 52.0f)) / 500.0f) * 2.25f, ((700.0f - (700.0f - 320.0f)) / 700.0f) * 2.25f)}, + .rotation = 3.1415926f}; + pipe_bottom = paradiso::Sprite{ + .bitmap = pipe_image, + .pivot = {paradiso::Vector2<float>::make(1.4f, pipe_spawn_rand - 1.5f)}, + .scale = {paradiso::Vector2<float>::make(((500.0f - (500.0f - 52.0f)) / 500.0f) * 2.25f, ((700.0f - (700.0f - 320.0f)) / 700.0f) * 2.25f)}}; + + paused = true; + + } + + void update() { + + if (game_over == true) { + paused = true; + } + + if (paused == true) { + return; + } + else { + pipe_spawn_rand_int = rand() % 80 + 15; + pipe_spawn_rand = float(pipe_spawn_rand_int) / 100; + + pipe_top.pivot.x() -= 0.02f; + pipe_bottom.pivot.x() -= 0.02f; + + risky_pos_x = pipe_top.pivot.x(); + risky_pos_max_x = pipe_top.pivot.x() + ((500.0f - (500.0f - 52.0f)) / 500.0f) * 2.25f; + + risky_pos_top_y = pipe_top.pivot.y(); + risky_pos_top_max_y = pipe_top.pivot.y() + 10.0f; + + risky_pos_bottom_y = pipe_bottom.pivot.y(); + risky_pos_bottom_max_y = pipe_bottom.pivot.y() - 10.0f; + + if (pipe_top.pivot.x() <= -1.4f || pipe_bottom.pivot.x() <= -1.4f) { + pos_reset = true; + + if (pos_reset == true) { + pipe_top.pivot.y() = pipe_spawn_rand + 1.0f; + pipe_bottom.pivot.y() = pipe_spawn_rand - 1.5; + + pos_reset = false; + } + + pipe_top.pivot.x() = 1.4f; + pipe_bottom.pivot.x() = 1.4f; + } + } + } + + void draw(const paradiso::Shader& shader) { + shader.set_uniform("pivot", pipe_bottom.pivot); + shader.set_uniform("scale", pipe_bottom.scale); + renderer1.draw(pipe_bottom, shader); + + shader.set_uniform("pivot", pipe_top.pivot); + shader.set_uniform("scale", pipe_top.scale); + shader.set_uniform("rotation", pipe_top.rotation); + renderer1.draw(pipe_top, shader); + } +}; + +struct Grass { + paradiso::Sprite grassLeft; + paradiso::Sprite grassRight; + paradiso::Sprite* scrolling[2] = {&grassLeft, &grassRight}; + + paradiso::Renderer renderer1{}; + paradiso::Renderer renderer2{}; + + Grass() { + auto grassImage = paradiso::BitmapIO::get().load("base.png"); + grassLeft = paradiso::Sprite{ + .bitmap = grassImage, + .pivot = {paradiso::Vector2<float>::make(0.0f, -0.9f)}, + .scale = {paradiso::Vector2<float>::make(((500.0f - (500.0f - 504.0f)) / 500.0f) * 2.25f, ((700.0f - (700.0f - 112.0f)) / 700.0f) * 2.25f)}}; + grassRight = paradiso::Sprite{ + .bitmap = grassImage, + .pivot = {paradiso::Vector2<float>::make(1.002f, -0.9f)}, + .scale = {paradiso::Vector2<float>::make(((500.0f - (500.0f - 504.0f)) / 500.0f) * 2.25f, ((700.0f - (700.0f - 112.0f)) / 700.0f) * 2.25f)}}; + } + + void draw(const paradiso::Shader& shader) { + if (game_over == false) { + grassLeft.pivot.x() -= 0.02f; + grassRight.pivot.x() -= 0.02f; + + if (grassRight.pivot.x() <= 0.0f) { + grassLeft.pivot.x() = 1.002f; + } + if (grassRight.pivot.x() <= -1.002f) { + grassRight.pivot.x() = 1.002f; + } + } + + shader.set_uniform("pivot", grassLeft.pivot); + shader.set_uniform("scale", grassLeft.scale); + shader.set_uniform("rotation", grassLeft.rotation); + + shader.set_uniform("pivot", grassRight.pivot); + shader.set_uniform("scale", grassRight.scale); + shader.set_uniform("rotation", grassRight.rotation); + + renderer1.draw(grassLeft, shader); + renderer2.draw(grassRight, shader); + } +}; + + +struct QuickWings { + paradiso::Renderer renderer1{}; + paradiso::Renderer renderer2{}; + paradiso::Renderer renderer3{}; + + std::array<paradiso::Sprite, 3> birds; + unsigned int flap = 0; + unsigned int flapSpeed = 15; // How many ticks per flap + unsigned int flapCounter = 0; // How many ticks since last flap + + float velocity = 0.0f; + const float max_velocity = 0.02f; + + const float gravity = -0.002f; + const float move_up_velocity = 0.02f; + + bool move_up = false; + bool paused = true; + + const float max_pos = 0.95f; + const float min_pos = -0.5f; + + float pos = 0.34f; + + float rotation = 0.0f; + + int collision_counter = 0; + + QuickWings() { + float scaleh = 0.08f; + float scalew = 0.158f; + + birds = { + paradiso::Sprite{ + .bitmap = + paradiso::BitmapIO::get().load("yellowbird-downflap.png"), + .pivot = {paradiso::Vector2<float>::make(0.0f, 0.0f)}, + .scale = {paradiso::Vector2<float>::make(scalew, scaleh)}}, + paradiso::Sprite{ + .bitmap = + paradiso::BitmapIO::get().load("yellowbird-midflap.png"), + .pivot = {paradiso::Vector2<float>::make(0.0f, 0.0f)}, + .scale = {paradiso::Vector2<float>::make(scalew, scaleh)}}, + paradiso::Sprite{ + .bitmap = + paradiso::BitmapIO::get().load("yellowbird-upflap.png"), + .pivot = {paradiso::Vector2<float>::make(0.0f, 0.0f)}, + .scale = {paradiso::Vector2<float>::make(scalew, scaleh)}}}; + } + + void draw(const paradiso::Shader& shader) { + // Update flap state + if (flapCounter < flapSpeed) { + flapCounter++; + } else { + flapCounter = 0; + flap = (flap + 1) % birds.size(); + } + + auto bird = birds[flap]; + bird.pivot.y() = pos; + bird.rotation = rotation; + shader.set_uniform("pivot", bird.pivot); + shader.set_uniform("scale", bird.scale); + shader.set_uniform("rotation", bird.rotation); + + switch (flap) { + case 0: + renderer1.draw(bird, shader); + break; + case 1: + renderer2.draw(bird, shader); + break; + case 2: + renderer3.draw(bird, shader); + break; + } + } + + void update() { + + if (game_over == true) { + paused = true; + } + + // Stop game + if (paused) { + return; + } + else { + // Apply gravity + velocity += gravity; + + if (move_up) + velocity += move_up_velocity - gravity; + + // Cap velocity + if (velocity > max_velocity) + velocity = max_velocity; + if (velocity < -max_velocity) + velocity = -max_velocity; + + // Cap position + pos += velocity; + if (pos < min_pos) { + pos = min_pos; + velocity = 0.0f; + game_over = true; + } + if (pos > max_pos) { + pos = max_pos; + velocity = 0.0f; + game_over = true; + } + + // Update rotation + rotation = velocity * 10.0f; + } + + float final_risky_pos_top_y = risky_pos_top_y - 1.06f; + float final_risky_pos_bottom_y = risky_pos_bottom_y + 1.06f; + + if (risky_pos_x - 0.3f <= 0.0f && risky_pos_max_x >= 0.0f) { + if (pos >= final_risky_pos_top_y && pos <= risky_pos_top_max_y) { + game_over = true; + } + if (pos <= final_risky_pos_bottom_y && pos >= risky_pos_bottom_max_y) { + if (collision_counter == 0) { + collision_counter++; + } + else { + collision_counter = 2; + } + + if (collision_counter == 2) { + game_over = true; + } + } + } + } + + // keyboard handler + void on_keyboard(const paradiso::Window::KeyboardInputStack& input) { + if (input.size()) { + paused = false; + + if (paused == false) { + bool pressed_up = input.top().key == ' ' || input.top().key == 'W'; + + if (input.top().action == 1 && pressed_up) { + move_up = true; + } else if (input.top().action == 0 && pressed_up) { + move_up = false; + } + } + else { + return; + } + } + } +}; + +struct Message { + paradiso::Sprite messageSprite; + paradiso::Renderer renderer{}; + bool start = false; + float pos = 100.0f; + + Message() { + auto messageImage = paradiso::BitmapIO::get().load("message.png"); + messageSprite = paradiso::Sprite{ + .bitmap = messageImage, + .pivot = {paradiso::Vector2<float>::make(0.0f, 0.0f)}, + .scale = {paradiso::Vector2<float>::make(0.8f, 0.8f)} + }; + }; + + void draw(const paradiso::Shader& shader) { + shader.set_uniform("pivot", messageSprite.pivot); + shader.set_uniform("scale", messageSprite.scale); + renderer.draw(messageSprite, shader); + } + + void update() { + if (start == true) { + messageSprite.pivot.y() = pos; + } + } + + void on_keyboard(const paradiso::Window::KeyboardInputStack& input) { + if (input.size()) { + start = true; + } + } +}; + +struct GameOverMessage { + paradiso::Sprite messageSprite; + paradiso::Renderer renderer{}; + + GameOverMessage() { + auto messageImage = paradiso::BitmapIO::get().load("gameover.png"); + messageSprite = paradiso::Sprite{ + .bitmap = messageImage, + .pivot = {paradiso::Vector2<float>::make(0.0f, 0.4f)}, + .scale = {paradiso::Vector2<float>::make(((500.0f - (500.0f - 192.0f)) / 500.0f) * 2.25f, ((700.0f - (700.0f - 42.0f)) / 700.0f) * 2.25f)} + }; + }; + + void draw(const paradiso::Shader& shader) { + shader.set_uniform("pivot", messageSprite.pivot); + shader.set_uniform("scale", messageSprite.scale); + renderer.draw(messageSprite, shader); + } +}; + +auto main() -> int { + std::srand(std::time(nullptr)); + + // Ausgabefenster ... sieht aus als wäre es auf dem Stack + auto window = paradiso::Window(); + + auto size = paradiso::Size{.width = 500, .height = 700}; + + /* + window.set_resizecallback([](auto& w) -> void { + w.set_size(paradiso::Size{.width = 405, .height = 720}); + }); + +*/ + window + .set_size(size) // ... Grösse + .set_position(paradiso::Point{.x = 1920 / 2 - 500 / 2, .y = 1080 / 2 - 700 / 2}) // ... Position + .set_title("PardiSO.FlappyBird") // ... Titel + .set_visible(true); // ... und jetzt anzeigen! + + // der Fenster Kontext + auto ctx = paradiso::Context{}; + + // ein Shader (Schattierungsprogramm) + auto shader = paradiso::Shader{}; + + // wir nutzen einen vorgefertigten shader + shader.load_preset(paradiso::Shader::Preset::Sprite); + + // ein viewport stellt die Sicht der Kamera dar, d.h. bei quadratischen + // Pixeln sollte hier auch eine dementsprechende Grösse eingestellt + // werden + ctx.set_viewport(paradiso::Rectangle{ + .position = paradiso::Point{.x = 0, .y = 0}, .size = size}); + + // nothing beats a classic look + ctx.set_clearcolor(paradiso::RGBA::from_rgb(0x00, 0x00, 0x00)); + + + // Asset loader bekommt den Pfad + + paradiso::BitmapIO::get().set_path("assets"); + + // Load + auto background = Background{}; + auto grass = Grass{}; + auto quickwingsapp = QuickWings{}; + auto pipe = Pipe{}; + auto message = Message{}; + auto gameover = GameOverMessage{}; + + + // timer + + // das update führt den hier mitgegebnen Ausdruck innerhalb der internen + // Updates des Fensters auf. Es wird hier auch explizit ein bool gefordert + // damit das update auch zu jederzeit unterbrochen werden kann + while (window.update([&](paradiso::Window& w) -> bool { + ctx.set_viewport(paradiso::Rectangle{ + .position = paradiso::Point{.x = 0, .y = 0}, .size = size}); + + ctx.clear(); + auto t1 = std::chrono::high_resolution_clock::now(); + + // Keyboard and state change + update + if (quickwingsapp.paused == false) { + pipe.paused = false; + } + + pipe.update(); + + quickwingsapp.on_keyboard(w.keyboard_input()); + quickwingsapp.update(); + + message.on_keyboard(w.keyboard_input()); + message.update(); + + // Draw + background.draw(shader); + pipe.draw(shader); + grass.draw(shader); + message.draw(shader); + + if (game_over == true) { + gameover.draw(shader); + } + + quickwingsapp.draw(shader); + + // wait for frame rate + auto t2 = std::chrono::high_resolution_clock::now(); + auto duration = + std::chrono::duration_cast<std::chrono::microseconds>(t2 - t1); + auto wait = std::chrono::microseconds(1000000 / frame_rate) - duration; + std::this_thread::sleep_for(wait); + + // Quit + return !(w.keyboard_input().size() && + w.keyboard_input().top().key == 'Q'); + })) { + }; + + return 0; +} diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt index d437135..cde0660 100644 --- a/src/lib/CMakeLists.txt +++ b/src/lib/CMakeLists.txt @@ -8,6 +8,7 @@ add_subdirectory(src/vendor/glad) add_subdirectory(src/vendor/glfw-3.3.8) set(paradiso_srcs + src/bitmap_io.cpp src/shader.cpp src/window.cpp src/renderer.cpp @@ -18,6 +19,7 @@ set(paradiso_srcs set(paradiso_incs include/paradiso/aabb.hpp include/paradiso/bitmap.hpp + include/paradiso/bitmap_io.hpp include/paradiso/geometry.hpp include/paradiso/sprite.hpp include/paradiso/shader.hpp @@ -35,6 +37,8 @@ target_include_directories( paradiso_core PUBLIC include + PRIVATE + src/vendor/stb ) target_link_libraries( diff --git a/src/lib/include/paradiso/aabb.hpp b/src/lib/include/paradiso/aabb.hpp index 62267bf..cad123f 100644 --- a/src/lib/include/paradiso/aabb.hpp +++ b/src/lib/include/paradiso/aabb.hpp @@ -1,5 +1,5 @@ /* - * Copyright 2023 Hartmut Seichter + * Copyright 2023-2024 Hartmut Seichter * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -59,4 +59,4 @@ struct AABB final { } // namespace paradiso -#endif \ No newline at end of file +#endif diff --git a/src/lib/include/paradiso/bitmap.hpp b/src/lib/include/paradiso/bitmap.hpp index c95f861..d6971f5 100644 --- a/src/lib/include/paradiso/bitmap.hpp +++ b/src/lib/include/paradiso/bitmap.hpp @@ -1,5 +1,5 @@ /* - * Copyright 2023 Hartmut Seichter + * Copyright 2023-2024 Hartmut Seichter * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -54,6 +54,17 @@ struct Bitmap final { return {.size = size, .data = {values...}}; } + /** + * @brief creates a bitmap from RGBA Values + * @param[in] size extent of bitmap + * @param[in] data vector of RGBA values + * @return bitmap with data from this call + */ + static constexpr Bitmap from_data(Size size, std::vector<RGBA> data) noexcept { + assert(data.size() == size.height * size.width); + return {.size = size, .data = data}; + } + /** * @brief fills a bitmap uniformly * @param[in] color RGBA value of a color @@ -87,10 +98,7 @@ struct Bitmap final { return data[y * size.width + x]; } - constexpr void force_change() noexcept - { - change_count++; - } + constexpr void force_change() noexcept { change_count++; } Size size{.width = 0, .height = 0}; //!< extent of bitmap std::vector<RGBA> data{}; //!< data storage @@ -98,4 +106,4 @@ struct Bitmap final { }; } // namespace paradiso -#endif \ No newline at end of file +#endif diff --git a/src/lib/include/paradiso/bitmap_io.hpp b/src/lib/include/paradiso/bitmap_io.hpp new file mode 100644 index 0000000..af0c529 --- /dev/null +++ b/src/lib/include/paradiso/bitmap_io.hpp @@ -0,0 +1,56 @@ +/* + * Copyright 2023-2024 Hartmut Seichter + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ +#ifndef PARADISO_BITMAP_IO_HPP +#define PARADISO_BITMAP_IO_HPP + +#include <paradiso/bitmap.hpp> + +#include <string_view> +#include <memory> + +namespace paradiso { + +struct BitmapIO { + + static BitmapIO& get(); + + Bitmap load(std::string_view filename, bool ignore_cache = false) const; + + void set_path(std::string_view path); + + std::string path() const; + + private: + + struct Impl; + std::unique_ptr<Impl> impl_; + + BitmapIO(); + ~BitmapIO() = default; + BitmapIO(const BitmapIO&) = delete; + BitmapIO(BitmapIO&&) = delete; +}; + +} // namespace paradiso + +#endif diff --git a/src/lib/include/paradiso/context.hpp b/src/lib/include/paradiso/context.hpp index f53495a..31a9ac1 100644 --- a/src/lib/include/paradiso/context.hpp +++ b/src/lib/include/paradiso/context.hpp @@ -1,5 +1,5 @@ /* - * Copyright 2023 Hartmut Seichter + * Copyright 2023-2024 Hartmut Seichter * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/src/lib/include/paradiso/geometry.hpp b/src/lib/include/paradiso/geometry.hpp index e3a8393..acd018a 100644 --- a/src/lib/include/paradiso/geometry.hpp +++ b/src/lib/include/paradiso/geometry.hpp @@ -1,5 +1,5 @@ /* - * Copyright 2023 Hartmut Seichter + * Copyright 2023-2024 Hartmut Seichter * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -71,4 +71,4 @@ struct Rectangle final { }; } // namespace paradiso -#endif \ No newline at end of file +#endif diff --git a/src/lib/include/paradiso/globals.hpp b/src/lib/include/paradiso/globals.hpp index 2927821..440bc7d 100644 --- a/src/lib/include/paradiso/globals.hpp +++ b/src/lib/include/paradiso/globals.hpp @@ -1,5 +1,5 @@ /* - * Copyright 2023 Hartmut Seichter + * Copyright 2023-2024 Hartmut Seichter * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -37,7 +37,8 @@ #include <type_traits> #include <numeric> +#include <algorithm> -#endif \ No newline at end of file +#endif diff --git a/src/lib/include/paradiso/matrix.hpp b/src/lib/include/paradiso/matrix.hpp index f5c87e0..c359a87 100644 --- a/src/lib/include/paradiso/matrix.hpp +++ b/src/lib/include/paradiso/matrix.hpp @@ -1,5 +1,5 @@ /* - * Copyright 2023 Hartmut Seichter + * Copyright 2023-2024 Hartmut Seichter * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -32,7 +32,7 @@ namespace paradiso { template <std::size_t R, std::size_t C, typename Scalar, bool RowMajor = false> struct Matrix : MatrixBase<Scalar, Matrix<R, C, Scalar>> { - Scalar data[R * C]{}; + Scalar data[R * C]{}; static constexpr std::size_t rows{R}; static constexpr std::size_t cols{C}; diff --git a/src/lib/include/paradiso/matrixbase.hpp b/src/lib/include/paradiso/matrixbase.hpp index 5e77268..b20a8d4 100644 --- a/src/lib/include/paradiso/matrixbase.hpp +++ b/src/lib/include/paradiso/matrixbase.hpp @@ -1,5 +1,5 @@ /* - * Copyright 2023 Hartmut Seichter + * Copyright 2023-2024 Hartmut Seichter * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -25,8 +25,6 @@ #include <paradiso/globals.hpp> -#include <algorithm> - namespace paradiso { template <typename Scalar, typename Derived> struct MatrixBase { @@ -146,4 +144,4 @@ template <typename Scalar, typename Derived> struct MatrixBase { }; } // namespace paradiso -#endif \ No newline at end of file +#endif diff --git a/src/lib/include/paradiso/renderer.hpp b/src/lib/include/paradiso/renderer.hpp index 2f349de..b52a908 100644 --- a/src/lib/include/paradiso/renderer.hpp +++ b/src/lib/include/paradiso/renderer.hpp @@ -1,5 +1,5 @@ /* - * Copyright 2023 Hartmut Seichter + * Copyright 2023-2024 Hartmut Seichter * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/src/lib/include/paradiso/rgba.hpp b/src/lib/include/paradiso/rgba.hpp index 0ab6ec4..d7745e2 100644 --- a/src/lib/include/paradiso/rgba.hpp +++ b/src/lib/include/paradiso/rgba.hpp @@ -1,5 +1,5 @@ /* - * Copyright 2023 Hartmut Seichter + * Copyright 2023-2024 Hartmut Seichter * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -90,4 +90,4 @@ struct RGBA final { }; } // namespace paradiso -#endif \ No newline at end of file +#endif diff --git a/src/lib/include/paradiso/shader.hpp b/src/lib/include/paradiso/shader.hpp index 549fe7d..d51f6cf 100644 --- a/src/lib/include/paradiso/shader.hpp +++ b/src/lib/include/paradiso/shader.hpp @@ -1,5 +1,5 @@ /* - * Copyright 2023 Hartmut Seichter + * Copyright 2023-2024 Hartmut Seichter * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -58,7 +58,7 @@ struct Shader final { const Shader& set_uniform_at_location(int location, float v) const; //!< sets a float in a shader - + const Shader& set_uniform_at_location( int location, uint32_t v) const; //!< sets a 32bit unsigned in a shader diff --git a/src/lib/include/paradiso/sprite.hpp b/src/lib/include/paradiso/sprite.hpp index 34a024b..a518e51 100644 --- a/src/lib/include/paradiso/sprite.hpp +++ b/src/lib/include/paradiso/sprite.hpp @@ -1,5 +1,5 @@ /* - * Copyright 2023 Hartmut Seichter + * Copyright 2023-2024 Hartmut Seichter * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -72,4 +72,4 @@ struct Sprite final { }; } // namespace paradiso -#endif \ No newline at end of file +#endif diff --git a/src/lib/include/paradiso/vector.hpp b/src/lib/include/paradiso/vector.hpp index 647f8cf..2012ef5 100644 --- a/src/lib/include/paradiso/vector.hpp +++ b/src/lib/include/paradiso/vector.hpp @@ -1,5 +1,5 @@ /* - * Copyright 2023 Hartmut Seichter + * Copyright 2023-2024 Hartmut Seichter * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -82,4 +82,4 @@ template <typename T> struct Vector3 : Matrix<3, 1, T> { }; // namespace paradiso -#endif \ No newline at end of file +#endif diff --git a/src/lib/include/paradiso/window.hpp b/src/lib/include/paradiso/window.hpp index 6613b99..91337ac 100644 --- a/src/lib/include/paradiso/window.hpp +++ b/src/lib/include/paradiso/window.hpp @@ -1,5 +1,5 @@ /* - * Copyright 2023 Hartmut Seichter + * Copyright 2023-2024 Hartmut Seichter * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -89,4 +89,4 @@ struct Window final { } // namespace paradiso -#endif \ No newline at end of file +#endif diff --git a/src/lib/src/bitmap_io.cpp b/src/lib/src/bitmap_io.cpp new file mode 100644 index 0000000..3490669 --- /dev/null +++ b/src/lib/src/bitmap_io.cpp @@ -0,0 +1,141 @@ +/* + * Copyright 2023-2024 Hartmut Seichter + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + */ + +// based on image_loader by Robin Rottstädt + +#include "paradiso/bitmap_io.hpp" +#include "paradiso/bitmap.hpp" + +#include <unordered_map> + +// STB image loading +#define STB_IMAGE_IMPLEMENTATION +#include "stb_image.h" + +#include <filesystem> +#include <iostream> + +namespace paradiso { + +struct BitmapIO::Impl { + + std::filesystem::path asset_path_ = {}; + + using BitmapCacheType = std::unordered_map<std::string_view, Bitmap>; + + BitmapCacheType cache_; + + static Bitmap read(std::string_view filename) { + + // Load with stb_image + stbi_set_flip_vertically_on_load(true); // flip y axis for OpenGL + + int width{}, height{}, channels{}; + + auto stb_free = [](uint8_t* data) { stbi_image_free(data); }; + + if (std::unique_ptr<uint8_t, decltype(stb_free)> image{ + stbi_load(filename.data(), &width, &height, &channels, 0)}; + image.get()) { + + int size = width * height; + + // Convert to Vector of RGBA + std::vector<paradiso::RGBA> rgba = + std::vector<paradiso::RGBA>(size); + for (int i = 0; i < size; i++) { + // get rgba values + int pos = i * 4; + int r = image.get()[pos + 0]; + int g = image.get()[pos + 1]; + int b = image.get()[pos + 2]; + int a = image.get()[pos + 3]; + + // bug in from_rgba. it expects bgra, not rgba + auto val = paradiso::RGBA::from_rgba(b, g, r, a); + rgba[i] = val; + } + + // rotate image by 90 degrees CW + std::vector<paradiso::RGBA> rotated = + std::vector<paradiso::RGBA>(size); + for (int x = 0; x < width; x++) { + for (int y = 0; y < height; y++) { + + int pos = y * width + x; + int pos_rotated = x * height + (height - y - 1); + rotated[pos_rotated] = rgba[pos]; + } + } + + return paradiso::Bitmap::from_data( + paradiso::Size{static_cast<unsigned int>(height), + static_cast<unsigned int>(width)}, + rotated); + } else { + std::cerr << "cannot load " << filename << '\n'; + } + + return Bitmap(); // well, no exception ... + } + + Bitmap load(std::string_view filename) { + if (cache_.find(filename) == cache_.end()) { + + auto asset_filepath = asset_path_ / std::filesystem::path(filename); + + std::cout << "Loading " << asset_filepath << std::endl; + + // moving to C++23 this should be replaced with + // std::expected + auto data = read(asset_filepath.generic_string()); + + cache_[filename] = data; + } + return cache_[filename.data()]; + } +}; + +BitmapIO::BitmapIO() : impl_{std::make_unique<BitmapIO::Impl>()} {} + +BitmapIO& BitmapIO::get() { + static BitmapIO instance; + return instance; +} + +Bitmap BitmapIO::load(std::string_view filename, bool ignore_cache) const { + return impl_->load(filename); +} + +void BitmapIO::set_path(std::string_view path) +{ + impl_->asset_path_ = path; +} + +std::string BitmapIO::path() const +{ + return impl_->asset_path_.generic_string(); +} + + +} // namespace paradiso diff --git a/src/lib/src/context.cpp b/src/lib/src/context.cpp index b31c9af..6ef465c 100644 --- a/src/lib/src/context.cpp +++ b/src/lib/src/context.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2023 Hartmut Seichter + * Copyright 2023-2024 Hartmut Seichter * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -71,7 +71,7 @@ struct Context::impl { Context::Context() : impl_(std::make_unique<impl>()) {} -Context::~Context() {} +Context::~Context() = default; Context& Context::set_blend() { return *this; } @@ -84,7 +84,7 @@ Rectangle Context::viewport() const { return impl_->viewport(); } void Context::clear() { impl_->clear(); } -u_int32_t Context::get_error() const { return impl_->get_error(); } +uint32_t Context::get_error() const { return impl_->get_error(); } RGBA Context::clearcolor() const { return impl_->clear_color_; } diff --git a/src/lib/src/renderer.cpp b/src/lib/src/renderer.cpp index eccb289..ab03c23 100644 --- a/src/lib/src/renderer.cpp +++ b/src/lib/src/renderer.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2023 Hartmut Seichter + * Copyright 2023-2024 Hartmut Seichter * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -32,6 +32,11 @@ #include <iomanip> #include <iostream> #include <vector> +#include <limits> + +#if defined(_WIN32) +#undef max +#endif namespace paradiso { diff --git a/src/lib/src/shader.cpp b/src/lib/src/shader.cpp index 7a6b04e..e3d6b73 100644 --- a/src/lib/src/shader.cpp +++ b/src/lib/src/shader.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2023 Hartmut Seichter + * Copyright 2023-2024 Hartmut Seichter * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/src/lib/src/shader_sprite.hpp b/src/lib/src/shader_sprite.hpp index fc4c15d..1f546c9 100644 --- a/src/lib/src/shader_sprite.hpp +++ b/src/lib/src/shader_sprite.hpp @@ -1,5 +1,5 @@ /* - * Copyright 2023 Hartmut Seichter + * Copyright 2023-2024 Hartmut Seichter * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -34,7 +34,7 @@ layout (location = 2) in vec2 texture_coords; // pivot der sprite uniform vec2 pivot = vec2( 0.0, 0.0 ); -// scale +// scale uniform vec2 scale = vec2( 1.0, 1.0 ); // rotation uniform float rotation = 0.0; @@ -80,4 +80,4 @@ void main() { })"; } // namespace paradiso -#endif \ No newline at end of file +#endif diff --git a/src/lib/src/vendor/stb/stb_image.h b/src/lib/src/vendor/stb/stb_image.h new file mode 100644 index 0000000..1f44c87 --- /dev/null +++ b/src/lib/src/vendor/stb/stb_image.h @@ -0,0 +1,7987 @@ +/* stb_image - v2.28 - public domain image loader - http://nothings.org/stb + no warranty implied; use at your own risk + + Do this: + #define STB_IMAGE_IMPLEMENTATION + before you include this file in *one* C or C++ file to create the implementation. + + // i.e. it should look like this: + #include ... + #include ... + #include ... + #define STB_IMAGE_IMPLEMENTATION + #include "stb_image.h" + + You can #define STBI_ASSERT(x) before the #include to avoid using assert.h. + And #define STBI_MALLOC, STBI_REALLOC, and STBI_FREE to avoid using malloc,realloc,free + + + QUICK NOTES: + Primarily of interest to game developers and other people who can + avoid problematic images and only need the trivial interface + + JPEG baseline & progressive (12 bpc/arithmetic not supported, same as stock IJG lib) + PNG 1/2/4/8/16-bit-per-channel + + TGA (not sure what subset, if a subset) + BMP non-1bpp, non-RLE + PSD (composited view only, no extra channels, 8/16 bit-per-channel) + + GIF (*comp always reports as 4-channel) + HDR (radiance rgbE format) + PIC (Softimage PIC) + PNM (PPM and PGM binary only) + + Animated GIF still needs a proper API, but here's one way to do it: + http://gist.github.com/urraka/685d9a6340b26b830d49 + + - decode from memory or through FILE (define STBI_NO_STDIO to remove code) + - decode from arbitrary I/O callbacks + - SIMD acceleration on x86/x64 (SSE2) and ARM (NEON) + + Full documentation under "DOCUMENTATION" below. + + +LICENSE + + See end of file for license information. + +RECENT REVISION HISTORY: + + 2.28 (2023-01-29) many error fixes, security errors, just tons of stuff + 2.27 (2021-07-11) document stbi_info better, 16-bit PNM support, bug fixes + 2.26 (2020-07-13) many minor fixes + 2.25 (2020-02-02) fix warnings + 2.24 (2020-02-02) fix warnings; thread-local failure_reason and flip_vertically + 2.23 (2019-08-11) fix clang static analysis warning + 2.22 (2019-03-04) gif fixes, fix warnings + 2.21 (2019-02-25) fix typo in comment + 2.20 (2019-02-07) support utf8 filenames in Windows; fix warnings and platform ifdefs + 2.19 (2018-02-11) fix warning + 2.18 (2018-01-30) fix warnings + 2.17 (2018-01-29) bugfix, 1-bit BMP, 16-bitness query, fix warnings + 2.16 (2017-07-23) all functions have 16-bit variants; optimizations; bugfixes + 2.15 (2017-03-18) fix png-1,2,4; all Imagenet JPGs; no runtime SSE detection on GCC + 2.14 (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs + 2.13 (2016-12-04) experimental 16-bit API, only for PNG so far; fixes + 2.12 (2016-04-02) fix typo in 2.11 PSD fix that caused crashes + 2.11 (2016-04-02) 16-bit PNGS; enable SSE2 in non-gcc x64 + RGB-format JPEG; remove white matting in PSD; + allocate large structures on the stack; + correct channel count for PNG & BMP + 2.10 (2016-01-22) avoid warning introduced in 2.09 + 2.09 (2016-01-16) 16-bit TGA; comments in PNM files; STBI_REALLOC_SIZED + + See end of file for full revision history. + + + ============================ Contributors ========================= + + Image formats Extensions, features + Sean Barrett (jpeg, png, bmp) Jetro Lauha (stbi_info) + Nicolas Schulz (hdr, psd) Martin "SpartanJ" Golini (stbi_info) + Jonathan Dummer (tga) James "moose2000" Brown (iPhone PNG) + Jean-Marc Lienher (gif) Ben "Disch" Wenger (io callbacks) + Tom Seddon (pic) Omar Cornut (1/2/4-bit PNG) + Thatcher Ulrich (psd) Nicolas Guillemot (vertical flip) + Ken Miller (pgm, ppm) Richard Mitton (16-bit PSD) + github:urraka (animated gif) Junggon Kim (PNM comments) + Christopher Forseth (animated gif) Daniel Gibson (16-bit TGA) + socks-the-fox (16-bit PNG) + Jeremy Sawicki (handle all ImageNet JPGs) + Optimizations & bugfixes Mikhail Morozov (1-bit BMP) + Fabian "ryg" Giesen Anael Seghezzi (is-16-bit query) + Arseny Kapoulkine Simon Breuss (16-bit PNM) + John-Mark Allen + Carmelo J Fdez-Aguera + + Bug & warning fixes + Marc LeBlanc David Woo Guillaume George Martins Mozeiko + Christpher Lloyd Jerry Jansson Joseph Thomson Blazej Dariusz Roszkowski + Phil Jordan Dave Moore Roy Eltham + Hayaki Saito Nathan Reed Won Chun + Luke Graham Johan Duparc Nick Verigakis the Horde3D community + Thomas Ruf Ronny Chevalier github:rlyeh + Janez Zemva John Bartholomew Michal Cichon github:romigrou + Jonathan Blow Ken Hamada Tero Hanninen github:svdijk + Eugene Golushkov Laurent Gomila Cort Stratton github:snagar + Aruelien Pocheville Sergio Gonzalez Thibault Reuille github:Zelex + Cass Everitt Ryamond Barbiero github:grim210 + Paul Du Bois Engin Manap Aldo Culquicondor github:sammyhw + Philipp Wiesemann Dale Weiler Oriol Ferrer Mesia github:phprus + Josh Tobin Neil Bickford Matthew Gregan github:poppolopoppo + Julian Raschke Gregory Mullen Christian Floisand github:darealshinji + Baldur Karlsson Kevin Schmidt JR Smith github:Michaelangel007 + Brad Weinberger Matvey Cherevko github:mosra + Luca Sas Alexander Veselov Zack Middleton [reserved] + Ryan C. Gordon [reserved] [reserved] + DO NOT ADD YOUR NAME HERE + + Jacko Dirks + + To add your name to the credits, pick a random blank space in the middle and fill it. + 80% of merge conflicts on stb PRs are due to people adding their name at the end + of the credits. +*/ + +#ifndef STBI_INCLUDE_STB_IMAGE_H +#define STBI_INCLUDE_STB_IMAGE_H + +// DOCUMENTATION +// +// Limitations: +// - no 12-bit-per-channel JPEG +// - no JPEGs with arithmetic coding +// - GIF always returns *comp=4 +// +// Basic usage (see HDR discussion below for HDR usage): +// int x,y,n; +// unsigned char *data = stbi_load(filename, &x, &y, &n, 0); +// // ... process data if not NULL ... +// // ... x = width, y = height, n = # 8-bit components per pixel ... +// // ... replace '0' with '1'..'4' to force that many components per pixel +// // ... but 'n' will always be the number that it would have been if you said 0 +// stbi_image_free(data); +// +// Standard parameters: +// int *x -- outputs image width in pixels +// int *y -- outputs image height in pixels +// int *channels_in_file -- outputs # of image components in image file +// int desired_channels -- if non-zero, # of image components requested in result +// +// The return value from an image loader is an 'unsigned char *' which points +// to the pixel data, or NULL on an allocation failure or if the image is +// corrupt or invalid. The pixel data consists of *y scanlines of *x pixels, +// with each pixel consisting of N interleaved 8-bit components; the first +// pixel pointed to is top-left-most in the image. There is no padding between +// image scanlines or between pixels, regardless of format. The number of +// components N is 'desired_channels' if desired_channels is non-zero, or +// *channels_in_file otherwise. If desired_channels is non-zero, +// *channels_in_file has the number of components that _would_ have been +// output otherwise. E.g. if you set desired_channels to 4, you will always +// get RGBA output, but you can check *channels_in_file to see if it's trivially +// opaque because e.g. there were only 3 channels in the source image. +// +// An output image with N components has the following components interleaved +// in this order in each pixel: +// +// N=#comp components +// 1 grey +// 2 grey, alpha +// 3 red, green, blue +// 4 red, green, blue, alpha +// +// If image loading fails for any reason, the return value will be NULL, +// and *x, *y, *channels_in_file will be unchanged. The function +// stbi_failure_reason() can be queried for an extremely brief, end-user +// unfriendly explanation of why the load failed. Define STBI_NO_FAILURE_STRINGS +// to avoid compiling these strings at all, and STBI_FAILURE_USERMSG to get slightly +// more user-friendly ones. +// +// Paletted PNG, BMP, GIF, and PIC images are automatically depalettized. +// +// To query the width, height and component count of an image without having to +// decode the full file, you can use the stbi_info family of functions: +// +// int x,y,n,ok; +// ok = stbi_info(filename, &x, &y, &n); +// // returns ok=1 and sets x, y, n if image is a supported format, +// // 0 otherwise. +// +// Note that stb_image pervasively uses ints in its public API for sizes, +// including sizes of memory buffers. This is now part of the API and thus +// hard to change without causing breakage. As a result, the various image +// loaders all have certain limits on image size; these differ somewhat +// by format but generally boil down to either just under 2GB or just under +// 1GB. When the decoded image would be larger than this, stb_image decoding +// will fail. +// +// Additionally, stb_image will reject image files that have any of their +// dimensions set to a larger value than the configurable STBI_MAX_DIMENSIONS, +// which defaults to 2**24 = 16777216 pixels. Due to the above memory limit, +// the only way to have an image with such dimensions load correctly +// is for it to have a rather extreme aspect ratio. Either way, the +// assumption here is that such larger images are likely to be malformed +// or malicious. If you do need to load an image with individual dimensions +// larger than that, and it still fits in the overall size limit, you can +// #define STBI_MAX_DIMENSIONS on your own to be something larger. +// +// =========================================================================== +// +// UNICODE: +// +// If compiling for Windows and you wish to use Unicode filenames, compile +// with +// #define STBI_WINDOWS_UTF8 +// and pass utf8-encoded filenames. Call stbi_convert_wchar_to_utf8 to convert +// Windows wchar_t filenames to utf8. +// +// =========================================================================== +// +// Philosophy +// +// stb libraries are designed with the following priorities: +// +// 1. easy to use +// 2. easy to maintain +// 3. good performance +// +// Sometimes I let "good performance" creep up in priority over "easy to maintain", +// and for best performance I may provide less-easy-to-use APIs that give higher +// performance, in addition to the easy-to-use ones. Nevertheless, it's important +// to keep in mind that from the standpoint of you, a client of this library, +// all you care about is #1 and #3, and stb libraries DO NOT emphasize #3 above all. +// +// Some secondary priorities arise directly from the first two, some of which +// provide more explicit reasons why performance can't be emphasized. +// +// - Portable ("ease of use") +// - Small source code footprint ("easy to maintain") +// - No dependencies ("ease of use") +// +// =========================================================================== +// +// I/O callbacks +// +// I/O callbacks allow you to read from arbitrary sources, like packaged +// files or some other source. Data read from callbacks are processed +// through a small internal buffer (currently 128 bytes) to try to reduce +// overhead. +// +// The three functions you must define are "read" (reads some bytes of data), +// "skip" (skips some bytes of data), "eof" (reports if the stream is at the end). +// +// =========================================================================== +// +// SIMD support +// +// The JPEG decoder will try to automatically use SIMD kernels on x86 when +// supported by the compiler. For ARM Neon support, you must explicitly +// request it. +// +// (The old do-it-yourself SIMD API is no longer supported in the current +// code.) +// +// On x86, SSE2 will automatically be used when available based on a run-time +// test; if not, the generic C versions are used as a fall-back. On ARM targets, +// the typical path is to have separate builds for NEON and non-NEON devices +// (at least this is true for iOS and Android). Therefore, the NEON support is +// toggled by a build flag: define STBI_NEON to get NEON loops. +// +// If for some reason you do not want to use any of SIMD code, or if +// you have issues compiling it, you can disable it entirely by +// defining STBI_NO_SIMD. +// +// =========================================================================== +// +// HDR image support (disable by defining STBI_NO_HDR) +// +// stb_image supports loading HDR images in general, and currently the Radiance +// .HDR file format specifically. You can still load any file through the existing +// interface; if you attempt to load an HDR file, it will be automatically remapped +// to LDR, assuming gamma 2.2 and an arbitrary scale factor defaulting to 1; +// both of these constants can be reconfigured through this interface: +// +// stbi_hdr_to_ldr_gamma(2.2f); +// stbi_hdr_to_ldr_scale(1.0f); +// +// (note, do not use _inverse_ constants; stbi_image will invert them +// appropriately). +// +// Additionally, there is a new, parallel interface for loading files as +// (linear) floats to preserve the full dynamic range: +// +// float *data = stbi_loadf(filename, &x, &y, &n, 0); +// +// If you load LDR images through this interface, those images will +// be promoted to floating point values, run through the inverse of +// constants corresponding to the above: +// +// stbi_ldr_to_hdr_scale(1.0f); +// stbi_ldr_to_hdr_gamma(2.2f); +// +// Finally, given a filename (or an open file or memory block--see header +// file for details) containing image data, you can query for the "most +// appropriate" interface to use (that is, whether the image is HDR or +// not), using: +// +// stbi_is_hdr(char *filename); +// +// =========================================================================== +// +// iPhone PNG support: +// +// We optionally support converting iPhone-formatted PNGs (which store +// premultiplied BGRA) back to RGB, even though they're internally encoded +// differently. To enable this conversion, call +// stbi_convert_iphone_png_to_rgb(1). +// +// Call stbi_set_unpremultiply_on_load(1) as well to force a divide per +// pixel to remove any premultiplied alpha *only* if the image file explicitly +// says there's premultiplied data (currently only happens in iPhone images, +// and only if iPhone convert-to-rgb processing is on). +// +// =========================================================================== +// +// ADDITIONAL CONFIGURATION +// +// - You can suppress implementation of any of the decoders to reduce +// your code footprint by #defining one or more of the following +// symbols before creating the implementation. +// +// STBI_NO_JPEG +// STBI_NO_PNG +// STBI_NO_BMP +// STBI_NO_PSD +// STBI_NO_TGA +// STBI_NO_GIF +// STBI_NO_HDR +// STBI_NO_PIC +// STBI_NO_PNM (.ppm and .pgm) +// +// - You can request *only* certain decoders and suppress all other ones +// (this will be more forward-compatible, as addition of new decoders +// doesn't require you to disable them explicitly): +// +// STBI_ONLY_JPEG +// STBI_ONLY_PNG +// STBI_ONLY_BMP +// STBI_ONLY_PSD +// STBI_ONLY_TGA +// STBI_ONLY_GIF +// STBI_ONLY_HDR +// STBI_ONLY_PIC +// STBI_ONLY_PNM (.ppm and .pgm) +// +// - If you use STBI_NO_PNG (or _ONLY_ without PNG), and you still +// want the zlib decoder to be available, #define STBI_SUPPORT_ZLIB +// +// - If you define STBI_MAX_DIMENSIONS, stb_image will reject images greater +// than that size (in either width or height) without further processing. +// This is to let programs in the wild set an upper bound to prevent +// denial-of-service attacks on untrusted data, as one could generate a +// valid image of gigantic dimensions and force stb_image to allocate a +// huge block of memory and spend disproportionate time decoding it. By +// default this is set to (1 << 24), which is 16777216, but that's still +// very big. + +#ifndef STBI_NO_STDIO +#include <stdio.h> +#endif // STBI_NO_STDIO + +#define STBI_VERSION 1 + +enum +{ + STBI_default = 0, // only used for desired_channels + + STBI_grey = 1, + STBI_grey_alpha = 2, + STBI_rgb = 3, + STBI_rgb_alpha = 4 +}; + +#include <stdlib.h> +typedef unsigned char stbi_uc; +typedef unsigned short stbi_us; + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef STBIDEF +#ifdef STB_IMAGE_STATIC +#define STBIDEF static +#else +#define STBIDEF extern +#endif +#endif + +////////////////////////////////////////////////////////////////////////////// +// +// PRIMARY API - works on images of any type +// + +// +// load image by filename, open file, or memory buffer +// + +typedef struct +{ + int (*read) (void *user,char *data,int size); // fill 'data' with 'size' bytes. return number of bytes actually read + void (*skip) (void *user,int n); // skip the next 'n' bytes, or 'unget' the last -n bytes if negative + int (*eof) (void *user); // returns nonzero if we are at end of file/data +} stbi_io_callbacks; + +//////////////////////////////////// +// +// 8-bits-per-channel interface +// + +STBIDEF stbi_uc *stbi_load_from_memory (stbi_uc const *buffer, int len , int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk , void *user, int *x, int *y, int *channels_in_file, int desired_channels); + +#ifndef STBI_NO_STDIO +STBIDEF stbi_uc *stbi_load (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_uc *stbi_load_from_file (FILE *f, int *x, int *y, int *channels_in_file, int desired_channels); +// for stbi_load_from_file, file pointer is left pointing immediately after image +#endif + +#ifndef STBI_NO_GIF +STBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int len, int **delays, int *x, int *y, int *z, int *comp, int req_comp); +#endif + +#ifdef STBI_WINDOWS_UTF8 +STBIDEF int stbi_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input); +#endif + +//////////////////////////////////// +// +// 16-bits-per-channel interface +// + +STBIDEF stbi_us *stbi_load_16_from_memory (stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_us *stbi_load_16_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels); + +#ifndef STBI_NO_STDIO +STBIDEF stbi_us *stbi_load_16 (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_us *stbi_load_from_file_16(FILE *f, int *x, int *y, int *channels_in_file, int desired_channels); +#endif + +//////////////////////////////////// +// +// float-per-channel interface +// +#ifndef STBI_NO_LINEAR + STBIDEF float *stbi_loadf_from_memory (stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels); + STBIDEF float *stbi_loadf_from_callbacks (stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels); + + #ifndef STBI_NO_STDIO + STBIDEF float *stbi_loadf (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels); + STBIDEF float *stbi_loadf_from_file (FILE *f, int *x, int *y, int *channels_in_file, int desired_channels); + #endif +#endif + +#ifndef STBI_NO_HDR + STBIDEF void stbi_hdr_to_ldr_gamma(float gamma); + STBIDEF void stbi_hdr_to_ldr_scale(float scale); +#endif // STBI_NO_HDR + +#ifndef STBI_NO_LINEAR + STBIDEF void stbi_ldr_to_hdr_gamma(float gamma); + STBIDEF void stbi_ldr_to_hdr_scale(float scale); +#endif // STBI_NO_LINEAR + +// stbi_is_hdr is always defined, but always returns false if STBI_NO_HDR +STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user); +STBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len); +#ifndef STBI_NO_STDIO +STBIDEF int stbi_is_hdr (char const *filename); +STBIDEF int stbi_is_hdr_from_file(FILE *f); +#endif // STBI_NO_STDIO + + +// get a VERY brief reason for failure +// on most compilers (and ALL modern mainstream compilers) this is threadsafe +STBIDEF const char *stbi_failure_reason (void); + +// free the loaded image -- this is just free() +STBIDEF void stbi_image_free (void *retval_from_stbi_load); + +// get image dimensions & components without fully decoding +STBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp); +STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp); +STBIDEF int stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len); +STBIDEF int stbi_is_16_bit_from_callbacks(stbi_io_callbacks const *clbk, void *user); + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_info (char const *filename, int *x, int *y, int *comp); +STBIDEF int stbi_info_from_file (FILE *f, int *x, int *y, int *comp); +STBIDEF int stbi_is_16_bit (char const *filename); +STBIDEF int stbi_is_16_bit_from_file(FILE *f); +#endif + + + +// for image formats that explicitly notate that they have premultiplied alpha, +// we just return the colors as stored in the file. set this flag to force +// unpremultiplication. results are undefined if the unpremultiply overflow. +STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply); + +// indicate whether we should process iphone images back to canonical format, +// or just pass them through "as-is" +STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert); + +// flip the image vertically, so the first pixel in the output array is the bottom left +STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip); + +// as above, but only applies to images loaded on the thread that calls the function +// this function is only available if your compiler supports thread-local variables; +// calling it will fail to link if your compiler doesn't +STBIDEF void stbi_set_unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply); +STBIDEF void stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_should_convert); +STBIDEF void stbi_set_flip_vertically_on_load_thread(int flag_true_if_should_flip); + +// ZLIB client - used by PNG, available for other purposes + +STBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen); +STBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, int initial_size, int *outlen, int parse_header); +STBIDEF char *stbi_zlib_decode_malloc(const char *buffer, int len, int *outlen); +STBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, const char *ibuffer, int ilen); + +STBIDEF char *stbi_zlib_decode_noheader_malloc(const char *buffer, int len, int *outlen); +STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen); + + +#ifdef __cplusplus +} +#endif + +// +// +//// end header file ///////////////////////////////////////////////////// +#endif // STBI_INCLUDE_STB_IMAGE_H + +#ifdef STB_IMAGE_IMPLEMENTATION + +#if defined(STBI_ONLY_JPEG) || defined(STBI_ONLY_PNG) || defined(STBI_ONLY_BMP) \ + || defined(STBI_ONLY_TGA) || defined(STBI_ONLY_GIF) || defined(STBI_ONLY_PSD) \ + || defined(STBI_ONLY_HDR) || defined(STBI_ONLY_PIC) || defined(STBI_ONLY_PNM) \ + || defined(STBI_ONLY_ZLIB) + #ifndef STBI_ONLY_JPEG + #define STBI_NO_JPEG + #endif + #ifndef STBI_ONLY_PNG + #define STBI_NO_PNG + #endif + #ifndef STBI_ONLY_BMP + #define STBI_NO_BMP + #endif + #ifndef STBI_ONLY_PSD + #define STBI_NO_PSD + #endif + #ifndef STBI_ONLY_TGA + #define STBI_NO_TGA + #endif + #ifndef STBI_ONLY_GIF + #define STBI_NO_GIF + #endif + #ifndef STBI_ONLY_HDR + #define STBI_NO_HDR + #endif + #ifndef STBI_ONLY_PIC + #define STBI_NO_PIC + #endif + #ifndef STBI_ONLY_PNM + #define STBI_NO_PNM + #endif +#endif + +#if defined(STBI_NO_PNG) && !defined(STBI_SUPPORT_ZLIB) && !defined(STBI_NO_ZLIB) +#define STBI_NO_ZLIB +#endif + + +#include <stdarg.h> +#include <stddef.h> // ptrdiff_t on osx +#include <stdlib.h> +#include <string.h> +#include <limits.h> + +#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) +#include <math.h> // ldexp, pow +#endif + +#ifndef STBI_NO_STDIO +#include <stdio.h> +#endif + +#ifndef STBI_ASSERT +#include <assert.h> +#define STBI_ASSERT(x) assert(x) +#endif + +#ifdef __cplusplus +#define STBI_EXTERN extern "C" +#else +#define STBI_EXTERN extern +#endif + + +#ifndef _MSC_VER + #ifdef __cplusplus + #define stbi_inline inline + #else + #define stbi_inline + #endif +#else + #define stbi_inline __forceinline +#endif + +#ifndef STBI_NO_THREAD_LOCALS + #if defined(__cplusplus) && __cplusplus >= 201103L + #define STBI_THREAD_LOCAL thread_local + #elif defined(__GNUC__) && __GNUC__ < 5 + #define STBI_THREAD_LOCAL __thread + #elif defined(_MSC_VER) + #define STBI_THREAD_LOCAL __declspec(thread) + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L && !defined(__STDC_NO_THREADS__) + #define STBI_THREAD_LOCAL _Thread_local + #endif + + #ifndef STBI_THREAD_LOCAL + #if defined(__GNUC__) + #define STBI_THREAD_LOCAL __thread + #endif + #endif +#endif + +#if defined(_MSC_VER) || defined(__SYMBIAN32__) +typedef unsigned short stbi__uint16; +typedef signed short stbi__int16; +typedef unsigned int stbi__uint32; +typedef signed int stbi__int32; +#else +#include <stdint.h> +typedef uint16_t stbi__uint16; +typedef int16_t stbi__int16; +typedef uint32_t stbi__uint32; +typedef int32_t stbi__int32; +#endif + +// should produce compiler error if size is wrong +typedef unsigned char validate_uint32[sizeof(stbi__uint32)==4 ? 1 : -1]; + +#ifdef _MSC_VER +#define STBI_NOTUSED(v) (void)(v) +#else +#define STBI_NOTUSED(v) (void)sizeof(v) +#endif + +#ifdef _MSC_VER +#define STBI_HAS_LROTL +#endif + +#ifdef STBI_HAS_LROTL + #define stbi_lrot(x,y) _lrotl(x,y) +#else + #define stbi_lrot(x,y) (((x) << (y)) | ((x) >> (-(y) & 31))) +#endif + +#if defined(STBI_MALLOC) && defined(STBI_FREE) && (defined(STBI_REALLOC) || defined(STBI_REALLOC_SIZED)) +// ok +#elif !defined(STBI_MALLOC) && !defined(STBI_FREE) && !defined(STBI_REALLOC) && !defined(STBI_REALLOC_SIZED) +// ok +#else +#error "Must define all or none of STBI_MALLOC, STBI_FREE, and STBI_REALLOC (or STBI_REALLOC_SIZED)." +#endif + +#ifndef STBI_MALLOC +#define STBI_MALLOC(sz) malloc(sz) +#define STBI_REALLOC(p,newsz) realloc(p,newsz) +#define STBI_FREE(p) free(p) +#endif + +#ifndef STBI_REALLOC_SIZED +#define STBI_REALLOC_SIZED(p,oldsz,newsz) STBI_REALLOC(p,newsz) +#endif + +// x86/x64 detection +#if defined(__x86_64__) || defined(_M_X64) +#define STBI__X64_TARGET +#elif defined(__i386) || defined(_M_IX86) +#define STBI__X86_TARGET +#endif + +#if defined(__GNUC__) && defined(STBI__X86_TARGET) && !defined(__SSE2__) && !defined(STBI_NO_SIMD) +// gcc doesn't support sse2 intrinsics unless you compile with -msse2, +// which in turn means it gets to use SSE2 everywhere. This is unfortunate, +// but previous attempts to provide the SSE2 functions with runtime +// detection caused numerous issues. The way architecture extensions are +// exposed in GCC/Clang is, sadly, not really suited for one-file libs. +// New behavior: if compiled with -msse2, we use SSE2 without any +// detection; if not, we don't use it at all. +#define STBI_NO_SIMD +#endif + +#if defined(__MINGW32__) && defined(STBI__X86_TARGET) && !defined(STBI_MINGW_ENABLE_SSE2) && !defined(STBI_NO_SIMD) +// Note that __MINGW32__ doesn't actually mean 32-bit, so we have to avoid STBI__X64_TARGET +// +// 32-bit MinGW wants ESP to be 16-byte aligned, but this is not in the +// Windows ABI and VC++ as well as Windows DLLs don't maintain that invariant. +// As a result, enabling SSE2 on 32-bit MinGW is dangerous when not +// simultaneously enabling "-mstackrealign". +// +// See https://github.com/nothings/stb/issues/81 for more information. +// +// So default to no SSE2 on 32-bit MinGW. If you've read this far and added +// -mstackrealign to your build settings, feel free to #define STBI_MINGW_ENABLE_SSE2. +#define STBI_NO_SIMD +#endif + +#if !defined(STBI_NO_SIMD) && (defined(STBI__X86_TARGET) || defined(STBI__X64_TARGET)) +#define STBI_SSE2 +#include <emmintrin.h> + +#ifdef _MSC_VER + +#if _MSC_VER >= 1400 // not VC6 +#include <intrin.h> // __cpuid +static int stbi__cpuid3(void) +{ + int info[4]; + __cpuid(info,1); + return info[3]; +} +#else +static int stbi__cpuid3(void) +{ + int res; + __asm { + mov eax,1 + cpuid + mov res,edx + } + return res; +} +#endif + +#define STBI_SIMD_ALIGN(type, name) __declspec(align(16)) type name + +#if !defined(STBI_NO_JPEG) && defined(STBI_SSE2) +static int stbi__sse2_available(void) +{ + int info3 = stbi__cpuid3(); + return ((info3 >> 26) & 1) != 0; +} +#endif + +#else // assume GCC-style if not VC++ +#define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16))) + +#if !defined(STBI_NO_JPEG) && defined(STBI_SSE2) +static int stbi__sse2_available(void) +{ + // If we're even attempting to compile this on GCC/Clang, that means + // -msse2 is on, which means the compiler is allowed to use SSE2 + // instructions at will, and so are we. + return 1; +} +#endif + +#endif +#endif + +// ARM NEON +#if defined(STBI_NO_SIMD) && defined(STBI_NEON) +#undef STBI_NEON +#endif + +#ifdef STBI_NEON +#include <arm_neon.h> +#ifdef _MSC_VER +#define STBI_SIMD_ALIGN(type, name) __declspec(align(16)) type name +#else +#define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16))) +#endif +#endif + +#ifndef STBI_SIMD_ALIGN +#define STBI_SIMD_ALIGN(type, name) type name +#endif + +#ifndef STBI_MAX_DIMENSIONS +#define STBI_MAX_DIMENSIONS (1 << 24) +#endif + +/////////////////////////////////////////////// +// +// stbi__context struct and start_xxx functions + +// stbi__context structure is our basic context used by all images, so it +// contains all the IO context, plus some basic image information +typedef struct +{ + stbi__uint32 img_x, img_y; + int img_n, img_out_n; + + stbi_io_callbacks io; + void *io_user_data; + + int read_from_callbacks; + int buflen; + stbi_uc buffer_start[128]; + int callback_already_read; + + stbi_uc *img_buffer, *img_buffer_end; + stbi_uc *img_buffer_original, *img_buffer_original_end; +} stbi__context; + + +static void stbi__refill_buffer(stbi__context *s); + +// initialize a memory-decode context +static void stbi__start_mem(stbi__context *s, stbi_uc const *buffer, int len) +{ + s->io.read = NULL; + s->read_from_callbacks = 0; + s->callback_already_read = 0; + s->img_buffer = s->img_buffer_original = (stbi_uc *) buffer; + s->img_buffer_end = s->img_buffer_original_end = (stbi_uc *) buffer+len; +} + +// initialize a callback-based context +static void stbi__start_callbacks(stbi__context *s, stbi_io_callbacks *c, void *user) +{ + s->io = *c; + s->io_user_data = user; + s->buflen = sizeof(s->buffer_start); + s->read_from_callbacks = 1; + s->callback_already_read = 0; + s->img_buffer = s->img_buffer_original = s->buffer_start; + stbi__refill_buffer(s); + s->img_buffer_original_end = s->img_buffer_end; +} + +#ifndef STBI_NO_STDIO + +static int stbi__stdio_read(void *user, char *data, int size) +{ + return (int) fread(data,1,size,(FILE*) user); +} + +static void stbi__stdio_skip(void *user, int n) +{ + int ch; + fseek((FILE*) user, n, SEEK_CUR); + ch = fgetc((FILE*) user); /* have to read a byte to reset feof()'s flag */ + if (ch != EOF) { + ungetc(ch, (FILE *) user); /* push byte back onto stream if valid. */ + } +} + +static int stbi__stdio_eof(void *user) +{ + return feof((FILE*) user) || ferror((FILE *) user); +} + +static stbi_io_callbacks stbi__stdio_callbacks = +{ + stbi__stdio_read, + stbi__stdio_skip, + stbi__stdio_eof, +}; + +static void stbi__start_file(stbi__context *s, FILE *f) +{ + stbi__start_callbacks(s, &stbi__stdio_callbacks, (void *) f); +} + +//static void stop_file(stbi__context *s) { } + +#endif // !STBI_NO_STDIO + +static void stbi__rewind(stbi__context *s) +{ + // conceptually rewind SHOULD rewind to the beginning of the stream, + // but we just rewind to the beginning of the initial buffer, because + // we only use it after doing 'test', which only ever looks at at most 92 bytes + s->img_buffer = s->img_buffer_original; + s->img_buffer_end = s->img_buffer_original_end; +} + +enum +{ + STBI_ORDER_RGB, + STBI_ORDER_BGR +}; + +typedef struct +{ + int bits_per_channel; + int num_channels; + int channel_order; +} stbi__result_info; + +#ifndef STBI_NO_JPEG +static int stbi__jpeg_test(stbi__context *s); +static void *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PNG +static int stbi__png_test(stbi__context *s); +static void *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__png_info(stbi__context *s, int *x, int *y, int *comp); +static int stbi__png_is16(stbi__context *s); +#endif + +#ifndef STBI_NO_BMP +static int stbi__bmp_test(stbi__context *s); +static void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_TGA +static int stbi__tga_test(stbi__context *s); +static void *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PSD +static int stbi__psd_test(stbi__context *s); +static void *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc); +static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp); +static int stbi__psd_is16(stbi__context *s); +#endif + +#ifndef STBI_NO_HDR +static int stbi__hdr_test(stbi__context *s); +static float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PIC +static int stbi__pic_test(stbi__context *s); +static void *stbi__pic_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_GIF +static int stbi__gif_test(stbi__context *s); +static void *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, int *z, int *comp, int req_comp); +static int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PNM +static int stbi__pnm_test(stbi__context *s); +static void *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp); +static int stbi__pnm_is16(stbi__context *s); +#endif + +static +#ifdef STBI_THREAD_LOCAL +STBI_THREAD_LOCAL +#endif +const char *stbi__g_failure_reason; + +STBIDEF const char *stbi_failure_reason(void) +{ + return stbi__g_failure_reason; +} + +#ifndef STBI_NO_FAILURE_STRINGS +static int stbi__err(const char *str) +{ + stbi__g_failure_reason = str; + return 0; +} +#endif + +static void *stbi__malloc(size_t size) +{ + return STBI_MALLOC(size); +} + +// stb_image uses ints pervasively, including for offset calculations. +// therefore the largest decoded image size we can support with the +// current code, even on 64-bit targets, is INT_MAX. this is not a +// significant limitation for the intended use case. +// +// we do, however, need to make sure our size calculations don't +// overflow. hence a few helper functions for size calculations that +// multiply integers together, making sure that they're non-negative +// and no overflow occurs. + +// return 1 if the sum is valid, 0 on overflow. +// negative terms are considered invalid. +static int stbi__addsizes_valid(int a, int b) +{ + if (b < 0) return 0; + // now 0 <= b <= INT_MAX, hence also + // 0 <= INT_MAX - b <= INTMAX. + // And "a + b <= INT_MAX" (which might overflow) is the + // same as a <= INT_MAX - b (no overflow) + return a <= INT_MAX - b; +} + +// returns 1 if the product is valid, 0 on overflow. +// negative factors are considered invalid. +static int stbi__mul2sizes_valid(int a, int b) +{ + if (a < 0 || b < 0) return 0; + if (b == 0) return 1; // mul-by-0 is always safe + // portable way to check for no overflows in a*b + return a <= INT_MAX/b; +} + +#if !defined(STBI_NO_JPEG) || !defined(STBI_NO_PNG) || !defined(STBI_NO_TGA) || !defined(STBI_NO_HDR) +// returns 1 if "a*b + add" has no negative terms/factors and doesn't overflow +static int stbi__mad2sizes_valid(int a, int b, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__addsizes_valid(a*b, add); +} +#endif + +// returns 1 if "a*b*c + add" has no negative terms/factors and doesn't overflow +static int stbi__mad3sizes_valid(int a, int b, int c, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a*b, c) && + stbi__addsizes_valid(a*b*c, add); +} + +// returns 1 if "a*b*c*d + add" has no negative terms/factors and doesn't overflow +#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) || !defined(STBI_NO_PNM) +static int stbi__mad4sizes_valid(int a, int b, int c, int d, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a*b, c) && + stbi__mul2sizes_valid(a*b*c, d) && stbi__addsizes_valid(a*b*c*d, add); +} +#endif + +#if !defined(STBI_NO_JPEG) || !defined(STBI_NO_PNG) || !defined(STBI_NO_TGA) || !defined(STBI_NO_HDR) +// mallocs with size overflow checking +static void *stbi__malloc_mad2(int a, int b, int add) +{ + if (!stbi__mad2sizes_valid(a, b, add)) return NULL; + return stbi__malloc(a*b + add); +} +#endif + +static void *stbi__malloc_mad3(int a, int b, int c, int add) +{ + if (!stbi__mad3sizes_valid(a, b, c, add)) return NULL; + return stbi__malloc(a*b*c + add); +} + +#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) || !defined(STBI_NO_PNM) +static void *stbi__malloc_mad4(int a, int b, int c, int d, int add) +{ + if (!stbi__mad4sizes_valid(a, b, c, d, add)) return NULL; + return stbi__malloc(a*b*c*d + add); +} +#endif + +// returns 1 if the sum of two signed ints is valid (between -2^31 and 2^31-1 inclusive), 0 on overflow. +static int stbi__addints_valid(int a, int b) +{ + if ((a >= 0) != (b >= 0)) return 1; // a and b have different signs, so no overflow + if (a < 0 && b < 0) return a >= INT_MIN - b; // same as a + b >= INT_MIN; INT_MIN - b cannot overflow since b < 0. + return a <= INT_MAX - b; +} + +// returns 1 if the product of two signed shorts is valid, 0 on overflow. +static int stbi__mul2shorts_valid(short a, short b) +{ + if (b == 0 || b == -1) return 1; // multiplication by 0 is always 0; check for -1 so SHRT_MIN/b doesn't overflow + if ((a >= 0) == (b >= 0)) return a <= SHRT_MAX/b; // product is positive, so similar to mul2sizes_valid + if (b < 0) return a <= SHRT_MIN / b; // same as a * b >= SHRT_MIN + return a >= SHRT_MIN / b; +} + +// stbi__err - error +// stbi__errpf - error returning pointer to float +// stbi__errpuc - error returning pointer to unsigned char + +#ifdef STBI_NO_FAILURE_STRINGS + #define stbi__err(x,y) 0 +#elif defined(STBI_FAILURE_USERMSG) + #define stbi__err(x,y) stbi__err(y) +#else + #define stbi__err(x,y) stbi__err(x) +#endif + +#define stbi__errpf(x,y) ((float *)(size_t) (stbi__err(x,y)?NULL:NULL)) +#define stbi__errpuc(x,y) ((unsigned char *)(size_t) (stbi__err(x,y)?NULL:NULL)) + +STBIDEF void stbi_image_free(void *retval_from_stbi_load) +{ + STBI_FREE(retval_from_stbi_load); +} + +#ifndef STBI_NO_LINEAR +static float *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp); +#endif + +#ifndef STBI_NO_HDR +static stbi_uc *stbi__hdr_to_ldr(float *data, int x, int y, int comp); +#endif + +static int stbi__vertically_flip_on_load_global = 0; + +STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip) +{ + stbi__vertically_flip_on_load_global = flag_true_if_should_flip; +} + +#ifndef STBI_THREAD_LOCAL +#define stbi__vertically_flip_on_load stbi__vertically_flip_on_load_global +#else +static STBI_THREAD_LOCAL int stbi__vertically_flip_on_load_local, stbi__vertically_flip_on_load_set; + +STBIDEF void stbi_set_flip_vertically_on_load_thread(int flag_true_if_should_flip) +{ + stbi__vertically_flip_on_load_local = flag_true_if_should_flip; + stbi__vertically_flip_on_load_set = 1; +} + +#define stbi__vertically_flip_on_load (stbi__vertically_flip_on_load_set \ + ? stbi__vertically_flip_on_load_local \ + : stbi__vertically_flip_on_load_global) +#endif // STBI_THREAD_LOCAL + +static void *stbi__load_main(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc) +{ + memset(ri, 0, sizeof(*ri)); // make sure it's initialized if we add new fields + ri->bits_per_channel = 8; // default is 8 so most paths don't have to be changed + ri->channel_order = STBI_ORDER_RGB; // all current input & output are this, but this is here so we can add BGR order + ri->num_channels = 0; + + // test the formats with a very explicit header first (at least a FOURCC + // or distinctive magic number first) + #ifndef STBI_NO_PNG + if (stbi__png_test(s)) return stbi__png_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_BMP + if (stbi__bmp_test(s)) return stbi__bmp_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_GIF + if (stbi__gif_test(s)) return stbi__gif_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_PSD + if (stbi__psd_test(s)) return stbi__psd_load(s,x,y,comp,req_comp, ri, bpc); + #else + STBI_NOTUSED(bpc); + #endif + #ifndef STBI_NO_PIC + if (stbi__pic_test(s)) return stbi__pic_load(s,x,y,comp,req_comp, ri); + #endif + + // then the formats that can end up attempting to load with just 1 or 2 + // bytes matching expectations; these are prone to false positives, so + // try them later + #ifndef STBI_NO_JPEG + if (stbi__jpeg_test(s)) return stbi__jpeg_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_PNM + if (stbi__pnm_test(s)) return stbi__pnm_load(s,x,y,comp,req_comp, ri); + #endif + + #ifndef STBI_NO_HDR + if (stbi__hdr_test(s)) { + float *hdr = stbi__hdr_load(s, x,y,comp,req_comp, ri); + return stbi__hdr_to_ldr(hdr, *x, *y, req_comp ? req_comp : *comp); + } + #endif + + #ifndef STBI_NO_TGA + // test tga last because it's a crappy test! + if (stbi__tga_test(s)) + return stbi__tga_load(s,x,y,comp,req_comp, ri); + #endif + + return stbi__errpuc("unknown image type", "Image not of any known type, or corrupt"); +} + +static stbi_uc *stbi__convert_16_to_8(stbi__uint16 *orig, int w, int h, int channels) +{ + int i; + int img_len = w * h * channels; + stbi_uc *reduced; + + reduced = (stbi_uc *) stbi__malloc(img_len); + if (reduced == NULL) return stbi__errpuc("outofmem", "Out of memory"); + + for (i = 0; i < img_len; ++i) + reduced[i] = (stbi_uc)((orig[i] >> 8) & 0xFF); // top half of each byte is sufficient approx of 16->8 bit scaling + + STBI_FREE(orig); + return reduced; +} + +static stbi__uint16 *stbi__convert_8_to_16(stbi_uc *orig, int w, int h, int channels) +{ + int i; + int img_len = w * h * channels; + stbi__uint16 *enlarged; + + enlarged = (stbi__uint16 *) stbi__malloc(img_len*2); + if (enlarged == NULL) return (stbi__uint16 *) stbi__errpuc("outofmem", "Out of memory"); + + for (i = 0; i < img_len; ++i) + enlarged[i] = (stbi__uint16)((orig[i] << 8) + orig[i]); // replicate to high and low byte, maps 0->0, 255->0xffff + + STBI_FREE(orig); + return enlarged; +} + +static void stbi__vertical_flip(void *image, int w, int h, int bytes_per_pixel) +{ + int row; + size_t bytes_per_row = (size_t)w * bytes_per_pixel; + stbi_uc temp[2048]; + stbi_uc *bytes = (stbi_uc *)image; + + for (row = 0; row < (h>>1); row++) { + stbi_uc *row0 = bytes + row*bytes_per_row; + stbi_uc *row1 = bytes + (h - row - 1)*bytes_per_row; + // swap row0 with row1 + size_t bytes_left = bytes_per_row; + while (bytes_left) { + size_t bytes_copy = (bytes_left < sizeof(temp)) ? bytes_left : sizeof(temp); + memcpy(temp, row0, bytes_copy); + memcpy(row0, row1, bytes_copy); + memcpy(row1, temp, bytes_copy); + row0 += bytes_copy; + row1 += bytes_copy; + bytes_left -= bytes_copy; + } + } +} + +#ifndef STBI_NO_GIF +static void stbi__vertical_flip_slices(void *image, int w, int h, int z, int bytes_per_pixel) +{ + int slice; + int slice_size = w * h * bytes_per_pixel; + + stbi_uc *bytes = (stbi_uc *)image; + for (slice = 0; slice < z; ++slice) { + stbi__vertical_flip(bytes, w, h, bytes_per_pixel); + bytes += slice_size; + } +} +#endif + +static unsigned char *stbi__load_and_postprocess_8bit(stbi__context *s, int *x, int *y, int *comp, int req_comp) +{ + stbi__result_info ri; + void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 8); + + if (result == NULL) + return NULL; + + // it is the responsibility of the loaders to make sure we get either 8 or 16 bit. + STBI_ASSERT(ri.bits_per_channel == 8 || ri.bits_per_channel == 16); + + if (ri.bits_per_channel != 8) { + result = stbi__convert_16_to_8((stbi__uint16 *) result, *x, *y, req_comp == 0 ? *comp : req_comp); + ri.bits_per_channel = 8; + } + + // @TODO: move stbi__convert_format to here + + if (stbi__vertically_flip_on_load) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi_uc)); + } + + return (unsigned char *) result; +} + +static stbi__uint16 *stbi__load_and_postprocess_16bit(stbi__context *s, int *x, int *y, int *comp, int req_comp) +{ + stbi__result_info ri; + void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 16); + + if (result == NULL) + return NULL; + + // it is the responsibility of the loaders to make sure we get either 8 or 16 bit. + STBI_ASSERT(ri.bits_per_channel == 8 || ri.bits_per_channel == 16); + + if (ri.bits_per_channel != 16) { + result = stbi__convert_8_to_16((stbi_uc *) result, *x, *y, req_comp == 0 ? *comp : req_comp); + ri.bits_per_channel = 16; + } + + // @TODO: move stbi__convert_format16 to here + // @TODO: special case RGB-to-Y (and RGBA-to-YA) for 8-bit-to-16-bit case to keep more precision + + if (stbi__vertically_flip_on_load) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi__uint16)); + } + + return (stbi__uint16 *) result; +} + +#if !defined(STBI_NO_HDR) && !defined(STBI_NO_LINEAR) +static void stbi__float_postprocess(float *result, int *x, int *y, int *comp, int req_comp) +{ + if (stbi__vertically_flip_on_load && result != NULL) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, channels * sizeof(float)); + } +} +#endif + +#ifndef STBI_NO_STDIO + +#if defined(_WIN32) && defined(STBI_WINDOWS_UTF8) +STBI_EXTERN __declspec(dllimport) int __stdcall MultiByteToWideChar(unsigned int cp, unsigned long flags, const char *str, int cbmb, wchar_t *widestr, int cchwide); +STBI_EXTERN __declspec(dllimport) int __stdcall WideCharToMultiByte(unsigned int cp, unsigned long flags, const wchar_t *widestr, int cchwide, char *str, int cbmb, const char *defchar, int *used_default); +#endif + +#if defined(_WIN32) && defined(STBI_WINDOWS_UTF8) +STBIDEF int stbi_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input) +{ + return WideCharToMultiByte(65001 /* UTF8 */, 0, input, -1, buffer, (int) bufferlen, NULL, NULL); +} +#endif + +static FILE *stbi__fopen(char const *filename, char const *mode) +{ + FILE *f; +#if defined(_WIN32) && defined(STBI_WINDOWS_UTF8) + wchar_t wMode[64]; + wchar_t wFilename[1024]; + if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, filename, -1, wFilename, sizeof(wFilename)/sizeof(*wFilename))) + return 0; + + if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, mode, -1, wMode, sizeof(wMode)/sizeof(*wMode))) + return 0; + +#if defined(_MSC_VER) && _MSC_VER >= 1400 + if (0 != _wfopen_s(&f, wFilename, wMode)) + f = 0; +#else + f = _wfopen(wFilename, wMode); +#endif + +#elif defined(_MSC_VER) && _MSC_VER >= 1400 + if (0 != fopen_s(&f, filename, mode)) + f=0; +#else + f = fopen(filename, mode); +#endif + return f; +} + + +STBIDEF stbi_uc *stbi_load(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + unsigned char *result; + if (!f) return stbi__errpuc("can't fopen", "Unable to open file"); + result = stbi_load_from_file(f,x,y,comp,req_comp); + fclose(f); + return result; +} + +STBIDEF stbi_uc *stbi_load_from_file(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + unsigned char *result; + stbi__context s; + stbi__start_file(&s,f); + result = stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp); + if (result) { + // need to 'unget' all the characters in the IO buffer + fseek(f, - (int) (s.img_buffer_end - s.img_buffer), SEEK_CUR); + } + return result; +} + +STBIDEF stbi__uint16 *stbi_load_from_file_16(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + stbi__uint16 *result; + stbi__context s; + stbi__start_file(&s,f); + result = stbi__load_and_postprocess_16bit(&s,x,y,comp,req_comp); + if (result) { + // need to 'unget' all the characters in the IO buffer + fseek(f, - (int) (s.img_buffer_end - s.img_buffer), SEEK_CUR); + } + return result; +} + +STBIDEF stbi_us *stbi_load_16(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + stbi__uint16 *result; + if (!f) return (stbi_us *) stbi__errpuc("can't fopen", "Unable to open file"); + result = stbi_load_from_file_16(f,x,y,comp,req_comp); + fclose(f); + return result; +} + + +#endif //!STBI_NO_STDIO + +STBIDEF stbi_us *stbi_load_16_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__load_and_postprocess_16bit(&s,x,y,channels_in_file,desired_channels); +} + +STBIDEF stbi_us *stbi_load_16_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *)clbk, user); + return stbi__load_and_postprocess_16bit(&s,x,y,channels_in_file,desired_channels); +} + +STBIDEF stbi_uc *stbi_load_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp); +} + +STBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); + return stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp); +} + +#ifndef STBI_NO_GIF +STBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int len, int **delays, int *x, int *y, int *z, int *comp, int req_comp) +{ + unsigned char *result; + stbi__context s; + stbi__start_mem(&s,buffer,len); + + result = (unsigned char*) stbi__load_gif_main(&s, delays, x, y, z, comp, req_comp); + if (stbi__vertically_flip_on_load) { + stbi__vertical_flip_slices( result, *x, *y, *z, *comp ); + } + + return result; +} +#endif + +#ifndef STBI_NO_LINEAR +static float *stbi__loadf_main(stbi__context *s, int *x, int *y, int *comp, int req_comp) +{ + unsigned char *data; + #ifndef STBI_NO_HDR + if (stbi__hdr_test(s)) { + stbi__result_info ri; + float *hdr_data = stbi__hdr_load(s,x,y,comp,req_comp, &ri); + if (hdr_data) + stbi__float_postprocess(hdr_data,x,y,comp,req_comp); + return hdr_data; + } + #endif + data = stbi__load_and_postprocess_8bit(s, x, y, comp, req_comp); + if (data) + return stbi__ldr_to_hdr(data, *x, *y, req_comp ? req_comp : *comp); + return stbi__errpf("unknown image type", "Image not of any known type, or corrupt"); +} + +STBIDEF float *stbi_loadf_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__loadf_main(&s,x,y,comp,req_comp); +} + +STBIDEF float *stbi_loadf_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); + return stbi__loadf_main(&s,x,y,comp,req_comp); +} + +#ifndef STBI_NO_STDIO +STBIDEF float *stbi_loadf(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + float *result; + FILE *f = stbi__fopen(filename, "rb"); + if (!f) return stbi__errpf("can't fopen", "Unable to open file"); + result = stbi_loadf_from_file(f,x,y,comp,req_comp); + fclose(f); + return result; +} + +STBIDEF float *stbi_loadf_from_file(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_file(&s,f); + return stbi__loadf_main(&s,x,y,comp,req_comp); +} +#endif // !STBI_NO_STDIO + +#endif // !STBI_NO_LINEAR + +// these is-hdr-or-not is defined independent of whether STBI_NO_LINEAR is +// defined, for API simplicity; if STBI_NO_LINEAR is defined, it always +// reports false! + +STBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len) +{ + #ifndef STBI_NO_HDR + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__hdr_test(&s); + #else + STBI_NOTUSED(buffer); + STBI_NOTUSED(len); + return 0; + #endif +} + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_is_hdr (char const *filename) +{ + FILE *f = stbi__fopen(filename, "rb"); + int result=0; + if (f) { + result = stbi_is_hdr_from_file(f); + fclose(f); + } + return result; +} + +STBIDEF int stbi_is_hdr_from_file(FILE *f) +{ + #ifndef STBI_NO_HDR + long pos = ftell(f); + int res; + stbi__context s; + stbi__start_file(&s,f); + res = stbi__hdr_test(&s); + fseek(f, pos, SEEK_SET); + return res; + #else + STBI_NOTUSED(f); + return 0; + #endif +} +#endif // !STBI_NO_STDIO + +STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user) +{ + #ifndef STBI_NO_HDR + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); + return stbi__hdr_test(&s); + #else + STBI_NOTUSED(clbk); + STBI_NOTUSED(user); + return 0; + #endif +} + +#ifndef STBI_NO_LINEAR +static float stbi__l2h_gamma=2.2f, stbi__l2h_scale=1.0f; + +STBIDEF void stbi_ldr_to_hdr_gamma(float gamma) { stbi__l2h_gamma = gamma; } +STBIDEF void stbi_ldr_to_hdr_scale(float scale) { stbi__l2h_scale = scale; } +#endif + +static float stbi__h2l_gamma_i=1.0f/2.2f, stbi__h2l_scale_i=1.0f; + +STBIDEF void stbi_hdr_to_ldr_gamma(float gamma) { stbi__h2l_gamma_i = 1/gamma; } +STBIDEF void stbi_hdr_to_ldr_scale(float scale) { stbi__h2l_scale_i = 1/scale; } + + +////////////////////////////////////////////////////////////////////////////// +// +// Common code used by all image loaders +// + +enum +{ + STBI__SCAN_load=0, + STBI__SCAN_type, + STBI__SCAN_header +}; + +static void stbi__refill_buffer(stbi__context *s) +{ + int n = (s->io.read)(s->io_user_data,(char*)s->buffer_start,s->buflen); + s->callback_already_read += (int) (s->img_buffer - s->img_buffer_original); + if (n == 0) { + // at end of file, treat same as if from memory, but need to handle case + // where s->img_buffer isn't pointing to safe memory, e.g. 0-byte file + s->read_from_callbacks = 0; + s->img_buffer = s->buffer_start; + s->img_buffer_end = s->buffer_start+1; + *s->img_buffer = 0; + } else { + s->img_buffer = s->buffer_start; + s->img_buffer_end = s->buffer_start + n; + } +} + +stbi_inline static stbi_uc stbi__get8(stbi__context *s) +{ + if (s->img_buffer < s->img_buffer_end) + return *s->img_buffer++; + if (s->read_from_callbacks) { + stbi__refill_buffer(s); + return *s->img_buffer++; + } + return 0; +} + +#if defined(STBI_NO_JPEG) && defined(STBI_NO_HDR) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +// nothing +#else +stbi_inline static int stbi__at_eof(stbi__context *s) +{ + if (s->io.read) { + if (!(s->io.eof)(s->io_user_data)) return 0; + // if feof() is true, check if buffer = end + // special case: we've only got the special 0 character at the end + if (s->read_from_callbacks == 0) return 1; + } + + return s->img_buffer >= s->img_buffer_end; +} +#endif + +#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) +// nothing +#else +static void stbi__skip(stbi__context *s, int n) +{ + if (n == 0) return; // already there! + if (n < 0) { + s->img_buffer = s->img_buffer_end; + return; + } + if (s->io.read) { + int blen = (int) (s->img_buffer_end - s->img_buffer); + if (blen < n) { + s->img_buffer = s->img_buffer_end; + (s->io.skip)(s->io_user_data, n - blen); + return; + } + } + s->img_buffer += n; +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_TGA) && defined(STBI_NO_HDR) && defined(STBI_NO_PNM) +// nothing +#else +static int stbi__getn(stbi__context *s, stbi_uc *buffer, int n) +{ + if (s->io.read) { + int blen = (int) (s->img_buffer_end - s->img_buffer); + if (blen < n) { + int res, count; + + memcpy(buffer, s->img_buffer, blen); + + count = (s->io.read)(s->io_user_data, (char*) buffer + blen, n - blen); + res = (count == (n-blen)); + s->img_buffer = s->img_buffer_end; + return res; + } + } + + if (s->img_buffer+n <= s->img_buffer_end) { + memcpy(buffer, s->img_buffer, n); + s->img_buffer += n; + return 1; + } else + return 0; +} +#endif + +#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +// nothing +#else +static int stbi__get16be(stbi__context *s) +{ + int z = stbi__get8(s); + return (z << 8) + stbi__get8(s); +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +// nothing +#else +static stbi__uint32 stbi__get32be(stbi__context *s) +{ + stbi__uint32 z = stbi__get16be(s); + return (z << 16) + stbi__get16be(s); +} +#endif + +#if defined(STBI_NO_BMP) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) +// nothing +#else +static int stbi__get16le(stbi__context *s) +{ + int z = stbi__get8(s); + return z + (stbi__get8(s) << 8); +} +#endif + +#ifndef STBI_NO_BMP +static stbi__uint32 stbi__get32le(stbi__context *s) +{ + stbi__uint32 z = stbi__get16le(s); + z += (stbi__uint32)stbi__get16le(s) << 16; + return z; +} +#endif + +#define STBI__BYTECAST(x) ((stbi_uc) ((x) & 255)) // truncate int to byte without warnings + +#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +// nothing +#else +////////////////////////////////////////////////////////////////////////////// +// +// generic converter from built-in img_n to req_comp +// individual types do this automatically as much as possible (e.g. jpeg +// does all cases internally since it needs to colorspace convert anyway, +// and it never has alpha, so very few cases ). png can automatically +// interleave an alpha=255 channel, but falls back to this for other cases +// +// assume data buffer is malloced, so malloc a new one and free that one +// only failure mode is malloc failing + +static stbi_uc stbi__compute_y(int r, int g, int b) +{ + return (stbi_uc) (((r*77) + (g*150) + (29*b)) >> 8); +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +// nothing +#else +static unsigned char *stbi__convert_format(unsigned char *data, int img_n, int req_comp, unsigned int x, unsigned int y) +{ + int i,j; + unsigned char *good; + + if (req_comp == img_n) return data; + STBI_ASSERT(req_comp >= 1 && req_comp <= 4); + + good = (unsigned char *) stbi__malloc_mad3(req_comp, x, y, 0); + if (good == NULL) { + STBI_FREE(data); + return stbi__errpuc("outofmem", "Out of memory"); + } + + for (j=0; j < (int) y; ++j) { + unsigned char *src = data + j * x * img_n ; + unsigned char *dest = good + j * x * req_comp; + + #define STBI__COMBO(a,b) ((a)*8+(b)) + #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) + // convert source image with img_n components to one with req_comp components; + // avoid switch per pixel, so use switch per scanline and massive macros + switch (STBI__COMBO(img_n, req_comp)) { + STBI__CASE(1,2) { dest[0]=src[0]; dest[1]=255; } break; + STBI__CASE(1,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(1,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=255; } break; + STBI__CASE(2,1) { dest[0]=src[0]; } break; + STBI__CASE(2,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(2,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=src[1]; } break; + STBI__CASE(3,4) { dest[0]=src[0];dest[1]=src[1];dest[2]=src[2];dest[3]=255; } break; + STBI__CASE(3,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); } break; + STBI__CASE(3,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); dest[1] = 255; } break; + STBI__CASE(4,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); } break; + STBI__CASE(4,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); dest[1] = src[3]; } break; + STBI__CASE(4,3) { dest[0]=src[0];dest[1]=src[1];dest[2]=src[2]; } break; + default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return stbi__errpuc("unsupported", "Unsupported format conversion"); + } + #undef STBI__CASE + } + + STBI_FREE(data); + return good; +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +// nothing +#else +static stbi__uint16 stbi__compute_y_16(int r, int g, int b) +{ + return (stbi__uint16) (((r*77) + (g*150) + (29*b)) >> 8); +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +// nothing +#else +static stbi__uint16 *stbi__convert_format16(stbi__uint16 *data, int img_n, int req_comp, unsigned int x, unsigned int y) +{ + int i,j; + stbi__uint16 *good; + + if (req_comp == img_n) return data; + STBI_ASSERT(req_comp >= 1 && req_comp <= 4); + + good = (stbi__uint16 *) stbi__malloc(req_comp * x * y * 2); + if (good == NULL) { + STBI_FREE(data); + return (stbi__uint16 *) stbi__errpuc("outofmem", "Out of memory"); + } + + for (j=0; j < (int) y; ++j) { + stbi__uint16 *src = data + j * x * img_n ; + stbi__uint16 *dest = good + j * x * req_comp; + + #define STBI__COMBO(a,b) ((a)*8+(b)) + #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) + // convert source image with img_n components to one with req_comp components; + // avoid switch per pixel, so use switch per scanline and massive macros + switch (STBI__COMBO(img_n, req_comp)) { + STBI__CASE(1,2) { dest[0]=src[0]; dest[1]=0xffff; } break; + STBI__CASE(1,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(1,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=0xffff; } break; + STBI__CASE(2,1) { dest[0]=src[0]; } break; + STBI__CASE(2,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(2,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=src[1]; } break; + STBI__CASE(3,4) { dest[0]=src[0];dest[1]=src[1];dest[2]=src[2];dest[3]=0xffff; } break; + STBI__CASE(3,1) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); } break; + STBI__CASE(3,2) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); dest[1] = 0xffff; } break; + STBI__CASE(4,1) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); } break; + STBI__CASE(4,2) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); dest[1] = src[3]; } break; + STBI__CASE(4,3) { dest[0]=src[0];dest[1]=src[1];dest[2]=src[2]; } break; + default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return (stbi__uint16*) stbi__errpuc("unsupported", "Unsupported format conversion"); + } + #undef STBI__CASE + } + + STBI_FREE(data); + return good; +} +#endif + +#ifndef STBI_NO_LINEAR +static float *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp) +{ + int i,k,n; + float *output; + if (!data) return NULL; + output = (float *) stbi__malloc_mad4(x, y, comp, sizeof(float), 0); + if (output == NULL) { STBI_FREE(data); return stbi__errpf("outofmem", "Out of memory"); } + // compute number of non-alpha components + if (comp & 1) n = comp; else n = comp-1; + for (i=0; i < x*y; ++i) { + for (k=0; k < n; ++k) { + output[i*comp + k] = (float) (pow(data[i*comp+k]/255.0f, stbi__l2h_gamma) * stbi__l2h_scale); + } + } + if (n < comp) { + for (i=0; i < x*y; ++i) { + output[i*comp + n] = data[i*comp + n]/255.0f; + } + } + STBI_FREE(data); + return output; +} +#endif + +#ifndef STBI_NO_HDR +#define stbi__float2int(x) ((int) (x)) +static stbi_uc *stbi__hdr_to_ldr(float *data, int x, int y, int comp) +{ + int i,k,n; + stbi_uc *output; + if (!data) return NULL; + output = (stbi_uc *) stbi__malloc_mad3(x, y, comp, 0); + if (output == NULL) { STBI_FREE(data); return stbi__errpuc("outofmem", "Out of memory"); } + // compute number of non-alpha components + if (comp & 1) n = comp; else n = comp-1; + for (i=0; i < x*y; ++i) { + for (k=0; k < n; ++k) { + float z = (float) pow(data[i*comp+k]*stbi__h2l_scale_i, stbi__h2l_gamma_i) * 255 + 0.5f; + if (z < 0) z = 0; + if (z > 255) z = 255; + output[i*comp + k] = (stbi_uc) stbi__float2int(z); + } + if (k < comp) { + float z = data[i*comp+k] * 255 + 0.5f; + if (z < 0) z = 0; + if (z > 255) z = 255; + output[i*comp + k] = (stbi_uc) stbi__float2int(z); + } + } + STBI_FREE(data); + return output; +} +#endif + +////////////////////////////////////////////////////////////////////////////// +// +// "baseline" JPEG/JFIF decoder +// +// simple implementation +// - doesn't support delayed output of y-dimension +// - simple interface (only one output format: 8-bit interleaved RGB) +// - doesn't try to recover corrupt jpegs +// - doesn't allow partial loading, loading multiple at once +// - still fast on x86 (copying globals into locals doesn't help x86) +// - allocates lots of intermediate memory (full size of all components) +// - non-interleaved case requires this anyway +// - allows good upsampling (see next) +// high-quality +// - upsampled channels are bilinearly interpolated, even across blocks +// - quality integer IDCT derived from IJG's 'slow' +// performance +// - fast huffman; reasonable integer IDCT +// - some SIMD kernels for common paths on targets with SSE2/NEON +// - uses a lot of intermediate memory, could cache poorly + +#ifndef STBI_NO_JPEG + +// huffman decoding acceleration +#define FAST_BITS 9 // larger handles more cases; smaller stomps less cache + +typedef struct +{ + stbi_uc fast[1 << FAST_BITS]; + // weirdly, repacking this into AoS is a 10% speed loss, instead of a win + stbi__uint16 code[256]; + stbi_uc values[256]; + stbi_uc size[257]; + unsigned int maxcode[18]; + int delta[17]; // old 'firstsymbol' - old 'firstcode' +} stbi__huffman; + +typedef struct +{ + stbi__context *s; + stbi__huffman huff_dc[4]; + stbi__huffman huff_ac[4]; + stbi__uint16 dequant[4][64]; + stbi__int16 fast_ac[4][1 << FAST_BITS]; + +// sizes for components, interleaved MCUs + int img_h_max, img_v_max; + int img_mcu_x, img_mcu_y; + int img_mcu_w, img_mcu_h; + +// definition of jpeg image component + struct + { + int id; + int h,v; + int tq; + int hd,ha; + int dc_pred; + + int x,y,w2,h2; + stbi_uc *data; + void *raw_data, *raw_coeff; + stbi_uc *linebuf; + short *coeff; // progressive only + int coeff_w, coeff_h; // number of 8x8 coefficient blocks + } img_comp[4]; + + stbi__uint32 code_buffer; // jpeg entropy-coded buffer + int code_bits; // number of valid bits + unsigned char marker; // marker seen while filling entropy buffer + int nomore; // flag if we saw a marker so must stop + + int progressive; + int spec_start; + int spec_end; + int succ_high; + int succ_low; + int eob_run; + int jfif; + int app14_color_transform; // Adobe APP14 tag + int rgb; + + int scan_n, order[4]; + int restart_interval, todo; + +// kernels + void (*idct_block_kernel)(stbi_uc *out, int out_stride, short data[64]); + void (*YCbCr_to_RGB_kernel)(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, const stbi_uc *pcr, int count, int step); + stbi_uc *(*resample_row_hv_2_kernel)(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs); +} stbi__jpeg; + +static int stbi__build_huffman(stbi__huffman *h, int *count) +{ + int i,j,k=0; + unsigned int code; + // build size list for each symbol (from JPEG spec) + for (i=0; i < 16; ++i) { + for (j=0; j < count[i]; ++j) { + h->size[k++] = (stbi_uc) (i+1); + if(k >= 257) return stbi__err("bad size list","Corrupt JPEG"); + } + } + h->size[k] = 0; + + // compute actual symbols (from jpeg spec) + code = 0; + k = 0; + for(j=1; j <= 16; ++j) { + // compute delta to add to code to compute symbol id + h->delta[j] = k - code; + if (h->size[k] == j) { + while (h->size[k] == j) + h->code[k++] = (stbi__uint16) (code++); + if (code-1 >= (1u << j)) return stbi__err("bad code lengths","Corrupt JPEG"); + } + // compute largest code + 1 for this size, preshifted as needed later + h->maxcode[j] = code << (16-j); + code <<= 1; + } + h->maxcode[j] = 0xffffffff; + + // build non-spec acceleration table; 255 is flag for not-accelerated + memset(h->fast, 255, 1 << FAST_BITS); + for (i=0; i < k; ++i) { + int s = h->size[i]; + if (s <= FAST_BITS) { + int c = h->code[i] << (FAST_BITS-s); + int m = 1 << (FAST_BITS-s); + for (j=0; j < m; ++j) { + h->fast[c+j] = (stbi_uc) i; + } + } + } + return 1; +} + +// build a table that decodes both magnitude and value of small ACs in +// one go. +static void stbi__build_fast_ac(stbi__int16 *fast_ac, stbi__huffman *h) +{ + int i; + for (i=0; i < (1 << FAST_BITS); ++i) { + stbi_uc fast = h->fast[i]; + fast_ac[i] = 0; + if (fast < 255) { + int rs = h->values[fast]; + int run = (rs >> 4) & 15; + int magbits = rs & 15; + int len = h->size[fast]; + + if (magbits && len + magbits <= FAST_BITS) { + // magnitude code followed by receive_extend code + int k = ((i << len) & ((1 << FAST_BITS) - 1)) >> (FAST_BITS - magbits); + int m = 1 << (magbits - 1); + if (k < m) k += (~0U << magbits) + 1; + // if the result is small enough, we can fit it in fast_ac table + if (k >= -128 && k <= 127) + fast_ac[i] = (stbi__int16) ((k * 256) + (run * 16) + (len + magbits)); + } + } + } +} + +static void stbi__grow_buffer_unsafe(stbi__jpeg *j) +{ + do { + unsigned int b = j->nomore ? 0 : stbi__get8(j->s); + if (b == 0xff) { + int c = stbi__get8(j->s); + while (c == 0xff) c = stbi__get8(j->s); // consume fill bytes + if (c != 0) { + j->marker = (unsigned char) c; + j->nomore = 1; + return; + } + } + j->code_buffer |= b << (24 - j->code_bits); + j->code_bits += 8; + } while (j->code_bits <= 24); +} + +// (1 << n) - 1 +static const stbi__uint32 stbi__bmask[17]={0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535}; + +// decode a jpeg huffman value from the bitstream +stbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg *j, stbi__huffman *h) +{ + unsigned int temp; + int c,k; + + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + + // look at the top FAST_BITS and determine what symbol ID it is, + // if the code is <= FAST_BITS + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); + k = h->fast[c]; + if (k < 255) { + int s = h->size[k]; + if (s > j->code_bits) + return -1; + j->code_buffer <<= s; + j->code_bits -= s; + return h->values[k]; + } + + // naive test is to shift the code_buffer down so k bits are + // valid, then test against maxcode. To speed this up, we've + // preshifted maxcode left so that it has (16-k) 0s at the + // end; in other words, regardless of the number of bits, it + // wants to be compared against something shifted to have 16; + // that way we don't need to shift inside the loop. + temp = j->code_buffer >> 16; + for (k=FAST_BITS+1 ; ; ++k) + if (temp < h->maxcode[k]) + break; + if (k == 17) { + // error! code not found + j->code_bits -= 16; + return -1; + } + + if (k > j->code_bits) + return -1; + + // convert the huffman code to the symbol id + c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k]; + if(c < 0 || c >= 256) // symbol id out of bounds! + return -1; + STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]); + + // convert the id to a symbol + j->code_bits -= k; + j->code_buffer <<= k; + return h->values[c]; +} + +// bias[n] = (-1<<n) + 1 +static const int stbi__jbias[16] = {0,-1,-3,-7,-15,-31,-63,-127,-255,-511,-1023,-2047,-4095,-8191,-16383,-32767}; + +// combined JPEG 'receive' and JPEG 'extend', since baseline +// always extends everything it receives. +stbi_inline static int stbi__extend_receive(stbi__jpeg *j, int n) +{ + unsigned int k; + int sgn; + if (j->code_bits < n) stbi__grow_buffer_unsafe(j); + if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing + + sgn = j->code_buffer >> 31; // sign bit always in MSB; 0 if MSB clear (positive), 1 if MSB set (negative) + k = stbi_lrot(j->code_buffer, n); + j->code_buffer = k & ~stbi__bmask[n]; + k &= stbi__bmask[n]; + j->code_bits -= n; + return k + (stbi__jbias[n] & (sgn - 1)); +} + +// get some unsigned bits +stbi_inline static int stbi__jpeg_get_bits(stbi__jpeg *j, int n) +{ + unsigned int k; + if (j->code_bits < n) stbi__grow_buffer_unsafe(j); + if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing + k = stbi_lrot(j->code_buffer, n); + j->code_buffer = k & ~stbi__bmask[n]; + k &= stbi__bmask[n]; + j->code_bits -= n; + return k; +} + +stbi_inline static int stbi__jpeg_get_bit(stbi__jpeg *j) +{ + unsigned int k; + if (j->code_bits < 1) stbi__grow_buffer_unsafe(j); + if (j->code_bits < 1) return 0; // ran out of bits from stream, return 0s intead of continuing + k = j->code_buffer; + j->code_buffer <<= 1; + --j->code_bits; + return k & 0x80000000; +} + +// given a value that's at position X in the zigzag stream, +// where does it appear in the 8x8 matrix coded as row-major? +static const stbi_uc stbi__jpeg_dezigzag[64+15] = +{ + 0, 1, 8, 16, 9, 2, 3, 10, + 17, 24, 32, 25, 18, 11, 4, 5, + 12, 19, 26, 33, 40, 48, 41, 34, + 27, 20, 13, 6, 7, 14, 21, 28, + 35, 42, 49, 56, 57, 50, 43, 36, + 29, 22, 15, 23, 30, 37, 44, 51, + 58, 59, 52, 45, 38, 31, 39, 46, + 53, 60, 61, 54, 47, 55, 62, 63, + // let corrupt input sample past end + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63 +}; + +// decode one 64-entry block-- +static int stbi__jpeg_decode_block(stbi__jpeg *j, short data[64], stbi__huffman *hdc, stbi__huffman *hac, stbi__int16 *fac, int b, stbi__uint16 *dequant) +{ + int diff,dc,k; + int t; + + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + t = stbi__jpeg_huff_decode(j, hdc); + if (t < 0 || t > 15) return stbi__err("bad huffman code","Corrupt JPEG"); + + // 0 all the ac values now so we can do it 32-bits at a time + memset(data,0,64*sizeof(data[0])); + + diff = t ? stbi__extend_receive(j, t) : 0; + if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta","Corrupt JPEG"); + dc = j->img_comp[b].dc_pred + diff; + j->img_comp[b].dc_pred = dc; + if (!stbi__mul2shorts_valid(dc, dequant[0])) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + data[0] = (short) (dc * dequant[0]); + + // decode AC components, see JPEG spec + k = 1; + do { + unsigned int zig; + int c,r,s; + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); + r = fac[c]; + if (r) { // fast-AC path + k += (r >> 4) & 15; // run + s = r & 15; // combined length + if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); + j->code_buffer <<= s; + j->code_bits -= s; + // decode into unzigzag'd location + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) ((r >> 8) * dequant[zig]); + } else { + int rs = stbi__jpeg_huff_decode(j, hac); + if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (rs != 0xf0) break; // end block + k += 16; + } else { + k += r; + // decode into unzigzag'd location + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) (stbi__extend_receive(j,s) * dequant[zig]); + } + } + } while (k < 64); + return 1; +} + +static int stbi__jpeg_decode_block_prog_dc(stbi__jpeg *j, short data[64], stbi__huffman *hdc, int b) +{ + int diff,dc; + int t; + if (j->spec_end != 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + + if (j->succ_high == 0) { + // first scan for DC coefficient, must be first + memset(data,0,64*sizeof(data[0])); // 0 all the ac values now + t = stbi__jpeg_huff_decode(j, hdc); + if (t < 0 || t > 15) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + diff = t ? stbi__extend_receive(j, t) : 0; + + if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); + dc = j->img_comp[b].dc_pred + diff; + j->img_comp[b].dc_pred = dc; + if (!stbi__mul2shorts_valid(dc, 1 << j->succ_low)) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + data[0] = (short) (dc * (1 << j->succ_low)); + } else { + // refinement scan for DC coefficient + if (stbi__jpeg_get_bit(j)) + data[0] += (short) (1 << j->succ_low); + } + return 1; +} + +// @OPTIMIZE: store non-zigzagged during the decode passes, +// and only de-zigzag when dequantizing +static int stbi__jpeg_decode_block_prog_ac(stbi__jpeg *j, short data[64], stbi__huffman *hac, stbi__int16 *fac) +{ + int k; + if (j->spec_start == 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + if (j->succ_high == 0) { + int shift = j->succ_low; + + if (j->eob_run) { + --j->eob_run; + return 1; + } + + k = j->spec_start; + do { + unsigned int zig; + int c,r,s; + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); + r = fac[c]; + if (r) { // fast-AC path + k += (r >> 4) & 15; // run + s = r & 15; // combined length + if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); + j->code_buffer <<= s; + j->code_bits -= s; + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) ((r >> 8) * (1 << shift)); + } else { + int rs = stbi__jpeg_huff_decode(j, hac); + if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (r < 15) { + j->eob_run = (1 << r); + if (r) + j->eob_run += stbi__jpeg_get_bits(j, r); + --j->eob_run; + break; + } + k += 16; + } else { + k += r; + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) (stbi__extend_receive(j,s) * (1 << shift)); + } + } + } while (k <= j->spec_end); + } else { + // refinement scan for these AC coefficients + + short bit = (short) (1 << j->succ_low); + + if (j->eob_run) { + --j->eob_run; + for (k = j->spec_start; k <= j->spec_end; ++k) { + short *p = &data[stbi__jpeg_dezigzag[k]]; + if (*p != 0) + if (stbi__jpeg_get_bit(j)) + if ((*p & bit)==0) { + if (*p > 0) + *p += bit; + else + *p -= bit; + } + } + } else { + k = j->spec_start; + do { + int r,s; + int rs = stbi__jpeg_huff_decode(j, hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh + if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (r < 15) { + j->eob_run = (1 << r) - 1; + if (r) + j->eob_run += stbi__jpeg_get_bits(j, r); + r = 64; // force end of block + } else { + // r=15 s=0 should write 16 0s, so we just do + // a run of 15 0s and then write s (which is 0), + // so we don't have to do anything special here + } + } else { + if (s != 1) return stbi__err("bad huffman code", "Corrupt JPEG"); + // sign bit + if (stbi__jpeg_get_bit(j)) + s = bit; + else + s = -bit; + } + + // advance by r + while (k <= j->spec_end) { + short *p = &data[stbi__jpeg_dezigzag[k++]]; + if (*p != 0) { + if (stbi__jpeg_get_bit(j)) + if ((*p & bit)==0) { + if (*p > 0) + *p += bit; + else + *p -= bit; + } + } else { + if (r == 0) { + *p = (short) s; + break; + } + --r; + } + } + } while (k <= j->spec_end); + } + } + return 1; +} + +// take a -128..127 value and stbi__clamp it and convert to 0..255 +stbi_inline static stbi_uc stbi__clamp(int x) +{ + // trick to use a single test to catch both cases + if ((unsigned int) x > 255) { + if (x < 0) return 0; + if (x > 255) return 255; + } + return (stbi_uc) x; +} + +#define stbi__f2f(x) ((int) (((x) * 4096 + 0.5))) +#define stbi__fsh(x) ((x) * 4096) + +// derived from jidctint -- DCT_ISLOW +#define STBI__IDCT_1D(s0,s1,s2,s3,s4,s5,s6,s7) \ + int t0,t1,t2,t3,p1,p2,p3,p4,p5,x0,x1,x2,x3; \ + p2 = s2; \ + p3 = s6; \ + p1 = (p2+p3) * stbi__f2f(0.5411961f); \ + t2 = p1 + p3*stbi__f2f(-1.847759065f); \ + t3 = p1 + p2*stbi__f2f( 0.765366865f); \ + p2 = s0; \ + p3 = s4; \ + t0 = stbi__fsh(p2+p3); \ + t1 = stbi__fsh(p2-p3); \ + x0 = t0+t3; \ + x3 = t0-t3; \ + x1 = t1+t2; \ + x2 = t1-t2; \ + t0 = s7; \ + t1 = s5; \ + t2 = s3; \ + t3 = s1; \ + p3 = t0+t2; \ + p4 = t1+t3; \ + p1 = t0+t3; \ + p2 = t1+t2; \ + p5 = (p3+p4)*stbi__f2f( 1.175875602f); \ + t0 = t0*stbi__f2f( 0.298631336f); \ + t1 = t1*stbi__f2f( 2.053119869f); \ + t2 = t2*stbi__f2f( 3.072711026f); \ + t3 = t3*stbi__f2f( 1.501321110f); \ + p1 = p5 + p1*stbi__f2f(-0.899976223f); \ + p2 = p5 + p2*stbi__f2f(-2.562915447f); \ + p3 = p3*stbi__f2f(-1.961570560f); \ + p4 = p4*stbi__f2f(-0.390180644f); \ + t3 += p1+p4; \ + t2 += p2+p3; \ + t1 += p2+p4; \ + t0 += p1+p3; + +static void stbi__idct_block(stbi_uc *out, int out_stride, short data[64]) +{ + int i,val[64],*v=val; + stbi_uc *o; + short *d = data; + + // columns + for (i=0; i < 8; ++i,++d, ++v) { + // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing + if (d[ 8]==0 && d[16]==0 && d[24]==0 && d[32]==0 + && d[40]==0 && d[48]==0 && d[56]==0) { + // no shortcut 0 seconds + // (1|2|3|4|5|6|7)==0 0 seconds + // all separate -0.047 seconds + // 1 && 2|3 && 4|5 && 6|7: -0.047 seconds + int dcterm = d[0]*4; + v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm; + } else { + STBI__IDCT_1D(d[ 0],d[ 8],d[16],d[24],d[32],d[40],d[48],d[56]) + // constants scaled things up by 1<<12; let's bring them back + // down, but keep 2 extra bits of precision + x0 += 512; x1 += 512; x2 += 512; x3 += 512; + v[ 0] = (x0+t3) >> 10; + v[56] = (x0-t3) >> 10; + v[ 8] = (x1+t2) >> 10; + v[48] = (x1-t2) >> 10; + v[16] = (x2+t1) >> 10; + v[40] = (x2-t1) >> 10; + v[24] = (x3+t0) >> 10; + v[32] = (x3-t0) >> 10; + } + } + + for (i=0, v=val, o=out; i < 8; ++i,v+=8,o+=out_stride) { + // no fast case since the first 1D IDCT spread components out + STBI__IDCT_1D(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7]) + // constants scaled things up by 1<<12, plus we had 1<<2 from first + // loop, plus horizontal and vertical each scale by sqrt(8) so together + // we've got an extra 1<<3, so 1<<17 total we need to remove. + // so we want to round that, which means adding 0.5 * 1<<17, + // aka 65536. Also, we'll end up with -128 to 127 that we want + // to encode as 0..255 by adding 128, so we'll add that before the shift + x0 += 65536 + (128<<17); + x1 += 65536 + (128<<17); + x2 += 65536 + (128<<17); + x3 += 65536 + (128<<17); + // tried computing the shifts into temps, or'ing the temps to see + // if any were out of range, but that was slower + o[0] = stbi__clamp((x0+t3) >> 17); + o[7] = stbi__clamp((x0-t3) >> 17); + o[1] = stbi__clamp((x1+t2) >> 17); + o[6] = stbi__clamp((x1-t2) >> 17); + o[2] = stbi__clamp((x2+t1) >> 17); + o[5] = stbi__clamp((x2-t1) >> 17); + o[3] = stbi__clamp((x3+t0) >> 17); + o[4] = stbi__clamp((x3-t0) >> 17); + } +} + +#ifdef STBI_SSE2 +// sse2 integer IDCT. not the fastest possible implementation but it +// produces bit-identical results to the generic C version so it's +// fully "transparent". +static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64]) +{ + // This is constructed to match our regular (generic) integer IDCT exactly. + __m128i row0, row1, row2, row3, row4, row5, row6, row7; + __m128i tmp; + + // dot product constant: even elems=x, odd elems=y + #define dct_const(x,y) _mm_setr_epi16((x),(y),(x),(y),(x),(y),(x),(y)) + + // out(0) = c0[even]*x + c0[odd]*y (c0, x, y 16-bit, out 32-bit) + // out(1) = c1[even]*x + c1[odd]*y + #define dct_rot(out0,out1, x,y,c0,c1) \ + __m128i c0##lo = _mm_unpacklo_epi16((x),(y)); \ + __m128i c0##hi = _mm_unpackhi_epi16((x),(y)); \ + __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \ + __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \ + __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \ + __m128i out1##_h = _mm_madd_epi16(c0##hi, c1) + + // out = in << 12 (in 16-bit, out 32-bit) + #define dct_widen(out, in) \ + __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \ + __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4) + + // wide add + #define dct_wadd(out, a, b) \ + __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \ + __m128i out##_h = _mm_add_epi32(a##_h, b##_h) + + // wide sub + #define dct_wsub(out, a, b) \ + __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \ + __m128i out##_h = _mm_sub_epi32(a##_h, b##_h) + + // butterfly a/b, add bias, then shift by "s" and pack + #define dct_bfly32o(out0, out1, a,b,bias,s) \ + { \ + __m128i abiased_l = _mm_add_epi32(a##_l, bias); \ + __m128i abiased_h = _mm_add_epi32(a##_h, bias); \ + dct_wadd(sum, abiased, b); \ + dct_wsub(dif, abiased, b); \ + out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \ + out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \ + } + + // 8-bit interleave step (for transposes) + #define dct_interleave8(a, b) \ + tmp = a; \ + a = _mm_unpacklo_epi8(a, b); \ + b = _mm_unpackhi_epi8(tmp, b) + + // 16-bit interleave step (for transposes) + #define dct_interleave16(a, b) \ + tmp = a; \ + a = _mm_unpacklo_epi16(a, b); \ + b = _mm_unpackhi_epi16(tmp, b) + + #define dct_pass(bias,shift) \ + { \ + /* even part */ \ + dct_rot(t2e,t3e, row2,row6, rot0_0,rot0_1); \ + __m128i sum04 = _mm_add_epi16(row0, row4); \ + __m128i dif04 = _mm_sub_epi16(row0, row4); \ + dct_widen(t0e, sum04); \ + dct_widen(t1e, dif04); \ + dct_wadd(x0, t0e, t3e); \ + dct_wsub(x3, t0e, t3e); \ + dct_wadd(x1, t1e, t2e); \ + dct_wsub(x2, t1e, t2e); \ + /* odd part */ \ + dct_rot(y0o,y2o, row7,row3, rot2_0,rot2_1); \ + dct_rot(y1o,y3o, row5,row1, rot3_0,rot3_1); \ + __m128i sum17 = _mm_add_epi16(row1, row7); \ + __m128i sum35 = _mm_add_epi16(row3, row5); \ + dct_rot(y4o,y5o, sum17,sum35, rot1_0,rot1_1); \ + dct_wadd(x4, y0o, y4o); \ + dct_wadd(x5, y1o, y5o); \ + dct_wadd(x6, y2o, y5o); \ + dct_wadd(x7, y3o, y4o); \ + dct_bfly32o(row0,row7, x0,x7,bias,shift); \ + dct_bfly32o(row1,row6, x1,x6,bias,shift); \ + dct_bfly32o(row2,row5, x2,x5,bias,shift); \ + dct_bfly32o(row3,row4, x3,x4,bias,shift); \ + } + + __m128i rot0_0 = dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f)); + __m128i rot0_1 = dct_const(stbi__f2f(0.5411961f) + stbi__f2f( 0.765366865f), stbi__f2f(0.5411961f)); + __m128i rot1_0 = dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f), stbi__f2f(1.175875602f)); + __m128i rot1_1 = dct_const(stbi__f2f(1.175875602f), stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f)); + __m128i rot2_0 = dct_const(stbi__f2f(-1.961570560f) + stbi__f2f( 0.298631336f), stbi__f2f(-1.961570560f)); + __m128i rot2_1 = dct_const(stbi__f2f(-1.961570560f), stbi__f2f(-1.961570560f) + stbi__f2f( 3.072711026f)); + __m128i rot3_0 = dct_const(stbi__f2f(-0.390180644f) + stbi__f2f( 2.053119869f), stbi__f2f(-0.390180644f)); + __m128i rot3_1 = dct_const(stbi__f2f(-0.390180644f), stbi__f2f(-0.390180644f) + stbi__f2f( 1.501321110f)); + + // rounding biases in column/row passes, see stbi__idct_block for explanation. + __m128i bias_0 = _mm_set1_epi32(512); + __m128i bias_1 = _mm_set1_epi32(65536 + (128<<17)); + + // load + row0 = _mm_load_si128((const __m128i *) (data + 0*8)); + row1 = _mm_load_si128((const __m128i *) (data + 1*8)); + row2 = _mm_load_si128((const __m128i *) (data + 2*8)); + row3 = _mm_load_si128((const __m128i *) (data + 3*8)); + row4 = _mm_load_si128((const __m128i *) (data + 4*8)); + row5 = _mm_load_si128((const __m128i *) (data + 5*8)); + row6 = _mm_load_si128((const __m128i *) (data + 6*8)); + row7 = _mm_load_si128((const __m128i *) (data + 7*8)); + + // column pass + dct_pass(bias_0, 10); + + { + // 16bit 8x8 transpose pass 1 + dct_interleave16(row0, row4); + dct_interleave16(row1, row5); + dct_interleave16(row2, row6); + dct_interleave16(row3, row7); + + // transpose pass 2 + dct_interleave16(row0, row2); + dct_interleave16(row1, row3); + dct_interleave16(row4, row6); + dct_interleave16(row5, row7); + + // transpose pass 3 + dct_interleave16(row0, row1); + dct_interleave16(row2, row3); + dct_interleave16(row4, row5); + dct_interleave16(row6, row7); + } + + // row pass + dct_pass(bias_1, 17); + + { + // pack + __m128i p0 = _mm_packus_epi16(row0, row1); // a0a1a2a3...a7b0b1b2b3...b7 + __m128i p1 = _mm_packus_epi16(row2, row3); + __m128i p2 = _mm_packus_epi16(row4, row5); + __m128i p3 = _mm_packus_epi16(row6, row7); + + // 8bit 8x8 transpose pass 1 + dct_interleave8(p0, p2); // a0e0a1e1... + dct_interleave8(p1, p3); // c0g0c1g1... + + // transpose pass 2 + dct_interleave8(p0, p1); // a0c0e0g0... + dct_interleave8(p2, p3); // b0d0f0h0... + + // transpose pass 3 + dct_interleave8(p0, p2); // a0b0c0d0... + dct_interleave8(p1, p3); // a4b4c4d4... + + // store + _mm_storel_epi64((__m128i *) out, p0); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p0, 0x4e)); out += out_stride; + _mm_storel_epi64((__m128i *) out, p2); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p2, 0x4e)); out += out_stride; + _mm_storel_epi64((__m128i *) out, p1); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p1, 0x4e)); out += out_stride; + _mm_storel_epi64((__m128i *) out, p3); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p3, 0x4e)); + } + +#undef dct_const +#undef dct_rot +#undef dct_widen +#undef dct_wadd +#undef dct_wsub +#undef dct_bfly32o +#undef dct_interleave8 +#undef dct_interleave16 +#undef dct_pass +} + +#endif // STBI_SSE2 + +#ifdef STBI_NEON + +// NEON integer IDCT. should produce bit-identical +// results to the generic C version. +static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64]) +{ + int16x8_t row0, row1, row2, row3, row4, row5, row6, row7; + + int16x4_t rot0_0 = vdup_n_s16(stbi__f2f(0.5411961f)); + int16x4_t rot0_1 = vdup_n_s16(stbi__f2f(-1.847759065f)); + int16x4_t rot0_2 = vdup_n_s16(stbi__f2f( 0.765366865f)); + int16x4_t rot1_0 = vdup_n_s16(stbi__f2f( 1.175875602f)); + int16x4_t rot1_1 = vdup_n_s16(stbi__f2f(-0.899976223f)); + int16x4_t rot1_2 = vdup_n_s16(stbi__f2f(-2.562915447f)); + int16x4_t rot2_0 = vdup_n_s16(stbi__f2f(-1.961570560f)); + int16x4_t rot2_1 = vdup_n_s16(stbi__f2f(-0.390180644f)); + int16x4_t rot3_0 = vdup_n_s16(stbi__f2f( 0.298631336f)); + int16x4_t rot3_1 = vdup_n_s16(stbi__f2f( 2.053119869f)); + int16x4_t rot3_2 = vdup_n_s16(stbi__f2f( 3.072711026f)); + int16x4_t rot3_3 = vdup_n_s16(stbi__f2f( 1.501321110f)); + +#define dct_long_mul(out, inq, coeff) \ + int32x4_t out##_l = vmull_s16(vget_low_s16(inq), coeff); \ + int32x4_t out##_h = vmull_s16(vget_high_s16(inq), coeff) + +#define dct_long_mac(out, acc, inq, coeff) \ + int32x4_t out##_l = vmlal_s16(acc##_l, vget_low_s16(inq), coeff); \ + int32x4_t out##_h = vmlal_s16(acc##_h, vget_high_s16(inq), coeff) + +#define dct_widen(out, inq) \ + int32x4_t out##_l = vshll_n_s16(vget_low_s16(inq), 12); \ + int32x4_t out##_h = vshll_n_s16(vget_high_s16(inq), 12) + +// wide add +#define dct_wadd(out, a, b) \ + int32x4_t out##_l = vaddq_s32(a##_l, b##_l); \ + int32x4_t out##_h = vaddq_s32(a##_h, b##_h) + +// wide sub +#define dct_wsub(out, a, b) \ + int32x4_t out##_l = vsubq_s32(a##_l, b##_l); \ + int32x4_t out##_h = vsubq_s32(a##_h, b##_h) + +// butterfly a/b, then shift using "shiftop" by "s" and pack +#define dct_bfly32o(out0,out1, a,b,shiftop,s) \ + { \ + dct_wadd(sum, a, b); \ + dct_wsub(dif, a, b); \ + out0 = vcombine_s16(shiftop(sum_l, s), shiftop(sum_h, s)); \ + out1 = vcombine_s16(shiftop(dif_l, s), shiftop(dif_h, s)); \ + } + +#define dct_pass(shiftop, shift) \ + { \ + /* even part */ \ + int16x8_t sum26 = vaddq_s16(row2, row6); \ + dct_long_mul(p1e, sum26, rot0_0); \ + dct_long_mac(t2e, p1e, row6, rot0_1); \ + dct_long_mac(t3e, p1e, row2, rot0_2); \ + int16x8_t sum04 = vaddq_s16(row0, row4); \ + int16x8_t dif04 = vsubq_s16(row0, row4); \ + dct_widen(t0e, sum04); \ + dct_widen(t1e, dif04); \ + dct_wadd(x0, t0e, t3e); \ + dct_wsub(x3, t0e, t3e); \ + dct_wadd(x1, t1e, t2e); \ + dct_wsub(x2, t1e, t2e); \ + /* odd part */ \ + int16x8_t sum15 = vaddq_s16(row1, row5); \ + int16x8_t sum17 = vaddq_s16(row1, row7); \ + int16x8_t sum35 = vaddq_s16(row3, row5); \ + int16x8_t sum37 = vaddq_s16(row3, row7); \ + int16x8_t sumodd = vaddq_s16(sum17, sum35); \ + dct_long_mul(p5o, sumodd, rot1_0); \ + dct_long_mac(p1o, p5o, sum17, rot1_1); \ + dct_long_mac(p2o, p5o, sum35, rot1_2); \ + dct_long_mul(p3o, sum37, rot2_0); \ + dct_long_mul(p4o, sum15, rot2_1); \ + dct_wadd(sump13o, p1o, p3o); \ + dct_wadd(sump24o, p2o, p4o); \ + dct_wadd(sump23o, p2o, p3o); \ + dct_wadd(sump14o, p1o, p4o); \ + dct_long_mac(x4, sump13o, row7, rot3_0); \ + dct_long_mac(x5, sump24o, row5, rot3_1); \ + dct_long_mac(x6, sump23o, row3, rot3_2); \ + dct_long_mac(x7, sump14o, row1, rot3_3); \ + dct_bfly32o(row0,row7, x0,x7,shiftop,shift); \ + dct_bfly32o(row1,row6, x1,x6,shiftop,shift); \ + dct_bfly32o(row2,row5, x2,x5,shiftop,shift); \ + dct_bfly32o(row3,row4, x3,x4,shiftop,shift); \ + } + + // load + row0 = vld1q_s16(data + 0*8); + row1 = vld1q_s16(data + 1*8); + row2 = vld1q_s16(data + 2*8); + row3 = vld1q_s16(data + 3*8); + row4 = vld1q_s16(data + 4*8); + row5 = vld1q_s16(data + 5*8); + row6 = vld1q_s16(data + 6*8); + row7 = vld1q_s16(data + 7*8); + + // add DC bias + row0 = vaddq_s16(row0, vsetq_lane_s16(1024, vdupq_n_s16(0), 0)); + + // column pass + dct_pass(vrshrn_n_s32, 10); + + // 16bit 8x8 transpose + { +// these three map to a single VTRN.16, VTRN.32, and VSWP, respectively. +// whether compilers actually get this is another story, sadly. +#define dct_trn16(x, y) { int16x8x2_t t = vtrnq_s16(x, y); x = t.val[0]; y = t.val[1]; } +#define dct_trn32(x, y) { int32x4x2_t t = vtrnq_s32(vreinterpretq_s32_s16(x), vreinterpretq_s32_s16(y)); x = vreinterpretq_s16_s32(t.val[0]); y = vreinterpretq_s16_s32(t.val[1]); } +#define dct_trn64(x, y) { int16x8_t x0 = x; int16x8_t y0 = y; x = vcombine_s16(vget_low_s16(x0), vget_low_s16(y0)); y = vcombine_s16(vget_high_s16(x0), vget_high_s16(y0)); } + + // pass 1 + dct_trn16(row0, row1); // a0b0a2b2a4b4a6b6 + dct_trn16(row2, row3); + dct_trn16(row4, row5); + dct_trn16(row6, row7); + + // pass 2 + dct_trn32(row0, row2); // a0b0c0d0a4b4c4d4 + dct_trn32(row1, row3); + dct_trn32(row4, row6); + dct_trn32(row5, row7); + + // pass 3 + dct_trn64(row0, row4); // a0b0c0d0e0f0g0h0 + dct_trn64(row1, row5); + dct_trn64(row2, row6); + dct_trn64(row3, row7); + +#undef dct_trn16 +#undef dct_trn32 +#undef dct_trn64 + } + + // row pass + // vrshrn_n_s32 only supports shifts up to 16, we need + // 17. so do a non-rounding shift of 16 first then follow + // up with a rounding shift by 1. + dct_pass(vshrn_n_s32, 16); + + { + // pack and round + uint8x8_t p0 = vqrshrun_n_s16(row0, 1); + uint8x8_t p1 = vqrshrun_n_s16(row1, 1); + uint8x8_t p2 = vqrshrun_n_s16(row2, 1); + uint8x8_t p3 = vqrshrun_n_s16(row3, 1); + uint8x8_t p4 = vqrshrun_n_s16(row4, 1); + uint8x8_t p5 = vqrshrun_n_s16(row5, 1); + uint8x8_t p6 = vqrshrun_n_s16(row6, 1); + uint8x8_t p7 = vqrshrun_n_s16(row7, 1); + + // again, these can translate into one instruction, but often don't. +#define dct_trn8_8(x, y) { uint8x8x2_t t = vtrn_u8(x, y); x = t.val[0]; y = t.val[1]; } +#define dct_trn8_16(x, y) { uint16x4x2_t t = vtrn_u16(vreinterpret_u16_u8(x), vreinterpret_u16_u8(y)); x = vreinterpret_u8_u16(t.val[0]); y = vreinterpret_u8_u16(t.val[1]); } +#define dct_trn8_32(x, y) { uint32x2x2_t t = vtrn_u32(vreinterpret_u32_u8(x), vreinterpret_u32_u8(y)); x = vreinterpret_u8_u32(t.val[0]); y = vreinterpret_u8_u32(t.val[1]); } + + // sadly can't use interleaved stores here since we only write + // 8 bytes to each scan line! + + // 8x8 8-bit transpose pass 1 + dct_trn8_8(p0, p1); + dct_trn8_8(p2, p3); + dct_trn8_8(p4, p5); + dct_trn8_8(p6, p7); + + // pass 2 + dct_trn8_16(p0, p2); + dct_trn8_16(p1, p3); + dct_trn8_16(p4, p6); + dct_trn8_16(p5, p7); + + // pass 3 + dct_trn8_32(p0, p4); + dct_trn8_32(p1, p5); + dct_trn8_32(p2, p6); + dct_trn8_32(p3, p7); + + // store + vst1_u8(out, p0); out += out_stride; + vst1_u8(out, p1); out += out_stride; + vst1_u8(out, p2); out += out_stride; + vst1_u8(out, p3); out += out_stride; + vst1_u8(out, p4); out += out_stride; + vst1_u8(out, p5); out += out_stride; + vst1_u8(out, p6); out += out_stride; + vst1_u8(out, p7); + +#undef dct_trn8_8 +#undef dct_trn8_16 +#undef dct_trn8_32 + } + +#undef dct_long_mul +#undef dct_long_mac +#undef dct_widen +#undef dct_wadd +#undef dct_wsub +#undef dct_bfly32o +#undef dct_pass +} + +#endif // STBI_NEON + +#define STBI__MARKER_none 0xff +// if there's a pending marker from the entropy stream, return that +// otherwise, fetch from the stream and get a marker. if there's no +// marker, return 0xff, which is never a valid marker value +static stbi_uc stbi__get_marker(stbi__jpeg *j) +{ + stbi_uc x; + if (j->marker != STBI__MARKER_none) { x = j->marker; j->marker = STBI__MARKER_none; return x; } + x = stbi__get8(j->s); + if (x != 0xff) return STBI__MARKER_none; + while (x == 0xff) + x = stbi__get8(j->s); // consume repeated 0xff fill bytes + return x; +} + +// in each scan, we'll have scan_n components, and the order +// of the components is specified by order[] +#define STBI__RESTART(x) ((x) >= 0xd0 && (x) <= 0xd7) + +// after a restart interval, stbi__jpeg_reset the entropy decoder and +// the dc prediction +static void stbi__jpeg_reset(stbi__jpeg *j) +{ + j->code_bits = 0; + j->code_buffer = 0; + j->nomore = 0; + j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0; + j->marker = STBI__MARKER_none; + j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; + j->eob_run = 0; + // no more than 1<<31 MCUs if no restart_interal? that's plenty safe, + // since we don't even allow 1<<30 pixels +} + +static int stbi__parse_entropy_coded_data(stbi__jpeg *z) +{ + stbi__jpeg_reset(z); + if (!z->progressive) { + if (z->scan_n == 1) { + int i,j; + STBI_SIMD_ALIGN(short, data[64]); + int n = z->order[0]; + // non-interleaved data, we just need to process one block at a time, + // in trivial scanline order + // number of blocks to do just depends on how many actual "pixels" this + // component has, independent of interleaved MCU blocking and such + int w = (z->img_comp[n].x+7) >> 3; + int h = (z->img_comp[n].y+7) >> 3; + for (j=0; j < h; ++j) { + for (i=0; i < w; ++i) { + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block(z, data, z->huff_dc+z->img_comp[n].hd, z->huff_ac+ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; + z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*j*8+i*8, z->img_comp[n].w2, data); + // every data block is an MCU, so countdown the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + // if it's NOT a restart, then just bail, so we get corrupt data + // rather than no data + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } else { // interleaved + int i,j,k,x,y; + STBI_SIMD_ALIGN(short, data[64]); + for (j=0; j < z->img_mcu_y; ++j) { + for (i=0; i < z->img_mcu_x; ++i) { + // scan an interleaved mcu... process scan_n components in order + for (k=0; k < z->scan_n; ++k) { + int n = z->order[k]; + // scan out an mcu's worth of this component; that's just determined + // by the basic H and V specified for the component + for (y=0; y < z->img_comp[n].v; ++y) { + for (x=0; x < z->img_comp[n].h; ++x) { + int x2 = (i*z->img_comp[n].h + x)*8; + int y2 = (j*z->img_comp[n].v + y)*8; + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block(z, data, z->huff_dc+z->img_comp[n].hd, z->huff_ac+ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; + z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*y2+x2, z->img_comp[n].w2, data); + } + } + } + // after all interleaved components, that's an interleaved MCU, + // so now count down the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } + } else { + if (z->scan_n == 1) { + int i,j; + int n = z->order[0]; + // non-interleaved data, we just need to process one block at a time, + // in trivial scanline order + // number of blocks to do just depends on how many actual "pixels" this + // component has, independent of interleaved MCU blocking and such + int w = (z->img_comp[n].x+7) >> 3; + int h = (z->img_comp[n].y+7) >> 3; + for (j=0; j < h; ++j) { + for (i=0; i < w; ++i) { + short *data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); + if (z->spec_start == 0) { + if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) + return 0; + } else { + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block_prog_ac(z, data, &z->huff_ac[ha], z->fast_ac[ha])) + return 0; + } + // every data block is an MCU, so countdown the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } else { // interleaved + int i,j,k,x,y; + for (j=0; j < z->img_mcu_y; ++j) { + for (i=0; i < z->img_mcu_x; ++i) { + // scan an interleaved mcu... process scan_n components in order + for (k=0; k < z->scan_n; ++k) { + int n = z->order[k]; + // scan out an mcu's worth of this component; that's just determined + // by the basic H and V specified for the component + for (y=0; y < z->img_comp[n].v; ++y) { + for (x=0; x < z->img_comp[n].h; ++x) { + int x2 = (i*z->img_comp[n].h + x); + int y2 = (j*z->img_comp[n].v + y); + short *data = z->img_comp[n].coeff + 64 * (x2 + y2 * z->img_comp[n].coeff_w); + if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) + return 0; + } + } + } + // after all interleaved components, that's an interleaved MCU, + // so now count down the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } + } +} + +static void stbi__jpeg_dequantize(short *data, stbi__uint16 *dequant) +{ + int i; + for (i=0; i < 64; ++i) + data[i] *= dequant[i]; +} + +static void stbi__jpeg_finish(stbi__jpeg *z) +{ + if (z->progressive) { + // dequantize and idct the data + int i,j,n; + for (n=0; n < z->s->img_n; ++n) { + int w = (z->img_comp[n].x+7) >> 3; + int h = (z->img_comp[n].y+7) >> 3; + for (j=0; j < h; ++j) { + for (i=0; i < w; ++i) { + short *data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); + stbi__jpeg_dequantize(data, z->dequant[z->img_comp[n].tq]); + z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*j*8+i*8, z->img_comp[n].w2, data); + } + } + } + } +} + +static int stbi__process_marker(stbi__jpeg *z, int m) +{ + int L; + switch (m) { + case STBI__MARKER_none: // no marker found + return stbi__err("expected marker","Corrupt JPEG"); + + case 0xDD: // DRI - specify restart interval + if (stbi__get16be(z->s) != 4) return stbi__err("bad DRI len","Corrupt JPEG"); + z->restart_interval = stbi__get16be(z->s); + return 1; + + case 0xDB: // DQT - define quantization table + L = stbi__get16be(z->s)-2; + while (L > 0) { + int q = stbi__get8(z->s); + int p = q >> 4, sixteen = (p != 0); + int t = q & 15,i; + if (p != 0 && p != 1) return stbi__err("bad DQT type","Corrupt JPEG"); + if (t > 3) return stbi__err("bad DQT table","Corrupt JPEG"); + + for (i=0; i < 64; ++i) + z->dequant[t][stbi__jpeg_dezigzag[i]] = (stbi__uint16)(sixteen ? stbi__get16be(z->s) : stbi__get8(z->s)); + L -= (sixteen ? 129 : 65); + } + return L==0; + + case 0xC4: // DHT - define huffman table + L = stbi__get16be(z->s)-2; + while (L > 0) { + stbi_uc *v; + int sizes[16],i,n=0; + int q = stbi__get8(z->s); + int tc = q >> 4; + int th = q & 15; + if (tc > 1 || th > 3) return stbi__err("bad DHT header","Corrupt JPEG"); + for (i=0; i < 16; ++i) { + sizes[i] = stbi__get8(z->s); + n += sizes[i]; + } + if(n > 256) return stbi__err("bad DHT header","Corrupt JPEG"); // Loop over i < n would write past end of values! + L -= 17; + if (tc == 0) { + if (!stbi__build_huffman(z->huff_dc+th, sizes)) return 0; + v = z->huff_dc[th].values; + } else { + if (!stbi__build_huffman(z->huff_ac+th, sizes)) return 0; + v = z->huff_ac[th].values; + } + for (i=0; i < n; ++i) + v[i] = stbi__get8(z->s); + if (tc != 0) + stbi__build_fast_ac(z->fast_ac[th], z->huff_ac + th); + L -= n; + } + return L==0; + } + + // check for comment block or APP blocks + if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) { + L = stbi__get16be(z->s); + if (L < 2) { + if (m == 0xFE) + return stbi__err("bad COM len","Corrupt JPEG"); + else + return stbi__err("bad APP len","Corrupt JPEG"); + } + L -= 2; + + if (m == 0xE0 && L >= 5) { // JFIF APP0 segment + static const unsigned char tag[5] = {'J','F','I','F','\0'}; + int ok = 1; + int i; + for (i=0; i < 5; ++i) + if (stbi__get8(z->s) != tag[i]) + ok = 0; + L -= 5; + if (ok) + z->jfif = 1; + } else if (m == 0xEE && L >= 12) { // Adobe APP14 segment + static const unsigned char tag[6] = {'A','d','o','b','e','\0'}; + int ok = 1; + int i; + for (i=0; i < 6; ++i) + if (stbi__get8(z->s) != tag[i]) + ok = 0; + L -= 6; + if (ok) { + stbi__get8(z->s); // version + stbi__get16be(z->s); // flags0 + stbi__get16be(z->s); // flags1 + z->app14_color_transform = stbi__get8(z->s); // color transform + L -= 6; + } + } + + stbi__skip(z->s, L); + return 1; + } + + return stbi__err("unknown marker","Corrupt JPEG"); +} + +// after we see SOS +static int stbi__process_scan_header(stbi__jpeg *z) +{ + int i; + int Ls = stbi__get16be(z->s); + z->scan_n = stbi__get8(z->s); + if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int) z->s->img_n) return stbi__err("bad SOS component count","Corrupt JPEG"); + if (Ls != 6+2*z->scan_n) return stbi__err("bad SOS len","Corrupt JPEG"); + for (i=0; i < z->scan_n; ++i) { + int id = stbi__get8(z->s), which; + int q = stbi__get8(z->s); + for (which = 0; which < z->s->img_n; ++which) + if (z->img_comp[which].id == id) + break; + if (which == z->s->img_n) return 0; // no match + z->img_comp[which].hd = q >> 4; if (z->img_comp[which].hd > 3) return stbi__err("bad DC huff","Corrupt JPEG"); + z->img_comp[which].ha = q & 15; if (z->img_comp[which].ha > 3) return stbi__err("bad AC huff","Corrupt JPEG"); + z->order[i] = which; + } + + { + int aa; + z->spec_start = stbi__get8(z->s); + z->spec_end = stbi__get8(z->s); // should be 63, but might be 0 + aa = stbi__get8(z->s); + z->succ_high = (aa >> 4); + z->succ_low = (aa & 15); + if (z->progressive) { + if (z->spec_start > 63 || z->spec_end > 63 || z->spec_start > z->spec_end || z->succ_high > 13 || z->succ_low > 13) + return stbi__err("bad SOS", "Corrupt JPEG"); + } else { + if (z->spec_start != 0) return stbi__err("bad SOS","Corrupt JPEG"); + if (z->succ_high != 0 || z->succ_low != 0) return stbi__err("bad SOS","Corrupt JPEG"); + z->spec_end = 63; + } + } + + return 1; +} + +static int stbi__free_jpeg_components(stbi__jpeg *z, int ncomp, int why) +{ + int i; + for (i=0; i < ncomp; ++i) { + if (z->img_comp[i].raw_data) { + STBI_FREE(z->img_comp[i].raw_data); + z->img_comp[i].raw_data = NULL; + z->img_comp[i].data = NULL; + } + if (z->img_comp[i].raw_coeff) { + STBI_FREE(z->img_comp[i].raw_coeff); + z->img_comp[i].raw_coeff = 0; + z->img_comp[i].coeff = 0; + } + if (z->img_comp[i].linebuf) { + STBI_FREE(z->img_comp[i].linebuf); + z->img_comp[i].linebuf = NULL; + } + } + return why; +} + +static int stbi__process_frame_header(stbi__jpeg *z, int scan) +{ + stbi__context *s = z->s; + int Lf,p,i,q, h_max=1,v_max=1,c; + Lf = stbi__get16be(s); if (Lf < 11) return stbi__err("bad SOF len","Corrupt JPEG"); // JPEG + p = stbi__get8(s); if (p != 8) return stbi__err("only 8-bit","JPEG format not supported: 8-bit only"); // JPEG baseline + s->img_y = stbi__get16be(s); if (s->img_y == 0) return stbi__err("no header height", "JPEG format not supported: delayed height"); // Legal, but we don't handle it--but neither does IJG + s->img_x = stbi__get16be(s); if (s->img_x == 0) return stbi__err("0 width","Corrupt JPEG"); // JPEG requires + if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); + if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); + c = stbi__get8(s); + if (c != 3 && c != 1 && c != 4) return stbi__err("bad component count","Corrupt JPEG"); + s->img_n = c; + for (i=0; i < c; ++i) { + z->img_comp[i].data = NULL; + z->img_comp[i].linebuf = NULL; + } + + if (Lf != 8+3*s->img_n) return stbi__err("bad SOF len","Corrupt JPEG"); + + z->rgb = 0; + for (i=0; i < s->img_n; ++i) { + static const unsigned char rgb[3] = { 'R', 'G', 'B' }; + z->img_comp[i].id = stbi__get8(s); + if (s->img_n == 3 && z->img_comp[i].id == rgb[i]) + ++z->rgb; + q = stbi__get8(s); + z->img_comp[i].h = (q >> 4); if (!z->img_comp[i].h || z->img_comp[i].h > 4) return stbi__err("bad H","Corrupt JPEG"); + z->img_comp[i].v = q & 15; if (!z->img_comp[i].v || z->img_comp[i].v > 4) return stbi__err("bad V","Corrupt JPEG"); + z->img_comp[i].tq = stbi__get8(s); if (z->img_comp[i].tq > 3) return stbi__err("bad TQ","Corrupt JPEG"); + } + + if (scan != STBI__SCAN_load) return 1; + + if (!stbi__mad3sizes_valid(s->img_x, s->img_y, s->img_n, 0)) return stbi__err("too large", "Image too large to decode"); + + for (i=0; i < s->img_n; ++i) { + if (z->img_comp[i].h > h_max) h_max = z->img_comp[i].h; + if (z->img_comp[i].v > v_max) v_max = z->img_comp[i].v; + } + + // check that plane subsampling factors are integer ratios; our resamplers can't deal with fractional ratios + // and I've never seen a non-corrupted JPEG file actually use them + for (i=0; i < s->img_n; ++i) { + if (h_max % z->img_comp[i].h != 0) return stbi__err("bad H","Corrupt JPEG"); + if (v_max % z->img_comp[i].v != 0) return stbi__err("bad V","Corrupt JPEG"); + } + + // compute interleaved mcu info + z->img_h_max = h_max; + z->img_v_max = v_max; + z->img_mcu_w = h_max * 8; + z->img_mcu_h = v_max * 8; + // these sizes can't be more than 17 bits + z->img_mcu_x = (s->img_x + z->img_mcu_w-1) / z->img_mcu_w; + z->img_mcu_y = (s->img_y + z->img_mcu_h-1) / z->img_mcu_h; + + for (i=0; i < s->img_n; ++i) { + // number of effective pixels (e.g. for non-interleaved MCU) + z->img_comp[i].x = (s->img_x * z->img_comp[i].h + h_max-1) / h_max; + z->img_comp[i].y = (s->img_y * z->img_comp[i].v + v_max-1) / v_max; + // to simplify generation, we'll allocate enough memory to decode + // the bogus oversized data from using interleaved MCUs and their + // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't + // discard the extra data until colorspace conversion + // + // img_mcu_x, img_mcu_y: <=17 bits; comp[i].h and .v are <=4 (checked earlier) + // so these muls can't overflow with 32-bit ints (which we require) + z->img_comp[i].w2 = z->img_mcu_x * z->img_comp[i].h * 8; + z->img_comp[i].h2 = z->img_mcu_y * z->img_comp[i].v * 8; + z->img_comp[i].coeff = 0; + z->img_comp[i].raw_coeff = 0; + z->img_comp[i].linebuf = NULL; + z->img_comp[i].raw_data = stbi__malloc_mad2(z->img_comp[i].w2, z->img_comp[i].h2, 15); + if (z->img_comp[i].raw_data == NULL) + return stbi__free_jpeg_components(z, i+1, stbi__err("outofmem", "Out of memory")); + // align blocks for idct using mmx/sse + z->img_comp[i].data = (stbi_uc*) (((size_t) z->img_comp[i].raw_data + 15) & ~15); + if (z->progressive) { + // w2, h2 are multiples of 8 (see above) + z->img_comp[i].coeff_w = z->img_comp[i].w2 / 8; + z->img_comp[i].coeff_h = z->img_comp[i].h2 / 8; + z->img_comp[i].raw_coeff = stbi__malloc_mad3(z->img_comp[i].w2, z->img_comp[i].h2, sizeof(short), 15); + if (z->img_comp[i].raw_coeff == NULL) + return stbi__free_jpeg_components(z, i+1, stbi__err("outofmem", "Out of memory")); + z->img_comp[i].coeff = (short*) (((size_t) z->img_comp[i].raw_coeff + 15) & ~15); + } + } + + return 1; +} + +// use comparisons since in some cases we handle more than one case (e.g. SOF) +#define stbi__DNL(x) ((x) == 0xdc) +#define stbi__SOI(x) ((x) == 0xd8) +#define stbi__EOI(x) ((x) == 0xd9) +#define stbi__SOF(x) ((x) == 0xc0 || (x) == 0xc1 || (x) == 0xc2) +#define stbi__SOS(x) ((x) == 0xda) + +#define stbi__SOF_progressive(x) ((x) == 0xc2) + +static int stbi__decode_jpeg_header(stbi__jpeg *z, int scan) +{ + int m; + z->jfif = 0; + z->app14_color_transform = -1; // valid values are 0,1,2 + z->marker = STBI__MARKER_none; // initialize cached marker to empty + m = stbi__get_marker(z); + if (!stbi__SOI(m)) return stbi__err("no SOI","Corrupt JPEG"); + if (scan == STBI__SCAN_type) return 1; + m = stbi__get_marker(z); + while (!stbi__SOF(m)) { + if (!stbi__process_marker(z,m)) return 0; + m = stbi__get_marker(z); + while (m == STBI__MARKER_none) { + // some files have extra padding after their blocks, so ok, we'll scan + if (stbi__at_eof(z->s)) return stbi__err("no SOF", "Corrupt JPEG"); + m = stbi__get_marker(z); + } + } + z->progressive = stbi__SOF_progressive(m); + if (!stbi__process_frame_header(z, scan)) return 0; + return 1; +} + +static int stbi__skip_jpeg_junk_at_end(stbi__jpeg *j) +{ + // some JPEGs have junk at end, skip over it but if we find what looks + // like a valid marker, resume there + while (!stbi__at_eof(j->s)) { + int x = stbi__get8(j->s); + while (x == 255) { // might be a marker + if (stbi__at_eof(j->s)) return STBI__MARKER_none; + x = stbi__get8(j->s); + if (x != 0x00 && x != 0xff) { + // not a stuffed zero or lead-in to another marker, looks + // like an actual marker, return it + return x; + } + // stuffed zero has x=0 now which ends the loop, meaning we go + // back to regular scan loop. + // repeated 0xff keeps trying to read the next byte of the marker. + } + } + return STBI__MARKER_none; +} + +// decode image to YCbCr format +static int stbi__decode_jpeg_image(stbi__jpeg *j) +{ + int m; + for (m = 0; m < 4; m++) { + j->img_comp[m].raw_data = NULL; + j->img_comp[m].raw_coeff = NULL; + } + j->restart_interval = 0; + if (!stbi__decode_jpeg_header(j, STBI__SCAN_load)) return 0; + m = stbi__get_marker(j); + while (!stbi__EOI(m)) { + if (stbi__SOS(m)) { + if (!stbi__process_scan_header(j)) return 0; + if (!stbi__parse_entropy_coded_data(j)) return 0; + if (j->marker == STBI__MARKER_none ) { + j->marker = stbi__skip_jpeg_junk_at_end(j); + // if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0 + } + m = stbi__get_marker(j); + if (STBI__RESTART(m)) + m = stbi__get_marker(j); + } else if (stbi__DNL(m)) { + int Ld = stbi__get16be(j->s); + stbi__uint32 NL = stbi__get16be(j->s); + if (Ld != 4) return stbi__err("bad DNL len", "Corrupt JPEG"); + if (NL != j->s->img_y) return stbi__err("bad DNL height", "Corrupt JPEG"); + m = stbi__get_marker(j); + } else { + if (!stbi__process_marker(j, m)) return 1; + m = stbi__get_marker(j); + } + } + if (j->progressive) + stbi__jpeg_finish(j); + return 1; +} + +// static jfif-centered resampling (across block boundaries) + +typedef stbi_uc *(*resample_row_func)(stbi_uc *out, stbi_uc *in0, stbi_uc *in1, + int w, int hs); + +#define stbi__div4(x) ((stbi_uc) ((x) >> 2)) + +static stbi_uc *resample_row_1(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + STBI_NOTUSED(out); + STBI_NOTUSED(in_far); + STBI_NOTUSED(w); + STBI_NOTUSED(hs); + return in_near; +} + +static stbi_uc* stbi__resample_row_v_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate two samples vertically for every one in input + int i; + STBI_NOTUSED(hs); + for (i=0; i < w; ++i) + out[i] = stbi__div4(3*in_near[i] + in_far[i] + 2); + return out; +} + +static stbi_uc* stbi__resample_row_h_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate two samples horizontally for every one in input + int i; + stbi_uc *input = in_near; + + if (w == 1) { + // if only one sample, can't do any interpolation + out[0] = out[1] = input[0]; + return out; + } + + out[0] = input[0]; + out[1] = stbi__div4(input[0]*3 + input[1] + 2); + for (i=1; i < w-1; ++i) { + int n = 3*input[i]+2; + out[i*2+0] = stbi__div4(n+input[i-1]); + out[i*2+1] = stbi__div4(n+input[i+1]); + } + out[i*2+0] = stbi__div4(input[w-2]*3 + input[w-1] + 2); + out[i*2+1] = input[w-1]; + + STBI_NOTUSED(in_far); + STBI_NOTUSED(hs); + + return out; +} + +#define stbi__div16(x) ((stbi_uc) ((x) >> 4)) + +static stbi_uc *stbi__resample_row_hv_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate 2x2 samples for every one in input + int i,t0,t1; + if (w == 1) { + out[0] = out[1] = stbi__div4(3*in_near[0] + in_far[0] + 2); + return out; + } + + t1 = 3*in_near[0] + in_far[0]; + out[0] = stbi__div4(t1+2); + for (i=1; i < w; ++i) { + t0 = t1; + t1 = 3*in_near[i]+in_far[i]; + out[i*2-1] = stbi__div16(3*t0 + t1 + 8); + out[i*2 ] = stbi__div16(3*t1 + t0 + 8); + } + out[w*2-1] = stbi__div4(t1+2); + + STBI_NOTUSED(hs); + + return out; +} + +#if defined(STBI_SSE2) || defined(STBI_NEON) +static stbi_uc *stbi__resample_row_hv_2_simd(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate 2x2 samples for every one in input + int i=0,t0,t1; + + if (w == 1) { + out[0] = out[1] = stbi__div4(3*in_near[0] + in_far[0] + 2); + return out; + } + + t1 = 3*in_near[0] + in_far[0]; + // process groups of 8 pixels for as long as we can. + // note we can't handle the last pixel in a row in this loop + // because we need to handle the filter boundary conditions. + for (; i < ((w-1) & ~7); i += 8) { +#if defined(STBI_SSE2) + // load and perform the vertical filtering pass + // this uses 3*x + y = 4*x + (y - x) + __m128i zero = _mm_setzero_si128(); + __m128i farb = _mm_loadl_epi64((__m128i *) (in_far + i)); + __m128i nearb = _mm_loadl_epi64((__m128i *) (in_near + i)); + __m128i farw = _mm_unpacklo_epi8(farb, zero); + __m128i nearw = _mm_unpacklo_epi8(nearb, zero); + __m128i diff = _mm_sub_epi16(farw, nearw); + __m128i nears = _mm_slli_epi16(nearw, 2); + __m128i curr = _mm_add_epi16(nears, diff); // current row + + // horizontal filter works the same based on shifted vers of current + // row. "prev" is current row shifted right by 1 pixel; we need to + // insert the previous pixel value (from t1). + // "next" is current row shifted left by 1 pixel, with first pixel + // of next block of 8 pixels added in. + __m128i prv0 = _mm_slli_si128(curr, 2); + __m128i nxt0 = _mm_srli_si128(curr, 2); + __m128i prev = _mm_insert_epi16(prv0, t1, 0); + __m128i next = _mm_insert_epi16(nxt0, 3*in_near[i+8] + in_far[i+8], 7); + + // horizontal filter, polyphase implementation since it's convenient: + // even pixels = 3*cur + prev = cur*4 + (prev - cur) + // odd pixels = 3*cur + next = cur*4 + (next - cur) + // note the shared term. + __m128i bias = _mm_set1_epi16(8); + __m128i curs = _mm_slli_epi16(curr, 2); + __m128i prvd = _mm_sub_epi16(prev, curr); + __m128i nxtd = _mm_sub_epi16(next, curr); + __m128i curb = _mm_add_epi16(curs, bias); + __m128i even = _mm_add_epi16(prvd, curb); + __m128i odd = _mm_add_epi16(nxtd, curb); + + // interleave even and odd pixels, then undo scaling. + __m128i int0 = _mm_unpacklo_epi16(even, odd); + __m128i int1 = _mm_unpackhi_epi16(even, odd); + __m128i de0 = _mm_srli_epi16(int0, 4); + __m128i de1 = _mm_srli_epi16(int1, 4); + + // pack and write output + __m128i outv = _mm_packus_epi16(de0, de1); + _mm_storeu_si128((__m128i *) (out + i*2), outv); +#elif defined(STBI_NEON) + // load and perform the vertical filtering pass + // this uses 3*x + y = 4*x + (y - x) + uint8x8_t farb = vld1_u8(in_far + i); + uint8x8_t nearb = vld1_u8(in_near + i); + int16x8_t diff = vreinterpretq_s16_u16(vsubl_u8(farb, nearb)); + int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2)); + int16x8_t curr = vaddq_s16(nears, diff); // current row + + // horizontal filter works the same based on shifted vers of current + // row. "prev" is current row shifted right by 1 pixel; we need to + // insert the previous pixel value (from t1). + // "next" is current row shifted left by 1 pixel, with first pixel + // of next block of 8 pixels added in. + int16x8_t prv0 = vextq_s16(curr, curr, 7); + int16x8_t nxt0 = vextq_s16(curr, curr, 1); + int16x8_t prev = vsetq_lane_s16(t1, prv0, 0); + int16x8_t next = vsetq_lane_s16(3*in_near[i+8] + in_far[i+8], nxt0, 7); + + // horizontal filter, polyphase implementation since it's convenient: + // even pixels = 3*cur + prev = cur*4 + (prev - cur) + // odd pixels = 3*cur + next = cur*4 + (next - cur) + // note the shared term. + int16x8_t curs = vshlq_n_s16(curr, 2); + int16x8_t prvd = vsubq_s16(prev, curr); + int16x8_t nxtd = vsubq_s16(next, curr); + int16x8_t even = vaddq_s16(curs, prvd); + int16x8_t odd = vaddq_s16(curs, nxtd); + + // undo scaling and round, then store with even/odd phases interleaved + uint8x8x2_t o; + o.val[0] = vqrshrun_n_s16(even, 4); + o.val[1] = vqrshrun_n_s16(odd, 4); + vst2_u8(out + i*2, o); +#endif + + // "previous" value for next iter + t1 = 3*in_near[i+7] + in_far[i+7]; + } + + t0 = t1; + t1 = 3*in_near[i] + in_far[i]; + out[i*2] = stbi__div16(3*t1 + t0 + 8); + + for (++i; i < w; ++i) { + t0 = t1; + t1 = 3*in_near[i]+in_far[i]; + out[i*2-1] = stbi__div16(3*t0 + t1 + 8); + out[i*2 ] = stbi__div16(3*t1 + t0 + 8); + } + out[w*2-1] = stbi__div4(t1+2); + + STBI_NOTUSED(hs); + + return out; +} +#endif + +static stbi_uc *stbi__resample_row_generic(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // resample with nearest-neighbor + int i,j; + STBI_NOTUSED(in_far); + for (i=0; i < w; ++i) + for (j=0; j < hs; ++j) + out[i*hs+j] = in_near[i]; + return out; +} + +// this is a reduced-precision calculation of YCbCr-to-RGB introduced +// to make sure the code produces the same results in both SIMD and scalar +#define stbi__float2fixed(x) (((int) ((x) * 4096.0f + 0.5f)) << 8) +static void stbi__YCbCr_to_RGB_row(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, const stbi_uc *pcr, int count, int step) +{ + int i; + for (i=0; i < count; ++i) { + int y_fixed = (y[i] << 20) + (1<<19); // rounding + int r,g,b; + int cr = pcr[i] - 128; + int cb = pcb[i] - 128; + r = y_fixed + cr* stbi__float2fixed(1.40200f); + g = y_fixed + (cr*-stbi__float2fixed(0.71414f)) + ((cb*-stbi__float2fixed(0.34414f)) & 0xffff0000); + b = y_fixed + cb* stbi__float2fixed(1.77200f); + r >>= 20; + g >>= 20; + b >>= 20; + if ((unsigned) r > 255) { if (r < 0) r = 0; else r = 255; } + if ((unsigned) g > 255) { if (g < 0) g = 0; else g = 255; } + if ((unsigned) b > 255) { if (b < 0) b = 0; else b = 255; } + out[0] = (stbi_uc)r; + out[1] = (stbi_uc)g; + out[2] = (stbi_uc)b; + out[3] = 255; + out += step; + } +} + +#if defined(STBI_SSE2) || defined(STBI_NEON) +static void stbi__YCbCr_to_RGB_simd(stbi_uc *out, stbi_uc const *y, stbi_uc const *pcb, stbi_uc const *pcr, int count, int step) +{ + int i = 0; + +#ifdef STBI_SSE2 + // step == 3 is pretty ugly on the final interleave, and i'm not convinced + // it's useful in practice (you wouldn't use it for textures, for example). + // so just accelerate step == 4 case. + if (step == 4) { + // this is a fairly straightforward implementation and not super-optimized. + __m128i signflip = _mm_set1_epi8(-0x80); + __m128i cr_const0 = _mm_set1_epi16( (short) ( 1.40200f*4096.0f+0.5f)); + __m128i cr_const1 = _mm_set1_epi16( - (short) ( 0.71414f*4096.0f+0.5f)); + __m128i cb_const0 = _mm_set1_epi16( - (short) ( 0.34414f*4096.0f+0.5f)); + __m128i cb_const1 = _mm_set1_epi16( (short) ( 1.77200f*4096.0f+0.5f)); + __m128i y_bias = _mm_set1_epi8((char) (unsigned char) 128); + __m128i xw = _mm_set1_epi16(255); // alpha channel + + for (; i+7 < count; i += 8) { + // load + __m128i y_bytes = _mm_loadl_epi64((__m128i *) (y+i)); + __m128i cr_bytes = _mm_loadl_epi64((__m128i *) (pcr+i)); + __m128i cb_bytes = _mm_loadl_epi64((__m128i *) (pcb+i)); + __m128i cr_biased = _mm_xor_si128(cr_bytes, signflip); // -128 + __m128i cb_biased = _mm_xor_si128(cb_bytes, signflip); // -128 + + // unpack to short (and left-shift cr, cb by 8) + __m128i yw = _mm_unpacklo_epi8(y_bias, y_bytes); + __m128i crw = _mm_unpacklo_epi8(_mm_setzero_si128(), cr_biased); + __m128i cbw = _mm_unpacklo_epi8(_mm_setzero_si128(), cb_biased); + + // color transform + __m128i yws = _mm_srli_epi16(yw, 4); + __m128i cr0 = _mm_mulhi_epi16(cr_const0, crw); + __m128i cb0 = _mm_mulhi_epi16(cb_const0, cbw); + __m128i cb1 = _mm_mulhi_epi16(cbw, cb_const1); + __m128i cr1 = _mm_mulhi_epi16(crw, cr_const1); + __m128i rws = _mm_add_epi16(cr0, yws); + __m128i gwt = _mm_add_epi16(cb0, yws); + __m128i bws = _mm_add_epi16(yws, cb1); + __m128i gws = _mm_add_epi16(gwt, cr1); + + // descale + __m128i rw = _mm_srai_epi16(rws, 4); + __m128i bw = _mm_srai_epi16(bws, 4); + __m128i gw = _mm_srai_epi16(gws, 4); + + // back to byte, set up for transpose + __m128i brb = _mm_packus_epi16(rw, bw); + __m128i gxb = _mm_packus_epi16(gw, xw); + + // transpose to interleave channels + __m128i t0 = _mm_unpacklo_epi8(brb, gxb); + __m128i t1 = _mm_unpackhi_epi8(brb, gxb); + __m128i o0 = _mm_unpacklo_epi16(t0, t1); + __m128i o1 = _mm_unpackhi_epi16(t0, t1); + + // store + _mm_storeu_si128((__m128i *) (out + 0), o0); + _mm_storeu_si128((__m128i *) (out + 16), o1); + out += 32; + } + } +#endif + +#ifdef STBI_NEON + // in this version, step=3 support would be easy to add. but is there demand? + if (step == 4) { + // this is a fairly straightforward implementation and not super-optimized. + uint8x8_t signflip = vdup_n_u8(0x80); + int16x8_t cr_const0 = vdupq_n_s16( (short) ( 1.40200f*4096.0f+0.5f)); + int16x8_t cr_const1 = vdupq_n_s16( - (short) ( 0.71414f*4096.0f+0.5f)); + int16x8_t cb_const0 = vdupq_n_s16( - (short) ( 0.34414f*4096.0f+0.5f)); + int16x8_t cb_const1 = vdupq_n_s16( (short) ( 1.77200f*4096.0f+0.5f)); + + for (; i+7 < count; i += 8) { + // load + uint8x8_t y_bytes = vld1_u8(y + i); + uint8x8_t cr_bytes = vld1_u8(pcr + i); + uint8x8_t cb_bytes = vld1_u8(pcb + i); + int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip)); + int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip)); + + // expand to s16 + int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4)); + int16x8_t crw = vshll_n_s8(cr_biased, 7); + int16x8_t cbw = vshll_n_s8(cb_biased, 7); + + // color transform + int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0); + int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0); + int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1); + int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1); + int16x8_t rws = vaddq_s16(yws, cr0); + int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1); + int16x8_t bws = vaddq_s16(yws, cb1); + + // undo scaling, round, convert to byte + uint8x8x4_t o; + o.val[0] = vqrshrun_n_s16(rws, 4); + o.val[1] = vqrshrun_n_s16(gws, 4); + o.val[2] = vqrshrun_n_s16(bws, 4); + o.val[3] = vdup_n_u8(255); + + // store, interleaving r/g/b/a + vst4_u8(out, o); + out += 8*4; + } + } +#endif + + for (; i < count; ++i) { + int y_fixed = (y[i] << 20) + (1<<19); // rounding + int r,g,b; + int cr = pcr[i] - 128; + int cb = pcb[i] - 128; + r = y_fixed + cr* stbi__float2fixed(1.40200f); + g = y_fixed + cr*-stbi__float2fixed(0.71414f) + ((cb*-stbi__float2fixed(0.34414f)) & 0xffff0000); + b = y_fixed + cb* stbi__float2fixed(1.77200f); + r >>= 20; + g >>= 20; + b >>= 20; + if ((unsigned) r > 255) { if (r < 0) r = 0; else r = 255; } + if ((unsigned) g > 255) { if (g < 0) g = 0; else g = 255; } + if ((unsigned) b > 255) { if (b < 0) b = 0; else b = 255; } + out[0] = (stbi_uc)r; + out[1] = (stbi_uc)g; + out[2] = (stbi_uc)b; + out[3] = 255; + out += step; + } +} +#endif + +// set up the kernels +static void stbi__setup_jpeg(stbi__jpeg *j) +{ + j->idct_block_kernel = stbi__idct_block; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2; + +#ifdef STBI_SSE2 + if (stbi__sse2_available()) { + j->idct_block_kernel = stbi__idct_simd; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; + } +#endif + +#ifdef STBI_NEON + j->idct_block_kernel = stbi__idct_simd; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +#endif +} + +// clean up the temporary component buffers +static void stbi__cleanup_jpeg(stbi__jpeg *j) +{ + stbi__free_jpeg_components(j, j->s->img_n, 0); +} + +typedef struct +{ + resample_row_func resample; + stbi_uc *line0,*line1; + int hs,vs; // expansion factor in each axis + int w_lores; // horizontal pixels pre-expansion + int ystep; // how far through vertical expansion we are + int ypos; // which pre-expansion row we're on +} stbi__resample; + +// fast 0..255 * 0..255 => 0..255 rounded multiplication +static stbi_uc stbi__blinn_8x8(stbi_uc x, stbi_uc y) +{ + unsigned int t = x*y + 128; + return (stbi_uc) ((t + (t >>8)) >> 8); +} + +static stbi_uc *load_jpeg_image(stbi__jpeg *z, int *out_x, int *out_y, int *comp, int req_comp) +{ + int n, decode_n, is_rgb; + z->s->img_n = 0; // make stbi__cleanup_jpeg safe + + // validate req_comp + if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); + + // load a jpeg image from whichever source, but leave in YCbCr format + if (!stbi__decode_jpeg_image(z)) { stbi__cleanup_jpeg(z); return NULL; } + + // determine actual number of components to generate + n = req_comp ? req_comp : z->s->img_n >= 3 ? 3 : 1; + + is_rgb = z->s->img_n == 3 && (z->rgb == 3 || (z->app14_color_transform == 0 && !z->jfif)); + + if (z->s->img_n == 3 && n < 3 && !is_rgb) + decode_n = 1; + else + decode_n = z->s->img_n; + + // nothing to do if no components requested; check this now to avoid + // accessing uninitialized coutput[0] later + if (decode_n <= 0) { stbi__cleanup_jpeg(z); return NULL; } + + // resample and color-convert + { + int k; + unsigned int i,j; + stbi_uc *output; + stbi_uc *coutput[4] = { NULL, NULL, NULL, NULL }; + + stbi__resample res_comp[4]; + + for (k=0; k < decode_n; ++k) { + stbi__resample *r = &res_comp[k]; + + // allocate line buffer big enough for upsampling off the edges + // with upsample factor of 4 + z->img_comp[k].linebuf = (stbi_uc *) stbi__malloc(z->s->img_x + 3); + if (!z->img_comp[k].linebuf) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } + + r->hs = z->img_h_max / z->img_comp[k].h; + r->vs = z->img_v_max / z->img_comp[k].v; + r->ystep = r->vs >> 1; + r->w_lores = (z->s->img_x + r->hs-1) / r->hs; + r->ypos = 0; + r->line0 = r->line1 = z->img_comp[k].data; + + if (r->hs == 1 && r->vs == 1) r->resample = resample_row_1; + else if (r->hs == 1 && r->vs == 2) r->resample = stbi__resample_row_v_2; + else if (r->hs == 2 && r->vs == 1) r->resample = stbi__resample_row_h_2; + else if (r->hs == 2 && r->vs == 2) r->resample = z->resample_row_hv_2_kernel; + else r->resample = stbi__resample_row_generic; + } + + // can't error after this so, this is safe + output = (stbi_uc *) stbi__malloc_mad3(n, z->s->img_x, z->s->img_y, 1); + if (!output) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } + + // now go ahead and resample + for (j=0; j < z->s->img_y; ++j) { + stbi_uc *out = output + n * z->s->img_x * j; + for (k=0; k < decode_n; ++k) { + stbi__resample *r = &res_comp[k]; + int y_bot = r->ystep >= (r->vs >> 1); + coutput[k] = r->resample(z->img_comp[k].linebuf, + y_bot ? r->line1 : r->line0, + y_bot ? r->line0 : r->line1, + r->w_lores, r->hs); + if (++r->ystep >= r->vs) { + r->ystep = 0; + r->line0 = r->line1; + if (++r->ypos < z->img_comp[k].y) + r->line1 += z->img_comp[k].w2; + } + } + if (n >= 3) { + stbi_uc *y = coutput[0]; + if (z->s->img_n == 3) { + if (is_rgb) { + for (i=0; i < z->s->img_x; ++i) { + out[0] = y[i]; + out[1] = coutput[1][i]; + out[2] = coutput[2][i]; + out[3] = 255; + out += n; + } + } else { + z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); + } + } else if (z->s->img_n == 4) { + if (z->app14_color_transform == 0) { // CMYK + for (i=0; i < z->s->img_x; ++i) { + stbi_uc m = coutput[3][i]; + out[0] = stbi__blinn_8x8(coutput[0][i], m); + out[1] = stbi__blinn_8x8(coutput[1][i], m); + out[2] = stbi__blinn_8x8(coutput[2][i], m); + out[3] = 255; + out += n; + } + } else if (z->app14_color_transform == 2) { // YCCK + z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); + for (i=0; i < z->s->img_x; ++i) { + stbi_uc m = coutput[3][i]; + out[0] = stbi__blinn_8x8(255 - out[0], m); + out[1] = stbi__blinn_8x8(255 - out[1], m); + out[2] = stbi__blinn_8x8(255 - out[2], m); + out += n; + } + } else { // YCbCr + alpha? Ignore the fourth channel for now + z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); + } + } else + for (i=0; i < z->s->img_x; ++i) { + out[0] = out[1] = out[2] = y[i]; + out[3] = 255; // not used if n==3 + out += n; + } + } else { + if (is_rgb) { + if (n == 1) + for (i=0; i < z->s->img_x; ++i) + *out++ = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); + else { + for (i=0; i < z->s->img_x; ++i, out += 2) { + out[0] = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); + out[1] = 255; + } + } + } else if (z->s->img_n == 4 && z->app14_color_transform == 0) { + for (i=0; i < z->s->img_x; ++i) { + stbi_uc m = coutput[3][i]; + stbi_uc r = stbi__blinn_8x8(coutput[0][i], m); + stbi_uc g = stbi__blinn_8x8(coutput[1][i], m); + stbi_uc b = stbi__blinn_8x8(coutput[2][i], m); + out[0] = stbi__compute_y(r, g, b); + out[1] = 255; + out += n; + } + } else if (z->s->img_n == 4 && z->app14_color_transform == 2) { + for (i=0; i < z->s->img_x; ++i) { + out[0] = stbi__blinn_8x8(255 - coutput[0][i], coutput[3][i]); + out[1] = 255; + out += n; + } + } else { + stbi_uc *y = coutput[0]; + if (n == 1) + for (i=0; i < z->s->img_x; ++i) out[i] = y[i]; + else + for (i=0; i < z->s->img_x; ++i) { *out++ = y[i]; *out++ = 255; } + } + } + } + stbi__cleanup_jpeg(z); + *out_x = z->s->img_x; + *out_y = z->s->img_y; + if (comp) *comp = z->s->img_n >= 3 ? 3 : 1; // report original components, not output + return output; + } +} + +static void *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + unsigned char* result; + stbi__jpeg* j = (stbi__jpeg*) stbi__malloc(sizeof(stbi__jpeg)); + if (!j) return stbi__errpuc("outofmem", "Out of memory"); + memset(j, 0, sizeof(stbi__jpeg)); + STBI_NOTUSED(ri); + j->s = s; + stbi__setup_jpeg(j); + result = load_jpeg_image(j, x,y,comp,req_comp); + STBI_FREE(j); + return result; +} + +static int stbi__jpeg_test(stbi__context *s) +{ + int r; + stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); + if (!j) return stbi__err("outofmem", "Out of memory"); + memset(j, 0, sizeof(stbi__jpeg)); + j->s = s; + stbi__setup_jpeg(j); + r = stbi__decode_jpeg_header(j, STBI__SCAN_type); + stbi__rewind(s); + STBI_FREE(j); + return r; +} + +static int stbi__jpeg_info_raw(stbi__jpeg *j, int *x, int *y, int *comp) +{ + if (!stbi__decode_jpeg_header(j, STBI__SCAN_header)) { + stbi__rewind( j->s ); + return 0; + } + if (x) *x = j->s->img_x; + if (y) *y = j->s->img_y; + if (comp) *comp = j->s->img_n >= 3 ? 3 : 1; + return 1; +} + +static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp) +{ + int result; + stbi__jpeg* j = (stbi__jpeg*) (stbi__malloc(sizeof(stbi__jpeg))); + if (!j) return stbi__err("outofmem", "Out of memory"); + memset(j, 0, sizeof(stbi__jpeg)); + j->s = s; + result = stbi__jpeg_info_raw(j, x, y, comp); + STBI_FREE(j); + return result; +} +#endif + +// public domain zlib decode v0.2 Sean Barrett 2006-11-18 +// simple implementation +// - all input must be provided in an upfront buffer +// - all output is written to a single output buffer (can malloc/realloc) +// performance +// - fast huffman + +#ifndef STBI_NO_ZLIB + +// fast-way is faster to check than jpeg huffman, but slow way is slower +#define STBI__ZFAST_BITS 9 // accelerate all cases in default tables +#define STBI__ZFAST_MASK ((1 << STBI__ZFAST_BITS) - 1) +#define STBI__ZNSYMS 288 // number of symbols in literal/length alphabet + +// zlib-style huffman encoding +// (jpegs packs from left, zlib from right, so can't share code) +typedef struct +{ + stbi__uint16 fast[1 << STBI__ZFAST_BITS]; + stbi__uint16 firstcode[16]; + int maxcode[17]; + stbi__uint16 firstsymbol[16]; + stbi_uc size[STBI__ZNSYMS]; + stbi__uint16 value[STBI__ZNSYMS]; +} stbi__zhuffman; + +stbi_inline static int stbi__bitreverse16(int n) +{ + n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1); + n = ((n & 0xCCCC) >> 2) | ((n & 0x3333) << 2); + n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4); + n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8); + return n; +} + +stbi_inline static int stbi__bit_reverse(int v, int bits) +{ + STBI_ASSERT(bits <= 16); + // to bit reverse n bits, reverse 16 and shift + // e.g. 11 bits, bit reverse and shift away 5 + return stbi__bitreverse16(v) >> (16-bits); +} + +static int stbi__zbuild_huffman(stbi__zhuffman *z, const stbi_uc *sizelist, int num) +{ + int i,k=0; + int code, next_code[16], sizes[17]; + + // DEFLATE spec for generating codes + memset(sizes, 0, sizeof(sizes)); + memset(z->fast, 0, sizeof(z->fast)); + for (i=0; i < num; ++i) + ++sizes[sizelist[i]]; + sizes[0] = 0; + for (i=1; i < 16; ++i) + if (sizes[i] > (1 << i)) + return stbi__err("bad sizes", "Corrupt PNG"); + code = 0; + for (i=1; i < 16; ++i) { + next_code[i] = code; + z->firstcode[i] = (stbi__uint16) code; + z->firstsymbol[i] = (stbi__uint16) k; + code = (code + sizes[i]); + if (sizes[i]) + if (code-1 >= (1 << i)) return stbi__err("bad codelengths","Corrupt PNG"); + z->maxcode[i] = code << (16-i); // preshift for inner loop + code <<= 1; + k += sizes[i]; + } + z->maxcode[16] = 0x10000; // sentinel + for (i=0; i < num; ++i) { + int s = sizelist[i]; + if (s) { + int c = next_code[s] - z->firstcode[s] + z->firstsymbol[s]; + stbi__uint16 fastv = (stbi__uint16) ((s << 9) | i); + z->size [c] = (stbi_uc ) s; + z->value[c] = (stbi__uint16) i; + if (s <= STBI__ZFAST_BITS) { + int j = stbi__bit_reverse(next_code[s],s); + while (j < (1 << STBI__ZFAST_BITS)) { + z->fast[j] = fastv; + j += (1 << s); + } + } + ++next_code[s]; + } + } + return 1; +} + +// zlib-from-memory implementation for PNG reading +// because PNG allows splitting the zlib stream arbitrarily, +// and it's annoying structurally to have PNG call ZLIB call PNG, +// we require PNG read all the IDATs and combine them into a single +// memory buffer + +typedef struct +{ + stbi_uc *zbuffer, *zbuffer_end; + int num_bits; + stbi__uint32 code_buffer; + + char *zout; + char *zout_start; + char *zout_end; + int z_expandable; + + stbi__zhuffman z_length, z_distance; +} stbi__zbuf; + +stbi_inline static int stbi__zeof(stbi__zbuf *z) +{ + return (z->zbuffer >= z->zbuffer_end); +} + +stbi_inline static stbi_uc stbi__zget8(stbi__zbuf *z) +{ + return stbi__zeof(z) ? 0 : *z->zbuffer++; +} + +static void stbi__fill_bits(stbi__zbuf *z) +{ + do { + if (z->code_buffer >= (1U << z->num_bits)) { + z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ + return; + } + z->code_buffer |= (unsigned int) stbi__zget8(z) << z->num_bits; + z->num_bits += 8; + } while (z->num_bits <= 24); +} + +stbi_inline static unsigned int stbi__zreceive(stbi__zbuf *z, int n) +{ + unsigned int k; + if (z->num_bits < n) stbi__fill_bits(z); + k = z->code_buffer & ((1 << n) - 1); + z->code_buffer >>= n; + z->num_bits -= n; + return k; +} + +static int stbi__zhuffman_decode_slowpath(stbi__zbuf *a, stbi__zhuffman *z) +{ + int b,s,k; + // not resolved by fast table, so compute it the slow way + // use jpeg approach, which requires MSbits at top + k = stbi__bit_reverse(a->code_buffer, 16); + for (s=STBI__ZFAST_BITS+1; ; ++s) + if (k < z->maxcode[s]) + break; + if (s >= 16) return -1; // invalid code! + // code size is s, so: + b = (k >> (16-s)) - z->firstcode[s] + z->firstsymbol[s]; + if (b >= STBI__ZNSYMS) return -1; // some data was corrupt somewhere! + if (z->size[b] != s) return -1; // was originally an assert, but report failure instead. + a->code_buffer >>= s; + a->num_bits -= s; + return z->value[b]; +} + +stbi_inline static int stbi__zhuffman_decode(stbi__zbuf *a, stbi__zhuffman *z) +{ + int b,s; + if (a->num_bits < 16) { + if (stbi__zeof(a)) { + return -1; /* report error for unexpected end of data. */ + } + stbi__fill_bits(a); + } + b = z->fast[a->code_buffer & STBI__ZFAST_MASK]; + if (b) { + s = b >> 9; + a->code_buffer >>= s; + a->num_bits -= s; + return b & 511; + } + return stbi__zhuffman_decode_slowpath(a, z); +} + +static int stbi__zexpand(stbi__zbuf *z, char *zout, int n) // need to make room for n bytes +{ + char *q; + unsigned int cur, limit, old_limit; + z->zout = zout; + if (!z->z_expandable) return stbi__err("output buffer limit","Corrupt PNG"); + cur = (unsigned int) (z->zout - z->zout_start); + limit = old_limit = (unsigned) (z->zout_end - z->zout_start); + if (UINT_MAX - cur < (unsigned) n) return stbi__err("outofmem", "Out of memory"); + while (cur + n > limit) { + if(limit > UINT_MAX / 2) return stbi__err("outofmem", "Out of memory"); + limit *= 2; + } + q = (char *) STBI_REALLOC_SIZED(z->zout_start, old_limit, limit); + STBI_NOTUSED(old_limit); + if (q == NULL) return stbi__err("outofmem", "Out of memory"); + z->zout_start = q; + z->zout = q + cur; + z->zout_end = q + limit; + return 1; +} + +static const int stbi__zlength_base[31] = { + 3,4,5,6,7,8,9,10,11,13, + 15,17,19,23,27,31,35,43,51,59, + 67,83,99,115,131,163,195,227,258,0,0 }; + +static const int stbi__zlength_extra[31]= +{ 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0 }; + +static const int stbi__zdist_base[32] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193, +257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0}; + +static const int stbi__zdist_extra[32] = +{ 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13}; + +static int stbi__parse_huffman_block(stbi__zbuf *a) +{ + char *zout = a->zout; + for(;;) { + int z = stbi__zhuffman_decode(a, &a->z_length); + if (z < 256) { + if (z < 0) return stbi__err("bad huffman code","Corrupt PNG"); // error in huffman codes + if (zout >= a->zout_end) { + if (!stbi__zexpand(a, zout, 1)) return 0; + zout = a->zout; + } + *zout++ = (char) z; + } else { + stbi_uc *p; + int len,dist; + if (z == 256) { + a->zout = zout; + return 1; + } + if (z >= 286) return stbi__err("bad huffman code","Corrupt PNG"); // per DEFLATE, length codes 286 and 287 must not appear in compressed data + z -= 257; + len = stbi__zlength_base[z]; + if (stbi__zlength_extra[z]) len += stbi__zreceive(a, stbi__zlength_extra[z]); + z = stbi__zhuffman_decode(a, &a->z_distance); + if (z < 0 || z >= 30) return stbi__err("bad huffman code","Corrupt PNG"); // per DEFLATE, distance codes 30 and 31 must not appear in compressed data + dist = stbi__zdist_base[z]; + if (stbi__zdist_extra[z]) dist += stbi__zreceive(a, stbi__zdist_extra[z]); + if (zout - a->zout_start < dist) return stbi__err("bad dist","Corrupt PNG"); + if (zout + len > a->zout_end) { + if (!stbi__zexpand(a, zout, len)) return 0; + zout = a->zout; + } + p = (stbi_uc *) (zout - dist); + if (dist == 1) { // run of one byte; common in images. + stbi_uc v = *p; + if (len) { do *zout++ = v; while (--len); } + } else { + if (len) { do *zout++ = *p++; while (--len); } + } + } + } +} + +static int stbi__compute_huffman_codes(stbi__zbuf *a) +{ + static const stbi_uc length_dezigzag[19] = { 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15 }; + stbi__zhuffman z_codelength; + stbi_uc lencodes[286+32+137];//padding for maximum single op + stbi_uc codelength_sizes[19]; + int i,n; + + int hlit = stbi__zreceive(a,5) + 257; + int hdist = stbi__zreceive(a,5) + 1; + int hclen = stbi__zreceive(a,4) + 4; + int ntot = hlit + hdist; + + memset(codelength_sizes, 0, sizeof(codelength_sizes)); + for (i=0; i < hclen; ++i) { + int s = stbi__zreceive(a,3); + codelength_sizes[length_dezigzag[i]] = (stbi_uc) s; + } + if (!stbi__zbuild_huffman(&z_codelength, codelength_sizes, 19)) return 0; + + n = 0; + while (n < ntot) { + int c = stbi__zhuffman_decode(a, &z_codelength); + if (c < 0 || c >= 19) return stbi__err("bad codelengths", "Corrupt PNG"); + if (c < 16) + lencodes[n++] = (stbi_uc) c; + else { + stbi_uc fill = 0; + if (c == 16) { + c = stbi__zreceive(a,2)+3; + if (n == 0) return stbi__err("bad codelengths", "Corrupt PNG"); + fill = lencodes[n-1]; + } else if (c == 17) { + c = stbi__zreceive(a,3)+3; + } else if (c == 18) { + c = stbi__zreceive(a,7)+11; + } else { + return stbi__err("bad codelengths", "Corrupt PNG"); + } + if (ntot - n < c) return stbi__err("bad codelengths", "Corrupt PNG"); + memset(lencodes+n, fill, c); + n += c; + } + } + if (n != ntot) return stbi__err("bad codelengths","Corrupt PNG"); + if (!stbi__zbuild_huffman(&a->z_length, lencodes, hlit)) return 0; + if (!stbi__zbuild_huffman(&a->z_distance, lencodes+hlit, hdist)) return 0; + return 1; +} + +static int stbi__parse_uncompressed_block(stbi__zbuf *a) +{ + stbi_uc header[4]; + int len,nlen,k; + if (a->num_bits & 7) + stbi__zreceive(a, a->num_bits & 7); // discard + // drain the bit-packed data into header + k = 0; + while (a->num_bits > 0) { + header[k++] = (stbi_uc) (a->code_buffer & 255); // suppress MSVC run-time check + a->code_buffer >>= 8; + a->num_bits -= 8; + } + if (a->num_bits < 0) return stbi__err("zlib corrupt","Corrupt PNG"); + // now fill header the normal way + while (k < 4) + header[k++] = stbi__zget8(a); + len = header[1] * 256 + header[0]; + nlen = header[3] * 256 + header[2]; + if (nlen != (len ^ 0xffff)) return stbi__err("zlib corrupt","Corrupt PNG"); + if (a->zbuffer + len > a->zbuffer_end) return stbi__err("read past buffer","Corrupt PNG"); + if (a->zout + len > a->zout_end) + if (!stbi__zexpand(a, a->zout, len)) return 0; + memcpy(a->zout, a->zbuffer, len); + a->zbuffer += len; + a->zout += len; + return 1; +} + +static int stbi__parse_zlib_header(stbi__zbuf *a) +{ + int cmf = stbi__zget8(a); + int cm = cmf & 15; + /* int cinfo = cmf >> 4; */ + int flg = stbi__zget8(a); + if (stbi__zeof(a)) return stbi__err("bad zlib header","Corrupt PNG"); // zlib spec + if ((cmf*256+flg) % 31 != 0) return stbi__err("bad zlib header","Corrupt PNG"); // zlib spec + if (flg & 32) return stbi__err("no preset dict","Corrupt PNG"); // preset dictionary not allowed in png + if (cm != 8) return stbi__err("bad compression","Corrupt PNG"); // DEFLATE required for png + // window = 1 << (8 + cinfo)... but who cares, we fully buffer output + return 1; +} + +static const stbi_uc stbi__zdefault_length[STBI__ZNSYMS] = +{ + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8 +}; +static const stbi_uc stbi__zdefault_distance[32] = +{ + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5 +}; +/* +Init algorithm: +{ + int i; // use <= to match clearly with spec + for (i=0; i <= 143; ++i) stbi__zdefault_length[i] = 8; + for ( ; i <= 255; ++i) stbi__zdefault_length[i] = 9; + for ( ; i <= 279; ++i) stbi__zdefault_length[i] = 7; + for ( ; i <= 287; ++i) stbi__zdefault_length[i] = 8; + + for (i=0; i <= 31; ++i) stbi__zdefault_distance[i] = 5; +} +*/ + +static int stbi__parse_zlib(stbi__zbuf *a, int parse_header) +{ + int final, type; + if (parse_header) + if (!stbi__parse_zlib_header(a)) return 0; + a->num_bits = 0; + a->code_buffer = 0; + do { + final = stbi__zreceive(a,1); + type = stbi__zreceive(a,2); + if (type == 0) { + if (!stbi__parse_uncompressed_block(a)) return 0; + } else if (type == 3) { + return 0; + } else { + if (type == 1) { + // use fixed code lengths + if (!stbi__zbuild_huffman(&a->z_length , stbi__zdefault_length , STBI__ZNSYMS)) return 0; + if (!stbi__zbuild_huffman(&a->z_distance, stbi__zdefault_distance, 32)) return 0; + } else { + if (!stbi__compute_huffman_codes(a)) return 0; + } + if (!stbi__parse_huffman_block(a)) return 0; + } + } while (!final); + return 1; +} + +static int stbi__do_zlib(stbi__zbuf *a, char *obuf, int olen, int exp, int parse_header) +{ + a->zout_start = obuf; + a->zout = obuf; + a->zout_end = obuf + olen; + a->z_expandable = exp; + + return stbi__parse_zlib(a, parse_header); +} + +STBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen) +{ + stbi__zbuf a; + char *p = (char *) stbi__malloc(initial_size); + if (p == NULL) return NULL; + a.zbuffer = (stbi_uc *) buffer; + a.zbuffer_end = (stbi_uc *) buffer + len; + if (stbi__do_zlib(&a, p, initial_size, 1, 1)) { + if (outlen) *outlen = (int) (a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF char *stbi_zlib_decode_malloc(char const *buffer, int len, int *outlen) +{ + return stbi_zlib_decode_malloc_guesssize(buffer, len, 16384, outlen); +} + +STBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, int initial_size, int *outlen, int parse_header) +{ + stbi__zbuf a; + char *p = (char *) stbi__malloc(initial_size); + if (p == NULL) return NULL; + a.zbuffer = (stbi_uc *) buffer; + a.zbuffer_end = (stbi_uc *) buffer + len; + if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) { + if (outlen) *outlen = (int) (a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, char const *ibuffer, int ilen) +{ + stbi__zbuf a; + a.zbuffer = (stbi_uc *) ibuffer; + a.zbuffer_end = (stbi_uc *) ibuffer + ilen; + if (stbi__do_zlib(&a, obuffer, olen, 0, 1)) + return (int) (a.zout - a.zout_start); + else + return -1; +} + +STBIDEF char *stbi_zlib_decode_noheader_malloc(char const *buffer, int len, int *outlen) +{ + stbi__zbuf a; + char *p = (char *) stbi__malloc(16384); + if (p == NULL) return NULL; + a.zbuffer = (stbi_uc *) buffer; + a.zbuffer_end = (stbi_uc *) buffer+len; + if (stbi__do_zlib(&a, p, 16384, 1, 0)) { + if (outlen) *outlen = (int) (a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen) +{ + stbi__zbuf a; + a.zbuffer = (stbi_uc *) ibuffer; + a.zbuffer_end = (stbi_uc *) ibuffer + ilen; + if (stbi__do_zlib(&a, obuffer, olen, 0, 0)) + return (int) (a.zout - a.zout_start); + else + return -1; +} +#endif + +// public domain "baseline" PNG decoder v0.10 Sean Barrett 2006-11-18 +// simple implementation +// - only 8-bit samples +// - no CRC checking +// - allocates lots of intermediate memory +// - avoids problem of streaming data between subsystems +// - avoids explicit window management +// performance +// - uses stb_zlib, a PD zlib implementation with fast huffman decoding + +#ifndef STBI_NO_PNG +typedef struct +{ + stbi__uint32 length; + stbi__uint32 type; +} stbi__pngchunk; + +static stbi__pngchunk stbi__get_chunk_header(stbi__context *s) +{ + stbi__pngchunk c; + c.length = stbi__get32be(s); + c.type = stbi__get32be(s); + return c; +} + +static int stbi__check_png_header(stbi__context *s) +{ + static const stbi_uc png_sig[8] = { 137,80,78,71,13,10,26,10 }; + int i; + for (i=0; i < 8; ++i) + if (stbi__get8(s) != png_sig[i]) return stbi__err("bad png sig","Not a PNG"); + return 1; +} + +typedef struct +{ + stbi__context *s; + stbi_uc *idata, *expanded, *out; + int depth; +} stbi__png; + + +enum { + STBI__F_none=0, + STBI__F_sub=1, + STBI__F_up=2, + STBI__F_avg=3, + STBI__F_paeth=4, + // synthetic filters used for first scanline to avoid needing a dummy row of 0s + STBI__F_avg_first, + STBI__F_paeth_first +}; + +static stbi_uc first_row_filter[5] = +{ + STBI__F_none, + STBI__F_sub, + STBI__F_none, + STBI__F_avg_first, + STBI__F_paeth_first +}; + +static int stbi__paeth(int a, int b, int c) +{ + int p = a + b - c; + int pa = abs(p-a); + int pb = abs(p-b); + int pc = abs(p-c); + if (pa <= pb && pa <= pc) return a; + if (pb <= pc) return b; + return c; +} + +static const stbi_uc stbi__depth_scale_table[9] = { 0, 0xff, 0x55, 0, 0x11, 0,0,0, 0x01 }; + +// create the png data from post-deflated data +static int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__uint32 raw_len, int out_n, stbi__uint32 x, stbi__uint32 y, int depth, int color) +{ + int bytes = (depth == 16? 2 : 1); + stbi__context *s = a->s; + stbi__uint32 i,j,stride = x*out_n*bytes; + stbi__uint32 img_len, img_width_bytes; + int k; + int img_n = s->img_n; // copy it into a local for later + + int output_bytes = out_n*bytes; + int filter_bytes = img_n*bytes; + int width = x; + + STBI_ASSERT(out_n == s->img_n || out_n == s->img_n+1); + a->out = (stbi_uc *) stbi__malloc_mad3(x, y, output_bytes, 0); // extra bytes to write off the end into + if (!a->out) return stbi__err("outofmem", "Out of memory"); + + if (!stbi__mad3sizes_valid(img_n, x, depth, 7)) return stbi__err("too large", "Corrupt PNG"); + img_width_bytes = (((img_n * x * depth) + 7) >> 3); + img_len = (img_width_bytes + 1) * y; + + // we used to check for exact match between raw_len and img_len on non-interlaced PNGs, + // but issue #276 reported a PNG in the wild that had extra data at the end (all zeros), + // so just check for raw_len < img_len always. + if (raw_len < img_len) return stbi__err("not enough pixels","Corrupt PNG"); + + for (j=0; j < y; ++j) { + stbi_uc *cur = a->out + stride*j; + stbi_uc *prior; + int filter = *raw++; + + if (filter > 4) + return stbi__err("invalid filter","Corrupt PNG"); + + if (depth < 8) { + if (img_width_bytes > x) return stbi__err("invalid width","Corrupt PNG"); + cur += x*out_n - img_width_bytes; // store output to the rightmost img_len bytes, so we can decode in place + filter_bytes = 1; + width = img_width_bytes; + } + prior = cur - stride; // bugfix: need to compute this after 'cur +=' computation above + + // if first row, use special filter that doesn't sample previous row + if (j == 0) filter = first_row_filter[filter]; + + // handle first byte explicitly + for (k=0; k < filter_bytes; ++k) { + switch (filter) { + case STBI__F_none : cur[k] = raw[k]; break; + case STBI__F_sub : cur[k] = raw[k]; break; + case STBI__F_up : cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break; + case STBI__F_avg : cur[k] = STBI__BYTECAST(raw[k] + (prior[k]>>1)); break; + case STBI__F_paeth : cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0,prior[k],0)); break; + case STBI__F_avg_first : cur[k] = raw[k]; break; + case STBI__F_paeth_first: cur[k] = raw[k]; break; + } + } + + if (depth == 8) { + if (img_n != out_n) + cur[img_n] = 255; // first pixel + raw += img_n; + cur += out_n; + prior += out_n; + } else if (depth == 16) { + if (img_n != out_n) { + cur[filter_bytes] = 255; // first pixel top byte + cur[filter_bytes+1] = 255; // first pixel bottom byte + } + raw += filter_bytes; + cur += output_bytes; + prior += output_bytes; + } else { + raw += 1; + cur += 1; + prior += 1; + } + + // this is a little gross, so that we don't switch per-pixel or per-component + if (depth < 8 || img_n == out_n) { + int nk = (width - 1)*filter_bytes; + #define STBI__CASE(f) \ + case f: \ + for (k=0; k < nk; ++k) + switch (filter) { + // "none" filter turns into a memcpy here; make that explicit. + case STBI__F_none: memcpy(cur, raw, nk); break; + STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k-filter_bytes]); } break; + STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; + STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k-filter_bytes])>>1)); } break; + STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],prior[k],prior[k-filter_bytes])); } break; + STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k-filter_bytes] >> 1)); } break; + STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],0,0)); } break; + } + #undef STBI__CASE + raw += nk; + } else { + STBI_ASSERT(img_n+1 == out_n); + #define STBI__CASE(f) \ + case f: \ + for (i=x-1; i >= 1; --i, cur[filter_bytes]=255,raw+=filter_bytes,cur+=output_bytes,prior+=output_bytes) \ + for (k=0; k < filter_bytes; ++k) + switch (filter) { + STBI__CASE(STBI__F_none) { cur[k] = raw[k]; } break; + STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k- output_bytes]); } break; + STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; + STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k- output_bytes])>>1)); } break; + STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],prior[k],prior[k- output_bytes])); } break; + STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k- output_bytes] >> 1)); } break; + STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],0,0)); } break; + } + #undef STBI__CASE + + // the loop above sets the high byte of the pixels' alpha, but for + // 16 bit png files we also need the low byte set. we'll do that here. + if (depth == 16) { + cur = a->out + stride*j; // start at the beginning of the row again + for (i=0; i < x; ++i,cur+=output_bytes) { + cur[filter_bytes+1] = 255; + } + } + } + } + + // we make a separate pass to expand bits to pixels; for performance, + // this could run two scanlines behind the above code, so it won't + // intefere with filtering but will still be in the cache. + if (depth < 8) { + for (j=0; j < y; ++j) { + stbi_uc *cur = a->out + stride*j; + stbi_uc *in = a->out + stride*j + x*out_n - img_width_bytes; + // unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit + // png guarante byte alignment, if width is not multiple of 8/4/2 we'll decode dummy trailing data that will be skipped in the later loop + stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] : 1; // scale grayscale values to 0..255 range + + // note that the final byte might overshoot and write more data than desired. + // we can allocate enough data that this never writes out of memory, but it + // could also overwrite the next scanline. can it overwrite non-empty data + // on the next scanline? yes, consider 1-pixel-wide scanlines with 1-bit-per-pixel. + // so we need to explicitly clamp the final ones + + if (depth == 4) { + for (k=x*img_n; k >= 2; k-=2, ++in) { + *cur++ = scale * ((*in >> 4) ); + *cur++ = scale * ((*in ) & 0x0f); + } + if (k > 0) *cur++ = scale * ((*in >> 4) ); + } else if (depth == 2) { + for (k=x*img_n; k >= 4; k-=4, ++in) { + *cur++ = scale * ((*in >> 6) ); + *cur++ = scale * ((*in >> 4) & 0x03); + *cur++ = scale * ((*in >> 2) & 0x03); + *cur++ = scale * ((*in ) & 0x03); + } + if (k > 0) *cur++ = scale * ((*in >> 6) ); + if (k > 1) *cur++ = scale * ((*in >> 4) & 0x03); + if (k > 2) *cur++ = scale * ((*in >> 2) & 0x03); + } else if (depth == 1) { + for (k=x*img_n; k >= 8; k-=8, ++in) { + *cur++ = scale * ((*in >> 7) ); + *cur++ = scale * ((*in >> 6) & 0x01); + *cur++ = scale * ((*in >> 5) & 0x01); + *cur++ = scale * ((*in >> 4) & 0x01); + *cur++ = scale * ((*in >> 3) & 0x01); + *cur++ = scale * ((*in >> 2) & 0x01); + *cur++ = scale * ((*in >> 1) & 0x01); + *cur++ = scale * ((*in ) & 0x01); + } + if (k > 0) *cur++ = scale * ((*in >> 7) ); + if (k > 1) *cur++ = scale * ((*in >> 6) & 0x01); + if (k > 2) *cur++ = scale * ((*in >> 5) & 0x01); + if (k > 3) *cur++ = scale * ((*in >> 4) & 0x01); + if (k > 4) *cur++ = scale * ((*in >> 3) & 0x01); + if (k > 5) *cur++ = scale * ((*in >> 2) & 0x01); + if (k > 6) *cur++ = scale * ((*in >> 1) & 0x01); + } + if (img_n != out_n) { + int q; + // insert alpha = 255 + cur = a->out + stride*j; + if (img_n == 1) { + for (q=x-1; q >= 0; --q) { + cur[q*2+1] = 255; + cur[q*2+0] = cur[q]; + } + } else { + STBI_ASSERT(img_n == 3); + for (q=x-1; q >= 0; --q) { + cur[q*4+3] = 255; + cur[q*4+2] = cur[q*3+2]; + cur[q*4+1] = cur[q*3+1]; + cur[q*4+0] = cur[q*3+0]; + } + } + } + } + } else if (depth == 16) { + // force the image data from big-endian to platform-native. + // this is done in a separate pass due to the decoding relying + // on the data being untouched, but could probably be done + // per-line during decode if care is taken. + stbi_uc *cur = a->out; + stbi__uint16 *cur16 = (stbi__uint16*)cur; + + for(i=0; i < x*y*out_n; ++i,cur16++,cur+=2) { + *cur16 = (cur[0] << 8) | cur[1]; + } + } + + return 1; +} + +static int stbi__create_png_image(stbi__png *a, stbi_uc *image_data, stbi__uint32 image_data_len, int out_n, int depth, int color, int interlaced) +{ + int bytes = (depth == 16 ? 2 : 1); + int out_bytes = out_n * bytes; + stbi_uc *final; + int p; + if (!interlaced) + return stbi__create_png_image_raw(a, image_data, image_data_len, out_n, a->s->img_x, a->s->img_y, depth, color); + + // de-interlacing + final = (stbi_uc *) stbi__malloc_mad3(a->s->img_x, a->s->img_y, out_bytes, 0); + if (!final) return stbi__err("outofmem", "Out of memory"); + for (p=0; p < 7; ++p) { + int xorig[] = { 0,4,0,2,0,1,0 }; + int yorig[] = { 0,0,4,0,2,0,1 }; + int xspc[] = { 8,8,4,4,2,2,1 }; + int yspc[] = { 8,8,8,4,4,2,2 }; + int i,j,x,y; + // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1 + x = (a->s->img_x - xorig[p] + xspc[p]-1) / xspc[p]; + y = (a->s->img_y - yorig[p] + yspc[p]-1) / yspc[p]; + if (x && y) { + stbi__uint32 img_len = ((((a->s->img_n * x * depth) + 7) >> 3) + 1) * y; + if (!stbi__create_png_image_raw(a, image_data, image_data_len, out_n, x, y, depth, color)) { + STBI_FREE(final); + return 0; + } + for (j=0; j < y; ++j) { + for (i=0; i < x; ++i) { + int out_y = j*yspc[p]+yorig[p]; + int out_x = i*xspc[p]+xorig[p]; + memcpy(final + out_y*a->s->img_x*out_bytes + out_x*out_bytes, + a->out + (j*x+i)*out_bytes, out_bytes); + } + } + STBI_FREE(a->out); + image_data += img_len; + image_data_len -= img_len; + } + } + a->out = final; + + return 1; +} + +static int stbi__compute_transparency(stbi__png *z, stbi_uc tc[3], int out_n) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi_uc *p = z->out; + + // compute color-based transparency, assuming we've + // already got 255 as the alpha value in the output + STBI_ASSERT(out_n == 2 || out_n == 4); + + if (out_n == 2) { + for (i=0; i < pixel_count; ++i) { + p[1] = (p[0] == tc[0] ? 0 : 255); + p += 2; + } + } else { + for (i=0; i < pixel_count; ++i) { + if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) + p[3] = 0; + p += 4; + } + } + return 1; +} + +static int stbi__compute_transparency16(stbi__png *z, stbi__uint16 tc[3], int out_n) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi__uint16 *p = (stbi__uint16*) z->out; + + // compute color-based transparency, assuming we've + // already got 65535 as the alpha value in the output + STBI_ASSERT(out_n == 2 || out_n == 4); + + if (out_n == 2) { + for (i = 0; i < pixel_count; ++i) { + p[1] = (p[0] == tc[0] ? 0 : 65535); + p += 2; + } + } else { + for (i = 0; i < pixel_count; ++i) { + if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) + p[3] = 0; + p += 4; + } + } + return 1; +} + +static int stbi__expand_png_palette(stbi__png *a, stbi_uc *palette, int len, int pal_img_n) +{ + stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y; + stbi_uc *p, *temp_out, *orig = a->out; + + p = (stbi_uc *) stbi__malloc_mad2(pixel_count, pal_img_n, 0); + if (p == NULL) return stbi__err("outofmem", "Out of memory"); + + // between here and free(out) below, exitting would leak + temp_out = p; + + if (pal_img_n == 3) { + for (i=0; i < pixel_count; ++i) { + int n = orig[i]*4; + p[0] = palette[n ]; + p[1] = palette[n+1]; + p[2] = palette[n+2]; + p += 3; + } + } else { + for (i=0; i < pixel_count; ++i) { + int n = orig[i]*4; + p[0] = palette[n ]; + p[1] = palette[n+1]; + p[2] = palette[n+2]; + p[3] = palette[n+3]; + p += 4; + } + } + STBI_FREE(a->out); + a->out = temp_out; + + STBI_NOTUSED(len); + + return 1; +} + +static int stbi__unpremultiply_on_load_global = 0; +static int stbi__de_iphone_flag_global = 0; + +STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply) +{ + stbi__unpremultiply_on_load_global = flag_true_if_should_unpremultiply; +} + +STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert) +{ + stbi__de_iphone_flag_global = flag_true_if_should_convert; +} + +#ifndef STBI_THREAD_LOCAL +#define stbi__unpremultiply_on_load stbi__unpremultiply_on_load_global +#define stbi__de_iphone_flag stbi__de_iphone_flag_global +#else +static STBI_THREAD_LOCAL int stbi__unpremultiply_on_load_local, stbi__unpremultiply_on_load_set; +static STBI_THREAD_LOCAL int stbi__de_iphone_flag_local, stbi__de_iphone_flag_set; + +STBIDEF void stbi_set_unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply) +{ + stbi__unpremultiply_on_load_local = flag_true_if_should_unpremultiply; + stbi__unpremultiply_on_load_set = 1; +} + +STBIDEF void stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_should_convert) +{ + stbi__de_iphone_flag_local = flag_true_if_should_convert; + stbi__de_iphone_flag_set = 1; +} + +#define stbi__unpremultiply_on_load (stbi__unpremultiply_on_load_set \ + ? stbi__unpremultiply_on_load_local \ + : stbi__unpremultiply_on_load_global) +#define stbi__de_iphone_flag (stbi__de_iphone_flag_set \ + ? stbi__de_iphone_flag_local \ + : stbi__de_iphone_flag_global) +#endif // STBI_THREAD_LOCAL + +static void stbi__de_iphone(stbi__png *z) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi_uc *p = z->out; + + if (s->img_out_n == 3) { // convert bgr to rgb + for (i=0; i < pixel_count; ++i) { + stbi_uc t = p[0]; + p[0] = p[2]; + p[2] = t; + p += 3; + } + } else { + STBI_ASSERT(s->img_out_n == 4); + if (stbi__unpremultiply_on_load) { + // convert bgr to rgb and unpremultiply + for (i=0; i < pixel_count; ++i) { + stbi_uc a = p[3]; + stbi_uc t = p[0]; + if (a) { + stbi_uc half = a / 2; + p[0] = (p[2] * 255 + half) / a; + p[1] = (p[1] * 255 + half) / a; + p[2] = ( t * 255 + half) / a; + } else { + p[0] = p[2]; + p[2] = t; + } + p += 4; + } + } else { + // convert bgr to rgb + for (i=0; i < pixel_count; ++i) { + stbi_uc t = p[0]; + p[0] = p[2]; + p[2] = t; + p += 4; + } + } + } +} + +#define STBI__PNG_TYPE(a,b,c,d) (((unsigned) (a) << 24) + ((unsigned) (b) << 16) + ((unsigned) (c) << 8) + (unsigned) (d)) + +static int stbi__parse_png_file(stbi__png *z, int scan, int req_comp) +{ + stbi_uc palette[1024], pal_img_n=0; + stbi_uc has_trans=0, tc[3]={0}; + stbi__uint16 tc16[3]; + stbi__uint32 ioff=0, idata_limit=0, i, pal_len=0; + int first=1,k,interlace=0, color=0, is_iphone=0; + stbi__context *s = z->s; + + z->expanded = NULL; + z->idata = NULL; + z->out = NULL; + + if (!stbi__check_png_header(s)) return 0; + + if (scan == STBI__SCAN_type) return 1; + + for (;;) { + stbi__pngchunk c = stbi__get_chunk_header(s); + switch (c.type) { + case STBI__PNG_TYPE('C','g','B','I'): + is_iphone = 1; + stbi__skip(s, c.length); + break; + case STBI__PNG_TYPE('I','H','D','R'): { + int comp,filter; + if (!first) return stbi__err("multiple IHDR","Corrupt PNG"); + first = 0; + if (c.length != 13) return stbi__err("bad IHDR len","Corrupt PNG"); + s->img_x = stbi__get32be(s); + s->img_y = stbi__get32be(s); + if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); + if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); + z->depth = stbi__get8(s); if (z->depth != 1 && z->depth != 2 && z->depth != 4 && z->depth != 8 && z->depth != 16) return stbi__err("1/2/4/8/16-bit only","PNG not supported: 1/2/4/8/16-bit only"); + color = stbi__get8(s); if (color > 6) return stbi__err("bad ctype","Corrupt PNG"); + if (color == 3 && z->depth == 16) return stbi__err("bad ctype","Corrupt PNG"); + if (color == 3) pal_img_n = 3; else if (color & 1) return stbi__err("bad ctype","Corrupt PNG"); + comp = stbi__get8(s); if (comp) return stbi__err("bad comp method","Corrupt PNG"); + filter= stbi__get8(s); if (filter) return stbi__err("bad filter method","Corrupt PNG"); + interlace = stbi__get8(s); if (interlace>1) return stbi__err("bad interlace method","Corrupt PNG"); + if (!s->img_x || !s->img_y) return stbi__err("0-pixel image","Corrupt PNG"); + if (!pal_img_n) { + s->img_n = (color & 2 ? 3 : 1) + (color & 4 ? 1 : 0); + if ((1 << 30) / s->img_x / s->img_n < s->img_y) return stbi__err("too large", "Image too large to decode"); + } else { + // if paletted, then pal_n is our final components, and + // img_n is # components to decompress/filter. + s->img_n = 1; + if ((1 << 30) / s->img_x / 4 < s->img_y) return stbi__err("too large","Corrupt PNG"); + } + // even with SCAN_header, have to scan to see if we have a tRNS + break; + } + + case STBI__PNG_TYPE('P','L','T','E'): { + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (c.length > 256*3) return stbi__err("invalid PLTE","Corrupt PNG"); + pal_len = c.length / 3; + if (pal_len * 3 != c.length) return stbi__err("invalid PLTE","Corrupt PNG"); + for (i=0; i < pal_len; ++i) { + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + } + break; + } + + case STBI__PNG_TYPE('t','R','N','S'): { + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (z->idata) return stbi__err("tRNS after IDAT","Corrupt PNG"); + if (pal_img_n) { + if (scan == STBI__SCAN_header) { s->img_n = 4; return 1; } + if (pal_len == 0) return stbi__err("tRNS before PLTE","Corrupt PNG"); + if (c.length > pal_len) return stbi__err("bad tRNS len","Corrupt PNG"); + pal_img_n = 4; + for (i=0; i < c.length; ++i) + palette[i*4+3] = stbi__get8(s); + } else { + if (!(s->img_n & 1)) return stbi__err("tRNS with alpha","Corrupt PNG"); + if (c.length != (stbi__uint32) s->img_n*2) return stbi__err("bad tRNS len","Corrupt PNG"); + has_trans = 1; + // non-paletted with tRNS = constant alpha. if header-scanning, we can stop now. + if (scan == STBI__SCAN_header) { ++s->img_n; return 1; } + if (z->depth == 16) { + for (k = 0; k < s->img_n; ++k) tc16[k] = (stbi__uint16)stbi__get16be(s); // copy the values as-is + } else { + for (k = 0; k < s->img_n; ++k) tc[k] = (stbi_uc)(stbi__get16be(s) & 255) * stbi__depth_scale_table[z->depth]; // non 8-bit images will be larger + } + } + break; + } + + case STBI__PNG_TYPE('I','D','A','T'): { + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (pal_img_n && !pal_len) return stbi__err("no PLTE","Corrupt PNG"); + if (scan == STBI__SCAN_header) { + // header scan definitely stops at first IDAT + if (pal_img_n) + s->img_n = pal_img_n; + return 1; + } + if (c.length > (1u << 30)) return stbi__err("IDAT size limit", "IDAT section larger than 2^30 bytes"); + if ((int)(ioff + c.length) < (int)ioff) return 0; + if (ioff + c.length > idata_limit) { + stbi__uint32 idata_limit_old = idata_limit; + stbi_uc *p; + if (idata_limit == 0) idata_limit = c.length > 4096 ? c.length : 4096; + while (ioff + c.length > idata_limit) + idata_limit *= 2; + STBI_NOTUSED(idata_limit_old); + p = (stbi_uc *) STBI_REALLOC_SIZED(z->idata, idata_limit_old, idata_limit); if (p == NULL) return stbi__err("outofmem", "Out of memory"); + z->idata = p; + } + if (!stbi__getn(s, z->idata+ioff,c.length)) return stbi__err("outofdata","Corrupt PNG"); + ioff += c.length; + break; + } + + case STBI__PNG_TYPE('I','E','N','D'): { + stbi__uint32 raw_len, bpl; + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (scan != STBI__SCAN_load) return 1; + if (z->idata == NULL) return stbi__err("no IDAT","Corrupt PNG"); + // initial guess for decoded data size to avoid unnecessary reallocs + bpl = (s->img_x * z->depth + 7) / 8; // bytes per line, per component + raw_len = bpl * s->img_y * s->img_n /* pixels */ + s->img_y /* filter mode per row */; + z->expanded = (stbi_uc *) stbi_zlib_decode_malloc_guesssize_headerflag((char *) z->idata, ioff, raw_len, (int *) &raw_len, !is_iphone); + if (z->expanded == NULL) return 0; // zlib should set error + STBI_FREE(z->idata); z->idata = NULL; + if ((req_comp == s->img_n+1 && req_comp != 3 && !pal_img_n) || has_trans) + s->img_out_n = s->img_n+1; + else + s->img_out_n = s->img_n; + if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, z->depth, color, interlace)) return 0; + if (has_trans) { + if (z->depth == 16) { + if (!stbi__compute_transparency16(z, tc16, s->img_out_n)) return 0; + } else { + if (!stbi__compute_transparency(z, tc, s->img_out_n)) return 0; + } + } + if (is_iphone && stbi__de_iphone_flag && s->img_out_n > 2) + stbi__de_iphone(z); + if (pal_img_n) { + // pal_img_n == 3 or 4 + s->img_n = pal_img_n; // record the actual colors we had + s->img_out_n = pal_img_n; + if (req_comp >= 3) s->img_out_n = req_comp; + if (!stbi__expand_png_palette(z, palette, pal_len, s->img_out_n)) + return 0; + } else if (has_trans) { + // non-paletted image with tRNS -> source image has (constant) alpha + ++s->img_n; + } + STBI_FREE(z->expanded); z->expanded = NULL; + // end of PNG chunk, read and skip CRC + stbi__get32be(s); + return 1; + } + + default: + // if critical, fail + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if ((c.type & (1 << 29)) == 0) { + #ifndef STBI_NO_FAILURE_STRINGS + // not threadsafe + static char invalid_chunk[] = "XXXX PNG chunk not known"; + invalid_chunk[0] = STBI__BYTECAST(c.type >> 24); + invalid_chunk[1] = STBI__BYTECAST(c.type >> 16); + invalid_chunk[2] = STBI__BYTECAST(c.type >> 8); + invalid_chunk[3] = STBI__BYTECAST(c.type >> 0); + #endif + return stbi__err(invalid_chunk, "PNG not supported: unknown PNG chunk type"); + } + stbi__skip(s, c.length); + break; + } + // end of PNG chunk, read and skip CRC + stbi__get32be(s); + } +} + +static void *stbi__do_png(stbi__png *p, int *x, int *y, int *n, int req_comp, stbi__result_info *ri) +{ + void *result=NULL; + if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); + if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) { + if (p->depth <= 8) + ri->bits_per_channel = 8; + else if (p->depth == 16) + ri->bits_per_channel = 16; + else + return stbi__errpuc("bad bits_per_channel", "PNG not supported: unsupported color depth"); + result = p->out; + p->out = NULL; + if (req_comp && req_comp != p->s->img_out_n) { + if (ri->bits_per_channel == 8) + result = stbi__convert_format((unsigned char *) result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); + else + result = stbi__convert_format16((stbi__uint16 *) result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); + p->s->img_out_n = req_comp; + if (result == NULL) return result; + } + *x = p->s->img_x; + *y = p->s->img_y; + if (n) *n = p->s->img_n; + } + STBI_FREE(p->out); p->out = NULL; + STBI_FREE(p->expanded); p->expanded = NULL; + STBI_FREE(p->idata); p->idata = NULL; + + return result; +} + +static void *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi__png p; + p.s = s; + return stbi__do_png(&p, x,y,comp,req_comp, ri); +} + +static int stbi__png_test(stbi__context *s) +{ + int r; + r = stbi__check_png_header(s); + stbi__rewind(s); + return r; +} + +static int stbi__png_info_raw(stbi__png *p, int *x, int *y, int *comp) +{ + if (!stbi__parse_png_file(p, STBI__SCAN_header, 0)) { + stbi__rewind( p->s ); + return 0; + } + if (x) *x = p->s->img_x; + if (y) *y = p->s->img_y; + if (comp) *comp = p->s->img_n; + return 1; +} + +static int stbi__png_info(stbi__context *s, int *x, int *y, int *comp) +{ + stbi__png p; + p.s = s; + return stbi__png_info_raw(&p, x, y, comp); +} + +static int stbi__png_is16(stbi__context *s) +{ + stbi__png p; + p.s = s; + if (!stbi__png_info_raw(&p, NULL, NULL, NULL)) + return 0; + if (p.depth != 16) { + stbi__rewind(p.s); + return 0; + } + return 1; +} +#endif + +// Microsoft/Windows BMP image + +#ifndef STBI_NO_BMP +static int stbi__bmp_test_raw(stbi__context *s) +{ + int r; + int sz; + if (stbi__get8(s) != 'B') return 0; + if (stbi__get8(s) != 'M') return 0; + stbi__get32le(s); // discard filesize + stbi__get16le(s); // discard reserved + stbi__get16le(s); // discard reserved + stbi__get32le(s); // discard data offset + sz = stbi__get32le(s); + r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124); + return r; +} + +static int stbi__bmp_test(stbi__context *s) +{ + int r = stbi__bmp_test_raw(s); + stbi__rewind(s); + return r; +} + + +// returns 0..31 for the highest set bit +static int stbi__high_bit(unsigned int z) +{ + int n=0; + if (z == 0) return -1; + if (z >= 0x10000) { n += 16; z >>= 16; } + if (z >= 0x00100) { n += 8; z >>= 8; } + if (z >= 0x00010) { n += 4; z >>= 4; } + if (z >= 0x00004) { n += 2; z >>= 2; } + if (z >= 0x00002) { n += 1;/* >>= 1;*/ } + return n; +} + +static int stbi__bitcount(unsigned int a) +{ + a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 + a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4 + a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits + a = (a + (a >> 8)); // max 16 per 8 bits + a = (a + (a >> 16)); // max 32 per 8 bits + return a & 0xff; +} + +// extract an arbitrarily-aligned N-bit value (N=bits) +// from v, and then make it 8-bits long and fractionally +// extend it to full full range. +static int stbi__shiftsigned(unsigned int v, int shift, int bits) +{ + static unsigned int mul_table[9] = { + 0, + 0xff/*0b11111111*/, 0x55/*0b01010101*/, 0x49/*0b01001001*/, 0x11/*0b00010001*/, + 0x21/*0b00100001*/, 0x41/*0b01000001*/, 0x81/*0b10000001*/, 0x01/*0b00000001*/, + }; + static unsigned int shift_table[9] = { + 0, 0,0,1,0,2,4,6,0, + }; + if (shift < 0) + v <<= -shift; + else + v >>= shift; + STBI_ASSERT(v < 256); + v >>= (8-bits); + STBI_ASSERT(bits >= 0 && bits <= 8); + return (int) ((unsigned) v * mul_table[bits]) >> shift_table[bits]; +} + +typedef struct +{ + int bpp, offset, hsz; + unsigned int mr,mg,mb,ma, all_a; + int extra_read; +} stbi__bmp_data; + +static int stbi__bmp_set_mask_defaults(stbi__bmp_data *info, int compress) +{ + // BI_BITFIELDS specifies masks explicitly, don't override + if (compress == 3) + return 1; + + if (compress == 0) { + if (info->bpp == 16) { + info->mr = 31u << 10; + info->mg = 31u << 5; + info->mb = 31u << 0; + } else if (info->bpp == 32) { + info->mr = 0xffu << 16; + info->mg = 0xffu << 8; + info->mb = 0xffu << 0; + info->ma = 0xffu << 24; + info->all_a = 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0 + } else { + // otherwise, use defaults, which is all-0 + info->mr = info->mg = info->mb = info->ma = 0; + } + return 1; + } + return 0; // error +} + +static void *stbi__bmp_parse_header(stbi__context *s, stbi__bmp_data *info) +{ + int hsz; + if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') return stbi__errpuc("not BMP", "Corrupt BMP"); + stbi__get32le(s); // discard filesize + stbi__get16le(s); // discard reserved + stbi__get16le(s); // discard reserved + info->offset = stbi__get32le(s); + info->hsz = hsz = stbi__get32le(s); + info->mr = info->mg = info->mb = info->ma = 0; + info->extra_read = 14; + + if (info->offset < 0) return stbi__errpuc("bad BMP", "bad BMP"); + + if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) return stbi__errpuc("unknown BMP", "BMP type not supported: unknown"); + if (hsz == 12) { + s->img_x = stbi__get16le(s); + s->img_y = stbi__get16le(s); + } else { + s->img_x = stbi__get32le(s); + s->img_y = stbi__get32le(s); + } + if (stbi__get16le(s) != 1) return stbi__errpuc("bad BMP", "bad BMP"); + info->bpp = stbi__get16le(s); + if (hsz != 12) { + int compress = stbi__get32le(s); + if (compress == 1 || compress == 2) return stbi__errpuc("BMP RLE", "BMP type not supported: RLE"); + if (compress >= 4) return stbi__errpuc("BMP JPEG/PNG", "BMP type not supported: unsupported compression"); // this includes PNG/JPEG modes + if (compress == 3 && info->bpp != 16 && info->bpp != 32) return stbi__errpuc("bad BMP", "bad BMP"); // bitfields requires 16 or 32 bits/pixel + stbi__get32le(s); // discard sizeof + stbi__get32le(s); // discard hres + stbi__get32le(s); // discard vres + stbi__get32le(s); // discard colorsused + stbi__get32le(s); // discard max important + if (hsz == 40 || hsz == 56) { + if (hsz == 56) { + stbi__get32le(s); + stbi__get32le(s); + stbi__get32le(s); + stbi__get32le(s); + } + if (info->bpp == 16 || info->bpp == 32) { + if (compress == 0) { + stbi__bmp_set_mask_defaults(info, compress); + } else if (compress == 3) { + info->mr = stbi__get32le(s); + info->mg = stbi__get32le(s); + info->mb = stbi__get32le(s); + info->extra_read += 12; + // not documented, but generated by photoshop and handled by mspaint + if (info->mr == info->mg && info->mg == info->mb) { + // ?!?!? + return stbi__errpuc("bad BMP", "bad BMP"); + } + } else + return stbi__errpuc("bad BMP", "bad BMP"); + } + } else { + // V4/V5 header + int i; + if (hsz != 108 && hsz != 124) + return stbi__errpuc("bad BMP", "bad BMP"); + info->mr = stbi__get32le(s); + info->mg = stbi__get32le(s); + info->mb = stbi__get32le(s); + info->ma = stbi__get32le(s); + if (compress != 3) // override mr/mg/mb unless in BI_BITFIELDS mode, as per docs + stbi__bmp_set_mask_defaults(info, compress); + stbi__get32le(s); // discard color space + for (i=0; i < 12; ++i) + stbi__get32le(s); // discard color space parameters + if (hsz == 124) { + stbi__get32le(s); // discard rendering intent + stbi__get32le(s); // discard offset of profile data + stbi__get32le(s); // discard size of profile data + stbi__get32le(s); // discard reserved + } + } + } + return (void *) 1; +} + + +static void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi_uc *out; + unsigned int mr=0,mg=0,mb=0,ma=0, all_a; + stbi_uc pal[256][4]; + int psize=0,i,j,width; + int flip_vertically, pad, target; + stbi__bmp_data info; + STBI_NOTUSED(ri); + + info.all_a = 255; + if (stbi__bmp_parse_header(s, &info) == NULL) + return NULL; // error code already set + + flip_vertically = ((int) s->img_y) > 0; + s->img_y = abs((int) s->img_y); + + if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + + mr = info.mr; + mg = info.mg; + mb = info.mb; + ma = info.ma; + all_a = info.all_a; + + if (info.hsz == 12) { + if (info.bpp < 24) + psize = (info.offset - info.extra_read - 24) / 3; + } else { + if (info.bpp < 16) + psize = (info.offset - info.extra_read - info.hsz) >> 2; + } + if (psize == 0) { + // accept some number of extra bytes after the header, but if the offset points either to before + // the header ends or implies a large amount of extra data, reject the file as malformed + int bytes_read_so_far = s->callback_already_read + (int)(s->img_buffer - s->img_buffer_original); + int header_limit = 1024; // max we actually read is below 256 bytes currently. + int extra_data_limit = 256*4; // what ordinarily goes here is a palette; 256 entries*4 bytes is its max size. + if (bytes_read_so_far <= 0 || bytes_read_so_far > header_limit) { + return stbi__errpuc("bad header", "Corrupt BMP"); + } + // we established that bytes_read_so_far is positive and sensible. + // the first half of this test rejects offsets that are either too small positives, or + // negative, and guarantees that info.offset >= bytes_read_so_far > 0. this in turn + // ensures the number computed in the second half of the test can't overflow. + if (info.offset < bytes_read_so_far || info.offset - bytes_read_so_far > extra_data_limit) { + return stbi__errpuc("bad offset", "Corrupt BMP"); + } else { + stbi__skip(s, info.offset - bytes_read_so_far); + } + } + + if (info.bpp == 24 && ma == 0xff000000) + s->img_n = 3; + else + s->img_n = ma ? 4 : 3; + if (req_comp && req_comp >= 3) // we can directly decode 3 or 4 + target = req_comp; + else + target = s->img_n; // if they want monochrome, we'll post-convert + + // sanity-check size + if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0)) + return stbi__errpuc("too large", "Corrupt BMP"); + + out = (stbi_uc *) stbi__malloc_mad3(target, s->img_x, s->img_y, 0); + if (!out) return stbi__errpuc("outofmem", "Out of memory"); + if (info.bpp < 16) { + int z=0; + if (psize == 0 || psize > 256) { STBI_FREE(out); return stbi__errpuc("invalid", "Corrupt BMP"); } + for (i=0; i < psize; ++i) { + pal[i][2] = stbi__get8(s); + pal[i][1] = stbi__get8(s); + pal[i][0] = stbi__get8(s); + if (info.hsz != 12) stbi__get8(s); + pal[i][3] = 255; + } + stbi__skip(s, info.offset - info.extra_read - info.hsz - psize * (info.hsz == 12 ? 3 : 4)); + if (info.bpp == 1) width = (s->img_x + 7) >> 3; + else if (info.bpp == 4) width = (s->img_x + 1) >> 1; + else if (info.bpp == 8) width = s->img_x; + else { STBI_FREE(out); return stbi__errpuc("bad bpp", "Corrupt BMP"); } + pad = (-width)&3; + if (info.bpp == 1) { + for (j=0; j < (int) s->img_y; ++j) { + int bit_offset = 7, v = stbi__get8(s); + for (i=0; i < (int) s->img_x; ++i) { + int color = (v>>bit_offset)&0x1; + out[z++] = pal[color][0]; + out[z++] = pal[color][1]; + out[z++] = pal[color][2]; + if (target == 4) out[z++] = 255; + if (i+1 == (int) s->img_x) break; + if((--bit_offset) < 0) { + bit_offset = 7; + v = stbi__get8(s); + } + } + stbi__skip(s, pad); + } + } else { + for (j=0; j < (int) s->img_y; ++j) { + for (i=0; i < (int) s->img_x; i += 2) { + int v=stbi__get8(s),v2=0; + if (info.bpp == 4) { + v2 = v & 15; + v >>= 4; + } + out[z++] = pal[v][0]; + out[z++] = pal[v][1]; + out[z++] = pal[v][2]; + if (target == 4) out[z++] = 255; + if (i+1 == (int) s->img_x) break; + v = (info.bpp == 8) ? stbi__get8(s) : v2; + out[z++] = pal[v][0]; + out[z++] = pal[v][1]; + out[z++] = pal[v][2]; + if (target == 4) out[z++] = 255; + } + stbi__skip(s, pad); + } + } + } else { + int rshift=0,gshift=0,bshift=0,ashift=0,rcount=0,gcount=0,bcount=0,acount=0; + int z = 0; + int easy=0; + stbi__skip(s, info.offset - info.extra_read - info.hsz); + if (info.bpp == 24) width = 3 * s->img_x; + else if (info.bpp == 16) width = 2*s->img_x; + else /* bpp = 32 and pad = 0 */ width=0; + pad = (-width) & 3; + if (info.bpp == 24) { + easy = 1; + } else if (info.bpp == 32) { + if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000) + easy = 2; + } + if (!easy) { + if (!mr || !mg || !mb) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } + // right shift amt to put high bit in position #7 + rshift = stbi__high_bit(mr)-7; rcount = stbi__bitcount(mr); + gshift = stbi__high_bit(mg)-7; gcount = stbi__bitcount(mg); + bshift = stbi__high_bit(mb)-7; bcount = stbi__bitcount(mb); + ashift = stbi__high_bit(ma)-7; acount = stbi__bitcount(ma); + if (rcount > 8 || gcount > 8 || bcount > 8 || acount > 8) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } + } + for (j=0; j < (int) s->img_y; ++j) { + if (easy) { + for (i=0; i < (int) s->img_x; ++i) { + unsigned char a; + out[z+2] = stbi__get8(s); + out[z+1] = stbi__get8(s); + out[z+0] = stbi__get8(s); + z += 3; + a = (easy == 2 ? stbi__get8(s) : 255); + all_a |= a; + if (target == 4) out[z++] = a; + } + } else { + int bpp = info.bpp; + for (i=0; i < (int) s->img_x; ++i) { + stbi__uint32 v = (bpp == 16 ? (stbi__uint32) stbi__get16le(s) : stbi__get32le(s)); + unsigned int a; + out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mr, rshift, rcount)); + out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mg, gshift, gcount)); + out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mb, bshift, bcount)); + a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255); + all_a |= a; + if (target == 4) out[z++] = STBI__BYTECAST(a); + } + } + stbi__skip(s, pad); + } + } + + // if alpha channel is all 0s, replace with all 255s + if (target == 4 && all_a == 0) + for (i=4*s->img_x*s->img_y-1; i >= 0; i -= 4) + out[i] = 255; + + if (flip_vertically) { + stbi_uc t; + for (j=0; j < (int) s->img_y>>1; ++j) { + stbi_uc *p1 = out + j *s->img_x*target; + stbi_uc *p2 = out + (s->img_y-1-j)*s->img_x*target; + for (i=0; i < (int) s->img_x*target; ++i) { + t = p1[i]; p1[i] = p2[i]; p2[i] = t; + } + } + } + + if (req_comp && req_comp != target) { + out = stbi__convert_format(out, target, req_comp, s->img_x, s->img_y); + if (out == NULL) return out; // stbi__convert_format frees input on failure + } + + *x = s->img_x; + *y = s->img_y; + if (comp) *comp = s->img_n; + return out; +} +#endif + +// Targa Truevision - TGA +// by Jonathan Dummer +#ifndef STBI_NO_TGA +// returns STBI_rgb or whatever, 0 on error +static int stbi__tga_get_comp(int bits_per_pixel, int is_grey, int* is_rgb16) +{ + // only RGB or RGBA (incl. 16bit) or grey allowed + if (is_rgb16) *is_rgb16 = 0; + switch(bits_per_pixel) { + case 8: return STBI_grey; + case 16: if(is_grey) return STBI_grey_alpha; + // fallthrough + case 15: if(is_rgb16) *is_rgb16 = 1; + return STBI_rgb; + case 24: // fallthrough + case 32: return bits_per_pixel/8; + default: return 0; + } +} + +static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp) +{ + int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp; + int sz, tga_colormap_type; + stbi__get8(s); // discard Offset + tga_colormap_type = stbi__get8(s); // colormap type + if( tga_colormap_type > 1 ) { + stbi__rewind(s); + return 0; // only RGB or indexed allowed + } + tga_image_type = stbi__get8(s); // image type + if ( tga_colormap_type == 1 ) { // colormapped (paletted) image + if (tga_image_type != 1 && tga_image_type != 9) { + stbi__rewind(s); + return 0; + } + stbi__skip(s,4); // skip index of first colormap entry and number of entries + sz = stbi__get8(s); // check bits per palette color entry + if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) { + stbi__rewind(s); + return 0; + } + stbi__skip(s,4); // skip image x and y origin + tga_colormap_bpp = sz; + } else { // "normal" image w/o colormap - only RGB or grey allowed, +/- RLE + if ( (tga_image_type != 2) && (tga_image_type != 3) && (tga_image_type != 10) && (tga_image_type != 11) ) { + stbi__rewind(s); + return 0; // only RGB or grey allowed, +/- RLE + } + stbi__skip(s,9); // skip colormap specification and image x/y origin + tga_colormap_bpp = 0; + } + tga_w = stbi__get16le(s); + if( tga_w < 1 ) { + stbi__rewind(s); + return 0; // test width + } + tga_h = stbi__get16le(s); + if( tga_h < 1 ) { + stbi__rewind(s); + return 0; // test height + } + tga_bits_per_pixel = stbi__get8(s); // bits per pixel + stbi__get8(s); // ignore alpha bits + if (tga_colormap_bpp != 0) { + if((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16)) { + // when using a colormap, tga_bits_per_pixel is the size of the indexes + // I don't think anything but 8 or 16bit indexes makes sense + stbi__rewind(s); + return 0; + } + tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL); + } else { + tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL); + } + if(!tga_comp) { + stbi__rewind(s); + return 0; + } + if (x) *x = tga_w; + if (y) *y = tga_h; + if (comp) *comp = tga_comp; + return 1; // seems to have passed everything +} + +static int stbi__tga_test(stbi__context *s) +{ + int res = 0; + int sz, tga_color_type; + stbi__get8(s); // discard Offset + tga_color_type = stbi__get8(s); // color type + if ( tga_color_type > 1 ) goto errorEnd; // only RGB or indexed allowed + sz = stbi__get8(s); // image type + if ( tga_color_type == 1 ) { // colormapped (paletted) image + if (sz != 1 && sz != 9) goto errorEnd; // colortype 1 demands image type 1 or 9 + stbi__skip(s,4); // skip index of first colormap entry and number of entries + sz = stbi__get8(s); // check bits per palette color entry + if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) goto errorEnd; + stbi__skip(s,4); // skip image x and y origin + } else { // "normal" image w/o colormap + if ( (sz != 2) && (sz != 3) && (sz != 10) && (sz != 11) ) goto errorEnd; // only RGB or grey allowed, +/- RLE + stbi__skip(s,9); // skip colormap specification and image x/y origin + } + if ( stbi__get16le(s) < 1 ) goto errorEnd; // test width + if ( stbi__get16le(s) < 1 ) goto errorEnd; // test height + sz = stbi__get8(s); // bits per pixel + if ( (tga_color_type == 1) && (sz != 8) && (sz != 16) ) goto errorEnd; // for colormapped images, bpp is size of an index + if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) goto errorEnd; + + res = 1; // if we got this far, everything's good and we can return 1 instead of 0 + +errorEnd: + stbi__rewind(s); + return res; +} + +// read 16bit value and convert to 24bit RGB +static void stbi__tga_read_rgb16(stbi__context *s, stbi_uc* out) +{ + stbi__uint16 px = (stbi__uint16)stbi__get16le(s); + stbi__uint16 fiveBitMask = 31; + // we have 3 channels with 5bits each + int r = (px >> 10) & fiveBitMask; + int g = (px >> 5) & fiveBitMask; + int b = px & fiveBitMask; + // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later + out[0] = (stbi_uc)((r * 255)/31); + out[1] = (stbi_uc)((g * 255)/31); + out[2] = (stbi_uc)((b * 255)/31); + + // some people claim that the most significant bit might be used for alpha + // (possibly if an alpha-bit is set in the "image descriptor byte") + // but that only made 16bit test images completely translucent.. + // so let's treat all 15 and 16bit TGAs as RGB with no alpha. +} + +static void *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + // read in the TGA header stuff + int tga_offset = stbi__get8(s); + int tga_indexed = stbi__get8(s); + int tga_image_type = stbi__get8(s); + int tga_is_RLE = 0; + int tga_palette_start = stbi__get16le(s); + int tga_palette_len = stbi__get16le(s); + int tga_palette_bits = stbi__get8(s); + int tga_x_origin = stbi__get16le(s); + int tga_y_origin = stbi__get16le(s); + int tga_width = stbi__get16le(s); + int tga_height = stbi__get16le(s); + int tga_bits_per_pixel = stbi__get8(s); + int tga_comp, tga_rgb16=0; + int tga_inverted = stbi__get8(s); + // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?) + // image data + unsigned char *tga_data; + unsigned char *tga_palette = NULL; + int i, j; + unsigned char raw_data[4] = {0}; + int RLE_count = 0; + int RLE_repeating = 0; + int read_next_pixel = 1; + STBI_NOTUSED(ri); + STBI_NOTUSED(tga_x_origin); // @TODO + STBI_NOTUSED(tga_y_origin); // @TODO + + if (tga_height > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + if (tga_width > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + + // do a tiny bit of precessing + if ( tga_image_type >= 8 ) + { + tga_image_type -= 8; + tga_is_RLE = 1; + } + tga_inverted = 1 - ((tga_inverted >> 5) & 1); + + // If I'm paletted, then I'll use the number of bits from the palette + if ( tga_indexed ) tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16); + else tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16); + + if(!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency + return stbi__errpuc("bad format", "Can't find out TGA pixelformat"); + + // tga info + *x = tga_width; + *y = tga_height; + if (comp) *comp = tga_comp; + + if (!stbi__mad3sizes_valid(tga_width, tga_height, tga_comp, 0)) + return stbi__errpuc("too large", "Corrupt TGA"); + + tga_data = (unsigned char*)stbi__malloc_mad3(tga_width, tga_height, tga_comp, 0); + if (!tga_data) return stbi__errpuc("outofmem", "Out of memory"); + + // skip to the data's starting position (offset usually = 0) + stbi__skip(s, tga_offset ); + + if ( !tga_indexed && !tga_is_RLE && !tga_rgb16 ) { + for (i=0; i < tga_height; ++i) { + int row = tga_inverted ? tga_height -i - 1 : i; + stbi_uc *tga_row = tga_data + row*tga_width*tga_comp; + stbi__getn(s, tga_row, tga_width * tga_comp); + } + } else { + // do I need to load a palette? + if ( tga_indexed) + { + if (tga_palette_len == 0) { /* you have to have at least one entry! */ + STBI_FREE(tga_data); + return stbi__errpuc("bad palette", "Corrupt TGA"); + } + + // any data to skip? (offset usually = 0) + stbi__skip(s, tga_palette_start ); + // load the palette + tga_palette = (unsigned char*)stbi__malloc_mad2(tga_palette_len, tga_comp, 0); + if (!tga_palette) { + STBI_FREE(tga_data); + return stbi__errpuc("outofmem", "Out of memory"); + } + if (tga_rgb16) { + stbi_uc *pal_entry = tga_palette; + STBI_ASSERT(tga_comp == STBI_rgb); + for (i=0; i < tga_palette_len; ++i) { + stbi__tga_read_rgb16(s, pal_entry); + pal_entry += tga_comp; + } + } else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) { + STBI_FREE(tga_data); + STBI_FREE(tga_palette); + return stbi__errpuc("bad palette", "Corrupt TGA"); + } + } + // load the data + for (i=0; i < tga_width * tga_height; ++i) + { + // if I'm in RLE mode, do I need to get a RLE stbi__pngchunk? + if ( tga_is_RLE ) + { + if ( RLE_count == 0 ) + { + // yep, get the next byte as a RLE command + int RLE_cmd = stbi__get8(s); + RLE_count = 1 + (RLE_cmd & 127); + RLE_repeating = RLE_cmd >> 7; + read_next_pixel = 1; + } else if ( !RLE_repeating ) + { + read_next_pixel = 1; + } + } else + { + read_next_pixel = 1; + } + // OK, if I need to read a pixel, do it now + if ( read_next_pixel ) + { + // load however much data we did have + if ( tga_indexed ) + { + // read in index, then perform the lookup + int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : stbi__get16le(s); + if ( pal_idx >= tga_palette_len ) { + // invalid index + pal_idx = 0; + } + pal_idx *= tga_comp; + for (j = 0; j < tga_comp; ++j) { + raw_data[j] = tga_palette[pal_idx+j]; + } + } else if(tga_rgb16) { + STBI_ASSERT(tga_comp == STBI_rgb); + stbi__tga_read_rgb16(s, raw_data); + } else { + // read in the data raw + for (j = 0; j < tga_comp; ++j) { + raw_data[j] = stbi__get8(s); + } + } + // clear the reading flag for the next pixel + read_next_pixel = 0; + } // end of reading a pixel + + // copy data + for (j = 0; j < tga_comp; ++j) + tga_data[i*tga_comp+j] = raw_data[j]; + + // in case we're in RLE mode, keep counting down + --RLE_count; + } + // do I need to invert the image? + if ( tga_inverted ) + { + for (j = 0; j*2 < tga_height; ++j) + { + int index1 = j * tga_width * tga_comp; + int index2 = (tga_height - 1 - j) * tga_width * tga_comp; + for (i = tga_width * tga_comp; i > 0; --i) + { + unsigned char temp = tga_data[index1]; + tga_data[index1] = tga_data[index2]; + tga_data[index2] = temp; + ++index1; + ++index2; + } + } + } + // clear my palette, if I had one + if ( tga_palette != NULL ) + { + STBI_FREE( tga_palette ); + } + } + + // swap RGB - if the source data was RGB16, it already is in the right order + if (tga_comp >= 3 && !tga_rgb16) + { + unsigned char* tga_pixel = tga_data; + for (i=0; i < tga_width * tga_height; ++i) + { + unsigned char temp = tga_pixel[0]; + tga_pixel[0] = tga_pixel[2]; + tga_pixel[2] = temp; + tga_pixel += tga_comp; + } + } + + // convert to target component count + if (req_comp && req_comp != tga_comp) + tga_data = stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height); + + // the things I do to get rid of an error message, and yet keep + // Microsoft's C compilers happy... [8^( + tga_palette_start = tga_palette_len = tga_palette_bits = + tga_x_origin = tga_y_origin = 0; + STBI_NOTUSED(tga_palette_start); + // OK, done + return tga_data; +} +#endif + +// ************************************************************************************************* +// Photoshop PSD loader -- PD by Thatcher Ulrich, integration by Nicolas Schulz, tweaked by STB + +#ifndef STBI_NO_PSD +static int stbi__psd_test(stbi__context *s) +{ + int r = (stbi__get32be(s) == 0x38425053); + stbi__rewind(s); + return r; +} + +static int stbi__psd_decode_rle(stbi__context *s, stbi_uc *p, int pixelCount) +{ + int count, nleft, len; + + count = 0; + while ((nleft = pixelCount - count) > 0) { + len = stbi__get8(s); + if (len == 128) { + // No-op. + } else if (len < 128) { + // Copy next len+1 bytes literally. + len++; + if (len > nleft) return 0; // corrupt data + count += len; + while (len) { + *p = stbi__get8(s); + p += 4; + len--; + } + } else if (len > 128) { + stbi_uc val; + // Next -len+1 bytes in the dest are replicated from next source byte. + // (Interpret len as a negative 8-bit int.) + len = 257 - len; + if (len > nleft) return 0; // corrupt data + val = stbi__get8(s); + count += len; + while (len) { + *p = val; + p += 4; + len--; + } + } + } + + return 1; +} + +static void *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc) +{ + int pixelCount; + int channelCount, compression; + int channel, i; + int bitdepth; + int w,h; + stbi_uc *out; + STBI_NOTUSED(ri); + + // Check identifier + if (stbi__get32be(s) != 0x38425053) // "8BPS" + return stbi__errpuc("not PSD", "Corrupt PSD image"); + + // Check file type version. + if (stbi__get16be(s) != 1) + return stbi__errpuc("wrong version", "Unsupported version of PSD image"); + + // Skip 6 reserved bytes. + stbi__skip(s, 6 ); + + // Read the number of channels (R, G, B, A, etc). + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) + return stbi__errpuc("wrong channel count", "Unsupported number of channels in PSD image"); + + // Read the rows and columns of the image. + h = stbi__get32be(s); + w = stbi__get32be(s); + + if (h > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + if (w > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + + // Make sure the depth is 8 bits. + bitdepth = stbi__get16be(s); + if (bitdepth != 8 && bitdepth != 16) + return stbi__errpuc("unsupported bit depth", "PSD bit depth is not 8 or 16 bit"); + + // Make sure the color mode is RGB. + // Valid options are: + // 0: Bitmap + // 1: Grayscale + // 2: Indexed color + // 3: RGB color + // 4: CMYK color + // 7: Multichannel + // 8: Duotone + // 9: Lab color + if (stbi__get16be(s) != 3) + return stbi__errpuc("wrong color format", "PSD is not in RGB color format"); + + // Skip the Mode Data. (It's the palette for indexed color; other info for other modes.) + stbi__skip(s,stbi__get32be(s) ); + + // Skip the image resources. (resolution, pen tool paths, etc) + stbi__skip(s, stbi__get32be(s) ); + + // Skip the reserved data. + stbi__skip(s, stbi__get32be(s) ); + + // Find out if the data is compressed. + // Known values: + // 0: no compression + // 1: RLE compressed + compression = stbi__get16be(s); + if (compression > 1) + return stbi__errpuc("bad compression", "PSD has an unknown compression format"); + + // Check size + if (!stbi__mad3sizes_valid(4, w, h, 0)) + return stbi__errpuc("too large", "Corrupt PSD"); + + // Create the destination image. + + if (!compression && bitdepth == 16 && bpc == 16) { + out = (stbi_uc *) stbi__malloc_mad3(8, w, h, 0); + ri->bits_per_channel = 16; + } else + out = (stbi_uc *) stbi__malloc(4 * w*h); + + if (!out) return stbi__errpuc("outofmem", "Out of memory"); + pixelCount = w*h; + + // Initialize the data to zero. + //memset( out, 0, pixelCount * 4 ); + + // Finally, the image data. + if (compression) { + // RLE as used by .PSD and .TIFF + // Loop until you get the number of unpacked bytes you are expecting: + // Read the next source byte into n. + // If n is between 0 and 127 inclusive, copy the next n+1 bytes literally. + // Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times. + // Else if n is 128, noop. + // Endloop + + // The RLE-compressed data is preceded by a 2-byte data count for each row in the data, + // which we're going to just skip. + stbi__skip(s, h * channelCount * 2 ); + + // Read the RLE data by channel. + for (channel = 0; channel < 4; channel++) { + stbi_uc *p; + + p = out+channel; + if (channel >= channelCount) { + // Fill this channel with default data. + for (i = 0; i < pixelCount; i++, p += 4) + *p = (channel == 3 ? 255 : 0); + } else { + // Read the RLE data. + if (!stbi__psd_decode_rle(s, p, pixelCount)) { + STBI_FREE(out); + return stbi__errpuc("corrupt", "bad RLE data"); + } + } + } + + } else { + // We're at the raw image data. It's each channel in order (Red, Green, Blue, Alpha, ...) + // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image. + + // Read the data by channel. + for (channel = 0; channel < 4; channel++) { + if (channel >= channelCount) { + // Fill this channel with default data. + if (bitdepth == 16 && bpc == 16) { + stbi__uint16 *q = ((stbi__uint16 *) out) + channel; + stbi__uint16 val = channel == 3 ? 65535 : 0; + for (i = 0; i < pixelCount; i++, q += 4) + *q = val; + } else { + stbi_uc *p = out+channel; + stbi_uc val = channel == 3 ? 255 : 0; + for (i = 0; i < pixelCount; i++, p += 4) + *p = val; + } + } else { + if (ri->bits_per_channel == 16) { // output bpc + stbi__uint16 *q = ((stbi__uint16 *) out) + channel; + for (i = 0; i < pixelCount; i++, q += 4) + *q = (stbi__uint16) stbi__get16be(s); + } else { + stbi_uc *p = out+channel; + if (bitdepth == 16) { // input bpc + for (i = 0; i < pixelCount; i++, p += 4) + *p = (stbi_uc) (stbi__get16be(s) >> 8); + } else { + for (i = 0; i < pixelCount; i++, p += 4) + *p = stbi__get8(s); + } + } + } + } + } + + // remove weird white matte from PSD + if (channelCount >= 4) { + if (ri->bits_per_channel == 16) { + for (i=0; i < w*h; ++i) { + stbi__uint16 *pixel = (stbi__uint16 *) out + 4*i; + if (pixel[3] != 0 && pixel[3] != 65535) { + float a = pixel[3] / 65535.0f; + float ra = 1.0f / a; + float inv_a = 65535.0f * (1 - ra); + pixel[0] = (stbi__uint16) (pixel[0]*ra + inv_a); + pixel[1] = (stbi__uint16) (pixel[1]*ra + inv_a); + pixel[2] = (stbi__uint16) (pixel[2]*ra + inv_a); + } + } + } else { + for (i=0; i < w*h; ++i) { + unsigned char *pixel = out + 4*i; + if (pixel[3] != 0 && pixel[3] != 255) { + float a = pixel[3] / 255.0f; + float ra = 1.0f / a; + float inv_a = 255.0f * (1 - ra); + pixel[0] = (unsigned char) (pixel[0]*ra + inv_a); + pixel[1] = (unsigned char) (pixel[1]*ra + inv_a); + pixel[2] = (unsigned char) (pixel[2]*ra + inv_a); + } + } + } + } + + // convert to desired output format + if (req_comp && req_comp != 4) { + if (ri->bits_per_channel == 16) + out = (stbi_uc *) stbi__convert_format16((stbi__uint16 *) out, 4, req_comp, w, h); + else + out = stbi__convert_format(out, 4, req_comp, w, h); + if (out == NULL) return out; // stbi__convert_format frees input on failure + } + + if (comp) *comp = 4; + *y = h; + *x = w; + + return out; +} +#endif + +// ************************************************************************************************* +// Softimage PIC loader +// by Tom Seddon +// +// See http://softimage.wiki.softimage.com/index.php/INFO:_PIC_file_format +// See http://ozviz.wasp.uwa.edu.au/~pbourke/dataformats/softimagepic/ + +#ifndef STBI_NO_PIC +static int stbi__pic_is4(stbi__context *s,const char *str) +{ + int i; + for (i=0; i<4; ++i) + if (stbi__get8(s) != (stbi_uc)str[i]) + return 0; + + return 1; +} + +static int stbi__pic_test_core(stbi__context *s) +{ + int i; + + if (!stbi__pic_is4(s,"\x53\x80\xF6\x34")) + return 0; + + for(i=0;i<84;++i) + stbi__get8(s); + + if (!stbi__pic_is4(s,"PICT")) + return 0; + + return 1; +} + +typedef struct +{ + stbi_uc size,type,channel; +} stbi__pic_packet; + +static stbi_uc *stbi__readval(stbi__context *s, int channel, stbi_uc *dest) +{ + int mask=0x80, i; + + for (i=0; i<4; ++i, mask>>=1) { + if (channel & mask) { + if (stbi__at_eof(s)) return stbi__errpuc("bad file","PIC file too short"); + dest[i]=stbi__get8(s); + } + } + + return dest; +} + +static void stbi__copyval(int channel,stbi_uc *dest,const stbi_uc *src) +{ + int mask=0x80,i; + + for (i=0;i<4; ++i, mask>>=1) + if (channel&mask) + dest[i]=src[i]; +} + +static stbi_uc *stbi__pic_load_core(stbi__context *s,int width,int height,int *comp, stbi_uc *result) +{ + int act_comp=0,num_packets=0,y,chained; + stbi__pic_packet packets[10]; + + // this will (should...) cater for even some bizarre stuff like having data + // for the same channel in multiple packets. + do { + stbi__pic_packet *packet; + + if (num_packets==sizeof(packets)/sizeof(packets[0])) + return stbi__errpuc("bad format","too many packets"); + + packet = &packets[num_packets++]; + + chained = stbi__get8(s); + packet->size = stbi__get8(s); + packet->type = stbi__get8(s); + packet->channel = stbi__get8(s); + + act_comp |= packet->channel; + + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (reading packets)"); + if (packet->size != 8) return stbi__errpuc("bad format","packet isn't 8bpp"); + } while (chained); + + *comp = (act_comp & 0x10 ? 4 : 3); // has alpha channel? + + for(y=0; y<height; ++y) { + int packet_idx; + + for(packet_idx=0; packet_idx < num_packets; ++packet_idx) { + stbi__pic_packet *packet = &packets[packet_idx]; + stbi_uc *dest = result+y*width*4; + + switch (packet->type) { + default: + return stbi__errpuc("bad format","packet has bad compression type"); + + case 0: {//uncompressed + int x; + + for(x=0;x<width;++x, dest+=4) + if (!stbi__readval(s,packet->channel,dest)) + return 0; + break; + } + + case 1://Pure RLE + { + int left=width, i; + + while (left>0) { + stbi_uc count,value[4]; + + count=stbi__get8(s); + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (pure read count)"); + + if (count > left) + count = (stbi_uc) left; + + if (!stbi__readval(s,packet->channel,value)) return 0; + + for(i=0; i<count; ++i,dest+=4) + stbi__copyval(packet->channel,dest,value); + left -= count; + } + } + break; + + case 2: {//Mixed RLE + int left=width; + while (left>0) { + int count = stbi__get8(s), i; + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (mixed read count)"); + + if (count >= 128) { // Repeated + stbi_uc value[4]; + + if (count==128) + count = stbi__get16be(s); + else + count -= 127; + if (count > left) + return stbi__errpuc("bad file","scanline overrun"); + + if (!stbi__readval(s,packet->channel,value)) + return 0; + + for(i=0;i<count;++i, dest += 4) + stbi__copyval(packet->channel,dest,value); + } else { // Raw + ++count; + if (count>left) return stbi__errpuc("bad file","scanline overrun"); + + for(i=0;i<count;++i, dest+=4) + if (!stbi__readval(s,packet->channel,dest)) + return 0; + } + left-=count; + } + break; + } + } + } + } + + return result; +} + +static void *stbi__pic_load(stbi__context *s,int *px,int *py,int *comp,int req_comp, stbi__result_info *ri) +{ + stbi_uc *result; + int i, x,y, internal_comp; + STBI_NOTUSED(ri); + + if (!comp) comp = &internal_comp; + + for (i=0; i<92; ++i) + stbi__get8(s); + + x = stbi__get16be(s); + y = stbi__get16be(s); + + if (y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + if (x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (pic header)"); + if (!stbi__mad3sizes_valid(x, y, 4, 0)) return stbi__errpuc("too large", "PIC image too large to decode"); + + stbi__get32be(s); //skip `ratio' + stbi__get16be(s); //skip `fields' + stbi__get16be(s); //skip `pad' + + // intermediate buffer is RGBA + result = (stbi_uc *) stbi__malloc_mad3(x, y, 4, 0); + if (!result) return stbi__errpuc("outofmem", "Out of memory"); + memset(result, 0xff, x*y*4); + + if (!stbi__pic_load_core(s,x,y,comp, result)) { + STBI_FREE(result); + result=0; + } + *px = x; + *py = y; + if (req_comp == 0) req_comp = *comp; + result=stbi__convert_format(result,4,req_comp,x,y); + + return result; +} + +static int stbi__pic_test(stbi__context *s) +{ + int r = stbi__pic_test_core(s); + stbi__rewind(s); + return r; +} +#endif + +// ************************************************************************************************* +// GIF loader -- public domain by Jean-Marc Lienher -- simplified/shrunk by stb + +#ifndef STBI_NO_GIF +typedef struct +{ + stbi__int16 prefix; + stbi_uc first; + stbi_uc suffix; +} stbi__gif_lzw; + +typedef struct +{ + int w,h; + stbi_uc *out; // output buffer (always 4 components) + stbi_uc *background; // The current "background" as far as a gif is concerned + stbi_uc *history; + int flags, bgindex, ratio, transparent, eflags; + stbi_uc pal[256][4]; + stbi_uc lpal[256][4]; + stbi__gif_lzw codes[8192]; + stbi_uc *color_table; + int parse, step; + int lflags; + int start_x, start_y; + int max_x, max_y; + int cur_x, cur_y; + int line_size; + int delay; +} stbi__gif; + +static int stbi__gif_test_raw(stbi__context *s) +{ + int sz; + if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') return 0; + sz = stbi__get8(s); + if (sz != '9' && sz != '7') return 0; + if (stbi__get8(s) != 'a') return 0; + return 1; +} + +static int stbi__gif_test(stbi__context *s) +{ + int r = stbi__gif_test_raw(s); + stbi__rewind(s); + return r; +} + +static void stbi__gif_parse_colortable(stbi__context *s, stbi_uc pal[256][4], int num_entries, int transp) +{ + int i; + for (i=0; i < num_entries; ++i) { + pal[i][2] = stbi__get8(s); + pal[i][1] = stbi__get8(s); + pal[i][0] = stbi__get8(s); + pal[i][3] = transp == i ? 0 : 255; + } +} + +static int stbi__gif_header(stbi__context *s, stbi__gif *g, int *comp, int is_info) +{ + stbi_uc version; + if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') + return stbi__err("not GIF", "Corrupt GIF"); + + version = stbi__get8(s); + if (version != '7' && version != '9') return stbi__err("not GIF", "Corrupt GIF"); + if (stbi__get8(s) != 'a') return stbi__err("not GIF", "Corrupt GIF"); + + stbi__g_failure_reason = ""; + g->w = stbi__get16le(s); + g->h = stbi__get16le(s); + g->flags = stbi__get8(s); + g->bgindex = stbi__get8(s); + g->ratio = stbi__get8(s); + g->transparent = -1; + + if (g->w > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); + if (g->h > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); + + if (comp != 0) *comp = 4; // can't actually tell whether it's 3 or 4 until we parse the comments + + if (is_info) return 1; + + if (g->flags & 0x80) + stbi__gif_parse_colortable(s,g->pal, 2 << (g->flags & 7), -1); + + return 1; +} + +static int stbi__gif_info_raw(stbi__context *s, int *x, int *y, int *comp) +{ + stbi__gif* g = (stbi__gif*) stbi__malloc(sizeof(stbi__gif)); + if (!g) return stbi__err("outofmem", "Out of memory"); + if (!stbi__gif_header(s, g, comp, 1)) { + STBI_FREE(g); + stbi__rewind( s ); + return 0; + } + if (x) *x = g->w; + if (y) *y = g->h; + STBI_FREE(g); + return 1; +} + +static void stbi__out_gif_code(stbi__gif *g, stbi__uint16 code) +{ + stbi_uc *p, *c; + int idx; + + // recurse to decode the prefixes, since the linked-list is backwards, + // and working backwards through an interleaved image would be nasty + if (g->codes[code].prefix >= 0) + stbi__out_gif_code(g, g->codes[code].prefix); + + if (g->cur_y >= g->max_y) return; + + idx = g->cur_x + g->cur_y; + p = &g->out[idx]; + g->history[idx / 4] = 1; + + c = &g->color_table[g->codes[code].suffix * 4]; + if (c[3] > 128) { // don't render transparent pixels; + p[0] = c[2]; + p[1] = c[1]; + p[2] = c[0]; + p[3] = c[3]; + } + g->cur_x += 4; + + if (g->cur_x >= g->max_x) { + g->cur_x = g->start_x; + g->cur_y += g->step; + + while (g->cur_y >= g->max_y && g->parse > 0) { + g->step = (1 << g->parse) * g->line_size; + g->cur_y = g->start_y + (g->step >> 1); + --g->parse; + } + } +} + +static stbi_uc *stbi__process_gif_raster(stbi__context *s, stbi__gif *g) +{ + stbi_uc lzw_cs; + stbi__int32 len, init_code; + stbi__uint32 first; + stbi__int32 codesize, codemask, avail, oldcode, bits, valid_bits, clear; + stbi__gif_lzw *p; + + lzw_cs = stbi__get8(s); + if (lzw_cs > 12) return NULL; + clear = 1 << lzw_cs; + first = 1; + codesize = lzw_cs + 1; + codemask = (1 << codesize) - 1; + bits = 0; + valid_bits = 0; + for (init_code = 0; init_code < clear; init_code++) { + g->codes[init_code].prefix = -1; + g->codes[init_code].first = (stbi_uc) init_code; + g->codes[init_code].suffix = (stbi_uc) init_code; + } + + // support no starting clear code + avail = clear+2; + oldcode = -1; + + len = 0; + for(;;) { + if (valid_bits < codesize) { + if (len == 0) { + len = stbi__get8(s); // start new block + if (len == 0) + return g->out; + } + --len; + bits |= (stbi__int32) stbi__get8(s) << valid_bits; + valid_bits += 8; + } else { + stbi__int32 code = bits & codemask; + bits >>= codesize; + valid_bits -= codesize; + // @OPTIMIZE: is there some way we can accelerate the non-clear path? + if (code == clear) { // clear code + codesize = lzw_cs + 1; + codemask = (1 << codesize) - 1; + avail = clear + 2; + oldcode = -1; + first = 0; + } else if (code == clear + 1) { // end of stream code + stbi__skip(s, len); + while ((len = stbi__get8(s)) > 0) + stbi__skip(s,len); + return g->out; + } else if (code <= avail) { + if (first) { + return stbi__errpuc("no clear code", "Corrupt GIF"); + } + + if (oldcode >= 0) { + p = &g->codes[avail++]; + if (avail > 8192) { + return stbi__errpuc("too many codes", "Corrupt GIF"); + } + + p->prefix = (stbi__int16) oldcode; + p->first = g->codes[oldcode].first; + p->suffix = (code == avail) ? p->first : g->codes[code].first; + } else if (code == avail) + return stbi__errpuc("illegal code in raster", "Corrupt GIF"); + + stbi__out_gif_code(g, (stbi__uint16) code); + + if ((avail & codemask) == 0 && avail <= 0x0FFF) { + codesize++; + codemask = (1 << codesize) - 1; + } + + oldcode = code; + } else { + return stbi__errpuc("illegal code in raster", "Corrupt GIF"); + } + } + } +} + +// this function is designed to support animated gifs, although stb_image doesn't support it +// two back is the image from two frames ago, used for a very specific disposal format +static stbi_uc *stbi__gif_load_next(stbi__context *s, stbi__gif *g, int *comp, int req_comp, stbi_uc *two_back) +{ + int dispose; + int first_frame; + int pi; + int pcount; + STBI_NOTUSED(req_comp); + + // on first frame, any non-written pixels get the background colour (non-transparent) + first_frame = 0; + if (g->out == 0) { + if (!stbi__gif_header(s, g, comp,0)) return 0; // stbi__g_failure_reason set by stbi__gif_header + if (!stbi__mad3sizes_valid(4, g->w, g->h, 0)) + return stbi__errpuc("too large", "GIF image is too large"); + pcount = g->w * g->h; + g->out = (stbi_uc *) stbi__malloc(4 * pcount); + g->background = (stbi_uc *) stbi__malloc(4 * pcount); + g->history = (stbi_uc *) stbi__malloc(pcount); + if (!g->out || !g->background || !g->history) + return stbi__errpuc("outofmem", "Out of memory"); + + // image is treated as "transparent" at the start - ie, nothing overwrites the current background; + // background colour is only used for pixels that are not rendered first frame, after that "background" + // color refers to the color that was there the previous frame. + memset(g->out, 0x00, 4 * pcount); + memset(g->background, 0x00, 4 * pcount); // state of the background (starts transparent) + memset(g->history, 0x00, pcount); // pixels that were affected previous frame + first_frame = 1; + } else { + // second frame - how do we dispose of the previous one? + dispose = (g->eflags & 0x1C) >> 2; + pcount = g->w * g->h; + + if ((dispose == 3) && (two_back == 0)) { + dispose = 2; // if I don't have an image to revert back to, default to the old background + } + + if (dispose == 3) { // use previous graphic + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi]) { + memcpy( &g->out[pi * 4], &two_back[pi * 4], 4 ); + } + } + } else if (dispose == 2) { + // restore what was changed last frame to background before that frame; + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi]) { + memcpy( &g->out[pi * 4], &g->background[pi * 4], 4 ); + } + } + } else { + // This is a non-disposal case eithe way, so just + // leave the pixels as is, and they will become the new background + // 1: do not dispose + // 0: not specified. + } + + // background is what out is after the undoing of the previou frame; + memcpy( g->background, g->out, 4 * g->w * g->h ); + } + + // clear my history; + memset( g->history, 0x00, g->w * g->h ); // pixels that were affected previous frame + + for (;;) { + int tag = stbi__get8(s); + switch (tag) { + case 0x2C: /* Image Descriptor */ + { + stbi__int32 x, y, w, h; + stbi_uc *o; + + x = stbi__get16le(s); + y = stbi__get16le(s); + w = stbi__get16le(s); + h = stbi__get16le(s); + if (((x + w) > (g->w)) || ((y + h) > (g->h))) + return stbi__errpuc("bad Image Descriptor", "Corrupt GIF"); + + g->line_size = g->w * 4; + g->start_x = x * 4; + g->start_y = y * g->line_size; + g->max_x = g->start_x + w * 4; + g->max_y = g->start_y + h * g->line_size; + g->cur_x = g->start_x; + g->cur_y = g->start_y; + + // if the width of the specified rectangle is 0, that means + // we may not see *any* pixels or the image is malformed; + // to make sure this is caught, move the current y down to + // max_y (which is what out_gif_code checks). + if (w == 0) + g->cur_y = g->max_y; + + g->lflags = stbi__get8(s); + + if (g->lflags & 0x40) { + g->step = 8 * g->line_size; // first interlaced spacing + g->parse = 3; + } else { + g->step = g->line_size; + g->parse = 0; + } + + if (g->lflags & 0x80) { + stbi__gif_parse_colortable(s,g->lpal, 2 << (g->lflags & 7), g->eflags & 0x01 ? g->transparent : -1); + g->color_table = (stbi_uc *) g->lpal; + } else if (g->flags & 0x80) { + g->color_table = (stbi_uc *) g->pal; + } else + return stbi__errpuc("missing color table", "Corrupt GIF"); + + o = stbi__process_gif_raster(s, g); + if (!o) return NULL; + + // if this was the first frame, + pcount = g->w * g->h; + if (first_frame && (g->bgindex > 0)) { + // if first frame, any pixel not drawn to gets the background color + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi] == 0) { + g->pal[g->bgindex][3] = 255; // just in case it was made transparent, undo that; It will be reset next frame if need be; + memcpy( &g->out[pi * 4], &g->pal[g->bgindex], 4 ); + } + } + } + + return o; + } + + case 0x21: // Comment Extension. + { + int len; + int ext = stbi__get8(s); + if (ext == 0xF9) { // Graphic Control Extension. + len = stbi__get8(s); + if (len == 4) { + g->eflags = stbi__get8(s); + g->delay = 10 * stbi__get16le(s); // delay - 1/100th of a second, saving as 1/1000ths. + + // unset old transparent + if (g->transparent >= 0) { + g->pal[g->transparent][3] = 255; + } + if (g->eflags & 0x01) { + g->transparent = stbi__get8(s); + if (g->transparent >= 0) { + g->pal[g->transparent][3] = 0; + } + } else { + // don't need transparent + stbi__skip(s, 1); + g->transparent = -1; + } + } else { + stbi__skip(s, len); + break; + } + } + while ((len = stbi__get8(s)) != 0) { + stbi__skip(s, len); + } + break; + } + + case 0x3B: // gif stream termination code + return (stbi_uc *) s; // using '1' causes warning on some compilers + + default: + return stbi__errpuc("unknown code", "Corrupt GIF"); + } + } +} + +static void *stbi__load_gif_main_outofmem(stbi__gif *g, stbi_uc *out, int **delays) +{ + STBI_FREE(g->out); + STBI_FREE(g->history); + STBI_FREE(g->background); + + if (out) STBI_FREE(out); + if (delays && *delays) STBI_FREE(*delays); + return stbi__errpuc("outofmem", "Out of memory"); +} + +static void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, int *z, int *comp, int req_comp) +{ + if (stbi__gif_test(s)) { + int layers = 0; + stbi_uc *u = 0; + stbi_uc *out = 0; + stbi_uc *two_back = 0; + stbi__gif g; + int stride; + int out_size = 0; + int delays_size = 0; + + STBI_NOTUSED(out_size); + STBI_NOTUSED(delays_size); + + memset(&g, 0, sizeof(g)); + if (delays) { + *delays = 0; + } + + do { + u = stbi__gif_load_next(s, &g, comp, req_comp, two_back); + if (u == (stbi_uc *) s) u = 0; // end of animated gif marker + + if (u) { + *x = g.w; + *y = g.h; + ++layers; + stride = g.w * g.h * 4; + + if (out) { + void *tmp = (stbi_uc*) STBI_REALLOC_SIZED( out, out_size, layers * stride ); + if (!tmp) + return stbi__load_gif_main_outofmem(&g, out, delays); + else { + out = (stbi_uc*) tmp; + out_size = layers * stride; + } + + if (delays) { + int *new_delays = (int*) STBI_REALLOC_SIZED( *delays, delays_size, sizeof(int) * layers ); + if (!new_delays) + return stbi__load_gif_main_outofmem(&g, out, delays); + *delays = new_delays; + delays_size = layers * sizeof(int); + } + } else { + out = (stbi_uc*)stbi__malloc( layers * stride ); + if (!out) + return stbi__load_gif_main_outofmem(&g, out, delays); + out_size = layers * stride; + if (delays) { + *delays = (int*) stbi__malloc( layers * sizeof(int) ); + if (!*delays) + return stbi__load_gif_main_outofmem(&g, out, delays); + delays_size = layers * sizeof(int); + } + } + memcpy( out + ((layers - 1) * stride), u, stride ); + if (layers >= 2) { + two_back = out - 2 * stride; + } + + if (delays) { + (*delays)[layers - 1U] = g.delay; + } + } + } while (u != 0); + + // free temp buffer; + STBI_FREE(g.out); + STBI_FREE(g.history); + STBI_FREE(g.background); + + // do the final conversion after loading everything; + if (req_comp && req_comp != 4) + out = stbi__convert_format(out, 4, req_comp, layers * g.w, g.h); + + *z = layers; + return out; + } else { + return stbi__errpuc("not GIF", "Image was not as a gif type."); + } +} + +static void *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi_uc *u = 0; + stbi__gif g; + memset(&g, 0, sizeof(g)); + STBI_NOTUSED(ri); + + u = stbi__gif_load_next(s, &g, comp, req_comp, 0); + if (u == (stbi_uc *) s) u = 0; // end of animated gif marker + if (u) { + *x = g.w; + *y = g.h; + + // moved conversion to after successful load so that the same + // can be done for multiple frames. + if (req_comp && req_comp != 4) + u = stbi__convert_format(u, 4, req_comp, g.w, g.h); + } else if (g.out) { + // if there was an error and we allocated an image buffer, free it! + STBI_FREE(g.out); + } + + // free buffers needed for multiple frame loading; + STBI_FREE(g.history); + STBI_FREE(g.background); + + return u; +} + +static int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp) +{ + return stbi__gif_info_raw(s,x,y,comp); +} +#endif + +// ************************************************************************************************* +// Radiance RGBE HDR loader +// originally by Nicolas Schulz +#ifndef STBI_NO_HDR +static int stbi__hdr_test_core(stbi__context *s, const char *signature) +{ + int i; + for (i=0; signature[i]; ++i) + if (stbi__get8(s) != signature[i]) + return 0; + stbi__rewind(s); + return 1; +} + +static int stbi__hdr_test(stbi__context* s) +{ + int r = stbi__hdr_test_core(s, "#?RADIANCE\n"); + stbi__rewind(s); + if(!r) { + r = stbi__hdr_test_core(s, "#?RGBE\n"); + stbi__rewind(s); + } + return r; +} + +#define STBI__HDR_BUFLEN 1024 +static char *stbi__hdr_gettoken(stbi__context *z, char *buffer) +{ + int len=0; + char c = '\0'; + + c = (char) stbi__get8(z); + + while (!stbi__at_eof(z) && c != '\n') { + buffer[len++] = c; + if (len == STBI__HDR_BUFLEN-1) { + // flush to end of line + while (!stbi__at_eof(z) && stbi__get8(z) != '\n') + ; + break; + } + c = (char) stbi__get8(z); + } + + buffer[len] = 0; + return buffer; +} + +static void stbi__hdr_convert(float *output, stbi_uc *input, int req_comp) +{ + if ( input[3] != 0 ) { + float f1; + // Exponent + f1 = (float) ldexp(1.0f, input[3] - (int)(128 + 8)); + if (req_comp <= 2) + output[0] = (input[0] + input[1] + input[2]) * f1 / 3; + else { + output[0] = input[0] * f1; + output[1] = input[1] * f1; + output[2] = input[2] * f1; + } + if (req_comp == 2) output[1] = 1; + if (req_comp == 4) output[3] = 1; + } else { + switch (req_comp) { + case 4: output[3] = 1; /* fallthrough */ + case 3: output[0] = output[1] = output[2] = 0; + break; + case 2: output[1] = 1; /* fallthrough */ + case 1: output[0] = 0; + break; + } + } +} + +static float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + char buffer[STBI__HDR_BUFLEN]; + char *token; + int valid = 0; + int width, height; + stbi_uc *scanline; + float *hdr_data; + int len; + unsigned char count, value; + int i, j, k, c1,c2, z; + const char *headerToken; + STBI_NOTUSED(ri); + + // Check identifier + headerToken = stbi__hdr_gettoken(s,buffer); + if (strcmp(headerToken, "#?RADIANCE") != 0 && strcmp(headerToken, "#?RGBE") != 0) + return stbi__errpf("not HDR", "Corrupt HDR image"); + + // Parse header + for(;;) { + token = stbi__hdr_gettoken(s,buffer); + if (token[0] == 0) break; + if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) valid = 1; + } + + if (!valid) return stbi__errpf("unsupported format", "Unsupported HDR format"); + + // Parse width and height + // can't use sscanf() if we're not using stdio! + token = stbi__hdr_gettoken(s,buffer); + if (strncmp(token, "-Y ", 3)) return stbi__errpf("unsupported data layout", "Unsupported HDR format"); + token += 3; + height = (int) strtol(token, &token, 10); + while (*token == ' ') ++token; + if (strncmp(token, "+X ", 3)) return stbi__errpf("unsupported data layout", "Unsupported HDR format"); + token += 3; + width = (int) strtol(token, NULL, 10); + + if (height > STBI_MAX_DIMENSIONS) return stbi__errpf("too large","Very large image (corrupt?)"); + if (width > STBI_MAX_DIMENSIONS) return stbi__errpf("too large","Very large image (corrupt?)"); + + *x = width; + *y = height; + + if (comp) *comp = 3; + if (req_comp == 0) req_comp = 3; + + if (!stbi__mad4sizes_valid(width, height, req_comp, sizeof(float), 0)) + return stbi__errpf("too large", "HDR image is too large"); + + // Read data + hdr_data = (float *) stbi__malloc_mad4(width, height, req_comp, sizeof(float), 0); + if (!hdr_data) + return stbi__errpf("outofmem", "Out of memory"); + + // Load image data + // image data is stored as some number of sca + if ( width < 8 || width >= 32768) { + // Read flat data + for (j=0; j < height; ++j) { + for (i=0; i < width; ++i) { + stbi_uc rgbe[4]; + main_decode_loop: + stbi__getn(s, rgbe, 4); + stbi__hdr_convert(hdr_data + j * width * req_comp + i * req_comp, rgbe, req_comp); + } + } + } else { + // Read RLE-encoded data + scanline = NULL; + + for (j = 0; j < height; ++j) { + c1 = stbi__get8(s); + c2 = stbi__get8(s); + len = stbi__get8(s); + if (c1 != 2 || c2 != 2 || (len & 0x80)) { + // not run-length encoded, so we have to actually use THIS data as a decoded + // pixel (note this can't be a valid pixel--one of RGB must be >= 128) + stbi_uc rgbe[4]; + rgbe[0] = (stbi_uc) c1; + rgbe[1] = (stbi_uc) c2; + rgbe[2] = (stbi_uc) len; + rgbe[3] = (stbi_uc) stbi__get8(s); + stbi__hdr_convert(hdr_data, rgbe, req_comp); + i = 1; + j = 0; + STBI_FREE(scanline); + goto main_decode_loop; // yes, this makes no sense + } + len <<= 8; + len |= stbi__get8(s); + if (len != width) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("invalid decoded scanline length", "corrupt HDR"); } + if (scanline == NULL) { + scanline = (stbi_uc *) stbi__malloc_mad2(width, 4, 0); + if (!scanline) { + STBI_FREE(hdr_data); + return stbi__errpf("outofmem", "Out of memory"); + } + } + + for (k = 0; k < 4; ++k) { + int nleft; + i = 0; + while ((nleft = width - i) > 0) { + count = stbi__get8(s); + if (count > 128) { + // Run + value = stbi__get8(s); + count -= 128; + if ((count == 0) || (count > nleft)) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("corrupt", "bad RLE data in HDR"); } + for (z = 0; z < count; ++z) + scanline[i++ * 4 + k] = value; + } else { + // Dump + if ((count == 0) || (count > nleft)) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("corrupt", "bad RLE data in HDR"); } + for (z = 0; z < count; ++z) + scanline[i++ * 4 + k] = stbi__get8(s); + } + } + } + for (i=0; i < width; ++i) + stbi__hdr_convert(hdr_data+(j*width + i)*req_comp, scanline + i*4, req_comp); + } + if (scanline) + STBI_FREE(scanline); + } + + return hdr_data; +} + +static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp) +{ + char buffer[STBI__HDR_BUFLEN]; + char *token; + int valid = 0; + int dummy; + + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + + if (stbi__hdr_test(s) == 0) { + stbi__rewind( s ); + return 0; + } + + for(;;) { + token = stbi__hdr_gettoken(s,buffer); + if (token[0] == 0) break; + if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) valid = 1; + } + + if (!valid) { + stbi__rewind( s ); + return 0; + } + token = stbi__hdr_gettoken(s,buffer); + if (strncmp(token, "-Y ", 3)) { + stbi__rewind( s ); + return 0; + } + token += 3; + *y = (int) strtol(token, &token, 10); + while (*token == ' ') ++token; + if (strncmp(token, "+X ", 3)) { + stbi__rewind( s ); + return 0; + } + token += 3; + *x = (int) strtol(token, NULL, 10); + *comp = 3; + return 1; +} +#endif // STBI_NO_HDR + +#ifndef STBI_NO_BMP +static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp) +{ + void *p; + stbi__bmp_data info; + + info.all_a = 255; + p = stbi__bmp_parse_header(s, &info); + if (p == NULL) { + stbi__rewind( s ); + return 0; + } + if (x) *x = s->img_x; + if (y) *y = s->img_y; + if (comp) { + if (info.bpp == 24 && info.ma == 0xff000000) + *comp = 3; + else + *comp = info.ma ? 4 : 3; + } + return 1; +} +#endif + +#ifndef STBI_NO_PSD +static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp) +{ + int channelCount, dummy, depth; + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + if (stbi__get32be(s) != 0x38425053) { + stbi__rewind( s ); + return 0; + } + if (stbi__get16be(s) != 1) { + stbi__rewind( s ); + return 0; + } + stbi__skip(s, 6); + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) { + stbi__rewind( s ); + return 0; + } + *y = stbi__get32be(s); + *x = stbi__get32be(s); + depth = stbi__get16be(s); + if (depth != 8 && depth != 16) { + stbi__rewind( s ); + return 0; + } + if (stbi__get16be(s) != 3) { + stbi__rewind( s ); + return 0; + } + *comp = 4; + return 1; +} + +static int stbi__psd_is16(stbi__context *s) +{ + int channelCount, depth; + if (stbi__get32be(s) != 0x38425053) { + stbi__rewind( s ); + return 0; + } + if (stbi__get16be(s) != 1) { + stbi__rewind( s ); + return 0; + } + stbi__skip(s, 6); + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) { + stbi__rewind( s ); + return 0; + } + STBI_NOTUSED(stbi__get32be(s)); + STBI_NOTUSED(stbi__get32be(s)); + depth = stbi__get16be(s); + if (depth != 16) { + stbi__rewind( s ); + return 0; + } + return 1; +} +#endif + +#ifndef STBI_NO_PIC +static int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp) +{ + int act_comp=0,num_packets=0,chained,dummy; + stbi__pic_packet packets[10]; + + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + + if (!stbi__pic_is4(s,"\x53\x80\xF6\x34")) { + stbi__rewind(s); + return 0; + } + + stbi__skip(s, 88); + + *x = stbi__get16be(s); + *y = stbi__get16be(s); + if (stbi__at_eof(s)) { + stbi__rewind( s); + return 0; + } + if ( (*x) != 0 && (1 << 28) / (*x) < (*y)) { + stbi__rewind( s ); + return 0; + } + + stbi__skip(s, 8); + + do { + stbi__pic_packet *packet; + + if (num_packets==sizeof(packets)/sizeof(packets[0])) + return 0; + + packet = &packets[num_packets++]; + chained = stbi__get8(s); + packet->size = stbi__get8(s); + packet->type = stbi__get8(s); + packet->channel = stbi__get8(s); + act_comp |= packet->channel; + + if (stbi__at_eof(s)) { + stbi__rewind( s ); + return 0; + } + if (packet->size != 8) { + stbi__rewind( s ); + return 0; + } + } while (chained); + + *comp = (act_comp & 0x10 ? 4 : 3); + + return 1; +} +#endif + +// ************************************************************************************************* +// Portable Gray Map and Portable Pixel Map loader +// by Ken Miller +// +// PGM: http://netpbm.sourceforge.net/doc/pgm.html +// PPM: http://netpbm.sourceforge.net/doc/ppm.html +// +// Known limitations: +// Does not support comments in the header section +// Does not support ASCII image data (formats P2 and P3) + +#ifndef STBI_NO_PNM + +static int stbi__pnm_test(stbi__context *s) +{ + char p, t; + p = (char) stbi__get8(s); + t = (char) stbi__get8(s); + if (p != 'P' || (t != '5' && t != '6')) { + stbi__rewind( s ); + return 0; + } + return 1; +} + +static void *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi_uc *out; + STBI_NOTUSED(ri); + + ri->bits_per_channel = stbi__pnm_info(s, (int *)&s->img_x, (int *)&s->img_y, (int *)&s->img_n); + if (ri->bits_per_channel == 0) + return 0; + + if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + + *x = s->img_x; + *y = s->img_y; + if (comp) *comp = s->img_n; + + if (!stbi__mad4sizes_valid(s->img_n, s->img_x, s->img_y, ri->bits_per_channel / 8, 0)) + return stbi__errpuc("too large", "PNM too large"); + + out = (stbi_uc *) stbi__malloc_mad4(s->img_n, s->img_x, s->img_y, ri->bits_per_channel / 8, 0); + if (!out) return stbi__errpuc("outofmem", "Out of memory"); + if (!stbi__getn(s, out, s->img_n * s->img_x * s->img_y * (ri->bits_per_channel / 8))) { + STBI_FREE(out); + return stbi__errpuc("bad PNM", "PNM file truncated"); + } + + if (req_comp && req_comp != s->img_n) { + if (ri->bits_per_channel == 16) { + out = (stbi_uc *) stbi__convert_format16((stbi__uint16 *) out, s->img_n, req_comp, s->img_x, s->img_y); + } else { + out = stbi__convert_format(out, s->img_n, req_comp, s->img_x, s->img_y); + } + if (out == NULL) return out; // stbi__convert_format frees input on failure + } + return out; +} + +static int stbi__pnm_isspace(char c) +{ + return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; +} + +static void stbi__pnm_skip_whitespace(stbi__context *s, char *c) +{ + for (;;) { + while (!stbi__at_eof(s) && stbi__pnm_isspace(*c)) + *c = (char) stbi__get8(s); + + if (stbi__at_eof(s) || *c != '#') + break; + + while (!stbi__at_eof(s) && *c != '\n' && *c != '\r' ) + *c = (char) stbi__get8(s); + } +} + +static int stbi__pnm_isdigit(char c) +{ + return c >= '0' && c <= '9'; +} + +static int stbi__pnm_getinteger(stbi__context *s, char *c) +{ + int value = 0; + + while (!stbi__at_eof(s) && stbi__pnm_isdigit(*c)) { + value = value*10 + (*c - '0'); + *c = (char) stbi__get8(s); + if((value > 214748364) || (value == 214748364 && *c > '7')) + return stbi__err("integer parse overflow", "Parsing an integer in the PPM header overflowed a 32-bit int"); + } + + return value; +} + +static int stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp) +{ + int maxv, dummy; + char c, p, t; + + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + + stbi__rewind(s); + + // Get identifier + p = (char) stbi__get8(s); + t = (char) stbi__get8(s); + if (p != 'P' || (t != '5' && t != '6')) { + stbi__rewind(s); + return 0; + } + + *comp = (t == '6') ? 3 : 1; // '5' is 1-component .pgm; '6' is 3-component .ppm + + c = (char) stbi__get8(s); + stbi__pnm_skip_whitespace(s, &c); + + *x = stbi__pnm_getinteger(s, &c); // read width + if(*x == 0) + return stbi__err("invalid width", "PPM image header had zero or overflowing width"); + stbi__pnm_skip_whitespace(s, &c); + + *y = stbi__pnm_getinteger(s, &c); // read height + if (*y == 0) + return stbi__err("invalid width", "PPM image header had zero or overflowing width"); + stbi__pnm_skip_whitespace(s, &c); + + maxv = stbi__pnm_getinteger(s, &c); // read max value + if (maxv > 65535) + return stbi__err("max value > 65535", "PPM image supports only 8-bit and 16-bit images"); + else if (maxv > 255) + return 16; + else + return 8; +} + +static int stbi__pnm_is16(stbi__context *s) +{ + if (stbi__pnm_info(s, NULL, NULL, NULL) == 16) + return 1; + return 0; +} +#endif + +static int stbi__info_main(stbi__context *s, int *x, int *y, int *comp) +{ + #ifndef STBI_NO_JPEG + if (stbi__jpeg_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PNG + if (stbi__png_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_GIF + if (stbi__gif_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_BMP + if (stbi__bmp_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PSD + if (stbi__psd_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PIC + if (stbi__pic_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PNM + if (stbi__pnm_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_HDR + if (stbi__hdr_info(s, x, y, comp)) return 1; + #endif + + // test tga last because it's a crappy test! + #ifndef STBI_NO_TGA + if (stbi__tga_info(s, x, y, comp)) + return 1; + #endif + return stbi__err("unknown image type", "Image not of any known type, or corrupt"); +} + +static int stbi__is_16_main(stbi__context *s) +{ + #ifndef STBI_NO_PNG + if (stbi__png_is16(s)) return 1; + #endif + + #ifndef STBI_NO_PSD + if (stbi__psd_is16(s)) return 1; + #endif + + #ifndef STBI_NO_PNM + if (stbi__pnm_is16(s)) return 1; + #endif + return 0; +} + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_info(char const *filename, int *x, int *y, int *comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + int result; + if (!f) return stbi__err("can't fopen", "Unable to open file"); + result = stbi_info_from_file(f, x, y, comp); + fclose(f); + return result; +} + +STBIDEF int stbi_info_from_file(FILE *f, int *x, int *y, int *comp) +{ + int r; + stbi__context s; + long pos = ftell(f); + stbi__start_file(&s, f); + r = stbi__info_main(&s,x,y,comp); + fseek(f,pos,SEEK_SET); + return r; +} + +STBIDEF int stbi_is_16_bit(char const *filename) +{ + FILE *f = stbi__fopen(filename, "rb"); + int result; + if (!f) return stbi__err("can't fopen", "Unable to open file"); + result = stbi_is_16_bit_from_file(f); + fclose(f); + return result; +} + +STBIDEF int stbi_is_16_bit_from_file(FILE *f) +{ + int r; + stbi__context s; + long pos = ftell(f); + stbi__start_file(&s, f); + r = stbi__is_16_main(&s); + fseek(f,pos,SEEK_SET); + return r; +} +#endif // !STBI_NO_STDIO + +STBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__info_main(&s,x,y,comp); +} + +STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *c, void *user, int *x, int *y, int *comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) c, user); + return stbi__info_main(&s,x,y,comp); +} + +STBIDEF int stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__is_16_main(&s); +} + +STBIDEF int stbi_is_16_bit_from_callbacks(stbi_io_callbacks const *c, void *user) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) c, user); + return stbi__is_16_main(&s); +} + +#endif // STB_IMAGE_IMPLEMENTATION + +/* + revision history: + 2.20 (2019-02-07) support utf8 filenames in Windows; fix warnings and platform ifdefs + 2.19 (2018-02-11) fix warning + 2.18 (2018-01-30) fix warnings + 2.17 (2018-01-29) change sbti__shiftsigned to avoid clang -O2 bug + 1-bit BMP + *_is_16_bit api + avoid warnings + 2.16 (2017-07-23) all functions have 16-bit variants; + STBI_NO_STDIO works again; + compilation fixes; + fix rounding in unpremultiply; + optimize vertical flip; + disable raw_len validation; + documentation fixes + 2.15 (2017-03-18) fix png-1,2,4 bug; now all Imagenet JPGs decode; + warning fixes; disable run-time SSE detection on gcc; + uniform handling of optional "return" values; + thread-safe initialization of zlib tables + 2.14 (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs + 2.13 (2016-11-29) add 16-bit API, only supported for PNG right now + 2.12 (2016-04-02) fix typo in 2.11 PSD fix that caused crashes + 2.11 (2016-04-02) allocate large structures on the stack + remove white matting for transparent PSD + fix reported channel count for PNG & BMP + re-enable SSE2 in non-gcc 64-bit + support RGB-formatted JPEG + read 16-bit PNGs (only as 8-bit) + 2.10 (2016-01-22) avoid warning introduced in 2.09 by STBI_REALLOC_SIZED + 2.09 (2016-01-16) allow comments in PNM files + 16-bit-per-pixel TGA (not bit-per-component) + info() for TGA could break due to .hdr handling + info() for BMP to shares code instead of sloppy parse + can use STBI_REALLOC_SIZED if allocator doesn't support realloc + code cleanup + 2.08 (2015-09-13) fix to 2.07 cleanup, reading RGB PSD as RGBA + 2.07 (2015-09-13) fix compiler warnings + partial animated GIF support + limited 16-bpc PSD support + #ifdef unused functions + bug with < 92 byte PIC,PNM,HDR,TGA + 2.06 (2015-04-19) fix bug where PSD returns wrong '*comp' value + 2.05 (2015-04-19) fix bug in progressive JPEG handling, fix warning + 2.04 (2015-04-15) try to re-enable SIMD on MinGW 64-bit + 2.03 (2015-04-12) extra corruption checking (mmozeiko) + stbi_set_flip_vertically_on_load (nguillemot) + fix NEON support; fix mingw support + 2.02 (2015-01-19) fix incorrect assert, fix warning + 2.01 (2015-01-17) fix various warnings; suppress SIMD on gcc 32-bit without -msse2 + 2.00b (2014-12-25) fix STBI_MALLOC in progressive JPEG + 2.00 (2014-12-25) optimize JPG, including x86 SSE2 & NEON SIMD (ryg) + progressive JPEG (stb) + PGM/PPM support (Ken Miller) + STBI_MALLOC,STBI_REALLOC,STBI_FREE + GIF bugfix -- seemingly never worked + STBI_NO_*, STBI_ONLY_* + 1.48 (2014-12-14) fix incorrectly-named assert() + 1.47 (2014-12-14) 1/2/4-bit PNG support, both direct and paletted (Omar Cornut & stb) + optimize PNG (ryg) + fix bug in interlaced PNG with user-specified channel count (stb) + 1.46 (2014-08-26) + fix broken tRNS chunk (colorkey-style transparency) in non-paletted PNG + 1.45 (2014-08-16) + fix MSVC-ARM internal compiler error by wrapping malloc + 1.44 (2014-08-07) + various warning fixes from Ronny Chevalier + 1.43 (2014-07-15) + fix MSVC-only compiler problem in code changed in 1.42 + 1.42 (2014-07-09) + don't define _CRT_SECURE_NO_WARNINGS (affects user code) + fixes to stbi__cleanup_jpeg path + added STBI_ASSERT to avoid requiring assert.h + 1.41 (2014-06-25) + fix search&replace from 1.36 that messed up comments/error messages + 1.40 (2014-06-22) + fix gcc struct-initialization warning + 1.39 (2014-06-15) + fix to TGA optimization when req_comp != number of components in TGA; + fix to GIF loading because BMP wasn't rewinding (whoops, no GIFs in my test suite) + add support for BMP version 5 (more ignored fields) + 1.38 (2014-06-06) + suppress MSVC warnings on integer casts truncating values + fix accidental rename of 'skip' field of I/O + 1.37 (2014-06-04) + remove duplicate typedef + 1.36 (2014-06-03) + convert to header file single-file library + if de-iphone isn't set, load iphone images color-swapped instead of returning NULL + 1.35 (2014-05-27) + various warnings + fix broken STBI_SIMD path + fix bug where stbi_load_from_file no longer left file pointer in correct place + fix broken non-easy path for 32-bit BMP (possibly never used) + TGA optimization by Arseny Kapoulkine + 1.34 (unknown) + use STBI_NOTUSED in stbi__resample_row_generic(), fix one more leak in tga failure case + 1.33 (2011-07-14) + make stbi_is_hdr work in STBI_NO_HDR (as specified), minor compiler-friendly improvements + 1.32 (2011-07-13) + support for "info" function for all supported filetypes (SpartanJ) + 1.31 (2011-06-20) + a few more leak fixes, bug in PNG handling (SpartanJ) + 1.30 (2011-06-11) + added ability to load files via callbacks to accomidate custom input streams (Ben Wenger) + removed deprecated format-specific test/load functions + removed support for installable file formats (stbi_loader) -- would have been broken for IO callbacks anyway + error cases in bmp and tga give messages and don't leak (Raymond Barbiero, grisha) + fix inefficiency in decoding 32-bit BMP (David Woo) + 1.29 (2010-08-16) + various warning fixes from Aurelien Pocheville + 1.28 (2010-08-01) + fix bug in GIF palette transparency (SpartanJ) + 1.27 (2010-08-01) + cast-to-stbi_uc to fix warnings + 1.26 (2010-07-24) + fix bug in file buffering for PNG reported by SpartanJ + 1.25 (2010-07-17) + refix trans_data warning (Won Chun) + 1.24 (2010-07-12) + perf improvements reading from files on platforms with lock-heavy fgetc() + minor perf improvements for jpeg + deprecated type-specific functions so we'll get feedback if they're needed + attempt to fix trans_data warning (Won Chun) + 1.23 fixed bug in iPhone support + 1.22 (2010-07-10) + removed image *writing* support + stbi_info support from Jetro Lauha + GIF support from Jean-Marc Lienher + iPhone PNG-extensions from James Brown + warning-fixes from Nicolas Schulz and Janez Zemva (i.stbi__err. Janez (U+017D)emva) + 1.21 fix use of 'stbi_uc' in header (reported by jon blow) + 1.20 added support for Softimage PIC, by Tom Seddon + 1.19 bug in interlaced PNG corruption check (found by ryg) + 1.18 (2008-08-02) + fix a threading bug (local mutable static) + 1.17 support interlaced PNG + 1.16 major bugfix - stbi__convert_format converted one too many pixels + 1.15 initialize some fields for thread safety + 1.14 fix threadsafe conversion bug + header-file-only version (#define STBI_HEADER_FILE_ONLY before including) + 1.13 threadsafe + 1.12 const qualifiers in the API + 1.11 Support installable IDCT, colorspace conversion routines + 1.10 Fixes for 64-bit (don't use "unsigned long") + optimized upsampling by Fabian "ryg" Giesen + 1.09 Fix format-conversion for PSD code (bad global variables!) + 1.08 Thatcher Ulrich's PSD code integrated by Nicolas Schulz + 1.07 attempt to fix C++ warning/errors again + 1.06 attempt to fix C++ warning/errors again + 1.05 fix TGA loading to return correct *comp and use good luminance calc + 1.04 default float alpha is 1, not 255; use 'void *' for stbi_image_free + 1.03 bugfixes to STBI_NO_STDIO, STBI_NO_HDR + 1.02 support for (subset of) HDR files, float interface for preferred access to them + 1.01 fix bug: possible bug in handling right-side up bmps... not sure + fix bug: the stbi__bmp_load() and stbi__tga_load() functions didn't work at all + 1.00 interface to zlib that skips zlib header + 0.99 correct handling of alpha in palette + 0.98 TGA loader by lonesock; dynamically add loaders (untested) + 0.97 jpeg errors on too large a file; also catch another malloc failure + 0.96 fix detection of invalid v value - particleman@mollyrocket forum + 0.95 during header scan, seek to markers in case of padding + 0.94 STBI_NO_STDIO to disable stdio usage; rename all #defines the same + 0.93 handle jpegtran output; verbose errors + 0.92 read 4,8,16,24,32-bit BMP files of several formats + 0.91 output 24-bit Windows 3.0 BMP files + 0.90 fix a few more warnings; bump version number to approach 1.0 + 0.61 bugfixes due to Marc LeBlanc, Christopher Lloyd + 0.60 fix compiling as c++ + 0.59 fix warnings: merge Dave Moore's -Wall fixes + 0.58 fix bug: zlib uncompressed mode len/nlen was wrong endian + 0.57 fix bug: jpg last huffman symbol before marker was >9 bits but less than 16 available + 0.56 fix bug: zlib uncompressed mode len vs. nlen + 0.55 fix bug: restart_interval not initialized to 0 + 0.54 allow NULL for 'int *comp' + 0.53 fix bug in png 3->4; speedup png decoding + 0.52 png handles req_comp=3,4 directly; minor cleanup; jpeg comments + 0.51 obey req_comp requests, 1-component jpegs return as 1-component, + on 'test' only check type, not whether we support this variant + 0.50 (2006-11-19) + first released version +*/ + + +/* +------------------------------------------------------------------------------ +This software is available under 2 licenses -- choose whichever you prefer. +------------------------------------------------------------------------------ +ALTERNATIVE A - MIT License +Copyright (c) 2017 Sean Barrett +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +------------------------------------------------------------------------------ +ALTERNATIVE B - Public Domain (www.unlicense.org) +This is free and unencumbered software released into the public domain. +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this +software, either in source code form or as a compiled binary, for any purpose, +commercial or non-commercial, and by any means. +In jurisdictions that recognize copyright laws, the author or authors of this +software dedicate any and all copyright interest in the software to the public +domain. We make this dedication for the benefit of the public at large and to +the detriment of our heirs and successors. We intend this dedication to be an +overt act of relinquishment in perpetuity of all present and future rights to +this software under copyright law. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------ +*/ \ No newline at end of file diff --git a/src/lib/src/window.cpp b/src/lib/src/window.cpp index 4962439..a264dcf 100644 --- a/src/lib/src/window.cpp +++ b/src/lib/src/window.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2023 Hartmut Seichter + * Copyright 2023-2024 Hartmut Seichter * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal