diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a3b81f8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +.idea +.vscode +cmake-* +.DS_Store +build diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..93c7ce5 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,21 @@ +cmake_minimum_required(VERSION 3.12) + +include(pico_sdk_import.cmake) +set(PIMORONI_SDK D:/Projects/pimoroni-pico/) +include(pimoroni_pico_display_import.cmake) + +project(pico_bird C CXX ASM) + +set(CMAKE_C_STANDARD 11) +set(CMAKE_CXX_STANDARD 17) + +# Initialize the SDK +pico_sdk_init() + +add_executable(pico_bird main.cpp bitmap.h bitmap.cpp sprites.h sprites.cpp) + +# Pull in our pico_stdlib which aggregates commonly used features +target_link_libraries(pico_bird pico_stdlib pico_display hardware_spi hardware_pwm) + +# create map/bin/hex/uf2 file etc. +pico_add_extra_outputs(pico_bird) \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..e8dc762 --- /dev/null +++ b/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2021 Andre Cipriani Bandarra + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md new file mode 100644 index 0000000..37708d5 --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +# Pico Bird + +- A Flappy Bird implementation for the Raspberry Pi Pico and the Pimoroni +Pico Display. + +## Authors +- andreban +- TheWitch7971 \ No newline at end of file diff --git a/bitmap.cpp b/bitmap.cpp new file mode 100644 index 0000000..7ab7eb0 --- /dev/null +++ b/bitmap.cpp @@ -0,0 +1,65 @@ +/** + * Copyright 2021 Andre Cipriani Bandarra + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "bitmap.h" +#include +#include "pico/stdlib.h" + +Bitmap::Bitmap(uint w, uint h, uint16_t *d) { + width = w; + height = h; + data = d; +} + +void Bitmap::draw(pimoroni::PicoGraphics *pico_graphics, uint display_x, uint display_y) { + for (int x = 0; x < width; x++) { + uint target_x = x + display_x; + if (target_x >= pimoroni::PicoDisplay::WIDTH) { + continue; + } + for (int y = 0; y < height; y++) { + uint target_y = y + display_y; + if (target_y >= pimoroni::PicoDisplay::HEIGHT) { + break; + } + *pico_graphics->ptr(target_x, target_y) = get_rgb(x, y); + } + } +} + +void Bitmap::draw_reverse(pimoroni::PicoGraphics *pico_graphics, uint display_x, uint display_y) { + for (int x = 0; x < width; x++) { + uint target_x = x + display_x; + if (target_x >= pimoroni::PicoDisplay::WIDTH) { + continue; + } + for (int y = 0; y < height; y++) { + int target_y = display_y - y; + if (target_y < 0 || target_y >= pimoroni::PicoDisplay::HEIGHT) { + continue; + } + *pico_graphics->ptr(target_x, target_y) = get_rgb(x, height - y - 1); + } + } +} + +void Bitmap::set_rgb(uint x, uint y, uint16_t rgb) { + this->data[y * width + x] = rgb; +} + +uint16_t Bitmap::get_rgb(uint x, uint y) { + return this->data[y * width + x]; +} diff --git a/bitmap.h b/bitmap.h new file mode 100644 index 0000000..fc89033 --- /dev/null +++ b/bitmap.h @@ -0,0 +1,49 @@ +/** + * Copyright 2021 Andre Cipriani Bandarra + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef FLAPPY_PICO_BITMAP_H +#define FLAPPY_PICO_BITMAP_H + +#include "pico_display.hpp" + +class Bitmap { +private: + uint width; + uint height; + uint16_t *data; +public: + Bitmap(uint width, uint height, uint16_t *data); + /** + * Gets the Bitmap colour at position x,y. + */ + uint16_t get_rgb(uint x, uint y); + /** + * Sets the Bitmap colour at position x,y. + */ + void set_rgb(uint x, uint y, uint16_t rgb); + /** + * Draws the Bitmap using a pico_graphics, starting at position x, y on the canvas and moving **down**. Pixels + * outside the screen are ignored. + */ + void draw(pimoroni::PicoGraphics *pico_graphics, uint x, uint y); + /** + * Draws the Bitmap using a pico_graphics, starting at position x, y on the canvas and moving **up**. Pixels outside + * the screen are ignored. + */ + void draw_reverse(pimoroni::PicoGraphics *pico_graphics, uint x, uint y); +}; + +#endif //FLAPPY_PICO_BITMAP_H diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..67c61da --- /dev/null +++ b/main.cpp @@ -0,0 +1,246 @@ +/** + * Copyright 2021 Andre Cipriani Bandarra + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "pico/stdlib.h" +#include "pico_display.hpp" +#include "bitmap.h" +#include "sprites.h" +#include + +const uint8_t BIRD_SIZE = 16; +const uint8_t BOARD_WIDTH = pimoroni::PicoDisplay::WIDTH; +const uint8_t BOARD_HEIGHT = pimoroni::PicoDisplay::HEIGHT; + +uint16_t buffer[pimoroni::PicoDisplay::WIDTH * pimoroni::PicoDisplay::HEIGHT]; +pimoroni::PicoDisplay pico_display(buffer); + +static unsigned int g_seed; + + +/** + * // Used to seed the generator. + */ +inline void fast_srand(int seed) { + g_seed = seed; +} + +/** + * Compute a pseudorandom integer. + * Output value in range [0, 32767] + * See https://stackoverflow.com/a/26237777/1249994 + */ +inline int fast_rand(void) { + g_seed = (214013 * g_seed + 2531011); + return (g_seed >> 16) & 0x7FFF; +} + +/** + * The game state. + */ +enum GameState { + MENU, + GAME_PLAY, + GAME_OVER +}; + +/** + * The Player. + */ +class Player { +public: + pimoroni::Rect bounds = pimoroni::Rect(32, 65, BIRD_SIZE, BIRD_SIZE); + Bitmap *bitmap[9] = { + new Bitmap(16, 16, Sprites::PLAYER_BITMAP), + new Bitmap(16, 16, Sprites::PLAYER_BITMAP), + new Bitmap(16, 16, Sprites::PLAYER_BITMAP), + new Bitmap(16, 16, Sprites::PLAYER_BITMAP2), + new Bitmap(16, 16, Sprites::PLAYER_BITMAP2), + new Bitmap(16, 16, Sprites::PLAYER_BITMAP2), + new Bitmap(16, 16, Sprites::PLAYER_BITMAP3), + new Bitmap(16, 16, Sprites::PLAYER_BITMAP3), + new Bitmap(16, 16, Sprites::PLAYER_BITMAP3), + }; + int current_image = 0; + + Player() { + } + + void reset() { + bounds.y = 65; + } + + void update() { + int speed = pico_display.is_pressed(pimoroni::PicoDisplay::Y) ? -1 : 1; + bounds.y += speed; + current_image++; + } + + void render() { + bitmap[current_image % 9]->draw(&pico_display, this->bounds.x, this->bounds.y); + } +}; + +/** + * The obstacle walls. + */ +class Obstacle { +public: + pimoroni::Rect top_wall; + pimoroni::Rect bottom_wall; + Bitmap *bottom_image = new Bitmap(32, 135, Sprites::PIPE_BOTTOM); + Bitmap *top_image = new Bitmap(32, 135, Sprites::PIPE_TOP); + int start_x; + + Obstacle(int start_x) { + this->start_x = start_x; + reset(); + } + + void reset() { + int rand = fast_rand(); + uint8_t y_gap = (rand % 64) + 32; + uint8_t top_wall_height = (rand % (BOARD_HEIGHT - y_gap)) + 1; + uint8_t bottom_wall_height = BOARD_HEIGHT - top_wall_height - y_gap; + top_wall = pimoroni::Rect(start_x, 0, 32, top_wall_height); + bottom_wall = pimoroni::Rect( + start_x, BOARD_HEIGHT - bottom_wall_height, 32, bottom_wall_height); + } + + void update() { + top_wall.x -= 1; + bottom_wall.x -= 1; + if (top_wall.x + top_wall.w < 0 || bottom_wall.x + bottom_wall.w < 0) { + top_wall.x = BOARD_WIDTH; + bottom_wall.x = BOARD_WIDTH; + } + } + + void render() { + top_image->draw_reverse(&pico_display, top_wall.x, top_wall.y + top_wall.h); + bottom_image->draw(&pico_display, bottom_wall.x, bottom_wall.y); + } +}; + +GameState gameState = GameState::MENU; + +const int NUM_OBSTACLES = 3; +Obstacle *obstacles[NUM_OBSTACLES] = { + new Obstacle(BOARD_WIDTH), + new Obstacle(BOARD_WIDTH + BOARD_WIDTH / 3), + new Obstacle(BOARD_WIDTH + (BOARD_WIDTH / 3 * 2)) +}; +Player *player = new Player(); +uint32_t score = 0; + +void resetGame() { + player->reset(); + for (int i = 0; i < NUM_OBSTACLES; i++) { + obstacles[i]->reset(); + } + score = 0; +} + +/** + * Renders the game state. + */ +void gameplay() { + // Clear screen + pico_display.set_pen(34, 3, 77); + pico_display.clear(); + + player->update(); + for (int i = 0; i < NUM_OBSTACLES; i++) { + obstacles[i]->update(); + } + + if (player->bounds.y < 0 || + player->bounds.y >= BOARD_HEIGHT - 15) { + gameState = GameState::GAME_OVER; + } + + for (int i = 0; i < NUM_OBSTACLES; i++) { + if (player->bounds.intersects(obstacles[i]->top_wall) || + player->bounds.intersects(obstacles[i]->bottom_wall)) { + gameState = GameState::GAME_OVER; + break; + } + } + + // render game + for (int i = 0; i < NUM_OBSTACLES; i++) { + obstacles[i]->render(); + } + player->render(); + score++; + pico_display.set_pen(221, 221, 221); + pico_display.text("Score: " + std::to_string(score), pimoroni::Point(180, 0), 0); +} + +/** + * Renders the menu state. + */ +void menu() { + pico_display.set_pen(221, 221, 221); + pico_display.text("Pico Bird", pimoroni::Point(8, 15), 240, 5); + pico_display.text("Press Any Button", pimoroni::Point(35, 70), 240, 2); + pico_display.text("Sprites by TheWitch7971", pimoroni::Point(5, 115), 200, 1); + pico_display.text("Code by andreban", pimoroni::Point(5, 125), 200, 1); + if (pico_display.is_pressed(pimoroni::PicoDisplay::A) || + pico_display.is_pressed(pimoroni::PicoDisplay::B) || + pico_display.is_pressed(pimoroni::PicoDisplay::X) || + pico_display.is_pressed(pimoroni::PicoDisplay::Y)) { + resetGame(); + gameState = GameState::GAME_PLAY; + } +} + +/** + * Renders the gameover state. + */ +void gameover() { + pico_display.set_pen(221, 221, 221); + pico_display.text("Game Over", pimoroni::Point(100, 55), 0); + if (pico_display.is_pressed(pimoroni::PicoDisplay::A) || + pico_display.is_pressed(pimoroni::PicoDisplay::B) || + pico_display.is_pressed(pimoroni::PicoDisplay::X) || + pico_display.is_pressed(pimoroni::PicoDisplay::Y)) { + resetGame(); + gameState = GameState::GAME_PLAY; + } +} + +int main() { + pico_display.init(); + pico_display.set_backlight(255); + pico_display.set_pen(34, 3, 77); + pico_display.clear(); + while (true) { + switch (gameState) { + case GameState::MENU: + menu(); + break; + case GameState::GAME_PLAY: + gameplay(); + break; + case GameState::GAME_OVER: + gameover(); + break; + } + pico_display.update(); + } +} + + diff --git a/pico_sdk_import.cmake b/pico_sdk_import.cmake new file mode 100644 index 0000000..28efe9e --- /dev/null +++ b/pico_sdk_import.cmake @@ -0,0 +1,62 @@ +# This is a copy of /external/pico_sdk_import.cmake + +# This can be dropped into an external project to help locate this SDK +# It should be include()ed prior to project() + +if (DEFINED ENV{PICO_SDK_PATH} AND (NOT PICO_SDK_PATH)) + set(PICO_SDK_PATH $ENV{PICO_SDK_PATH}) + message("Using PICO_SDK_PATH from environment ('${PICO_SDK_PATH}')") +endif () + +if (DEFINED ENV{PICO_SDK_FETCH_FROM_GIT} AND (NOT PICO_SDK_FETCH_FROM_GIT)) + set(PICO_SDK_FETCH_FROM_GIT $ENV{PICO_SDK_FETCH_FROM_GIT}) + message("Using PICO_SDK_FETCH_FROM_GIT from environment ('${PICO_SDK_FETCH_FROM_GIT}')") +endif () + +if (DEFINED ENV{PICO_SDK_FETCH_FROM_GIT_PATH} AND (NOT PICO_SDK_FETCH_FROM_GIT_PATH)) + set(PICO_SDK_FETCH_FROM_GIT_PATH $ENV{PICO_SDK_FETCH_FROM_GIT_PATH}) + message("Using PICO_SDK_FETCH_FROM_GIT_PATH from environment ('${PICO_SDK_FETCH_FROM_GIT_PATH}')") +endif () + +set(PICO_SDK_PATH "${PICO_SDK_PATH}" CACHE PATH "Path to the Raspberry Pi Pico SDK") +set(PICO_SDK_FETCH_FROM_GIT "${PICO_SDK_FETCH_FROM_GIT}" CACHE BOOL "Set to ON to fetch copy of SDK from git if not otherwise locatable") +set(PICO_SDK_FETCH_FROM_GIT_PATH "${PICO_SDK_FETCH_FROM_GIT_PATH}" CACHE FILEPATH "location to download SDK") + +if (NOT PICO_SDK_PATH) + if (PICO_SDK_FETCH_FROM_GIT) + include(FetchContent) + set(FETCHCONTENT_BASE_DIR_SAVE ${FETCHCONTENT_BASE_DIR}) + if (PICO_SDK_FETCH_FROM_GIT_PATH) + get_filename_component(FETCHCONTENT_BASE_DIR "${PICO_SDK_FETCH_FROM_GIT_PATH}" REALPATH BASE_DIR "${CMAKE_SOURCE_DIR}") + endif () + FetchContent_Declare( + pico_sdk + GIT_REPOSITORY https://github.com/raspberrypi/pico-sdk + GIT_TAG master + ) + if (NOT pico_sdk) + message("Downloading Raspberry Pi Pico SDK") + FetchContent_Populate(pico_sdk) + set(PICO_SDK_PATH ${pico_sdk_SOURCE_DIR}) + endif () + set(FETCHCONTENT_BASE_DIR ${FETCHCONTENT_BASE_DIR_SAVE}) + else () + message(FATAL_ERROR + "SDK location was not specified. Please set PICO_SDK_PATH or set PICO_SDK_FETCH_FROM_GIT to on to fetch from git." + ) + endif () +endif () + +get_filename_component(PICO_SDK_PATH "${PICO_SDK_PATH}" REALPATH BASE_DIR "${CMAKE_BINARY_DIR}") +if (NOT EXISTS ${PICO_SDK_PATH}) + message(FATAL_ERROR "Directory '${PICO_SDK_PATH}' not found") +endif () + +set(PICO_SDK_INIT_CMAKE_FILE ${PICO_SDK_PATH}/pico_sdk_init.cmake) +if (NOT EXISTS ${PICO_SDK_INIT_CMAKE_FILE}) + message(FATAL_ERROR "Directory '${PICO_SDK_PATH}' does not appear to contain the Raspberry Pi Pico SDK") +endif () + +set(PICO_SDK_PATH ${PICO_SDK_PATH} CACHE PATH "Path to the Raspberry Pi Pico SDK" FORCE) + +include(${PICO_SDK_INIT_CMAKE_FILE}) diff --git a/pimoroni_pico_display_import.cmake b/pimoroni_pico_display_import.cmake new file mode 100644 index 0000000..bfc8401 --- /dev/null +++ b/pimoroni_pico_display_import.cmake @@ -0,0 +1 @@ +include(${PIMORONI_SDK}/libraries/pico_display/pico_display.cmake) diff --git a/sprites.cpp b/sprites.cpp new file mode 100644 index 0000000..0f2b08f --- /dev/null +++ b/sprites.cpp @@ -0,0 +1,900 @@ +/** + * Copyright 2021 Andre Cipriani Bandarra + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "pico/stdlib.h" +#include "sprites.h" + +uint16_t Sprites::PLAYER_BITMAP[] = { + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0xA4A0, 0xA4A0, 0x42C0, 0x21D0, 0x21D0, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0xA4A0, 0xA4A0, 0x84A8, 0x62B8, 0xD4FD, 0xD4FD, 0x00E0, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0xA4A0, 0xA4A0, 0x84A8, 0x83B0, 0x62B8, 0x41C8, 0x21D8, 0xD4FD, 0x00E0, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0xA4A0, 0xA4A0, 0x83A8, 0x63B8, 0x62C0, 0x41D0, 0x20D8, 0x00E0, 0x00E0, 0x00E0, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0xA4A0, 0x84A8, 0x83B0, 0x63B8, 0x62C0, 0x41C8, 0x21D0, 0x00E0, 0x00E0, 0x00E0, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0xA4A0, 0xA4A0, 0x84A8, 0x83B0, 0x63B8, 0x42C0, 0x42C8, 0x41C8, 0x00E0, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0xA4A0, 0xA4A0, 0x84A8, 0x83B0, 0x63B8, 0x63B0, 0x63B8, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0xDCA6, 0xA4A0, 0xA4A0, 0xA4A0, 0xA4A0, 0xA4A0, 0xDCA6, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0xDCA6, 0xDCA6, + 0x7C5E, 0x0920, 0x0920, 0x0920, 0x7C5E, 0xDCA6, 0xDCA6, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0xDCA6, + 0xDCA6, 0xDCA6, 0x7C5E, 0x0920, 0x0920, 0x0920, 0x7C5E, 0xDCA6, 0xDCA6, 0xDCA6, 0x0920, 0x0920, 0x0920, 0x0920, + 0xDCA6, 0xDCA6, 0x7C5E, 0x7C5E, 0x7C5E, + 0x0920, 0x0920, 0x0920, 0x7C5E, 0x7C5E, 0x7C5E, 0xDCA6, 0xDCA6, 0x0920, 0x0920, 0x0920, 0xDCA6, 0xDCA6, 0x7C5E, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x7C5E, 0xDCA6, 0xDCA6, 0x0920, 0x0920, 0x0920, 0xDCA6, + 0xDCA6, 0x7C5E, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x7C5E, 0xDCA6, 0xDCA6, 0x0920, 0x0920, 0xDCA6, 0xDCA6, 0xDCA6, 0x7C5E, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x7C5E, 0xDCA6, 0xDCA6, 0xDCA6, 0x0920, +}; + +uint16_t Sprites::PLAYER_BITMAP2[] = { + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0xA4A0, 0xA4A0, 0x42C0, 0x21D0, 0x21D0, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0xA4A0, 0xA4A0, 0x84A8, 0x62B8, 0xD4FD, 0xD4FD, 0x00E0, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0xA4A0, 0xA4A0, 0x84A8, 0x83B0, 0x62B8, 0x41C8, 0x21D8, 0xD4FD, 0x00E0, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0xA4A0, 0xA4A0, 0x83A8, 0x63B8, 0x62C0, 0x41D0, 0x20D8, 0x00E0, 0x00E0, 0x00E0, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0xA4A0, 0x84A8, 0x83B0, 0x63B8, 0x62C0, 0x41C8, 0x21D0, 0x00E0, 0x00E0, 0x00E0, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0xA4A0, 0xA4A0, 0x84A8, 0x83B0, 0x63B8, 0x42C0, 0x42C8, 0x41C8, 0x00E0, 0x0920, 0x0920, 0x0920, + 0x0920, 0x7C5E, 0x7C5E, 0x7C5E, 0x0920, + 0xA4A0, 0xA4A0, 0x84A8, 0x83B0, 0x63B8, 0x63B0, 0x63B8, 0x0920, 0x0920, 0x7C5E, 0x7C5E, 0x7C5E, 0xDCA6, 0xDCA6, + 0xDCA6, 0x7C5E, 0x7C5E, 0x7C5E, 0xA4A0, 0xA4A0, 0xA4A0, 0xA4A0, 0x7C5E, 0x7C5E, 0x7C5E, 0xDCA6, 0xDCA6, 0xDCA6, + 0x0920, 0xDCA6, 0xDCA6, 0xDCA6, 0xDCA6, + 0xDCA6, 0xDCA6, 0x0920, 0x0920, 0xDCA6, 0xDCA6, 0xDCA6, 0xDCA6, 0xDCA6, 0xDCA6, 0x0920, 0x0920, 0x0920, 0x0920, + 0xDCA6, 0xDCA6, 0xDCA6, 0x0920, 0x0920, 0x0920, 0x0920, 0xDCA6, 0xDCA6, 0xDCA6, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, +}; + +uint16_t Sprites::PLAYER_BITMAP3[] = { + 0x0920, 0x0920, 0xDCA6, 0x7C5E, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x7C5E, 0xDCA6, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0xDCA6, 0x7C5E, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x7C5E, + 0xDCA6, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0xDCA6, 0x7C5E, 0x0920, 0xA4A0, 0xA4A0, 0x42C0, 0x21D0, 0x21D0, 0x0920, 0x7C5E, 0xDCA6, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0xDCA6, 0xDCA6, 0x7C5E, 0xA4A0, 0x84A8, 0x62B8, 0xD4FD, 0xD4FD, 0x00E0, 0xDCA6, 0xDCA6, + 0xDCA6, 0x0920, 0x0920, 0x0920, 0xDCA6, + 0xDCA6, 0xDCA6, 0x7C5E, 0x84A8, 0x83B0, 0x62B8, 0x41C8, 0x21D8, 0xD4FD, 0x00E0, 0xDCA6, 0xDCA6, 0x0920, 0x0920, + 0x0920, 0xDCA6, 0xDCA6, 0xDCA6, 0xDCA6, 0x7C5E, 0x63B8, 0x62C0, 0x41D0, 0x20D8, 0x00E0, 0x00E0, 0x00E0, 0xDCA6, + 0x0920, 0x0920, 0x0920, 0xDCA6, 0xDCA6, + 0xDCA6, 0xDCA6, 0x7C5E, 0x63B8, 0x62C0, 0x41C8, 0x21D0, 0x00E0, 0x00E0, 0x00E0, 0xDCA6, 0x0920, 0x0920, 0x0920, + 0xDCA6, 0xDCA6, 0xDCA6, 0xDCA6, 0x7C5E, 0x83B0, 0x63B8, 0x42C0, 0x42C8, 0x41C8, 0x00E0, 0xDCA6, 0xDCA6, 0x0920, + 0x0920, 0x0920, 0x0920, 0xDCA6, 0xDCA6, + 0xDCA6, 0x7C5E, 0x84A8, 0x83B0, 0x63B8, 0x63B0, 0x63B8, 0xDCA6, 0xDCA6, 0xDCA6, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0xDCA6, 0xDCA6, 0x7C5E, 0xA4A0, 0xA4A0, 0xA4A0, 0xA4A0, 0xDCA6, 0xDCA6, 0xDCA6, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, +}; + +uint16_t Sprites::PIPE_BOTTOM[] = { + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x5BF7, 0x0920, 0x0920, + 0x0920, 0x0920, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x0920, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x5BF7, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x5BF7, 0x0920, 0x0920, + 0x0920, 0x0920, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x0920, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x5BF7, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x5BF7, 0x0920, 0x0920, + 0x0920, 0x0920, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x0920, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x5BF7, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, + 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x96E6, 0x5BF7, + 0x5BF7, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, + 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x96E6, 0x5BF7, + 0x5BF7, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, + 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x96E6, 0x5BF7, + 0x5BF7, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, + 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x96E6, 0x5BF7, + 0x5BF7, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x5BF7, 0x5BF7, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x5BF7, 0x5BF7, + 0x96E6, 0x5BF7, 0x5BF7, 0x5BF7, 0x5BF7, 0x96E6, 0x5BF7, 0x5BF7, 0x5BF7, 0x5BF7, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, + 0x5BF7, 0x5BF7, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x5BF7, 0x5BF7, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x5BF7, + 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x5BF7, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x5BF7, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, + 0x5BF7, 0x5BF7, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x5BF7, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x5BF7, + 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x5BF7, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x5BF7, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, + 0x5BF7, 0x5BF7, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x5BF7, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x5BF7, + 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x5BF7, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x5BF7, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, + 0x0920, 0x5BF7, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x5BF7, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x5BF7, + 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x5BF7, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x5BF7, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, + 0x0920, 0x5BF7, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x5BF7, 0x0920, 0x96E6, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x5BF7, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, + 0x0920, 0x5BF7, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x5BF7, + 0x0920, 0x5BF7, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0098, 0x8298, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0080, 0x0090, 0x0098, 0x0098, 0x0098, + 0x0098, 0xC2BA, 0x0000, 0x0000, 0xC2BA, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0070, 0x0078, 0x0088, 0x0098, 0xC2BA, 0xC2BA, + 0xC2BA, 0x21CB, 0x0000, 0x0000, 0xC0EB, 0xE0EB, 0xE0EB, 0xE0EB, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0070, 0xC2BA, 0xC2BA, 0x21CB, 0x21CB, + 0x61D3, 0x0000, 0x0000, 0x0000, 0x0000, 0xE0EB, 0xE0EB, 0xE0EB, 0xE0EB, 0xE0EB, 0x0098, 0x0098, 0x0098, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0xC2BA, 0xC2BA, 0x21CB, 0x21CB, 0x61D3, + 0xA0E3, 0x0000, 0x0000, 0x0000, 0x0000, 0xE0EB, 0xE0EB, 0xE0EB, 0xE0EB, 0x80E3, 0xE0EB, 0x0098, 0x0098, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0xC2BA, 0x21CB, 0x60DB, 0x60DB, + 0xC0EB, 0x0000, 0x0000, 0x0000, 0x0000, 0xE0EB, 0x41F4, 0x41EC, 0x0920, 0x0920, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0xC2BA, 0x61D3, + 0xC0EB, 0xC0EB, 0x0000, 0x0000, 0x80E3, 0x0920, 0x0920, 0x0920, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0xE0EB, 0x0000, 0x0000, 0xE0EB, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, +}; + +uint16_t Sprites::PIPE_TOP[] = { + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, + 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, + 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, + 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, + 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, + 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, + 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, + 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, + 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, + 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, + 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, + 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, + 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, + 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, + 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, + 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, + 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, + 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, + 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, + 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, + 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, + 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, + 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, + 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, + 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, + 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, + 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, + 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, + 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, + 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, + 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, + 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, + 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, + 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, + 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, + 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, + 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, + 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, + 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, + 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0xE0EB, 0x0000, 0x0000, 0xE0EB, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, + 0x0090, 0xC2BA, 0x61D3, 0xC0EB, 0xC0EB, 0x0000, 0x0000, 0x80E3, 0x0920, 0x0920, 0x0920, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0070, 0x0070, 0x0070, 0xC2BA, 0x21CB, + 0x60DB, 0x60DB, 0xC0EB, 0x0000, 0x0000, 0x0000, 0x0000, 0xE0EB, 0x41F4, 0x41EC, 0x0920, 0x0920, 0x0098, 0x0098, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, + 0x0070, 0xC2BA, 0xC2BA, 0x21CB, 0x21CB, + 0x61D3, 0xA0E3, 0x0000, 0x0000, 0x0000, 0x0000, 0xE0EB, 0xE0EB, 0xE0EB, 0xE0EB, 0x80E3, 0xE0EB, 0x0098, 0x0098, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, + 0x0070, 0xC2BA, 0xC2BA, 0x21CB, 0x21CB, + 0x61D3, 0x0000, 0x0000, 0x0000, 0x0000, 0xE0EB, 0xE0EB, 0xE0EB, 0xE0EB, 0xE0EB, 0x0098, 0x0098, 0x0098, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0070, 0x0078, + 0x0088, 0x0098, 0xC2BA, 0xC2BA, 0xC2BA, + 0x21CB, 0x0000, 0x0000, 0xC0EB, 0xE0EB, 0xE0EB, 0xE0EB, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0080, 0x0090, + 0x0098, 0x0098, 0x0098, 0x0098, 0xC2BA, + 0x0000, 0x0000, 0xC2BA, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0090, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0070, 0x0070, 0x0070, 0x0078, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0070, 0x0070, 0x0098, 0x8298, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x96E6, 0x5BF7, 0x5BF7, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x5BF7, 0x0920, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x96E6, + 0x5BF7, 0x5BF7, 0x0920, 0x5BF7, 0x0920, 0x96E6, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, + 0x5BF7, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x96E6, 0x5BF7, + 0x5BF7, 0x0920, 0x5BF7, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x5BF7, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x5BF7, + 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x5BF7, + 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, + 0x0920, 0x5BF7, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x5BF7, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x5BF7, 0x96E6, + 0x5BF7, 0x5BF7, 0x0920, 0x5BF7, 0x0920, + 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, + 0x5BF7, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x5BF7, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x5BF7, 0x96E6, 0x5BF7, + 0x5BF7, 0x0920, 0x5BF7, 0x0920, 0x96E6, + 0x5BF7, 0x5BF7, 0x5BF7, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x5BF7, 0x5BF7, + 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x5BF7, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x5BF7, 0x96E6, 0x5BF7, 0x5BF7, + 0x0920, 0x5BF7, 0x0920, 0x96E6, 0x5BF7, + 0x5BF7, 0x5BF7, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x5BF7, 0x5BF7, 0x0920, + 0x96E6, 0x5BF7, 0x5BF7, 0x5BF7, 0x5BF7, 0x96E6, 0x5BF7, 0x5BF7, 0x5BF7, 0x5BF7, 0x96E6, 0x5BF7, 0x5BF7, 0x5BF7, + 0x5BF7, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, + 0x5BF7, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x0920, 0x0920, + 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, + 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x96E6, + 0x5BF7, 0x5BF7, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x0920, + 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x96E6, 0x5BF7, + 0x5BF7, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x0920, 0x0920, + 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, + 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x0920, 0x96E6, 0x5BF7, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x96E6, + 0x5BF7, 0x5BF7, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x5BF7, 0x0920, 0x0920, + 0x0920, 0x0920, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x0920, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x5BF7, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x5BF7, 0x0920, 0x0920, 0x0920, + 0x0920, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x0920, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x5BF7, 0x0920, + 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, + 0x0920, 0x0920, 0x0920, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x0920, + 0x5BF7, 0x0920, 0x0920, 0x0920, 0x0920, 0x5BF7, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x5BF7, 0x0920, 0x0920, + 0x0920, 0x0920, +}; + diff --git a/sprites.h b/sprites.h new file mode 100644 index 0000000..a6c3b1f --- /dev/null +++ b/sprites.h @@ -0,0 +1,29 @@ +/** + * Copyright 2021 Andre Cipriani Bandarra + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef FLAPPY_PICO_SPRITES_H +#define FLAPPY_PICO_SPRITES_H + +struct Sprites { +public: + static uint16_t PLAYER_BITMAP[]; + static uint16_t PLAYER_BITMAP2[]; + static uint16_t PLAYER_BITMAP3[]; + static uint16_t PIPE_BOTTOM[]; + static uint16_t PIPE_TOP[]; +}; + +#endif //FLAPPY_PICO_SPRITES_H