From b82bff671ed0fde662999d2e3aaaa31acce1b1cf Mon Sep 17 00:00:00 2001 From: inmarket Date: Tue, 6 Oct 2015 12:04:40 +1000 Subject: [PATCH] New applications/combo demo --- demos/applications/combo/bounce.c | 162 ++++++ demos/applications/combo/demo.mk | 6 + demos/applications/combo/gfxconf.h | 126 +++++ demos/applications/combo/main.c | 533 ++++++++++++++++++ demos/applications/combo/mandelbrot.c | 99 ++++ demos/applications/combo/readme.txt | 8 + demos/applications/combo/romfs_files.h | 9 + demos/applications/combo/romfs_img_chibios.h | 317 +++++++++++ demos/applications/combo/romfs_img_ugfx.h | 304 ++++++++++ demos/applications/combo/romfs_img_yesno.h | 27 + demos/applications/combo/rsc/chibios.gif | Bin 0 -> 4840 bytes demos/applications/combo/rsc/image_yesno.gif | Bin 0 -> 202 bytes .../applications/combo/rsc/romfs_img_ugfx.gif | Bin 0 -> 4629 bytes demos/applications/combo/tasks.h | 7 + 14 files changed, 1598 insertions(+) create mode 100644 demos/applications/combo/bounce.c create mode 100644 demos/applications/combo/demo.mk create mode 100644 demos/applications/combo/gfxconf.h create mode 100644 demos/applications/combo/main.c create mode 100644 demos/applications/combo/mandelbrot.c create mode 100644 demos/applications/combo/readme.txt create mode 100644 demos/applications/combo/romfs_files.h create mode 100644 demos/applications/combo/romfs_img_chibios.h create mode 100644 demos/applications/combo/romfs_img_ugfx.h create mode 100644 demos/applications/combo/romfs_img_yesno.h create mode 100644 demos/applications/combo/rsc/chibios.gif create mode 100644 demos/applications/combo/rsc/image_yesno.gif create mode 100644 demos/applications/combo/rsc/romfs_img_ugfx.gif create mode 100644 demos/applications/combo/tasks.h diff --git a/demos/applications/combo/bounce.c b/demos/applications/combo/bounce.c new file mode 100644 index 00000000..72e75af8 --- /dev/null +++ b/demos/applications/combo/bounce.c @@ -0,0 +1,162 @@ +/* + * Copyright (c) 2012, 2013, Joel Bodenmann aka Tectu + * Copyright (c) 2012, 2013, Andrew Hannam aka inmarket + * Derived from the 2011 IOCCC submission by peter.eastman@gmail.com + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "gfx.h" +#include + +#include "tasks.h" + +static volatile bool_t run; +static GHandle gh; +static gfxThreadHandle thread; + +/** + * NOTE: + * + * This demo uses floating point operations. Don't expect it to work with any + * speed unless your processor has an FPU. + * + * If you see garbage inside the ball as it is running rather than the red and yellow + * checkerboard pattern then the fast invsqrt() function in GMISC does not work on + * your processor. + * + * You can modify the implementation of invsqrt() by firstly defining + * #define GMISC_INVSQRT_MIXED_ENDIAN TRUE + * in your gfxconf.h file. + * + * If it still doesn't work then instead define + * #define GMISC_INVSQRT_REAL_SLOW TRUE + * in your gfxconf.h file. This should always work although it will probably be slow. + */ +#define BALLCOLOR1 Red +#define BALLCOLOR2 Yellow +#define WALLCOLOR HTML2COLOR(0x303030) +#define BACKCOLOR HTML2COLOR(0xC0C0C0) +#define FLOORCOLOR HTML2COLOR(0x606060) +#define SHADOWALPHA (255-255*0.2) + +static DECLARE_THREAD_FUNCTION(task, param) { + coord_t width, height, x, y, radius, ballx, bally, dx, floor; + coord_t minx, miny, maxx, maxy, winx, winy; + coord_t ballcx, ballcy; + color_t colour; + float ii, spin, dy, spinspeed, h, f, g; + (void) param; + + winx = gwinGetScreenX(gh); + winy = gwinGetScreenY(gh); + width = gwinGetWidth(gh); + height = gwinGetHeight(gh); + + radius=height/5+height%2+1; // The ball radius + ii = 1.0/radius; // radius as easy math + floor=height/5-1; // floor position + spin=0.0; // current spin angle on the ball + spinspeed=0.1; // current spin speed of the ball + ballx=width/2; // ball x position (relative to the ball center) + bally=height/4; // ball y position (relative to the ball center) + dx=.01*width; // motion in the x axis + dy=0.0; // motion in the y axis + ballcx = 12*radius/5; // ball x diameter including the shadow + ballcy = 21*radius/10; // ball y diameter including the shadow + + + minx = miny = 0; maxx = width; maxy = height; // The clipping window for this frame. + + while(run) { + gfxYield(); + + // Draw one frame + gdispStreamStart(winx+minx, winy+miny, maxx-minx, maxy-miny); + for (y=miny; h = (bally-y)*ii, y height-floor) { + if (x < height-y || height-y > width-x) + colour = WALLCOLOR; + else + colour = FLOORCOLOR; + } else if (xwidth-floor) + colour = WALLCOLOR; + else + colour = BACKCOLOR; + + // The ball shadow is darker + if (g*(g+.4)+h*(h+.1) < 1) + colour = gdispBlendColor(colour, Black, SHADOWALPHA); + } + gdispStreamColor(colour); /* pixel to the LCD */ + } + } + gdispStreamStop(); + + // Force a display update if the controller supports it + gdispFlush(); + + // Calculate the new frame size (note this is a drawing optimisation only) + minx = ballx - radius; miny = bally - radius; + maxx = minx + ballcx; maxy = miny + ballcy; + if (dx > 0) maxx += dx; else minx += dx; + if (dy > 0) maxy += dy; else miny += dy; + if (minx < 0) minx = 0; + if (maxx > width) maxx = width; + if (miny < 0) miny = 0; + if (maxy > height) maxy = height; + + // Motion + spin += spinspeed; + ballx += dx; bally += dy; + dx = ballx < radius || ballx > width-radius ? spinspeed=-spinspeed,-dx : dx; + dy = bally > height-1.75*floor ? -.04*height : dy+.002*height; + } + return 0; +} + +void doBounce(GHandle parent, bool_t start) { + if (start) { + run = TRUE; + gh = parent; + thread = gfxThreadCreate(0, 0x200, LOW_PRIORITY, task, 0); + } else if (run) { + run = FALSE; + gfxThreadWait(thread); + gfxYield(); + } +} + diff --git a/demos/applications/combo/demo.mk b/demos/applications/combo/demo.mk new file mode 100644 index 00000000..bfac9743 --- /dev/null +++ b/demos/applications/combo/demo.mk @@ -0,0 +1,6 @@ +DEMODIR = $(GFXLIB)/demos/applications/combo +GFXINC += $(DEMODIR) +GFXSRC += $(DEMODIR)/main.c \ + $(DEMODIR)/mandelbrot.c \ + $(DEMODIR)/bounce.c + \ No newline at end of file diff --git a/demos/applications/combo/gfxconf.h b/demos/applications/combo/gfxconf.h new file mode 100644 index 00000000..fcf7f96a --- /dev/null +++ b/demos/applications/combo/gfxconf.h @@ -0,0 +1,126 @@ +/** + * This file has a different license to the rest of the uGFX system. + * You can copy, modify and distribute this file as you see fit. + * You do not need to publish your source modifications to this file. + * The only thing you are not permitted to do is to relicense it + * under a different license. + */ + +/** + * Copy this file into your project directory and rename it as gfxconf.h + * Edit your copy to turn on the uGFX features you want to use. + * The values below are the defaults. You should delete anything + * you are leaving as default. + * + * Please use spaces instead of tabs in this file. + */ + +#ifndef _GFXCONF_H +#define _GFXCONF_H + +/* The operating system to use. One of these must be defined - preferably in your Makefile */ +//#define GFX_USE_OS_CHIBIOS TRUE +//#define GFX_USE_OS_WIN32 TRUE +//#define GFX_USE_OS_LINUX TRUE +//#define GFX_USE_OS_OSX TRUE + + +/////////////////////////////////////////////////////////////////////////// +// GDISP // +/////////////////////////////////////////////////////////////////////////// +#define GFX_USE_GDISP TRUE + +#define GDISP_NEED_VALIDATION TRUE +#define GDISP_NEED_CLIP TRUE +#define GDISP_NEED_CIRCLE TRUE +#define GDISP_NEED_CONVEX_POLYGON TRUE +//#define GDISP_NEED_SCROLL TRUE +#define GDISP_NEED_CONTROL TRUE +#define GDISP_NEED_TEXT TRUE + #define GDISP_INCLUDE_FONT_UI2 TRUE +#define GDISP_NEED_STREAMING TRUE + +#define GDISP_NEED_IMAGE TRUE + #define GDISP_NEED_IMAGE_GIF TRUE + +#define GDISP_DEFAULT_ORIENTATION GDISP_ROTATE_LANDSCAPE +#define GDISP_NEED_MULTITHREAD TRUE + +/////////////////////////////////////////////////////////////////////////// +// GWIN // +/////////////////////////////////////////////////////////////////////////// +#define GFX_USE_GWIN TRUE + +#define GWIN_NEED_WINDOWMANAGER TRUE + #define GWIN_NEED_FLASHING TRUE + +#define GWIN_NEED_CONSOLE TRUE + #define GWIN_CONSOLE_USE_HISTORY TRUE + #define GWIN_CONSOLE_HISTORY_AVERAGING TRUE + #define GWIN_CONSOLE_HISTORY_ATCREATE TRUE +#define GWIN_NEED_GRAPH TRUE + +#define GWIN_NEED_WIDGET TRUE + #define GWIN_NEED_LABEL TRUE + #define GWIN_LABEL_ATTRIBUTE TRUE + #define GWIN_NEED_BUTTON TRUE +// #define GWIN_BUTTON_LAZY_RELEASE TRUE + #define GWIN_NEED_SLIDER TRUE + #define GWIN_NEED_CHECKBOX TRUE + #define GWIN_NEED_IMAGE TRUE + #define GWIN_NEED_RADIO TRUE + #define GWIN_NEED_LIST TRUE + #define GWIN_NEED_LIST_IMAGES TRUE + #define GWIN_NEED_PROGRESSBAR TRUE + #define GWIN_PROGRESSBAR_AUTO TRUE + +#define GWIN_NEED_CONTAINERS TRUE + #define GWIN_NEED_CONTAINER TRUE + +#define GWIN_NEED_TABSET TRUE + +/////////////////////////////////////////////////////////////////////////// +// GEVENT // +/////////////////////////////////////////////////////////////////////////// +#define GFX_USE_GEVENT TRUE + +/////////////////////////////////////////////////////////////////////////// +// GTIMER // +/////////////////////////////////////////////////////////////////////////// +#define GFX_USE_GTIMER TRUE + +/////////////////////////////////////////////////////////////////////////// +// GQUEUE // +/////////////////////////////////////////////////////////////////////////// +#define GFX_USE_GQUEUE TRUE + +#define GQUEUE_NEED_ASYNC TRUE + +/////////////////////////////////////////////////////////////////////////// +// GINPUT // +/////////////////////////////////////////////////////////////////////////// +#define GFX_USE_GINPUT TRUE + +#define GINPUT_NEED_MOUSE TRUE +//#define GINPUT_NEED_TOGGLE TRUE +//#define GINPUT_NEED_DIAL TRUE + +/////////////////////////////////////////////////////////////////////////// +// GFILE // +/////////////////////////////////////////////////////////////////////////// +#define GFX_USE_GFILE TRUE + +#define GFILE_NEED_PRINTG TRUE +#define GFILE_NEED_STRINGS TRUE + +#define GFILE_NEED_ROMFS TRUE +//#define GFILE_NEED_NATIVEFS TRUE + +/////////////////////////////////////////////////////////////////////////// +// GMISC // +/////////////////////////////////////////////////////////////////////////// +#define GFX_USE_GMISC TRUE +#define GMISC_NEED_INVSQRT TRUE + + +#endif /* _GFXCONF_H */ diff --git a/demos/applications/combo/main.c b/demos/applications/combo/main.c new file mode 100644 index 00000000..0d18d7bc --- /dev/null +++ b/demos/applications/combo/main.c @@ -0,0 +1,533 @@ +/* + * Copyright (c) 2012, 2013, Joel Bodenmann aka Tectu + * Copyright (c) 2012, 2013, Andrew Hannam aka inmarket + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "gfx.h" +#include "tasks.h" + +/** + * This demo demonstrates many of the ugfx features. + */ + +/** + * The image files must be stored on a GFILE file-system. + * Use either GFILE_NEED_NATIVEFS or GFILE_NEED_ROMFS (or both). + * + * The ROMFS uses the file "romfs_files.h" to describe the set of files in the ROMFS. + */ + +/* Our custom yellow style */ +static const GWidgetStyle YellowWidgetStyle = { + Yellow, // window background + //HTML2COLOR(0x800000), // focus - for text edit. + + // enabled color set + { + HTML2COLOR(0x0000FF), // text + HTML2COLOR(0x404040), // edge + HTML2COLOR(0xE0E0E0), // fill + HTML2COLOR(0xE0E0E0) // progress - inactive area + }, + + // disabled color set + { + HTML2COLOR(0xC0C0C0), // text + HTML2COLOR(0x808080), // edge + HTML2COLOR(0xE0E0E0), // fill + HTML2COLOR(0xC0E0C0) // progress - active area + }, + + // pressed color set + { + HTML2COLOR(0xFF00FF), // text + HTML2COLOR(0x404040), // edge + HTML2COLOR(0x808080), // fill + HTML2COLOR(0x00E000), // progress - active area + } +}; + +/* The variables we need */ +static font_t font; +static GListener gl; +static GHandle ghConsole; +static GTimer FlashTimer; + +static GHandle ghTabset; +static GHandle ghPgControls, ghPgSliders, ghPgLabels, ghPgRadios, ghPgLists, ghPgImages, ghPgBounce, ghPgMandelbrot; +static GHandle ghButton1, ghButton2, ghButton3, ghButton4; +static GHandle ghSlider1, ghSlider2, ghSlider3, ghSlider4; +static GHandle ghCheckbox1, ghCheckbox2, ghCheckbox3, ghCheckDisableAll; +static GHandle ghLabelSlider1, ghLabelSlider2, ghLabelSlider3, ghLabelSlider4, ghLabelRadio1; +static GHandle ghRadio1, ghRadio2; +static GHandle ghRadioBlack, ghRadioWhite, ghRadioYellow; +static GHandle ghList1, ghList2, ghList3, ghList4; +static GHandle ghImage1, ghImage2; +static GHandle ghProgressbar1; +static gdispImage imgYesNo; + +/* Some useful macros */ +#define ScrWidth gdispGetWidth() +#define ScrHeight gdispGetHeight() + +#define BUTTON_PADDING 20 +#define TAB_HEIGHT 30 +#define LABEL_HEIGHT 15 +#define BUTTON_WIDTH 50 +#define BUTTON_HEIGHT 30 +#define LIST_WIDTH 75 +#define LIST_HEIGHT 80 +#define SLIDER_WIDTH 20 +#define CHECKBOX_WIDTH 80 +#define CHECKBOX_HEIGHT 20 +#define RADIO_WIDTH 50 +#define RADIO_HEIGHT 20 +#define COLOR_WIDTH 80 +#define DISABLEALL_WIDTH 100 +#define GROUP_TABS 0 +#define GROUP_YESNO 1 +#define GROUP_COLORS 2 + +static void nextline(GWidgetInit *pwi) { + pwi->g.x = 5; + pwi->g.y += pwi->g.height+1; +} + +static void setbtntext(GWidgetInit *pwi, coord_t maxwidth, char *txt) { + pwi->text = txt; + pwi->g.width = gdispGetStringWidth(pwi->text, font) + BUTTON_PADDING; + if (pwi->g.x + pwi->g.width > maxwidth) + nextline(pwi); +} + +static void nextpos(GWidgetInit *pwi, coord_t maxwidth, coord_t nextwidth) { + pwi->g.x += pwi->g.width+1; + pwi->g.width = nextwidth; + if (pwi->g.x + nextwidth > maxwidth) + nextline(pwi); +} +/** + * Create all the widgets. + * With the exception of the Pages they are all initially visible. + * + * This routine is complicated by the fact that we want a dynamic + * layout so it looks good on small and large displays. + * It is tested to work on 320x272 as a minimum LCD size. + */ +static void createWidgets(void) { + GWidgetInit wi; + coord_t border, pagewidth; + + gwinWidgetClearInit(&wi); + + // Calculate page borders based on screen size + border = ScrWidth < 450 ? 1 : 5; + + // Create the Tabs + wi.g.show = TRUE; + wi.g.x = border; wi.g.y = 0; + wi.g.width = ScrWidth - 2*border; wi.g.height = ScrHeight-wi.g.y-border; + ghTabset = gwinTabsetCreate(0, &wi, GWIN_TABSET_BORDER); + ghPgControls = gwinTabsetAddTab(ghTabset, "Controls", FALSE); + ghPgSliders = gwinTabsetAddTab(ghTabset, "Sliders", FALSE); + ghPgRadios = gwinTabsetAddTab(ghTabset, "Radios", FALSE); + ghPgLists = gwinTabsetAddTab(ghTabset, "Lists", FALSE); + ghPgLabels = gwinTabsetAddTab(ghTabset, "Labels", FALSE); + ghPgImages = gwinTabsetAddTab(ghTabset, "Images", FALSE); + ghPgBounce = gwinTabsetAddTab(ghTabset, "Bounce", FALSE); + ghPgMandelbrot = gwinTabsetAddTab(ghTabset, "Mandelbrot", FALSE); + + pagewidth = gwinGetInnerWidth(ghTabset)/2; + + // Console - we apply some special colors before making it visible + // We put the console on the tabset itself rather than a tab-page. + // This makes it appear on every page :) + wi.g.parent = ghTabset; + wi.g.x = pagewidth; + wi.g.width = pagewidth; + ghConsole = gwinConsoleCreate(0, &wi.g); + gwinSetColor(ghConsole, Black); + gwinSetBgColor(ghConsole, HTML2COLOR(0xF0F0F0)); + + // Buttons + wi.g.parent = ghPgControls; + wi.g.width = BUTTON_WIDTH; wi.g.height = BUTTON_HEIGHT; wi.g.y = 5; + wi.g.x = 5; setbtntext(&wi, pagewidth, "Button 1"); + ghButton1 = gwinButtonCreate(0, &wi); + wi.g.x += wi.g.width+3; setbtntext(&wi, pagewidth, "Button 2"); + ghButton2 = gwinButtonCreate(0, &wi); + wi.g.x += wi.g.width+3; setbtntext(&wi, pagewidth, "Button 3"); + ghButton3 = gwinButtonCreate(0, &wi); + wi.g.x += wi.g.width+3; setbtntext(&wi, pagewidth, "Button 4"); + ghButton4 = gwinButtonCreate(0, &wi); + + nextline(&wi); + wi.g.width = CHECKBOX_WIDTH; wi.g.height = CHECKBOX_HEIGHT; + wi.text = "C1"; ghCheckbox1 = gwinCheckboxCreate(0, &wi); + wi.customDraw = gwinCheckboxDraw_CheckOnRight; + nextpos(&wi, pagewidth, CHECKBOX_WIDTH); + wi.text = "C2"; ghCheckbox2 = gwinCheckboxCreate(0, &wi); + wi.customDraw = gwinCheckboxDraw_Button; + nextline(&wi); + wi.text = "C3"; wi.g.width = BUTTON_WIDTH; wi.g.height = BUTTON_HEIGHT; + ghCheckbox3 = gwinCheckboxCreate(0, &wi); + nextpos(&wi, pagewidth, DISABLEALL_WIDTH); + wi.text = "Disable All"; + wi.customDraw = 0; wi.g.height = CHECKBOX_HEIGHT; + ghCheckDisableAll = gwinCheckboxCreate(0, &wi); + + + // Horizontal Sliders + wi.g.parent = ghPgSliders; + wi.g.width = pagewidth - 10; wi.g.height = SLIDER_WIDTH; + wi.g.x = 5; wi.g.y = 5; wi.text = "S1"; + ghSlider1 = gwinSliderCreate(0, &wi); + gwinSliderSetPosition(ghSlider1, 33); + wi.g.y += wi.g.height + 1; wi.text = "S2"; + ghSlider2 = gwinSliderCreate(0, &wi); + gwinSliderSetPosition(ghSlider2, 86); + + // Progressbar + wi.g.y += wi.g.height + 1; wi.text = "Progressbar 1"; + ghProgressbar1 = gwinProgressbarCreate(0, &wi); + gwinProgressbarSetResolution(ghProgressbar1, 10); + + // Vertical Sliders + wi.g.y += wi.g.height + 5; + wi.g.width = SLIDER_WIDTH; wi.g.height = gwinGetInnerHeight(ghPgSliders) - 5 - wi.g.y; + wi.g.x = 5; wi.text = "S3"; + ghSlider3 = gwinSliderCreate(0, &wi); + gwinSliderSetPosition(ghSlider3, 13); + wi.g.x += wi.g.width+1; wi.text = "S4"; + ghSlider4 = gwinSliderCreate(0, &wi); + gwinSliderSetPosition(ghSlider4, 76); + + // Labels + wi.g.parent = ghPgLabels; + wi.g.width = pagewidth-10; wi.g.height = LABEL_HEIGHT; + wi.g.x = wi.g.y = 5; wi.text = "N/A"; + ghLabelSlider1 = gwinLabelCreate(0, &wi); + gwinLabelSetAttribute(ghLabelSlider1, 100, "Slider 1:"); + wi.g.y += LABEL_HEIGHT + 2; + ghLabelSlider2 = gwinLabelCreate(0, &wi); + gwinLabelSetAttribute(ghLabelSlider2, 100, "Slider 2:"); + wi.g.y += LABEL_HEIGHT + 2; + ghLabelSlider3 = gwinLabelCreate(0, &wi); + gwinLabelSetAttribute(ghLabelSlider3, 100, "Slider 3:"); + wi.g.y += LABEL_HEIGHT + 2; + ghLabelSlider4 = gwinLabelCreate(0, &wi); + gwinLabelSetAttribute(ghLabelSlider4, 100, "Slider 4:"); + wi.g.y += LABEL_HEIGHT + 2; + ghLabelRadio1 = gwinLabelCreate(0, &wi); + gwinLabelSetAttribute(ghLabelRadio1, 100, "RadioButton 1:"); + + + // Radio Buttons + wi.g.parent = ghPgRadios; + wi.g.width = RADIO_WIDTH; wi.g.height = RADIO_HEIGHT; wi.g.y = 5; + wi.g.x = 5; wi.text = "Yes"; + ghRadio1 = gwinRadioCreate(0, &wi, GROUP_YESNO); + wi.g.x += wi.g.width; wi.text = "No"; if (wi.g.x + wi.g.width > pagewidth) { wi.g.x = 5; wi.g.y += RADIO_HEIGHT; } + ghRadio2 = gwinRadioCreate(0, &wi, GROUP_YESNO); + gwinRadioPress(ghRadio1); + wi.g.width = COLOR_WIDTH; wi.g.y += RADIO_HEIGHT+5; + wi.g.x = 5; wi.text = "Black"; + ghRadioBlack = gwinRadioCreate(0, &wi, GROUP_COLORS); + wi.g.x += wi.g.width; wi.text = "White"; if (wi.g.x + wi.g.width > pagewidth) { wi.g.x = 5; wi.g.y += RADIO_HEIGHT; } + ghRadioWhite = gwinRadioCreate(0, &wi, GROUP_COLORS); + wi.g.x += wi.g.width; wi.text = "Yellow"; if (wi.g.x + wi.g.width > pagewidth) { wi.g.x = 5; wi.g.y += RADIO_HEIGHT; } + ghRadioYellow = gwinRadioCreate(0, &wi, GROUP_COLORS); + gwinRadioPress(ghRadioWhite); + + // Lists + border = pagewidth < 10+2*LIST_WIDTH ? 2 : 5; + wi.g.parent = ghPgLists; + wi.g.width = LIST_WIDTH; wi.g.height = LIST_HEIGHT; wi.g.y = border; + wi.g.x = border; wi.text = "L1"; + ghList1 = gwinListCreate(0, &wi, FALSE); + gwinListAddItem(ghList1, "Item 0", FALSE); + gwinListAddItem(ghList1, "Item 1", FALSE); + gwinListAddItem(ghList1, "Item 2", FALSE); + gwinListAddItem(ghList1, "Item 3", FALSE); + gwinListAddItem(ghList1, "Item 4", FALSE); + gwinListAddItem(ghList1, "Item 5", FALSE); + gwinListAddItem(ghList1, "Item 6", FALSE); + gwinListAddItem(ghList1, "Item 7", FALSE); + gwinListAddItem(ghList1, "Item 8", FALSE); + gwinListAddItem(ghList1, "Item 9", FALSE); + gwinListAddItem(ghList1, "Item 10", FALSE); + gwinListAddItem(ghList1, "Item 11", FALSE); + gwinListAddItem(ghList1, "Item 12", FALSE); + gwinListAddItem(ghList1, "Item 13", FALSE); + wi.text = "L2"; wi.g.x += LIST_WIDTH+border; if (wi.g.x + LIST_WIDTH > pagewidth) { wi.g.x = border; wi.g.y += LIST_HEIGHT+border; } + ghList2 = gwinListCreate(0, &wi, TRUE); + gwinListAddItem(ghList2, "Item 0", FALSE); + gwinListAddItem(ghList2, "Item 1", FALSE); + gwinListAddItem(ghList2, "Item 2", FALSE); + gwinListAddItem(ghList2, "Item 3", FALSE); + gwinListAddItem(ghList2, "Item 4", FALSE); + gwinListAddItem(ghList2, "Item 5", FALSE); + gwinListAddItem(ghList2, "Item 6", FALSE); + gwinListAddItem(ghList2, "Item 7", FALSE); + gwinListAddItem(ghList2, "Item 8", FALSE); + gwinListAddItem(ghList2, "Item 9", FALSE); + gwinListAddItem(ghList2, "Item 10", FALSE); + gwinListAddItem(ghList2, "Item 11", FALSE); + gwinListAddItem(ghList2, "Item 12", FALSE); + gwinListAddItem(ghList2, "Item 13", FALSE); + wi.text = "L3"; wi.g.x += LIST_WIDTH+border; if (wi.g.x + LIST_WIDTH > pagewidth) { wi.g.x = border; wi.g.y += LIST_HEIGHT+border; } + ghList3 = gwinListCreate(0, &wi, TRUE); + gwinListAddItem(ghList3, "Item 0", FALSE); + gwinListAddItem(ghList3, "Item 1", FALSE); + gwinListAddItem(ghList3, "Item 2", FALSE); + gwinListAddItem(ghList3, "Item 3", FALSE); + gdispImageOpenFile(&imgYesNo, "image_yesno.gif"); + gwinListItemSetImage(ghList3, 1, &imgYesNo); + gwinListItemSetImage(ghList3, 3, &imgYesNo); + wi.text = "L4"; wi.g.x += LIST_WIDTH+border; if (wi.g.x + LIST_WIDTH > pagewidth) { wi.g.x = border; wi.g.y += LIST_HEIGHT+border; } + ghList4 = gwinListCreate(0, &wi, TRUE); + gwinListAddItem(ghList4, "Item 0", FALSE); + gwinListAddItem(ghList4, "Item 1", FALSE); + gwinListAddItem(ghList4, "Item 2", FALSE); + gwinListAddItem(ghList4, "Item 3", FALSE); + gwinListAddItem(ghList4, "Item 4", FALSE); + gwinListAddItem(ghList4, "Item 5", FALSE); + gwinListAddItem(ghList4, "Item 6", FALSE); + gwinListAddItem(ghList4, "Item 7", FALSE); + gwinListAddItem(ghList4, "Item 8", FALSE); + gwinListAddItem(ghList4, "Item 9", FALSE); + gwinListAddItem(ghList4, "Item 10", FALSE); + gwinListAddItem(ghList4, "Item 11", FALSE); + gwinListAddItem(ghList4, "Item 12", FALSE); + gwinListAddItem(ghList4, "Item 13", FALSE); + gwinListSetScroll(ghList4, scrollSmooth); + + // Image + wi.g.parent = ghPgImages; + wi.g.x = wi.g.y = 0; wi.g.width = pagewidth; wi.g.height = gwinGetInnerHeight(ghPgImages)/2; + ghImage1 = gwinImageCreate(0, &wi.g); + gwinImageOpenFile(ghImage1, "ugfx.gif"); + wi.g.y += wi.g.height; + ghImage2 = gwinImageCreate(0, &wi.g); + gwinImageOpenFile(ghImage2, "chibios.gif"); +} + +/** + * Set the value of the labels + */ +static void setLabels(void) { + char tmp[20]; + + // The sliders + snprintg(tmp, sizeof(tmp), "%d%%", gwinSliderGetPosition(ghSlider1)); + gwinSetText(ghLabelSlider1, tmp, TRUE); + snprintg(tmp, sizeof(tmp), "%d%%", gwinSliderGetPosition(ghSlider2)); + gwinSetText(ghLabelSlider2, tmp, TRUE); + snprintg(tmp, sizeof(tmp), "%d%%", gwinSliderGetPosition(ghSlider3)); + gwinSetText(ghLabelSlider3, tmp, TRUE); + snprintg(tmp, sizeof(tmp), "%d%%", gwinSliderGetPosition(ghSlider4)); + gwinSetText(ghLabelSlider4, tmp, TRUE); + + // The radio buttons + if (gwinRadioIsPressed(ghRadio1)) + gwinSetText(ghLabelRadio1, "Yes", TRUE); + else if (gwinRadioIsPressed(ghRadio2)) + gwinSetText(ghLabelRadio1, "No", TRUE); +} + +/** + * Control the progress bar auto-increment + */ +static void setProgressbar(bool_t onoff) { + if (onoff) + gwinProgressbarStart(ghProgressbar1, 500); + else { + gwinProgressbarStop(ghProgressbar1); // Stop the progress bar + gwinProgressbarReset(ghProgressbar1); + } +} + +/** + * Set the enabled state of every widget (except the tabs etc) + */ +static void setEnabled(bool_t ena) { + //gwinSetEnabled(ghPgControls, ena); + gwinSetEnabled(ghPgSliders, ena); + gwinSetEnabled(ghPgLabels, ena); + gwinSetEnabled(ghPgRadios, ena); + gwinSetEnabled(ghPgLists, ena); + gwinSetEnabled(ghPgImages, ena); + gwinSetEnabled(ghPgBounce, ena); + gwinSetEnabled(ghPgMandelbrot, ena); + // Checkboxes and Buttons we need to do individually so we don't disable the checkbox to re-enable everything + gwinSetEnabled(ghButton1, ena); + gwinSetEnabled(ghButton2, ena); + gwinSetEnabled(ghButton3, ena); + gwinSetEnabled(ghButton4, ena); + gwinSetEnabled(ghCheckbox1, ena); + gwinSetEnabled(ghCheckbox2, ena); + gwinSetEnabled(ghCheckbox3, ena); + //gwinSetEnabled(ghCheckDisableAll, TRUE); +} + +static void FlashOffFn(void *param) { + (void) param; + + gwinNoFlash(ghCheckbox3); +} + +int main(void) { + GEvent * pe; + + // Initialize the display + gfxInit(); + + // Set the widget defaults + font = gdispOpenFont("*"); // Get the first defined font. + gwinSetDefaultFont(font); + gwinSetDefaultStyle(&WhiteWidgetStyle, FALSE); + gdispClear(White); + + // Create the gwin windows/widgets + createWidgets(); + + // Assign toggles and dials to specific buttons & sliders etc. + #if GINPUT_NEED_TOGGLE + gwinAttachToggle(ghButton1, 0, 0); + gwinAttachToggle(ghButton2, 0, 1); + #endif + #if GINPUT_NEED_DIAL + gwinAttachDial(ghSlider1, 0, 0); + gwinAttachDial(ghSlider3, 0, 1); + #endif + + // Make the console visible + gwinShow(ghConsole); + gwinClear(ghConsole); + + // We want to listen for widget events + geventListenerInit(&gl); + gwinAttachListener(&gl); + gtimerInit(&FlashTimer); + + #if !GWIN_NEED_TABSET + // Press the Tab we want visible + gwinRadioPress(ghTabButtons); + #endif + + while(1) { + // Get an Event + pe = geventEventWait(&gl, TIME_INFINITE); + + switch(pe->type) { + case GEVENT_GWIN_BUTTON: + gwinPrintf(ghConsole, "Button %s\n", gwinGetText(((GEventGWinButton *)pe)->gwin)); + break; + + case GEVENT_GWIN_SLIDER: + gwinPrintf(ghConsole, "Slider %s=%d\n", gwinGetText(((GEventGWinSlider *)pe)->gwin), ((GEventGWinSlider *)pe)->position); + break; + + case GEVENT_GWIN_CHECKBOX: + gwinPrintf(ghConsole, "Checkbox %s=%s\n", gwinGetText(((GEventGWinCheckbox *)pe)->gwin), ((GEventGWinCheckbox *)pe)->isChecked ? "Checked" : "UnChecked"); + + // If it is the Disable All checkbox then do that. + if (((GEventGWinCheckbox *)pe)->gwin == ghCheckDisableAll) { + gwinPrintf(ghConsole, "%s All\n", ((GEventGWinCheckbox *)pe)->isChecked ? "Disable" : "Enable"); + setEnabled(!((GEventGWinCheckbox *)pe)->isChecked); + + // If it is the toggle button checkbox start the flash. + } else if (((GEventGWinCheckbox *)pe)->gwin == ghCheckbox3) { + gwinFlash(ghCheckbox3); + gtimerStart(&FlashTimer, FlashOffFn, 0, FALSE, 3000); + } + break; + + case GEVENT_GWIN_LIST: + gwinPrintf(ghConsole, "List %s Item %d %s\n", gwinGetText(((GEventGWinList *)pe)->gwin), ((GEventGWinList *)pe)->item, + gwinListItemIsSelected(((GEventGWinList *)pe)->gwin, ((GEventGWinList *)pe)->item) ? "Selected" : "Unselected"); + break; + + case GEVENT_GWIN_RADIO: + gwinPrintf(ghConsole, "Radio Group %u=%s\n", ((GEventGWinRadio *)pe)->group, gwinGetText(((GEventGWinRadio *)pe)->gwin)); + + switch(((GEventGWinRadio *)pe)->group) { + #if !GWIN_NEED_TABSET + case GROUP_TABS: + + // Set control visibility depending on the tab selected + setTab(((GEventGWinRadio *)pe)->gwin); + + // We show the state of some of the GUI elements here + setProgressbar(((GEventGWinRadio *)pe)->gwin == ghTabProgressbar); + if (((GEventGWinRadio *)pe)->gwin == ghTabLabels) + setLabels(); + break; + #endif + + case GROUP_COLORS: + { + const GWidgetStyle *pstyle; + + gwinPrintf(ghConsole, "Change Color Scheme\n"); + + if (((GEventGWinRadio *)pe)->gwin == ghRadioYellow) + pstyle = &YellowWidgetStyle; + else if (((GEventGWinRadio *)pe)->gwin == ghRadioBlack) + pstyle = &BlackWidgetStyle; + else + pstyle = &WhiteWidgetStyle; + + // Clear the screen to the new color + gdispClear(pstyle->background); + + // Update the style on all controls + gwinSetDefaultStyle(pstyle, TRUE); + } + break; + } + break; + + #if GWIN_NEED_TABSET + case GEVENT_GWIN_TABSET: + gwinPrintf(ghConsole, "TabPage %u (%s)\n", ((GEventGWinTabset *)pe)->nPage, gwinTabsetGetTitle(((GEventGWinTabset *)pe)->ghPage)); + + // We show the state of some of the GUI elements here + setProgressbar(((GEventGWinTabset *)pe)->ghPage == ghPgSliders); + doMandlebrot(ghPgMandelbrot, ((GEventGWinTabset *)pe)->ghPage == ghPgMandelbrot); + doBounce(ghPgBounce, ((GEventGWinTabset *)pe)->ghPage == ghPgBounce); + if (((GEventGWinTabset *)pe)->ghPage == ghPgLabels) + setLabels(); + break; + #endif + + default: + gwinPrintf(ghConsole, "Unknown %d\n", pe->type); + break; + } + } + return 0; +} + diff --git a/demos/applications/combo/mandelbrot.c b/demos/applications/combo/mandelbrot.c new file mode 100644 index 00000000..68ee1fae --- /dev/null +++ b/demos/applications/combo/mandelbrot.c @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2012, 2013, Joel Bodenmann aka Tectu + * Copyright (c) 2012, 2013, Andrew Hannam aka inmarket + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "gfx.h" +#include "tasks.h" + +static volatile bool_t run; +static GHandle gh; +static gfxThreadHandle thread; + +static void mandelbrot(float x1, float y1, float x2, float y2) { + unsigned int i,j, width, height; + uint16_t iter; + float fwidth, fheight; + + float sy = y2 - y1; + float sx = x2 - x1; + const int MAX = 512; + + width = (unsigned int)gwinGetWidth(gh); + height = (unsigned int)gwinGetHeight(gh); + fwidth = width; + fheight = height; + + for(i = 0; i < width; i++) { + for(j = 0; j < height; j++) { + float cy = j * sy / fheight + y1; + float cx = i * sx / fwidth + x1; + float x=0.0f, y=0.0f, xx=0.0f, yy=0.0f; + gfxYield(); + for(iter=0; iter <= MAX && xx+yy<4.0f; iter++) { + xx = x*x; + yy = y*y; + y = 2.0f*x*y + cy; + x = xx - yy + cx; + } + gwinSetColor(gh, RGB2COLOR(iter<<7, iter<<4, iter)); + gwinDrawPixel(gh, i, j); + } + } +} + +static DECLARE_THREAD_FUNCTION(task, param) { + float cx, cy; + float zoom = 1.0f; + (void) param; + + /* where to zoom in */ + cx = -0.086f; + cy = 0.85f; + + while(run) { + mandelbrot(-2.0f*zoom+cx, -1.5f*zoom+cy, 2.0f*zoom+cx, 1.5f*zoom+cy); + + zoom *= 0.7f; + if(zoom <= 0.00001f) + zoom = 1.0f; + } + return 0; +} + +void doMandlebrot(GHandle parent, bool_t start) { + if (start) { + run = TRUE; + gh = parent; + thread = gfxThreadCreate(0, 0x400, LOW_PRIORITY, task, 0); + } else if (run) { + run = FALSE; + gfxThreadWait(thread); + } +} + + diff --git a/demos/applications/combo/readme.txt b/demos/applications/combo/readme.txt new file mode 100644 index 00000000..b5777061 --- /dev/null +++ b/demos/applications/combo/readme.txt @@ -0,0 +1,8 @@ +This demo supports input from both a mouse/touch, toggles and/or a dial input. +If your platform does not support one or the other, turn it off in +gfxconf.h + +Note that you will need to include the drivers into your project +makefile for whichever inputs you decide to use. + +For some fun have a play with the "colors" radio group and the "Disable All" checkbox. diff --git a/demos/applications/combo/romfs_files.h b/demos/applications/combo/romfs_files.h new file mode 100644 index 00000000..5b6aecd8 --- /dev/null +++ b/demos/applications/combo/romfs_files.h @@ -0,0 +1,9 @@ +/** + * This file contains the list of files for the ROMFS. + * + * The files have been converted using... + * file2c -dbcs infile outfile + */ +#include "romfs_img_ugfx.h" +#include "romfs_img_yesno.h" +#include "romfs_img_chibios.h" diff --git a/demos/applications/combo/romfs_img_chibios.h b/demos/applications/combo/romfs_img_chibios.h new file mode 100644 index 00000000..342e3b68 --- /dev/null +++ b/demos/applications/combo/romfs_img_chibios.h @@ -0,0 +1,317 @@ +/** + * This file was generated from "chibios.gif" using... + * + * file2c -dcsn image_chibios chibios.gif + * + */ +static const char image_chibios[] = { + 0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x5A, 0x00, 0x5A, 0x00, 0xE7, 0xFF, 0x00, 0x09, 0x0E, 0x06, + 0x06, 0x0E, 0x3D, 0x0F, 0x0F, 0x1A, 0x06, 0x12, 0x2B, 0x0A, 0x1A, 0x00, 0x14, 0x2A, 0x04, 0x48, + 0x1D, 0x0E, 0x1D, 0x34, 0x00, 0x33, 0x31, 0x35, 0x19, 0x3E, 0x03, 0x11, 0x36, 0x70, 0x13, 0x33, + 0x95, 0x1C, 0x3E, 0x3A, 0x52, 0x2F, 0x30, 0x00, 0x49, 0x22, 0x00, 0x41, 0x72, 0x26, 0x47, 0x01, + 0x20, 0x4A, 0x01, 0x00, 0x49, 0x6A, 0x3C, 0x3D, 0x50, 0x00, 0x53, 0x2E, 0x74, 0x31, 0x2F, 0x03, + 0x50, 0x4C, 0x03, 0x56, 0x19, 0x2E, 0x46, 0x3C, 0x0E, 0x4A, 0x75, 0x23, 0x44, 0x86, 0x00, 0x55, + 0x48, 0x01, 0x56, 0x3C, 0x03, 0x52, 0x5E, 0x3D, 0x3F, 0x7A, 0x0B, 0x59, 0x0C, 0x01, 0x59, 0x2A, + 0x03, 0x5A, 0x26, 0x04, 0x57, 0x44, 0x44, 0x41, 0x68, 0x03, 0x56, 0x5A, 0x32, 0x53, 0x02, 0x8C, + 0x34, 0x30, 0x01, 0x57, 0x6F, 0x2F, 0x55, 0x00, 0x06, 0x59, 0x54, 0x28, 0x58, 0x0C, 0x38, 0x4F, + 0x3A, 0x07, 0x61, 0x23, 0x07, 0x5F, 0x39, 0x3D, 0x4C, 0x57, 0x1E, 0x5E, 0x03, 0x29, 0x5C, 0x03, + 0x0A, 0x65, 0x09, 0x0B, 0x65, 0x17, 0xAF, 0x35, 0x24, 0x30, 0x5F, 0x00, 0x12, 0x5E, 0x65, 0x07, + 0x6B, 0x29, 0x54, 0x54, 0x2B, 0x26, 0x67, 0x02, 0x40, 0x59, 0x56, 0x0F, 0x6E, 0x1E, 0x11, 0x6F, + 0x14, 0x35, 0x66, 0x04, 0x0A, 0x72, 0x0C, 0x17, 0x6A, 0x41, 0x1A, 0x67, 0x5D, 0x10, 0x6E, 0x36, + 0x1F, 0x6F, 0x05, 0x34, 0x68, 0x16, 0x12, 0x75, 0x03, 0x32, 0x6D, 0x02, 0x2C, 0x6F, 0x02, 0x21, + 0x6D, 0x3C, 0x2E, 0x6E, 0x1B, 0x31, 0x6A, 0x3B, 0x69, 0x58, 0x5A, 0x29, 0x6F, 0x33, 0x4D, 0x69, + 0x06, 0x29, 0x6D, 0x50, 0x3D, 0x6F, 0x02, 0x1D, 0x74, 0x31, 0x48, 0x6C, 0x03, 0x0F, 0x7C, 0x0F, + 0x43, 0x6E, 0x03, 0x8C, 0x53, 0x47, 0x49, 0x68, 0x42, 0x0B, 0x81, 0x04, 0x43, 0x66, 0x6D, 0x34, + 0x75, 0x08, 0x22, 0x7A, 0x0C, 0x42, 0x6D, 0x34, 0x2C, 0x79, 0x0E, 0x1E, 0x7B, 0x27, 0x30, 0x7A, + 0x00, 0x48, 0x70, 0x24, 0x1F, 0x80, 0x00, 0x2F, 0x78, 0x25, 0x4C, 0x6F, 0x2A, 0x39, 0x79, 0x00, + 0x40, 0x78, 0x01, 0x50, 0x69, 0x69, 0x2B, 0x7F, 0x02, 0x18, 0x85, 0x00, 0x53, 0x74, 0x01, 0x49, + 0x79, 0x04, 0x4F, 0x78, 0x02, 0x29, 0x7E, 0x3B, 0x37, 0x80, 0x04, 0x41, 0x7E, 0x08, 0x65, 0x64, + 0xA3, 0x1E, 0x8C, 0x07, 0x36, 0x7F, 0x43, 0x43, 0x82, 0x00, 0x4A, 0x80, 0x00, 0x50, 0x7F, 0x00, + 0x3A, 0x7E, 0x4F, 0x2E, 0x8A, 0x06, 0x56, 0x77, 0x4F, 0x57, 0x78, 0x44, 0x38, 0x88, 0x05, 0x3F, + 0x86, 0x05, 0x70, 0x6B, 0x85, 0x47, 0x7F, 0x45, 0x26, 0x90, 0x00, 0x59, 0x81, 0x02, 0x3C, 0x87, + 0x22, 0x2C, 0x8C, 0x24, 0x5F, 0x75, 0x74, 0x49, 0x87, 0x07, 0x4F, 0x86, 0x07, 0x33, 0x8B, 0x30, + 0x33, 0x8A, 0x3A, 0x56, 0x85, 0x06, 0x3B, 0x8E, 0x00, 0x53, 0x82, 0x31, 0x47, 0x8C, 0x00, 0x7D, + 0x71, 0x72, 0x54, 0x89, 0x00, 0x55, 0x87, 0x21, 0x25, 0x98, 0x07, 0x50, 0x8C, 0x00, 0x3A, 0x8E, + 0x48, 0x4C, 0x90, 0x06, 0x35, 0x97, 0x08, 0x3D, 0x93, 0x1A, 0x41, 0x94, 0x05, 0x2F, 0x98, 0x1B, + 0x55, 0x90, 0x00, 0x27, 0x9F, 0x00, 0x63, 0x82, 0x83, 0x34, 0x9E, 0x00, 0x6C, 0x8D, 0x23, 0x40, + 0x9E, 0x00, 0x56, 0x98, 0x00, 0x5D, 0x96, 0x00, 0x5B, 0x95, 0x10, 0x4B, 0x9C, 0x00, 0x46, 0x97, + 0x41, 0x4C, 0x97, 0x35, 0x5B, 0x96, 0x22, 0x3E, 0x9D, 0x34, 0x3B, 0xA3, 0x0A, 0x30, 0xA6, 0x0D, + 0x36, 0xA4, 0x1A, 0xAA, 0x7A, 0x68, 0x34, 0xA8, 0x00, 0x38, 0xA3, 0x26, 0x3F, 0xA5, 0x00, 0x6E, + 0x8E, 0x5D, 0x5B, 0x96, 0x49, 0x59, 0x93, 0x6D, 0x7A, 0x88, 0x88, 0x49, 0xA1, 0x2E, 0x55, 0xA3, + 0x00, 0x5C, 0x9F, 0x1C, 0x60, 0xA1, 0x03, 0x37, 0xAF, 0x0A, 0x6B, 0xA1, 0x00, 0x73, 0x93, 0x90, + 0x87, 0x8F, 0x83, 0x48, 0xAD, 0x14, 0x3C, 0xB0, 0x1C, 0x52, 0xA6, 0x42, 0x91, 0x8B, 0x9C, 0x5C, + 0x9E, 0x7D, 0x69, 0xA3, 0x2B, 0x3F, 0xB0, 0x28, 0x52, 0xAD, 0x13, 0x4B, 0xAC, 0x40, 0x43, 0xB5, + 0x00, 0x6B, 0xAA, 0x00, 0x5F, 0xAC, 0x12, 0x62, 0xAD, 0x00, 0x6C, 0xA1, 0x5F, 0x56, 0xB3, 0x00, + 0x52, 0xB0, 0x2A, 0x48, 0xB2, 0x34, 0x69, 0xAB, 0x1A, 0x67, 0xA6, 0x52, 0x5F, 0xAA, 0x47, 0x4C, + 0xB1, 0x3C, 0x75, 0xAB, 0x00, 0x64, 0xA9, 0x74, 0x69, 0xB4, 0x01, 0x65, 0xB1, 0x36, 0x4E, 0xBB, + 0x24, 0x7F, 0xA5, 0x7A, 0x4D, 0xBB, 0x34, 0x4E, 0xBA, 0x3C, 0x7C, 0xA3, 0xA4, 0x53, 0xC0, 0x0A, + 0x6E, 0xA9, 0xA4, 0x62, 0xBD, 0x04, 0x59, 0xBB, 0x44, 0x5E, 0xBB, 0x4F, 0xA6, 0x9C, 0xB0, 0x75, + 0xB2, 0x6D, 0x71, 0xBA, 0x2C, 0x76, 0xAF, 0x9B, 0x84, 0xAC, 0x91, 0x72, 0xC0, 0x14, 0x71, 0xB6, + 0x96, 0x9A, 0xA8, 0xA8, 0x6B, 0xC7, 0x00, 0x5F, 0xCB, 0x10, 0x6B, 0xC5, 0x35, 0x6B, 0xC9, 0x22, + 0x63, 0xCA, 0x35, 0x67, 0xC9, 0x49, 0x8B, 0xB5, 0xB3, 0x78, 0xC6, 0x49, 0xAB, 0xAE, 0xA8, 0x69, + 0xD6, 0x00, 0x77, 0xD2, 0x00, 0xD8, 0xA8, 0x8A, 0x7D, 0xCB, 0x3D, 0x9F, 0xB8, 0xA9, 0x78, 0xC4, + 0xBB, 0x89, 0xC8, 0x94, 0x97, 0xC7, 0xCC, 0xBB, 0xBE, 0xBE, 0x9A, 0xCA, 0xC3, 0x94, 0xD8, 0xC7, + 0x86, 0xDC, 0xD0, 0xCE, 0xC7, 0xD0, 0x8E, 0xDC, 0xBE, 0xBA, 0xCF, 0xCC, 0x9C, 0xE3, 0xE2, 0xA1, + 0xE3, 0xD9, 0xAF, 0xE3, 0xDD, 0xBC, 0xE1, 0xDE, 0xCF, 0xEA, 0xE8, 0xE6, 0xEC, 0xEF, 0xE1, 0xEE, + 0xEE, 0xEC, 0xEE, 0xEB, 0xEF, 0xED, 0xF2, 0xF5, 0xEE, 0xED, 0xFF, 0xFF, 0xFF, 0x21, 0xF9, 0x04, + 0x01, 0x0A, 0x00, 0xFF, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x5A, 0x00, 0x5A, 0x00, 0x00, 0x08, + 0xFE, 0x00, 0xFF, 0x09, 0x1C, 0x48, 0xB0, 0xA0, 0xC1, 0x83, 0x08, 0x13, 0x2A, 0x5C, 0xC8, 0xB0, + 0xA1, 0xC3, 0x87, 0x10, 0x23, 0x4A, 0x9C, 0x48, 0xB1, 0xA2, 0xC5, 0x8B, 0x18, 0x33, 0x6A, 0xDC, + 0xC8, 0xB1, 0xA3, 0xC7, 0x4C, 0xBE, 0x7C, 0x79, 0x1C, 0x59, 0x11, 0x13, 0xA6, 0x81, 0xDF, 0x96, + 0x41, 0x13, 0x49, 0xB2, 0xA5, 0xC3, 0x4B, 0xDD, 0xA4, 0xB1, 0x24, 0xE7, 0x0C, 0x54, 0x37, 0x97, + 0x38, 0x17, 0x6A, 0xDB, 0x35, 0x0A, 0x9A, 0xC0, 0x4E, 0xC1, 0x28, 0x69, 0x23, 0xD9, 0xAA, 0x15, + 0xA6, 0x4C, 0x48, 0x73, 0x1A, 0x4C, 0xD7, 0x0C, 0x14, 0xB0, 0x81, 0x6F, 0x18, 0x9D, 0xC4, 0xD8, + 0xE9, 0x54, 0x30, 0x68, 0xD0, 0x4A, 0x35, 0x92, 0x23, 0x27, 0x91, 0x25, 0x46, 0x76, 0xD2, 0xEC, + 0xD9, 0x53, 0x48, 0x91, 0xD2, 0x5B, 0xE0, 0x76, 0xAD, 0x3A, 0x24, 0xF0, 0xCF, 0xD4, 0x7F, 0xC3, + 0xC0, 0x65, 0x8A, 0x18, 0xD7, 0x5B, 0x28, 0x40, 0xA0, 0x24, 0xE9, 0x10, 0x91, 0x42, 0x04, 0x88, + 0x1E, 0x72, 0xE0, 0xA8, 0xE9, 0x11, 0x82, 0x03, 0x8B, 0x2D, 0x6F, 0xFE, 0xB0, 0xC5, 0x69, 0x72, + 0xAA, 0xA2, 0xB9, 0x02, 0x95, 0x85, 0x93, 0xF6, 0xF0, 0xDA, 0xB7, 0x50, 0x7C, 0xA0, 0x90, 0xA1, + 0x64, 0x69, 0x08, 0x85, 0x0D, 0x2D, 0x64, 0xF4, 0xE8, 0xF2, 0xA6, 0xCC, 0x19, 0x3B, 0x5B, 0x86, + 0x0C, 0xB1, 0xD2, 0x84, 0x08, 0x91, 0x30, 0x6F, 0x16, 0x93, 0x84, 0x83, 0xE9, 0xD0, 0x9F, 0x37, + 0x66, 0xFF, 0xFD, 0x61, 0x04, 0xCA, 0x27, 0x43, 0x72, 0xE1, 0x48, 0xE9, 0xA0, 0xC0, 0x21, 0xC4, + 0x90, 0x3A, 0x70, 0xB6, 0x74, 0xB9, 0xB2, 0x05, 0x4C, 0x98, 0x28, 0x4F, 0x78, 0x40, 0x7F, 0x72, + 0x06, 0x8E, 0x99, 0x30, 0x63, 0x62, 0x38, 0x50, 0x41, 0x44, 0xF6, 0xC8, 0x43, 0x70, 0xCE, 0xFE, + 0x54, 0xB7, 0xED, 0xA7, 0x50, 0xAE, 0x64, 0x0C, 0xBF, 0x85, 0x93, 0x14, 0x83, 0x02, 0x0B, 0x1D, + 0x50, 0xEA, 0xE8, 0x31, 0x1D, 0xE6, 0xCC, 0x92, 0x25, 0xE2, 0xCF, 0x98, 0xB9, 0x0E, 0xE6, 0xC9, + 0x92, 0x28, 0x66, 0xB8, 0x71, 0x05, 0x08, 0x1B, 0x5C, 0x80, 0x43, 0x18, 0xDE, 0x59, 0x74, 0xCC, + 0x2B, 0xAF, 0x60, 0xF2, 0x46, 0x18, 0x6E, 0x94, 0x26, 0x9E, 0x19, 0x8A, 0x34, 0xB6, 0xD0, 0x35, + 0xE1, 0x2C, 0x33, 0x4A, 0x22, 0x43, 0x8C, 0x66, 0xC7, 0x1F, 0x82, 0x98, 0x16, 0x05, 0x80, 0x6F, + 0xD8, 0x61, 0x87, 0x1F, 0x70, 0x94, 0xA1, 0xC6, 0x0E, 0x3A, 0x6C, 0x71, 0xC6, 0x13, 0x61, 0x84, + 0x61, 0x47, 0x17, 0x2C, 0x84, 0x80, 0x43, 0x13, 0x66, 0x24, 0x38, 0xD1, 0x31, 0xBC, 0x5C, 0xA2, + 0x89, 0x1D, 0x31, 0xD6, 0x41, 0x09, 0x23, 0xF3, 0x1D, 0xF2, 0x56, 0x42, 0xB7, 0x14, 0xE3, 0x09, + 0x28, 0xA3, 0x48, 0x32, 0x44, 0x0C, 0xC7, 0xCD, 0xF7, 0xC4, 0x13, 0x01, 0xD6, 0x31, 0x46, 0x0F, + 0x2C, 0xEE, 0x30, 0x06, 0x1C, 0x41, 0x74, 0x20, 0xC1, 0x0E, 0x7F, 0xB8, 0x31, 0xC4, 0x07, 0x32, + 0x5C, 0xD1, 0x45, 0x17, 0x61, 0x34, 0xC1, 0x03, 0x11, 0x91, 0x5C, 0x94, 0xCC, 0x2E, 0x89, 0x8C, + 0x92, 0xCB, 0x25, 0x97, 0xF4, 0xB2, 0x4C, 0x29, 0x6E, 0x98, 0x71, 0x24, 0x42, 0xCA, 0x9C, 0xC2, + 0xC4, 0x05, 0x89, 0x48, 0x22, 0x03, 0x05, 0x1F, 0x50, 0x11, 0xC6, 0x13, 0x56, 0xA8, 0xE1, 0x87, + 0x1F, 0x75, 0xEC, 0xC0, 0x81, 0x05, 0x1B, 0x6C, 0x40, 0x01, 0x15, 0x94, 0xC8, 0x51, 0x23, 0x19, + 0x9F, 0x70, 0x08, 0x42, 0x07, 0x1B, 0xE8, 0x20, 0xDF, 0x19, 0x41, 0x80, 0x20, 0x43, 0x6E, 0x14, + 0x5D, 0x02, 0x4E, 0x38, 0xE1, 0x0C, 0x33, 0x10, 0x2B, 0xB2, 0x00, 0xB9, 0xA7, 0x41, 0xFE, 0xCA, + 0xE0, 0x21, 0x02, 0x0B, 0x50, 0x48, 0x42, 0x85, 0x7B, 0x5D, 0x64, 0xC1, 0x43, 0x1E, 0xB2, 0x7C, + 0x55, 0x87, 0x0C, 0x91, 0xB2, 0x30, 0x04, 0x15, 0x54, 0x48, 0x02, 0xCA, 0xB1, 0xC6, 0x32, 0x29, + 0x09, 0x1B, 0x3B, 0x88, 0x40, 0x02, 0x10, 0x63, 0xFC, 0xD1, 0xC5, 0x06, 0x1D, 0x7C, 0xA0, 0x23, + 0x44, 0x99, 0x5C, 0x53, 0xD0, 0x25, 0xB9, 0x80, 0xF1, 0xC6, 0x2B, 0x09, 0x65, 0x42, 0x8E, 0x2E, + 0x4E, 0xF4, 0x20, 0x89, 0x2B, 0x9A, 0xC8, 0x31, 0x44, 0x17, 0x45, 0x58, 0x21, 0xE7, 0x1B, 0xF6, + 0xD9, 0xD1, 0x21, 0x19, 0xE7, 0xBA, 0xB2, 0x0C, 0x2E, 0xC2, 0xE4, 0xAB, 0xAF, 0x30, 0xC1, 0x2C, + 0xE3, 0x0A, 0x1B, 0x85, 0x41, 0xF1, 0x86, 0x1B, 0x3B, 0x9C, 0x60, 0xC1, 0x0B, 0xD7, 0x96, 0x0A, + 0x0C, 0x23, 0x6A, 0x90, 0x6A, 0x10, 0x22, 0xCA, 0x4C, 0x03, 0x09, 0x15, 0x6C, 0x48, 0x62, 0xC9, + 0x1F, 0x7A, 0xD8, 0x61, 0x85, 0x1C, 0xE8, 0xDA, 0xE7, 0xDF, 0x13, 0x6E, 0x0C, 0xD2, 0xC8, 0x27, + 0xC1, 0x28, 0xA3, 0x8C, 0x38, 0xE4, 0x88, 0x23, 0x4E, 0x33, 0xCD, 0x38, 0x63, 0xCC, 0xCB, 0xC2, + 0x2C, 0x13, 0x0A, 0x1B, 0x5E, 0x5D, 0x32, 0x46, 0x08, 0x1D, 0x5C, 0x80, 0x60, 0x46, 0xBD, 0x40, + 0x63, 0x49, 0x8C, 0x60, 0x18, 0x54, 0x9B, 0x19, 0x84, 0xD0, 0xE2, 0x89, 0x0D, 0x21, 0xEC, 0x90, + 0x87, 0x22, 0x67, 0x94, 0xF1, 0x84, 0x1C, 0xBB, 0x58, 0x12, 0xC5, 0x12, 0x53, 0x3E, 0x11, 0x45, + 0x13, 0x69, 0xD4, 0xD1, 0x89, 0x6C, 0x82, 0x74, 0x92, 0x09, 0x2B, 0x76, 0x2E, 0x03, 0x08, 0x13, + 0x8B, 0xE8, 0xE2, 0x0C, 0x2E, 0xB3, 0x2C, 0xDB, 0xC5, 0x10, 0x32, 0xC4, 0xF0, 0x5A, 0xC2, 0x0F, + 0x7D, 0x03, 0xCD, 0x86, 0x75, 0x14, 0x32, 0xC6, 0x16, 0x11, 0xBE, 0xF1, 0xA0, 0xFE, 0x15, 0xAE, + 0x6D, 0xE2, 0x09, 0x10, 0x14, 0xC8, 0x40, 0x45, 0x21, 0x7A, 0xE8, 0xF1, 0x44, 0x1D, 0xAE, 0x50, + 0x42, 0x04, 0x80, 0x66, 0x34, 0xA1, 0x26, 0x0E, 0x6A, 0xFC, 0xB1, 0xD0, 0x2A, 0x75, 0x30, 0xC1, + 0x44, 0x1B, 0xBA, 0x4C, 0xE3, 0x0C, 0x24, 0x2C, 0xB4, 0x20, 0x6C, 0x1A, 0x61, 0x10, 0xE1, 0x87, + 0x45, 0xC3, 0x84, 0xB3, 0x09, 0x1A, 0x5A, 0x50, 0x31, 0x48, 0x1D, 0x5B, 0xA8, 0xA1, 0x9F, 0x15, + 0x32, 0x80, 0x70, 0x01, 0x20, 0xBA, 0x78, 0xC1, 0x81, 0x0C, 0x72, 0xD8, 0x61, 0x06, 0x1C, 0x4F, + 0x8C, 0xE1, 0x4A, 0x23, 0xAE, 0xA9, 0xA1, 0x06, 0xDF, 0x3C, 0xC0, 0xC0, 0xC3, 0x1B, 0x0E, 0xD9, + 0x01, 0x48, 0x20, 0xC6, 0x4C, 0x43, 0x8D, 0x2E, 0x68, 0xA4, 0xD0, 0x81, 0x0F, 0x57, 0xB8, 0x61, + 0xC5, 0x16, 0x0E, 0x47, 0x24, 0x6E, 0x1C, 0x27, 0x3C, 0xD0, 0x81, 0x0E, 0x72, 0x58, 0xB9, 0x45, + 0x1D, 0x64, 0xB0, 0xE0, 0x17, 0x20, 0xC2, 0x40, 0x01, 0x58, 0x21, 0xA6, 0x95, 0x61, 0x85, 0x2B, + 0x89, 0xE0, 0xC0, 0x83, 0x1A, 0x60, 0xF0, 0x8D, 0x03, 0x0E, 0xC6, 0x23, 0xFF, 0xD0, 0x25, 0xBB, + 0xCC, 0xD2, 0xBC, 0x31, 0xD1, 0xAB, 0x41, 0x0B, 0xB6, 0x30, 0x06, 0x16, 0x78, 0x41, 0x7F, 0x13, + 0xB9, 0x85, 0x35, 0x7E, 0x90, 0x01, 0x05, 0x58, 0x80, 0x0C, 0x79, 0xD8, 0x01, 0x99, 0x86, 0x05, + 0x05, 0x3E, 0x18, 0x03, 0x17, 0x92, 0x90, 0xC4, 0x23, 0xF2, 0xF4, 0x84, 0x26, 0x18, 0x4B, 0x57, + 0x60, 0x00, 0x43, 0x11, 0x88, 0xD0, 0x2E, 0x1C, 0xA8, 0x00, 0x05, 0x66, 0x88, 0x08, 0xFF, 0x66, + 0x21, 0x0C, 0x5D, 0xD0, 0xC2, 0x0B, 0x35, 0x38, 0x81, 0x0E, 0xBA, 0xE0, 0x83, 0x1A, 0x84, 0xC1, + 0x22, 0xE4, 0xA0, 0x46, 0x20, 0x80, 0xA0, 0x83, 0x0C, 0xEE, 0xC0, 0x02, 0xFE, 0x27, 0xE0, 0x00, + 0x19, 0x46, 0xB1, 0x0C, 0x63, 0xC4, 0xA9, 0x11, 0x66, 0x72, 0x03, 0x0F, 0x20, 0x01, 0x0A, 0x2B, + 0xD0, 0x00, 0x0C, 0x5B, 0xB0, 0x42, 0xBB, 0xC0, 0x40, 0x04, 0x18, 0x44, 0x00, 0x02, 0x51, 0x90, + 0xC8, 0x25, 0xA0, 0x91, 0x08, 0x23, 0x90, 0xCD, 0x08, 0x24, 0xF0, 0x41, 0x17, 0x7A, 0x20, 0x82, + 0x23, 0x48, 0xAE, 0x22, 0xE9, 0x08, 0xC7, 0x2C, 0x66, 0x71, 0xAC, 0x44, 0xE8, 0x60, 0x03, 0x20, + 0x60, 0x83, 0x2B, 0x3C, 0xA1, 0x84, 0x21, 0x50, 0xA2, 0x07, 0x14, 0xD8, 0x41, 0x18, 0x10, 0x97, + 0x08, 0x18, 0x84, 0x21, 0x0D, 0xCD, 0x81, 0x22, 0xFE, 0x50, 0x10, 0x81, 0x03, 0x94, 0x60, 0x22, + 0xBC, 0x80, 0x06, 0x10, 0x32, 0xD0, 0x81, 0x38, 0x28, 0x01, 0x0A, 0x94, 0xA8, 0x43, 0x0C, 0x5E, + 0x80, 0x40, 0x8A, 0x60, 0x28, 0x18, 0x59, 0x38, 0x42, 0x16, 0xE4, 0xC0, 0x86, 0x3C, 0x8C, 0x42, + 0x15, 0x3F, 0xB0, 0xC0, 0x10, 0x2C, 0x71, 0x05, 0x1B, 0xC4, 0x20, 0x0B, 0xA0, 0x70, 0x45, 0x16, + 0x88, 0x80, 0x1A, 0x11, 0xE2, 0xCF, 0x8A, 0x07, 0x20, 0x00, 0x01, 0x12, 0x70, 0x86, 0x89, 0x68, + 0xC3, 0x1B, 0x3E, 0x78, 0xC0, 0x0F, 0x54, 0x91, 0xB6, 0x41, 0xA4, 0x01, 0x07, 0x60, 0x80, 0x9B, + 0x43, 0x32, 0xD1, 0x8A, 0x3F, 0xF0, 0x40, 0x05, 0x45, 0xB0, 0xC4, 0x28, 0x40, 0x61, 0x84, 0x0C, + 0x58, 0x20, 0x0F, 0x97, 0x78, 0x83, 0x1A, 0x78, 0x20, 0x87, 0x59, 0x24, 0xA2, 0x08, 0x75, 0x40, + 0x4D, 0x11, 0x60, 0xA0, 0x82, 0x2B, 0x16, 0x00, 0x00, 0xE0, 0x2C, 0x00, 0x0D, 0x28, 0xD2, 0x0D, + 0x68, 0xF8, 0x80, 0x09, 0x66, 0x03, 0x45, 0x24, 0xB3, 0x10, 0x84, 0xEC, 0x55, 0xE4, 0x0F, 0xA1, + 0xAB, 0x43, 0x29, 0x20, 0x91, 0x82, 0x07, 0xD8, 0x60, 0x14, 0x7F, 0xFE, 0x28, 0x43, 0x19, 0xA2, + 0x10, 0x0A, 0x57, 0xC8, 0xC1, 0x0A, 0xAB, 0xDB, 0xC2, 0x0B, 0x0A, 0x59, 0x00, 0x59, 0x46, 0xC0, + 0x78, 0x10, 0x80, 0x40, 0x2D, 0x07, 0xA2, 0x0C, 0x72, 0x28, 0x83, 0x15, 0x0B, 0x39, 0xC4, 0x39, + 0x76, 0x01, 0x09, 0x5D, 0x5C, 0x50, 0x12, 0x83, 0x18, 0x43, 0x16, 0x46, 0xA7, 0x11, 0x45, 0xD8, + 0xA1, 0x0E, 0x9F, 0xE0, 0x03, 0xA7, 0x12, 0x51, 0x0A, 0x38, 0xE8, 0xE1, 0x0C, 0x6A, 0x38, 0xD6, + 0x18, 0xEA, 0x20, 0x87, 0x5F, 0x46, 0xA0, 0xA0, 0xB2, 0xA4, 0x81, 0x1A, 0x08, 0xE1, 0x07, 0x3B, + 0xA0, 0x80, 0x06, 0x7A, 0x33, 0xC3, 0x1F, 0x94, 0xC1, 0x8C, 0x6C, 0x10, 0xC3, 0x9D, 0x05, 0xC1, + 0xC4, 0x44, 0x85, 0x61, 0x0C, 0x3E, 0xA4, 0xAE, 0x0E, 0x59, 0x70, 0xC3, 0x19, 0x33, 0xB2, 0x8A, + 0x47, 0x8C, 0x82, 0x0F, 0x2D, 0x80, 0x42, 0xC7, 0xC4, 0xB3, 0x05, 0x0D, 0xA6, 0x61, 0x75, 0x45, + 0x88, 0x40, 0x02, 0x20, 0x50, 0x82, 0x03, 0xC0, 0x60, 0x0B, 0x53, 0xA8, 0x45, 0x2C, 0xE8, 0x47, + 0x03, 0xC7, 0x95, 0x95, 0x0E, 0xB5, 0xA8, 0x46, 0x2C, 0x10, 0x21, 0x88, 0x85, 0x24, 0xC3, 0x1B, + 0x2C, 0x0C, 0x44, 0x0A, 0x80, 0x20, 0x07, 0x30, 0xA8, 0x41, 0x98, 0x11, 0x01, 0x46, 0x29, 0x40, + 0x41, 0x0A, 0x48, 0x48, 0x62, 0x14, 0x8D, 0x28, 0x0D, 0x35, 0x3F, 0xF1, 0xD1, 0x46, 0xA4, 0x01, + 0x06, 0x28, 0xC8, 0xE2, 0x3F, 0x9A, 0xB0, 0x05, 0x53, 0x54, 0xC3, 0x03, 0x23, 0x98, 0x43, 0x1D, + 0xA8, 0xB8, 0x26, 0x15, 0xD4, 0xE2, 0x0E, 0x23, 0xA8, 0x85, 0x29, 0xDA, 0xAA, 0x10, 0x41, 0x74, + 0x63, 0x17, 0xC1, 0xF0, 0xC4, 0x0F, 0x3A, 0x00, 0x05, 0x3B, 0xA8, 0x01, 0x32, 0x19, 0x91, 0xC6, + 0x32, 0x83, 0x81, 0x8B, 0xBC, 0x84, 0xEF, 0x0C, 0x3C, 0xB0, 0xFE, 0x44, 0x29, 0x3E, 0x9A, 0x07, + 0xD6, 0xA4, 0x50, 0x20, 0x76, 0x20, 0x44, 0x2D, 0xDC, 0x31, 0x81, 0x09, 0xC4, 0x62, 0x0F, 0x83, + 0x00, 0xD2, 0x16, 0xE8, 0x20, 0x8F, 0x72, 0x08, 0xE0, 0x0E, 0xEA, 0x40, 0x04, 0x43, 0x12, 0x39, + 0x8B, 0x60, 0xB4, 0xE1, 0x04, 0x4E, 0x90, 0x83, 0x1A, 0x2E, 0xA1, 0x11, 0x5E, 0x00, 0xE3, 0x58, + 0xFC, 0x6A, 0x12, 0x99, 0x08, 0xF8, 0x09, 0x4B, 0xD8, 0x21, 0x7C, 0x56, 0x40, 0xE0, 0x1F, 0xEC, + 0x10, 0x0B, 0x0D, 0xB8, 0x40, 0x00, 0x23, 0xA8, 0xC6, 0x17, 0x1A, 0x01, 0x16, 0x22, 0x98, 0xA2, + 0x16, 0x08, 0x00, 0x40, 0x2C, 0xDC, 0x41, 0x88, 0x4A, 0x22, 0x44, 0x1A, 0x92, 0x50, 0x05, 0x20, + 0x7E, 0x10, 0x5D, 0xE5, 0x00, 0x55, 0x22, 0xBC, 0xC8, 0x03, 0x15, 0x48, 0x91, 0xDD, 0x44, 0x50, + 0x80, 0x02, 0x5B, 0x18, 0xC4, 0x27, 0x1E, 0xF1, 0x51, 0xBC, 0x11, 0x44, 0x0D, 0xA7, 0x90, 0xC7, + 0x02, 0x02, 0x20, 0x80, 0x00, 0x4C, 0xA1, 0x11, 0x85, 0xB0, 0x0E, 0x75, 0xBE, 0x79, 0x5C, 0x77, + 0x60, 0xC1, 0xBE, 0x07, 0xD1, 0x04, 0x1A, 0x98, 0x00, 0x88, 0x72, 0x65, 0x54, 0x07, 0x76, 0xC0, + 0xC8, 0x31, 0x56, 0xD1, 0x1E, 0xF4, 0xE1, 0xA2, 0x49, 0xEB, 0x32, 0x03, 0x48, 0x19, 0xE1, 0x86, + 0x2D, 0x6C, 0x01, 0xB5, 0xB7, 0x38, 0x82, 0x29, 0xF8, 0xB1, 0x86, 0x01, 0xE0, 0x80, 0x12, 0xA3, + 0x18, 0x85, 0x1D, 0xA6, 0x63, 0x1A, 0x1A, 0x14, 0x60, 0x02, 0xD5, 0x58, 0x41, 0x13, 0xF0, 0xCA, + 0x88, 0x40, 0xFC, 0x60, 0x13, 0xA4, 0x60, 0xC3, 0x47, 0x77, 0xB0, 0x07, 0x15, 0x0F, 0x02, 0x04, + 0x24, 0x00, 0x44, 0x89, 0xD9, 0x00, 0x58, 0x3F, 0x94, 0xA1, 0x08, 0x94, 0xD0, 0x44, 0x18, 0x42, + 0x38, 0x95, 0x4E, 0x10, 0x03, 0x10, 0x73, 0x70, 0x07, 0xFE, 0x1D, 0xA0, 0xB6, 0x8B, 0x52, 0x3C, + 0x02, 0x06, 0xFF, 0x79, 0x82, 0xD3, 0xA2, 0xC0, 0x03, 0x08, 0x4C, 0x61, 0x0A, 0x2A, 0x00, 0xB1, + 0x41, 0x64, 0x51, 0xD1, 0x66, 0x24, 0x22, 0xC1, 0x3D, 0xF0, 0x02, 0x46, 0x5E, 0x31, 0x86, 0x47, + 0xF1, 0xA1, 0x0D, 0x16, 0xD0, 0xC1, 0x28, 0x2C, 0x91, 0xA2, 0x30, 0x50, 0xE2, 0x13, 0xD6, 0x03, + 0xC3, 0x49, 0x04, 0x41, 0x0C, 0x62, 0x14, 0xC3, 0x6F, 0x92, 0xD8, 0x45, 0x06, 0x39, 0x53, 0x07, + 0x33, 0x8C, 0xE8, 0x45, 0xD1, 0x81, 0x01, 0x0C, 0x68, 0x10, 0x81, 0x25, 0x2F, 0x44, 0x1A, 0xD0, + 0x10, 0x46, 0x33, 0x20, 0x91, 0x05, 0x46, 0x5C, 0xC1, 0x0B, 0x4B, 0x9D, 0x08, 0x83, 0x0A, 0xBD, + 0x01, 0x48, 0x3C, 0xB7, 0x05, 0x92, 0x28, 0x05, 0xBC, 0xCC, 0xD0, 0x88, 0x51, 0x30, 0x82, 0x08, + 0x92, 0xD6, 0x0D, 0x31, 0x4E, 0x41, 0x0D, 0x67, 0xA4, 0x2D, 0x11, 0x89, 0x80, 0x84, 0x23, 0xF6, + 0x60, 0x85, 0x25, 0x7C, 0x81, 0x0B, 0x56, 0x8B, 0x02, 0x0D, 0x70, 0xB0, 0xCD, 0x08, 0x28, 0x02, + 0xAF, 0xBE, 0x48, 0xF5, 0xE6, 0x12, 0x9C, 0x05, 0xEC, 0x29, 0x48, 0x0F, 0x63, 0x00, 0x41, 0x0B, + 0x48, 0xB1, 0x88, 0x13, 0x88, 0xC0, 0x93, 0x44, 0x3A, 0xC3, 0x18, 0xD4, 0xA9, 0x86, 0x26, 0xE4, + 0x46, 0x19, 0xB4, 0xE0, 0x04, 0x24, 0x54, 0x41, 0x0B, 0x54, 0x64, 0x23, 0x1B, 0xEA, 0x50, 0x47, + 0x12, 0x2A, 0x20, 0x8A, 0x58, 0x18, 0xE0, 0x06, 0x71, 0x40, 0x02, 0x16, 0xF0, 0x30, 0x05, 0x3C, + 0xAC, 0x82, 0x21, 0xD9, 0xC6, 0x85, 0x33, 0x1C, 0xB1, 0x05, 0x46, 0x58, 0xC1, 0x0D, 0xFF, 0x75, + 0xC8, 0x31, 0xF4, 0x20, 0xA6, 0x1E, 0xE0, 0x82, 0x13, 0x3F, 0x48, 0x01, 0x15, 0xD0, 0x85, 0xB1, + 0x30, 0xF4, 0xBA, 0x11, 0x61, 0x50, 0x03, 0x23, 0xFE, 0xCC, 0xA0, 0x8A, 0x66, 0xEC, 0x41, 0x09, + 0xD8, 0xC0, 0x47, 0x3F, 0xFA, 0xA1, 0x8F, 0x95, 0xCB, 0xC3, 0x10, 0x26, 0x40, 0x87, 0x14, 0x2A, + 0x30, 0x8E, 0x77, 0xAC, 0xE3, 0x1D, 0xEF, 0x98, 0xC7, 0x2D, 0x10, 0xBE, 0x0B, 0x52, 0x6C, 0xDB, + 0xE1, 0x3B, 0xAB, 0x48, 0x32, 0x04, 0x71, 0x86, 0x47, 0x48, 0xC2, 0x7F, 0x4C, 0xB0, 0xC0, 0xC6, + 0xBF, 0x32, 0x1F, 0x2B, 0x30, 0x69, 0xE4, 0x8C, 0x28, 0x44, 0x16, 0x8C, 0xA1, 0x0A, 0x64, 0xD4, + 0xC3, 0x1E, 0xF9, 0xF0, 0x87, 0xD6, 0xB5, 0xAE, 0x8F, 0x24, 0xCC, 0x00, 0x1D, 0x26, 0x28, 0x47, + 0x3E, 0xEC, 0x11, 0x8F, 0x78, 0xCC, 0xA3, 0x21, 0xAB, 0x80, 0x84, 0x13, 0x74, 0x01, 0x89, 0x2B, + 0x0C, 0xC2, 0xAE, 0x78, 0x5D, 0x88, 0x2F, 0x30, 0x51, 0x06, 0x3F, 0x7C, 0x02, 0x14, 0xC1, 0xD8, + 0x84, 0x11, 0x20, 0xD1, 0x24, 0x4D, 0xC0, 0xC1, 0x0D, 0x60, 0xE8, 0x35, 0x28, 0xCA, 0x63, 0x89, + 0x31, 0x78, 0x82, 0x16, 0xDB, 0x28, 0x7B, 0xD6, 0xF9, 0xC1, 0xF8, 0x95, 0x97, 0xC3, 0x00, 0x33, + 0x68, 0x00, 0x3D, 0xFC, 0x91, 0x8F, 0xB2, 0xB3, 0xA3, 0x21, 0x97, 0xD8, 0x6F, 0x20, 0x20, 0xD1, + 0x05, 0x39, 0x84, 0x3C, 0xD6, 0x12, 0x69, 0xC5, 0x25, 0xAA, 0xF3, 0x08, 0x50, 0xCC, 0xC2, 0x79, + 0xA4, 0x20, 0x56, 0x1E, 0x1E, 0x31, 0xC6, 0x20, 0xA4, 0x32, 0xCC, 0x94, 0x48, 0xC4, 0x1E, 0x38, + 0xB1, 0x8D, 0x7A, 0xC4, 0x03, 0x1F, 0xFE, 0x60, 0xBC, 0xEE, 0xFB, 0x61, 0x88, 0x06, 0x70, 0x63, + 0x1F, 0xFE, 0xD0, 0x07, 0xD9, 0x89, 0xD1, 0x10, 0x4D, 0x04, 0xE2, 0x04, 0x8B, 0x98, 0x58, 0x5D, + 0xD5, 0xA0, 0xE7, 0x87, 0x60, 0xE2, 0x12, 0x72, 0x18, 0x84, 0x1F, 0x28, 0xC1, 0x06, 0x4F, 0x3C, + 0x6F, 0x07, 0x0E, 0x60, 0x01, 0x19, 0xA0, 0xFE, 0x10, 0x83, 0x20, 0xF0, 0xA0, 0x9F, 0xA6, 0x0F, + 0x85, 0x17, 0x88, 0x81, 0x87, 0x67, 0xD8, 0x03, 0x1E, 0xC0, 0xD7, 0x3D, 0x3F, 0x72, 0xBF, 0x8F, + 0xF5, 0xFB, 0x63, 0x1F, 0xF6, 0x38, 0x3B, 0xE6, 0xD1, 0x50, 0x83, 0x45, 0x38, 0x82, 0x0C, 0x85, + 0x00, 0x43, 0x84, 0x2C, 0x72, 0x08, 0x3B, 0x50, 0x81, 0x0C, 0x7E, 0x20, 0x07, 0x1F, 0xD0, 0x02, + 0xBA, 0x20, 0x0E, 0x9E, 0x40, 0x20, 0x32, 0x40, 0x06, 0x72, 0xE0, 0x06, 0x4B, 0x40, 0x03, 0x90, + 0x80, 0x0B, 0xD3, 0x40, 0x75, 0xC5, 0x40, 0x0C, 0x53, 0x10, 0x0D, 0xF6, 0x70, 0x0F, 0xEB, 0xA7, + 0x7E, 0x5A, 0xC7, 0x78, 0x94, 0x67, 0x0F, 0x97, 0xD7, 0x10, 0x8C, 0xA0, 0x05, 0x3E, 0x40, 0x0B, + 0x90, 0xC0, 0x06, 0x75, 0xA0, 0x06, 0x6E, 0x00, 0x07, 0x17, 0x11, 0x06, 0xC3, 0x52, 0x08, 0x5D, + 0x10, 0x02, 0x1B, 0x00, 0x08, 0xD4, 0x40, 0x0D, 0x9E, 0xC0, 0x02, 0x3B, 0x40, 0x09, 0xB9, 0xA0, + 0x08, 0xE1, 0x81, 0x35, 0x8E, 0x80, 0x54, 0x9C, 0x40, 0x0D, 0xB4, 0x80, 0x05, 0xEF, 0x60, 0x0F, + 0xB8, 0x97, 0x7B, 0xEA, 0xB7, 0x7E, 0xFD, 0x90, 0x0F, 0xF0, 0xB0, 0x3F, 0x9F, 0xA0, 0x0B, 0xC2, + 0x10, 0x0A, 0x89, 0x60, 0x07, 0xFB, 0x77, 0x11, 0x6F, 0xF0, 0x02, 0x5D, 0xB0, 0x3A, 0x3A, 0x90, + 0x02, 0x3E, 0xD0, 0x3C, 0xB4, 0xA0, 0x05, 0x72, 0x20, 0x09, 0x89, 0x10, 0x7D, 0x8C, 0xC0, 0x08, + 0x1E, 0x95, 0x7F, 0x7B, 0x20, 0x0C, 0xD6, 0x34, 0x07, 0xF8, 0x70, 0x0F, 0xFA, 0x60, 0x84, 0x1A, + 0xB8, 0x0F, 0xF7, 0xF0, 0x81, 0x98, 0x07, 0x0D, 0xCE, 0x20, 0x0C, 0x60, 0x08, 0x78, 0xCD, 0x07, + 0x11, 0x8A, 0x80, 0x03, 0x41, 0x60, 0x07, 0x8A, 0xD0, 0x05, 0x2D, 0x40, 0x02, 0x5E, 0x30, 0x0D, + 0x4C, 0x50, 0x03, 0x6D, 0xC0, 0x06, 0xFE, 0x36, 0x20, 0x02, 0x5A, 0x30, 0x24, 0x6A, 0x90, 0x35, + 0xEC, 0x74, 0x2C, 0xAE, 0x10, 0x04, 0xE3, 0x70, 0x0F, 0xC0, 0xE7, 0x86, 0x48, 0x88, 0x0F, 0xF6, + 0x60, 0x0D, 0xFB, 0x03, 0x09, 0x8B, 0x40, 0x0A, 0xA0, 0xF0, 0x08, 0x6A, 0x50, 0x04, 0x37, 0x74, + 0x11, 0x98, 0xE0, 0x07, 0x1B, 0xA5, 0x07, 0x85, 0xD0, 0x03, 0x29, 0x60, 0x01, 0x87, 0x56, 0x03, + 0x71, 0xE0, 0x09, 0x46, 0x70, 0x02, 0x1B, 0x20, 0x09, 0x6A, 0xA0, 0x49, 0xA4, 0x40, 0x0A, 0x72, + 0x40, 0x09, 0x16, 0x33, 0x06, 0xD8, 0x50, 0x0F, 0xF9, 0xB0, 0x0F, 0x6D, 0xB8, 0x75, 0xFA, 0x80, + 0x0F, 0x66, 0x07, 0x11, 0x8F, 0xC0, 0x04, 0x1D, 0xE0, 0x08, 0xA3, 0x90, 0x7F, 0xAF, 0xB1, 0x23, + 0xDB, 0xD2, 0x3A, 0x82, 0x20, 0x08, 0x83, 0xB0, 0x03, 0x2D, 0xF0, 0x80, 0xB4, 0xA0, 0x0B, 0x40, + 0x18, 0x07, 0x6D, 0x60, 0x0C, 0xC5, 0x80, 0x04, 0xE8, 0x53, 0x07, 0x8D, 0x60, 0x31, 0x70, 0xD0, + 0x05, 0xB6, 0x70, 0x75, 0xF8, 0xF0, 0x8B, 0xC0, 0x08, 0x87, 0x66, 0xF7, 0x0B, 0xC6, 0xF8, 0x03, + 0x35, 0x00, 0x09, 0x9F, 0xE0, 0x07, 0xA1, 0xA3, 0x82, 0x11, 0x91, 0x0C, 0xBE, 0x90, 0x0B, 0xAB, + 0x60, 0x14, 0x8B, 0x05, 0x03, 0x38, 0xE0, 0x06, 0x82, 0x00, 0x07, 0x83, 0x60, 0x2C, 0x6B, 0x34, + 0x0B, 0x2D, 0xE3, 0x3C, 0x33, 0xC8, 0x04, 0x3F, 0xE0, 0x85, 0x40, 0xC6, 0x3E, 0x72, 0x80, 0x0A, + 0x57, 0x77, 0x0F, 0xF8, 0x80, 0x0F, 0xF4, 0x30, 0x91, 0xEB, 0xB0, 0x0E, 0xEC, 0x08, 0x11, 0xB9, + 0x80, 0x06, 0x5E, 0x00, 0x0A, 0xDE, 0x05, 0x06, 0xB7, 0x05, 0x11, 0xBE, 0x00, 0x0C, 0x2F, 0xC8, + 0x01, 0x8D, 0x90, 0x0B, 0x50, 0x00, 0x02, 0x20, 0xF0, 0x02, 0x66, 0x00, 0x2F, 0x7A, 0xA0, 0x09, + 0xA3, 0xC0, 0x06, 0x46, 0x00, 0xFE, 0x04, 0x7C, 0x40, 0x0A, 0xB3, 0xB0, 0x0C, 0xC2, 0x80, 0x0B, + 0x7C, 0x20, 0x93, 0xC8, 0xA6, 0x09, 0x7A, 0x00, 0x07, 0x72, 0x50, 0x8E, 0xF6, 0x80, 0x73, 0xDC, + 0x50, 0x0E, 0xE5, 0xF0, 0x0C, 0xD1, 0x70, 0x91, 0x10, 0x91, 0x6A, 0x18, 0x94, 0x07, 0x50, 0x70, + 0x05, 0xA0, 0xD7, 0x10, 0x21, 0x29, 0x09, 0x50, 0x20, 0x03, 0x6C, 0x50, 0x0A, 0x54, 0x20, 0x03, + 0x2D, 0x60, 0x23, 0x51, 0x20, 0x1E, 0x76, 0x20, 0x09, 0x3D, 0xD0, 0x01, 0x1A, 0xF0, 0x00, 0xCF, + 0xC2, 0x07, 0xA1, 0xC0, 0x24, 0xAE, 0x00, 0x0A, 0xEA, 0x23, 0x07, 0x7A, 0xE0, 0x6A, 0xBD, 0xF8, + 0x0E, 0xE3, 0xC0, 0x0D, 0xB1, 0x10, 0x0B, 0xB0, 0x80, 0x0D, 0x9A, 0x18, 0x11, 0xAB, 0x00, 0x0D, + 0x68, 0x93, 0x07, 0x43, 0xB0, 0x03, 0x57, 0x10, 0x77, 0x06, 0xE1, 0x0B, 0xBB, 0x60, 0x96, 0x89, + 0x50, 0x31, 0x52, 0xE9, 0x1E, 0x2F, 0xB0, 0x04, 0x7E, 0x30, 0x26, 0x64, 0x40, 0x06, 0x40, 0xE0, + 0x25, 0x12, 0x20, 0x4A, 0xAE, 0xB0, 0x21, 0x7B, 0xC1, 0x02, 0x59, 0xA0, 0x06, 0x72, 0x20, 0x04, + 0xED, 0x70, 0x0F, 0xCF, 0x00, 0x0B, 0xA9, 0x90, 0x0A, 0x7D, 0x00, 0x0B, 0xCC, 0x30, 0x11, 0xB9, + 0x80, 0x0B, 0x9E, 0xC8, 0x06, 0x32, 0x20, 0x03, 0x29, 0x26, 0x11, 0xD2, 0x10, 0x98, 0xB3, 0x10, + 0x0A, 0x46, 0xB0, 0x01, 0x8E, 0x70, 0x96, 0x57, 0x59, 0x3D, 0x85, 0x10, 0x2A, 0x5D, 0x50, 0x0A, + 0x95, 0xD2, 0x03, 0x36, 0xA0, 0x03, 0x64, 0x60, 0x09, 0x72, 0x20, 0x03, 0x22, 0xC0, 0x01, 0x2F, + 0x40, 0x04, 0x56, 0x30, 0x04, 0x58, 0xD0, 0x0E, 0xE3, 0x00, 0x0B, 0x93, 0xD0, 0x07, 0x7D, 0x30, + 0x09, 0x93, 0xC0, 0x05, 0x13, 0xE1, 0x08, 0x4E, 0xE0, 0x89, 0x54, 0x00, 0x02, 0x47, 0xE0, 0x97, + 0x06, 0x21, 0x0D, 0xAD, 0xFE, 0xB9, 0x07, 0x5E, 0xE0, 0x04, 0x46, 0xE0, 0x09, 0xCD, 0x90, 0x36, + 0x64, 0xD0, 0x79, 0xDF, 0xD5, 0x05, 0x75, 0x10, 0x75, 0x8C, 0x30, 0x08, 0xE6, 0x29, 0x85, 0x59, + 0x10, 0x03, 0x32, 0x10, 0x04, 0x23, 0xB4, 0x05, 0x38, 0x00, 0x0B, 0xED, 0x00, 0x0B, 0x7D, 0x20, + 0x06, 0x62, 0x70, 0x9F, 0x2B, 0x80, 0x03, 0x11, 0x97, 0x10, 0x68, 0x00, 0x04, 0x19, 0x34, 0x04, + 0x21, 0x90, 0x06, 0xE4, 0x44, 0x51, 0x42, 0xA0, 0x02, 0x63, 0x00, 0x09, 0x04, 0xC6, 0x07, 0x36, + 0x60, 0x03, 0x2C, 0xC0, 0x02, 0x3D, 0xB0, 0x2E, 0x75, 0xF0, 0x20, 0x61, 0xB0, 0x05, 0xA0, 0x33, + 0x66, 0xD7, 0xD3, 0x1C, 0x56, 0x00, 0x06, 0x41, 0x80, 0x05, 0xCF, 0xF0, 0x0C, 0xF7, 0x99, 0x03, + 0x39, 0xE0, 0x02, 0x18, 0x90, 0x00, 0x28, 0x14, 0x11, 0x85, 0x00, 0x08, 0x72, 0x00, 0x58, 0x50, + 0x30, 0x04, 0xD8, 0xF9, 0x97, 0xDE, 0x20, 0x0B, 0x7B, 0x20, 0x04, 0x38, 0xD0, 0x08, 0x8D, 0x00, + 0x09, 0x5A, 0xC0, 0x01, 0x29, 0x00, 0x47, 0x32, 0xB0, 0x2E, 0x8F, 0x70, 0x09, 0x8A, 0x00, 0x78, + 0x44, 0xC0, 0x03, 0xC5, 0xB3, 0x26, 0x44, 0x20, 0x3F, 0x26, 0x24, 0x06, 0x93, 0x20, 0x06, 0x22, + 0x9A, 0x03, 0x18, 0xC0, 0x00, 0x16, 0xD0, 0x02, 0x11, 0x50, 0x02, 0x4F, 0xA9, 0x10, 0x37, 0xAA, + 0x4E, 0x75, 0x90, 0x06, 0x8A, 0x90, 0x87, 0x0D, 0x21, 0x0D, 0xC1, 0xF0, 0x4B, 0x38, 0x20, 0x07, + 0x8D, 0x30, 0x06, 0x57, 0x70, 0x05, 0x72, 0xF0, 0x08, 0x96, 0xA0, 0x09, 0x74, 0x52, 0x14, 0x8A, + 0x00, 0x4F, 0x69, 0xC2, 0x4D, 0x11, 0x10, 0xA7, 0x5A, 0x85, 0x01, 0x55, 0x90, 0x03, 0x2B, 0xB0, + 0x02, 0x53, 0x40, 0x07, 0x5C, 0xA0, 0x04, 0x7D, 0xD1, 0x4D, 0x34, 0xC0, 0x51, 0x0D, 0x11, 0x98, + 0x92, 0x70, 0x82, 0xFE, 0x6E, 0xF0, 0xA2, 0x09, 0x91, 0x0C, 0xC0, 0xD0, 0x08, 0x45, 0x10, 0xA6, + 0x7E, 0xF8, 0x2A, 0x06, 0x71, 0x1B, 0x9E, 0x46, 0x03, 0x92, 0xAA, 0x02, 0x73, 0x30, 0x07, 0x58, + 0xF0, 0x05, 0x84, 0xA0, 0x5C, 0x87, 0xD0, 0x0A, 0x8E, 0x00, 0x05, 0x45, 0xF0, 0x02, 0x1F, 0x40, + 0x04, 0xFD, 0x39, 0x10, 0xDD, 0xE0, 0x0A, 0xFF, 0xD7, 0x1C, 0x86, 0xAA, 0x10, 0xC3, 0xE0, 0x33, + 0x59, 0x00, 0x03, 0x4D, 0x20, 0x11, 0x98, 0xA0, 0x83, 0x95, 0x70, 0xA8, 0x9F, 0x95, 0x1D, 0x38, + 0x30, 0x06, 0x8C, 0xB0, 0x10, 0xBC, 0xE0, 0x0D, 0x36, 0x40, 0x01, 0x41, 0x10, 0x5E, 0x1D, 0x71, + 0x0E, 0x9F, 0x50, 0x04, 0x51, 0xA0, 0x23, 0xAB, 0x70, 0xAC, 0xD4, 0x55, 0x11, 0xE5, 0x34, 0x08, + 0x1F, 0xC0, 0x01, 0x4E, 0x60, 0x09, 0x8E, 0xFA, 0x0F, 0xAD, 0x60, 0x0E, 0x5A, 0x90, 0x33, 0x38, + 0x00, 0x07, 0xF4, 0xC8, 0x11, 0xDE, 0xF0, 0x08, 0x3C, 0x10, 0x74, 0x02, 0x71, 0x08, 0x97, 0x50, + 0x07, 0xBD, 0xC0, 0x12, 0x15, 0x91, 0x6D, 0x34, 0x82, 0x3B, 0xAF, 0x70, 0x0C, 0x8F, 0xDA, 0x0B, + 0xA5, 0xB0, 0x03, 0x06, 0x12, 0x1B, 0x24, 0xD1, 0x0D, 0x83, 0x40, 0x04, 0xF0, 0xFA, 0x0F, 0x87, + 0x10, 0xA4, 0x8A, 0x00, 0x2E, 0x18, 0xD1, 0x0B, 0xBB, 0x40, 0x06, 0x43, 0xD0, 0x3A, 0x62, 0x9A, + 0x0B, 0x04, 0xC1, 0x08, 0x69, 0xD0, 0x6D, 0xC1, 0x04, 0x19, 0x6E, 0xE1, 0x11, 0xD0, 0xD0, 0x08, + 0x1F, 0x72, 0x08, 0x87, 0xE0, 0x07, 0x6F, 0x90, 0xAD, 0x19, 0x01, 0x0C, 0x7C, 0x00, 0x02, 0x66, + 0x72, 0x01, 0x24, 0xF0, 0x03, 0x8E, 0xB0, 0x0A, 0x98, 0x50, 0x08, 0x76, 0x90, 0x05, 0x95, 0x99, + 0x09, 0x53, 0xF1, 0x06, 0x4D, 0xE0, 0x07, 0xE8, 0xC1, 0x11, 0xDA, 0x00, 0x0D, 0x9F, 0x30, 0x08, + 0x4D, 0x93, 0xFE, 0x23, 0x1E, 0xC1, 0x09, 0x3E, 0x50, 0x2B, 0x43, 0xD0, 0x02, 0x22, 0x20, 0x03, + 0x69, 0x60, 0x07, 0x77, 0x53, 0x07, 0x7E, 0x80, 0x5A, 0x7F, 0xD0, 0x04, 0x30, 0x00, 0x06, 0x43, + 0xD1, 0x11, 0xE1, 0x70, 0x96, 0x8A, 0x80, 0x1F, 0x8B, 0x61, 0x24, 0xAD, 0xA0, 0xAE, 0x17, 0x71, + 0x0B, 0xD3, 0x80, 0x36, 0xA0, 0x10, 0x86, 0x5D, 0xB0, 0x05, 0x59, 0x30, 0x04, 0x7D, 0x78, 0x24, + 0x87, 0xA0, 0x26, 0x8C, 0x40, 0xAE, 0x1B, 0x71, 0x0D, 0xCB, 0xF0, 0x89, 0x8D, 0x03, 0x1B, 0x01, + 0xF2, 0x08, 0x94, 0x20, 0x0D, 0xBC, 0x90, 0x11, 0xDF, 0x90, 0x39, 0x5D, 0x0B, 0x0A, 0x63, 0x1A, + 0x04, 0x41, 0x40, 0xA0, 0x04, 0x71, 0xB5, 0x70, 0x90, 0xAA, 0x0E, 0xB1, 0x0A, 0xBE, 0xA9, 0x2B, + 0x08, 0x72, 0x08, 0x6F, 0x20, 0x24, 0xA0, 0xE0, 0x0D, 0x1B, 0xD1, 0x09, 0x9C, 0x40, 0x0B, 0xC1, + 0xD0, 0x0C, 0xCB, 0xD0, 0x19, 0x31, 0x30, 0x06, 0x05, 0x01, 0x4F, 0x2D, 0xE1, 0x0B, 0xAB, 0xF0, + 0x06, 0x3C, 0x40, 0x03, 0x8B, 0xD1, 0x0A, 0xC0, 0x80, 0x2A, 0xE0, 0xA0, 0x11, 0xAB, 0x20, 0x0B, + 0x72, 0x30, 0x16, 0xC1, 0x00, 0x0E, 0x13, 0x35, 0x04, 0x20, 0x50, 0x65, 0x02, 0x81, 0x09, 0x8A, + 0x41, 0x12, 0xDA, 0x50, 0xB6, 0xFF, 0x60, 0x1D, 0x95, 0x94, 0x0E, 0x1A, 0xC1, 0x0A, 0xAA, 0x10, + 0x08, 0x3B, 0xD0, 0x70, 0x9A, 0xD0, 0x0A, 0x03, 0x01, 0x0D, 0x64, 0x70, 0x05, 0x97, 0x60, 0x12, + 0x82, 0x10, 0x06, 0xA8, 0xB5, 0x11, 0x68, 0x01, 0x0C, 0x53, 0x81, 0xB7, 0x72, 0xAB, 0xAA, 0xB9, + 0xC0, 0x09, 0x6D, 0xA0, 0x04, 0x47, 0x90, 0x06, 0x97, 0xA0, 0xAF, 0x04, 0x01, 0x0D, 0x8C, 0x50, + 0x06, 0x27, 0x55, 0x06, 0xD7, 0x21, 0xB2, 0x90, 0x2B, 0x0D, 0xDD, 0xA0, 0xB5, 0x12, 0x71, 0x0B, + 0xE2, 0xD4, 0xB0, 0x0C, 0x4F, 0x21, 0x10, 0x97, 0xC0, 0x08, 0x75, 0x40, 0xBA, 0x15, 0xD1, 0x0B, + 0x9A, 0xC0, 0x09, 0x8E, 0x90, 0x0B, 0x9A, 0x20, 0x16, 0x8C, 0x90, 0xAC, 0x07, 0x51, 0x14, 0xD4, + 0x31, 0x21, 0x39, 0x82, 0x09, 0xAB, 0xB0, 0x0B, 0xAE, 0x00, 0x0D, 0x94, 0x81, 0x46, 0xCD, 0x30, + 0x0A, 0x41, 0x0B, 0x17, 0xB2, 0x90, 0x08, 0xF3, 0x2B, 0x71, 0xBC, 0x10, 0x12, 0x88, 0x0A, 0x0C, + 0xBE, 0xA0, 0x09, 0x8E, 0x70, 0xBE, 0xAB, 0xE0, 0xBD, 0x0A, 0xD1, 0x0A, 0xFB, 0xF1, 0xB5, 0xFA, + 0xA3, 0x08, 0xCB, 0x20, 0x37, 0xD4, 0x1B, 0x11, 0x29, 0x2B, 0x0D, 0xC8, 0x9B, 0x0E, 0x4D, 0xCB, + 0xB7, 0x12, 0xF1, 0x0A, 0x45, 0x91, 0xC1, 0x11, 0x71, 0x08, 0x99, 0x70, 0xAF, 0x69, 0x62, 0x5F, + 0xB7, 0x00, 0xBB, 0x17, 0x41, 0xBD, 0x18, 0x22, 0xBF, 0x4A, 0x11, 0x54, 0xB9, 0x81, 0xB7, 0x55, + 0x3A, 0x12, 0xC9, 0xD0, 0x0B, 0x27, 0x3C, 0x10, 0xC3, 0x30, 0x27, 0xB2, 0x51, 0xBB, 0x2F, 0x5C, + 0xC3, 0xFF, 0x90, 0x0E, 0x5D, 0xCB, 0xB1, 0x03, 0x71, 0x8F, 0x2E, 0x6C, 0xC3, 0x39, 0x81, 0x21, + 0xAD, 0xB5, 0xBF, 0xFF, 0xA0, 0x9D, 0xBB, 0x20, 0xC4, 0x3E, 0x4C, 0x12, 0xA8, 0xD6, 0x0D, 0x06, + 0xFC, 0x0D, 0xCD, 0x20, 0x0B, 0x37, 0x71, 0xC4, 0x3E, 0x9C, 0x46, 0xE0, 0xF0, 0xC0, 0x50, 0xAC, + 0x14, 0xAA, 0x52, 0xC5, 0x58, 0x9C, 0xC5, 0x5A, 0xBC, 0xC5, 0x5C, 0xDC, 0xC5, 0x5E, 0xFC, 0xC5, + 0x60, 0x1C, 0xC6, 0x02, 0x11, 0x10, 0x00, 0x3B, +}; + +#ifdef ROMFS_DIRENTRY_HEAD + static const ROMFS_DIRENTRY image_chibios_dir = { 0, 0, ROMFS_DIRENTRY_HEAD, "chibios.gif", 4840, image_chibios }; + #undef ROMFS_DIRENTRY_HEAD + #define ROMFS_DIRENTRY_HEAD &image_chibios_dir +#endif diff --git a/demos/applications/combo/romfs_img_ugfx.h b/demos/applications/combo/romfs_img_ugfx.h new file mode 100644 index 00000000..cfbd1026 --- /dev/null +++ b/demos/applications/combo/romfs_img_ugfx.h @@ -0,0 +1,304 @@ +/** + * This file was generated from "romfs_img_ugfx.gif" using... + * + * file2c -dcs romfs_img_ugfx.gif romfs_img_ugfx.h + * + */ +static const char romfs_img_ugfx[] = { + 0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0xAE, 0x00, 0x32, 0x00, 0xE7, 0xFF, 0x00, 0x16, 0x00, 0xFF, + 0x0E, 0x30, 0x52, 0x03, 0x34, 0x55, 0x08, 0x37, 0x59, 0x16, 0x35, 0x58, 0x0E, 0x3A, 0x5C, 0x02, + 0x3E, 0x64, 0x13, 0x3B, 0x63, 0x07, 0x3D, 0x76, 0x1C, 0x3A, 0x5D, 0x18, 0x3C, 0x70, 0x21, 0x3A, + 0x6A, 0x0E, 0x3F, 0x79, 0x00, 0x43, 0x7B, 0x19, 0x3E, 0x6C, 0x1B, 0x3E, 0x72, 0x0F, 0x43, 0x6A, + 0x00, 0x47, 0x74, 0x02, 0x45, 0x84, 0x13, 0x41, 0x7B, 0x12, 0x44, 0x71, 0x16, 0x42, 0x82, 0x06, + 0x48, 0x7B, 0x1F, 0x42, 0x71, 0x16, 0x44, 0x78, 0x1F, 0x44, 0x6D, 0x1B, 0x45, 0x85, 0x0E, 0x48, + 0x8E, 0x19, 0x48, 0x76, 0x00, 0x4F, 0x88, 0x00, 0x4E, 0x93, 0x1E, 0x49, 0x6F, 0x0F, 0x4C, 0x7F, + 0x27, 0x46, 0x7C, 0x02, 0x4E, 0xA0, 0x14, 0x4B, 0x8B, 0x14, 0x4C, 0x86, 0x15, 0x4A, 0x97, 0x21, + 0x48, 0x89, 0x40, 0x40, 0x81, 0x1E, 0x4B, 0x79, 0x16, 0x4B, 0x92, 0x27, 0x4A, 0x74, 0x05, 0x52, + 0x8B, 0x29, 0x4A, 0x79, 0x16, 0x4F, 0x82, 0x15, 0x50, 0x7D, 0x0D, 0x51, 0x9E, 0x24, 0x4D, 0x82, + 0x00, 0x54, 0xA9, 0x23, 0x4F, 0x7D, 0x1E, 0x4F, 0x96, 0x0D, 0x55, 0x8E, 0x10, 0x53, 0x99, 0x1C, + 0x52, 0x86, 0x0E, 0x57, 0x89, 0x11, 0x55, 0x94, 0x00, 0x57, 0xB6, 0x1C, 0x54, 0x82, 0x30, 0x4E, + 0x84, 0x15, 0x52, 0xAC, 0x00, 0x5B, 0x99, 0x27, 0x52, 0x80, 0x31, 0x50, 0x81, 0x08, 0x58, 0xAB, + 0x23, 0x52, 0x99, 0x2A, 0x52, 0x87, 0x04, 0x58, 0xBF, 0x15, 0x58, 0x91, 0x23, 0x55, 0x8F, 0x1A, + 0x56, 0xA3, 0x23, 0x57, 0x8B, 0x00, 0x5C, 0xC1, 0x04, 0x5C, 0xB6, 0x29, 0x55, 0x9D, 0x36, 0x54, + 0x85, 0x2F, 0x56, 0x8C, 0x2E, 0x57, 0x86, 0x0C, 0x5F, 0x9E, 0x0F, 0x5D, 0xA9, 0x2C, 0x55, 0xAA, + 0x1D, 0x5C, 0x96, 0x11, 0x5D, 0xB0, 0x00, 0x63, 0xA7, 0x0E, 0x61, 0x9A, 0x11, 0x5F, 0xA5, 0x21, + 0x5B, 0xA2, 0x20, 0x5C, 0x9D, 0x00, 0x62, 0xC1, 0x1E, 0x5E, 0x92, 0x23, 0x5B, 0xA9, 0x2C, 0x5B, + 0x96, 0x2B, 0x5C, 0x91, 0x34, 0x5A, 0x90, 0x33, 0x5B, 0x8B, 0x18, 0x5E, 0xBE, 0x03, 0x67, 0xAD, + 0x24, 0x60, 0x9A, 0x1D, 0x61, 0xB5, 0x0C, 0x66, 0xBF, 0x19, 0x65, 0xA5, 0x1F, 0x61, 0xBB, 0x31, + 0x5F, 0x9A, 0x0E, 0x66, 0xC6, 0x3A, 0x5E, 0x95, 0x2B, 0x60, 0xAE, 0x56, 0x54, 0xAB, 0x0E, 0x68, + 0xBA, 0x20, 0x64, 0xB0, 0x00, 0x6E, 0xB9, 0x3D, 0x5F, 0x9C, 0x33, 0x63, 0x98, 0x2A, 0x67, 0x9B, + 0x37, 0x63, 0x9F, 0x2E, 0x65, 0xA6, 0x26, 0x66, 0xBA, 0x40, 0x61, 0x9F, 0x00, 0x72, 0xBD, 0x16, + 0x6D, 0xB2, 0x27, 0x68, 0xB6, 0x3A, 0x64, 0xA7, 0x25, 0x6A, 0xAA, 0x2F, 0x68, 0xA2, 0x40, 0x64, + 0x9B, 0x1B, 0x6B, 0xC5, 0x1A, 0x6C, 0xBF, 0x3B, 0x67, 0xA3, 0x2D, 0x68, 0xC4, 0x34, 0x69, 0xAB, + 0x2C, 0x6A, 0xBE, 0x3A, 0x69, 0x9F, 0x39, 0x6A, 0x9A, 0x1F, 0x6F, 0xBC, 0x21, 0x6E, 0xC8, 0x40, + 0x68, 0xAC, 0x22, 0x6F, 0xC3, 0x00, 0x81, 0x80, 0x2E, 0x6F, 0xB0, 0x11, 0x76, 0xC2, 0x14, 0x74, + 0xCD, 0x00, 0x7B, 0xCC, 0x16, 0x74, 0xD4, 0x32, 0x6F, 0xBD, 0x2E, 0x72, 0xAC, 0x43, 0x6D, 0xAA, + 0x3A, 0x70, 0xAC, 0x3C, 0x6F, 0xB2, 0x33, 0x71, 0xB9, 0x40, 0x70, 0xA0, 0x42, 0x6F, 0xA5, 0x2A, + 0x73, 0xC7, 0x28, 0x75, 0xBC, 0x48, 0x6D, 0xB8, 0x2B, 0x75, 0xC3, 0x39, 0x73, 0xC2, 0x0C, 0x7E, + 0xDD, 0x1E, 0x7B, 0xC7, 0x38, 0x75, 0xBD, 0x44, 0x74, 0xA4, 0x3F, 0x75, 0xB1, 0x00, 0x84, 0xDC, + 0x39, 0x77, 0xB9, 0x43, 0x75, 0xB8, 0x24, 0x7C, 0xCF, 0x12, 0x81, 0xD3, 0x4B, 0x74, 0xB2, 0x32, + 0x79, 0xCE, 0x32, 0x7A, 0xC8, 0x3D, 0x77, 0xC6, 0x32, 0x7B, 0xC2, 0x4A, 0x76, 0xAD, 0x4A, 0x75, + 0xBC, 0x18, 0x82, 0xDB, 0x3F, 0x79, 0xC2, 0x52, 0x76, 0xA8, 0x00, 0x89, 0xE1, 0x2E, 0x80, 0xB3, + 0x37, 0x7B, 0xD0, 0x5C, 0x74, 0xAE, 0x48, 0x79, 0xBD, 0x47, 0x7A, 0xB7, 0x37, 0x7D, 0xCC, 0x2C, + 0x81, 0xCE, 0x51, 0x79, 0xB8, 0x2F, 0x80, 0xDA, 0x2E, 0x81, 0xD5, 0x4C, 0x7C, 0xC0, 0x3F, 0x80, + 0xC2, 0x3B, 0x80, 0xCE, 0x3A, 0x81, 0xC9, 0x46, 0x7F, 0xC9, 0x31, 0x85, 0xD2, 0x60, 0x7B, 0xAF, + 0x55, 0x7D, 0xBC, 0x27, 0x87, 0xE1, 0x3F, 0x82, 0xD1, 0x4D, 0x80, 0xBD, 0x27, 0x89, 0xDC, 0x5C, + 0x7D, 0xB7, 0x15, 0x8E, 0xE6, 0x5B, 0x7F, 0xB1, 0x3F, 0x85, 0xCD, 0x56, 0x82, 0xAD, 0x55, 0x82, + 0xBA, 0x39, 0x88, 0xDC, 0x38, 0x89, 0xD7, 0x44, 0x86, 0xD5, 0x43, 0x87, 0xD0, 0x7F, 0x81, 0x7E, + 0x46, 0x8A, 0xD2, 0x52, 0x88, 0xC5, 0x40, 0x8C, 0xE1, 0x48, 0x8B, 0xD4, 0x3F, 0x8D, 0xDC, 0x4A, + 0x8B, 0xDA, 0x5B, 0x8C, 0xB7, 0x4B, 0x8E, 0xD7, 0x44, 0x90, 0xDE, 0x4D, 0x90, 0xD9, 0x5D, 0x8E, + 0xCC, 0x60, 0x8E, 0xC7, 0x83, 0x7F, 0xFE, 0x50, 0x92, 0xDB, 0x48, 0x94, 0xE2, 0x53, 0x94, 0xDD, + 0x5B, 0x93, 0xD8, 0x54, 0x98, 0xDA, 0x56, 0x97, 0xE1, 0x5F, 0x96, 0xDB, 0x66, 0x96, 0xD5, 0x5A, + 0x9A, 0xE4, 0x63, 0x9A, 0xCB, 0x62, 0x99, 0xDE, 0x59, 0x9C, 0xDF, 0x5E, 0x9D, 0xE8, 0x54, 0xA0, + 0xE8, 0x5C, 0x9F, 0xE2, 0x6C, 0x9D, 0xD6, 0x67, 0x9E, 0xE3, 0x5F, 0xA1, 0xE5, 0x67, 0xA1, 0xDF, + 0x69, 0xA0, 0xE5, 0x62, 0xA3, 0xE7, 0x64, 0xA5, 0xE9, 0x66, 0xA8, 0xEC, 0x6D, 0xA7, 0xE5, 0x75, + 0xA7, 0xDF, 0x69, 0xAA, 0xEE, 0x72, 0xAB, 0xEA, 0x74, 0xAC, 0xEB, 0x75, 0xAD, 0xEC, 0x7F, 0xB1, + 0xEA, 0x85, 0xB1, 0xE5, 0x8B, 0xB6, 0xEB, 0x8E, 0xBA, 0xE8, 0xFF, 0xFF, 0xFF, 0x21, 0xF9, 0x04, + 0x01, 0x0A, 0x00, 0xFF, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, 0xAE, 0x00, 0x32, 0x00, 0x40, 0x08, + 0xFE, 0x00, 0xFF, 0x09, 0x1C, 0x48, 0xB0, 0xA0, 0x40, 0x39, 0x78, 0x0C, 0x2A, 0x04, 0x20, 0xC7, + 0x8F, 0x1E, 0x85, 0x10, 0x23, 0x4A, 0x9C, 0x48, 0xB1, 0xA2, 0xC5, 0x8B, 0x18, 0x33, 0x52, 0xDC, + 0x62, 0x26, 0x8E, 0x19, 0x22, 0x34, 0x56, 0xD8, 0xE0, 0x10, 0x01, 0x02, 0x17, 0x82, 0x45, 0xCC, + 0xF8, 0xF9, 0x74, 0xA9, 0x8D, 0x9D, 0x29, 0x3D, 0x68, 0x80, 0x18, 0x04, 0x4C, 0xA3, 0x4D, 0x8A, + 0x43, 0x0A, 0x99, 0xCB, 0xC7, 0xB3, 0xA7, 0xB9, 0x43, 0x41, 0x2A, 0x4C, 0x98, 0xE0, 0xE1, 0x0E, + 0xB6, 0x7B, 0x3D, 0xF3, 0xDD, 0x63, 0xB3, 0x60, 0xC1, 0x40, 0x06, 0x13, 0x82, 0x78, 0x4B, 0xDA, + 0x93, 0x97, 0x11, 0x0D, 0x12, 0x84, 0x4E, 0xA8, 0x50, 0x74, 0x5C, 0x4F, 0x6D, 0x15, 0x14, 0x4C, + 0x78, 0x72, 0x6A, 0x1E, 0x55, 0x9E, 0xEA, 0xB4, 0x4C, 0x78, 0xD0, 0x94, 0x41, 0x05, 0x47, 0x54, + 0xB5, 0x39, 0x7A, 0x22, 0x81, 0xAD, 0xD3, 0x7F, 0x42, 0x98, 0x44, 0xA1, 0x11, 0x12, 0x04, 0x07, + 0x08, 0x07, 0x08, 0x08, 0x10, 0x90, 0xA1, 0xD2, 0x3F, 0x16, 0x3F, 0x3E, 0xB5, 0x69, 0x33, 0xC5, + 0x09, 0x8D, 0x0E, 0x16, 0x30, 0x34, 0x60, 0xD0, 0xC0, 0x70, 0xC6, 0x21, 0x69, 0x34, 0x61, 0x7B, + 0x27, 0xAF, 0x73, 0x67, 0x70, 0x1B, 0x9A, 0x0E, 0x44, 0x92, 0x8D, 0x9E, 0x69, 0xD3, 0x9A, 0x18, + 0xDC, 0x1D, 0xE2, 0xEC, 0x2C, 0x38, 0x13, 0xA2, 0x2B, 0x36, 0x9D, 0x7D, 0xF7, 0xDF, 0x10, 0x4D, + 0x67, 0xDF, 0x69, 0xC3, 0x36, 0xCE, 0x5D, 0x4F, 0x70, 0x1A, 0x62, 0xFF, 0xA3, 0x5D, 0x5B, 0xE0, + 0x04, 0x36, 0xF2, 0xCE, 0xF2, 0x74, 0x36, 0x63, 0xF6, 0x44, 0x14, 0x47, 0x28, 0x1C, 0x30, 0x30, + 0x40, 0x40, 0x80, 0x04, 0x3E, 0xF6, 0x0C, 0x94, 0x23, 0x47, 0x52, 0x2A, 0x52, 0x8C, 0xEA, 0xFE, + 0x80, 0xD1, 0x43, 0xA2, 0x88, 0x2A, 0x63, 0x03, 0x57, 0xB5, 0xD2, 0x55, 0x4E, 0x9E, 0xBA, 0x6F, + 0xCC, 0x2C, 0xCD, 0xA2, 0x88, 0x65, 0x98, 0xB6, 0xFB, 0xDA, 0xC2, 0xF5, 0x61, 0x4B, 0x70, 0x8E, + 0x36, 0x72, 0x00, 0x92, 0x83, 0x8D, 0x11, 0xC2, 0xBD, 0xD0, 0x0C, 0x39, 0xE2, 0x88, 0x83, 0x0E, + 0x3A, 0xE9, 0xEC, 0x57, 0x1C, 0x41, 0x0B, 0x18, 0x81, 0x0D, 0x3B, 0x14, 0x52, 0x78, 0xCA, 0x04, + 0xCE, 0xFD, 0x83, 0x85, 0x37, 0x9C, 0x79, 0x66, 0x0E, 0x81, 0x77, 0x49, 0x71, 0xC7, 0x1A, 0x20, + 0x4E, 0xF4, 0x45, 0x2C, 0xF4, 0xF0, 0x64, 0x4E, 0x1A, 0x0A, 0x2C, 0x20, 0x81, 0x2F, 0x67, 0xDD, + 0xA3, 0x09, 0x86, 0x19, 0xF9, 0x20, 0x44, 0x28, 0xC7, 0x1C, 0xF3, 0x0A, 0x23, 0x97, 0x90, 0x91, + 0x85, 0x0E, 0x2E, 0xA0, 0x80, 0x82, 0x76, 0xFF, 0x30, 0xE1, 0x07, 0x3F, 0xFE, 0xEC, 0xA3, 0x8F, + 0x7B, 0xD9, 0x30, 0x93, 0x0B, 0x2F, 0xA7, 0x84, 0x12, 0xCC, 0x44, 0x43, 0x88, 0xD1, 0x4A, 0x2F, + 0xBD, 0xF8, 0x92, 0x89, 0x26, 0xAD, 0xF8, 0x82, 0x25, 0x96, 0xA7, 0x88, 0x61, 0xC4, 0x21, 0xA7, + 0x7C, 0x59, 0xCB, 0x29, 0x7D, 0x18, 0x61, 0x57, 0x6D, 0x0B, 0x3C, 0x30, 0xC3, 0x1A, 0xA7, 0xF0, + 0xF2, 0xCC, 0x9C, 0xD1, 0xCC, 0xC9, 0x8B, 0x25, 0x5A, 0xD4, 0x25, 0xC6, 0x2F, 0x7C, 0x5A, 0xD5, + 0x54, 0x19, 0xBC, 0x0C, 0xD3, 0x4C, 0x33, 0xCE, 0x38, 0x33, 0xE8, 0xA1, 0x87, 0xF2, 0x12, 0xDC, + 0x83, 0x03, 0x8D, 0xE1, 0x0C, 0x35, 0xD4, 0x60, 0x23, 0xE9, 0xA4, 0x92, 0x6A, 0xE3, 0xA0, 0xA3, + 0xF8, 0xE1, 0xE7, 0xCD, 0xA6, 0x9C, 0x7A, 0x03, 0xCE, 0x21, 0xFC, 0x45, 0x84, 0x02, 0x17, 0x9C, + 0x30, 0xD2, 0x06, 0x18, 0x8E, 0xF9, 0x45, 0x41, 0x13, 0x90, 0xC8, 0x32, 0x90, 0x0C, 0xFE, 0xC4, + 0xC8, 0x63, 0xCE, 0x34, 0xB8, 0x34, 0xD2, 0xC8, 0x18, 0x77, 0x84, 0x72, 0xCB, 0x2E, 0x15, 0x95, + 0x00, 0xC5, 0x1A, 0x6B, 0x88, 0x01, 0x04, 0x86, 0x8C, 0xDE, 0x64, 0xEC, 0xB1, 0xC8, 0x26, 0x5B, + 0x10, 0x07, 0x7E, 0x44, 0x42, 0x0B, 0x34, 0x13, 0x7D, 0xB0, 0x04, 0x2D, 0xC4, 0x28, 0x6B, 0xED, + 0xB5, 0xD8, 0x66, 0x9B, 0x2C, 0x1D, 0xDC, 0xC5, 0x11, 0xC5, 0x0A, 0x47, 0x58, 0x66, 0x10, 0x1E, + 0x0D, 0x7D, 0x92, 0x48, 0x63, 0xAA, 0x68, 0x9B, 0xEC, 0x10, 0x5F, 0xF0, 0x61, 0x89, 0x37, 0xEA, + 0xC4, 0x33, 0xCF, 0x3B, 0xEA, 0x80, 0x33, 0x0C, 0x1B, 0x33, 0x6C, 0x30, 0x84, 0x29, 0xBC, 0x38, + 0x42, 0xE3, 0x40, 0x7F, 0xF0, 0x22, 0xF0, 0xC0, 0x04, 0x17, 0x6C, 0xB0, 0xC0, 0xA7, 0xC0, 0x36, + 0x84, 0x25, 0x07, 0x1F, 0xFC, 0x84, 0x02, 0x81, 0x34, 0x3C, 0xF0, 0x29, 0xC1, 0x0D, 0x24, 0xC4, + 0x16, 0x20, 0xF1, 0x45, 0x43, 0x0B, 0x11, 0x50, 0x60, 0x80, 0x01, 0x05, 0xF8, 0x00, 0x2D, 0x0C, + 0x5D, 0x84, 0x52, 0x47, 0x1D, 0x8B, 0x35, 0xB6, 0x71, 0x64, 0x47, 0xA0, 0x97, 0xD1, 0x17, 0x63, + 0xCC, 0x11, 0x48, 0x1F, 0xA8, 0x68, 0xA3, 0x0E, 0x52, 0x17, 0x16, 0x17, 0x88, 0x6F, 0x3D, 0xD1, + 0xC3, 0xD4, 0x6A, 0x7C, 0xA8, 0x73, 0x56, 0xCE, 0xC2, 0x15, 0xA4, 0x80, 0x12, 0x3B, 0xE5, 0xA3, + 0x4E, 0x73, 0x05, 0x0D, 0x61, 0x0D, 0x55, 0x3E, 0xC7, 0xC6, 0xC7, 0x99, 0x8E, 0xA8, 0xF6, 0xCF, + 0x06, 0xBC, 0x2C, 0xF7, 0xEF, 0x3F, 0x13, 0x38, 0x82, 0x14, 0x55, 0x17, 0x6A, 0x60, 0x89, 0x59, + 0xF9, 0xC8, 0xB3, 0x86, 0x6A, 0x45, 0x0F, 0xC4, 0x82, 0x10, 0x51, 0xB4, 0x40, 0x92, 0x01, 0x07, + 0x54, 0x17, 0xC0, 0xDC, 0x07, 0xB8, 0x21, 0x10, 0x0B, 0x82, 0xE4, 0x21, 0x07, 0xFE, 0x24, 0xA1, + 0x24, 0x22, 0x19, 0x03, 0x08, 0x20, 0x20, 0x84, 0x2B, 0xE7, 0xA4, 0x27, 0x89, 0x28, 0xBB, 0xB4, + 0x32, 0xE5, 0x44, 0x63, 0x78, 0x93, 0xCE, 0xE3, 0xE9, 0x8C, 0xA3, 0x85, 0x70, 0x0B, 0x57, 0x48, + 0xA1, 0x33, 0x12, 0x88, 0x36, 0xC4, 0x1C, 0xEF, 0x74, 0xDE, 0xE1, 0x3B, 0x62, 0xA4, 0x6D, 0x9B, + 0x33, 0xA7, 0x95, 0x7E, 0xCF, 0xE9, 0xA7, 0x3B, 0xC2, 0x5F, 0x20, 0xC9, 0x25, 0x05, 0x4E, 0x0A, + 0x5B, 0x3D, 0x91, 0xB4, 0x3A, 0x4A, 0x88, 0xAE, 0xD0, 0x10, 0x7C, 0x78, 0xA5, 0x5C, 0x3E, 0xF3, + 0xDC, 0x11, 0x6A, 0x44, 0x2A, 0xF8, 0x00, 0xC1, 0x00, 0x09, 0x34, 0x41, 0x89, 0x40, 0x00, 0x14, + 0x61, 0x64, 0x2F, 0xC7, 0x08, 0x03, 0x4A, 0x78, 0x64, 0x44, 0x71, 0x03, 0x17, 0xA5, 0x08, 0xD4, + 0x85, 0x19, 0xB4, 0xB4, 0xC3, 0x8F, 0x3D, 0xF0, 0xD0, 0xFB, 0xCD, 0x34, 0xB9, 0xC8, 0xC7, 0xAB, + 0x44, 0x43, 0x1C, 0x32, 0xE7, 0xF9, 0xCF, 0x0C, 0x43, 0xA2, 0x14, 0x63, 0x98, 0x0F, 0xE9, 0xFB, + 0xD4, 0x3C, 0x93, 0xC6, 0x0C, 0x81, 0x88, 0x61, 0x35, 0x03, 0x5A, 0x50, 0x93, 0xE9, 0x7D, 0xA7, + 0xCC, 0x50, 0xC1, 0x10, 0xB6, 0x19, 0xC2, 0x19, 0x0E, 0x81, 0x0D, 0x70, 0x04, 0x28, 0x41, 0xC3, + 0x58, 0x54, 0x00, 0xF9, 0xA0, 0x8D, 0x04, 0x31, 0xE8, 0x71, 0xD8, 0x98, 0xC1, 0x03, 0x2C, 0x32, + 0x04, 0x2C, 0xF0, 0x61, 0x18, 0x9E, 0x7B, 0x47, 0x3A, 0xC4, 0x60, 0x17, 0x82, 0xBC, 0xC0, 0x1B, + 0xF3, 0x08, 0xA1, 0x08, 0xE9, 0x31, 0x8F, 0x53, 0x28, 0x61, 0x03, 0x25, 0xA8, 0xC8, 0x0F, 0xF4, + 0x50, 0x8C, 0xE7, 0x89, 0x47, 0x7A, 0x2E, 0xE0, 0x00, 0x05, 0x1C, 0xB0, 0x87, 0x29, 0x91, 0x8C, + 0x1B, 0xF6, 0x60, 0x07, 0x38, 0x9A, 0x91, 0x8B, 0x45, 0x2C, 0xE2, 0x10, 0xFE, 0x99, 0xE8, 0x44, + 0x28, 0xAA, 0x45, 0xBE, 0x32, 0x64, 0xE2, 0x88, 0x99, 0x70, 0xC4, 0x0B, 0x6C, 0xA7, 0xAE, 0x26, + 0x3A, 0x31, 0x23, 0x17, 0x90, 0x41, 0x22, 0x08, 0x51, 0x85, 0x2B, 0xE0, 0x20, 0x0E, 0xD5, 0x53, + 0x08, 0x0A, 0x04, 0xE1, 0x0D, 0x5A, 0x2D, 0x42, 0x71, 0x4F, 0x0C, 0xA3, 0x18, 0xC7, 0x78, 0x91, + 0x6E, 0x85, 0x21, 0x0C, 0x13, 0x69, 0x48, 0x24, 0x22, 0xF1, 0x08, 0x64, 0x90, 0xF1, 0x8D, 0x70, + 0xD4, 0x16, 0x77, 0xFC, 0x10, 0x06, 0xBE, 0xB8, 0xAD, 0x09, 0x8F, 0x30, 0x88, 0x1C, 0x00, 0x11, + 0x89, 0x50, 0x30, 0xC6, 0x09, 0x44, 0xE0, 0x82, 0x2B, 0xE2, 0x48, 0xBE, 0x80, 0xC5, 0x63, 0x77, + 0xB9, 0x41, 0x4B, 0x0A, 0x6A, 0x53, 0x3E, 0x44, 0x3A, 0x92, 0x2A, 0x77, 0x58, 0x00, 0x10, 0x74, + 0xF7, 0xC8, 0x71, 0x68, 0x60, 0x02, 0xAD, 0x49, 0x8A, 0x3E, 0x36, 0xC9, 0x49, 0x4D, 0xFC, 0xEE, + 0x04, 0x4C, 0xE0, 0xC8, 0x5E, 0x42, 0x62, 0x03, 0x10, 0x94, 0xC4, 0x00, 0x1F, 0x30, 0x4C, 0x0C, + 0x98, 0xD0, 0x85, 0x4A, 0x84, 0x82, 0x10, 0x8B, 0x41, 0x15, 0x11, 0x56, 0x60, 0x01, 0x10, 0x88, + 0x0B, 0x59, 0x43, 0xC8, 0xA5, 0x41, 0x72, 0xC9, 0x4B, 0x5E, 0x1A, 0xE4, 0x0C, 0xD9, 0x38, 0x8B, + 0x3A, 0xD2, 0xB0, 0xA6, 0x81, 0x34, 0x45, 0x02, 0x9A, 0x20, 0x5B, 0x3E, 0x78, 0xB1, 0x35, 0x81, + 0x0C, 0x01, 0x2E, 0x54, 0x71, 0x06, 0xB1, 0x1E, 0xB4, 0x00, 0x0D, 0x64, 0x2D, 0x1F, 0x51, 0x9B, + 0x4D, 0x0A, 0xA8, 0xA1, 0x9C, 0xD4, 0xDC, 0xE5, 0x0B, 0xBC, 0xF8, 0xDA, 0x3C, 0x34, 0xB1, 0xA8, + 0x0C, 0xDD, 0x8D, 0x6D, 0x1A, 0xDB, 0xD8, 0x29, 0xE3, 0x56, 0x80, 0x93, 0xFC, 0xC3, 0x06, 0x82, + 0xB8, 0x04, 0x21, 0x08, 0x81, 0xAA, 0x1E, 0xAC, 0x00, 0x04, 0x16, 0xFE, 0x98, 0x8C, 0x20, 0x6A, + 0x82, 0x91, 0xF2, 0x95, 0xCE, 0x34, 0xA7, 0x9B, 0xC7, 0xCF, 0x06, 0xB2, 0x30, 0xAA, 0x8C, 0x03, + 0x36, 0x77, 0xE1, 0x03, 0xCF, 0x92, 0x32, 0x0C, 0x62, 0x4D, 0x64, 0x01, 0x29, 0x70, 0x86, 0xBD, + 0x26, 0xA7, 0xB3, 0x77, 0x18, 0x14, 0xA1, 0x43, 0xF8, 0x03, 0x38, 0xB0, 0x99, 0x86, 0xD8, 0x6C, + 0xE0, 0x4C, 0x77, 0x18, 0x81, 0x70, 0x26, 0x70, 0x87, 0x14, 0x51, 0x05, 0x1B, 0x42, 0x53, 0x0A, + 0x2A, 0xCA, 0x29, 0x11, 0x92, 0xF5, 0xE5, 0x2F, 0x07, 0x28, 0x80, 0xDC, 0x02, 0x20, 0x83, 0xBB, + 0x79, 0x21, 0x11, 0x60, 0x68, 0x0C, 0x11, 0xF0, 0x29, 0x99, 0xC0, 0x31, 0xC1, 0x65, 0x04, 0x01, + 0x04, 0x20, 0x0C, 0x21, 0x91, 0xA6, 0x6C, 0xC0, 0x1A, 0x96, 0x7B, 0x87, 0x37, 0xFB, 0x83, 0x0E, + 0xCF, 0xC8, 0x23, 0x1D, 0x14, 0x15, 0xC8, 0x1C, 0xD8, 0x11, 0xC2, 0xD2, 0xA1, 0xC2, 0x6A, 0x4D, + 0x2B, 0x84, 0x26, 0xB6, 0xCA, 0xD5, 0xAE, 0x6E, 0xD5, 0x11, 0x15, 0x70, 0x0A, 0x12, 0xA6, 0xF2, + 0x48, 0x9E, 0x38, 0xA2, 0x45, 0x17, 0x11, 0xC1, 0x1D, 0xBE, 0x96, 0x94, 0x77, 0x3C, 0x81, 0x89, + 0x05, 0x41, 0x81, 0x10, 0x64, 0x70, 0x4A, 0x99, 0xCE, 0x2D, 0x00, 0x19, 0x40, 0x83, 0x1A, 0x04, + 0xB2, 0x03, 0x34, 0x00, 0x42, 0x14, 0x9C, 0xC8, 0x84, 0x1D, 0xA2, 0xD0, 0x00, 0x04, 0x34, 0x40, + 0x10, 0xE9, 0x12, 0x08, 0x2C, 0x26, 0x21, 0x0A, 0x69, 0x90, 0x23, 0x1B, 0xB1, 0x68, 0x85, 0x34, + 0xA8, 0x74, 0x08, 0x00, 0x89, 0x03, 0x40, 0xCD, 0x50, 0xA0, 0x40, 0xBE, 0xD0, 0x8C, 0x05, 0x41, + 0xCE, 0x41, 0x03, 0x11, 0x83, 0x38, 0x1E, 0x57, 0x21, 0x74, 0x44, 0xB5, 0x20, 0x1A, 0xA8, 0x40, + 0x10, 0x34, 0xD1, 0x21, 0xA7, 0x0E, 0x63, 0x0E, 0x26, 0x40, 0xFE, 0xDB, 0x10, 0x4E, 0xF1, 0x4F, + 0x7A, 0x78, 0xD2, 0x29, 0x6A, 0x45, 0x0A, 0x33, 0xE1, 0xEA, 0xCC, 0x33, 0x64, 0x32, 0x1F, 0xCE, + 0x30, 0x02, 0x37, 0xA1, 0xA6, 0xBA, 0x62, 0x0D, 0x04, 0x05, 0x3F, 0x40, 0x81, 0x01, 0x08, 0x30, + 0x80, 0x01, 0xA8, 0x00, 0x0D, 0x03, 0xE1, 0x48, 0x1C, 0x44, 0x51, 0x0C, 0x61, 0x90, 0x42, 0x11, + 0x76, 0x20, 0x83, 0x13, 0x20, 0x31, 0x48, 0x81, 0xC4, 0xE1, 0xAF, 0xD2, 0x68, 0x47, 0x3D, 0xDC, + 0x03, 0x9F, 0x51, 0x74, 0x62, 0x71, 0x11, 0x19, 0xC2, 0x18, 0xE0, 0x07, 0x29, 0x29, 0x50, 0xEE, + 0x10, 0xFB, 0xE3, 0x45, 0x58, 0x6B, 0x93, 0x83, 0x35, 0x5C, 0xD6, 0x80, 0x00, 0xD2, 0x86, 0x16, + 0xD0, 0x6A, 0x90, 0x2F, 0x58, 0xC2, 0xB3, 0x8F, 0x93, 0x1C, 0xE5, 0xFA, 0x80, 0x0E, 0xCB, 0xB1, + 0xC3, 0x19, 0xF3, 0x15, 0x08, 0x71, 0xD2, 0x8B, 0x85, 0x51, 0xBC, 0x23, 0x84, 0xEF, 0xE8, 0x83, + 0x43, 0xFF, 0x61, 0x82, 0x61, 0xA0, 0xEE, 0x74, 0x3C, 0xD1, 0x86, 0x12, 0x14, 0x00, 0x11, 0x14, + 0xF8, 0x40, 0x05, 0x74, 0x28, 0x88, 0x10, 0xFC, 0x50, 0x8C, 0x1C, 0xBD, 0xE2, 0xBA, 0x79, 0xA0, + 0xC2, 0x0D, 0x80, 0xF4, 0x86, 0x55, 0xE0, 0xC5, 0x0C, 0xDC, 0xF0, 0xC7, 0xF6, 0xEA, 0xF1, 0x8E, + 0x75, 0xC0, 0xE7, 0x49, 0xAD, 0x98, 0xCF, 0x44, 0xCA, 0x50, 0xA6, 0x2F, 0x25, 0xE3, 0xC7, 0xC9, + 0x40, 0x9F, 0x90, 0x87, 0x9C, 0x0C, 0x0E, 0x3A, 0x05, 0xA2, 0xEE, 0x63, 0xEF, 0xFB, 0x28, 0x85, + 0x8D, 0x68, 0xE8, 0x0F, 0x3F, 0x6B, 0x60, 0xCB, 0x6D, 0xB4, 0xE1, 0x0D, 0x00, 0x81, 0x03, 0xBF, + 0x08, 0xB2, 0x2C, 0x36, 0x4E, 0xBB, 0x4B, 0x5E, 0x40, 0xEE, 0xCB, 0xA4, 0x3D, 0x70, 0x70, 0x72, + 0x70, 0x8A, 0x74, 0x64, 0xF0, 0xCC, 0x4E, 0xD5, 0x86, 0xFE, 0x66, 0x21, 0x22, 0x83, 0x2E, 0xD8, + 0xE2, 0x18, 0xAC, 0x80, 0x1E, 0x15, 0x80, 0x84, 0x02, 0x0E, 0xF8, 0xE0, 0x16, 0x02, 0x61, 0xC2, + 0x32, 0xF8, 0xB1, 0x8F, 0x7A, 0xA0, 0xC3, 0x1B, 0xCD, 0x88, 0x85, 0x29, 0x46, 0x71, 0x8A, 0x4E, + 0xE0, 0xD9, 0x44, 0x64, 0x3A, 0x85, 0xA2, 0xA5, 0xA0, 0x00, 0x05, 0x40, 0x65, 0x28, 0x6B, 0x9A, + 0x4D, 0xA3, 0x17, 0x0C, 0x11, 0xDA, 0x38, 0x3A, 0xD2, 0xC4, 0xC9, 0xB4, 0xA6, 0x37, 0x6D, 0x4E, + 0x83, 0x70, 0xFA, 0xD3, 0xA0, 0xA6, 0x74, 0x87, 0x7F, 0x10, 0x0A, 0xF0, 0x88, 0xC7, 0x09, 0x36, + 0xA8, 0xF3, 0x0C, 0x61, 0x00, 0x09, 0x81, 0xC8, 0x40, 0x10, 0xF6, 0x90, 0x95, 0x35, 0x84, 0xD1, + 0x88, 0x42, 0xF4, 0x81, 0x10, 0x93, 0x18, 0xE2, 0x32, 0x4C, 0xB4, 0x86, 0x79, 0xCE, 0x53, 0x0C, + 0x13, 0x26, 0xA4, 0xB0, 0x9F, 0xC8, 0x02, 0x3D, 0x28, 0xE2, 0x8F, 0x38, 0xE8, 0x80, 0x0D, 0xF6, + 0x70, 0x68, 0xB5, 0x31, 0x61, 0x1B, 0xE6, 0xA8, 0x46, 0xAD, 0x1A, 0xE1, 0x88, 0x59, 0xE8, 0x22, + 0x23, 0x9A, 0x1E, 0xB6, 0xB6, 0x9D, 0xC8, 0x81, 0x2E, 0xBC, 0x84, 0x0C, 0x91, 0xC8, 0x62, 0x87, + 0x69, 0x31, 0x0D, 0x5E, 0xE8, 0x62, 0xD7, 0xDB, 0x4E, 0xB7, 0xBA, 0x35, 0x02, 0x87, 0x86, 0xC4, + 0x81, 0x22, 0xED, 0x86, 0xC4, 0x27, 0x12, 0xBB, 0xEE, 0x7A, 0xD7, 0x9B, 0x5C, 0xDE, 0x22, 0xC2, + 0x1B, 0x24, 0xB2, 0x47, 0x73, 0x39, 0x41, 0x15, 0xE8, 0xB6, 0x37, 0x41, 0x87, 0x50, 0x86, 0x39, + 0xCC, 0x41, 0x0C, 0x5A, 0x10, 0x01, 0x0F, 0x00, 0xE8, 0x4C, 0x5D, 0x36, 0xAD, 0x97, 0x10, 0x8F, + 0xB8, 0xC4, 0x7D, 0x19, 0xC0, 0x89, 0x47, 0xBC, 0xE2, 0x16, 0x77, 0x78, 0x44, 0xB8, 0x23, 0x87, + 0x30, 0x80, 0xA4, 0x05, 0x47, 0x20, 0xAA, 0x1E, 0xFE, 0xF7, 0xF6, 0x89, 0x97, 0x38, 0x21, 0x0A, + 0xDD, 0xAD, 0x77, 0x2E, 0x0B, 0x61, 0x8D, 0x43, 0xEE, 0x8E, 0x1E, 0xDE, 0x70, 0x84, 0x18, 0x84, + 0x06, 0x16, 0x9D, 0xB5, 0xAE, 0xAC, 0xBB, 0x7B, 0x87, 0x15, 0x16, 0x90, 0x83, 0xDF, 0x3A, 0xD2, + 0x1D, 0x41, 0x60, 0xC0, 0x29, 0x38, 0x49, 0x74, 0xA2, 0xFB, 0xA2, 0x99, 0x03, 0x81, 0x42, 0x1C, + 0xE4, 0xE0, 0xAD, 0x90, 0xB8, 0x2D, 0x02, 0x4D, 0x28, 0x88, 0x15, 0x54, 0xC2, 0x12, 0x7A, 0x3A, + 0xC1, 0x9E, 0x59, 0x70, 0xE3, 0xBA, 0x71, 0x47, 0xD6, 0xA4, 0xDC, 0xC3, 0x1C, 0xD6, 0xE0, 0x05, + 0x36, 0xCC, 0x61, 0xD2, 0xA4, 0xC4, 0x63, 0xE7, 0xAB, 0x99, 0xC3, 0x30, 0x52, 0xAA, 0x1C, 0x77, + 0x8C, 0x03, 0x1C, 0xDE, 0xD8, 0x0D, 0xBC, 0xD8, 0x9A, 0x8F, 0x53, 0x30, 0xC0, 0x08, 0x18, 0x74, + 0xE4, 0x38, 0x86, 0xE1, 0xAF, 0x0A, 0x68, 0xC2, 0x17, 0x0B, 0x4D, 0x8A, 0x3C, 0xB4, 0xD1, 0xD1, + 0x07, 0x71, 0x81, 0x23, 0x1E, 0x27, 0x25, 0x0A, 0x28, 0x00, 0x81, 0x0F, 0x10, 0xA9, 0x48, 0x5B, + 0x10, 0x84, 0xC9, 0x52, 0xE6, 0x18, 0xC8, 0x54, 0x42, 0x19, 0xEA, 0xC6, 0x1D, 0xDB, 0x7B, 0x32, + 0x4C, 0x4C, 0x2B, 0xC0, 0x04, 0xB4, 0x4D, 0x4A, 0x71, 0x8D, 0xD9, 0x26, 0x68, 0x26, 0x85, 0x76, + 0x9B, 0x7E, 0x00, 0x1B, 0xC8, 0xE6, 0x8E, 0x1A, 0xCC, 0x66, 0x02, 0x9A, 0xA0, 0x3B, 0x4F, 0xE4, + 0x41, 0xD1, 0xD9, 0xCC, 0x40, 0x1B, 0x3D, 0xAB, 0x85, 0x04, 0x45, 0x9D, 0x97, 0x8F, 0x68, 0x6C, + 0x05, 0x1C, 0x8B, 0x40, 0x4C, 0x51, 0x60, 0x18, 0x19, 0x30, 0xA1, 0x12, 0xF2, 0x84, 0x65, 0x4E, + 0xED, 0x89, 0x4F, 0x1B, 0xA4, 0xDC, 0x26, 0xB9, 0x6C, 0xD7, 0x21, 0x0E, 0xD1, 0x87, 0xB0, 0x12, + 0xE4, 0x0C, 0x96, 0x98, 0xBE, 0xF6, 0xC5, 0xFE, 0xC0, 0x5F, 0xDB, 0x8C, 0x42, 0xF6, 0xEF, 0x20, + 0x66, 0xA7, 0x15, 0x2C, 0x81, 0x53, 0xF4, 0xC4, 0x1B, 0xD6, 0x27, 0xC8, 0x6C, 0xCF, 0x32, 0x7A, + 0x8C, 0x0B, 0x44, 0x01, 0x5A, 0xB0, 0x68, 0x3E, 0xDA, 0xFF, 0x00, 0x25, 0x6C, 0x9E, 0x27, 0xEE, + 0xA8, 0xDD, 0x02, 0x90, 0x10, 0x8B, 0xAF, 0xC5, 0xE3, 0x0E, 0xD3, 0xA4, 0x10, 0x6B, 0x53, 0x47, + 0xBF, 0x67, 0x4A, 0x10, 0xB0, 0x5C, 0x05, 0x10, 0x75, 0x78, 0xF1, 0x06, 0x97, 0x80, 0x32, 0x7F, + 0x44, 0x04, 0x90, 0x21, 0x19, 0x5C, 0x00, 0x54, 0x17, 0x11, 0x08, 0xBD, 0x21, 0x0F, 0x18, 0xD6, + 0x13, 0xED, 0x67, 0x1B, 0x81, 0x50, 0x76, 0xF9, 0x90, 0x7F, 0xB1, 0x31, 0x04, 0xD7, 0x64, 0x76, + 0xB5, 0x27, 0x11, 0x6F, 0x81, 0x14, 0xF2, 0xF0, 0x56, 0xC5, 0x71, 0x06, 0x49, 0xD3, 0x13, 0xEF, + 0x10, 0x55, 0x0B, 0x83, 0x14, 0x67, 0xE5, 0x14, 0x13, 0x90, 0x06, 0x87, 0x34, 0x0E, 0x22, 0x65, + 0x4C, 0x33, 0xD0, 0x75, 0x3D, 0x11, 0x0F, 0x5A, 0xC0, 0x06, 0xF2, 0x67, 0x5B, 0x01, 0x08, 0x11, + 0x30, 0xA0, 0x17, 0xBF, 0x67, 0x01, 0x1E, 0x23, 0x53, 0x02, 0x90, 0x00, 0x96, 0x21, 0x04, 0x95, + 0x80, 0x32, 0x2F, 0x11, 0x13, 0x3C, 0xD5, 0x00, 0x13, 0x70, 0x4B, 0x14, 0x54, 0x16, 0x22, 0x34, + 0x42, 0xEA, 0x50, 0x22, 0xCE, 0x14, 0x4E, 0xA8, 0x03, 0x5C, 0x0E, 0x55, 0x3E, 0xB2, 0x27, 0x0F, + 0x6C, 0xD0, 0x22, 0xC6, 0x45, 0x10, 0x13, 0x90, 0x02, 0x97, 0xD4, 0x41, 0x03, 0x11, 0x08, 0xB2, + 0xE7, 0x0C, 0x1B, 0x30, 0x01, 0x58, 0x30, 0x06, 0xCD, 0x80, 0x7F, 0xAE, 0x77, 0x17, 0x43, 0xC1, + 0x00, 0x66, 0x58, 0x1C, 0xDB, 0xE4, 0x48, 0xBC, 0xB0, 0x48, 0xBC, 0x85, 0x17, 0x4C, 0x00, 0x12, + 0xF7, 0x54, 0x12, 0x31, 0x65, 0x1D, 0xFE, 0x02, 0x80, 0x02, 0x79, 0x64, 0x7C, 0x8A, 0x21, 0x4B, + 0xB4, 0x84, 0x01, 0x18, 0x00, 0x38, 0x24, 0xF0, 0x7C, 0x17, 0xB1, 0x00, 0x0C, 0x90, 0x02, 0xDA, + 0x70, 0x66, 0x0D, 0x25, 0x1C, 0x65, 0x30, 0x0E, 0x59, 0x38, 0x0F, 0x73, 0x10, 0x1B, 0x63, 0x40, + 0x76, 0x17, 0x76, 0x0F, 0xD2, 0x24, 0x3A, 0x16, 0x27, 0x02, 0x10, 0xE7, 0x4C, 0xC3, 0x80, 0x73, + 0xCB, 0x84, 0x74, 0x12, 0xA1, 0x01, 0xAD, 0x78, 0x16, 0x1F, 0x62, 0x86, 0x14, 0x21, 0x03, 0x3F, + 0xF0, 0x2D, 0x1C, 0xE3, 0x31, 0xD4, 0x31, 0x18, 0x01, 0x40, 0x00, 0x4B, 0x70, 0x37, 0x6F, 0xF0, + 0x6D, 0x7E, 0x20, 0x09, 0x20, 0xD0, 0x53, 0x81, 0xF3, 0x06, 0x98, 0x37, 0x10, 0x8F, 0x00, 0x08, + 0x92, 0x30, 0x0B, 0x3A, 0x26, 0x11, 0x65, 0xA0, 0x0D, 0x5F, 0xC6, 0x0E, 0x73, 0xD0, 0x7D, 0x43, + 0x10, 0x08, 0xEC, 0x90, 0x41, 0xE0, 0xD0, 0x1C, 0x77, 0xC1, 0x39, 0x9D, 0x91, 0x85, 0x7D, 0xD0, + 0x7D, 0x04, 0x75, 0x0A, 0xA5, 0x28, 0x7B, 0xAF, 0xE8, 0x14, 0x63, 0x70, 0x7F, 0xF3, 0x60, 0x0D, + 0xD6, 0xC0, 0x21, 0x3D, 0x33, 0x50, 0x15, 0x91, 0x13, 0x81, 0x97, 0x14, 0x98, 0x73, 0x86, 0x04, + 0x81, 0x5C, 0x47, 0x20, 0x43, 0x1F, 0x23, 0x37, 0xD6, 0x71, 0x00, 0x4D, 0xE0, 0x09, 0x02, 0x81, + 0x02, 0x91, 0xD0, 0x1D, 0x0D, 0xA8, 0x07, 0x93, 0x81, 0x00, 0x0C, 0x80, 0x06, 0xAA, 0x70, 0x0D, + 0x03, 0x31, 0x09, 0x92, 0xB0, 0x0B, 0xDB, 0x90, 0x0B, 0xA7, 0xD0, 0x6C, 0x10, 0xB1, 0x39, 0xE3, + 0x70, 0x59, 0x00, 0x82, 0x0D, 0x41, 0x40, 0x39, 0xB5, 0x00, 0x66, 0x39, 0xE3, 0x4C, 0xDA, 0xB8, + 0x8D, 0x9E, 0x63, 0x5A, 0xA2, 0x83, 0x05, 0xBC, 0x30, 0x0E, 0xF2, 0xF0, 0x89, 0xF3, 0x60, 0x1A, + 0xEF, 0x90, 0x0D, 0x85, 0xE7, 0xFE, 0x4F, 0x17, 0x96, 0x0F, 0x9B, 0xB8, 0x00, 0x13, 0x70, 0x4D, + 0xC0, 0x11, 0x88, 0xB6, 0xF1, 0x07, 0xB8, 0xC7, 0x13, 0x20, 0x74, 0x16, 0xDA, 0x90, 0x83, 0x13, + 0xC1, 0x02, 0xFB, 0x78, 0x80, 0x76, 0xF5, 0x8B, 0x2A, 0x20, 0x08, 0x03, 0xA1, 0x07, 0xDF, 0x35, + 0x0B, 0xB6, 0x70, 0x6C, 0x76, 0x40, 0x02, 0x0C, 0x40, 0x02, 0x95, 0x00, 0x54, 0xA8, 0xD0, 0x09, + 0xB3, 0xB0, 0x0D, 0xEF, 0x30, 0x0E, 0xCD, 0x60, 0x0A, 0xD1, 0x98, 0x5E, 0xA7, 0x10, 0x0E, 0x9B, + 0x02, 0x20, 0x33, 0x22, 0x1C, 0x63, 0x80, 0x0D, 0x07, 0x34, 0x0E, 0xA1, 0x53, 0x1B, 0x5A, 0x40, + 0x8D, 0x5F, 0x86, 0x0E, 0x6B, 0xA9, 0x10, 0x4D, 0xE1, 0x01, 0x99, 0x98, 0x41, 0xE3, 0x60, 0x04, + 0x7B, 0xB8, 0x00, 0x43, 0x30, 0x0C, 0x9F, 0x28, 0x0F, 0x71, 0xF9, 0x0F, 0x6B, 0x20, 0x0F, 0xF4, + 0xB0, 0x81, 0x11, 0x51, 0x1F, 0x5F, 0xE3, 0x0D, 0x78, 0xB9, 0x7A, 0x67, 0x31, 0x0E, 0x1D, 0x29, + 0x11, 0x28, 0xC0, 0x02, 0x3E, 0xD0, 0x8F, 0x83, 0x91, 0x01, 0x5E, 0x10, 0x62, 0xFF, 0x80, 0x08, + 0x4B, 0x27, 0x09, 0xB6, 0xF0, 0x3C, 0xD8, 0x45, 0x06, 0x7A, 0xF0, 0x06, 0xAE, 0x80, 0x09, 0x02, + 0x81, 0x09, 0x92, 0xD0, 0x09, 0xC4, 0x20, 0x5E, 0xEF, 0x60, 0x0E, 0xD9, 0x90, 0x0B, 0x99, 0x70, + 0x6D, 0x8C, 0xF3, 0x0C, 0x4C, 0xC6, 0x7D, 0x8C, 0x34, 0x07, 0x9C, 0x22, 0x96, 0xCE, 0x00, 0x88, + 0x03, 0x21, 0x02, 0xA7, 0x60, 0x59, 0x01, 0x42, 0x31, 0x67, 0x38, 0x06, 0xE0, 0x00, 0x66, 0xD7, + 0x58, 0x1C, 0x63, 0x30, 0x0E, 0x67, 0xA6, 0x0D, 0xA1, 0x71, 0x17, 0x8D, 0x36, 0x69, 0xF8, 0xF8, + 0x05, 0xA6, 0xF0, 0x0E, 0xA7, 0xE3, 0x0E, 0x73, 0x60, 0x17, 0xC7, 0x71, 0x73, 0x3D, 0xE1, 0x0E, + 0xFB, 0x65, 0x5C, 0xC1, 0xFE, 0x03, 0x18, 0x03, 0x50, 0x00, 0x32, 0x20, 0x2E, 0xA1, 0xE4, 0x07, + 0xA9, 0xD0, 0x3C, 0xE0, 0xD1, 0x06, 0xD1, 0x13, 0x05, 0xAD, 0x26, 0x10, 0x2A, 0x51, 0x0A, 0xDB, + 0x60, 0x0F, 0xDC, 0xC3, 0x0E, 0xE3, 0xD0, 0x24, 0xE6, 0x65, 0x91, 0xB7, 0xB3, 0x06, 0xD1, 0x70, + 0x9F, 0x4E, 0x46, 0x0D, 0x87, 0x40, 0x23, 0x43, 0x80, 0x04, 0x63, 0x30, 0x0C, 0x91, 0x32, 0x29, + 0xA7, 0x90, 0x39, 0x1A, 0x97, 0x02, 0xB5, 0x20, 0x96, 0x9B, 0x22, 0x96, 0xA7, 0xB0, 0x01, 0x1C, + 0xD6, 0x34, 0x81, 0x50, 0x65, 0x08, 0x72, 0x59, 0x1C, 0x29, 0x1C, 0xE0, 0x04, 0x66, 0xE9, 0xB0, + 0x5B, 0xFD, 0x74, 0x06, 0xBC, 0xD0, 0x5A, 0x8A, 0x92, 0x21, 0x35, 0xF8, 0x0E, 0xFF, 0x74, 0x3A, + 0xC3, 0xE0, 0x01, 0xC5, 0x12, 0x3C, 0x07, 0x40, 0x99, 0x70, 0x60, 0x31, 0x4C, 0x00, 0x09, 0xBF, + 0x90, 0x23, 0x2E, 0x94, 0x07, 0xD2, 0x33, 0x3D, 0x78, 0x56, 0x04, 0x5D, 0x40, 0x0B, 0xF6, 0xC0, + 0x0F, 0xDB, 0x03, 0x0F, 0x91, 0xD3, 0x24, 0x14, 0xF9, 0x95, 0x10, 0xF1, 0x05, 0xA7, 0x30, 0x64, + 0x73, 0xD2, 0x0B, 0x72, 0x22, 0x64, 0xF8, 0x59, 0x27, 0xBC, 0x40, 0x0D, 0x56, 0x81, 0x56, 0x1A, + 0xD0, 0x07, 0x01, 0x4A, 0x29, 0xFD, 0x22, 0x06, 0x62, 0x30, 0x07, 0x87, 0x60, 0x1F, 0xB5, 0x29, + 0x96, 0xE4, 0x90, 0x09, 0x18, 0x92, 0x03, 0x67, 0x30, 0x06, 0xA7, 0x40, 0x0D, 0x01, 0xC2, 0x9B, + 0xE2, 0x70, 0x0A, 0x73, 0xA0, 0x05, 0x5C, 0xB8, 0x4B, 0xEE, 0x42, 0x0D, 0xE3, 0x60, 0x60, 0xEC, + 0x30, 0x0C, 0x77, 0xA0, 0x05, 0x0A, 0xF3, 0x07, 0x54, 0x9A, 0x0E, 0x4E, 0x15, 0x8E, 0xF3, 0x20, + 0x2B, 0xF7, 0x02, 0x1B, 0x6A, 0xF3, 0x03, 0xE9, 0x49, 0x10, 0x42, 0x10, 0x09, 0x39, 0x72, 0x0C, + 0xA4, 0xC0, 0x09, 0xFE, 0x76, 0x40, 0x05, 0x3F, 0x12, 0x24, 0x82, 0xD0, 0x0D, 0x2F, 0xD6, 0x0E, + 0xFE, 0xD0, 0x0F, 0x7D, 0xB6, 0x95, 0x3C, 0x7A, 0x0A, 0x60, 0x54, 0x44, 0xB5, 0xF0, 0x25, 0x96, + 0x7A, 0xA9, 0x44, 0xFA, 0x63, 0x43, 0x16, 0x26, 0x13, 0xA6, 0x00, 0x12, 0xA0, 0x05, 0xA7, 0x80, + 0x9F, 0x4A, 0x06, 0x29, 0xCF, 0x60, 0x09, 0x52, 0xE0, 0x08, 0x93, 0x42, 0x0D, 0x6B, 0x89, 0x04, + 0xBC, 0x90, 0x29, 0xB5, 0x39, 0x96, 0xE4, 0x00, 0x0E, 0xD4, 0xE0, 0x8D, 0x10, 0x81, 0x05, 0x07, + 0xA2, 0x20, 0x0F, 0x04, 0x92, 0x18, 0xF2, 0x05, 0xD4, 0x90, 0x0E, 0x6C, 0x4A, 0x92, 0x19, 0xB4, + 0x5B, 0xF8, 0x68, 0x7C, 0xE3, 0x79, 0x0C, 0xA0, 0x80, 0x5D, 0x2A, 0xA6, 0x03, 0x75, 0x26, 0x03, + 0xE9, 0xC9, 0x04, 0x9F, 0xC0, 0x0F, 0x8E, 0x5A, 0x0F, 0xEC, 0xE0, 0x0D, 0x4E, 0x42, 0x91, 0x99, + 0x40, 0x0B, 0xAE, 0x42, 0x3E, 0x70, 0xD2, 0x0A, 0x8A, 0x26, 0x06, 0x1B, 0x20, 0x05, 0x73, 0xD0, + 0x07, 0xD4, 0x27, 0x06, 0x2F, 0xF0, 0x00, 0x0A, 0xA0, 0x01, 0x46, 0x20, 0x05, 0xEA, 0x6A, 0x04, + 0x71, 0xB8, 0x87, 0x05, 0xD1, 0x14, 0x13, 0xA0, 0x01, 0x33, 0x60, 0x04, 0x62, 0x10, 0x2C, 0x52, + 0x60, 0x04, 0x33, 0x20, 0x01, 0x66, 0xB8, 0x01, 0x33, 0xD0, 0xAF, 0x33, 0x40, 0x2C, 0x2F, 0xE0, + 0xAF, 0x02, 0x3B, 0xB0, 0xFE, 0xCA, 0x86, 0x06, 0x21, 0xB0, 0x41, 0x90, 0xB0, 0x0A, 0xAB, 0xB0, + 0x08, 0x15, 0xB0, 0x33, 0xA0, 0xB0, 0x35, 0x10, 0xB1, 0x12, 0x3B, 0xB1, 0x29, 0x40, 0x8E, 0x0A, + 0xF1, 0x03, 0x68, 0x50, 0x0C, 0xAF, 0x10, 0x67, 0x76, 0xE0, 0x04, 0x37, 0x10, 0x24, 0x32, 0xC4, + 0x05, 0x78, 0x56, 0x84, 0x7B, 0x56, 0x0F, 0xE9, 0xA0, 0x0D, 0x5D, 0xB9, 0x08, 0x96, 0xA0, 0x68, + 0xA1, 0xE0, 0xFE, 0xA3, 0x0A, 0x51, 0x06, 0x84, 0x80, 0x44, 0x99, 0x00, 0x04, 0x9C, 0xA6, 0x60, + 0x99, 0x26, 0x1B, 0x9B, 0x06, 0x21, 0x94, 0x16, 0x6A, 0xB4, 0xF1, 0x50, 0x3C, 0x6B, 0xB3, 0x3C, + 0xAB, 0x93, 0x3F, 0x10, 0x09, 0xA0, 0x70, 0x5D, 0x6D, 0x00, 0x48, 0x41, 0x42, 0x01, 0x14, 0x70, + 0x01, 0x44, 0x02, 0x03, 0x68, 0x20, 0x5E, 0xEC, 0x00, 0x1F, 0xB5, 0x32, 0x7D, 0x99, 0x90, 0x6B, + 0x44, 0x94, 0x5E, 0x62, 0xE0, 0x6B, 0x84, 0x70, 0x08, 0xB8, 0x29, 0x70, 0x5E, 0x7B, 0x11, 0x28, + 0xB0, 0x04, 0xA9, 0xC0, 0x08, 0xC7, 0x36, 0x05, 0x44, 0xD0, 0x02, 0x8B, 0x17, 0x45, 0x7E, 0x70, + 0x68, 0x32, 0xA0, 0x0A, 0xF0, 0x60, 0x63, 0xCC, 0xB0, 0x09, 0x8D, 0xC0, 0x07, 0xBD, 0xA6, 0x6B, + 0x14, 0x11, 0x03, 0xBD, 0x36, 0x4F, 0x7D, 0x20, 0x02, 0xB6, 0xF8, 0xB5, 0x7E, 0x3B, 0x94, 0x68, + 0xC0, 0x09, 0x84, 0x10, 0x85, 0xB4, 0x04, 0x02, 0xD0, 0x45, 0x10, 0x21, 0xF0, 0x03, 0xD2, 0x00, + 0xB7, 0xB5, 0xC2, 0x07, 0x7D, 0x20, 0x0A, 0x57, 0x5B, 0x11, 0x13, 0xF0, 0x02, 0x2F, 0x30, 0x01, + 0x7D, 0xFB, 0xB7, 0x98, 0x0B, 0x11, 0x2C, 0x20, 0x09, 0x84, 0xC0, 0x06, 0x55, 0xD0, 0x03, 0x38, + 0xB0, 0x05, 0x90, 0x40, 0x6F, 0xC7, 0x85, 0x06, 0xE1, 0x00, 0x1F, 0x72, 0xDB, 0x9A, 0x0E, 0xA9, + 0x11, 0x3D, 0x9B, 0xB9, 0xAE, 0x6B, 0x10, 0x2C, 0xB0, 0x04, 0xE7, 0x52, 0x45, 0x90, 0x40, 0x0B, + 0xA2, 0xF2, 0x09, 0x4D, 0x12, 0x59, 0xAE, 0xF9, 0xBA, 0xBC, 0x7B, 0x2D, 0x2C, 0xF0, 0x06, 0x60, + 0x90, 0x07, 0xA5, 0x20, 0x6E, 0x0A, 0x11, 0x3C, 0xBB, 0xE0, 0x0B, 0xBA, 0x20, 0x9A, 0xBD, 0xBB, + 0xBC, 0xD6, 0xA2, 0x02, 0x6F, 0x40, 0xBC, 0x12, 0xA1, 0x02, 0x7D, 0xCA, 0xBC, 0xD4, 0x9B, 0x11, + 0x01, 0x01, 0x01, 0x00, 0x3B, +}; + +#ifdef ROMFS_DIRENTRY_HEAD + static const ROMFS_DIRENTRY romfs_img_ugfx_dir = { 0, 0, ROMFS_DIRENTRY_HEAD, "ugfx.gif", 4629, romfs_img_ugfx }; + #undef ROMFS_DIRENTRY_HEAD + #define ROMFS_DIRENTRY_HEAD &romfs_img_ugfx_dir +#endif diff --git a/demos/applications/combo/romfs_img_yesno.h b/demos/applications/combo/romfs_img_yesno.h new file mode 100644 index 00000000..6b2c1290 --- /dev/null +++ b/demos/applications/combo/romfs_img_yesno.h @@ -0,0 +1,27 @@ +/** + * This file was generated from "image_yesno.gif" using... + * + * file2c -dcs image_yesno.gif romfs_img_yesno.h + * + */ +static const char image_yesno[] = { + 0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x0B, 0x00, 0x2C, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xC6, 0x00, 0xC6, 0xFF, 0xC6, 0xCE, 0xFF, 0xCE, 0xFF, 0x08, 0x18, 0xFF, 0xCE, 0xDE, 0xFF, + 0xDE, 0xDE, 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, 0x21, 0xF9, 0x04, + 0x03, 0x00, 0x00, 0x0F, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x2C, 0x00, 0x00, 0x04, + 0x77, 0xF0, 0xC9, 0x49, 0x03, 0xBD, 0xC1, 0xDE, 0x97, 0x83, 0xD8, 0xD9, 0xB7, 0x71, 0x22, 0xA8, + 0x8D, 0x59, 0x55, 0x7A, 0x55, 0x2A, 0x9C, 0x6D, 0x8A, 0xC2, 0x23, 0x45, 0xDC, 0x84, 0x61, 0xE7, + 0x12, 0xDE, 0x13, 0x1B, 0x1C, 0x70, 0xE4, 0x0B, 0x02, 0x6F, 0x17, 0xE4, 0xC3, 0x30, 0xFC, 0xED, + 0x24, 0xCC, 0x0B, 0x53, 0xA7, 0x7C, 0x36, 0x93, 0xD7, 0xCD, 0xA0, 0xF6, 0x18, 0x6C, 0xB5, 0xDE, + 0x03, 0x58, 0x3C, 0x1A, 0x90, 0xC1, 0x5C, 0x2F, 0xC5, 0x3C, 0x61, 0xB7, 0xD5, 0x87, 0xEF, 0xC5, + 0xAB, 0x2E, 0xCB, 0xB9, 0x93, 0x82, 0xBE, 0x70, 0x7E, 0xE8, 0xC9, 0x7B, 0x12, 0x7A, 0x1B, 0x7B, + 0x05, 0x35, 0x81, 0x84, 0x86, 0x83, 0x14, 0x8B, 0x07, 0x86, 0x79, 0x8F, 0x82, 0x8F, 0x8E, 0x17, + 0x8E, 0x62, 0x8B, 0x8C, 0x8A, 0x87, 0x05, 0x11, 0x00, 0x3B, +}; + +#ifdef ROMFS_DIRENTRY_HEAD + static const ROMFS_DIRENTRY image_yesno_dir = { 0, 0, ROMFS_DIRENTRY_HEAD, "image_yesno.gif", 202, image_yesno }; + #undef ROMFS_DIRENTRY_HEAD + #define ROMFS_DIRENTRY_HEAD &image_yesno_dir +#endif diff --git a/demos/applications/combo/rsc/chibios.gif b/demos/applications/combo/rsc/chibios.gif new file mode 100644 index 0000000000000000000000000000000000000000..96d55ba4618a4bb6544071ed9ef1f4421ea08791 GIT binary patch literal 4840 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 P=1*gC=W!w%1EK#1o~}1b literal 0 HcmV?d00001 diff --git a/demos/applications/combo/rsc/image_yesno.gif b/demos/applications/combo/rsc/image_yesno.gif new file mode 100644 index 0000000000000000000000000000000000000000..5a3d3998c02e02c7856f6289c22a78190ce28275 GIT binary patch literal 202 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 literal 0 HcmV?d00001 diff --git a/demos/applications/combo/tasks.h b/demos/applications/combo/tasks.h new file mode 100644 index 00000000..68a32e09 --- /dev/null +++ b/demos/applications/combo/tasks.h @@ -0,0 +1,7 @@ +#ifndef _TASKS_INCLUDED +#define _TASKS_INCLUDED + +void doMandlebrot(GHandle parent, bool_t start); +void doBounce(GHandle parent, bool_t start); + +#endif