[
  {
    "path": ".gitignore",
    "content": "obj\nbin"
  },
  {
    "path": "Makefile",
    "content": "# Exported from https://tiplanet.org/pb/ on Sun Sep  6 17:20:50 2020 (CEST)\n\n# ----------------------------\n# Program Options\n# ----------------------------\n\nNAME         ?= CNTAGION\nICON         ?= icon.png\nDESCRIPTION  ?= \"Contagion CE 1.0.0\"\nCOMPRESSED   ?= YES\nARCHIVED     ?= YES\n\n# ----------------------------\n# Compile Options\n# ----------------------------\n\n# That one gets passed by builder.sh inside EXTRA_CFLAGS\nOPT_MODE      =\nEXTRA_CFLAGS ?= -Oz -W -Wall -Wwrite-strings -Wno-unknown-pragmas -Wno-incompatible-library-redeclaration -Wno-main-return-type\n\n# ----------------------------\n# Debug Options\n# ----------------------------\n\nOUTPUT_MAP   ?= NO\n\ninclude $(CEDEV)/include/.makefile\n\n"
  },
  {
    "path": "README.md",
    "content": "# CONTAGION CE\nContagion CE is a Plague Inc. inspired game written in C for the TI-84 Plus CE calculator.\n\n### Download\n**If you have a physical TI-84 Plus CE or TI-83 Premium CE.**\n1. Download the latest release of [CONTAGION CE](https://github.com/EverydayCodeNet/CONTAGION-CE/releases)\n2. Unzip these files to your desktop.\n3. Download [TI-Connect CE](https://education.ti.com/en/software/details/en/CA9C74CAD02440A69FDC7189D7E1B6C2/swticonnectcesoftware).\n4. Connect your calculator to your computer via USB.\n5. Go to the File Explorer tab in TI-Connect CE and drag and drop these files.\n\n**If you're using an emulator ([TI-Smartview CE](https://education.ti.com/en/software/details/en/BE8220257AA241148986628D6EE332E5/ti-smartview-ce-for-ti-84-plus-family)).**\n1. Download the latest release of [CONTAGION CE](https://github.com/EverydayCodeNet/CONTAGION-CE/releases)\n2. Unzip these files to your desktop.\n3. Go to the File Explorer tab and drag and drop the files to your calculator.\n\n## Screenshots\n![Progress Bar](https://user-images.githubusercontent.com/59743315/88998471-1ec4f700-d2c0-11ea-9d27-805e5e90abde.png)\n![Transportation View](https://user-images.githubusercontent.com/59743315/88999438-92680380-d2c2-11ea-9f43-c8621404f8f5.png)\n\n## How to Play\n1. Download and transfer the latest release of Contagion CE to your TI-84 Plus CE or TI-83 Premium CE.\n2. Press the [Zoom] key to start the game. \n3. Choose your virus name using the letters above your keypad. Press [Enter] when done.\n4. Pick your starting location using the arrow keys and press [Enter] when done.\n5. Watch the world die.\n\n## Controls\n- [^][v][<][>] change selected contintent.\n- [Mode] enter/exit transportation view.\n- [Clear] exit game.\n- [Graph] open the mutation menu.\n\n## Credits\nCoding & Graphics: ![epsilon5](https://www.cemetech.net/downloads/users/epsilon5)\nThis program was made possible by the OPTIX graphics library made by epsilon5, a stable release not available.\n"
  },
  {
    "path": "src/contagion.h",
    "content": "//function declarations\r\nvoid UpdateSimulation(void);\r\nvoid UpdateNews(int vVictory, int wVictory);\r\nvoid InitializeSimulation(void);\r\nvoid RenderSimulation(void);\r\nuint8_t MainMenu(void);\r\nvoid InitializeMap(void);\r\nvoid RenderSelected(void);\r\nvoid HandleKeys(void);\r\nvoid SaveData(void);\r\nvoid LoadData(void);\r\nvoid DispNews(void);\r\n\n\n//structs and things\n\n//general game data, add more as needed\ntypedef struct {\n    long ticksplayed;\n    int numinfected;\n    int numdead;\n    int numrecovered;\n    uint8_t selected;\n    bool canpress;\n    uint8_t toupdate;\n    uint8_t cursorx;\n    uint8_t cursory;\n    bool cursoractive;\n    //virus and world victory\n    uint8_t vVictory;\n    uint8_t wVictory;\n    uint8_t totaldead;\n    uint8_t dnapoints;\n    //control view\n    uint8_t viewmode;\n    //news\n    char news[100];\n    uint8_t newsloops;\n    uint8_t initialport;\n    uint8_t endport;\n    bool connectionmade;\n} game_t;\n\n//virus data, will need more later as well\ntypedef struct {\n    //a number out of 100 probably\n    uint8_t probinfection;\n    uint8_t probdeath;\n    //resistance is basically the same as probdeath\n    uint8_t vResistance;\n    uint8_t vSpeed;\n    uint8_t vUnrest;\n    char name[20];\n} virus_t;\n\n//region data (to be added later)\ntypedef struct {\n    //\"north america\" is 13 characters long, plus 1 for the null terminating byte\n    char name[14];\n    uint8_t *data;\n    uint16_t x;\n    uint8_t y;\n    gfx_sprite_t *spr;\n    //gfx_sprite_t *outlinespr;\n    uint16_t populationdensity;\n    int squares;\n    int squaresinfected;\n    int squaresdead;\n    int squaresrecovered;\n    //each region has different probability of infection\n    //increase probinfection with mutations\n    uint8_t probinfection;\n} region_t;\n\ntypedef struct {\n    uint8_t x;\n    uint8_t y;\n    bool closed;\n    uint8_t region;\n    uint8_t closethreshold;\n} port_t;\n"
  },
  {
    "path": "src/main.c",
    "content": " ////////////////////////////////////////\r\n// Contagion CE (1.0.0)\r\n// Author: epsilon5, EverydayCode\r\n// License: NA\r\n// Description: Plague, Inc. like game for the TI-84 Plus CE\r\n////////////////////////////////////////\r\n\r\n//for the sprites\r\n#include \"sprites/sprites.h\"\r\n\r\n//OPTIX Graphics Libraries by epsilon5, stable release not available. Contact epsilon5 @ https://www.cemetech.net/downloads/users/epsilon5.\r\n#include \"sprites/optix.h\"\r\n/* Keep these headers */\r\n#include <tice.h>\r\n\r\n#include \"contagion.h\"\r\n\r\n/* Standard headers - it's recommended to leave them included */\r\n#include <stdio.h>\r\n#include <stdlib.h>\r\n#include <string.h>\r\n#include <stdbool.h>\r\n#include <stdint.h>\r\n#include <stddef.h>\r\n/* Other available headers */\r\n// including stdarg.h, setjmp.h, assert.h, ctype.h, float.h, iso646.h, limits.h, errno.h\r\n/* Available libraries */\r\n// including lib/ce/graphc.h, lib/ce/fileioc.h, and lib/ce/keypadc.h\r\n// Sample: #include <lib/ce/graphc.h>\r\n#include <graphx.h>\r\n#include <fileioc.h>\r\n#include <keypadc.h>\r\n#include <intce.h>\r\n#include <tice.h>\r\n#include <math.h>\r\n\r\n\r\nchar *vname = NULL;\r\n\r\ngame_t game;\r\n\r\nvirus_t virus;\r\n\r\n//going based on continent here\r\nregion_t region[7];\r\n\r\nport_t port[22];\r\n//functions\r\n\r\nvoid SaveData(void) {\r\n    ti_var_t slota;\r\n    uint8_t i;\r\n    ti_CloseAll();\r\n    slota = ti_Open(\"CNTGNDAT\", \"w+\");\r\n    ti_Write(&game, sizeof(game), 1, slota);\r\n    ti_Write(&virus, sizeof(virus), 1, slota);\r\n    //ti_Write(&transport, sizeof(transport), 1, slota);\r\n    for (i = 0; i < 7; i++) ti_Write(region[i].data, region[i].spr->width * region[i].spr->height, 1, slota);\r\n    //don't need this line, everything else will be a constant and initialized\r\n    //ti_Write(&region, sizeof(region), 1, slota);\r\n    for (i = 0; i < 7; i++) free(region[i].spr);\r\n}\r\n\r\nvoid LoadData(void) {\r\n    ti_var_t slota;\r\n    uint8_t i;\r\n    ti_CloseAll();\r\n    if (slota = ti_Open(\"CNTGNDAT\", \"r\")) {\r\n        //need some check here to initialize everything\r\n        //probably problematic to read directly to the pointer that we had last time, need to fix that\r\n        ti_Read(&game, sizeof(game), 1, slota);\r\n        ti_Read(&virus, sizeof(virus), 1, slota);\r\n        //ti_Read(&transport, sizeof(transport), 1, slota);\r\n        //11 kb of data...\r\n        for (i = 0; i < 7; i++) ti_Read(region[i].data, region[i].spr->width * region[i].spr->height, 1, slota);\r\n    }\r\n}\r\n\r\n//later a function to infect a specific point on the map will come in handy (for the updating, and for the planes and such)\r\n//returns true if successful\r\nbool InfectCoordinate(int x, int y) {\r\n    uint8_t i;\r\n    int infectsquare;\r\n    for (i = 0; i < 7; i++) {\r\n        if (x > region[i].x && y > region[i].y && (y - region[i].y < region[i].spr->height) && (x - region[i].x < region[i].spr->width)) {\r\n            infectsquare = (y - region[i].y) * region[i].spr->width + (x - region[i].x);\r\n            if (region[i].data[infectsquare] == 255) {\r\n                region[i].data[infectsquare] = 224;\r\n                return true;\r\n            }\r\n        }\r\n    }\r\n    return false;\r\n}\r\n\r\n//will be the whole bottom toolbar now\r\nvoid RenderBottomToolbar(void) {\r\n    char str1[100];\r\n    region_t *r = &region[game.selected];\r\n    //pass victory percentages and infection percentages per region\r\n    gfx_SetTextScale(1, 1);\r\n    gfx_SetColor(255);\r\n    gfx_HorizLine(0, 209, 320);\r\n    //needs to be virus name r->vname\r\n    gfx_SetColor(0);\r\n    //fill in the bottom of the screen\r\n    gfx_FillRectangle(0, 210, 320, 30);\r\n    //for the selected region\r\n    if (game.viewmode == 1) sprintf(str1, \"%s -> %s\", region[port[game.initialport].region].name, region[port[game.endport].region].name);\r\n    else if (game.viewmode == 0) strcpy(str1, region[game.selected].name);\r\n    if (game.viewmode == 0) {\r\n        //gfx_ScaledTransparentSprite_NoClip(r->outlinespr, r->x * 2, r->y * 2, 2, 2);\r\n        gfx_SetColor(224);\r\n        gfx_Rectangle(r->x * 2, r->y * 2, r->spr->width * 2, r->spr->height * 2);\r\n        //gfx_Rectangle(r->x * 2 + 1, r->y * 2 + 1, r->spr->width * 2 - 2, r->spr->height * 2 - 2);\r\n    //make an outline\r\n        gfx_SetColor(0);\r\n    }\r\n    gfx_FillRectangle(160 - (gfx_GetStringWidth(str1) + 10) / 2, 197, gfx_GetStringWidth(str1) + 10, 13);\r\n    gfx_PrintStringXY(str1, 160 - gfx_GetStringWidth(str1) / 2, 200);\r\n    gfx_SetColor(255);\r\n    gfx_HorizLine(160 - (gfx_GetStringWidth(str1) + 10) / 2, 197, gfx_GetStringWidth(str1) + 10);\r\n    gfx_VertLine(160 - (gfx_GetStringWidth(str1) + 10) / 2, 197, 13);\r\n    gfx_VertLine(160 + (gfx_GetStringWidth(str1) + 10) / 2, 197, 13);\r\n    //x, y, width, x, height\r\n    //gfx_FillRectangle(5,225,100,10);\r\n    //gfx_FillRectangle(215,225,100,10);\r\n    //draw the outlines on top\r\n    //world\r\n    gfx_SetColor(22);\r\n    gfx_FillRectangle(216,225,game.wVictory,10);\r\n    //virus\r\n    gfx_SetColor(224);\r\n    gfx_FillRectangle(5,225,game.vVictory,10);\r\n    gfx_SetColor(255);\r\n    gfx_Rectangle(5,225,100,10);\r\n    gfx_Rectangle(216,225,100,10);\r\n    gfx_VertLine(108, 210, 30);\r\n    gfx_VertLine(212, 210, 30);\r\n    //percent victory text on progress bars?\r\n    sprintf(str1, \"%s : %d%s\", virus.name, game.vVictory, \"%\");\r\n    gfx_PrintStringXY(str1,5,215);\r\n    sprintf(str1, \"%d%s : WORLD\", game.wVictory, \"%\");\r\n    gfx_PrintStringXY(str1,315 - gfx_GetStringWidth(str1),215);\r\n    if (game.viewmode == 0) {\r\n        sprintf(str1, \"%d%s infected\", r->squaresinfected * 100 / r->squares, \"%\");\r\n        gfx_PrintStringXY(str1, 160 - gfx_GetStringWidth(str1) / 2, 215);\r\n        sprintf(str1, \"%d%s dead\", r->squaresdead * 100 / r->squares, \"%\");\r\n        gfx_PrintStringXY(str1, 160 - gfx_GetStringWidth(str1) / 2, 227);\r\n    } else {\r\n        strcpy(str1, \"CONNECTION : \");\r\n        gfx_PrintStringXY(str1, 160 - gfx_GetStringWidth(str1) / 2, 215);\r\n        if (game.connectionmade) strcpy(str1, \"success\");\r\n        else strcpy(str1, \"failure\");\r\n        gfx_PrintStringXY(str1, 160 - gfx_GetStringWidth(str1) / 2, 227);\r\n    }\r\n    /*sprintf(str1, \"Number : %d\", r->squares);\r\n    gfx_PrintStringXY(str1, 5, 230);\r\n    sprintf(str1, \"Infected : %d\", r->squaresinfected);\r\n    gfx_PrintStringXY(str1, 5, 215);\r\n    sprintf(str1, \"Percentage infected : %d\", r->squaresinfected * 100 / r->squares);\r\n    gfx_PrintStringXY(str1, 5, 200);*/\r\n}\r\n\r\nvoid RenderTopToolbar(void) {\r\n    const char *viewmode[2] = {\"Overview\", \"Transportation view\"};\r\n    //news is global- should update based on individual continent percentages\r\n    //x, y, width, x, height\r\n    char str1[100];\r\n    uint8_t stringwidth;\r\n    stringwidth = gfx_GetStringWidth(viewmode[game.viewmode]);\r\n    gfx_SetColor(0);\r\n    gfx_FillRectangle(0, 0, 320, 34);\r\n    DispNews();\r\n    gfx_FillRectangle(0, 7, 45, 8);\r\n    gfx_SetColor(224);\r\n    gfx_FillRectangle(5,5,38,11);\r\n    gfx_SetTextScale(1, 1);\r\n    gfx_PrintStringXY(\"NEWS:\", 7, 7);\r\n    gfx_SetColor(255);\r\n    gfx_HorizLine(0, 33, 320);\r\n    gfx_HorizLine(0, 20, 320);\r\n    gfx_PrintStringXY(\"DNA Points: \",5,23);\r\n    gfx_SetTextFGColor(224);\r\n    gfx_PrintInt(game.dnapoints,1);\r\n    gfx_SetTextFGColor(255);\r\n    gfx_PrintStringXY(\"[graph]: mutate\", 315 - gfx_GetStringWidth(\"[graph]: mutate\"), 23);\r\n    if (kb_Data[1] & kb_Mode) {\r\n        gfx_SetColor(0);\r\n        gfx_FillRectangle(155 - stringwidth / 2, 112, stringwidth + 10, 16);\r\n        gfx_SetColor(255);\r\n        gfx_Rectangle(155 - stringwidth / 2, 112, stringwidth + 10, 16);\r\n        optix_WhiText();\r\n        gfx_PrintStringXY(viewmode[game.viewmode], 160 - stringwidth / 2, 116);\r\n    }\r\n}\r\n\r\nvoid SetNews(const char str1[]) {\r\n    strcpy(game.news, str1);\r\n    game.newsloops = 30;\r\n}\r\n\r\nvoid DispNews(void) {\r\n    if (game.newsloops > 0) {\r\n        if (game.newsloops < 25) gfx_PrintStringXY(game.news, 45 - ((25 - game.newsloops) * 1.5), 7);\r\n        else gfx_PrintStringXY(game.news, 45, 7);\r\n        game.newsloops--;\r\n    } else gfx_PrintStringXY(\"No new news.\", 45, 7);\r\n}\r\n\r\nvoid UpdateNews(int vVictory, int wVictory) {\r\n    //see mockup\r\n    //it was overflowing when it was 40 (\"TEST sees first\r\n    //deaths in South America.\" or similar is a few too many characters)\r\n    //well it is only one too big, that's 40 characters and it needs a null terminating byte too\r\n    char str1[100];\r\n    uint8_t i;\r\n    int rPer;\r\n    //eventaully change to user's virus name\r\n    //display events until new event\r\n    for (i = 0; i < 7; i++) {\r\n        region_t *r = &region[i];\r\n        rPer = r->squaresinfected * 100 / r->squares;\r\n        if (vVictory > 50 && vVictory < 58) {\r\n           sprintf(str1,\"%s has infected half the world.\",virus.name);\r\n           SetNews(str1);\r\n        } else if (vVictory > 1 && vVictory < 10) {\r\n           sprintf(str1,\"Scientists discover %s.\",virus.name);\r\n           SetNews(str1);\r\n        } else if (vVictory > 75) {\r\n            SetNews(\"The world is looking grim.\");\r\n        } else if (wVictory > 10 && wVictory < 20) {\r\n            SetNews(\"Scientists start developing a cure.\");\r\n        } else if (wVictory > 80) {\r\n            SetNews(\"Clinical trials underway for cure.\");\r\n        } else if (rPer > 5 && rPer < 15) {\r\n            sprintf(str1, \"%s discovered in %s.\",virus.name,r->name);\r\n            SetNews(str1);\r\n        } else if (rPer > 50 && rPer < 75) {\r\n            sprintf(str1, \"%s seizes %s.\",virus.name,r->name);\r\n            SetNews(str1);\r\n        } else if (r->squaresdead > 0 && r->squaresdead < 10) {\r\n            sprintf(str1,\"%s sees first deaths in %s.\", virus.name,r->name);\r\n            SetNews(str1);\r\n        }\r\n    }\r\n    gfx_SetTextScale(1,1);\r\n}\r\n\r\n//temporary menu\r\n//can be redone to be more neat\r\nvoid MutationMenu() {\r\n    int selected = 0;\r\n    int cost = 0;\r\n    //x is 40 to 280\r\n    //y is 60 to 180\r\n    //we don't need this, it's already done\r\n    //the new menu stuff will do it all for us\r\n    struct optix_menu_t *m = &optix_menu[optix_guidata.currmenu];\r\n    const char *entries = \"Transmission`Resistance`Civil Unrest`\";\r\n    const char *title = \"Mutate\";\r\n    uint8_t maxlines = 3;\r\n    uint8_t textspacing = 15;\r\n    uint8_t width = 160;\r\n    uint8_t xprint;\r\n    uint8_t yprint;\r\n    uint8_t numlines;\r\n    uint8_t currline;\r\n    uint8_t currentselection;\r\n    uint8_t titlewidth = 12;\r\n    char temp[2] = \" \";\r\n    bool enterpressed;\r\n    \r\n    do {\r\n        kb_Scan();\r\n\r\n        gfx_SetDrawBuffer();\r\n        if (kb_Data[7] & kb_Up) selected--; gfx_SwapDraw();\r\n        if (kb_Data[7] & kb_Down) selected++; gfx_SwapDraw();\r\n        if (selected == -1) selected = 2; gfx_SwapDraw();\r\n        if (selected == 3) selected = 0; gfx_SwapDraw();\r\n        gfx_SetColor(0);\r\n        gfx_FillRectangle(100,60,120,120);\r\n        gfx_SetTextScale(2,2);\r\n        optix_WhiText();\r\n        gfx_PrintStringXY(\"MUTATE\",160 - (gfx_GetStringWidth(\"MUTATE\") / 2),70);\r\n        gfx_SetTextScale(1,1);\r\n        gfx_SetColor(255);\r\n        gfx_HorizLine(100,90,120);\r\n        //set text color with selected\r\n        optix_WhiText();\r\n        if (selected == 0) {\r\n            gfx_SetTextFGColor(224);\r\n            gfx_SetTextTransparentColor(0);\r\n            cost = virus.vSpeed + 1;\r\n        }\r\n        gfx_PrintStringXY(\"TRANSMISSION \",105,100);\r\n        gfx_PrintInt(virus.vSpeed + 1,1);\r\n        optix_WhiText();\r\n        if (selected == 1) {\r\n            gfx_SetTextFGColor(224);\r\n            gfx_SetTextTransparentColor(0);\r\n            cost = virus.vResistance + 1;\r\n        }\r\n        gfx_PrintStringXY(\"RESISTANCE \",105,115);\r\n        gfx_PrintInt(virus.vResistance + 1,1);\r\n        optix_WhiText();\r\n        if (selected == 2) {\r\n            gfx_SetTextFGColor(224);\r\n            gfx_SetTextTransparentColor(0);\r\n            cost = virus.vUnrest + 1;\r\n        }\r\n        gfx_PrintStringXY(\"CIVIL UNREST \",105,130);\r\n        gfx_PrintInt(virus.vUnrest + 1,1);\r\n        gfx_SetTextFGColor(224);\r\n        gfx_SetTextTransparentColor(0);\r\n        gfx_PrintStringXY(\"COST: \",215 - (gfx_GetStringWidth(\"COST: 10\")),170);\r\n        //cost is upgrade + 1\r\n\r\n        gfx_PrintInt(cost,1);\r\n        optix_WhiText();\r\n        gfx_SwapDraw();\r\n        //enter and game points is greater than selected cost\r\n        if (kb_Data[6] & kb_Enter && game.dnapoints >= cost) {\r\n            if (selected == 0) virus.vSpeed++;\r\n            if (selected == 1) virus.vResistance++;\r\n            if (selected == 2) virus.vUnrest++;\r\n            game.dnapoints = game.dnapoints - cost;\r\n        }\r\n    } while(kb_Data[6] != kb_Enter || kb_Data[6] != kb_Graph);\r\n}\r\n\r\nvoid Progress(void) {\r\n    int totalInfected = 0;\r\n    int totalDead = 0;\r\n\r\n    int i;\r\n    for (i = 0; i < 7; i++) {\r\n        totalInfected += region[i].squaresinfected;\r\n        totalDead += region[i].squaresdead;\r\n    }\r\n\r\n    game.vVictory = (totalInfected * 100 / 4410);\r\n    //not working\r\n    game.totaldead = (totalDead * 100 / 4410);\r\n    //rework later\r\n    if (game.vVictory % 20 == 0 && game.vVictory != 0 && game.dnapoints < game.vVictory / 20) {\r\n        game.dnapoints++;\r\n    }\r\n    //the higher the virus speed, the higher the cure speed\r\n    //start cure at percent dead?\r\n    if (game.vVictory > 5 && game.wVictory < 100) if (randInt(0, 40 + virus.vResistance) == 0) game.wVictory++;\r\n}\r\n\r\nvoid RenderView() {\r\n    uint8_t i;\r\n    //check if region of origin is not destination\r\n    //if area of port is infected, percent chance that it infects random other port\r\n\r\n    //view 0 - default\r\n    //view 1 - transportation //sorry I changed it to fix an error on line 396 (said \"game.viewmode\" there) np you can build\r\n    //if (game.viewmode == 0)\r\n    if (game.viewmode == 1) {\r\n        //get port data\r\n    }\r\n        //default view\r\n}\r\n\r\nvoid UpdateSelectedRegion(void) {\r\n    //ripped from OPTIX\r\n    int tryx;\r\n    int tryy;\r\n    uint8_t closestbutton;\r\n    int closestbuttonscore;\r\n    int buttonscore;\r\n    uint8_t i;\r\n    int buttonsensitivity = 3;\r\n    region_t *c;\r\n    i = 0;\r\n    tryx = 0;\r\n    tryy = 0;\r\n    closestbuttonscore = 10000;\r\n    closestbutton = 0;\r\n    buttonscore = 0;\r\n    if (game.canpress) {\r\n        kb_Scan();\r\n        if (kb_Data[7] & kb_Left) tryx--;\r\n        if (kb_Data[7] & kb_Right) tryx++;\r\n        if (kb_Data[7] & kb_Up) tryy--;\r\n        if (kb_Data[7] & kb_Down) tryy++;\r\n        if (tryx == 0 && tryy == 0) return;\r\n        c = &region[game.selected];\r\n        for (i = 0; i < 7; i++) {\r\n            region_t *b = &region[i];\r\n            if (tryx == -1) {\r\n                if (b->x < c->x) buttonscore = (c->x - b->x) + (abs(b->y - c->y)) * buttonsensitivity;\r\n                else buttonscore = 10000;\r\n            } else if (tryx == 1) {\r\n                if (b->x > c->x) buttonscore = (b->x - c->x) + (abs(b->y - c->y)) * buttonsensitivity;\r\n                else buttonscore = 10000;\r\n            } else if (tryy == -1) {\r\n                if (b->y < c->y) buttonscore = (c->y - b->y) + (abs(b->x - c->x)) * buttonsensitivity;\r\n                else buttonscore = 10000;\r\n            } else if (tryy == 1) {\r\n                if (b->y > c->y) buttonscore = (b->y - c->y) + (abs(b->x - c->x)) * buttonsensitivity;\r\n                else buttonscore = 10000;\r\n            } else closestbuttonscore = 10000;\r\n            if (buttonscore < closestbuttonscore) {\r\n                closestbutton = i;\r\n                closestbuttonscore = buttonscore;\r\n            }\r\n        }\r\n        if (closestbuttonscore < 5000) game.selected = closestbutton;\r\n        game.canpress = false;\r\n    }\r\n}\r\n\r\nvoid UpdateSimulation(void) {\r\n    uint8_t x;\r\n    uint8_t y;\r\n    uint8_t i;\r\n    int16_t infectdir;\r\n    int hitx;\r\n    int hity;\r\n    region_t *r = &region[game.toupdate];\r\n    x = 0;\r\n    y = 0;\r\n    infectdir = 1;\r\n    //reset these\r\n    r->squares = 0;\r\n    r->squaresrecovered = 0;\r\n    r->squaresinfected = 0;\r\n    r->squaresdead = 0;\r\n    for (x = 0; x < r->spr->width; x++) {\r\n        //because this is so slow\r\n        HandleKeys();\r\n        for (y = 0; y < r->spr->height; y++) {\r\n            if (r->data[y * r->spr->width + x] == 224) {\r\n                //kill (eventually based on virus lethality, 0-100)\r\n                //infect randomly based on probability of infection, in a random direction\r\n                //increase prob infection with dna points\r\n                if (randInt(0,10 - virus.vSpeed) == 0) {\r\n                    infectdir = ((y + randInt(-1, 1)) * r->spr->width) + x + randInt(-1, 1);\r\n                    if (r->data[infectdir] == 255) {\r\n                        r->data[infectdir] = 224;\r\n                    } else if (r->data[infectdir] != 224) {\r\n                        //check if that point is on any of the other regions\r\n                        InfectCoordinate(x + r->x, y + r->y);\r\n                    }\r\n                }\r\n                //kill\r\n                if (randInt(0, 100 - virus.probdeath) == 0) r->data[y * r->spr->width + x] = 64;\r\n                r->squares++;\r\n                r->squaresinfected++;\r\n            } else if (r->data[y * r->spr->width + x] == 64) {\r\n                r->squares++;\r\n                r->squaresinfected++;\r\n                r->squaresdead++;\r\n            } else if (r->data[y * r->spr->width + x] == 255) r->squares++;\r\n        }\r\n    }\r\n    game.toupdate++;\r\n    if (game.toupdate > 6) game.toupdate = 0;\r\n}\r\n\r\nvoid UpdateTransportation(void) {\r\n    //so we can draw lines later\r\n    uint8_t probinfection;\r\n    uint8_t i;\r\n    //stop checking for closed ports\r\n    game.initialport = randInt(0, 21);\r\n    game.endport = randInt(0, 21);\r\n\r\n    //this needs to be less common, but i think that fixes the problem\r\n    probinfection = region[port[game.initialport].region].squaresinfected * 100 / region[port[game.initialport].region].squares;\r\n\r\n    //close ports\r\n    if (probinfection > port[game.initialport].closethreshold) port[game.initialport].closed = true;\r\n\r\n    //too many if statements\r\n    if (game.initialport != game.endport) {\r\n       if (port[game.initialport].closed != true && port[game.endport].closed != true) {\r\n           //if initial port is infected\r\n           game.connectionmade = true;\r\n           if (randInt(0, 100 - probinfection - virus.vUnrest) == 0) {\r\n            InfectCoordinate(port[game.endport].x, port[game.endport].y);\r\n           }\r\n       } else {\r\n           game.connectionmade = false;\r\n       }\r\n    }\r\n}\r\n\r\n\r\nvoid HandleKeys(void) {\r\n    kb_Scan();\r\n    if (!kb_AnyKey()) game.canpress = true;\r\n\r\n    if (game.viewmode == 0) UpdateSelectedRegion();\r\n\r\n    if (kb_Data[1] & kb_Mode && game.canpress) {\r\n        game.viewmode++;\r\n        if (game.viewmode > 1) game.viewmode = 0;\r\n        game.canpress = false;\r\n    }\r\n}\r\n\r\nvoid InitializePorts(void) {\r\n    uint8_t i;\r\n    uint8_t x[22] = {12, 28, 37, 54, 34, 30, 48, 84, 74, 94, 94, 68, 86, 112, 128, 138, 134, 132, 126, 146, 154, 146};\r\n    uint8_t y[22] = {46, 50, 40, 24, 62, 72, 74, 84, 60, 80, 52, 44, 36, 54, 50, 46, 58, 66, 68, 84, 94, 70};\r\n    uint8_t region[22] = {5, 5, 5, 4, 6, 6, 6, 1, 1, 1, 2, 3, 3, 2, 2, 2, 2, 7, 7, 7, 7, 7};\r\n    uint8_t closethreshold[22] = {20, 70, 50, 30, 50, 90, 60, 60, 30, 40, 50, 40, 40, 50, 80, 40, 50, 40, 50, 90, 50, 40};\r\n    for (i = 0; i < 22; i++) {\r\n        port_t *p = &port[i];\r\n        p->x = x[i];\r\n        p->y = y[i];\r\n        p->closethreshold = closethreshold[i];\r\n        //because I'm an idiot\r\n        p->region = region[i] - 1;\r\n        p->closed = false;\r\n    }\r\n}\r\n\r\n\r\nvoid InitializeMap(void) {\r\n    uint8_t i;\r\n    char *name[7] = {\"Africa\", \"Asia\", \"Europe\", \"Greenland\", \"North America\", \"South America\", \"Oceania\"};\r\n    uint16_t x[7] = {117, 169, 127, 90, 0, 49, 252};\r\n    uint8_t y[7] = {83, 37, 46, 35, 43, 114, 130};\r\n    //store all the names to the structs\r\n    for (i = 0; i < 7; i++) strcpy(region[i].name, name[i]);\r\n    //store x and y coordinates\r\n    for (i = 0; i < 7; i++) {\r\n        //half size now so divide by 2, will make calcs easier\r\n        region[i].x = x[i] / 2;\r\n        region[i].y = y[i] / 2;\r\n        //0/0 == -1? Meant to fix that\r\n        region[i].squares = 1;\r\n        region[i].squaresinfected = 0;\r\n        region[i].squaresdead = 0;\r\n    }\r\n    //sprite things\r\n    region[0].spr = africa;\r\n    //region[0].outlinespr = africa_outlined;\r\n    region[1].spr = asia;\r\n    //region[1].outlinespr = asia_outlined;\r\n    region[2].spr = europe;\r\n    //region[2].outlinespr = europe_outlined;\r\n    region[3].spr = greenland;\r\n    //region[3].outlinespr = greenland_outlined;\r\n    region[4].spr = northamerica;\r\n    //region[4].outlinespr = northamerica_outlined;\r\n    region[5].spr = southamerica;\r\n    //region[5].outlinespr = southamerica_outlined;\r\n    region[6].spr = oceania;\r\n    //region[6].outlinespr = oceania_outlined;\r\n    //accessing 3rd element because 1 and 2 are used for height and width\r\n    region[0].data = &africa_data[2];\r\n    region[1].data = &asia_data[2];\r\n    region[2].data = &europe_data[2];\r\n    region[3].data = &greenland_data[2];\r\n    region[4].data = &northamerica_data[2];\r\n    region[5].data = &southamerica_data[2];\r\n    region[6].data = &oceania_data[2];\r\n    //ports\r\n}\r\n\r\nvoid InitializeSimulation(void) {\r\n    //continent data will go here\r\n    virus.probinfection = 99;\r\n    virus.probdeath = 10;\r\n    //virus.vSpeed = 25;\r\n    game.toupdate = 0;\r\n}\r\n\r\n\r\nvoid DrawMap(void) {\r\n    uint8_t i;\r\n    for (i = 0; i < 7; i++) gfx_ScaledTransparentSprite_NoClip(region[i].spr, region[i].x * 2, region[i].y * 2, 2, 2);\r\n}\r\n\r\nuint8_t MainMenu(void) {\r\n    bool keypress;\r\n    uint8_t keypressed;\r\n    uint8_t i = 0;\r\n    char *menutext[3] = {\"RESTART\", \"PLAY\", \"QUIT\"};\r\n    keypressed = 3;\r\n    keypress = false;\r\n    //partial redraw is our friend here, drawing the map takes a lot of time\r\n    gfx_FillScreen(18);\r\n    DrawMap();\r\n    gfx_Blit(1);\r\n    while (kb_AnyKey()) kb_Scan();\r\n    while ((keypressed == 3) || (keypress == true)) {\r\n        kb_Scan();\r\n        //update star positions\r\n        //draw everything\r\n        //left\r\n        if (kb_Data[1] & kb_Yequ) {\r\n            keypress = true;\r\n            keypressed = 0;\r\n        }\r\n        //right\r\n        if (kb_Data[1] & kb_Graph || kb_Data[6] & kb_Clear) {\r\n            keypress = true;\r\n            keypressed = 2;\r\n        }\r\n        //center\r\n        if (kb_Data[1] & kb_Zoom) {\r\n            keypress = true;\r\n            keypressed = 1;\r\n        }\r\n        //logo, cool\r\n        gfx_SetTextScale(2, 2);\r\n        optix_WhiText();\r\n        gfx_SetTextFGColor(224);\r\n        gfx_PrintStringXY(\"CONTAGION\", 160 - gfx_GetStringWidth(\"CONTAGION\") / 2, 7);\r\n        gfx_SetColor(224);\r\n        gfx_HorizLine(50, 30, 220);\r\n        gfx_SetTextScale(1, 1);\r\n        optix_WhiText();\r\n        //going to do something different here, make some tabs at the bottom\r\n        for (i = 0; i < 3; i++) {\r\n            //first rectangle\r\n            if (i == keypressed) gfx_SetColor(224);\r\n            else gfx_SetColor(0);\r\n            gfx_FillRectangle(i * 107, 230, 107, 10);\r\n            //second rectangle, 10 in\r\n            gfx_FillRectangle(i * 107 + 10, 220, 87, 10);\r\n            //draw a triangle on either side\r\n            gfx_FillTriangle(i * 107, 230, i * 107 + 10, 220, i * 107 + 10, 230);\r\n            gfx_FillTriangle(i * 107 + 107, 230, i * 107 + 97, 230, i * 107 + 97, 220);\r\n            //outline everything depending on what's pressed\r\n            gfx_SetColor(255);\r\n            gfx_Line(i * 107, 240, i * 107, 230);\r\n            gfx_Line(i * 107, 230, i * 107 + 10, 220);\r\n            gfx_Line(i * 107 + 10, 220, i * 107 + 96, 220);\r\n            gfx_Line(i * 107 + 106, 230, i * 107 + 96, 220);\r\n            gfx_Line(i * 107 + 106, 240, i * 107 + 106, 230);\r\n            gfx_PrintStringXY(menutext[i], (i * 107 + 53) - gfx_GetStringWidth(menutext[i]) / 2, 226);\r\n        }\r\n        //line gets cut off so drawing it here\r\n        gfx_Line(319, 240, 319, 230);\r\n        if (!kb_AnyKey()) keypress = false;\r\n        gfx_SwapDraw();\r\n    }\r\n    return keypressed;\r\n}\r\n\r\nvoid RenderTransportation(void) {\r\n    //loop through and show all the ports\r\n    uint8_t i;\r\n    gfx_SetColor(7);\r\n    if (game.connectionmade == true) {\r\n        gfx_Line(port[game.initialport].x * 2, port[game.initialport].y * 2, port[game.endport].x * 2, port[game.endport].y * 2);\r\n        gfx_Line(port[game.initialport].x * 2 - 1, port[game.initialport].y * 2, port[game.endport].x * 2 - 1, port[game.endport].y * 2);\r\n    }\r\n    for (i = 0; i < 22; i++) {\r\n        if (port[i].closed) gfx_SetColor(0);\r\n        else gfx_SetColor(7);\r\n        gfx_FillCircle(port[i].x * 2, port[i].y * 2, 3);\r\n    }\r\n}\r\n\r\n\r\nvoid RenderCursor(void) {\r\n    gfx_SetColor(224);\r\n    //gfx_SetColor(0);\r\n    gfx_Circle(game.cursorx * 2, game.cursory * 2, 5);\r\n    gfx_Circle(game.cursorx * 2, game.cursory * 2, 4);\r\n}\r\n\r\nvoid StartGame(void) {\r\n    bool success = false;\r\n    char str1[100];\r\n    game.cursorx = 80;\r\n    game.cursory = 60;\r\n    vname = optix_GetStringInput(\"Name?\", 10, 150, 8);\r\n    //GetStringInput(\"Name?\");\r\n    strcpy(virus.name, vname);\r\n    while (kb_AnyKey()) kb_Scan();\r\n    while (!success) {\r\n        kb_Scan();\r\n        if ((kb_Data[7] & kb_Left) && (game.cursorx > 0)) game.cursorx -= 2;\r\n        if ((kb_Data[7] & kb_Right) && (game.cursorx < 160)) game.cursorx += 2;\r\n        if ((kb_Data[7] & kb_Up) && (game.cursory > 0)) game.cursory -= 2;\r\n        //dont go off screen - rework later\r\n        if ((kb_Data[7] & kb_Down) && (game.cursory < 120)) game.cursory += 2;\r\n        if (kb_Data[6] & kb_Enter) success = InfectCoordinate(game.cursorx, game.cursory);\r\n        gfx_FillScreen(18);\r\n        optix_WhiText();\r\n        DrawMap();\r\n        gfx_SetColor(0);\r\n        gfx_FillRectangle(0, 0, 320, 13);\r\n        sprintf(str1, \"Choose an initial location to infect. x:%d y:%d\", game.cursorx, game.cursory);\r\n        gfx_PrintStringXY(str1, 5, 2);\r\n        RenderCursor();\r\n        gfx_SetColor(255);\r\n        gfx_HorizLine(0, 13, 320);\r\n        gfx_SwapDraw();\r\n\r\n    }\r\n    free(vname);\r\n}\r\n\r\n\r\nvoid main(void) {\r\n    char str1[20];\r\n    uint8_t keypressed;\r\n    uint8_t x;\r\n    uint8_t y;\r\n    uint8_t i;\r\n    srand(rtc_Time());\r\n    gfx_Begin();\r\n    gfx_SetDraw(1);\r\n    gfx_SetTransparentColor(0);\r\n    optix_WhiText();\r\n    optix_SetDefaultColors();\r\n    InitializeSimulation();\r\n    InitializeMap();\r\n    InitializePorts();\r\n    LoadData();\r\n    //do FPS things\r\n    timer_Control = TIMER1_ENABLE | TIMER1_32K | TIMER1_UP;\r\n    keypressed = 3;\r\n    x = randInt(0, 160);\r\n    y = randInt(0, 120);\r\n\r\n    while (keypressed != 2) {\r\n        keypressed = MainMenu();\r\n        //because I am tired of the memory management menu\r\n        if (keypressed == 0) {\r\n            ti_Delete(\"CNTGNDAT\");\r\n            optix_Message(\"ALERT\", \"~DELETION `All of your Pandemic CE data has been deleted. The program will now quit. `~EXITING `Please press [ENTER]. Some text... `newline starts here. Some text... `~This is a title! `more text\", 10, 150, 6);\r\n            optix_Menu(\"TEST MENU\", \"Play`Statistics`Options`Reset`Game mode`Credits`About`Quit`\", 14, 100, 4);\r\n            break;\r\n        }\r\n        //need something here for keypressed == 0, will be a submenu of some kind\r\n        if (keypressed == 1) {\r\n            if (game.ticksplayed == 0) StartGame();\r\n            while (!(kb_Data[6] & kb_Clear)) {\r\n                kb_Scan();\r\n                if (kb_Data[1] & kb_Graph && game.canpress) {\r\n                    MutationMenu();\r\n                    game.canpress = false;\r\n                }\r\n                //we don't need this anymore, was used to infect random coordinates as a test\r\n                /*if (randInt(0, 10) == 10) {\r\n                    x = randInt(0, 160);\r\n                    y = randInt(0, 120);\r\n                }*/\r\n                HandleKeys();\r\n                UpdateSimulation();\r\n                UpdateTransportation();\r\n                gfx_FillScreen(18);\r\n                DrawMap();\r\n                //RenderCursor();\r\n                if (game.viewmode == 1) RenderTransportation();\r\n                Progress();\r\n                if (game.newsloops == 0) UpdateNews(game.vVictory, game.wVictory);\r\n                //testing some stuff (disable for now), seems to mostly work\r\n                /*InfectCoordinate(x, y);\r\n                gfx_SetColor(224);\r\n                gfx_Circle(x * 2, y * 2, 5);*/\r\n                //more FPS\r\n                RenderBottomToolbar();\r\n                RenderTopToolbar();\r\n                sprintf(str1, \"FPS : %d\", 32768 / timer_1_Counter);\r\n                //gfx_PrintStringXY(str1, 160 - gfx_GetStringWidth(str1) / 2, 2);\r\n                gfx_SwapDraw();\r\n                //increment the ticks played\r\n                game.ticksplayed += timer_1_Counter;\r\n                timer_1_Counter = 0;\r\n            }\r\n        }\r\n        if (keypressed == 2) {\r\n            SaveData();\r\n            break;\r\n        }\r\n    }\r\n    gfx_End();\r\n}\r\n"
  },
  {
    "path": "src/sprites/africa.c",
    "content": "// Converted using ConvPNG\r\n#include <stdint.h>\r\n#include \"sprites.h\"\r\n\r\n// 8 bpp image\r\nuint8_t africa_data[1882] = {\r\n 40,47,  // width,height\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\r\n 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n};\r\n"
  },
  {
    "path": "src/sprites/anchor_scaled.c",
    "content": "// Converted using ConvPNG\r\n#include <stdint.h>\r\n#include \"icons.h\"\r\n\r\n// 8 bpp image\r\nuint8_t anchor_scaled_data[66] = {\r\n 8,8,  // width,height\r\n 0xFF,0xFF,0xFF,0x6B,0x4A,0xFF,0xFF,0xFF,\r\n 0xFF,0xFF,0xB4,0x6B,0x4A,0x94,0xFE,0xFF,\r\n 0xFF,0xFF,0x93,0x21,0x21,0x8C,0xDE,0xFF,\r\n 0xFF,0xFF,0xFF,0x4A,0x4A,0xFF,0xFF,0xFF,\r\n 0xB6,0xDE,0xFF,0x6B,0x29,0xFF,0xFF,0xD6,\r\n 0x4A,0x29,0xDE,0x6B,0x4A,0xDE,0x49,0x4A,\r\n 0xB5,0x21,0x01,0x21,0x01,0x01,0x21,0xB5,\r\n 0xFF,0xDE,0x6B,0x00,0x21,0x93,0xFE,0xFF,\r\n};\r\n"
  },
  {
    "path": "src/sprites/asia.c",
    "content": "// Converted using ConvPNG\r\n#include <stdint.h>\r\n#include \"sprites.h\"\r\n\r\n// 8 bpp image\r\nuint8_t asia_data[3577] = {\r\n 65,55,  // width,height\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n};\r\n"
  },
  {
    "path": "src/sprites/cemetechdiscord.c",
    "content": "// Converted using ConvPNG\r\n#include <stdint.h>\r\n#include \"icons.h\"\r\n\r\n// 8 bpp image\r\nuint8_t cemetechdiscord_data[731] = {\r\n 27,27,  // width,height\r\n 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\r\n 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,\r\n 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\r\n 0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,\r\n 0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,\r\n 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,\r\n 0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,\r\n 0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,\r\n 0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0xFF,0xFF,\r\n 0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,\r\n 0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,\r\n 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,\r\n 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0xFF,0xFF,\r\n 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,\r\n 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,\r\n 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\r\n};\r\n"
  },
  {
    "path": "src/sprites/closed_scaled.c",
    "content": "// Converted using ConvPNG\r\n#include <stdint.h>\r\n#include \"icons.h\"\r\n\r\n// 8 bpp image\r\nuint8_t closed_scaled_data[258] = {\r\n 16,16,  // width,height\r\n 0x94,0x94,0x94,0x94,0xE8,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xC9,0x94,0x94,0x94,0x94,\r\n 0x94,0x94,0x94,0xE0,0xE0,0xE0,0xE0,0xE8,0xE8,0xE0,0xE0,0xE0,0xE0,0x93,0x94,0x94,\r\n 0x94,0x94,0xE0,0xE0,0xE0,0xC9,0xAB,0x94,0x94,0xAB,0xC9,0xE0,0xE0,0xE0,0xAB,0x94,\r\n 0x94,0xE0,0xE0,0xE0,0xE0,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0xE0,0xE0,0xE0,0x93,\r\n 0xC9,0xE0,0xE0,0xE0,0xE0,0xE0,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0xE0,0xE0,0xCA,\r\n 0xE0,0xE0,0xC9,0xCA,0xE0,0xE0,0xE0,0x94,0x94,0x94,0x94,0x94,0x94,0xCA,0xE0,0xE8,\r\n 0xE0,0xE0,0xCA,0x94,0xE8,0xE0,0xE0,0xE9,0x94,0x94,0x94,0x94,0x94,0xAB,0xE0,0xE0,\r\n 0xE0,0xE0,0x94,0x94,0x94,0xE8,0xE0,0xE0,0xC9,0x94,0x94,0x94,0x94,0xAB,0xE0,0xE0,\r\n 0xE0,0xE0,0x94,0x94,0x94,0x94,0xE0,0xE0,0xE0,0xCA,0x94,0x94,0x94,0xAB,0xE0,0xE0,\r\n 0xE0,0xE0,0x93,0x94,0x94,0x94,0x93,0xE0,0xE0,0xE0,0xAB,0x94,0x94,0xAB,0xE0,0xE0,\r\n 0xE0,0xE0,0xCA,0x94,0x94,0x94,0x94,0xAB,0xE0,0xE0,0xE0,0xCA,0x94,0xAB,0xE0,0xE0,\r\n 0xE0,0xE0,0xE0,0x94,0x94,0x94,0x94,0x94,0xAB,0xE0,0xE0,0xE0,0xAB,0xE9,0xE0,0xE0,\r\n 0xCA,0xE0,0xE0,0xCA,0x94,0x94,0x94,0x94,0x94,0xAB,0xE0,0xE0,0xE0,0xE0,0xE0,0xCA,\r\n 0x94,0xE0,0xE0,0xE0,0xC9,0x94,0x94,0x94,0x94,0x94,0xAB,0xE0,0xE0,0xE0,0xE8,0x94,\r\n 0x94,0x94,0xE0,0xE0,0xE0,0xE8,0xCA,0xCA,0xCA,0xCA,0xE8,0xE0,0xE0,0xE0,0x94,0x94,\r\n 0x94,0x94,0xAB,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0x93,0x94,0x94,\r\n};\r\n"
  },
  {
    "path": "src/sprites/ecprograms.c",
    "content": "// Converted using ConvPNG\r\n#include <stdint.h>\r\n#include \"icons.h\"\r\n\r\n// 8 bpp image\r\nuint8_t ecprograms_data[731] = {\r\n 27,27,  // width,height\r\n 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\r\n 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,\r\n 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\r\n 0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,\r\n 0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,\r\n 0xFF,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,\r\n 0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,\r\n 0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xFF,\r\n 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,\r\n 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,\r\n 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,\r\n 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\r\n};\r\n"
  },
  {
    "path": "src/sprites/europe.c",
    "content": "// Converted using ConvPNG\r\n#include <stdint.h>\r\n#include \"sprites.h\"\r\n\r\n// 8 bpp image\r\nuint8_t europe_data[770] = {\r\n 32,24,  // width,height\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,\r\n 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,\r\n 0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,\r\n 0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,\r\n 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n};\r\n"
  },
  {
    "path": "src/sprites/greenland.c",
    "content": "// Converted using ConvPNG\r\n#include <stdint.h>\r\n#include \"sprites.h\"\r\n\r\n// 8 bpp image\r\nuint8_t greenland_data[338] = {\r\n 24,14,  // width,height\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,\r\n 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n};\r\n"
  },
  {
    "path": "src/sprites/icons.c",
    "content": "// Converted using ConvPNG\r\n#include <stdint.h>\r\n#include \"icons.h\"\r\n\r\nuint16_t icons_pal[256] = {\r\n 0x0000,  // 00 :: rgb(0,0,0)\r\n 0x0081,  // 01 :: rgb(0,32,8)\r\n 0x0102,  // 02 :: rgb(0,65,16)\r\n 0x0183,  // 03 :: rgb(0,97,24)\r\n 0x0204,  // 04 :: rgb(0,130,33)\r\n 0x0285,  // 05 :: rgb(0,162,41)\r\n 0x0306,  // 06 :: rgb(0,195,49)\r\n 0x0387,  // 07 :: rgb(0,227,57)\r\n 0x0408,  // 08 :: rgb(8,0,66)\r\n 0x0489,  // 09 :: rgb(8,32,74)\r\n 0x050A,  // 10 :: rgb(8,65,82)\r\n 0x058B,  // 11 :: rgb(8,97,90)\r\n 0x060C,  // 12 :: rgb(8,130,99)\r\n 0x068D,  // 13 :: rgb(8,162,107)\r\n 0x070E,  // 14 :: rgb(8,195,115)\r\n 0x078F,  // 15 :: rgb(8,227,123)\r\n 0x0810,  // 16 :: rgb(16,0,132)\r\n 0x0891,  // 17 :: rgb(16,32,140)\r\n 0x0912,  // 18 :: rgb(16,65,148)\r\n 0x0993,  // 19 :: rgb(16,97,156)\r\n 0x0A14,  // 20 :: rgb(16,130,165)\r\n 0x0A95,  // 21 :: rgb(16,162,173)\r\n 0x0B16,  // 22 :: rgb(16,195,181)\r\n 0x0B97,  // 23 :: rgb(16,227,189)\r\n 0x0C18,  // 24 :: rgb(24,0,198)\r\n 0x0C99,  // 25 :: rgb(24,32,206)\r\n 0x0D1A,  // 26 :: rgb(24,65,214)\r\n 0x0D9B,  // 27 :: rgb(24,97,222)\r\n 0x0E1C,  // 28 :: rgb(24,130,231)\r\n 0x0E9D,  // 29 :: rgb(24,162,239)\r\n 0x0F1E,  // 30 :: rgb(24,195,247)\r\n 0x0F9F,  // 31 :: rgb(24,227,255)\r\n 0x9000,  // 32 :: rgb(33,4,0)\r\n 0x9081,  // 33 :: rgb(33,36,8)\r\n 0x9102,  // 34 :: rgb(33,69,16)\r\n 0x9183,  // 35 :: rgb(33,101,24)\r\n 0x9204,  // 36 :: rgb(33,134,33)\r\n 0x9285,  // 37 :: rgb(33,166,41)\r\n 0x9306,  // 38 :: rgb(33,199,49)\r\n 0x9387,  // 39 :: rgb(33,231,57)\r\n 0x9408,  // 40 :: rgb(41,4,66)\r\n 0x9489,  // 41 :: rgb(41,36,74)\r\n 0x950A,  // 42 :: rgb(41,69,82)\r\n 0x958B,  // 43 :: rgb(41,101,90)\r\n 0x960C,  // 44 :: rgb(41,134,99)\r\n 0x968D,  // 45 :: rgb(41,166,107)\r\n 0x970E,  // 46 :: rgb(41,199,115)\r\n 0x978F,  // 47 :: rgb(41,231,123)\r\n 0x9810,  // 48 :: rgb(49,4,132)\r\n 0x9891,  // 49 :: rgb(49,36,140)\r\n 0x9912,  // 50 :: rgb(49,69,148)\r\n 0x9993,  // 51 :: rgb(49,101,156)\r\n 0x9A14,  // 52 :: rgb(49,134,165)\r\n 0x9A95,  // 53 :: rgb(49,166,173)\r\n 0x9B16,  // 54 :: rgb(49,199,181)\r\n 0x9B97,  // 55 :: rgb(49,231,189)\r\n 0x9C18,  // 56 :: rgb(57,4,198)\r\n 0x9C99,  // 57 :: rgb(57,36,206)\r\n 0x9D1A,  // 58 :: rgb(57,69,214)\r\n 0x9D9B,  // 59 :: rgb(57,101,222)\r\n 0x9E1C,  // 60 :: rgb(57,134,231)\r\n 0x9E9D,  // 61 :: rgb(57,166,239)\r\n 0x9F1E,  // 62 :: rgb(57,199,247)\r\n 0x9F9F,  // 63 :: rgb(57,231,255)\r\n 0x2020,  // 64 :: rgb(66,8,0)\r\n 0x20A1,  // 65 :: rgb(66,40,8)\r\n 0x2122,  // 66 :: rgb(66,73,16)\r\n 0x21A3,  // 67 :: rgb(66,105,24)\r\n 0x2224,  // 68 :: rgb(66,138,33)\r\n 0x22A5,  // 69 :: rgb(66,170,41)\r\n 0x2326,  // 70 :: rgb(66,203,49)\r\n 0x23A7,  // 71 :: rgb(66,235,57)\r\n 0x2428,  // 72 :: rgb(74,8,66)\r\n 0x24A9,  // 73 :: rgb(74,40,74)\r\n 0x252A,  // 74 :: rgb(74,73,82)\r\n 0x25AB,  // 75 :: rgb(74,105,90)\r\n 0x262C,  // 76 :: rgb(74,138,99)\r\n 0x26AD,  // 77 :: rgb(74,170,107)\r\n 0x272E,  // 78 :: rgb(74,203,115)\r\n 0x27AF,  // 79 :: rgb(74,235,123)\r\n 0x2830,  // 80 :: rgb(82,8,132)\r\n 0x28B1,  // 81 :: rgb(82,40,140)\r\n 0x2932,  // 82 :: rgb(82,73,148)\r\n 0x29B3,  // 83 :: rgb(82,105,156)\r\n 0x2A34,  // 84 :: rgb(82,138,165)\r\n 0x2AB5,  // 85 :: rgb(82,170,173)\r\n 0x2B36,  // 86 :: rgb(82,203,181)\r\n 0x2BB7,  // 87 :: rgb(82,235,189)\r\n 0x2C38,  // 88 :: rgb(90,8,198)\r\n 0x2CB9,  // 89 :: rgb(90,40,206)\r\n 0x2D3A,  // 90 :: rgb(90,73,214)\r\n 0x2DBB,  // 91 :: rgb(90,105,222)\r\n 0x2E3C,  // 92 :: rgb(90,138,231)\r\n 0x2EBD,  // 93 :: rgb(90,170,239)\r\n 0x2F3E,  // 94 :: rgb(90,203,247)\r\n 0x2FBF,  // 95 :: rgb(90,235,255)\r\n 0xB020,  // 96 :: rgb(99,12,0)\r\n 0xB0A1,  // 97 :: rgb(99,44,8)\r\n 0xB122,  // 98 :: rgb(99,77,16)\r\n 0xB1A3,  // 99 :: rgb(99,109,24)\r\n 0xB224,  // 100 :: rgb(99,142,33)\r\n 0xB2A5,  // 101 :: rgb(99,174,41)\r\n 0xB326,  // 102 :: rgb(99,207,49)\r\n 0xB3A7,  // 103 :: rgb(99,239,57)\r\n 0xB428,  // 104 :: rgb(107,12,66)\r\n 0xB4A9,  // 105 :: rgb(107,44,74)\r\n 0xB52A,  // 106 :: rgb(107,77,82)\r\n 0xB5AB,  // 107 :: rgb(107,109,90)\r\n 0xB62C,  // 108 :: rgb(107,142,99)\r\n 0xB6AD,  // 109 :: rgb(107,174,107)\r\n 0xB72E,  // 110 :: rgb(107,207,115)\r\n 0xB7AF,  // 111 :: rgb(107,239,123)\r\n 0xB830,  // 112 :: rgb(115,12,132)\r\n 0xB8B1,  // 113 :: rgb(115,44,140)\r\n 0xB932,  // 114 :: rgb(115,77,148)\r\n 0xB9B3,  // 115 :: rgb(115,109,156)\r\n 0xBA34,  // 116 :: rgb(115,142,165)\r\n 0xBAB5,  // 117 :: rgb(115,174,173)\r\n 0xBB36,  // 118 :: rgb(115,207,181)\r\n 0xBBB7,  // 119 :: rgb(115,239,189)\r\n 0xBC38,  // 120 :: rgb(123,12,198)\r\n 0xBCB9,  // 121 :: rgb(123,44,206)\r\n 0xBD3A,  // 122 :: rgb(123,77,214)\r\n 0xBDBB,  // 123 :: rgb(123,109,222)\r\n 0xBE3C,  // 124 :: rgb(123,142,231)\r\n 0xBEBD,  // 125 :: rgb(123,174,239)\r\n 0xBF3E,  // 126 :: rgb(123,207,247)\r\n 0xBFBF,  // 127 :: rgb(123,239,255)\r\n 0x4040,  // 128 :: rgb(132,16,0)\r\n 0x40C1,  // 129 :: rgb(132,48,8)\r\n 0x4142,  // 130 :: rgb(132,81,16)\r\n 0x41C3,  // 131 :: rgb(132,113,24)\r\n 0x4244,  // 132 :: rgb(132,146,33)\r\n 0x42C5,  // 133 :: rgb(132,178,41)\r\n 0x4346,  // 134 :: rgb(132,211,49)\r\n 0x43C7,  // 135 :: rgb(132,243,57)\r\n 0x4448,  // 136 :: rgb(140,16,66)\r\n 0x44C9,  // 137 :: rgb(140,48,74)\r\n 0x454A,  // 138 :: rgb(140,81,82)\r\n 0x45CB,  // 139 :: rgb(140,113,90)\r\n 0x464C,  // 140 :: rgb(140,146,99)\r\n 0x46CD,  // 141 :: rgb(140,178,107)\r\n 0x474E,  // 142 :: rgb(140,211,115)\r\n 0x47CF,  // 143 :: rgb(140,243,123)\r\n 0x4850,  // 144 :: rgb(148,16,132)\r\n 0x48D1,  // 145 :: rgb(148,48,140)\r\n 0x4952,  // 146 :: rgb(148,81,148)\r\n 0x49D3,  // 147 :: rgb(148,113,156)\r\n 0x4A54,  // 148 :: rgb(148,146,165)\r\n 0x4AD5,  // 149 :: rgb(148,178,173)\r\n 0x4B56,  // 150 :: rgb(148,211,181)\r\n 0x4BD7,  // 151 :: rgb(148,243,189)\r\n 0x4C58,  // 152 :: rgb(156,16,198)\r\n 0x4CD9,  // 153 :: rgb(156,48,206)\r\n 0x4D5A,  // 154 :: rgb(156,81,214)\r\n 0x4DDB,  // 155 :: rgb(156,113,222)\r\n 0x4E5C,  // 156 :: rgb(156,146,231)\r\n 0x4EDD,  // 157 :: rgb(156,178,239)\r\n 0x4F5E,  // 158 :: rgb(156,211,247)\r\n 0x4FDF,  // 159 :: rgb(156,243,255)\r\n 0xD040,  // 160 :: rgb(165,20,0)\r\n 0xD0C1,  // 161 :: rgb(165,52,8)\r\n 0xD142,  // 162 :: rgb(165,85,16)\r\n 0xD1C3,  // 163 :: rgb(165,117,24)\r\n 0xD244,  // 164 :: rgb(165,150,33)\r\n 0xD2C5,  // 165 :: rgb(165,182,41)\r\n 0xD346,  // 166 :: rgb(165,215,49)\r\n 0xD3C7,  // 167 :: rgb(165,247,57)\r\n 0xD448,  // 168 :: rgb(173,20,66)\r\n 0xD4C9,  // 169 :: rgb(173,52,74)\r\n 0xD54A,  // 170 :: rgb(173,85,82)\r\n 0xD5CB,  // 171 :: rgb(173,117,90)\r\n 0xD64C,  // 172 :: rgb(173,150,99)\r\n 0xD6CD,  // 173 :: rgb(173,182,107)\r\n 0xD74E,  // 174 :: rgb(173,215,115)\r\n 0xD7CF,  // 175 :: rgb(173,247,123)\r\n 0xD850,  // 176 :: rgb(181,20,132)\r\n 0xD8D1,  // 177 :: rgb(181,52,140)\r\n 0xD952,  // 178 :: rgb(181,85,148)\r\n 0xD9D3,  // 179 :: rgb(181,117,156)\r\n 0xDA54,  // 180 :: rgb(181,150,165)\r\n 0xDAD5,  // 181 :: rgb(181,182,173)\r\n 0xDB56,  // 182 :: rgb(181,215,181)\r\n 0xDBD7,  // 183 :: rgb(181,247,189)\r\n 0xDC58,  // 184 :: rgb(189,20,198)\r\n 0xDCD9,  // 185 :: rgb(189,52,206)\r\n 0xDD5A,  // 186 :: rgb(189,85,214)\r\n 0xDDDB,  // 187 :: rgb(189,117,222)\r\n 0xDE5C,  // 188 :: rgb(189,150,231)\r\n 0xDEDD,  // 189 :: rgb(189,182,239)\r\n 0xDF5E,  // 190 :: rgb(189,215,247)\r\n 0xDFDF,  // 191 :: rgb(189,247,255)\r\n 0x6060,  // 192 :: rgb(198,24,0)\r\n 0x60E1,  // 193 :: rgb(198,56,8)\r\n 0x6162,  // 194 :: rgb(198,89,16)\r\n 0x61E3,  // 195 :: rgb(198,121,24)\r\n 0x6264,  // 196 :: rgb(198,154,33)\r\n 0x62E5,  // 197 :: rgb(198,186,41)\r\n 0x6366,  // 198 :: rgb(198,219,49)\r\n 0x63E7,  // 199 :: rgb(198,251,57)\r\n 0x6468,  // 200 :: rgb(206,24,66)\r\n 0x64E9,  // 201 :: rgb(206,56,74)\r\n 0x656A,  // 202 :: rgb(206,89,82)\r\n 0x65EB,  // 203 :: rgb(206,121,90)\r\n 0x666C,  // 204 :: rgb(206,154,99)\r\n 0x66ED,  // 205 :: rgb(206,186,107)\r\n 0x676E,  // 206 :: rgb(206,219,115)\r\n 0x67EF,  // 207 :: rgb(206,251,123)\r\n 0x6870,  // 208 :: rgb(214,24,132)\r\n 0x68F1,  // 209 :: rgb(214,56,140)\r\n 0x6972,  // 210 :: rgb(214,89,148)\r\n 0x69F3,  // 211 :: rgb(214,121,156)\r\n 0x6A74,  // 212 :: rgb(214,154,165)\r\n 0x6AF5,  // 213 :: rgb(214,186,173)\r\n 0x6B76,  // 214 :: rgb(214,219,181)\r\n 0x6BF7,  // 215 :: rgb(214,251,189)\r\n 0x6C78,  // 216 :: rgb(222,24,198)\r\n 0x6CF9,  // 217 :: rgb(222,56,206)\r\n 0x6D7A,  // 218 :: rgb(222,89,214)\r\n 0x6DFB,  // 219 :: rgb(222,121,222)\r\n 0x6E7C,  // 220 :: rgb(222,154,231)\r\n 0x6EFD,  // 221 :: rgb(222,186,239)\r\n 0x6F7E,  // 222 :: rgb(222,219,247)\r\n 0x6FFF,  // 223 :: rgb(222,251,255)\r\n 0xF060,  // 224 :: rgb(231,28,0)\r\n 0xF0E1,  // 225 :: rgb(231,60,8)\r\n 0xF162,  // 226 :: rgb(231,93,16)\r\n 0xF1E3,  // 227 :: rgb(231,125,24)\r\n 0xF264,  // 228 :: rgb(231,158,33)\r\n 0xF2E5,  // 229 :: rgb(231,190,41)\r\n 0xF366,  // 230 :: rgb(231,223,49)\r\n 0xF3E7,  // 231 :: rgb(231,255,57)\r\n 0xF468,  // 232 :: rgb(239,28,66)\r\n 0xF4E9,  // 233 :: rgb(239,60,74)\r\n 0xF56A,  // 234 :: rgb(239,93,82)\r\n 0xF5EB,  // 235 :: rgb(239,125,90)\r\n 0xF66C,  // 236 :: rgb(239,158,99)\r\n 0xF6ED,  // 237 :: rgb(239,190,107)\r\n 0xF76E,  // 238 :: rgb(239,223,115)\r\n 0xF7EF,  // 239 :: rgb(239,255,123)\r\n 0xF870,  // 240 :: rgb(247,28,132)\r\n 0xF8F1,  // 241 :: rgb(247,60,140)\r\n 0xF972,  // 242 :: rgb(247,93,148)\r\n 0xF9F3,  // 243 :: rgb(247,125,156)\r\n 0xFA74,  // 244 :: rgb(247,158,165)\r\n 0xFAF5,  // 245 :: rgb(247,190,173)\r\n 0xFB76,  // 246 :: rgb(247,223,181)\r\n 0xFBF7,  // 247 :: rgb(247,255,189)\r\n 0xFC78,  // 248 :: rgb(255,28,198)\r\n 0xFCF9,  // 249 :: rgb(255,60,206)\r\n 0xFD7A,  // 250 :: rgb(255,93,214)\r\n 0xFDFB,  // 251 :: rgb(255,125,222)\r\n 0xFE7C,  // 252 :: rgb(255,158,231)\r\n 0xFEFD,  // 253 :: rgb(255,190,239)\r\n 0xFF7E,  // 254 :: rgb(255,223,247)\r\n 0xFFFF,  // 255 :: rgb(255,255,255)\r\n};"
  },
  {
    "path": "src/sprites/icons.h",
    "content": "// Converted using ConvPNG\r\n// This file contains all the graphics sources for easier inclusion in a project\r\n#ifndef __icons__\r\n#define __icons__\r\n#include <stdint.h>\r\n\r\n#define cemetechdiscord_width 27\r\n#define cemetechdiscord_height 27\r\n#define cemetechdiscord_size 731\r\nextern uint8_t cemetechdiscord_data[731];\r\n#define cemetechdiscord ((gfx_sprite_t*)cemetechdiscord_data)\r\n#define ecprograms_width 27\r\n#define ecprograms_height 27\r\n#define ecprograms_size 731\r\nextern uint8_t ecprograms_data[731];\r\n#define ecprograms ((gfx_sprite_t*)ecprograms_data)\r\n#define myprograms_width 27\r\n#define myprograms_height 27\r\n#define myprograms_size 731\r\nextern uint8_t myprograms_data[731];\r\n#define myprograms ((gfx_sprite_t*)myprograms_data)\r\n#define programthread_width 27\r\n#define programthread_height 27\r\n#define programthread_size 731\r\nextern uint8_t programthread_data[731];\r\n#define programthread ((gfx_sprite_t*)programthread_data)\r\n#define closed_scaled_width 16\r\n#define closed_scaled_height 16\r\n#define closed_scaled_size 258\r\nextern uint8_t closed_scaled_data[258];\r\n#define closed_scaled ((gfx_sprite_t*)closed_scaled_data)\r\n#define anchor_scaled_width 8\r\n#define anchor_scaled_height 8\r\n#define anchor_scaled_size 66\r\nextern uint8_t anchor_scaled_data[66];\r\n#define anchor_scaled ((gfx_sprite_t*)anchor_scaled_data)\r\n#define logo_width 68\r\n#define logo_height 10\r\n#define logo_size 682\r\nextern uint8_t logo_data[682];\r\n#define logo ((gfx_sprite_t*)logo_data)\r\n#define sizeof_icons_pal 512\r\nextern uint16_t icons_pal[256];\r\n\r\n#endif\r\n"
  },
  {
    "path": "src/sprites/logo.c",
    "content": "// Converted using ConvPNG\r\n#include <stdint.h>\r\n#include \"icons.h\"\r\n\r\n// 8 bpp image\r\nuint8_t logo_data[682] = {\r\n 68,10,  // width,height\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0x00,0xE0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0x00,0xE0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xE0,0xE0,0x00,0x00,0x00,0xE0,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0xE0,0xE0,0x00,0x00,0x00,0xE0,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,\r\n 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xE0,0xE0,0x00,0x00,0x00,0xE0,0xE0,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0xE0,0xE0,0x00,0x00,0x00,0xE0,0xE0,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,\r\n 0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0xE0,0xE0,0x00,0xE0,0xE0,0xE0,0xE0,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xE0,0xE0,0xE0,0xE0,0x00,0xE0,0xE0,0xE0,0xE0,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,\r\n 0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\r\n 0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0x00,0x00,0xE0,0xE0,0xE0,0x00,0x00,0xE0,0xE0,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xE0,0xE0,0x00,0x00,0xE0,0xE0,0xE0,0x00,0x00,0xE0,0xE0,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,\r\n 0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0xE0,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0xE0,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,\r\n 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xE0,0xE0,0x00,0xE0,0xE0,0xE0,0xE0,0xE0,0x00,0xE0,0xE0,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xE0,0xE0,0x00,0xE0,0xE0,0xE0,0xE0,0xE0,0x00,0xE0,0xE0,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,\r\n 0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0x00,0x00,0x00,0xE0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0x00,0x00,0x00,0xE0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n};\r\n"
  },
  {
    "path": "src/sprites/myprograms.c",
    "content": "// Converted using ConvPNG\r\n#include <stdint.h>\r\n#include \"icons.h\"\r\n\r\n// 8 bpp image\r\nuint8_t myprograms_data[731] = {\r\n 27,27,  // width,height\r\n 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\r\n 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,\r\n 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\r\n 0xFF,0x00,0x00,0xFF,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,\r\n 0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,\r\n 0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,\r\n 0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,\r\n 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,0xFF,\r\n 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,\r\n 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,\r\n 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,\r\n 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\r\n};\r\n"
  },
  {
    "path": "src/sprites/northamerica.c",
    "content": "// Converted using ConvPNG\r\n#include <stdint.h>\r\n#include \"sprites.h\"\r\n\r\n// 8 bpp image\r\nuint8_t northamerica_data[1970] = {\r\n 48,41,  // width,height\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,\r\n 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,\r\n 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,\r\n 0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0x00,\r\n 0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n};\r\n"
  },
  {
    "path": "src/sprites/oceania.c",
    "content": "// Converted using ConvPNG\r\n#include <stdint.h>\r\n#include \"sprites.h\"\r\n\r\n// 8 bpp image\r\nuint8_t oceania_data[1056] = {\r\n 34,31,  // width,height\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n};\r\n"
  },
  {
    "path": "src/sprites/optix.c",
    "content": "//OPTIX version 2 by epsilon5\n//an open source GUI/text library in C for the TI-84 Plus CE and TI-83 Premium CE calculators\n//please credit when used\n//contact: https://www.cemetech.net/downloads/users/epsilon5\n\n\n#include <tice.h>\n#include \"optix.h\"\n/* Standard headers - it's recommended to leave them included */\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <stdbool.h>\n#include <stdint.h>\n#include <stddef.h>\n/* Other available headers */\n// including stdarg.h, setjmp.h, assert.h, ctype.h, float.h, iso646.h, limits.h, errno.h\n/* Available libraries */\n// including lib/ce/graphc.h, lib/ce/fileioc.h, and lib/ce/keypadc.h\n// Sample: #include <lib/ce/graphc.h>\n#include <graphx.h>\n#include <fileioc.h>\n#include <keypadc.h>\n#include <intce.h>\n#include <tice.h>\n#include <math.h>\nstruct optix_guicolors_t optix_guicolors;\nstruct optix_guidata_t optix_guidata;\nstruct optix_guisettings_t optix_guisettings;\nstruct optix_buttoninfo_t optix_buttoninfo;\nstruct optix_cursor_t optix_cursor;\nstruct optix_button_t *optix_button;\nstruct optix_box_t optix_box;\nstruct optix_wordwraptext_t *optix_wordwraptext;\nstruct optix_menu_t *optix_menu;\nchar *optix_stringinput;\n\n//these will be irrelevant when we can set custom colors\nvoid optix_HandleGUI(void) {\n    kb_Scan();\n    optix_guidata.skkey = os_GetCSC();\n    //so apparently keypresses don't work 111anymore\n    if (!kb_AnyKey()) optix_guidata.keypress = true;\n    gfx_FillScreen(optix_guicolors.bgcolor);\n    optix_RenderButtons();\n    optix_HandleCursor();\n    optix_CheckForAltKey();\n}\n\nvoid optix_HandleCursor(void) {\n    //just going to take this out for now, it doesn't really work\n    optix_HandleTrackPad();\n    if (optix_cursor.cursoractive) {\n        optix_UpdateCursor();\n        optix_ClickCursor();\n        optix_RenderCursor();\n    } else {\n        optix_UpdateSelectedButton();\n        optix_ClickButton();\n    }\n}\n\nvoid optix_WhiText(void) {\n    gfx_SetTextBGColor(0);\n    gfx_SetTextFGColor(255);\n    gfx_SetTextTransparentColor(0);\n}\n\nvoid optix_BlaText(void) {\n    gfx_SetTextBGColor(255);\n    gfx_SetTextFGColor(0);\n    gfx_SetTextTransparentColor(255);\n}\n\nvoid optix_CusText(bool title) {\n    if (!title) {\n        gfx_SetTextBGColor(optix_guicolors.textbgcolor);\n        gfx_SetTextFGColor(optix_guicolors.textfgcolor);\n        gfx_SetTextTransparentColor(optix_guicolors.textbgcolor);\n    } else {\n        gfx_SetTextBGColor(optix_guicolors.ttextbgcolor);\n        gfx_SetTextFGColor(optix_guicolors.ttextfgcolor);\n        gfx_SetTextTransparentColor(optix_guicolors.ttextbgcolor);\n    }\n}\n/*\nuint8_t bgcolor;\nuint8_t colora;\nuint8_t colorb;\nuint8_t textfgcolor;\nuint8_t textbgcolor;\nuint8_t ttextfgcolor;\nuint8_t ttextbgcolor;\n*/\nvoid optix_SetDefaultColors(void) {\n    //whatever colors you want\n    optix_guicolors.bgcolor = 0;\n    optix_guicolors.colora = 0;\n    optix_guicolors.colorb = 255;\n    optix_guicolors.textfgcolor = 255;\n    optix_guicolors.textbgcolor = 0;\n    optix_guicolors.ttextfgcolor = 0;\n    optix_guicolors.ttextbgcolor = 255;\n    optix_guicolors.selectcolor = 224;\n    optix_guicolors.outlinecolor = 74;\n}\n\n\nvoid optix_SetDefaultSettings(void) {\n    optix_cursor.x = 0;\n    optix_cursor.y = 0;\n    optix_cursor.cursoractive = false;\n    optix_guidata.trackpadlastx = 0;\n    optix_guidata.trackpadlasty = 0;\n    optix_guidata.trackpadoriginx = 0;\n    optix_guidata.trackpadoriginy = 0;\n    optix_guisettings.buttonsensitivity = 10;\n    optix_buttoninfo.currbutton = 1;\n    optix_guidata.keypress = true;\n}\n\n\nvoid optix_VertScrollbar(uint24_t x, uint8_t y, uint8_t currpos, uint8_t maxpos, uint8_t width, uint8_t height, bool keypressed) {\n    optix_Scrollbar(x, y, currpos, maxpos, width, height, keypressed, true);\n}\n\nvoid optix_HorizScrollbar(uint24_t x, uint8_t y, uint8_t currpos, uint8_t maxpos, uint24_t width, uint8_t height, bool keypressed) {\n    optix_Scrollbar(x, y, currpos, maxpos, width, height, keypressed, false);\n}\n\n//I'll teach you kids a thing or two about bad code\nvoid optix_Scrollbar(uint24_t x, uint8_t y, uint8_t currpos, uint8_t maxpos, uint24_t width, uint8_t height, bool keypressed, bool vert) {\n    //because 0-3 is 4 entries not 3, for example\n    maxpos++;\n    gfx_SetColor(optix_guicolors.colora);\n    gfx_FillRectangle(x, y, width, height);\n    gfx_SetColor(optix_guicolors.colorb);\n    gfx_Rectangle(x, y, width, height);\n    if (keypressed) gfx_SetColor(optix_guicolors.selectcolor);\n    if (currpos >= maxpos - 1) {\n        if (vert) gfx_FillRectangle(x + 2, y + (height - 2) - (height - 4) / maxpos, width - 4, (height - 4) / maxpos);\n        else gfx_FillRectangle(x + (width - 2) - (width - 4) / maxpos, y + 2, (width - 4) / maxpos, height - 4);\n        gfx_SetColor(optix_guicolors.outlinecolor);\n        if (vert) gfx_Rectangle(x + 2, y + (height - 2) - (height - 4) / maxpos, width - 4, (height - 4) / maxpos);\n        else gfx_Rectangle(x + (width - 2) - (width - 4) / maxpos, y + 2, (width - 4) / maxpos, height - 4);\n    } else {\n        if (vert) gfx_FillRectangle(x + 2, (y + 2) + currpos * ((height - 4) / maxpos), width - 4, (height - 4) / maxpos);\n        else gfx_FillRectangle((x + 2) + currpos * ((width - 4) / maxpos), y + 2, (width - 4) / maxpos, height - 4);\n        gfx_SetColor(optix_guicolors.outlinecolor);\n        if (vert) gfx_Rectangle(x + 2, (y + 2) + currpos * ((height - 4) / maxpos), width - 4, (height - 4) / maxpos);\n        else gfx_Rectangle((x + 2) + currpos * ((width - 4) / maxpos), y + 2, (width - 4) / maxpos, height - 4);\n    }\n}\n\n\n//note: height does not include the height of the title, which is by default 12\nvoid optix_RenderWindow(const char title[], uint16_t width, uint8_t height) {\n    uint8_t xprint;\n    uint8_t yprint;\n    uint8_t titlewidth;\n    titlewidth = 12;\n    xprint = 160 - width / 2;\n    yprint = 120 - (height + titlewidth) / 2;\n    gfx_SetColor(optix_guicolors.colora);\n    gfx_FillRectangle(xprint, yprint + titlewidth, width, height);\n    gfx_SetColor(optix_guicolors.colorb);\n    gfx_Rectangle(xprint, yprint + titlewidth, width, height);\n    //the title bar\n    gfx_FillRectangle(xprint, yprint, width, titlewidth);\n    optix_CusText(true);\n    gfx_PrintStringXY(title, 160 - gfx_GetStringWidth(title) / 2, yprint + titlewidth / 2 - 3);\n}\n\n\n\n\n//this doesn't need to print anymore because another function will do it\nuint8_t optix_WordWrap(const char message[], uint16_t width) {\n    uint8_t numlines;\n    uint16_t charnumber;\n    char tempstr[100] = \"\";\n    char linestr[100] = \"\";\n    uint8_t tempchar;\n    int stringlength;\n    //uint8_t i = 0;\n    //I don't want to talk about it okay\n    //free(optix_wordwraptext);\n    charnumber = 0;\n    numlines = 0;\n    stringlength = optix_GetStringLength(message);\n    //retrying this\n    //so we want to get words, and stop when we get to the end\n    for ( ; ; ) {\n        strcpy(tempstr, \"\");\n        tempchar = 0;\n        //get each new word\n        while (message[charnumber] != \" \"[0]) {\n            //if we reach the newline character immediately stop and start a new line\n            //but put priority on keeping the words where they should be\n            if ((message[charnumber] == \"`\"[0] && gfx_GetStringWidth(tempstr) + gfx_GetStringWidth(linestr) <= width)) {\n                //shift everything back\n                //put the stuff on a new line\n                tempstr[tempchar] = '\\0';\n                strcat(linestr, tempstr);\n                optix_AddWordWrapLine(linestr, &numlines);\n                strcpy(linestr, \"\");\n                strcpy(tempstr, \"\");\n                break;\n            }\n            tempstr[tempchar] = message[charnumber];\n            tempstr[tempchar + 1] = '\\0';\n            if (gfx_GetStringWidth(tempstr) >= width) {\n                tempstr[tempchar] = '\\0';\n                charnumber--;\n                optix_AddWordWrapLine(tempstr, &numlines);\n                strcpy(linestr, \"\");\n                strcpy(tempstr, \"\");\n                break;\n            }\n            tempchar++;\n            charnumber++;\n            if (charnumber >= stringlength) break;\n        }\n        //so it was never moving on\n        if (message[charnumber] != \"`\"[0]) tempstr[tempchar++] = \" \"[0];\n        tempstr[tempchar++] = '\\0';\n        charnumber++;\n        //check if the line width added to the word width is greater than the width of the window\n        if (gfx_GetStringWidth(tempstr) + gfx_GetStringWidth(linestr) <= width) strcat(linestr, tempstr);\n        //if it's greater that word becomes the new next line\n        else {\n            optix_AddWordWrapLine(linestr, &numlines);\n            strcpy(linestr, tempstr);\n        }\n        if (charnumber >= stringlength) break;\n    }\n    optix_AddWordWrapLine(linestr, &numlines);\n    //because\n    return numlines;\n}\n\nvoid optix_AddWordWrapLine(const char string[], uint8_t *numlines) {\n    if (optix_wordwraptext = realloc(optix_wordwraptext, (*numlines + 1) * sizeof(struct optix_wordwraptext_t))) {\n        //thanks LLVM\n        strcpy(optix_wordwraptext[*numlines].text, string);\n        ++*numlines;\n    }\n}\n\nvoid optix_PrintWordWrap(uint16_t width, uint8_t initialx, uint8_t initialy, uint8_t textspacing, uint8_t currline, uint8_t maxlines) {\n    uint8_t i;\n    uint8_t line = 0;\n    char linestr[200];\n    optix_CusText(false);\n    for (i = 0; i < maxlines; i++) {\n        if (line >= maxlines) break;\n        strcpy(linestr, optix_wordwraptext[i + currline].text);\n        if (linestr[0] != \"~\"[0]) gfx_PrintStringXY(linestr, initialx, initialy + line * textspacing);\n        else if (maxlines - line >= 2) {\n            linestr[0] = \" \"[0];\n            //maybe later\n            //gfx_SetTextFGColor(224);\n            gfx_SetTextScale(2, 2);\n            //add 4 here because that is the width of the space, meaning that the title would be shifted over 2 pixels to the right\n            //doesn't really matter but could be irritating if anyone noticed\n            //half of 16 is 8, add that to y to center vertically between lines\n            gfx_PrintStringXY(linestr, (initialx + width / 2) - (gfx_GetStringWidth(linestr) + 4) / 2, (textspacing - 9) + initialy + line * textspacing);\n            //CusText(false);\n            gfx_SetTextScale(1, 1);\n            //bigger text so taller\n            line++;\n        }\n        line++;\n    }\n}\n\n\n\nint optix_GetStringLength(const char string[]) {\n    int stringlength;\n    stringlength = 0;\n    while (string[stringlength] != '\\0') stringlength++;\n    return stringlength;\n}\n\n//HOW TO USE: just call the function, giving it the title, your desired text spacing (in pixels), the width of the box (in pixels),\n//and it will handle the rest, centering the box and wrapping the text for you, and now scrolling as well\n//ANOTHER NOTE: Making new lines and titles within the box: You can use the characters \"`\" and \"~\" to start a new line and title a line,\n//respectively. In order to start a new line, you must put the \"`\" directly in front of the word that you want the new line to start with:\n//\"Some text... `newline starts here\". If you'd like to make a line centered and in a different color, as for a subheader, you can use \"~\".\n//This is best coupled with \"`\", where it must come second (newline, then indicate you want that to be a title). Example: \"Some text... `~This\n//is a title! `more text\"\nvoid optix_Message(const char title[], const char message[], uint8_t textspacing, uint16_t width, uint8_t maxlines) {\n    //change as necessary\n    uint8_t xprint;\n    uint8_t yprint;\n    uint8_t numlines = 0;\n    uint8_t currline;\n    char temp[2] = \" \";\n    bool keypress;\n    uint8_t titlewidth;\n    uint8_t padding = 3;\n    //let's fix this\n    //gfx_Blit(1);\n    currline = 0;\n    keypress = true;\n    titlewidth = 12;\n    numlines = optix_WordWrap(message, width);\n    if (numlines < maxlines) maxlines = numlines;\n    xprint = 160 - (width + 2 * padding) / 2;\n    //the top bar will always be 12 pixels tall\n    yprint = 120 - (maxlines * textspacing + titlewidth + 2 * padding) / 2;\n    while (kb_AnyKey()) kb_Scan();\n    while (!(kb_Data[6] & kb_Enter)) {\n        kb_Scan();\n        //handle scrolling\n        if (numlines > maxlines) {\n            if ((kb_Data[7] & kb_Up) && (currline > 0) && keypress) {\n                currline--;\n                keypress = false;\n            }\n            if ((kb_Data[7] & kb_Down) && (currline < numlines - maxlines) && keypress) {\n                currline++;\n                keypress = false;\n            }\n        }\n        if (!kb_AnyKey()) keypress = true;\n        //numlines++ because we need to display the title too\n        //15 is the textspacing\n        //yprint = 120 - maxlines * textspacing / 2;\n        //make a box\n        gfx_SetColor(optix_guicolors.colora);\n        gfx_FillRectangle(xprint, yprint + titlewidth, width + 2 * padding, maxlines * textspacing + (2 * padding));\n        gfx_SetColor(optix_guicolors.colorb);\n        gfx_Rectangle(xprint, yprint + titlewidth, width + 2 * padding, maxlines * textspacing + (2 * padding));\n        //gfx_Rectangle(xprint + 1, yprint + titlewidth + 1, (width + 2 * padding) - 2, (maxlines * textspacing + (2 * padding)) - 2);\n        //make some triangles (not now though, they're a little off and I like the box better)\n        /*gfx_FillTriangle(xprint - 5, yprint - 5 + textspacing, xprint - 5 + textspacing, yprint - 5 + textspacing, xprint - 5 + textspacing, yprint - 5);\n        gfx_FillTriangle(xprint - 5 + width, yprint - 5 + textspacing, xprint - 5 + width - textspacing, yprint - 5 + textspacing, xprint - 5 + width - textspacing, yprint - 5);*/\n        gfx_FillRectangle(xprint, yprint, width + 2 * padding, titlewidth);\n        optix_CusText(true);\n        gfx_PrintStringXY(title, 160 - gfx_GetStringWidth(title) / 2, yprint + (titlewidth / 2 - 3));\n        //indicate that scrolling can be done if applicable\n        if (numlines > maxlines) {\n            if (currline > 0 && currline < numlines - maxlines) temp[0] = 18;\n            else if (currline > 0) temp[0] = 24;\n            else if (currline < numlines - maxlines) temp[0] = 25;\n            gfx_PrintStringXY(temp, xprint + width + padding - gfx_GetStringWidth(temp), yprint + (titlewidth / 2 - 3));\n        }\n        //we still want the text to be in the right spot\n        //yprint += textspacing + 2;\n        optix_PrintWordWrap(width, xprint + 2 * padding, yprint + titlewidth + padding + 1, textspacing, currline, maxlines);\n        gfx_SwapDraw();\n    }\n    while (kb_AnyKey()) kb_Scan();\n}\n\n//SYNTAX NOTES: specify your title as normal, as well as your text spacing and box width (in pixels), as for the message routine\n//maxlines is how many lines will be displayed of the menu at one time, and if there are more entries in the menu than this number,\n//it will allow you to scroll. Entries should be in the format of something like this: \"Play`Statistics`Options`Reset`Game mode`Credits`About`Quit`\",\n//where the character \"`\" comes AFTER each entry\nuint8_t optix_Menu(const char title[], const char entries[], uint8_t textspacing, uint16_t width, uint8_t maxlines) {\n    //the new menu stuff will do it all for us\n    struct optix_menu_t *m = &optix_menu[optix_guidata.currmenu];\n    uint8_t xprint;\n    uint8_t yprint;\n    uint8_t numlines;\n    uint8_t currline;\n    uint8_t currentselection;\n    uint8_t titlewidth = 12;\n    char temp[2] = \" \";\n    bool enterpressed;\n    //same here\n    //gfx_Blit(1);\n    numlines = optix_AddMenu(0, 0, 0, 0, 0, 0, 0, 0, entries, NULL);\n    if (numlines < maxlines) maxlines = numlines;\n    optix_DeleteLastMenu();\n    currline = 0;\n    currentselection = 0;\n    enterpressed = false;\n    xprint = 160 - width / 2;\n    yprint = 120 - (titlewidth + maxlines * textspacing) / 2;\n    optix_AddMenu(xprint, yprint + titlewidth, 0, 0, 1, maxlines, width, textspacing, entries, NULL);\n    optix_guidata.currmenu = optix_guidata.nummenus - 1;\n    m = &optix_menu[optix_guidata.currmenu];\n    while (kb_AnyKey()) kb_Scan();\n    while ((!m->enterpressed) || (kb_Data[6] & kb_Enter) || (kb_Data[1] & kb_2nd)) {\n        optix_UpdateCurrMenu();\n        gfx_SetColor(optix_guicolors.colora);\n        gfx_FillRectangle(xprint - 1, yprint + titlewidth - 1, width + 2, maxlines * textspacing + 2);\n        gfx_SetColor(optix_guicolors.colorb);\n        gfx_Rectangle(xprint - 1, yprint + titlewidth - 1, width + 2, maxlines * textspacing + 2);\n        //gfx_Rectangle(xprint + 1, yprint + titlewidth + 1, (width + 2 * padding) - 2, (maxlines * textspacing + (2 * padding)) - 2);\n        //make some triangles (not now though, they're a little off and I like the box better)\n        /*gfx_FillTriangle(xprint - 5, yprint - 5 + textspacing, xprint - 5 + textspacing, yprint - 5 + textspacing, xprint - 5 + textspacing, yprint - 5);\n        gfx_FillTriangle(xprint - 5 + width, yprint - 5 + textspacing, xprint - 5 + width - textspacing, yprint - 5 + textspacing, xprint - 5 + width - textspacing, yprint - 5);*/\n        gfx_FillRectangle(xprint - 1, yprint - 1, width + 2, titlewidth);\n        optix_CusText(true);\n        gfx_PrintStringXY(title, 160 - gfx_GetStringWidth(title) / 2, yprint + (titlewidth / 2 - 4));\n        //indicate that scrolling can be done if applicable\n        if (numlines > maxlines) {\n            if (m->menumin > 0 && m->menumin < m->numoptions - maxlines) temp[0] = 18;\n            else if (m->menumin > 0) temp[0] = 24;\n            else if (m->menumin < m->numoptions - maxlines) temp[0] = 25;\n            gfx_PrintStringXY(temp, xprint + width - gfx_GetStringWidth(temp), yprint + (titlewidth / 2 - 4));\n        }\n        optix_RenderMenu(optix_guidata.currmenu);\n        gfx_SwapDraw();\n    }\n    currentselection = m->currselection;\n    optix_DeleteLastMenu();\n    return currentselection;\n}\n\n//old\n/*uint8_t optix_DispMenu(const char entries[], uint16_t width, bool print, uint8_t initialx, uint8_t initialy, uint8_t textspacing, uint8_t currline, uint8_t linestoprint, uint8_t currentselection) {\n    uint8_t numlines;\n    uint16_t charnumber;\n    char tempstr[100] = \" \";\n    uint8_t tempchar;\n    int stringlength;\n    charnumber = 0;\n    numlines = 0;\n    stringlength = optix_GetStringLength(entries);\n    linestoprint -= 3;\n    while ((charnumber < stringlength) && ((numlines <= currline + linestoprint + 1) || (!print))) {\n        tempchar = 0;\n        strcpy(tempstr, \" \");\n        while (entries[charnumber] != \"`\"[0]) {\n            tempstr[tempchar] = entries[charnumber];\n            tempchar++;\n            charnumber++;\n            if (charnumber > stringlength) break;\n        }\n        charnumber++;\n        tempstr[tempchar] = '\\0';\n        numlines++;\n        if ((print) && (numlines > currline)) {\n            if (numlines - 1 == currentselection) optix_CusText(true);\n            else optix_CusText(false);\n            gfx_PrintStringXY(tempstr, (initialx + width / 2) - gfx_GetStringWidth(tempstr) / 2, initialy + (numlines - currline - 1) * textspacing);\n        }\n    }\n    //if (print) gfx_PrintStringXY(tempstr, (initialx + width / 2) - gfx_GetStringWidth(tempstr) / 2, initialy + (numlines - currline) * textspacing);\n    //numlines++;\n    return numlines;\n}*/\n\nuint8_t optix_AddMenu(uint16_t x, uint8_t y, uint8_t xpadding, uint8_t ypadding, uint8_t width, uint8_t height, uint8_t xspacing, uint8_t yspacing,\n                      const char text[], gfx_sprite_t *sprites[]) {\n    uint8_t numlines;\n    uint16_t charnumber;\n    char tempstr[100] = \" \";\n    uint8_t tempchar;\n    int stringlength;\n    struct optix_menu_t *m;\n    optix_menu = realloc(optix_menu, ++optix_guidata.nummenus * sizeof(struct optix_menu_t));\n    m = &optix_menu[optix_guidata.nummenus - 1];\n    m->width = width;\n    m->height = height;\n    m->xspacing = xspacing;\n    m->yspacing = yspacing;\n    m->menumin = 0;\n    m->x = x;\n    m->y = y;\n    m->xpadding = xpadding;\n    m->ypadding = ypadding;\n    m->enterpressed = false;\n    m->currselection = 0;\n    m->text = NULL;\n    //free(m->text);\n    charnumber = 0;\n    numlines = 0;\n    stringlength = optix_GetStringLength(text);\n    while (charnumber < stringlength) {\n        tempchar = 0;\n        strcpy(tempstr, \" \");\n        while (text[charnumber] != \"`\"[0]) {\n            tempstr[tempchar] = text[charnumber];\n            tempchar++;\n            charnumber++;\n            if (charnumber > stringlength) break;\n        }\n        charnumber++;\n        tempstr[tempchar] = '\\0';\n        //add it to the text\n        numlines++;\n        //realloc the array\n        m->text = realloc(m->text, numlines * 3);\n        //realloc the const char pointer\n        m->text[numlines - 1] = malloc(tempchar + 1);\n        strcpy(m->text[numlines - 1], tempstr);\n    }\n    m->numoptions = numlines;\n    return numlines;\n}\n\nvoid optix_UpdateCurrMenu(void) {\n    struct optix_menu_t *m = &optix_menu[optix_guidata.currmenu];\n    int attoption = -1;\n    kb_Scan();\n    if (!kb_AnyKey()) optix_guidata.keypress = true;\n    if (kb_Data[7] & kb_Up && optix_guidata.keypress && m->height > 1) {\n        attoption = m->currselection - m->width;\n        optix_guidata.keypress = false;\n    }\n    if (kb_Data[7] & kb_Down && optix_guidata.keypress && m->height > 1) {\n        attoption = m->currselection + m->width;\n        optix_guidata.keypress = false;\n    }\n    if (kb_Data[7] & kb_Left && optix_guidata.keypress) {\n        attoption = m->currselection - m->height;\n        optix_guidata.keypress = false;\n    }\n    if (kb_Data[7] & kb_Right && optix_guidata.keypress) {\n        attoption = m->currselection + m->height;\n        optix_guidata.keypress = false;\n    }\n    if ((kb_Data[6] & kb_Enter) || (kb_Data[1] & kb_2nd)) m->enterpressed = true;\n    //else m->enterpressed = false;\n    if (attoption >= 0 && attoption <= m->numoptions - 1) m->currselection = attoption;\n    //handle scrolling\n    if (m->currselection > m->menumin + (m->width * m->height - 1)) {\n        if (m->width == 1 || m->height == 1) m->menumin++;\n        else m->menumin += m->width;\n    }\n    else if (m->currselection < m->menumin) {\n        if (m->width == 1 || m->height == 1) m->menumin--;\n        else m->menumin -= m->width;\n    }\n}\n\nvoid optix_RenderMenu(uint8_t menu) {\n    struct optix_menu_t *m = &optix_menu[menu];\n    uint8_t width;\n    uint8_t height;\n    uint8_t iteration;\n    iteration = m->menumin;\n    for (height = 0; height < m->height; height++) {\n        for (width = 0; width < m->width; width++) {\n            if (iteration == m->currselection && menu == optix_guidata.currmenu) {\n                if (m->enterpressed) {\n                    gfx_SetColor(optix_guicolors.selectcolor);\n                    optix_CusText(false);\n                } else {\n                    gfx_SetColor(optix_guicolors.colorb);\n                    optix_CusText(true);\n                }\n                gfx_FillRectangle(width * m->xspacing + m->x + m->xpadding, height * m->yspacing + m->y + m->ypadding, m->xspacing - 2 * m->xpadding, m->yspacing - 2 * m->ypadding);\n                gfx_SetColor(optix_guicolors.outlinecolor);\n                gfx_Rectangle(width * m->xspacing + m->x + m->xpadding, height * m->yspacing + m->y + m->ypadding, m->xspacing - 2 * m->xpadding, m->yspacing - 2 * m->ypadding);\n            } else optix_CusText(false);\n            gfx_PrintStringXY(m->text[iteration], m->x + (width * m->xspacing + m->xspacing / 2) - gfx_GetStringWidth(m->text[iteration]) / 2, m->y + height * m->yspacing + (m->yspacing / 2) - 4);\n            iteration++;\n            //gfx_PrintStringXY(m->text[height * m->width + width], (width * m->xspacing - m->xspacing) - gfx_GetStringWidth(m->text[m->width * height + width]) / 2, height * m->yspacing + 4);\n            if (iteration == m->numoptions) break;\n        }\n    }\n}\n\nvoid optix_DeleteLastMenu(void) {\n    struct optix_menu_t *m;\n    uint8_t i = 0;\n    if (optix_guidata.nummenus > 0) {\n        m = &optix_menu[--optix_guidata.nummenus];\n        for (i = 0; i < m->numoptions; i++) free(m->text[i]);\n        free(m->text);\n        //if (optix_guidata.nummenus > 1)\n        optix_menu = realloc(optix_menu, optix_guidata.nummenus * sizeof(struct optix_menu_t));\n        //else free(optix_menu);\n        //just to make sure\n        //optix_guidata.currmenu--;\n    }\n}\n\n//string input stuff\nuint8_t optix_InsertSpecialCharacter(void) {\n    uint8_t x;\n    uint8_t y;\n    uint8_t character;\n    uint8_t currentx;\n    uint8_t currenty;\n    bool keypress;\n    //gfx_sprite_t *oldback = gfx_MallocSprite(255, 240);\n    optix_CusText(false);\n    character = 0;\n    x = 0;\n    y = 0;\n    currentx = 0;\n    currenty = 0;\n    gfx_Blit(0);\n    //gfx_GetSprite(oldback, 65, 0);\n    while (!((kb_Data[6] & kb_Enter) || (kb_Data[1] & kb_2nd))) {\n        gfx_FillScreen(optix_guicolors.bgcolor);\n        kb_Scan();\n        if ((kb_Data[7] & kb_Up) && (keypress) && (currenty > 0)) {\n            currenty--;\n            keypress = false;\n        }\n        if ((kb_Data[7] & kb_Down) && (keypress) && (currenty < 7)) {\n            currenty++;\n            keypress = false;\n        }\n        if ((kb_Data[7] & kb_Left) && (keypress) && (currentx > 0)) {\n            currentx--;\n            keypress = false;\n        }\n        if ((kb_Data[7] & kb_Right) && (keypress) && (currentx < 15)) {\n            currentx++;\n            keypress = false;\n        }\n        if ((kb_Data[6] & kb_Clear) && (keypress)) {\n            character = '\\0';\n            break;\n        }\n        if (!kb_AnyKey()) keypress = true;\n        gfx_SetColor(optix_guicolors.colora);\n        gfx_FillRectangle(77, 83, 166, 86);\n        gfx_SetColor(optix_guicolors.colorb);\n        gfx_Rectangle(77, 83, 166, 86);\n        gfx_Rectangle(currentx * 10 + 79, currenty * 10 + 85, 12, 12);\n        gfx_FillRectangle(77, 71, 166, 12);\n        optix_CusText(false);\n        for (y = 0; y < 8; y++) {\n            for (x = 0; x < 16; x++) {\n                character = y * 16 + x;\n                gfx_SetTextXY(x * 10 + 81, y * 10 + 87);\n                gfx_PrintChar(character);\n            }\n        }\n        gfx_SetColor(optix_guicolors.colorb);\n        gfx_FillRectangle(currentx * 10 + 80, currenty * 10 + 86, 10, 10);\n        optix_CusText(true);\n        //the title\n        gfx_PrintStringXY(\"Special characters\", 160 - gfx_GetStringWidth(\"Special characters\") / 2, 74);\n\n\n        gfx_SetTextXY(currentx * 10 + 81, currenty * 10 + 87);\n        character = currenty * 16 + currentx;\n        gfx_PrintChar(character);\n        gfx_SwapDraw();\n    }\n    while (kb_Data[6] & kb_Enter) {\n        kb_Scan();\n        gfx_SetColor(optix_guicolors.selectcolor);\n        gfx_FillRectangle(currentx * 10 + 80, currenty * 10 + 86, 10, 10);\n        optix_CusText(true);\n        gfx_SetTextXY(currentx * 10 + 81, currenty * 10 + 87);\n        character = currenty * 16 + currentx;\n        gfx_PrintChar(character);\n        gfx_SwapDraw();\n    }\n    //check if this is one of the characters that OPTIX uses for word wrapping (just in case)\n    if (character == \"`\"[0] || character == \"~\"[0]) {\n        optix_Message(\"ERROR\", \"You attempted to use a character reserved by OPTIX. Nice try, bucko.\", 10, 150, 10);\n        character = '\\0';\n    }\n    //gfx_Sprite(oldback, 65, 0);\n    //free(oldback);\n    gfx_Blit(1);\n    return character;\n}\n\nchar *optix_GetStringInput(const char title[], uint8_t textspacing, uint16_t width, int maxchars) {\n    //change as necessary\n    const char *keys[3] = {\"\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0WRMH\\0\\0?\\0VQLG\\0\\0.ZUPKFC\\0 YTOJEB\\0\\0XSNIDA\\0\\0\\0\\0\\0\\0\\0\\0\\0\",\n                           \"\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0wrmh\\0\\0?\\0vqlg\\0\\0.zupkfc\\0 ytojeb\\0\\0xsnida\\0\\0\\0\\0\\0\\0\\0\\0\\0\",\n                           \"\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0-\\x33\\x36\\x39)\\0\\0\\0.\\x32\\x35\\x38(\\0\\0\\0\\x30\\x31\\x34\\x37,\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\"\n                          };\n    uint8_t xprint;\n    uint8_t yprint;\n    uint8_t numlines;\n    uint8_t currline;\n    char temp[2] = \"\";\n    char limit[20] = \"\";\n    bool keypress;\n    uint8_t titlewidth;\n    uint8_t padding = 3;\n    //basically the char number\n    int i;\n    uint8_t skKey;\n    //uppercase keys\n    uint8_t currmap = 0;\n    uint8_t cursorblink;\n    //free(optix_stringinput);\n    cursorblink = 0;\n    skKey = 0;\n    i = 0;\n    //free(optix_wordwraptext);\n    //null terminating byte is a thing\n    if (optix_stringinput = realloc(optix_stringinput, maxchars + 1)) {\n        *(optix_stringinput + maxchars) = '\\0';\n        //strcpy(optix_stringinput, \"\");\n        //strcpy(optix_wordwraptext[0].text, \"\");\n        optix_WordWrap(\"\", width);\n        currline = 0;\n        keypress = true;\n        titlewidth = 12;\n        numlines = 1;\n        xprint = 160 - (width + 2 * padding) / 2;\n        //the top bar will always be 12 pixels tall\n        yprint = 120 - (numlines * textspacing + titlewidth + 2 * padding) / 2;\n        while (kb_AnyKey()) kb_Scan();\n        while (((skKey = os_GetCSC()) != sk_Enter)) {\n            if (keys[currmap][skKey] && i < maxchars) {\n                optix_stringinput[i++] = keys[currmap][skKey];\n                numlines = optix_WordWrap(optix_stringinput, width);\n                cursorblink = 0;\n            }\n            if ((skKey == sk_Del) && (i > 0)) {\n                optix_stringinput[--i] = '\\0';\n                numlines = optix_WordWrap(optix_stringinput, width);\n            }\n            if (skKey == sk_Clear) {\n                i = 0;\n                strcpy(optix_stringinput, \" \");\n                strcpy(optix_wordwraptext[0].text, \" \");\n                numlines = optix_WordWrap(optix_stringinput, width);\n            }\n            if (skKey == sk_Add && i < maxchars) {\n                optix_stringinput[i++] = optix_InsertSpecialCharacter();\n                numlines = optix_WordWrap(optix_stringinput, width);\n            }\n            if (skKey == sk_Alpha) currmap++;\n            if (currmap > 2) currmap = 0;\n            optix_stringinput[i + 1] = '\\0';\n            //gfx_FillScreen(optix_guicolors.bgcolor);\n            gfx_SetColor(optix_guicolors.colora);\n            gfx_FillRectangle(xprint, yprint + titlewidth, width + 2 * padding, numlines * textspacing + (2 * padding));\n            gfx_SetColor(optix_guicolors.colorb);\n            gfx_Rectangle(xprint, yprint + titlewidth, width + 2 * padding, numlines * textspacing + (2 * padding));\n            gfx_FillRectangle(xprint, yprint, width + 2 * padding, titlewidth);\n            //a cursor\n            if (cursorblink < 10) {\n                gfx_VertLine(xprint + 2 * padding + gfx_GetStringWidth(optix_wordwraptext[numlines - 1].text) - 2, yprint + titlewidth + padding + (numlines - 1) * textspacing - 1, 11);\n                gfx_VertLine(xprint + 2 * padding + gfx_GetStringWidth(optix_wordwraptext[numlines - 1].text) - 1, yprint + titlewidth + padding + (numlines - 1) * textspacing - 1, 11);\n            }\n            cursorblink++;\n            if (cursorblink > 20) cursorblink = 0;\n            optix_CusText(true);\n            gfx_PrintStringXY(title, 160 - gfx_GetStringWidth(title) / 2, yprint + (titlewidth / 2 - 3));\n            sprintf(limit, \"%d/%d\", i, maxchars);\n            switch (currmap) {\n            case 0:\n                temp[0] = 'A';\n                break;\n            case 1:\n                temp[0] = 'a';\n                break;\n            case 2:\n                temp[0] = '1';\n                break;\n            default:\n                temp[0] = '?';\n                break;\n            }\n            gfx_PrintStringXY(limit, xprint + 2 * padding, yprint + (titlewidth / 2 - 3));\n            gfx_PrintStringXY(temp, xprint + width + padding - gfx_GetStringWidth(temp), yprint + (titlewidth / 2 - 3));\n            optix_PrintWordWrap(width, xprint + 2 * padding, yprint + titlewidth + padding + 1, textspacing, currline, numlines);\n            gfx_SwapDraw();\n        }\n        while (kb_AnyKey()) kb_Scan();\n        return optix_stringinput;\n    } else return NULL;\n}\n\n\n\nvoid optix_UpdateCursor(void) {\n    kb_Scan();\n    if ((kb_Data[7] & kb_Left) && (optix_cursor.x > 0)) optix_cursor.x -= 2;\n    if ((kb_Data[7] & kb_Right) && (optix_cursor.x < 320)) optix_cursor.x += 2;\n    if ((kb_Data[7] & kb_Up) && (optix_cursor.y > 0)) optix_cursor.y -= 2;\n    if ((kb_Data[7] & kb_Down) && (optix_cursor.y < 240)) optix_cursor.y += 2;\n    if (optix_cursor.x > 320) optix_cursor.x = 320;\n    if (optix_cursor.y > 240) optix_cursor.y = 240;\n}\n\nvoid optix_RenderCursor(void) {\n    gfx_SetColor(optix_guicolors.colora);\n    gfx_Circle(optix_cursor.x, optix_cursor.y, 5);\n    gfx_Circle(optix_cursor.x, optix_cursor.y, 4);\n}\n\n//also updates which button the cursor is currently over\nvoid optix_ClickCursor(void) {\n    uint8_t i;\n    if ((kb_Data[6] & kb_Enter) && (optix_guidata.keypress)) {\n        i = 0;\n        for (i = 0; i < optix_buttoninfo.numbuttons; i++) {\n            struct optix_button_t *b = &optix_button[i];\n            if (optix_cursor.x - b->x < b->width && optix_cursor.y - b->y < b->height && optix_cursor.x - b->x > 0 && optix_cursor.y - b->y > 0) {\n                b->funct();\n                break;\n            }\n        }\n        optix_guidata.keypress = false;\n    } else {\n        i = 0;\n        for (i = 0; i < optix_buttoninfo.numbuttons; i++) {\n            struct optix_button_t *b = &optix_button[i];\n            if (optix_cursor.x - b->x < b->width && optix_cursor.y - b->y < b->height && optix_cursor.x - b->x > 0 && optix_cursor.y - b->y > 0) {\n                optix_buttoninfo.currbutton = i;\n                break;\n            } else {\n                //make sure we aren't selecting buttons we shouldn't be\n                optix_buttoninfo.currbutton = optix_buttoninfo.numbuttons + 1;\n            }\n        }\n    }\n}\n\n\n//just don't ask please\n//alright this is getting pretty annoying just work you asdkjdfs;ljkafsd;jlksjfda;f;sdjlkda;jlkas;ljksda;jlka;kjs;jasdfadjs;lkoijiyweapo\n//listen here you little son of a bioth;oirty;jlnfds;lkjf;lkfsdj;lk\nvoid optix_HandleTrackPad(void) {\n    uint16_t x;\n    uint8_t y;\n    kb_key_t key;\n    x = 0;\n    y = 0;\n    //thanks Michael2_3B (maybe will optimize)\n    if (kb_Data[2]) {\n        key = kb_Data[2];\n        x=32;\n        if(key == kb_Sto) y=188;\n        if(key == kb_Ln) y=154;\n        if(key == kb_Log) y=120;\n        if(key == kb_Square) y=85;\n        if(key == kb_Recip) y=51;\n        if(key == kb_Math) y=17;\n    }\n    if (kb_Data[3]) {\n        key = kb_Data[3];\n        x=96;\n        if(key == kb_0) y=222;\n        if(key == kb_1) y=188;\n        if(key == kb_4) y=154;\n        if(key == kb_7) y=120;\n        if(key == kb_Comma) y=85;\n        if(key == kb_Sin) y=51;\n        if(key == kb_Apps) y=17;\n    }\n    if (kb_Data[4]) {\n        key = kb_Data[4];\n        x=160;\n        if(key == kb_DecPnt) y=222;\n        if(key == kb_2) y=188;\n        if(key == kb_5) y=154;\n        if(key == kb_8) y=120;\n        if(key == kb_LParen) y=85;\n        if(key == kb_Cos) y=51;\n        if(key == kb_Prgm) y=17;\n    }\n    if (kb_Data[5]) {\n        key = kb_Data[5];\n        x=224;\n        if(key == kb_Chs) y=222;\n        if(key == kb_3) y=188;\n        if(key == kb_6) y=154;\n        if(key == kb_9) y=120;\n        if(key == kb_RParen) y=85;\n        if(key == kb_Tan) y=51;\n        if(key == kb_Vars) y=17;\n    }\n    if (kb_Data[6]) {\n        key = kb_Data[6];\n        x=288;\n        if(key == kb_Enter) y=222;\n        if(key == kb_Add) y=188;\n        if(key == kb_Sub) y=154;\n        if(key == kb_Mul) y=120;\n        if(key == kb_Div) y=85;\n        if(key == kb_Power) y=51;\n        if(key == kb_Clear) y=17;\n    }\n    if (x != 0 && y != 0) {\n        //we need to know to start where the cursor was before\n        //reset according to new location\n        if (optix_guidata.loopssincepress > 2) {\n            optix_guidata.trackpadoriginx = optix_cursor.x;\n            optix_guidata.trackpadoriginy = optix_cursor.y;\n            optix_guidata.trackpadlastx = x;\n            optix_guidata.trackpadlasty = y;\n            optix_guidata.loopssincepress = 0;\n        }\n        //if you're moving the cursor more slowly, it should more slower\n        optix_cursor.x = optix_guidata.trackpadoriginx + (x - optix_guidata.trackpadlastx) / 3;\n        optix_cursor.y = optix_guidata.trackpadoriginy + (y - optix_guidata.trackpadlasty) / 3;\n        //more things\n        optix_guidata.loopssincepress = 0;\n        //guidata.trackpadpressedlast = true;\n    } else {\n        //guidata.trackpadpressedlast = false;\n        optix_guidata.loopssincepress++;\n    }\n}\n\n//this stuff was formerly in button.c\n\nvoid optix_InitializeButtons(void) {\n    optix_button = (struct optix_button_t*) malloc(0 * sizeof(struct optix_button_t));\n}\n\nvoid optix_AddButton(uint16_t x, uint8_t y, uint16_t width, uint8_t height, const char text[15], gfx_sprite_t *spr, void (*funct)(void), sk_key_t altkey) {\n    if (optix_button = realloc(optix_button, (optix_buttoninfo.numbuttons + 1) * sizeof(struct optix_button_t))) {\n        optix_button[optix_buttoninfo.numbuttons].x = x;\n        optix_button[optix_buttoninfo.numbuttons].y = y;\n        optix_button[optix_buttoninfo.numbuttons].width = width;\n        optix_button[optix_buttoninfo.numbuttons].height = height;\n        strcpy(optix_button[optix_buttoninfo.numbuttons].text, text);\n        optix_button[optix_buttoninfo.numbuttons].spr = spr;\n        optix_button[optix_buttoninfo.numbuttons].funct = funct;\n        optix_button[optix_buttoninfo.numbuttons].altkey = altkey;\n        optix_buttoninfo.numbuttons++;\n    } else {\n        optix_Message(\"ERROR 01\", \"Failed to reallocate space in the dynamic array for a new button. Please submit a bug report!\", 10, 150, 3);\n    }\n}\n//untested so be careful\nvoid optix_DeleteButton(uint8_t buttontodelete) {\n    uint8_t i;\n    i = 0;\n    for (i = optix_buttoninfo.numbuttons; i > buttontodelete; i--) optix_button[i - 1] = optix_button[i];\n    optix_buttoninfo.numbuttons--;\n    optix_button = realloc(optix_button, optix_buttoninfo.numbuttons * sizeof(*optix_button));\n}\n\nvoid optix_RenderButtons(void) {\n    uint8_t i;\n    struct optix_button_t *b;\n    i = 0;\n    optix_CusText(false);\n    for (i = 0; i < optix_buttoninfo.numbuttons; i++) {\n        b = &optix_button[i];\n        gfx_SetColor(optix_guicolors.colora);\n        if (i == optix_buttoninfo.currbutton) {\n            //are you serious\n            //ffs just work, it's not that hard to know what a null pointer is yhou bitkhlclk\n            //I mean I like looking at unmapped memory and everything but this isn't that hard\n            if (b->spr == NULL) gfx_FillRectangle(b->x, b->y, b->width, b->height);\n            else {\n                //make the box a little wider to show an outline\n                //could mess up hitboxes somewhat\n                gfx_FillRectangle(b->x - 2, b->y - 2, b->width + 4, b->height + 4);\n                gfx_TransparentSprite(b->spr, b->x, b->y);\n            }\n        }\n        gfx_PrintStringXY(b->text, (b->x + b->width / 2) - gfx_GetStringWidth(b->text) / 2, (b->y + b->height / 2) - 4);\n    }\n    //Let's hope that works\n}\n\n//all of the values in this function are pretty random, may need changing later on but seems to work for now\nvoid optix_UpdateSelectedButton(void) {\n    int tryx;\n    int tryy;\n    uint8_t closestbutton;\n    int closestbuttonscore;\n    int buttonscore;\n    uint8_t i;\n    struct optix_button_t *c;\n    i = 0;\n    tryx = 0;\n    tryy = 0;\n    closestbuttonscore = 10000;\n    closestbutton = 0;\n    buttonscore = 0;\n    if (optix_guidata.keypress) {\n        kb_Scan();\n        if (kb_Data[7] & kb_Left) tryx--;\n        if (kb_Data[7] & kb_Right) tryx++;\n        if (kb_Data[7] & kb_Up) tryy--;\n        if (kb_Data[7] & kb_Down) tryy++;\n        if (tryx == 0 && tryy == 0) return;\n        c = &optix_button[optix_buttoninfo.currbutton];\n        for (i = 0; i < optix_buttoninfo.numbuttons; i++) {\n            struct optix_button_t *b = &optix_button[i];\n            //the first check, assume that if the key has an alt code it can't be selected when not in cursor mode\n            //button can't be selected if there is a shortcut for it pretty much (like the start key, which will be\n            //F1, no point in having a jump to that, but you will be able to click on it with the cursor if you want)\n            if (b->altkey != 0) continue;\n            if (tryx == -1) {\n                if (b->x < c->x) buttonscore = (c->x - b->x) + (abs(b->y - c->y)) * optix_guisettings.buttonsensitivity;\n                else buttonscore = 10000;\n            } else if (tryx == 1) {\n                if (b->x > c->x) buttonscore = (b->x - c->x) + (abs(b->y - c->y)) * optix_guisettings.buttonsensitivity;\n                else buttonscore = 10000;\n            } else if (tryy == -1) {\n                if (b->y < c->y) buttonscore = (c->y - b->y) + (abs(b->x - c->x)) * optix_guisettings.buttonsensitivity;\n                else buttonscore = 10000;\n            } else if (tryy == 1) {\n                if (b->y > c->y) buttonscore = (b->y - c->y) + (abs(b->x - c->x)) * optix_guisettings.buttonsensitivity;\n                else buttonscore = 10000;\n            } else closestbuttonscore = 10000;\n            if (buttonscore < closestbuttonscore) {\n                closestbutton = i;\n                closestbuttonscore = buttonscore;\n            }\n        }\n        if (closestbuttonscore < 5000) optix_buttoninfo.currbutton = closestbutton;\n        optix_guidata.keypress = false;\n    }\n}\n\nvoid optix_ClickButton(void) {\n    struct optix_button_t *b = &optix_button[optix_buttoninfo.currbutton];\n    if ((kb_Data[6] & kb_Enter) && (optix_guidata.keypress)) {\n        //not really sure why this is here but I guess there isn't a bug with the functions after all\n        //gfx_FillScreen(224);\n        //gfx_SwapDraw();\n        b->funct();\n        optix_guidata.keypress = false;\n    }\n}\n\n//cool, altkeys (will work in both cursor and box modes, I think)\nvoid optix_CheckForAltKey(void) {\n    uint8_t i;\n    for (i = 0; i < optix_buttoninfo.numbuttons; i++) {\n        struct optix_button_t *b = &optix_button[i];\n        //could be problematic if altkey is set to 0 so fixed it\n        if (b->altkey == optix_guidata.skkey && b->altkey != 0) b->funct();\n    }\n}\n\n\n//these will be irrelevant when we can set custom colors\n"
  },
  {
    "path": "src/sprites/optix.h",
    "content": "#include <tice.h>\n#include <graphx.h>\n#include <keypadc.h>\n\n// function declarations\nvoid optix_WhiText(void);\nvoid optix_BlaText(void);\nvoid optix_CusText(bool title);\nvoid optix_RenderWindow(const char title[], uint16_t width, uint8_t height);\nuint8_t optix_WordWrap(const char message[], uint16_t width);\nint optix_GetStringLength(const char string[]);\nvoid optix_Message(const char title[], const char message[], uint8_t textspacing, uint16_t width, uint8_t maxlines);\nvoid optix_AddWordWrapLine(const char string[], uint8_t *numlines);\nvoid optix_PrintWordWrap(uint16_t width, uint8_t initialx, uint8_t initialy, uint8_t textspacing, uint8_t currline, uint8_t maxlines);\nuint8_t optix_Menu(const char title[], const char entries[], uint8_t textspacing, uint16_t width, uint8_t maxlines);\n//uint8_t optix_DispMenu(const char entries[], uint16_t width, bool print, uint8_t initialx, uint8_t initialy, uint8_t textspacing, uint8_t currline, uint8_t linestoprint, uint8_t currentselection);\nuint8_t optix_AddMenu(uint16_t x, uint8_t y, uint8_t xpadding, uint8_t ypadding, uint8_t width, uint8_t height, uint8_t xspacing, uint8_t yspacing,\n                      const char text[], gfx_sprite_t *sprites[]);\nvoid optix_UpdateCurrMenu(void);\nvoid optix_RenderMenu(uint8_t menu);\nvoid optix_DeleteLastMenu(void);\nuint8_t optix_InsertSpecialCharacter(void);\nchar *optix_GetStringInput(const char title[], uint8_t textspacing, uint16_t width, int maxchars);\nvoid optix_UpdateCursor(void);\nvoid optix_RenderCursor(void);\nvoid optix_ClickCursor(void);\nvoid optix_HandleTrackPad(void);\nvoid optix_InitializeButtons(void);\nvoid optix_AddButton(uint16_t x, uint8_t y, uint16_t width, uint8_t height, const char text[], gfx_sprite_t *spr, void (*funct)(void), sk_key_t altkey);\nvoid optix_DeleteButton(uint8_t buttontodelete);\nvoid optix_RenderButtons(void);\nvoid optix_UpdateSelectedButton(void);\nvoid optix_ClickButton(void);\nvoid optix_CheckForAltKey(void);\nvoid optix_SetDefaultColors(void);\nvoid optix_SetDefaultSettings(void);\nvoid optix_HandleCursor(void);\nvoid optix_HandleGUI(void);\nvoid optix_VertScrollbar(uint24_t x, uint8_t y, uint8_t currpos, uint8_t maxpos, uint8_t width, uint8_t height, bool keypressed);\nvoid optix_HorizScrollbar(uint24_t x, uint8_t y, uint8_t currpos, uint8_t maxpos, uint24_t width, uint8_t height, bool keypressed);\nvoid optix_Scrollbar(uint24_t x, uint8_t y, uint8_t currpos, uint8_t maxpos, uint24_t width, uint8_t height, bool keypressed, bool vert);\n\n//variables\nstruct optix_button_t {\n    uint16_t x;\n    uint8_t y;\n    uint16_t width;\n    uint8_t height;\n    char text[15];\n    gfx_sprite_t *spr;\n    void (*funct)(void);\n    sk_key_t altkey;\n};\nextern struct optix_button_t *optix_button;\n\n//could support different colors or scales on a line by line basis later?\n//no I'm just lazy\nstruct optix_wordwraptext_t {\n    char text[200];\n    uint8_t useless;\n};\nextern struct optix_wordwraptext_t *optix_wordwraptext;\n\n\nstruct optix_buttoninfo_t {\n    uint8_t numbuttons;\n    uint8_t currbutton;\n};\nextern struct optix_buttoninfo_t optix_buttoninfo;\n\n//variables\nstruct optix_cursor_t {\n    uint16_t x;\n    uint8_t y;\n    bool cursoractive;\n};\nextern struct optix_cursor_t optix_cursor;\n\nstruct optix_menu_t {\n    uint16_t x;\n    uint8_t y;\n    uint8_t xpadding;\n    uint8_t ypadding;\n    uint8_t width;\n    uint8_t height;\n    uint8_t xspacing;\n    uint8_t yspacing;\n    char **text;\n    uint8_t currselection;\n    uint8_t maxtodisplay;\n    uint8_t numoptions;\n    bool enterpressed;\n    //for the first option to be displayed (handles scrolling)\n    uint8_t menumin;\n    //an array eventually\n    gfx_sprite_t *icon;\n};\nextern struct optix_menu_t *optix_menu;\n\n//will be able to parent buttons, sliders, text, etc. to boxes eventually\nstruct optix_box_t {\n    uint16_t x;\n    uint8_t y;\n    uint16_t width;\n    uint8_t height;\n};\nextern struct optix_box_t optix_box;\n\nstruct optix_guicolors_t {\n    uint8_t bgcolor;\n    uint8_t colora;\n    uint8_t colorb;\n    uint8_t selectcolor;\n    uint8_t textfgcolor;\n    uint8_t textbgcolor;\n    uint8_t ttextfgcolor;\n    uint8_t ttextbgcolor;\n    uint8_t outlinecolor;\n};\nextern struct optix_guicolors_t optix_guicolors;\n\nstruct optix_guidata_t {\n    //wow a lot of variables\n    //maybe make these all go in the trackpad struct later\n    uint8_t currmenu;\n    uint8_t nummenus;\n    bool keypress;\n    sk_key_t skkey;\n    bool trackpadpressedlast;\n    uint16_t trackpadlastx;\n    uint8_t trackpadlasty;\n    uint16_t trackpadoriginx;\n    uint8_t trackpadoriginy;\n    uint8_t loopssincepress;\n};\nextern struct optix_guidata_t optix_guidata;\n\nstruct optix_guisettings_t {\n    bool mouseon;\n    bool dispbuttonback;\n    uint8_t buttonsensitivity;\n};\nextern struct optix_guisettings_t optix_guisettings;\n\n"
  },
  {
    "path": "src/sprites/programthread.c",
    "content": "// Converted using ConvPNG\r\n#include <stdint.h>\r\n#include \"icons.h\"\r\n\r\n// 8 bpp image\r\nuint8_t programthread_data[731] = {\r\n 27,27,  // width,height\r\n 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\r\n 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,\r\n 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\r\n 0xFF,0x00,0x00,0xFF,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,\r\n 0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,\r\n 0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,\r\n 0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,\r\n 0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,\r\n 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,0xFF,\r\n 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,\r\n 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,\r\n 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,\r\n 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,\r\n 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\r\n};\r\n"
  },
  {
    "path": "src/sprites/southamerica.c",
    "content": "// Converted using ConvPNG\r\n#include <stdint.h>\r\n#include \"sprites.h\"\r\n\r\n// 8 bpp image\r\nuint8_t southamerica_data[1234] = {\r\n 28,44,  // width,height\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,\r\n 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\r\n 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,\r\n 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r\n};\r\n"
  },
  {
    "path": "src/sprites/sprites.c",
    "content": "// Converted using ConvPNG\r\n#include <stdint.h>\r\n#include \"sprites.h\"\r\n\r\nuint16_t sprites_pal[256] = {\r\n 0x0000,  // 00 :: rgb(0,0,0)\r\n 0x0081,  // 01 :: rgb(0,32,8)\r\n 0x0102,  // 02 :: rgb(0,65,16)\r\n 0x0183,  // 03 :: rgb(0,97,24)\r\n 0x0204,  // 04 :: rgb(0,130,33)\r\n 0x0285,  // 05 :: rgb(0,162,41)\r\n 0x0306,  // 06 :: rgb(0,195,49)\r\n 0x0387,  // 07 :: rgb(0,227,57)\r\n 0x0408,  // 08 :: rgb(8,0,66)\r\n 0x0489,  // 09 :: rgb(8,32,74)\r\n 0x050A,  // 10 :: rgb(8,65,82)\r\n 0x058B,  // 11 :: rgb(8,97,90)\r\n 0x060C,  // 12 :: rgb(8,130,99)\r\n 0x068D,  // 13 :: rgb(8,162,107)\r\n 0x070E,  // 14 :: rgb(8,195,115)\r\n 0x078F,  // 15 :: rgb(8,227,123)\r\n 0x0810,  // 16 :: rgb(16,0,132)\r\n 0x0891,  // 17 :: rgb(16,32,140)\r\n 0x0912,  // 18 :: rgb(16,65,148)\r\n 0x0993,  // 19 :: rgb(16,97,156)\r\n 0x0A14,  // 20 :: rgb(16,130,165)\r\n 0x0A95,  // 21 :: rgb(16,162,173)\r\n 0x0B16,  // 22 :: rgb(16,195,181)\r\n 0x0B97,  // 23 :: rgb(16,227,189)\r\n 0x0C18,  // 24 :: rgb(24,0,198)\r\n 0x0C99,  // 25 :: rgb(24,32,206)\r\n 0x0D1A,  // 26 :: rgb(24,65,214)\r\n 0x0D9B,  // 27 :: rgb(24,97,222)\r\n 0x0E1C,  // 28 :: rgb(24,130,231)\r\n 0x0E9D,  // 29 :: rgb(24,162,239)\r\n 0x0F1E,  // 30 :: rgb(24,195,247)\r\n 0x0F9F,  // 31 :: rgb(24,227,255)\r\n 0x9000,  // 32 :: rgb(33,4,0)\r\n 0x9081,  // 33 :: rgb(33,36,8)\r\n 0x9102,  // 34 :: rgb(33,69,16)\r\n 0x9183,  // 35 :: rgb(33,101,24)\r\n 0x9204,  // 36 :: rgb(33,134,33)\r\n 0x9285,  // 37 :: rgb(33,166,41)\r\n 0x9306,  // 38 :: rgb(33,199,49)\r\n 0x9387,  // 39 :: rgb(33,231,57)\r\n 0x9408,  // 40 :: rgb(41,4,66)\r\n 0x9489,  // 41 :: rgb(41,36,74)\r\n 0x950A,  // 42 :: rgb(41,69,82)\r\n 0x958B,  // 43 :: rgb(41,101,90)\r\n 0x960C,  // 44 :: rgb(41,134,99)\r\n 0x968D,  // 45 :: rgb(41,166,107)\r\n 0x970E,  // 46 :: rgb(41,199,115)\r\n 0x978F,  // 47 :: rgb(41,231,123)\r\n 0x9810,  // 48 :: rgb(49,4,132)\r\n 0x9891,  // 49 :: rgb(49,36,140)\r\n 0x9912,  // 50 :: rgb(49,69,148)\r\n 0x9993,  // 51 :: rgb(49,101,156)\r\n 0x9A14,  // 52 :: rgb(49,134,165)\r\n 0x9A95,  // 53 :: rgb(49,166,173)\r\n 0x9B16,  // 54 :: rgb(49,199,181)\r\n 0x9B97,  // 55 :: rgb(49,231,189)\r\n 0x9C18,  // 56 :: rgb(57,4,198)\r\n 0x9C99,  // 57 :: rgb(57,36,206)\r\n 0x9D1A,  // 58 :: rgb(57,69,214)\r\n 0x9D9B,  // 59 :: rgb(57,101,222)\r\n 0x9E1C,  // 60 :: rgb(57,134,231)\r\n 0x9E9D,  // 61 :: rgb(57,166,239)\r\n 0x9F1E,  // 62 :: rgb(57,199,247)\r\n 0x9F9F,  // 63 :: rgb(57,231,255)\r\n 0x2020,  // 64 :: rgb(66,8,0)\r\n 0x20A1,  // 65 :: rgb(66,40,8)\r\n 0x2122,  // 66 :: rgb(66,73,16)\r\n 0x21A3,  // 67 :: rgb(66,105,24)\r\n 0x2224,  // 68 :: rgb(66,138,33)\r\n 0x22A5,  // 69 :: rgb(66,170,41)\r\n 0x2326,  // 70 :: rgb(66,203,49)\r\n 0x23A7,  // 71 :: rgb(66,235,57)\r\n 0x2428,  // 72 :: rgb(74,8,66)\r\n 0x24A9,  // 73 :: rgb(74,40,74)\r\n 0x252A,  // 74 :: rgb(74,73,82)\r\n 0x25AB,  // 75 :: rgb(74,105,90)\r\n 0x262C,  // 76 :: rgb(74,138,99)\r\n 0x26AD,  // 77 :: rgb(74,170,107)\r\n 0x272E,  // 78 :: rgb(74,203,115)\r\n 0x27AF,  // 79 :: rgb(74,235,123)\r\n 0x2830,  // 80 :: rgb(82,8,132)\r\n 0x28B1,  // 81 :: rgb(82,40,140)\r\n 0x2932,  // 82 :: rgb(82,73,148)\r\n 0x29B3,  // 83 :: rgb(82,105,156)\r\n 0x2A34,  // 84 :: rgb(82,138,165)\r\n 0x2AB5,  // 85 :: rgb(82,170,173)\r\n 0x2B36,  // 86 :: rgb(82,203,181)\r\n 0x2BB7,  // 87 :: rgb(82,235,189)\r\n 0x2C38,  // 88 :: rgb(90,8,198)\r\n 0x2CB9,  // 89 :: rgb(90,40,206)\r\n 0x2D3A,  // 90 :: rgb(90,73,214)\r\n 0x2DBB,  // 91 :: rgb(90,105,222)\r\n 0x2E3C,  // 92 :: rgb(90,138,231)\r\n 0x2EBD,  // 93 :: rgb(90,170,239)\r\n 0x2F3E,  // 94 :: rgb(90,203,247)\r\n 0x2FBF,  // 95 :: rgb(90,235,255)\r\n 0xB020,  // 96 :: rgb(99,12,0)\r\n 0xB0A1,  // 97 :: rgb(99,44,8)\r\n 0xB122,  // 98 :: rgb(99,77,16)\r\n 0xB1A3,  // 99 :: rgb(99,109,24)\r\n 0xB224,  // 100 :: rgb(99,142,33)\r\n 0xB2A5,  // 101 :: rgb(99,174,41)\r\n 0xB326,  // 102 :: rgb(99,207,49)\r\n 0xB3A7,  // 103 :: rgb(99,239,57)\r\n 0xB428,  // 104 :: rgb(107,12,66)\r\n 0xB4A9,  // 105 :: rgb(107,44,74)\r\n 0xB52A,  // 106 :: rgb(107,77,82)\r\n 0xB5AB,  // 107 :: rgb(107,109,90)\r\n 0xB62C,  // 108 :: rgb(107,142,99)\r\n 0xB6AD,  // 109 :: rgb(107,174,107)\r\n 0xB72E,  // 110 :: rgb(107,207,115)\r\n 0xB7AF,  // 111 :: rgb(107,239,123)\r\n 0xB830,  // 112 :: rgb(115,12,132)\r\n 0xB8B1,  // 113 :: rgb(115,44,140)\r\n 0xB932,  // 114 :: rgb(115,77,148)\r\n 0xB9B3,  // 115 :: rgb(115,109,156)\r\n 0xBA34,  // 116 :: rgb(115,142,165)\r\n 0xBAB5,  // 117 :: rgb(115,174,173)\r\n 0xBB36,  // 118 :: rgb(115,207,181)\r\n 0xBBB7,  // 119 :: rgb(115,239,189)\r\n 0xBC38,  // 120 :: rgb(123,12,198)\r\n 0xBCB9,  // 121 :: rgb(123,44,206)\r\n 0xBD3A,  // 122 :: rgb(123,77,214)\r\n 0xBDBB,  // 123 :: rgb(123,109,222)\r\n 0xBE3C,  // 124 :: rgb(123,142,231)\r\n 0xBEBD,  // 125 :: rgb(123,174,239)\r\n 0xBF3E,  // 126 :: rgb(123,207,247)\r\n 0xBFBF,  // 127 :: rgb(123,239,255)\r\n 0x4040,  // 128 :: rgb(132,16,0)\r\n 0x40C1,  // 129 :: rgb(132,48,8)\r\n 0x4142,  // 130 :: rgb(132,81,16)\r\n 0x41C3,  // 131 :: rgb(132,113,24)\r\n 0x4244,  // 132 :: rgb(132,146,33)\r\n 0x42C5,  // 133 :: rgb(132,178,41)\r\n 0x4346,  // 134 :: rgb(132,211,49)\r\n 0x43C7,  // 135 :: rgb(132,243,57)\r\n 0x4448,  // 136 :: rgb(140,16,66)\r\n 0x44C9,  // 137 :: rgb(140,48,74)\r\n 0x454A,  // 138 :: rgb(140,81,82)\r\n 0x45CB,  // 139 :: rgb(140,113,90)\r\n 0x464C,  // 140 :: rgb(140,146,99)\r\n 0x46CD,  // 141 :: rgb(140,178,107)\r\n 0x474E,  // 142 :: rgb(140,211,115)\r\n 0x47CF,  // 143 :: rgb(140,243,123)\r\n 0x4850,  // 144 :: rgb(148,16,132)\r\n 0x48D1,  // 145 :: rgb(148,48,140)\r\n 0x4952,  // 146 :: rgb(148,81,148)\r\n 0x49D3,  // 147 :: rgb(148,113,156)\r\n 0x4A54,  // 148 :: rgb(148,146,165)\r\n 0x4AD5,  // 149 :: rgb(148,178,173)\r\n 0x4B56,  // 150 :: rgb(148,211,181)\r\n 0x4BD7,  // 151 :: rgb(148,243,189)\r\n 0x4C58,  // 152 :: rgb(156,16,198)\r\n 0x4CD9,  // 153 :: rgb(156,48,206)\r\n 0x4D5A,  // 154 :: rgb(156,81,214)\r\n 0x4DDB,  // 155 :: rgb(156,113,222)\r\n 0x4E5C,  // 156 :: rgb(156,146,231)\r\n 0x4EDD,  // 157 :: rgb(156,178,239)\r\n 0x4F5E,  // 158 :: rgb(156,211,247)\r\n 0x4FDF,  // 159 :: rgb(156,243,255)\r\n 0xD040,  // 160 :: rgb(165,20,0)\r\n 0xD0C1,  // 161 :: rgb(165,52,8)\r\n 0xD142,  // 162 :: rgb(165,85,16)\r\n 0xD1C3,  // 163 :: rgb(165,117,24)\r\n 0xD244,  // 164 :: rgb(165,150,33)\r\n 0xD2C5,  // 165 :: rgb(165,182,41)\r\n 0xD346,  // 166 :: rgb(165,215,49)\r\n 0xD3C7,  // 167 :: rgb(165,247,57)\r\n 0xD448,  // 168 :: rgb(173,20,66)\r\n 0xD4C9,  // 169 :: rgb(173,52,74)\r\n 0xD54A,  // 170 :: rgb(173,85,82)\r\n 0xD5CB,  // 171 :: rgb(173,117,90)\r\n 0xD64C,  // 172 :: rgb(173,150,99)\r\n 0xD6CD,  // 173 :: rgb(173,182,107)\r\n 0xD74E,  // 174 :: rgb(173,215,115)\r\n 0xD7CF,  // 175 :: rgb(173,247,123)\r\n 0xD850,  // 176 :: rgb(181,20,132)\r\n 0xD8D1,  // 177 :: rgb(181,52,140)\r\n 0xD952,  // 178 :: rgb(181,85,148)\r\n 0xD9D3,  // 179 :: rgb(181,117,156)\r\n 0xDA54,  // 180 :: rgb(181,150,165)\r\n 0xDAD5,  // 181 :: rgb(181,182,173)\r\n 0xDB56,  // 182 :: rgb(181,215,181)\r\n 0xDBD7,  // 183 :: rgb(181,247,189)\r\n 0xDC58,  // 184 :: rgb(189,20,198)\r\n 0xDCD9,  // 185 :: rgb(189,52,206)\r\n 0xDD5A,  // 186 :: rgb(189,85,214)\r\n 0xDDDB,  // 187 :: rgb(189,117,222)\r\n 0xDE5C,  // 188 :: rgb(189,150,231)\r\n 0xDEDD,  // 189 :: rgb(189,182,239)\r\n 0xDF5E,  // 190 :: rgb(189,215,247)\r\n 0xDFDF,  // 191 :: rgb(189,247,255)\r\n 0x6060,  // 192 :: rgb(198,24,0)\r\n 0x60E1,  // 193 :: rgb(198,56,8)\r\n 0x6162,  // 194 :: rgb(198,89,16)\r\n 0x61E3,  // 195 :: rgb(198,121,24)\r\n 0x6264,  // 196 :: rgb(198,154,33)\r\n 0x62E5,  // 197 :: rgb(198,186,41)\r\n 0x6366,  // 198 :: rgb(198,219,49)\r\n 0x63E7,  // 199 :: rgb(198,251,57)\r\n 0x6468,  // 200 :: rgb(206,24,66)\r\n 0x64E9,  // 201 :: rgb(206,56,74)\r\n 0x656A,  // 202 :: rgb(206,89,82)\r\n 0x65EB,  // 203 :: rgb(206,121,90)\r\n 0x666C,  // 204 :: rgb(206,154,99)\r\n 0x66ED,  // 205 :: rgb(206,186,107)\r\n 0x676E,  // 206 :: rgb(206,219,115)\r\n 0x67EF,  // 207 :: rgb(206,251,123)\r\n 0x6870,  // 208 :: rgb(214,24,132)\r\n 0x68F1,  // 209 :: rgb(214,56,140)\r\n 0x6972,  // 210 :: rgb(214,89,148)\r\n 0x69F3,  // 211 :: rgb(214,121,156)\r\n 0x6A74,  // 212 :: rgb(214,154,165)\r\n 0x6AF5,  // 213 :: rgb(214,186,173)\r\n 0x6B76,  // 214 :: rgb(214,219,181)\r\n 0x6BF7,  // 215 :: rgb(214,251,189)\r\n 0x6C78,  // 216 :: rgb(222,24,198)\r\n 0x6CF9,  // 217 :: rgb(222,56,206)\r\n 0x6D7A,  // 218 :: rgb(222,89,214)\r\n 0x6DFB,  // 219 :: rgb(222,121,222)\r\n 0x6E7C,  // 220 :: rgb(222,154,231)\r\n 0x6EFD,  // 221 :: rgb(222,186,239)\r\n 0x6F7E,  // 222 :: rgb(222,219,247)\r\n 0x6FFF,  // 223 :: rgb(222,251,255)\r\n 0xF060,  // 224 :: rgb(231,28,0)\r\n 0xF0E1,  // 225 :: rgb(231,60,8)\r\n 0xF162,  // 226 :: rgb(231,93,16)\r\n 0xF1E3,  // 227 :: rgb(231,125,24)\r\n 0xF264,  // 228 :: rgb(231,158,33)\r\n 0xF2E5,  // 229 :: rgb(231,190,41)\r\n 0xF366,  // 230 :: rgb(231,223,49)\r\n 0xF3E7,  // 231 :: rgb(231,255,57)\r\n 0xF468,  // 232 :: rgb(239,28,66)\r\n 0xF4E9,  // 233 :: rgb(239,60,74)\r\n 0xF56A,  // 234 :: rgb(239,93,82)\r\n 0xF5EB,  // 235 :: rgb(239,125,90)\r\n 0xF66C,  // 236 :: rgb(239,158,99)\r\n 0xF6ED,  // 237 :: rgb(239,190,107)\r\n 0xF76E,  // 238 :: rgb(239,223,115)\r\n 0xF7EF,  // 239 :: rgb(239,255,123)\r\n 0xF870,  // 240 :: rgb(247,28,132)\r\n 0xF8F1,  // 241 :: rgb(247,60,140)\r\n 0xF972,  // 242 :: rgb(247,93,148)\r\n 0xF9F3,  // 243 :: rgb(247,125,156)\r\n 0xFA74,  // 244 :: rgb(247,158,165)\r\n 0xFAF5,  // 245 :: rgb(247,190,173)\r\n 0xFB76,  // 246 :: rgb(247,223,181)\r\n 0xFBF7,  // 247 :: rgb(247,255,189)\r\n 0xFC78,  // 248 :: rgb(255,28,198)\r\n 0xFCF9,  // 249 :: rgb(255,60,206)\r\n 0xFD7A,  // 250 :: rgb(255,93,214)\r\n 0xFDFB,  // 251 :: rgb(255,125,222)\r\n 0xFE7C,  // 252 :: rgb(255,158,231)\r\n 0xFEFD,  // 253 :: rgb(255,190,239)\r\n 0xFF7E,  // 254 :: rgb(255,223,247)\r\n 0xFFFF,  // 255 :: rgb(255,255,255)\r\n};"
  },
  {
    "path": "src/sprites/sprites.h",
    "content": "// Converted using ConvPNG\r\n// This file contains all the graphics sources for easier inclusion in a project\r\n#ifndef __sprites__\r\n#define __sprites__\r\n#include <stdint.h>\r\n\r\n#define africa_width 40\r\n#define africa_height 47\r\n#define africa_size 1882\r\nextern uint8_t africa_data[1882];\r\n#define africa ((gfx_sprite_t*)africa_data)\r\n#define asia_width 65\r\n#define asia_height 55\r\n#define asia_size 3577\r\nextern uint8_t asia_data[3577];\r\n#define asia ((gfx_sprite_t*)asia_data)\r\n#define europe_width 32\r\n#define europe_height 24\r\n#define europe_size 770\r\nextern uint8_t europe_data[770];\r\n#define europe ((gfx_sprite_t*)europe_data)\r\n#define greenland_width 24\r\n#define greenland_height 14\r\n#define greenland_size 338\r\nextern uint8_t greenland_data[338];\r\n#define greenland ((gfx_sprite_t*)greenland_data)\r\n#define northamerica_width 48\r\n#define northamerica_height 41\r\n#define northamerica_size 1970\r\nextern uint8_t northamerica_data[1970];\r\n#define northamerica ((gfx_sprite_t*)northamerica_data)\r\n#define southamerica_width 28\r\n#define southamerica_height 44\r\n#define southamerica_size 1234\r\nextern uint8_t southamerica_data[1234];\r\n#define southamerica ((gfx_sprite_t*)southamerica_data)\r\n#define oceania_width 34\r\n#define oceania_height 31\r\n#define oceania_size 1056\r\nextern uint8_t oceania_data[1056];\r\n#define oceania ((gfx_sprite_t*)oceania_data)\r\n#define sizeof_sprites_pal 512\r\nextern uint16_t sprites_pal[256];\r\n\r\n#endif\r\n"
  }
]