From 7baf5c5d448b626d6a062882434b25ca82212d94 Mon Sep 17 00:00:00 2001 From: inmarket Date: Thu, 6 Jun 2013 14:33:32 +1000 Subject: New simplified gwin using a pseudo class structure. --- demos/modules/gwin/widgets/gfxconf.h | 65 ++++++++++++++++ demos/modules/gwin/widgets/main.c | 141 ++++++++++++++++++++++++++++++++++ demos/modules/gwin/widgets/readme.txt | 6 ++ 3 files changed, 212 insertions(+) create mode 100644 demos/modules/gwin/widgets/gfxconf.h create mode 100644 demos/modules/gwin/widgets/main.c create mode 100644 demos/modules/gwin/widgets/readme.txt (limited to 'demos/modules') diff --git a/demos/modules/gwin/widgets/gfxconf.h b/demos/modules/gwin/widgets/gfxconf.h new file mode 100644 index 00000000..b4574149 --- /dev/null +++ b/demos/modules/gwin/widgets/gfxconf.h @@ -0,0 +1,65 @@ +/* + * This file has a different license to the rest of the GFX 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. + */ + +#ifndef _GFXCONF_H +#define _GFXCONF_H + +#define GFX_USE_OS_CHIBIOS TRUE +//#define GFX_USE_OS_WIN32 TRUE +//#define GFX_USE_OS_POSIX TRUE + +/* GFX sub-systems to turn on */ +#define GFX_USE_GDISP TRUE +#define GFX_USE_GWIN TRUE +#define GFX_USE_GEVENT TRUE +#define GFX_USE_GTIMER TRUE +#define GFX_USE_GINPUT TRUE + +/* Features for the GDISP sub-system. */ +#define GDISP_NEED_VALIDATION TRUE +#define GDISP_NEED_CLIP TRUE +#define GDISP_NEED_TEXT TRUE +#define GDISP_NEED_CIRCLE TRUE +#define GDISP_NEED_ELLIPSE TRUE +#define GDISP_NEED_ARC TRUE +#define GDISP_NEED_CONVEX_POLYGON TRUE +#define GDISP_NEED_SCROLL FALSE +#define GDISP_NEED_PIXELREAD FALSE +#define GDISP_NEED_CONTROL FALSE +#define GDISP_NEED_IMAGE TRUE +#define GDISP_NEED_MULTITHREAD TRUE +#define GDISP_NEED_ASYNC FALSE +#define GDISP_NEED_MSGAPI FALSE + +/* Builtin Fonts */ +#define GDISP_INCLUDE_FONT_SMALL FALSE +#define GDISP_INCLUDE_FONT_LARGER FALSE +#define GDISP_INCLUDE_FONT_UI1 FALSE +#define GDISP_INCLUDE_FONT_UI2 TRUE +#define GDISP_INCLUDE_FONT_LARGENUMBERS FALSE + +/* GDISP image decoders */ +#define GDISP_NEED_IMAGE_NATIVE FALSE +#define GDISP_NEED_IMAGE_GIF TRUE +#define GDISP_NEED_IMAGE_BMP FALSE +#define GDISP_NEED_IMAGE_JPG FALSE +#define GDISP_NEED_IMAGE_PNG FALSE + +/* Features for the GWIN sub-system. */ +#define GWIN_NEED_CONSOLE TRUE +#define GWIN_NEED_GRAPH FALSE +#define GWIN_NEED_BUTTON TRUE +#define GWIN_NEED_SLIDER TRUE +#define GWIN_NEED_CHECKBOX TRUE + +/* Features for the GINPUT sub-system. */ +#define GINPUT_NEED_MOUSE TRUE +#define GINPUT_NEED_TOGGLE FALSE +#define GINPUT_NEED_DIAL FALSE + +#endif /* _GFXCONF_H */ diff --git a/demos/modules/gwin/widgets/main.c b/demos/modules/gwin/widgets/main.c new file mode 100644 index 00000000..7845ba69 --- /dev/null +++ b/demos/modules/gwin/widgets/main.c @@ -0,0 +1,141 @@ +/* + ChibiOS/GFX - Copyright (C) 2012, 2013 + Joel Bodenmann aka Tectu + + This file is part of ChibiOS/GFX. + + ChibiOS/GFX is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/GFX is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include "gfx.h" + +static GListener gl; +static GHandle ghConsole; +static GHandle ghButton1, ghButton2, ghButton3, ghButton4; +static GHandle ghSlider1, ghSlider2, ghSlider3, ghSlider4; +static GHandle ghCheckbox1, ghCheckbox2; + +#define ScrWidth gdispGetWidth() +#define ScrHeight gdispGetHeight() + +#define BUTTON_WIDTH 50 +#define BUTTON_HEIGHT 30 +#define SLIDER_WIDTH 10 +#define CHECKBOX_WIDTH 80 +#define CHECKBOX_HEIGHT 20 + +int main(void) { + GEvent * pe; + + // Initialize the display + gfxInit(); + gdispClear(White); + + // Set the font + gwinSetDefaultFont(gdispOpenFont("UI2")); + + // Create out gwin windows/widgets + ghButton1 = gwinCreateButton(NULL, 0+0*(BUTTON_WIDTH+1), 0, BUTTON_WIDTH, BUTTON_HEIGHT); + ghButton2 = gwinCreateButton(NULL, 0+1*(BUTTON_WIDTH+1), 0, BUTTON_WIDTH, BUTTON_HEIGHT); + ghButton3 = gwinCreateButton(NULL, 0+2*(BUTTON_WIDTH+1), 0, BUTTON_WIDTH, BUTTON_HEIGHT); + ghButton4 = gwinCreateButton(NULL, 0+3*(BUTTON_WIDTH+1), 0, BUTTON_WIDTH, BUTTON_HEIGHT); + ghConsole = gwinCreateConsole(NULL, ScrWidth/2+1, ScrHeight/2+1, ScrWidth/2-1, ScrHeight/2-1); + ghSlider1 = gwinCreateSlider(NULL, ScrWidth/2+1, ScrHeight/2-2*(SLIDER_WIDTH+1), ScrWidth/2-2, SLIDER_WIDTH); + ghSlider2 = gwinCreateSlider(NULL, ScrWidth/2+1, ScrHeight/2-1*(SLIDER_WIDTH+1), ScrWidth/2-2, SLIDER_WIDTH); + ghSlider3 = gwinCreateSlider(NULL, 0+1*(SLIDER_WIDTH+1), ScrHeight/2+1, SLIDER_WIDTH, ScrHeight/2-2); + ghSlider4 = gwinCreateSlider(NULL, 0+1*(SLIDER_WIDTH+1), ScrHeight/2+1, SLIDER_WIDTH, ScrHeight/2-2); + ghCheckbox1 = gwinCreateCheckbox(NULL, 0, BUTTON_HEIGHT+1, CHECKBOX_WIDTH, CHECKBOX_HEIGHT); + ghCheckbox2 = gwinCreateCheckbox(NULL, 0, BUTTON_HEIGHT+1+1*(CHECKBOX_HEIGHT+1), CHECKBOX_WIDTH, CHECKBOX_HEIGHT); + + // Color everything + gwinSetColor(ghConsole, Yellow); + gwinSetBgColor(ghConsole, Black); + + // Set the text on all the controls + gwinSetText(ghButton1, "B1", FALSE); + gwinSetText(ghButton2, "B2", FALSE); + gwinSetText(ghButton3, "B3", FALSE); + gwinSetText(ghButton4, "B4", FALSE); + gwinSetText(ghSlider1, "S1", FALSE); + gwinSetText(ghSlider2, "S2", FALSE); + gwinSetText(ghSlider3, "S3", FALSE); + gwinSetText(ghSlider4, "S4", FALSE); + gwinSetText(ghCheckbox1, "C1", FALSE); + gwinSetText(ghCheckbox2, "C2", FALSE); + + // Assign the mouse and dials to the buttons & sliders etc. +#if GINPUT_NEED_MOUSE + gwinAttachMouse(ghSlider1, 0); + gwinAttachMouse(ghSlider2, 0); + gwinAttachMouse(ghSlider3, 0); + gwinAttachMouse(ghSlider4, 0); + gwinAttachMouse(ghButton1, 0); + gwinAttachMouse(ghButton2, 0); + gwinAttachMouse(ghButton3, 0); + gwinAttachMouse(ghButton4, 0); + gwinAttachMouse(ghCheckbox1, 0); + gwinAttachMouse(ghCheckbox2, 0); +#endif +#if GINPUT_NEED_DIAL + gwinAttachSliderDial(ghSlider1, 0); + gwinAttachSliderDial(ghSlider3, 1); +#endif + + // We want to listen for widget events + geventListenerInit(&gl); + gwinAttachListener(ghSlider1, &gl, 0); + gwinAttachListener(ghSlider2, &gl, 0); + gwinAttachListener(ghSlider3, &gl, 0); + gwinAttachListener(ghSlider4, &gl, 0); + gwinAttachListener(ghButton1, &gl, 0); + gwinAttachListener(ghButton2, &gl, 0); + gwinAttachListener(ghButton3, &gl, 0); + gwinAttachListener(ghButton4, &gl, 0); + gwinAttachListener(ghCheckbox1, &gl, 0); + gwinAttachListener(ghCheckbox2, &gl, 0); + + // Draw everything on the screen + gwinClear(ghConsole); + gwinDraw(ghSlider1); + gwinDraw(ghSlider2); + gwinDraw(ghSlider3); + gwinDraw(ghSlider4); + gwinDraw(ghButton1); + gwinDraw(ghButton2); + gwinDraw(ghButton3); + gwinDraw(ghButton4); + gwinDraw(ghCheckbox1); + gwinDraw(ghCheckbox2); + + 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)->button)); + break; + case GEVENT_GWIN_SLIDER: + gwinPrintf(ghConsole, "Slider %s=%d\n", gwinGetText(((GEventGWinSlider *)pe)->slider), ((GEventGWinSlider *)pe)->position); + break; + case GEVENT_GWIN_CHECKBOX: + gwinPrintf(ghConsole, "Checkbox %s=%s\n", gwinGetText(((GEventGWinCheckbox *)pe)->checkbox), ((GEventGWinCheckbox *)pe)->isChecked ? "Checked" : "UnChecked"); + break; + default: + gwinPrintf(ghConsole, "Unknown %d\n", pe->type); + break; + } + } + return 0; +} diff --git a/demos/modules/gwin/widgets/readme.txt b/demos/modules/gwin/widgets/readme.txt new file mode 100644 index 00000000..02d733e9 --- /dev/null +++ b/demos/modules/gwin/widgets/readme.txt @@ -0,0 +1,6 @@ +This demo supports input from both a mouse/touch 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. -- cgit v1.2.3 From 1db77bda85aabd64eb78edf34e9b4b77e1e7324d Mon Sep 17 00:00:00 2001 From: inmarket Date: Thu, 6 Jun 2013 16:47:57 +1000 Subject: License fixes to some demos --- demos/modules/gdisp/gdisp_images_animated/main.c | 43 ++++++++++++++---------- demos/modules/gwin/basic/main.c | 43 ++++++++++++++---------- demos/modules/gwin/console/main.c | 43 ++++++++++++++---------- demos/modules/gwin/slider/main.c | 43 ++++++++++++++---------- 4 files changed, 100 insertions(+), 72 deletions(-) (limited to 'demos/modules') diff --git a/demos/modules/gdisp/gdisp_images_animated/main.c b/demos/modules/gdisp/gdisp_images_animated/main.c index 8502dcf9..c4ae9d02 100644 --- a/demos/modules/gdisp/gdisp_images_animated/main.c +++ b/demos/modules/gdisp/gdisp_images_animated/main.c @@ -1,22 +1,29 @@ /* - ChibiOS/GFX - Copyright (C) 2012, 2013 - Joel Bodenmann aka Tectu - - This file is part of ChibiOS/GFX. - - ChibiOS/GFX is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS/GFX is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + * Copyright (c) 2012, 2013, Joel Bodenmann aka Tectu + * 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" diff --git a/demos/modules/gwin/basic/main.c b/demos/modules/gwin/basic/main.c index 624eed18..fa618e0f 100644 --- a/demos/modules/gwin/basic/main.c +++ b/demos/modules/gwin/basic/main.c @@ -1,22 +1,29 @@ /* - ChibiOS/GFX - Copyright (C) 2012, 2013 - Joel Bodenmann aka Tectu - - This file is part of ChibiOS/GFX. - - ChibiOS/GFX is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS/GFX is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + * Copyright (c) 2012, 2013, Joel Bodenmann aka Tectu + * 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" diff --git a/demos/modules/gwin/console/main.c b/demos/modules/gwin/console/main.c index d968b920..557cf988 100644 --- a/demos/modules/gwin/console/main.c +++ b/demos/modules/gwin/console/main.c @@ -1,22 +1,29 @@ /* - ChibiOS/GFX - Copyright (C) 2012, 2013 - Joel Bodenmann aka Tectu - - This file is part of ChibiOS/GFX. - - ChibiOS/GFX is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS/GFX is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + * Copyright (c) 2012, 2013, Joel Bodenmann aka Tectu + * 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 "chprintf.h" diff --git a/demos/modules/gwin/slider/main.c b/demos/modules/gwin/slider/main.c index f1d4248d..c56a1aa7 100644 --- a/demos/modules/gwin/slider/main.c +++ b/demos/modules/gwin/slider/main.c @@ -1,22 +1,29 @@ /* - ChibiOS/GFX - Copyright (C) 2012, 2013 - Joel Bodenmann aka Tectu - - This file is part of ChibiOS/GFX. - - ChibiOS/GFX is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS/GFX is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + * Copyright (c) 2012, 2013, Joel Bodenmann aka Tectu + * 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 "chprintf.h" -- cgit v1.2.3 From 663caba66214acdb6170903f6a203740ea1de8b9 Mon Sep 17 00:00:00 2001 From: inmarket Date: Thu, 6 Jun 2013 16:48:30 +1000 Subject: GWIN fixes --- demos/modules/gwin/widgets/main.c | 112 +++++++++++++++++++++----------------- 1 file changed, 61 insertions(+), 51 deletions(-) (limited to 'demos/modules') diff --git a/demos/modules/gwin/widgets/main.c b/demos/modules/gwin/widgets/main.c index 7845ba69..2102d3a2 100644 --- a/demos/modules/gwin/widgets/main.c +++ b/demos/modules/gwin/widgets/main.c @@ -1,22 +1,29 @@ /* - ChibiOS/GFX - Copyright (C) 2012, 2013 - Joel Bodenmann aka Tectu - - This file is part of ChibiOS/GFX. - - ChibiOS/GFX is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS/GFX is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ + * Copyright (c) 2012, 2013, Joel Bodenmann aka Tectu + * 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" @@ -31,7 +38,7 @@ static GHandle ghCheckbox1, ghCheckbox2; #define BUTTON_WIDTH 50 #define BUTTON_HEIGHT 30 -#define SLIDER_WIDTH 10 +#define SLIDER_WIDTH 20 #define CHECKBOX_WIDTH 80 #define CHECKBOX_HEIGHT 20 @@ -42,48 +49,51 @@ int main(void) { gfxInit(); gdispClear(White); - // Set the font + // Set the font and defalt colors gwinSetDefaultFont(gdispOpenFont("UI2")); + gwinSetDefaultColor(Black); + gwinSetDefaultBgColor(White); // Create out gwin windows/widgets + ghConsole = gwinCreateConsole(NULL, ScrWidth/2+1, ScrHeight/2+1, ScrWidth/2-1, ScrHeight/2-1); ghButton1 = gwinCreateButton(NULL, 0+0*(BUTTON_WIDTH+1), 0, BUTTON_WIDTH, BUTTON_HEIGHT); ghButton2 = gwinCreateButton(NULL, 0+1*(BUTTON_WIDTH+1), 0, BUTTON_WIDTH, BUTTON_HEIGHT); ghButton3 = gwinCreateButton(NULL, 0+2*(BUTTON_WIDTH+1), 0, BUTTON_WIDTH, BUTTON_HEIGHT); ghButton4 = gwinCreateButton(NULL, 0+3*(BUTTON_WIDTH+1), 0, BUTTON_WIDTH, BUTTON_HEIGHT); - ghConsole = gwinCreateConsole(NULL, ScrWidth/2+1, ScrHeight/2+1, ScrWidth/2-1, ScrHeight/2-1); ghSlider1 = gwinCreateSlider(NULL, ScrWidth/2+1, ScrHeight/2-2*(SLIDER_WIDTH+1), ScrWidth/2-2, SLIDER_WIDTH); ghSlider2 = gwinCreateSlider(NULL, ScrWidth/2+1, ScrHeight/2-1*(SLIDER_WIDTH+1), ScrWidth/2-2, SLIDER_WIDTH); - ghSlider3 = gwinCreateSlider(NULL, 0+1*(SLIDER_WIDTH+1), ScrHeight/2+1, SLIDER_WIDTH, ScrHeight/2-2); + ghSlider3 = gwinCreateSlider(NULL, 0+0*(SLIDER_WIDTH+1), ScrHeight/2+1, SLIDER_WIDTH, ScrHeight/2-2); ghSlider4 = gwinCreateSlider(NULL, 0+1*(SLIDER_WIDTH+1), ScrHeight/2+1, SLIDER_WIDTH, ScrHeight/2-2); ghCheckbox1 = gwinCreateCheckbox(NULL, 0, BUTTON_HEIGHT+1, CHECKBOX_WIDTH, CHECKBOX_HEIGHT); ghCheckbox2 = gwinCreateCheckbox(NULL, 0, BUTTON_HEIGHT+1+1*(CHECKBOX_HEIGHT+1), CHECKBOX_WIDTH, CHECKBOX_HEIGHT); - // Color everything + // Color everything and set special drawing for some widgets gwinSetColor(ghConsole, Yellow); gwinSetBgColor(ghConsole, Black); + gwinSetCustomDraw(ghCheckbox2, gwinCheckboxDraw_CheckOnRight, 0); // Set the text on all the controls gwinSetText(ghButton1, "B1", FALSE); - gwinSetText(ghButton2, "B2", FALSE); - gwinSetText(ghButton3, "B3", FALSE); - gwinSetText(ghButton4, "B4", FALSE); - gwinSetText(ghSlider1, "S1", FALSE); - gwinSetText(ghSlider2, "S2", FALSE); - gwinSetText(ghSlider3, "S3", FALSE); - gwinSetText(ghSlider4, "S4", FALSE); - gwinSetText(ghCheckbox1, "C1", FALSE); - gwinSetText(ghCheckbox2, "C2", FALSE); + gwinSetText(ghButton2, "B2", FALSE); + gwinSetText(ghButton3, "B3", FALSE); + gwinSetText(ghButton4, "B4", FALSE); + gwinSetText(ghSlider1, "S1", FALSE); + gwinSetText(ghSlider2, "S2", FALSE); + gwinSetText(ghSlider3, "S3", FALSE); + gwinSetText(ghSlider4, "S4", FALSE); + gwinSetText(ghCheckbox1, "C1", FALSE); + gwinSetText(ghCheckbox2, "C2", FALSE); // Assign the mouse and dials to the buttons & sliders etc. #if GINPUT_NEED_MOUSE - gwinAttachMouse(ghSlider1, 0); - gwinAttachMouse(ghSlider2, 0); - gwinAttachMouse(ghSlider3, 0); - gwinAttachMouse(ghSlider4, 0); gwinAttachMouse(ghButton1, 0); gwinAttachMouse(ghButton2, 0); gwinAttachMouse(ghButton3, 0); gwinAttachMouse(ghButton4, 0); + gwinAttachMouse(ghSlider1, 0); + gwinAttachMouse(ghSlider2, 0); + gwinAttachMouse(ghSlider3, 0); + gwinAttachMouse(ghSlider4, 0); gwinAttachMouse(ghCheckbox1, 0); gwinAttachMouse(ghCheckbox2, 0); #endif @@ -94,29 +104,29 @@ int main(void) { // We want to listen for widget events geventListenerInit(&gl); - gwinAttachListener(ghSlider1, &gl, 0); - gwinAttachListener(ghSlider2, &gl, 0); - gwinAttachListener(ghSlider3, &gl, 0); - gwinAttachListener(ghSlider4, &gl, 0); gwinAttachListener(ghButton1, &gl, 0); gwinAttachListener(ghButton2, &gl, 0); gwinAttachListener(ghButton3, &gl, 0); gwinAttachListener(ghButton4, &gl, 0); + gwinAttachListener(ghSlider1, &gl, 0); + gwinAttachListener(ghSlider2, &gl, 0); + gwinAttachListener(ghSlider3, &gl, 0); + gwinAttachListener(ghSlider4, &gl, 0); gwinAttachListener(ghCheckbox1, &gl, 0); gwinAttachListener(ghCheckbox2, &gl, 0); // Draw everything on the screen - gwinClear(ghConsole); - gwinDraw(ghSlider1); - gwinDraw(ghSlider2); - gwinDraw(ghSlider3); - gwinDraw(ghSlider4); - gwinDraw(ghButton1); - gwinDraw(ghButton2); - gwinDraw(ghButton3); - gwinDraw(ghButton4); - gwinDraw(ghCheckbox1); - gwinDraw(ghCheckbox2); + gwinClear(ghConsole); + gwinDraw(ghButton1); + gwinDraw(ghButton2); + gwinDraw(ghButton3); + gwinDraw(ghButton4); + gwinDraw(ghSlider1); + gwinDraw(ghSlider2); + gwinDraw(ghSlider3); + gwinDraw(ghSlider4); + gwinDraw(ghCheckbox1); + gwinDraw(ghCheckbox2); while(1) { // Get an Event -- cgit v1.2.3 From 777ec6af7c1b594f7b7a9cbaaf7ead90d8fb7e8f Mon Sep 17 00:00:00 2001 From: inmarket Date: Sat, 8 Jun 2013 02:27:59 +1000 Subject: Add a simple GWIN window manager, Change the way GWIN visibility works --- demos/modules/gadc/gwinosc.c | 2 +- demos/modules/gaudin/gwinosc.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'demos/modules') diff --git a/demos/modules/gadc/gwinosc.c b/demos/modules/gadc/gwinosc.c index 589fdb9e..88e61334 100644 --- a/demos/modules/gadc/gwinosc.c +++ b/demos/modules/gadc/gwinosc.c @@ -47,7 +47,7 @@ GHandle gwinCreateScope(GScopeObject *gs, coord_t x, coord_t y, coord_t cx, coord_t cy, uint32_t physdev, uint32_t frequency) { /* Initialise the base class GWIN */ - if (!(gs = (GScopeObject *)_gwinInit((GWindowObject *)gs, x, y, cx, cy, sizeof(GScopeObject)))) + if (!(gs = (GScopeObject *)_gwindowInit((GWindowObject *)gs, x, y, cx, cy, sizeof(GScopeObject)))) return 0; /* Initialise the scope object members and allocate memory for buffers */ diff --git a/demos/modules/gaudin/gwinosc.c b/demos/modules/gaudin/gwinosc.c index 82ed4b44..e90430d3 100644 --- a/demos/modules/gaudin/gwinosc.c +++ b/demos/modules/gaudin/gwinosc.c @@ -54,7 +54,7 @@ GHandle gwinCreateScope(GScopeObject *gs, coord_t x, coord_t y, coord_t cx, coord_t cy, uint16_t channel, uint32_t frequency) { /* Initialise the base class GWIN */ - if (!(gs = (GScopeObject *)_gwinInit((GWindowObject *)gs, x, y, cx, cy, sizeof(GScopeObject)))) + if (!(gs = (GScopeObject *)_gwindowInit((GWindowObject *)gs, x, y, cx, cy, sizeof(GScopeObject)))) return 0; /* Initialise the scope object members and allocate memory for buffers */ -- cgit v1.2.3 From 2cb35d6815a0a12035f4792c266b688c77085620 Mon Sep 17 00:00:00 2001 From: inmarket Date: Mon, 10 Jun 2013 17:18:01 +1000 Subject: Clean up GWIN Event assignment. Optimise event efficiency. --- demos/modules/gadc/gwinosc.c | 2 +- demos/modules/gaudin/gwinosc.c | 2 +- demos/modules/gwin/widgets/gfxconf.h | 4 ++- demos/modules/gwin/widgets/main.c | 70 +++++++++++++++--------------------- 4 files changed, 34 insertions(+), 44 deletions(-) (limited to 'demos/modules') diff --git a/demos/modules/gadc/gwinosc.c b/demos/modules/gadc/gwinosc.c index 88e61334..60a08686 100644 --- a/demos/modules/gadc/gwinosc.c +++ b/demos/modules/gadc/gwinosc.c @@ -47,7 +47,7 @@ GHandle gwinCreateScope(GScopeObject *gs, coord_t x, coord_t y, coord_t cx, coord_t cy, uint32_t physdev, uint32_t frequency) { /* Initialise the base class GWIN */ - if (!(gs = (GScopeObject *)_gwindowInit((GWindowObject *)gs, x, y, cx, cy, sizeof(GScopeObject)))) + if (!(gs = (GScopeObject *)_gwindowCreate((GWindowObject *)gs, x, y, cx, cy, sizeof(GScopeObject)))) return 0; /* Initialise the scope object members and allocate memory for buffers */ diff --git a/demos/modules/gaudin/gwinosc.c b/demos/modules/gaudin/gwinosc.c index e90430d3..975c2c06 100644 --- a/demos/modules/gaudin/gwinosc.c +++ b/demos/modules/gaudin/gwinosc.c @@ -54,7 +54,7 @@ GHandle gwinCreateScope(GScopeObject *gs, coord_t x, coord_t y, coord_t cx, coord_t cy, uint16_t channel, uint32_t frequency) { /* Initialise the base class GWIN */ - if (!(gs = (GScopeObject *)_gwindowInit((GWindowObject *)gs, x, y, cx, cy, sizeof(GScopeObject)))) + if (!(gs = (GScopeObject *)_gwindowCreate((GWindowObject *)gs, x, y, cx, cy, sizeof(GScopeObject)))) return 0; /* Initialise the scope object members and allocate memory for buffers */ diff --git a/demos/modules/gwin/widgets/gfxconf.h b/demos/modules/gwin/widgets/gfxconf.h index b4574149..411d829e 100644 --- a/demos/modules/gwin/widgets/gfxconf.h +++ b/demos/modules/gwin/widgets/gfxconf.h @@ -51,15 +51,17 @@ #define GDISP_NEED_IMAGE_PNG FALSE /* Features for the GWIN sub-system. */ +#define GWIN_NEED_WINDOWMANAGER TRUE #define GWIN_NEED_CONSOLE TRUE #define GWIN_NEED_GRAPH FALSE +#define GWIN_NEED_WIDGET TRUE #define GWIN_NEED_BUTTON TRUE #define GWIN_NEED_SLIDER TRUE #define GWIN_NEED_CHECKBOX TRUE /* Features for the GINPUT sub-system. */ #define GINPUT_NEED_MOUSE TRUE -#define GINPUT_NEED_TOGGLE FALSE +#define GINPUT_NEED_TOGGLE TRUE #define GINPUT_NEED_DIAL FALSE #endif /* _GFXCONF_H */ diff --git a/demos/modules/gwin/widgets/main.c b/demos/modules/gwin/widgets/main.c index 2102d3a2..1c34b9fa 100644 --- a/demos/modules/gwin/widgets/main.c +++ b/demos/modules/gwin/widgets/main.c @@ -49,11 +49,20 @@ int main(void) { gfxInit(); gdispClear(White); - // Set the font and defalt colors + // Set the widget defaults gwinSetDefaultFont(gdispOpenFont("UI2")); gwinSetDefaultColor(Black); gwinSetDefaultBgColor(White); + // We want to listen for widget events + geventListenerInit(&gl); + gwinAttachListener(&gl); + + // Connect the mouse + #if GINPUT_NEED_MOUSE + gwinAttachMouse(0); + #endif + // Create out gwin windows/widgets ghConsole = gwinCreateConsole(NULL, ScrWidth/2+1, ScrHeight/2+1, ScrWidth/2-1, ScrHeight/2-1); ghButton1 = gwinCreateButton(NULL, 0+0*(BUTTON_WIDTH+1), 0, BUTTON_WIDTH, BUTTON_HEIGHT); @@ -84,49 +93,28 @@ int main(void) { gwinSetText(ghCheckbox1, "C1", FALSE); gwinSetText(ghCheckbox2, "C2", FALSE); - // Assign the mouse and dials to the buttons & sliders etc. -#if GINPUT_NEED_MOUSE - gwinAttachMouse(ghButton1, 0); - gwinAttachMouse(ghButton2, 0); - gwinAttachMouse(ghButton3, 0); - gwinAttachMouse(ghButton4, 0); - gwinAttachMouse(ghSlider1, 0); - gwinAttachMouse(ghSlider2, 0); - gwinAttachMouse(ghSlider3, 0); - gwinAttachMouse(ghSlider4, 0); - gwinAttachMouse(ghCheckbox1, 0); - gwinAttachMouse(ghCheckbox2, 0); -#endif -#if GINPUT_NEED_DIAL - gwinAttachSliderDial(ghSlider1, 0); - gwinAttachSliderDial(ghSlider3, 1); -#endif - - // We want to listen for widget events - geventListenerInit(&gl); - gwinAttachListener(ghButton1, &gl, 0); - gwinAttachListener(ghButton2, &gl, 0); - gwinAttachListener(ghButton3, &gl, 0); - gwinAttachListener(ghButton4, &gl, 0); - gwinAttachListener(ghSlider1, &gl, 0); - gwinAttachListener(ghSlider2, &gl, 0); - gwinAttachListener(ghSlider3, &gl, 0); - gwinAttachListener(ghSlider4, &gl, 0); - gwinAttachListener(ghCheckbox1, &gl, 0); - gwinAttachListener(ghCheckbox2, &gl, 0); + // Assign toggles and dials to the 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 // Draw everything on the screen gwinClear(ghConsole); - gwinDraw(ghButton1); - gwinDraw(ghButton2); - gwinDraw(ghButton3); - gwinDraw(ghButton4); - gwinDraw(ghSlider1); - gwinDraw(ghSlider2); - gwinDraw(ghSlider3); - gwinDraw(ghSlider4); - gwinDraw(ghCheckbox1); - gwinDraw(ghCheckbox2); + gwinSetVisible(ghButton1, TRUE); + gwinSetVisible(ghButton2, TRUE); + gwinSetVisible(ghButton3, TRUE); + gwinSetVisible(ghButton4, TRUE); + gwinSetVisible(ghSlider1, TRUE); + gwinSetVisible(ghSlider2, TRUE); + gwinSetVisible(ghSlider3, TRUE); + gwinSetVisible(ghSlider4, TRUE); + gwinSetVisible(ghCheckbox1, TRUE); + gwinSetVisible(ghCheckbox2, TRUE); while(1) { // Get an Event -- cgit v1.2.3 From 49b3e8f55ae135ce6475d1185db68e665430fe5e Mon Sep 17 00:00:00 2001 From: inmarket Date: Sat, 15 Jun 2013 21:09:02 +1000 Subject: License header updates --- demos/modules/gadc/gfxconf.h | 1 + demos/modules/gadc/gwinosc.c | 1 + demos/modules/gadc/gwinosc.h | 1 + demos/modules/gadc/main.c | 1 + demos/modules/gaudin/gfxconf.h | 1 + demos/modules/gaudin/gwinosc.c | 1 + demos/modules/gaudin/gwinosc.h | 1 + demos/modules/gaudin/main.c | 1 + demos/modules/gdisp/gdisp_basics/gfxconf.h | 1 + demos/modules/gdisp/gdisp_basics/main.c | 1 + demos/modules/gdisp/gdisp_circles/gfxconf.h | 1 + demos/modules/gdisp/gdisp_circles/main.c | 1 + demos/modules/gdisp/gdisp_images/gfxconf.h | 1 + demos/modules/gdisp/gdisp_images/main.c | 1 + .../modules/gdisp/gdisp_images_animated/gfxconf.h | 32 ++++++++++++++++++---- demos/modules/gdisp/gdisp_images_animated/main.c | 1 + demos/modules/gdisp/gdisp_text/gfxconf.h | 1 + demos/modules/gdisp/gdisp_text/main.c | 1 + demos/modules/ginput/touch_driver_test/gfxconf.h | 1 + demos/modules/ginput/touch_driver_test/main.c | 1 + demos/modules/graph/gfxconf.h | 1 + demos/modules/graph/main.c | 1 + demos/modules/gtimer/gfxconf.h | 1 + demos/modules/gtimer/main.c | 1 + demos/modules/gwin/basic/gfxconf.h | 32 ++++++++++++++++++---- demos/modules/gwin/basic/main.c | 1 + demos/modules/gwin/console/gfxconf.h | 32 ++++++++++++++++++---- demos/modules/gwin/console/main.c | 1 + demos/modules/gwin/slider/gfxconf.h | 32 ++++++++++++++++++---- demos/modules/gwin/slider/main.c | 1 + demos/modules/gwin/widgets/gfxconf.h | 30 ++++++++++++++++---- demos/modules/gwin/widgets/main.c | 1 + demos/modules/tdisp/gfxconf.h | 1 + demos/modules/tdisp/main.c | 1 + 34 files changed, 158 insertions(+), 29 deletions(-) (limited to 'demos/modules') diff --git a/demos/modules/gadc/gfxconf.h b/demos/modules/gadc/gfxconf.h index 17bc5a6b..ee3d755f 100644 --- a/demos/modules/gadc/gfxconf.h +++ b/demos/modules/gadc/gfxconf.h @@ -1,5 +1,6 @@ /* * 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 diff --git a/demos/modules/gadc/gwinosc.c b/demos/modules/gadc/gwinosc.c index 60a08686..0b8dee2f 100644 --- a/demos/modules/gadc/gwinosc.c +++ b/demos/modules/gadc/gwinosc.c @@ -1,5 +1,6 @@ /* * 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 diff --git a/demos/modules/gadc/gwinosc.h b/demos/modules/gadc/gwinosc.h index 1a2e7f18..eeb2a181 100644 --- a/demos/modules/gadc/gwinosc.h +++ b/demos/modules/gadc/gwinosc.h @@ -1,5 +1,6 @@ /* * 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 diff --git a/demos/modules/gadc/main.c b/demos/modules/gadc/main.c index 4acf1da7..3346722c 100644 --- a/demos/modules/gadc/main.c +++ b/demos/modules/gadc/main.c @@ -1,5 +1,6 @@ /* * 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 diff --git a/demos/modules/gaudin/gfxconf.h b/demos/modules/gaudin/gfxconf.h index 01981087..2f8551c7 100644 --- a/demos/modules/gaudin/gfxconf.h +++ b/demos/modules/gaudin/gfxconf.h @@ -1,5 +1,6 @@ /* * 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 diff --git a/demos/modules/gaudin/gwinosc.c b/demos/modules/gaudin/gwinosc.c index 975c2c06..2557eeea 100644 --- a/demos/modules/gaudin/gwinosc.c +++ b/demos/modules/gaudin/gwinosc.c @@ -1,5 +1,6 @@ /* * 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 diff --git a/demos/modules/gaudin/gwinosc.h b/demos/modules/gaudin/gwinosc.h index d696e276..f3243f52 100644 --- a/demos/modules/gaudin/gwinosc.h +++ b/demos/modules/gaudin/gwinosc.h @@ -1,5 +1,6 @@ /* * 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 diff --git a/demos/modules/gaudin/main.c b/demos/modules/gaudin/main.c index a647d4af..cebfb1f1 100644 --- a/demos/modules/gaudin/main.c +++ b/demos/modules/gaudin/main.c @@ -1,5 +1,6 @@ /* * 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 diff --git a/demos/modules/gdisp/gdisp_basics/gfxconf.h b/demos/modules/gdisp/gdisp_basics/gfxconf.h index b632f6e0..0de4cdb2 100644 --- a/demos/modules/gdisp/gdisp_basics/gfxconf.h +++ b/demos/modules/gdisp/gdisp_basics/gfxconf.h @@ -1,5 +1,6 @@ /* * 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 diff --git a/demos/modules/gdisp/gdisp_basics/main.c b/demos/modules/gdisp/gdisp_basics/main.c index d7a1b5e3..6067328a 100644 --- a/demos/modules/gdisp/gdisp_basics/main.c +++ b/demos/modules/gdisp/gdisp_basics/main.c @@ -1,5 +1,6 @@ /* * 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 diff --git a/demos/modules/gdisp/gdisp_circles/gfxconf.h b/demos/modules/gdisp/gdisp_circles/gfxconf.h index cd7515d9..028a5781 100644 --- a/demos/modules/gdisp/gdisp_circles/gfxconf.h +++ b/demos/modules/gdisp/gdisp_circles/gfxconf.h @@ -1,5 +1,6 @@ /* * 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 diff --git a/demos/modules/gdisp/gdisp_circles/main.c b/demos/modules/gdisp/gdisp_circles/main.c index 3a9675bb..c690d4a3 100644 --- a/demos/modules/gdisp/gdisp_circles/main.c +++ b/demos/modules/gdisp/gdisp_circles/main.c @@ -1,5 +1,6 @@ /* * 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 diff --git a/demos/modules/gdisp/gdisp_images/gfxconf.h b/demos/modules/gdisp/gdisp_images/gfxconf.h index 866f3ba7..90d9714e 100644 --- a/demos/modules/gdisp/gdisp_images/gfxconf.h +++ b/demos/modules/gdisp/gdisp_images/gfxconf.h @@ -1,5 +1,6 @@ /* * 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 diff --git a/demos/modules/gdisp/gdisp_images/main.c b/demos/modules/gdisp/gdisp_images/main.c index 3fc20490..78208d08 100644 --- a/demos/modules/gdisp/gdisp_images/main.c +++ b/demos/modules/gdisp/gdisp_images/main.c @@ -1,5 +1,6 @@ /* * 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 diff --git a/demos/modules/gdisp/gdisp_images_animated/gfxconf.h b/demos/modules/gdisp/gdisp_images_animated/gfxconf.h index 9a734924..a2d36643 100644 --- a/demos/modules/gdisp/gdisp_images_animated/gfxconf.h +++ b/demos/modules/gdisp/gdisp_images_animated/gfxconf.h @@ -1,9 +1,29 @@ -/** - * This file has a different license to the rest of the GFX 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. +/* + * 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. */ #ifndef _GFXCONF_H diff --git a/demos/modules/gdisp/gdisp_images_animated/main.c b/demos/modules/gdisp/gdisp_images_animated/main.c index c4ae9d02..48b8e1cf 100644 --- a/demos/modules/gdisp/gdisp_images_animated/main.c +++ b/demos/modules/gdisp/gdisp_images_animated/main.c @@ -1,5 +1,6 @@ /* * 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 diff --git a/demos/modules/gdisp/gdisp_text/gfxconf.h b/demos/modules/gdisp/gdisp_text/gfxconf.h index 01fc2749..8a97282a 100644 --- a/demos/modules/gdisp/gdisp_text/gfxconf.h +++ b/demos/modules/gdisp/gdisp_text/gfxconf.h @@ -1,5 +1,6 @@ /* * 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 diff --git a/demos/modules/gdisp/gdisp_text/main.c b/demos/modules/gdisp/gdisp_text/main.c index 042ccc5b..c00af183 100644 --- a/demos/modules/gdisp/gdisp_text/main.c +++ b/demos/modules/gdisp/gdisp_text/main.c @@ -1,5 +1,6 @@ /* * 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 diff --git a/demos/modules/ginput/touch_driver_test/gfxconf.h b/demos/modules/ginput/touch_driver_test/gfxconf.h index ee96f23c..e3a302d0 100644 --- a/demos/modules/ginput/touch_driver_test/gfxconf.h +++ b/demos/modules/ginput/touch_driver_test/gfxconf.h @@ -1,5 +1,6 @@ /* * 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 diff --git a/demos/modules/ginput/touch_driver_test/main.c b/demos/modules/ginput/touch_driver_test/main.c index 424b2587..1894a439 100644 --- a/demos/modules/ginput/touch_driver_test/main.c +++ b/demos/modules/ginput/touch_driver_test/main.c @@ -1,5 +1,6 @@ /* * 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 diff --git a/demos/modules/graph/gfxconf.h b/demos/modules/graph/gfxconf.h index f54cfe1a..0ce90c94 100644 --- a/demos/modules/graph/gfxconf.h +++ b/demos/modules/graph/gfxconf.h @@ -1,5 +1,6 @@ /* * 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 diff --git a/demos/modules/graph/main.c b/demos/modules/graph/main.c index f74ecb5d..f05295e5 100644 --- a/demos/modules/graph/main.c +++ b/demos/modules/graph/main.c @@ -1,5 +1,6 @@ /* * 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 diff --git a/demos/modules/gtimer/gfxconf.h b/demos/modules/gtimer/gfxconf.h index 8e996d52..0b89cd04 100644 --- a/demos/modules/gtimer/gfxconf.h +++ b/demos/modules/gtimer/gfxconf.h @@ -1,5 +1,6 @@ /* * 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 diff --git a/demos/modules/gtimer/main.c b/demos/modules/gtimer/main.c index 6d09d594..5c7d1978 100644 --- a/demos/modules/gtimer/main.c +++ b/demos/modules/gtimer/main.c @@ -1,5 +1,6 @@ /* * 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 diff --git a/demos/modules/gwin/basic/gfxconf.h b/demos/modules/gwin/basic/gfxconf.h index dd8376bf..5445e47c 100644 --- a/demos/modules/gwin/basic/gfxconf.h +++ b/demos/modules/gwin/basic/gfxconf.h @@ -1,9 +1,29 @@ -/** - * This file has a different license to the rest of the GFX 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. +/* + * 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. */ #ifndef _GFXCONF_H diff --git a/demos/modules/gwin/basic/main.c b/demos/modules/gwin/basic/main.c index fa618e0f..17796918 100644 --- a/demos/modules/gwin/basic/main.c +++ b/demos/modules/gwin/basic/main.c @@ -1,5 +1,6 @@ /* * 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 diff --git a/demos/modules/gwin/console/gfxconf.h b/demos/modules/gwin/console/gfxconf.h index 46361c9b..802914b6 100644 --- a/demos/modules/gwin/console/gfxconf.h +++ b/demos/modules/gwin/console/gfxconf.h @@ -1,9 +1,29 @@ -/** - * This file has a different license to the rest of the GFX 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. +/* + * 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. */ #ifndef _GFXCONF_H diff --git a/demos/modules/gwin/console/main.c b/demos/modules/gwin/console/main.c index 557cf988..6ca3f073 100644 --- a/demos/modules/gwin/console/main.c +++ b/demos/modules/gwin/console/main.c @@ -1,5 +1,6 @@ /* * 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 diff --git a/demos/modules/gwin/slider/gfxconf.h b/demos/modules/gwin/slider/gfxconf.h index 84698905..54f9547e 100644 --- a/demos/modules/gwin/slider/gfxconf.h +++ b/demos/modules/gwin/slider/gfxconf.h @@ -1,9 +1,29 @@ -/** - * This file has a different license to the rest of the GFX 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. +/* + * 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. */ #ifndef _GFXCONF_H diff --git a/demos/modules/gwin/slider/main.c b/demos/modules/gwin/slider/main.c index c56a1aa7..09906420 100644 --- a/demos/modules/gwin/slider/main.c +++ b/demos/modules/gwin/slider/main.c @@ -1,5 +1,6 @@ /* * 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 diff --git a/demos/modules/gwin/widgets/gfxconf.h b/demos/modules/gwin/widgets/gfxconf.h index 411d829e..5c862441 100644 --- a/demos/modules/gwin/widgets/gfxconf.h +++ b/demos/modules/gwin/widgets/gfxconf.h @@ -1,9 +1,29 @@ /* - * This file has a different license to the rest of the GFX 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. + * 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. */ #ifndef _GFXCONF_H diff --git a/demos/modules/gwin/widgets/main.c b/demos/modules/gwin/widgets/main.c index 1c34b9fa..33c288f4 100644 --- a/demos/modules/gwin/widgets/main.c +++ b/demos/modules/gwin/widgets/main.c @@ -1,5 +1,6 @@ /* * 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 diff --git a/demos/modules/tdisp/gfxconf.h b/demos/modules/tdisp/gfxconf.h index eeaaa2a2..a90ab9c0 100644 --- a/demos/modules/tdisp/gfxconf.h +++ b/demos/modules/tdisp/gfxconf.h @@ -1,5 +1,6 @@ /* * 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 diff --git a/demos/modules/tdisp/main.c b/demos/modules/tdisp/main.c index face28c1..ee1c5b58 100644 --- a/demos/modules/tdisp/main.c +++ b/demos/modules/tdisp/main.c @@ -1,5 +1,6 @@ /* * 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 -- cgit v1.2.3 From 8ed9e763c0f97f2946990a911bb940f8c80ff761 Mon Sep 17 00:00:00 2001 From: inmarket Date: Mon, 24 Jun 2013 22:58:37 +1000 Subject: GWIN reduce Initialisation parameters and fix visibility issues --- demos/modules/gwin/widgets/gfxconf.h | 2 +- demos/modules/gwin/widgets/main.c | 83 ++++++++++++++++++------------------ 2 files changed, 42 insertions(+), 43 deletions(-) (limited to 'demos/modules') diff --git a/demos/modules/gwin/widgets/gfxconf.h b/demos/modules/gwin/widgets/gfxconf.h index 5c862441..fb83f860 100644 --- a/demos/modules/gwin/widgets/gfxconf.h +++ b/demos/modules/gwin/widgets/gfxconf.h @@ -73,7 +73,7 @@ /* Features for the GWIN sub-system. */ #define GWIN_NEED_WINDOWMANAGER TRUE #define GWIN_NEED_CONSOLE TRUE -#define GWIN_NEED_GRAPH FALSE +#define GWIN_NEED_GRAPH TRUE #define GWIN_NEED_WIDGET TRUE #define GWIN_NEED_BUTTON TRUE #define GWIN_NEED_SLIDER TRUE diff --git a/demos/modules/gwin/widgets/main.c b/demos/modules/gwin/widgets/main.c index 33c288f4..70f64572 100644 --- a/demos/modules/gwin/widgets/main.c +++ b/demos/modules/gwin/widgets/main.c @@ -64,35 +64,47 @@ int main(void) { gwinAttachMouse(0); #endif - // Create out gwin windows/widgets - ghConsole = gwinCreateConsole(NULL, ScrWidth/2+1, ScrHeight/2+1, ScrWidth/2-1, ScrHeight/2-1); - ghButton1 = gwinCreateButton(NULL, 0+0*(BUTTON_WIDTH+1), 0, BUTTON_WIDTH, BUTTON_HEIGHT); - ghButton2 = gwinCreateButton(NULL, 0+1*(BUTTON_WIDTH+1), 0, BUTTON_WIDTH, BUTTON_HEIGHT); - ghButton3 = gwinCreateButton(NULL, 0+2*(BUTTON_WIDTH+1), 0, BUTTON_WIDTH, BUTTON_HEIGHT); - ghButton4 = gwinCreateButton(NULL, 0+3*(BUTTON_WIDTH+1), 0, BUTTON_WIDTH, BUTTON_HEIGHT); - ghSlider1 = gwinCreateSlider(NULL, ScrWidth/2+1, ScrHeight/2-2*(SLIDER_WIDTH+1), ScrWidth/2-2, SLIDER_WIDTH); - ghSlider2 = gwinCreateSlider(NULL, ScrWidth/2+1, ScrHeight/2-1*(SLIDER_WIDTH+1), ScrWidth/2-2, SLIDER_WIDTH); - ghSlider3 = gwinCreateSlider(NULL, 0+0*(SLIDER_WIDTH+1), ScrHeight/2+1, SLIDER_WIDTH, ScrHeight/2-2); - ghSlider4 = gwinCreateSlider(NULL, 0+1*(SLIDER_WIDTH+1), ScrHeight/2+1, SLIDER_WIDTH, ScrHeight/2-2); - ghCheckbox1 = gwinCreateCheckbox(NULL, 0, BUTTON_HEIGHT+1, CHECKBOX_WIDTH, CHECKBOX_HEIGHT); - ghCheckbox2 = gwinCreateCheckbox(NULL, 0, BUTTON_HEIGHT+1+1*(CHECKBOX_HEIGHT+1), CHECKBOX_WIDTH, CHECKBOX_HEIGHT); - - // Color everything and set special drawing for some widgets - gwinSetColor(ghConsole, Yellow); - gwinSetBgColor(ghConsole, Black); - gwinSetCustomDraw(ghCheckbox2, gwinCheckboxDraw_CheckOnRight, 0); - - // Set the text on all the controls - gwinSetText(ghButton1, "B1", FALSE); - gwinSetText(ghButton2, "B2", FALSE); - gwinSetText(ghButton3, "B3", FALSE); - gwinSetText(ghButton4, "B4", FALSE); - gwinSetText(ghSlider1, "S1", FALSE); - gwinSetText(ghSlider2, "S2", FALSE); - gwinSetText(ghSlider3, "S3", FALSE); - gwinSetText(ghSlider4, "S4", FALSE); - gwinSetText(ghCheckbox1, "C1", FALSE); - gwinSetText(ghCheckbox2, "C2", FALSE); + // Create the gwin windows/widgets + { + GWidgetInit wi; + + wi.g.show = TRUE; + + // Buttons + wi.g.width = BUTTON_WIDTH; wi.g.height = BUTTON_HEIGHT; wi.g.y = 0; + wi.g.x = 0+0*(BUTTON_WIDTH+1); wi.text = "B1"; ghButton1 = gwinCreateButton(NULL, &wi); + wi.g.x = 0+1*(BUTTON_WIDTH+1); wi.text = "B2"; ghButton2 = gwinCreateButton(NULL, &wi); + wi.g.x = 0+2*(BUTTON_WIDTH+1); wi.text = "B3"; ghButton3 = gwinCreateButton(NULL, &wi); + wi.g.x = 0+3*(BUTTON_WIDTH+1); wi.text = "B4"; ghButton4 = gwinCreateButton(NULL, &wi); + + // Horizontal Sliders + wi.g.width = ScrWidth/2-2; wi.g.height = SLIDER_WIDTH; wi.g.x = ScrWidth/2+1; + wi.g.y = ScrHeight/2-2*(SLIDER_WIDTH+1); wi.text = "S1"; ghSlider1 = gwinCreateSlider(NULL, &wi); + wi.g.y = ScrHeight/2-1*(SLIDER_WIDTH+1); wi.text = "S2"; ghSlider2 = gwinCreateSlider(NULL, &wi); + + // Vertical Sliders + wi.g.width = SLIDER_WIDTH; wi.g.height = ScrHeight/2-2; wi.g.y = ScrHeight/2+1; + wi.g.x = 0+0*(SLIDER_WIDTH+1); wi.text = "S3"; ghSlider3 = gwinCreateSlider(NULL, &wi); + wi.g.x = 0+1*(SLIDER_WIDTH+1); wi.text = "S4"; ghSlider4 = gwinCreateSlider(NULL, &wi); + + // Checkboxes - for the 2nd checkbox we apply special drawing before making it visible + wi.g.width = CHECKBOX_WIDTH; wi.g.height = CHECKBOX_HEIGHT; wi.g.x = 0; + wi.g.y = BUTTON_HEIGHT+1+0*(CHECKBOX_HEIGHT+1); wi.text = "C1"; ghCheckbox1 = gwinCreateCheckbox(NULL, &wi); + wi.g.show = FALSE; + wi.g.y = BUTTON_HEIGHT+1+1*(CHECKBOX_HEIGHT+1); wi.text = "C2"; ghCheckbox2 = gwinCreateCheckbox(NULL, &wi); + gwinSetCustomDraw(ghCheckbox2, gwinCheckboxDraw_CheckOnRight, 0); + gwinSetVisible(ghCheckbox2, TRUE); + + // Console - we apply some special colors before making it visible + wi.g.show = FALSE; + wi.g.width = ScrWidth/2-1; wi.g.height = ScrHeight/2-1; + wi.g.x = ScrWidth/2+1; wi.g.y = ScrHeight/2+1; + ghConsole = gwinCreateConsole(NULL, &wi.g); + gwinSetColor(ghConsole, Yellow); + gwinSetBgColor(ghConsole, Black); + gwinSetVisible(ghConsole, TRUE); + gwinClear(ghConsole); + } // Assign toggles and dials to the buttons & sliders etc. #if GINPUT_NEED_TOGGLE @@ -104,19 +116,6 @@ int main(void) { gwinAttachDial(ghSlider3, 0, 1); #endif - // Draw everything on the screen - gwinClear(ghConsole); - gwinSetVisible(ghButton1, TRUE); - gwinSetVisible(ghButton2, TRUE); - gwinSetVisible(ghButton3, TRUE); - gwinSetVisible(ghButton4, TRUE); - gwinSetVisible(ghSlider1, TRUE); - gwinSetVisible(ghSlider2, TRUE); - gwinSetVisible(ghSlider3, TRUE); - gwinSetVisible(ghSlider4, TRUE); - gwinSetVisible(ghCheckbox1, TRUE); - gwinSetVisible(ghCheckbox2, TRUE); - while(1) { // Get an Event pe = geventEventWait(&gl, TIME_INFINITE); -- cgit v1.2.3 From 775c05f3011dfcf34d137914d8b1785507edf057 Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Mon, 1 Jul 2013 09:09:44 +0200 Subject: in /demos/modules/gwin/widgets disabled ginput toggle by default --- demos/modules/gwin/widgets/gfxconf.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'demos/modules') diff --git a/demos/modules/gwin/widgets/gfxconf.h b/demos/modules/gwin/widgets/gfxconf.h index fb83f860..fd217b0d 100644 --- a/demos/modules/gwin/widgets/gfxconf.h +++ b/demos/modules/gwin/widgets/gfxconf.h @@ -81,7 +81,7 @@ /* Features for the GINPUT sub-system. */ #define GINPUT_NEED_MOUSE TRUE -#define GINPUT_NEED_TOGGLE TRUE +#define GINPUT_NEED_TOGGLE FALSE #define GINPUT_NEED_DIAL FALSE #endif /* _GFXCONF_H */ -- cgit v1.2.3 From b8b149591f3b68d5f925a60e81ebc6c78f190e99 Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Mon, 1 Jul 2013 09:10:47 +0200 Subject: readme fix --- demos/modules/gwin/widgets/readme.txt | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'demos/modules') diff --git a/demos/modules/gwin/widgets/readme.txt b/demos/modules/gwin/widgets/readme.txt index 02d733e9..bb91e810 100644 --- a/demos/modules/gwin/widgets/readme.txt +++ b/demos/modules/gwin/widgets/readme.txt @@ -4,3 +4,7 @@ gfxconf.h Note that you will need to include the drivers into your project makefile for whichever inputs you decide to use. + +Note that you need to link to the math library. Add -lm to your +library paths in your Makefile. + -- cgit v1.2.3 From dce9dc00a8bc9aa400b1354c442044586b82bfbc Mon Sep 17 00:00:00 2001 From: inmarket Date: Thu, 4 Jul 2013 00:22:15 +1000 Subject: Widget demo update --- demos/modules/gwin/widgets/gfxconf.h | 8 +++++--- demos/modules/gwin/widgets/main.c | 14 ++++++++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) (limited to 'demos/modules') diff --git a/demos/modules/gwin/widgets/gfxconf.h b/demos/modules/gwin/widgets/gfxconf.h index fd217b0d..5cf344e4 100644 --- a/demos/modules/gwin/widgets/gfxconf.h +++ b/demos/modules/gwin/widgets/gfxconf.h @@ -45,9 +45,9 @@ #define GDISP_NEED_CLIP TRUE #define GDISP_NEED_TEXT TRUE #define GDISP_NEED_CIRCLE TRUE -#define GDISP_NEED_ELLIPSE TRUE -#define GDISP_NEED_ARC TRUE -#define GDISP_NEED_CONVEX_POLYGON TRUE +#define GDISP_NEED_ELLIPSE FALSE +#define GDISP_NEED_ARC FALSE +#define GDISP_NEED_CONVEX_POLYGON FALSE #define GDISP_NEED_SCROLL FALSE #define GDISP_NEED_PIXELREAD FALSE #define GDISP_NEED_CONTROL FALSE @@ -78,6 +78,8 @@ #define GWIN_NEED_BUTTON TRUE #define GWIN_NEED_SLIDER TRUE #define GWIN_NEED_CHECKBOX TRUE +#define GWIN_NEED_LABEL TRUE +#define GWIN_NEED_IMAGE TRUE /* Features for the GINPUT sub-system. */ #define GINPUT_NEED_MOUSE TRUE diff --git a/demos/modules/gwin/widgets/main.c b/demos/modules/gwin/widgets/main.c index 70f64572..fdd5ed43 100644 --- a/demos/modules/gwin/widgets/main.c +++ b/demos/modules/gwin/widgets/main.c @@ -33,6 +33,7 @@ static GHandle ghConsole; static GHandle ghButton1, ghButton2, ghButton3, ghButton4; static GHandle ghSlider1, ghSlider2, ghSlider3, ghSlider4; static GHandle ghCheckbox1, ghCheckbox2; +static GHandle ghLabel1; #define ScrWidth gdispGetWidth() #define ScrHeight gdispGetHeight() @@ -95,6 +96,9 @@ int main(void) { gwinSetCustomDraw(ghCheckbox2, gwinCheckboxDraw_CheckOnRight, 0); gwinSetVisible(ghCheckbox2, TRUE); + wi.g.show = TRUE; wi.g.width = 0; + wi.g.y = BUTTON_HEIGHT+1+2*(CHECKBOX_HEIGHT+1); wi.text = "L1"; ghLabel1 = gwinLabelCreate(NULL, &wi); + // Console - we apply some special colors before making it visible wi.g.show = FALSE; wi.g.width = ScrWidth/2-1; wi.g.height = ScrHeight/2-1; @@ -116,6 +120,16 @@ int main(void) { gwinAttachDial(ghSlider3, 0, 1); #endif + gfxSleepMilliseconds(5000); + gwinSetBgColor(ghLabel1, Blue); + gwinSetColor(ghLabel1, Yellow); + gwinSetText(ghLabel1, "Very Big Label", FALSE); + + gfxSleepMilliseconds(5000); + gwinSetBgColor(ghLabel1, Yellow); + gwinSetColor(ghLabel1, Red); + gwinSetText(ghLabel1, "L1", FALSE); + while(1) { // Get an Event pe = geventEventWait(&gl, TIME_INFINITE); -- cgit v1.2.3 From 21e52bc85943ed7255380d8d8384780e617bcbf8 Mon Sep 17 00:00:00 2001 From: inmarket Date: Thu, 4 Jul 2013 00:53:41 +1000 Subject: Math library no longer needed on widget demo --- demos/modules/gwin/widgets/readme.txt | 4 ---- 1 file changed, 4 deletions(-) (limited to 'demos/modules') diff --git a/demos/modules/gwin/widgets/readme.txt b/demos/modules/gwin/widgets/readme.txt index bb91e810..02d733e9 100644 --- a/demos/modules/gwin/widgets/readme.txt +++ b/demos/modules/gwin/widgets/readme.txt @@ -4,7 +4,3 @@ gfxconf.h Note that you will need to include the drivers into your project makefile for whichever inputs you decide to use. - -Note that you need to link to the math library. Add -lm to your -library paths in your Makefile. - -- cgit v1.2.3 From 5191c278e7195de62b619be58c19ea338c31d54c Mon Sep 17 00:00:00 2001 From: inmarket Date: Sat, 6 Jul 2013 01:46:34 +1000 Subject: Add Radio buttons (can also be used as a Tab group) --- demos/modules/gwin/widgets/gfxconf.h | 1 + demos/modules/gwin/widgets/main.c | 102 ++++++++++++++++++++++++++++------- 2 files changed, 84 insertions(+), 19 deletions(-) (limited to 'demos/modules') diff --git a/demos/modules/gwin/widgets/gfxconf.h b/demos/modules/gwin/widgets/gfxconf.h index 5cf344e4..1665047c 100644 --- a/demos/modules/gwin/widgets/gfxconf.h +++ b/demos/modules/gwin/widgets/gfxconf.h @@ -80,6 +80,7 @@ #define GWIN_NEED_CHECKBOX TRUE #define GWIN_NEED_LABEL TRUE #define GWIN_NEED_IMAGE TRUE +#define GWIN_NEED_RADIO TRUE /* Features for the GINPUT sub-system. */ #define GINPUT_NEED_MOUSE TRUE diff --git a/demos/modules/gwin/widgets/main.c b/demos/modules/gwin/widgets/main.c index fdd5ed43..e44ce6b0 100644 --- a/demos/modules/gwin/widgets/main.c +++ b/demos/modules/gwin/widgets/main.c @@ -30,19 +30,36 @@ static GListener gl; static GHandle ghConsole; +static GHandle ghTabButtons, ghTabSliders, ghTabCheckboxes, ghTabLabels, ghTabRadios, ghTabImages; static GHandle ghButton1, ghButton2, ghButton3, ghButton4; static GHandle ghSlider1, ghSlider2, ghSlider3, ghSlider4; static GHandle ghCheckbox1, ghCheckbox2; static GHandle ghLabel1; +static GHandle ghRadio1, ghRadio2; +//static GHandle ghImage1; #define ScrWidth gdispGetWidth() #define ScrHeight gdispGetHeight() +#define TAB_HEIGHT 30 #define BUTTON_WIDTH 50 #define BUTTON_HEIGHT 30 #define SLIDER_WIDTH 20 #define CHECKBOX_WIDTH 80 #define CHECKBOX_HEIGHT 20 +#define RADIO_WIDTH 50 +#define RADIO_HEIGHT 20 +#define GROUP_TABS 0 +#define GROUP_R1R2 1 + +static GHandle createTab(GWidgetInit *pwi) { + GHandle gh; + + gh = gwinCreateRadio(NULL, pwi, GROUP_TABS); + gwinSetCustomDraw(gh, gwinRadioDraw_Tab, 0); + gwinSetVisible(gh, TRUE); + return gh; +} int main(void) { GEvent * pe; @@ -69,10 +86,17 @@ int main(void) { { GWidgetInit wi; - wi.g.show = TRUE; + // Create the Tabs + wi.g.show = FALSE; wi.g.width = ScrWidth/6; wi.g.height = TAB_HEIGHT; wi.g.y = 0; + wi.g.x = 0*wi.g.width; wi.text = "Buttons"; ghTabButtons = createTab(&wi); + wi.g.x = 1*wi.g.width; wi.text = "Sliders"; ghTabSliders = createTab(&wi); + wi.g.x = 2*wi.g.width; wi.text = "Checkbox"; ghTabCheckboxes = createTab(&wi); + wi.g.x = 3*wi.g.width; wi.text = "Labels"; ghTabLabels = createTab(&wi); + wi.g.x = 4*wi.g.width; wi.text = "Radios"; ghTabRadios = createTab(&wi); + wi.g.x = 5*wi.g.width; wi.text = "Images"; ghTabImages = createTab(&wi); // Buttons - wi.g.width = BUTTON_WIDTH; wi.g.height = BUTTON_HEIGHT; wi.g.y = 0; + wi.g.width = BUTTON_WIDTH; wi.g.height = BUTTON_HEIGHT; wi.g.y = TAB_HEIGHT+5; wi.g.x = 0+0*(BUTTON_WIDTH+1); wi.text = "B1"; ghButton1 = gwinCreateButton(NULL, &wi); wi.g.x = 0+1*(BUTTON_WIDTH+1); wi.text = "B2"; ghButton2 = gwinCreateButton(NULL, &wi); wi.g.x = 0+2*(BUTTON_WIDTH+1); wi.text = "B3"; ghButton3 = gwinCreateButton(NULL, &wi); @@ -90,24 +114,25 @@ int main(void) { // Checkboxes - for the 2nd checkbox we apply special drawing before making it visible wi.g.width = CHECKBOX_WIDTH; wi.g.height = CHECKBOX_HEIGHT; wi.g.x = 0; - wi.g.y = BUTTON_HEIGHT+1+0*(CHECKBOX_HEIGHT+1); wi.text = "C1"; ghCheckbox1 = gwinCreateCheckbox(NULL, &wi); - wi.g.show = FALSE; - wi.g.y = BUTTON_HEIGHT+1+1*(CHECKBOX_HEIGHT+1); wi.text = "C2"; ghCheckbox2 = gwinCreateCheckbox(NULL, &wi); + wi.g.y = TAB_HEIGHT+5+0*(CHECKBOX_HEIGHT+1); wi.text = "C1"; ghCheckbox1 = gwinCreateCheckbox(NULL, &wi); + wi.g.y = TAB_HEIGHT+5+1*(CHECKBOX_HEIGHT+1); wi.text = "C2"; ghCheckbox2 = gwinCreateCheckbox(NULL, &wi); gwinSetCustomDraw(ghCheckbox2, gwinCheckboxDraw_CheckOnRight, 0); - gwinSetVisible(ghCheckbox2, TRUE); - wi.g.show = TRUE; wi.g.width = 0; - wi.g.y = BUTTON_HEIGHT+1+2*(CHECKBOX_HEIGHT+1); wi.text = "L1"; ghLabel1 = gwinLabelCreate(NULL, &wi); + // Labels + wi.g.width = 0; // dynamic width + wi.g.y = TAB_HEIGHT+5+2*(CHECKBOX_HEIGHT+1); wi.text = "L1"; ghLabel1 = gwinLabelCreate(NULL, &wi); + + // Radio Buttons + wi.g.width = RADIO_WIDTH; wi.g.height = RADIO_HEIGHT; wi.g.y = TAB_HEIGHT+5; + wi.g.x = 0*wi.g.width; wi.text = "Yes"; ghRadio1 = gwinCreateRadio(NULL, &wi, GROUP_R1R2); + wi.g.x = 1*wi.g.width; wi.text = "No"; ghRadio2 = gwinCreateRadio(NULL, &wi, GROUP_R1R2); // Console - we apply some special colors before making it visible - wi.g.show = FALSE; wi.g.width = ScrWidth/2-1; wi.g.height = ScrHeight/2-1; wi.g.x = ScrWidth/2+1; wi.g.y = ScrHeight/2+1; ghConsole = gwinCreateConsole(NULL, &wi.g); gwinSetColor(ghConsole, Yellow); gwinSetBgColor(ghConsole, Black); - gwinSetVisible(ghConsole, TRUE); - gwinClear(ghConsole); } // Assign toggles and dials to the buttons & sliders etc. @@ -120,15 +145,12 @@ int main(void) { gwinAttachDial(ghSlider3, 0, 1); #endif - gfxSleepMilliseconds(5000); - gwinSetBgColor(ghLabel1, Blue); - gwinSetColor(ghLabel1, Yellow); - gwinSetText(ghLabel1, "Very Big Label", FALSE); + // Make the console visible + gwinSetVisible(ghConsole, TRUE); + gwinClear(ghConsole); - gfxSleepMilliseconds(5000); - gwinSetBgColor(ghLabel1, Yellow); - gwinSetColor(ghLabel1, Red); - gwinSetText(ghLabel1, "L1", FALSE); + // Press the Buttons Tab + gwinPressRadio(ghTabButtons); while(1) { // Get an Event @@ -144,6 +166,48 @@ int main(void) { case GEVENT_GWIN_CHECKBOX: gwinPrintf(ghConsole, "Checkbox %s=%s\n", gwinGetText(((GEventGWinCheckbox *)pe)->checkbox), ((GEventGWinCheckbox *)pe)->isChecked ? "Checked" : "UnChecked"); break; + case GEVENT_GWIN_RADIO: + gwinPrintf(ghConsole, "Radio Group %u=%s\n", ((GEventGWinRadio *)pe)->group, gwinGetText(((GEventGWinRadio *)pe)->radio)); + + // Is this the tab radio's + if (((GEventGWinRadio *)pe)->group == GROUP_TABS) { + + // Do some special animation for Label1 + if (((GEventGWinRadio *)pe)->radio == ghTabLabels) { + gwinSetBgColor(ghLabel1, gwinGetDefaultBgColor()); + gwinSetColor(ghLabel1, gwinGetDefaultColor()); + } + + // Set control visibility depending on the tab selected + gwinSetVisible(ghButton1, ((GEventGWinRadio *)pe)->radio == ghTabButtons); + gwinSetVisible(ghButton2, ((GEventGWinRadio *)pe)->radio == ghTabButtons); + gwinSetVisible(ghButton3, ((GEventGWinRadio *)pe)->radio == ghTabButtons); + gwinSetVisible(ghButton4, ((GEventGWinRadio *)pe)->radio == ghTabButtons); + gwinSetVisible(ghSlider1, ((GEventGWinRadio *)pe)->radio == ghTabSliders); + gwinSetVisible(ghSlider2, ((GEventGWinRadio *)pe)->radio == ghTabSliders); + gwinSetVisible(ghSlider3, ((GEventGWinRadio *)pe)->radio == ghTabSliders); + gwinSetVisible(ghSlider4, ((GEventGWinRadio *)pe)->radio == ghTabSliders); + gwinSetVisible(ghCheckbox1, ((GEventGWinRadio *)pe)->radio == ghTabCheckboxes); + gwinSetVisible(ghCheckbox2, ((GEventGWinRadio *)pe)->radio == ghTabCheckboxes); + gwinSetVisible(ghLabel1, ((GEventGWinRadio *)pe)->radio == ghTabLabels); + gwinSetVisible(ghRadio1, ((GEventGWinRadio *)pe)->radio == ghTabRadios); + gwinSetVisible(ghRadio2, ((GEventGWinRadio *)pe)->radio == ghTabRadios); + //gwinSetVisible(ghImage1, ((GEventGWinRadio *)pe)->radio == ghTabImages); + + // Do some special animation for Label1 + if (((GEventGWinRadio *)pe)->radio == ghTabLabels) { + gfxSleepMilliseconds(1000); + gwinSetBgColor(ghLabel1, Blue); + gwinSetColor(ghLabel1, Yellow); + gwinSetText(ghLabel1, "Very Big Label", FALSE); + + gfxSleepMilliseconds(1000); + gwinSetBgColor(ghLabel1, Yellow); + gwinSetColor(ghLabel1, Red); + gwinSetText(ghLabel1, "L1", FALSE); + } + } + break; default: gwinPrintf(ghConsole, "Unknown %d\n", pe->type); break; -- cgit v1.2.3 From f2432096cd823bb781d0574492b47c71bd340e1a Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Sat, 6 Jul 2013 14:24:40 +0200 Subject: added GWIN image demo --- demos/modules/gwin/widgets/image_chibios.h | 637 +++++++++++++++++++++++++++++ demos/modules/gwin/widgets/main.c | 13 +- 2 files changed, 648 insertions(+), 2 deletions(-) create mode 100644 demos/modules/gwin/widgets/image_chibios.h (limited to 'demos/modules') diff --git a/demos/modules/gwin/widgets/image_chibios.h b/demos/modules/gwin/widgets/image_chibios.h new file mode 100644 index 00000000..a052395f --- /dev/null +++ b/demos/modules/gwin/widgets/image_chibios.h @@ -0,0 +1,637 @@ +static const unsigned char image_chibios[] = { + 0x47, 0x49, 0x46, 0x38, 0x37, 0x61, 0x74, 0x00, 0x74, 0x00, 0xE7, 0xFE, 0x00, 0x08, 0x07, 0x02, + 0x00, 0x0A, 0x03, 0x08, 0x07, 0x0E, 0x05, 0x0D, 0x00, 0x00, 0x11, 0x02, 0x03, 0x16, 0x01, 0x09, + 0x15, 0x00, 0x00, 0x19, 0x03, 0x14, 0x16, 0x06, 0x00, 0x1D, 0x02, 0x07, 0x1C, 0x01, 0x0F, 0x1A, + 0x01, 0x2D, 0x12, 0x0F, 0x09, 0x1F, 0x00, 0x1F, 0x18, 0x10, 0x03, 0x22, 0x02, 0x10, 0x1F, 0x00, + 0x19, 0x1B, 0x1E, 0x01, 0x26, 0x00, 0x1C, 0x1D, 0x0B, 0x18, 0x21, 0x04, 0x17, 0x20, 0x13, 0x12, + 0x24, 0x00, 0x0B, 0x26, 0x01, 0x0A, 0x22, 0x2F, 0x17, 0x22, 0x0E, 0x02, 0x2C, 0x00, 0x0A, 0x2B, + 0x00, 0x3B, 0x1A, 0x1A, 0x14, 0x27, 0x0D, 0x11, 0x2A, 0x00, 0x17, 0x2A, 0x06, 0x00, 0x33, 0x00, + 0x08, 0x31, 0x00, 0x12, 0x30, 0x00, 0x21, 0x2A, 0x11, 0x23, 0x27, 0x2C, 0x0E, 0x32, 0x0A, 0x1D, + 0x2F, 0x01, 0x0D, 0x35, 0x05, 0x07, 0x38, 0x00, 0x18, 0x32, 0x0C, 0x24, 0x2D, 0x1B, 0x2D, 0x2A, + 0x21, 0x10, 0x36, 0x00, 0x1F, 0x31, 0x12, 0x18, 0x35, 0x00, 0x16, 0x35, 0x06, 0x20, 0x33, 0x0D, + 0x20, 0x32, 0x19, 0x0D, 0x3D, 0x06, 0x15, 0x3B, 0x05, 0x10, 0x3D, 0x00, 0x06, 0x40, 0x00, 0x23, + 0x34, 0x3B, 0x1F, 0x3B, 0x0E, 0x2C, 0x36, 0x1A, 0x49, 0x2D, 0x22, 0x3F, 0x31, 0x1F, 0x1F, 0x3D, + 0x08, 0x1B, 0x3F, 0x01, 0x15, 0x41, 0x03, 0x21, 0x3E, 0x02, 0x12, 0x43, 0x00, 0x1A, 0x40, 0x0B, + 0x28, 0x3B, 0x16, 0x29, 0x3C, 0x10, 0x2F, 0x38, 0x2C, 0x22, 0x3E, 0x17, 0x2F, 0x39, 0x25, 0x29, + 0x3C, 0x1F, 0x38, 0x37, 0x3A, 0x11, 0x48, 0x08, 0x14, 0x48, 0x00, 0x0C, 0x4B, 0x03, 0x1A, 0x47, + 0x09, 0x1D, 0x47, 0x01, 0x23, 0x46, 0x12, 0x12, 0x4E, 0x00, 0x1B, 0x4C, 0x00, 0x25, 0x48, 0x0B, + 0x1A, 0x4D, 0x05, 0x1F, 0x4C, 0x0E, 0x22, 0x4C, 0x06, 0x33, 0x46, 0x1A, 0x2E, 0x47, 0x21, 0x0D, + 0x54, 0x02, 0x37, 0x43, 0x2F, 0x2A, 0x4C, 0x06, 0x39, 0x44, 0x2A, 0x18, 0x52, 0x01, 0x17, 0x53, + 0x0B, 0x31, 0x4A, 0x1D, 0x20, 0x52, 0x0B, 0x38, 0x48, 0x28, 0x34, 0x49, 0x2E, 0x1B, 0x55, 0x04, + 0x16, 0x58, 0x00, 0x25, 0x52, 0x14, 0x25, 0x54, 0x04, 0x14, 0x59, 0x07, 0x1F, 0x57, 0x00, 0x29, + 0x53, 0x0E, 0x2F, 0x51, 0x15, 0x3C, 0x49, 0x41, 0x1F, 0x58, 0x07, 0x2F, 0x51, 0x1E, 0x25, 0x57, + 0x10, 0x1C, 0x5C, 0x01, 0x13, 0x60, 0x03, 0x44, 0x4C, 0x3A, 0x1B, 0x5D, 0x0D, 0x47, 0x4A, 0x4D, + 0x5A, 0x47, 0x3C, 0x24, 0x5C, 0x0D, 0x27, 0x5D, 0x03, 0x20, 0x60, 0x05, 0x1B, 0x64, 0x00, 0x1A, + 0x64, 0x09, 0x3E, 0x51, 0x5D, 0x25, 0x62, 0x00, 0x2F, 0x5D, 0x18, 0x41, 0x55, 0x36, 0x42, 0x52, + 0x52, 0x31, 0x5E, 0x10, 0x32, 0x5C, 0x21, 0x24, 0x63, 0x0A, 0x40, 0x5B, 0x19, 0x2C, 0x63, 0x15, + 0x3C, 0x5E, 0x1A, 0x4C, 0x56, 0x3C, 0x19, 0x6B, 0x05, 0x4D, 0x56, 0x43, 0x1F, 0x69, 0x0F, 0x24, + 0x6A, 0x05, 0x7D, 0x49, 0x47, 0x51, 0x59, 0x33, 0x4C, 0x58, 0x4F, 0x2D, 0x6A, 0x06, 0x5B, 0x55, + 0x52, 0x2C, 0x6A, 0x12, 0x44, 0x61, 0x2C, 0x23, 0x70, 0x00, 0x20, 0x71, 0x0D, 0x34, 0x6A, 0x18, + 0x3B, 0x68, 0x19, 0x2A, 0x6F, 0x0D, 0x3D, 0x69, 0x25, 0x44, 0x68, 0x2B, 0x20, 0x79, 0x0A, 0x2A, + 0x77, 0x09, 0x30, 0x75, 0x14, 0x58, 0x64, 0x48, 0x4F, 0x68, 0x42, 0x34, 0x77, 0x0A, 0x55, 0x64, + 0x67, 0x3B, 0x73, 0x1F, 0x3A, 0x75, 0x15, 0x53, 0x68, 0x4D, 0x5C, 0x65, 0x5C, 0x61, 0x66, 0x54, + 0x49, 0x72, 0x30, 0x2D, 0x7F, 0x05, 0x2D, 0x7E, 0x12, 0x4A, 0x77, 0x29, 0x58, 0x72, 0x4A, 0x3D, + 0x81, 0x22, 0x48, 0x80, 0x2A, 0x62, 0x74, 0x5A, 0x61, 0x75, 0x6D, 0x6C, 0x73, 0x62, 0x5F, 0x75, + 0x76, 0x55, 0x7F, 0x3C, 0x6E, 0x73, 0x6D, 0x72, 0x75, 0x7C, 0x56, 0x8D, 0x2F, 0x46, 0x92, 0x30, + 0x54, 0x8D, 0x3B, 0x62, 0x89, 0x3F, 0x7A, 0x81, 0x73, 0x7B, 0x82, 0x6C, 0x6F, 0x89, 0x5D, 0x76, + 0x86, 0x6B, 0x76, 0x85, 0x89, 0x69, 0x8F, 0x50, 0x7C, 0x87, 0x82, 0x6E, 0x95, 0x4C, 0x82, 0x93, + 0x8D, 0x7B, 0x96, 0x84, 0x8C, 0x92, 0x7C, 0x67, 0xA2, 0x4F, 0x8B, 0x93, 0x84, 0x81, 0x96, 0x9B, + 0x87, 0x98, 0x79, 0x8D, 0x93, 0x99, 0x91, 0xA5, 0x84, 0x90, 0xA3, 0x9C, 0xA1, 0x9F, 0x95, 0x89, + 0xAB, 0x6D, 0x9B, 0xA4, 0x96, 0x91, 0xA7, 0xA6, 0x8F, 0xA8, 0xB0, 0xA2, 0xA7, 0x91, 0xA0, 0xA6, + 0xB1, 0xAA, 0xB1, 0xA1, 0x9F, 0xB7, 0xA7, 0xA6, 0xB4, 0xBB, 0xA2, 0xB8, 0xB0, 0x9C, 0xB9, 0xBE, + 0xA8, 0xB9, 0x9B, 0xB2, 0xB7, 0x9D, 0xBC, 0xB7, 0xB5, 0xC2, 0xC0, 0xA5, 0xAD, 0xC7, 0xC4, 0xA4, + 0xC9, 0xD5, 0xC1, 0xC4, 0xB7, 0xBD, 0xC7, 0xB3, 0xAB, 0xCA, 0xCD, 0xB7, 0xCC, 0xB2, 0xBD, 0xCB, + 0xD5, 0xC9, 0xCD, 0xCB, 0xC8, 0xD3, 0xAD, 0xBB, 0xD6, 0xD2, 0xAF, 0xDC, 0xE4, 0xBE, 0xD9, 0xE2, + 0xC7, 0xDA, 0xC1, 0xD3, 0xD6, 0xC8, 0xD0, 0xDA, 0xC5, 0xCA, 0xD9, 0xE6, 0xDE, 0xDD, 0xC0, 0xD6, + 0xE5, 0xDF, 0xD9, 0xE5, 0xF2, 0xDF, 0xEA, 0xD3, 0xC5, 0xEF, 0xF4, 0xDC, 0xEA, 0xEA, 0xE7, 0xE9, + 0xD9, 0xD3, 0xED, 0xF5, 0xEA, 0xE8, 0xEC, 0xEB, 0xEC, 0xE9, 0xE6, 0xF2, 0xFC, 0xF6, 0xF4, 0xEB, + 0xF0, 0xFA, 0xDA, 0xEC, 0xFB, 0xFB, 0xFA, 0xF7, 0xFC, 0xF2, 0xFC, 0xE3, 0xF7, 0xF9, 0xF5, 0xF3, + 0xFE, 0xEB, 0xFF, 0xFB, 0xFA, 0xFA, 0xFE, 0xEC, 0xFB, 0xFD, 0xF9, 0xF5, 0xFF, 0xFA, 0xF8, 0xFF, + 0xF4, 0xF9, 0xFE, 0xFF, 0xFF, 0xFE, 0xF5, 0xFF, 0xFD, 0xFF, 0xFD, 0xFF, 0xFC, 0x2C, 0x00, 0x00, + 0x00, 0x00, 0x74, 0x00, 0x74, 0x00, 0x00, 0x08, 0xFE, 0x00, 0xFF, 0xFD, 0xF3, 0xE7, 0x4F, 0xA0, + 0x40, 0x82, 0xFE, 0xF8, 0xC9, 0x93, 0xF7, 0xEF, 0x5E, 0xC1, 0x7C, 0xFC, 0xFE, 0xE9, 0x3B, 0x88, + 0xB0, 0x5F, 0xBF, 0x81, 0x06, 0x33, 0x6A, 0xDC, 0x48, 0x11, 0x21, 0xC7, 0x8C, 0x08, 0x43, 0x8A, + 0x2C, 0xD8, 0x51, 0xE4, 0xC7, 0x93, 0x1C, 0x23, 0x7A, 0xA4, 0xF8, 0x8F, 0x9F, 0xCB, 0x86, 0x04, + 0xF9, 0x4D, 0xFC, 0x57, 0x6F, 0xE0, 0x4A, 0x94, 0x38, 0x73, 0x6A, 0x2C, 0x48, 0xD2, 0x60, 0x48, + 0x90, 0x23, 0x7B, 0xEA, 0x44, 0xF9, 0x53, 0x60, 0x3E, 0x81, 0xFC, 0xF2, 0xDD, 0x73, 0xE8, 0xEF, + 0xDE, 0x3F, 0x8B, 0x30, 0x85, 0x0E, 0xD5, 0x18, 0x91, 0xE3, 0xC8, 0xA9, 0x58, 0xB3, 0x66, 0x9C, + 0x68, 0xF2, 0x68, 0xD4, 0xA5, 0x4E, 0x9F, 0xDA, 0xB3, 0xD7, 0x8F, 0x69, 0x55, 0xAD, 0x27, 0x83, + 0x4A, 0x35, 0xE8, 0xF2, 0x2C, 0xDA, 0xB7, 0x25, 0x0D, 0x2E, 0x6D, 0x9A, 0x11, 0xDF, 0xB8, 0x6E, + 0xE8, 0x2E, 0xC6, 0x3C, 0x08, 0xF7, 0x23, 0xC9, 0x97, 0x7D, 0xAD, 0xAE, 0xD5, 0x4A, 0xD0, 0x60, + 0xCD, 0x7C, 0x47, 0xBD, 0x62, 0x33, 0x02, 0xC1, 0xC3, 0x0D, 0x6D, 0x17, 0x5B, 0xFA, 0x1C, 0x9C, + 0xF6, 0x66, 0x60, 0xAC, 0x85, 0x2F, 0x03, 0x7E, 0x6A, 0x71, 0x9F, 0xBE, 0xCF, 0x05, 0x44, 0xF4, + 0xE8, 0x21, 0xC2, 0xC2, 0x38, 0xB6, 0x72, 0x29, 0x6F, 0xBC, 0xBA, 0xDA, 0xB2, 0xE0, 0xAB, 0xAA, + 0xFB, 0x66, 0x6E, 0x59, 0xB5, 0x9F, 0x8A, 0x01, 0x04, 0x3A, 0x64, 0xD9, 0x37, 0xAB, 0xC1, 0x24, + 0x48, 0x63, 0xCC, 0x5C, 0xC0, 0xC1, 0x57, 0xE0, 0xDC, 0xA1, 0x57, 0x37, 0xDB, 0x9C, 0x8D, 0xF4, + 0xAC, 0xDA, 0xA2, 0x97, 0x81, 0xB2, 0xAD, 0xEA, 0xA6, 0xC1, 0x0E, 0x1E, 0x40, 0x0E, 0x60, 0xFA, + 0x95, 0x22, 0xD4, 0x2B, 0x48, 0x7C, 0x76, 0xFE, 0x28, 0xD8, 0x67, 0xD3, 0x28, 0x73, 0x83, 0x89, + 0x77, 0x86, 0x8C, 0xE8, 0x36, 0xE3, 0x3E, 0x7C, 0xFB, 0x3C, 0xD3, 0x6E, 0x5B, 0xF5, 0x28, 0x41, + 0xA6, 0x09, 0x41, 0x1E, 0xAD, 0xF9, 0x76, 0x76, 0x55, 0x7C, 0x10, 0x9C, 0xD1, 0x85, 0x16, 0x5D, + 0xB0, 0xF0, 0x81, 0x36, 0x05, 0xC8, 0x72, 0xCA, 0x2B, 0x7C, 0xB8, 0xD0, 0xC0, 0x45, 0x4E, 0x79, + 0xE5, 0xD5, 0x49, 0x12, 0x7A, 0x55, 0x9F, 0x40, 0x13, 0xF5, 0x13, 0xDF, 0x38, 0xCC, 0xD8, 0x12, + 0x04, 0x11, 0x29, 0x5C, 0x90, 0x80, 0x02, 0x31, 0x5C, 0x81, 0xC6, 0x27, 0xC7, 0x88, 0xB3, 0x8F, + 0x86, 0x91, 0xFD, 0xB3, 0x9F, 0x57, 0xCC, 0x4D, 0x98, 0x95, 0x54, 0x05, 0x81, 0xD2, 0x00, 0x29, + 0x8A, 0x28, 0x52, 0x46, 0x1E, 0x1E, 0xE0, 0x33, 0x82, 0x0F, 0xA4, 0x8C, 0x31, 0xC5, 0x0D, 0x0B, + 0x90, 0x07, 0x15, 0x44, 0xED, 0x65, 0x74, 0x18, 0x47, 0xFA, 0x68, 0x68, 0xCF, 0x38, 0x98, 0xE0, + 0x10, 0x44, 0x03, 0x0F, 0xA4, 0x20, 0xC2, 0x03, 0x12, 0x84, 0xC0, 0xC2, 0x0C, 0x40, 0x9C, 0x70, + 0xC2, 0x0B, 0x25, 0x5C, 0x70, 0x40, 0x01, 0x0D, 0xE8, 0x86, 0x09, 0x36, 0x1A, 0xBA, 0xB8, 0x51, + 0x4D, 0xF5, 0xC8, 0x08, 0x97, 0x47, 0x6E, 0x08, 0x41, 0xCA, 0x2B, 0x92, 0x94, 0x81, 0x85, 0x09, + 0xF1, 0xD0, 0x53, 0x80, 0x0F, 0x53, 0xF0, 0xF0, 0xC1, 0x02, 0xFD, 0xCC, 0x92, 0x41, 0x00, 0x6E, + 0xF4, 0x03, 0x51, 0x4E, 0x32, 0x6A, 0xB8, 0x8F, 0x36, 0x99, 0xDC, 0x70, 0xC1, 0x05, 0x21, 0xF0, + 0x20, 0x85, 0x18, 0x94, 0x4A, 0x11, 0x45, 0x17, 0x98, 0x66, 0xBA, 0x44, 0x0F, 0x34, 0x60, 0xF7, + 0xC2, 0x06, 0x0F, 0x8C, 0xA8, 0x40, 0x06, 0xBF, 0xC4, 0x17, 0x19, 0x7F, 0xD1, 0xF1, 0x55, 0x18, + 0x28, 0x10, 0xE0, 0xC2, 0x09, 0x24, 0xFE, 0x69, 0x60, 0x01, 0x01, 0x35, 0xF1, 0x50, 0x21, 0x81, + 0x0C, 0x33, 0x18, 0xA0, 0xCC, 0x35, 0x03, 0x64, 0xA2, 0x06, 0x01, 0x57, 0x60, 0x44, 0x21, 0x7F, + 0x47, 0x59, 0xE4, 0xE1, 0x05, 0x2C, 0x4C, 0x31, 0x06, 0x24, 0x7E, 0x34, 0x0B, 0x06, 0x18, 0x98, + 0x3A, 0xE1, 0x84, 0x16, 0x69, 0xC8, 0x01, 0x86, 0x16, 0x5A, 0x3C, 0x31, 0x46, 0x14, 0x49, 0x6C, + 0x8A, 0x02, 0x0B, 0x1B, 0x5C, 0xD0, 0x40, 0x01, 0x0A, 0x5C, 0x81, 0x66, 0x8B, 0x46, 0xA5, 0x8A, + 0x51, 0x3F, 0x0B, 0x78, 0x70, 0x86, 0x18, 0x4B, 0xF8, 0x60, 0x01, 0x0E, 0xF1, 0xA4, 0xF0, 0xC0, + 0x0C, 0x23, 0xD2, 0x23, 0x08, 0x0C, 0x8D, 0x50, 0xF2, 0xEB, 0x31, 0x0E, 0x71, 0xE4, 0xE6, 0x3F, + 0xFB, 0xEC, 0x7B, 0xC1, 0x0C, 0x81, 0x00, 0x32, 0x87, 0x1F, 0x75, 0x18, 0xC2, 0x46, 0x18, 0x74, + 0xA4, 0x21, 0xED, 0xB4, 0x60, 0xB0, 0x41, 0x07, 0x1B, 0x5A, 0x28, 0x31, 0x6D, 0x1A, 0x69, 0x60, + 0x1A, 0x05, 0x0D, 0x34, 0xB0, 0xC0, 0xC2, 0x0B, 0x0D, 0x10, 0x40, 0xC0, 0x02, 0xC7, 0x5C, 0x84, + 0xEA, 0xC0, 0xC8, 0xAD, 0xE5, 0x4E, 0xA0, 0x7A, 0x28, 0xE0, 0xC1, 0x0B, 0x2F, 0x28, 0x60, 0x41, + 0x01, 0x25, 0x6C, 0x70, 0x40, 0x38, 0xF4, 0x58, 0x27, 0x8B, 0x2C, 0xAC, 0x98, 0x60, 0x80, 0x6A, + 0x4B, 0xFE, 0xD3, 0x8A, 0x02, 0x33, 0xAC, 0x11, 0x0B, 0x20, 0xD8, 0xA6, 0xC1, 0xC6, 0xD3, 0x61, + 0x58, 0x11, 0x46, 0xB5, 0x5A, 0x80, 0x51, 0x6D, 0x1A, 0x56, 0x6F, 0xB1, 0x85, 0x12, 0x4A, 0x68, + 0xCD, 0xF1, 0xB3, 0x49, 0x24, 0xD1, 0xC3, 0x0C, 0x22, 0xA4, 0x00, 0x81, 0x01, 0x03, 0x0C, 0x31, + 0xCD, 0x64, 0xFD, 0xE5, 0xD7, 0xA4, 0x45, 0x91, 0x69, 0xD8, 0xC1, 0x05, 0x37, 0xB8, 0x10, 0x02, + 0x97, 0x27, 0x48, 0xE0, 0x41, 0xFE, 0x13, 0x09, 0x48, 0x61, 0x46, 0x24, 0x66, 0x88, 0xD0, 0x41, + 0x4E, 0xFD, 0x60, 0xD3, 0x01, 0x04, 0xB5, 0x70, 0xC2, 0x48, 0x18, 0x61, 0xB0, 0x41, 0x06, 0x19, + 0x6F, 0x00, 0x42, 0x86, 0xB5, 0x69, 0xBC, 0x51, 0xB5, 0x16, 0xDC, 0x86, 0x5D, 0xC3, 0xE6, 0x9C, + 0xFF, 0xE0, 0x84, 0xD5, 0xD8, 0x42, 0x2B, 0xC5, 0x12, 0x3B, 0x78, 0xF0, 0x41, 0x0B, 0x01, 0x0C, + 0xF0, 0x8B, 0x71, 0x85, 0xF1, 0x34, 0x55, 0x53, 0x49, 0x11, 0x4C, 0x8F, 0x1E, 0x2D, 0x74, 0x40, + 0x88, 0x86, 0xF8, 0x3C, 0xC0, 0xC2, 0x12, 0x97, 0x76, 0x21, 0xB6, 0x06, 0x1A, 0xD0, 0x30, 0x45, + 0x14, 0x79, 0x48, 0x11, 0xC2, 0x03, 0x2B, 0x22, 0x25, 0x10, 0xAA, 0xFB, 0xD8, 0x72, 0xC0, 0x12, + 0xC6, 0x30, 0xCB, 0xC6, 0xB5, 0x56, 0x58, 0x41, 0x86, 0x1F, 0x6F, 0xC8, 0x81, 0x75, 0xD6, 0x3F, + 0x2C, 0x21, 0x03, 0xF0, 0x21, 0xD0, 0x90, 0x04, 0xD7, 0x35, 0xA0, 0x60, 0x7E, 0x12, 0x72, 0x68, + 0x9F, 0x7E, 0x1A, 0x51, 0xF4, 0xC0, 0x42, 0x08, 0x1B, 0xA4, 0xD0, 0xC0, 0x00, 0xB3, 0xD8, 0xC7, + 0x5A, 0x6B, 0x1F, 0xF5, 0x43, 0x4F, 0x10, 0x0F, 0xC0, 0x5F, 0x40, 0x01, 0xA0, 0xF0, 0xC4, 0x03, + 0x7A, 0x10, 0x05, 0x6C, 0x59, 0xE1, 0x59, 0x9B, 0xE2, 0xC1, 0x0C, 0x78, 0xA0, 0xC0, 0x0B, 0xB4, + 0x80, 0x2C, 0x18, 0x39, 0x4B, 0xE1, 0x3E, 0xF0, 0x82, 0x3C, 0x70, 0x42, 0x11, 0x86, 0xA0, 0x43, + 0x18, 0xA8, 0x95, 0x86, 0xC7, 0x91, 0xE1, 0x59, 0x63, 0x18, 0x83, 0xEF, 0x6A, 0x40, 0x03, 0x0D, + 0x68, 0x69, 0x06, 0x3D, 0xE0, 0xDD, 0xB3, 0xB6, 0x10, 0x05, 0x26, 0xD0, 0xA0, 0x06, 0x5A, 0x20, + 0x03, 0xE3, 0xB4, 0x20, 0x2D, 0x6E, 0xF5, 0x00, 0x04, 0x33, 0x08, 0x17, 0xA1, 0xA2, 0x12, 0x92, + 0x7B, 0x0C, 0x8C, 0x39, 0xFE, 0x24, 0x89, 0x8F, 0x11, 0x24, 0xD0, 0x83, 0x1A, 0x20, 0x61, 0x06, + 0x12, 0x38, 0x40, 0xFF, 0x92, 0xC0, 0x31, 0x3A, 0xD0, 0x81, 0x0C, 0x5A, 0x58, 0xC2, 0x0C, 0x52, + 0xF0, 0x01, 0x0B, 0x10, 0x60, 0x00, 0x45, 0x10, 0x87, 0x45, 0xEA, 0x11, 0x93, 0x26, 0xE1, 0xA3, + 0x05, 0x0A, 0x08, 0x41, 0x2C, 0x3A, 0xE1, 0x07, 0x46, 0x3C, 0xAC, 0x0C, 0x73, 0x80, 0xDA, 0x01, + 0xD3, 0x30, 0x06, 0x26, 0xF0, 0xC0, 0x6E, 0x28, 0x48, 0x02, 0x12, 0x96, 0x40, 0xC7, 0x24, 0x44, + 0x01, 0x0C, 0x8F, 0x4B, 0xC3, 0x16, 0x7C, 0xE7, 0x39, 0x32, 0x3C, 0xED, 0x83, 0xD8, 0xE2, 0x16, + 0xC8, 0x58, 0x70, 0x03, 0x18, 0x10, 0x60, 0x02, 0xEB, 0x18, 0x08, 0x7E, 0x06, 0x03, 0xC4, 0xA4, + 0xEC, 0xC3, 0x1E, 0x1E, 0x98, 0x41, 0x17, 0xAE, 0x25, 0x36, 0x20, 0xB0, 0xA0, 0x07, 0x5D, 0x90, + 0x83, 0xC5, 0xDA, 0x40, 0x06, 0x25, 0x2C, 0x41, 0x04, 0x05, 0x58, 0x80, 0x0A, 0x7E, 0x21, 0x8E, + 0x74, 0x09, 0x6B, 0x1F, 0xE8, 0xA8, 0xC2, 0x05, 0xCC, 0x70, 0x41, 0x3C, 0x64, 0xD0, 0x8F, 0x69, + 0x0C, 0xC3, 0xB3, 0xA8, 0x56, 0x03, 0xF8, 0x89, 0x80, 0x07, 0x49, 0xD0, 0xDA, 0x1E, 0xB7, 0x70, + 0x35, 0x0E, 0x66, 0x6C, 0x0B, 0x4E, 0xB0, 0xC2, 0x1B, 0xDA, 0xD0, 0x06, 0xEC, 0x5D, 0x2B, 0x0A, + 0x51, 0xF8, 0x41, 0x0D, 0xC4, 0x30, 0x83, 0x17, 0x98, 0x20, 0x94, 0xA5, 0x64, 0x5D, 0xC0, 0xD4, + 0x03, 0x92, 0x79, 0x10, 0x2C, 0x1A, 0x0D, 0x90, 0x82, 0x1C, 0xEC, 0xD0, 0x06, 0x40, 0x44, 0x01, + 0x05, 0x52, 0xC8, 0x24, 0x23, 0xCC, 0x38, 0xB5, 0x28, 0x00, 0xE1, 0x02, 0x46, 0x18, 0x07, 0x79, + 0x5C, 0x72, 0x9F, 0x84, 0xF0, 0xA3, 0x1F, 0xA8, 0xB8, 0xC0, 0x12, 0xE4, 0xC0, 0x88, 0x39, 0xD0, + 0xC1, 0x0F, 0xC4, 0xFE, 0x2C, 0x44, 0x18, 0x3C, 0xA8, 0x47, 0x24, 0xD4, 0x00, 0x04, 0xE2, 0x0B, + 0xDB, 0xE7, 0xC8, 0x60, 0x05, 0x2D, 0x58, 0xEF, 0x0D, 0x6F, 0x48, 0x03, 0x07, 0xA5, 0x55, 0xBD, + 0x30, 0x10, 0x73, 0x83, 0xD9, 0x7A, 0xC2, 0x13, 0xC0, 0x30, 0xAD, 0x1F, 0xAC, 0x61, 0x09, 0x21, + 0xF0, 0x80, 0x02, 0x46, 0x90, 0x3C, 0xD6, 0xE1, 0x8F, 0x6D, 0xEF, 0x69, 0xC0, 0x19, 0x00, 0xC1, + 0x88, 0x4B, 0x90, 0x22, 0x0F, 0x7D, 0x98, 0x41, 0x08, 0xCC, 0x20, 0x07, 0x4E, 0xD0, 0x81, 0x86, + 0x4B, 0x78, 0x41, 0x02, 0xC8, 0x43, 0x9B, 0x96, 0x78, 0x64, 0x1F, 0x59, 0x28, 0x80, 0x19, 0x00, + 0xF1, 0x30, 0x30, 0xDC, 0xB3, 0x0D, 0x86, 0x68, 0xC3, 0x1A, 0xBB, 0xF0, 0x03, 0xF3, 0xA1, 0xE0, + 0x52, 0x55, 0xAB, 0x5C, 0xC6, 0x18, 0xC7, 0xD4, 0xA7, 0x5D, 0xEC, 0x61, 0x8C, 0x6B, 0x43, 0xC3, + 0xDA, 0xB0, 0x41, 0x27, 0x84, 0xED, 0x09, 0xE9, 0xA3, 0x43, 0x41, 0x93, 0x10, 0xB2, 0x0B, 0x40, + 0x60, 0x00, 0x2B, 0x8A, 0xCC, 0x5A, 0x80, 0x58, 0x90, 0x7E, 0xAC, 0xA3, 0x03, 0x2F, 0x60, 0x05, + 0x29, 0x9E, 0x10, 0x0A, 0x11, 0x10, 0xA0, 0x00, 0x30, 0xB8, 0x00, 0x08, 0x18, 0x41, 0xD1, 0x24, + 0x00, 0x61, 0x03, 0x1D, 0xA0, 0x29, 0x7F, 0xE8, 0xD3, 0x0F, 0x2F, 0x5C, 0x80, 0x0F, 0xE4, 0x7C, + 0x9C, 0x26, 0xFD, 0x60, 0x07, 0x3B, 0xF8, 0xA1, 0x0B, 0x3D, 0x08, 0x81, 0x06, 0x60, 0x38, 0x4E, + 0x0D, 0xCA, 0x12, 0x0C, 0x5B, 0xC0, 0x16, 0xC4, 0xEC, 0x50, 0x87, 0x3A, 0x38, 0xE2, 0xB2, 0x8E, + 0x30, 0x84, 0x21, 0x1A, 0x76, 0xD9, 0xCA, 0xDA, 0x21, 0x0C, 0x13, 0x4B, 0x03, 0xE3, 0x5E, 0xDA, + 0xAD, 0x26, 0x88, 0x20, 0x08, 0x0B, 0x18, 0x00, 0x3E, 0x54, 0x36, 0x15, 0xA7, 0xF4, 0x63, 0x1C, + 0x05, 0x70, 0xFE, 0x17, 0x14, 0xC8, 0x04, 0x1F, 0x7C, 0x0C, 0x43, 0x02, 0x90, 0x78, 0x02, 0x57, + 0x6B, 0x96, 0xD7, 0x8C, 0x58, 0xE8, 0x1F, 0x59, 0xB8, 0x40, 0x24, 0x3A, 0x51, 0x59, 0xC6, 0x59, + 0xCF, 0x89, 0xF7, 0x5C, 0x43, 0x0F, 0x36, 0xA0, 0x01, 0x26, 0xA4, 0x01, 0x9F, 0x75, 0x68, 0x83, + 0xC5, 0xA6, 0x57, 0x35, 0xE4, 0xFA, 0xC1, 0x10, 0x96, 0x10, 0x85, 0x76, 0x45, 0x61, 0x89, 0xEE, + 0x5A, 0x62, 0x14, 0xDD, 0x7D, 0x84, 0x24, 0xA8, 0xCA, 0x54, 0x3F, 0xB0, 0xC1, 0x09, 0xEC, 0x93, + 0x01, 0x0F, 0x9A, 0x40, 0x04, 0x0B, 0x28, 0xA0, 0x48, 0xE8, 0x42, 0xC9, 0x4C, 0x0C, 0x52, 0xB0, + 0x50, 0x6A, 0x23, 0x79, 0xC7, 0x30, 0x00, 0x14, 0x10, 0xDB, 0xCC, 0x71, 0x11, 0x22, 0xAC, 0x70, + 0xD3, 0x10, 0x33, 0x16, 0x30, 0x83, 0xE1, 0x4A, 0x42, 0x12, 0x41, 0x15, 0xEA, 0xC5, 0x38, 0xD6, + 0x05, 0x20, 0x48, 0x00, 0x05, 0x6B, 0x90, 0xC3, 0x1B, 0x20, 0xC6, 0x86, 0xCA, 0xD6, 0xC1, 0x89, + 0x5A, 0x58, 0x58, 0x19, 0x4B, 0x7A, 0x89, 0x51, 0x6C, 0xD7, 0xBB, 0x1F, 0x1E, 0xC5, 0x23, 0x1E, + 0xB1, 0x59, 0x0B, 0x6B, 0x10, 0x73, 0x53, 0x90, 0x82, 0x1A, 0x5E, 0x70, 0x03, 0x0F, 0x14, 0x20, + 0x03, 0x34, 0x45, 0xCA, 0x43, 0x36, 0xF2, 0x19, 0xF4, 0x10, 0x0C, 0x1F, 0x38, 0xDE, 0x07, 0x33, + 0x06, 0x60, 0x80, 0x20, 0x84, 0x93, 0x74, 0x1F, 0x30, 0x40, 0x0C, 0xC2, 0xF1, 0x1E, 0x66, 0x08, + 0x42, 0x05, 0x06, 0x48, 0xB2, 0x02, 0x24, 0xD0, 0x05, 0x4E, 0x48, 0xA2, 0x61, 0x78, 0xA0, 0xAC, + 0xC3, 0x36, 0xF8, 0x4D, 0x09, 0x2C, 0x61, 0x0D, 0x6F, 0x90, 0xA1, 0x1F, 0xE9, 0x50, 0x08, 0xA7, + 0xA6, 0x61, 0x0E, 0x72, 0x80, 0x04, 0x20, 0xD6, 0xC0, 0x84, 0x3B, 0xF2, 0xB4, 0x10, 0x8A, 0x83, + 0x44, 0xFE, 0x27, 0xB0, 0xFB, 0xDD, 0x4B, 0x74, 0x17, 0xBC, 0x8E, 0x20, 0x71, 0x06, 0x15, 0x6A, + 0x43, 0x28, 0x8C, 0xCC, 0xC5, 0xAA, 0xB8, 0xC8, 0xA1, 0x92, 0xB4, 0x91, 0x79, 0x04, 0x11, 0x1D, + 0xB3, 0x2B, 0x00, 0x10, 0xFA, 0x10, 0x0A, 0x39, 0x68, 0x01, 0x5C, 0x1F, 0xF8, 0x9F, 0x02, 0x08, + 0xA0, 0x80, 0x07, 0x3C, 0xE0, 0x02, 0x55, 0xAC, 0x42, 0x08, 0xBA, 0x50, 0x61, 0xCD, 0x4A, 0xB7, + 0x59, 0x8A, 0xC0, 0xC3, 0xD4, 0xDE, 0x57, 0x03, 0x46, 0xF8, 0x61, 0x9F, 0x08, 0x8D, 0x61, 0xE8, + 0xB4, 0xE6, 0xCD, 0xEC, 0x0C, 0x40, 0x37, 0x10, 0x50, 0x80, 0x98, 0xFE, 0x77, 0x01, 0x11, 0xEC, + 0xB4, 0x9E, 0xD7, 0x75, 0x84, 0x28, 0x2A, 0x41, 0x6B, 0x47, 0x0C, 0xA2, 0x10, 0x6F, 0xB8, 0x96, + 0x16, 0xB6, 0xC0, 0xD5, 0xFE, 0x16, 0x20, 0xC6, 0x44, 0xE9, 0xA1, 0x41, 0xEC, 0x11, 0x0D, 0x02, + 0x2C, 0x81, 0x13, 0x12, 0x66, 0x83, 0x12, 0x6A, 0xD0, 0x83, 0x1D, 0x38, 0x5B, 0x04, 0x33, 0x88, + 0xF6, 0x09, 0x44, 0x40, 0xED, 0x10, 0x44, 0x21, 0x0C, 0x9A, 0xAD, 0x03, 0x1B, 0x84, 0xD9, 0xAC, + 0xA7, 0xC9, 0x21, 0x09, 0x12, 0xA0, 0x81, 0x1F, 0x24, 0x81, 0xB1, 0xAA, 0x69, 0x0F, 0x5A, 0x4A, + 0x08, 0x1B, 0x12, 0x68, 0xF0, 0x80, 0x0F, 0x94, 0x0A, 0x26, 0x06, 0xB9, 0x46, 0x31, 0x7E, 0x81, + 0x03, 0x02, 0x3C, 0x40, 0x0A, 0xA1, 0x70, 0x1A, 0x1B, 0x1C, 0x51, 0x09, 0xED, 0x56, 0xC2, 0x12, + 0xAF, 0xAC, 0x1E, 0xB6, 0x40, 0xF6, 0x82, 0x14, 0x14, 0x20, 0xCF, 0xE9, 0xF9, 0x08, 0x53, 0xAC, + 0xA9, 0xA6, 0x7F, 0xA0, 0x23, 0x08, 0x2C, 0x80, 0x84, 0x24, 0x46, 0xFC, 0x08, 0xA1, 0x42, 0x0B, + 0x53, 0x6B, 0x68, 0xDF, 0x68, 0x36, 0xD5, 0x83, 0x24, 0x58, 0xC1, 0x10, 0x92, 0xF8, 0xB4, 0xF5, + 0xFE, 0xA6, 0x4B, 0x06, 0x27, 0x44, 0x41, 0x03, 0x3F, 0xE8, 0x02, 0x24, 0x9C, 0x50, 0x83, 0xB0, + 0x21, 0xD3, 0x77, 0x9A, 0x03, 0x41, 0x13, 0x1A, 0xC0, 0x51, 0x08, 0x9D, 0xE7, 0x29, 0xF8, 0xB0, + 0xC5, 0x05, 0x4E, 0x00, 0xE1, 0x37, 0x60, 0xF7, 0xC3, 0x0E, 0x9B, 0x18, 0x0D, 0x9D, 0xE0, 0xBE, + 0x0B, 0x28, 0xC0, 0x00, 0xF1, 0x65, 0x8F, 0x46, 0xEE, 0xE1, 0xE7, 0x8C, 0xDC, 0x63, 0x1F, 0x41, + 0x98, 0x01, 0x27, 0x0C, 0x31, 0x88, 0xE8, 0xB6, 0xC1, 0x72, 0x5A, 0x48, 0x9F, 0xC6, 0xEC, 0x68, + 0xC7, 0x2E, 0x38, 0x21, 0x0C, 0x8F, 0x00, 0xB8, 0xE3, 0xDE, 0xF0, 0xE9, 0x87, 0x75, 0x0C, 0x04, + 0x28, 0x00, 0x04, 0x20, 0xBA, 0x80, 0xF6, 0x1A, 0xFC, 0x20, 0x99, 0xA3, 0xE1, 0x94, 0xFB, 0x52, + 0xB0, 0x80, 0x68, 0x22, 0x24, 0x2C, 0x34, 0x69, 0xBA, 0x3E, 0x1E, 0x39, 0x0C, 0x22, 0x48, 0x40, + 0x0C, 0x80, 0x50, 0x44, 0x77, 0xB9, 0xEB, 0x88, 0x3A, 0x58, 0x41, 0x63, 0x55, 0xB3, 0x6A, 0x08, + 0x44, 0x00, 0x83, 0x01, 0xE4, 0xD9, 0x27, 0x1C, 0x81, 0x07, 0x5B, 0x6A, 0x4C, 0x10, 0x71, 0xF8, + 0x26, 0x16, 0x5A, 0x35, 0x45, 0x2C, 0x94, 0x00, 0xBA, 0xC6, 0xED, 0x93, 0x5A, 0x60, 0xB0, 0x02, + 0x1B, 0xA4, 0x3A, 0x08, 0xF1, 0x4A, 0xF7, 0x69, 0x68, 0xD4, 0x2D, 0x0A, 0xE8, 0xF9, 0x06, 0x1C, + 0x2E, 0x21, 0x09, 0x9C, 0x1B, 0x0D, 0x0D, 0x50, 0x70, 0x02, 0xA3, 0x1B, 0x00, 0x1F, 0x92, 0xF7, + 0xCB, 0x5E, 0x70, 0x1E, 0x83, 0x04, 0xCC, 0x60, 0x12, 0x8C, 0xD0, 0x44, 0x76, 0xB9, 0x5B, 0x07, + 0xD0, 0x2A, 0x01, 0x8A, 0x95, 0xF4, 0x40, 0x0C, 0x0C, 0x70, 0x8D, 0x86, 0x4B, 0x26, 0x23, 0x91, + 0x01, 0x4C, 0x3E, 0x0A, 0x83, 0x03, 0x35, 0x4C, 0x62, 0x0C, 0x5A, 0x60, 0x43, 0x2C, 0xC0, 0xFE, + 0x90, 0x04, 0x30, 0xCC, 0x81, 0xC2, 0x0A, 0x8D, 0x61, 0x85, 0x07, 0xE1, 0x08, 0x4B, 0x3C, 0xA2, + 0x61, 0xDA, 0x6E, 0xDC, 0x1C, 0x9E, 0x00, 0x82, 0x30, 0x7F, 0x9B, 0x05, 0x50, 0x00, 0xD9, 0xE6, + 0x40, 0x66, 0xBE, 0xDA, 0x8F, 0xCB, 0x00, 0xE4, 0x91, 0x90, 0xD3, 0x3D, 0x22, 0x41, 0x69, 0x18, + 0x40, 0x04, 0xA1, 0x50, 0x06, 0x92, 0xD0, 0x5D, 0x99, 0x85, 0x31, 0xC1, 0x44, 0x06, 0x95, 0x44, + 0x04, 0xA8, 0x45, 0x08, 0xA6, 0xD4, 0x32, 0x04, 0x73, 0x01, 0x8D, 0x30, 0x09, 0x65, 0x30, 0x7A, + 0x52, 0x63, 0x31, 0xC5, 0xE7, 0x04, 0x4C, 0x30, 0x3C, 0xCF, 0xC5, 0x66, 0x96, 0x30, 0x08, 0x9B, + 0xA5, 0x69, 0xA0, 0x17, 0x47, 0x90, 0x20, 0x07, 0xEF, 0x23, 0x7B, 0x32, 0x60, 0x3E, 0x20, 0x03, + 0x02, 0xB5, 0x37, 0x2A, 0x06, 0x00, 0x00, 0xCA, 0xE3, 0x5B, 0x1E, 0x71, 0x77, 0x47, 0xE1, 0x5A, + 0x10, 0xF0, 0x00, 0x81, 0x20, 0x07, 0x20, 0x67, 0x08, 0xDD, 0x66, 0x05, 0xD3, 0x62, 0x55, 0xB8, + 0xF2, 0x02, 0x8D, 0x77, 0x0C, 0x88, 0x61, 0x10, 0xF1, 0x35, 0x56, 0x24, 0xA1, 0x0D, 0x04, 0x40, + 0x09, 0x91, 0x00, 0x72, 0x7E, 0x40, 0x07, 0xAE, 0x64, 0x08, 0xA0, 0x35, 0x09, 0x79, 0xD0, 0x05, + 0x65, 0x50, 0x07, 0xA6, 0x60, 0x09, 0x99, 0x55, 0x08, 0x94, 0x55, 0x07, 0x73, 0x20, 0x24, 0x37, + 0x14, 0x09, 0x63, 0x90, 0x04, 0x1A, 0x00, 0x6D, 0x3D, 0xF0, 0x2D, 0x21, 0x10, 0x02, 0xDF, 0x32, + 0x03, 0x1E, 0xD0, 0x00, 0x14, 0x90, 0x01, 0x08, 0x00, 0x00, 0xDC, 0xC0, 0x1C, 0x5C, 0xE4, 0x0F, + 0x0C, 0xC7, 0x43, 0x4C, 0x91, 0x0F, 0xEC, 0x22, 0x01, 0x11, 0x86, 0x7A, 0x8E, 0x35, 0x43, 0x4E, + 0xB0, 0x6E, 0x33, 0x60, 0x02, 0x10, 0x30, 0x04, 0xFA, 0xC0, 0x45, 0x02, 0x81, 0x2E, 0xFE, 0x37, + 0x77, 0x53, 0x7A, 0xE0, 0x01, 0xC7, 0x76, 0x09, 0x9E, 0x56, 0x62, 0xC5, 0x87, 0x2D, 0xD9, 0x67, + 0x08, 0xE5, 0xA7, 0x6D, 0x17, 0xD3, 0x06, 0x76, 0x00, 0x08, 0x66, 0xE0, 0x02, 0x16, 0x80, 0x05, + 0xB2, 0xB0, 0x04, 0x1A, 0xF0, 0x00, 0x5E, 0x22, 0x32, 0xF0, 0x23, 0x01, 0x8F, 0x52, 0x00, 0x16, + 0x00, 0x01, 0x23, 0x30, 0x02, 0x13, 0x00, 0x00, 0x8B, 0x80, 0x10, 0xF5, 0x90, 0x14, 0x31, 0x51, + 0x15, 0x5C, 0xD1, 0x3A, 0x65, 0x85, 0x0E, 0x0A, 0x20, 0x02, 0x4C, 0xA0, 0x05, 0x65, 0x40, 0x43, + 0x6C, 0xC0, 0x30, 0xDA, 0xC6, 0x83, 0x49, 0xC0, 0x03, 0x22, 0x80, 0x3A, 0xCF, 0xE0, 0x67, 0xE7, + 0x31, 0x18, 0xC7, 0xF1, 0x48, 0x7A, 0x70, 0x03, 0x93, 0xA0, 0x76, 0x73, 0xC0, 0x08, 0x4F, 0xC5, + 0x38, 0x0F, 0xD3, 0x06, 0x97, 0x50, 0x75, 0x52, 0x93, 0x65, 0x10, 0x23, 0x07, 0x52, 0xF0, 0x01, + 0x1F, 0xA0, 0x0B, 0x66, 0xF0, 0x02, 0x90, 0x02, 0x3F, 0x1B, 0x40, 0x6D, 0xA0, 0x92, 0x6A, 0x38, + 0x40, 0x01, 0x06, 0xB0, 0x00, 0x06, 0x80, 0x00, 0x0E, 0x70, 0x04, 0x33, 0x58, 0x53, 0x32, 0x11, + 0x1F, 0x7B, 0xE7, 0x22, 0x24, 0xD1, 0x13, 0xFB, 0x10, 0x0D, 0x10, 0xE0, 0x6A, 0x86, 0xF6, 0x75, + 0x76, 0x30, 0x71, 0x19, 0xB4, 0x41, 0x4C, 0xC0, 0x02, 0x06, 0x37, 0x04, 0xFC, 0x40, 0x87, 0x40, + 0x24, 0x2C, 0xFB, 0x17, 0x44, 0xF1, 0xF4, 0x77, 0x94, 0x90, 0x39, 0xD7, 0xE2, 0x54, 0xCD, 0xA2, + 0x55, 0xD3, 0x32, 0x07, 0x0A, 0x05, 0x06, 0x1F, 0xF3, 0x00, 0x50, 0x30, 0x09, 0x53, 0x00, 0x01, + 0x16, 0x60, 0x8E, 0x17, 0xB0, 0x01, 0x1B, 0x20, 0x01, 0x0D, 0x30, 0x01, 0x13, 0xB0, 0x00, 0xEA, + 0xB8, 0x00, 0x05, 0x60, 0x00, 0x2B, 0x00, 0x00, 0xC7, 0x40, 0x1E, 0x3D, 0x71, 0xFE, 0x0C, 0x10, + 0x40, 0x00, 0x82, 0x60, 0x2A, 0xF3, 0x61, 0x4A, 0xFD, 0xC0, 0x0C, 0x06, 0xE0, 0x02, 0x53, 0x30, + 0x61, 0x6C, 0x30, 0x80, 0x95, 0x90, 0x59, 0xDA, 0xB6, 0x5B, 0x1F, 0x10, 0x00, 0x2A, 0x41, 0x56, + 0x1B, 0xA1, 0x14, 0x2B, 0xB1, 0x0F, 0xE1, 0xC0, 0x3F, 0x8E, 0x76, 0x02, 0x33, 0x20, 0x3E, 0xA2, + 0x67, 0x31, 0x7E, 0xA0, 0x05, 0x9E, 0xE3, 0x7D, 0x10, 0x95, 0x58, 0x21, 0x10, 0x08, 0x6B, 0x30, + 0x03, 0x16, 0x00, 0x03, 0x76, 0x33, 0x92, 0x22, 0x69, 0x7B, 0x13, 0x40, 0x01, 0xEC, 0x48, 0x00, + 0x06, 0x50, 0x00, 0x13, 0x30, 0x00, 0x2A, 0x10, 0x63, 0xFB, 0x50, 0x04, 0x05, 0x50, 0x05, 0x55, + 0x00, 0x01, 0x31, 0x40, 0x1E, 0x9F, 0x11, 0x11, 0xFC, 0xC1, 0x45, 0xF7, 0xD0, 0x0F, 0xB4, 0x60, + 0x00, 0x3C, 0xE0, 0x04, 0x66, 0xE4, 0x66, 0xFF, 0x96, 0x59, 0x74, 0x40, 0x74, 0x2C, 0xE0, 0x01, + 0x03, 0x40, 0x0C, 0x47, 0xD1, 0x74, 0x6C, 0xB3, 0x74, 0x0B, 0x97, 0x19, 0xFD, 0x80, 0x0F, 0xA8, + 0x10, 0x03, 0x1D, 0x50, 0x00, 0x44, 0x40, 0x03, 0xD9, 0x67, 0x4C, 0x49, 0xF0, 0x03, 0x60, 0x10, + 0x06, 0x94, 0x35, 0x3D, 0x3C, 0xB0, 0x01, 0x81, 0x10, 0x0A, 0x50, 0xB0, 0x01, 0x2F, 0x70, 0x4B, + 0xA5, 0x68, 0x8A, 0x0F, 0x30, 0x2E, 0x2B, 0x99, 0x96, 0x1F, 0x00, 0x03, 0x47, 0x87, 0x96, 0x06, + 0x30, 0x04, 0xAD, 0x50, 0x0C, 0x01, 0x70, 0x01, 0x4D, 0xD0, 0x04, 0x6A, 0x20, 0x04, 0x5E, 0x80, + 0x00, 0xBE, 0x95, 0x1A, 0x04, 0xD1, 0x0F, 0x38, 0xE0, 0x01, 0x03, 0x52, 0x08, 0x40, 0x89, 0x85, + 0x41, 0xE7, 0x3E, 0x2E, 0x56, 0x01, 0x72, 0xB1, 0x1A, 0x3B, 0xE1, 0x10, 0x8B, 0x54, 0x56, 0xF1, + 0xB1, 0x0F, 0x57, 0xA0, 0x00, 0x40, 0x40, 0x69, 0x4D, 0xF8, 0x6D, 0xD9, 0xFE, 0x47, 0x07, 0x52, + 0x46, 0x07, 0xCB, 0x25, 0x0B, 0x9B, 0xD8, 0x00, 0x28, 0x84, 0x86, 0x1A, 0x20, 0x01, 0xAB, 0xD9, + 0x00, 0x0D, 0x90, 0x00, 0x63, 0xD2, 0x02, 0x41, 0xD0, 0x01, 0x1D, 0x10, 0x03, 0x89, 0x86, 0x9E, + 0xFF, 0x63, 0x00, 0x01, 0x40, 0x04, 0xA0, 0xA4, 0x00, 0x0A, 0x80, 0x0A, 0x15, 0xD0, 0x0A, 0xAF, + 0xD1, 0x14, 0xEB, 0x10, 0x04, 0x1B, 0x10, 0x05, 0x6C, 0x70, 0x85, 0x58, 0x48, 0x62, 0x61, 0xB0, + 0x6C, 0x23, 0x73, 0x74, 0xEB, 0x10, 0x5F, 0x90, 0x07, 0x79, 0x42, 0xF1, 0x13, 0x46, 0x82, 0x0F, + 0x05, 0xD0, 0x04, 0x60, 0x60, 0x07, 0x96, 0xE6, 0x79, 0xDC, 0x09, 0x54, 0x7E, 0x00, 0x32, 0x9C, + 0x30, 0x06, 0x16, 0xF0, 0x01, 0x3B, 0x30, 0x7B, 0x1A, 0x00, 0x2A, 0x0A, 0x10, 0x4A, 0x10, 0xA0, + 0x44, 0x5C, 0xD0, 0x78, 0xA9, 0xB3, 0x00, 0x29, 0x20, 0x01, 0x5E, 0x22, 0x02, 0x25, 0xE0, 0x01, + 0x10, 0x10, 0x00, 0x4F, 0x11, 0x1F, 0xB9, 0x41, 0x00, 0x1D, 0x65, 0x1E, 0x21, 0xF1, 0x5A, 0x05, + 0xC0, 0x03, 0x72, 0x70, 0x60, 0xE5, 0x37, 0x65, 0x2C, 0xA7, 0x01, 0x2F, 0x10, 0x64, 0xCC, 0x10, + 0x56, 0x56, 0x01, 0x12, 0x1F, 0x45, 0x5F, 0x05, 0x00, 0x05, 0x69, 0x60, 0x59, 0x8F, 0x50, 0x75, + 0x96, 0x08, 0x5D, 0x74, 0x70, 0x54, 0x7E, 0xF0, 0x04, 0x10, 0x40, 0x41, 0x2C, 0x50, 0x9E, 0x09, + 0x90, 0x00, 0x05, 0x80, 0x64, 0x0B, 0x90, 0x00, 0x5C, 0x90, 0x02, 0x38, 0xFA, 0x14, 0x06, 0x90, + 0x02, 0x28, 0x24, 0x36, 0x28, 0xA0, 0x01, 0x29, 0x00, 0x00, 0xFE, 0x20, 0x00, 0x11, 0xF0, 0x0F, + 0x01, 0xB0, 0x00, 0x1D, 0x50, 0x73, 0x34, 0x21, 0x63, 0x99, 0x81, 0x0F, 0x46, 0x70, 0x01, 0x6B, + 0xE0, 0x07, 0xAF, 0xA0, 0x09, 0x4F, 0x16, 0x4C, 0x2C, 0x17, 0x02, 0xFE, 0x61, 0x52, 0x00, 0x57, + 0xF0, 0x1E, 0x0C, 0x8A, 0x11, 0xB1, 0xF1, 0x7C, 0x4F, 0x31, 0x0E, 0x09, 0x20, 0x06, 0x74, 0x40, + 0x89, 0x83, 0x69, 0x08, 0x78, 0x30, 0x5D, 0xB2, 0xA4, 0x01, 0x6B, 0xA0, 0x05, 0xE0, 0xE6, 0x01, + 0x22, 0x00, 0x2A, 0x5E, 0x9A, 0x3A, 0x03, 0x00, 0x00, 0x00, 0x90, 0x9B, 0x01, 0xE0, 0x0E, 0xA2, + 0x0A, 0x00, 0xFD, 0xF0, 0x01, 0x4D, 0x10, 0x05, 0x9F, 0x23, 0x36, 0x2F, 0x30, 0x00, 0xF9, 0x20, + 0x00, 0xB2, 0xFA, 0x0F, 0xB9, 0xB1, 0x00, 0x79, 0xE1, 0x7C, 0x47, 0xF1, 0x12, 0xFD, 0x80, 0x0E, + 0x0D, 0xC0, 0x03, 0x63, 0xA0, 0x08, 0x9A, 0xA0, 0x09, 0x86, 0xC0, 0x83, 0xDC, 0x47, 0xA8, 0xF2, + 0x03, 0x63, 0x50, 0xD1, 0xA0, 0xCA, 0xFA, 0x11, 0x0C, 0xB7, 0x0F, 0x46, 0xB0, 0x01, 0x5D, 0x70, + 0x5D, 0x96, 0x50, 0x09, 0xE0, 0xB5, 0x59, 0x6C, 0x90, 0x65, 0x60, 0xF0, 0x03, 0x20, 0x30, 0x85, + 0x62, 0x38, 0x96, 0x25, 0x3A, 0x00, 0x08, 0x00, 0x37, 0x06, 0xD0, 0x08, 0x03, 0xF0, 0x0F, 0x02, + 0x70, 0xAA, 0xFD, 0xA0, 0x00, 0x62, 0x20, 0x07, 0x7E, 0x70, 0x40, 0x51, 0xB0, 0x01, 0x1F, 0x10, + 0xAA, 0xE7, 0xFA, 0x0F, 0x15, 0xD0, 0x01, 0x0D, 0xA0, 0x07, 0x89, 0xFA, 0x12, 0x78, 0x88, 0x09, + 0xAB, 0x34, 0x07, 0x9D, 0x20, 0xAC, 0xA0, 0xA5, 0xA9, 0x20, 0xB0, 0x78, 0x37, 0x23, 0x1F, 0x95, + 0x71, 0x73, 0x77, 0x4A, 0x17, 0xE3, 0x80, 0x34, 0xD1, 0x3A, 0x80, 0xDE, 0x55, 0x62, 0x1C, 0xB3, + 0x06, 0x20, 0x50, 0x03, 0x6B, 0xC7, 0x04, 0x8B, 0x17, 0x2E, 0x07, 0x40, 0x00, 0x00, 0x80, 0x87, + 0xFB, 0x30, 0x00, 0x5E, 0x00, 0x56, 0x00, 0x10, 0xB2, 0xD3, 0x00, 0x00, 0xFB, 0xF0, 0x00, 0x63, + 0x70, 0x5D, 0xD2, 0xD5, 0x05, 0x1A, 0xD0, 0x08, 0x01, 0x00, 0xFE, 0x00, 0x23, 0x0B, 0x00, 0xE2, + 0x60, 0x00, 0x1E, 0x90, 0x02, 0xFD, 0x40, 0x12, 0x43, 0x78, 0x93, 0x91, 0xF9, 0x01, 0x1B, 0xC0, + 0xAE, 0x78, 0x20, 0x09, 0x2F, 0xC5, 0x3E, 0x89, 0xF5, 0x02, 0x41, 0x30, 0x1E, 0x0A, 0xF9, 0x1A, + 0x1F, 0x31, 0x7D, 0xFE, 0xD0, 0x0F, 0x59, 0xB0, 0x01, 0x4B, 0xB0, 0x81, 0xE5, 0xD7, 0x5D, 0x9B, + 0x65, 0x07, 0x69, 0xB0, 0x06, 0x62, 0xA0, 0x01, 0x4E, 0xE0, 0x07, 0x60, 0x30, 0x05, 0xEF, 0x83, + 0xB1, 0x04, 0x70, 0x14, 0xFB, 0xD0, 0x7B, 0x7A, 0x40, 0xA3, 0xB2, 0x0A, 0x00, 0x03, 0x50, 0xB6, + 0xBE, 0x8A, 0x4F, 0x4F, 0x03, 0x06, 0x28, 0x00, 0x05, 0x09, 0x10, 0xAA, 0x21, 0x0B, 0x0F, 0x67, + 0x7A, 0x01, 0x71, 0x48, 0x23, 0xEE, 0xC1, 0x0C, 0x0D, 0x10, 0x05, 0x17, 0x33, 0x4E, 0x9F, 0x97, + 0x04, 0x2C, 0xB0, 0x03, 0x41, 0x00, 0x01, 0xC7, 0xB0, 0x11, 0xCA, 0xB1, 0x1C, 0x3C, 0xB1, 0x12, + 0x4E, 0x81, 0x0F, 0x16, 0x30, 0x03, 0x15, 0x53, 0x59, 0x4F, 0x7B, 0x09, 0x51, 0x3B, 0x3D, 0x52, + 0x00, 0x02, 0x56, 0x60, 0x07, 0x11, 0x53, 0x3E, 0x1A, 0x70, 0x01, 0x05, 0x00, 0xAB, 0xFF, 0x60, + 0x04, 0x0F, 0xB0, 0x04, 0x2C, 0xFB, 0xA6, 0xE7, 0x6A, 0x6F, 0x28, 0x40, 0x0A, 0x49, 0xF5, 0x47, + 0xDC, 0x77, 0x02, 0x0F, 0x90, 0x3A, 0x00, 0x00, 0xB7, 0x33, 0xB9, 0x09, 0xDB, 0xE0, 0x0F, 0xC4, + 0x62, 0x19, 0xFD, 0xD0, 0x01, 0x28, 0xF0, 0x06, 0x52, 0xA3, 0x59, 0x09, 0xF5, 0x04, 0x4C, 0xE0, + 0x02, 0x37, 0xD0, 0x02, 0x6E, 0x50, 0xB4, 0x83, 0xFB, 0x1C, 0x7C, 0x81, 0x0D, 0x0D, 0x30, 0x05, + 0xD9, 0x37, 0x7A, 0x86, 0x30, 0x62, 0x4F, 0x16, 0x5D, 0x8E, 0x03, 0x7B, 0x93, 0xEB, 0x07, 0x73, + 0x90, 0x04, 0x6B, 0x9A, 0x44, 0x04, 0x40, 0x30, 0x09, 0xFE, 0xC0, 0x0A, 0xED, 0x03, 0xB2, 0x03, + 0x10, 0x5B, 0xDA, 0x74, 0x6E, 0xD5, 0x62, 0x05, 0x74, 0xF0, 0x06, 0x51, 0x20, 0x05, 0x6A, 0x78, + 0x45, 0xF4, 0x90, 0x1B, 0x0A, 0x00, 0x00, 0xAE, 0xB0, 0x90, 0x24, 0x31, 0x13, 0xA0, 0xA0, 0x01, + 0x4A, 0x30, 0xB9, 0x08, 0x46, 0x07, 0x60, 0xA0, 0xBB, 0xEB, 0x05, 0x03, 0x14, 0x50, 0xB4, 0xAF, + 0x73, 0x1F, 0xFF, 0xF0, 0x05, 0x56, 0x46, 0x51, 0x4A, 0x10, 0x06, 0x85, 0x90, 0x6D, 0x75, 0x50, + 0x58, 0x16, 0xA3, 0x05, 0x35, 0xA0, 0x04, 0xF7, 0xC4, 0x06, 0x61, 0xC3, 0x02, 0x17, 0x40, 0x00, + 0x6D, 0x39, 0x00, 0xCF, 0x15, 0x0B, 0x1A, 0xB0, 0x04, 0x63, 0x62, 0x6D, 0x4B, 0x73, 0xAD, 0x55, + 0xE9, 0x04, 0x1E, 0x54, 0x95, 0x5D, 0xC0, 0x04, 0x52, 0xB0, 0xA5, 0x8D, 0xD0, 0x62, 0x1F, 0x70, + 0x74, 0x5A, 0xC4, 0x43, 0x3B, 0xB1, 0x0F, 0x09, 0x10, 0xAD, 0xC9, 0x4B, 0x62, 0x69, 0x10, 0x36, + 0x63, 0x23, 0x04, 0x80, 0xB2, 0xA8, 0xBA, 0xE7, 0x0F, 0xF9, 0xB0, 0x0F, 0xC8, 0x72, 0x47, 0x4E, + 0xC0, 0x79, 0xD7, 0x65, 0x89, 0x8C, 0x60, 0xC0, 0x69, 0xB0, 0x6C, 0x80, 0x60, 0x5E, 0x9A, 0x1A, + 0x02, 0x98, 0xBB, 0x0F, 0x01, 0xA0, 0x06, 0x6D, 0x00, 0x0B, 0x97, 0x40, 0x07, 0xE3, 0xC4, 0x06, + 0xBE, 0x20, 0x09, 0xE0, 0xDB, 0x84, 0x0A, 0xC5, 0xC1, 0x6F, 0xE0, 0x6D, 0x21, 0x14, 0x05, 0x48, + 0x80, 0x02, 0x4B, 0x80, 0x02, 0x65, 0xD3, 0x02, 0x03, 0xC0, 0x0C, 0x7A, 0xE1, 0x1A, 0xFE, 0x50, + 0xB2, 0x51, 0xE0, 0x07, 0x61, 0x97, 0x59, 0x34, 0x24, 0x36, 0xCD, 0xC4, 0x7C, 0x78, 0x37, 0x23, + 0x4F, 0x11, 0x0E, 0x0F, 0xC0, 0x03, 0x3A, 0xAC, 0x04, 0x69, 0xC0, 0x08, 0x41, 0x25, 0x7A, 0xDC, + 0x54, 0x08, 0x07, 0xF4, 0x04, 0x98, 0xBA, 0x38, 0xFE, 0x87, 0x07, 0x04, 0x1E, 0x80, 0xA3, 0x04, + 0x20, 0x06, 0xA6, 0x50, 0x09, 0x75, 0xF0, 0x08, 0x1E, 0x06, 0x0B, 0x52, 0x55, 0x59, 0x78, 0x30, + 0x07, 0x16, 0xA9, 0x3D, 0x4E, 0x03, 0xBD, 0xD7, 0xB2, 0x05, 0xEB, 0x26, 0x03, 0x40, 0x40, 0xB0, + 0x05, 0xF0, 0x0B, 0x36, 0x97, 0x8C, 0x2A, 0xDC, 0x03, 0x68, 0xDC, 0x5D, 0x52, 0x8C, 0x39, 0x63, + 0x63, 0x02, 0x0A, 0x30, 0x0B, 0x34, 0x8C, 0x12, 0xFB, 0x80, 0x0A, 0x56, 0x16, 0x05, 0x12, 0xF3, + 0x75, 0x9A, 0x75, 0x5E, 0x61, 0x50, 0x59, 0x7C, 0x8C, 0x91, 0x21, 0xB0, 0x04, 0xCC, 0x12, 0xC8, + 0x25, 0x50, 0x24, 0x03, 0xB0, 0x04, 0x61, 0x00, 0x0B, 0x4E, 0xF0, 0x08, 0xFF, 0xD6, 0x06, 0xA6, + 0xE0, 0x0B, 0x8A, 0xB3, 0x7E, 0x66, 0xD0, 0x03, 0x52, 0x00, 0x05, 0x3D, 0xB0, 0x06, 0x99, 0xA2, + 0xC5, 0x40, 0xD0, 0x04, 0x5E, 0xB2, 0x01, 0xA6, 0x53, 0x00, 0xB3, 0x60, 0x28, 0xF8, 0x91, 0xC2, + 0x29, 0x80, 0x02, 0x7E, 0x70, 0x59, 0x96, 0x70, 0x09, 0xA0, 0x15, 0x05, 0x35, 0x20, 0x03, 0x82, + 0x98, 0x08, 0x7D, 0xA1, 0x0F, 0xF6, 0x20, 0x69, 0x03, 0x22, 0x31, 0x93, 0x38, 0x08, 0x07, 0xAA, + 0x05, 0xB4, 0x9C, 0x50, 0x63, 0x40, 0x03, 0x21, 0x30, 0xC4, 0x56, 0xC0, 0x42, 0x2C, 0xD0, 0x00, + 0x57, 0x50, 0x9F, 0xB1, 0x20, 0x01, 0x64, 0xE0, 0xB8, 0x78, 0x20, 0x07, 0x62, 0x80, 0x02, 0x8A, + 0x85, 0x25, 0x23, 0x32, 0x00, 0x14, 0x40, 0x01, 0x23, 0xF0, 0x01, 0x26, 0x30, 0x33, 0xEC, 0x25, + 0x97, 0x06, 0xD7, 0x02, 0x46, 0x3A, 0xC6, 0x9E, 0x5C, 0x05, 0xDC, 0x8C, 0x85, 0xDF, 0xBC, 0x41, + 0x5B, 0xF0, 0x03, 0x87, 0x09, 0x01, 0xBF, 0x0B, 0x17, 0xE8, 0xCC, 0x05, 0x3D, 0x20, 0x31, 0x58, + 0x23, 0x07, 0x89, 0x6C, 0x09, 0x6D, 0xA0, 0xFE, 0x04, 0xF0, 0x5C, 0xC0, 0xD0, 0x2B, 0x24, 0x1A, + 0xD0, 0x05, 0xBA, 0x10, 0x7E, 0x9F, 0x54, 0x00, 0x01, 0x50, 0x05, 0xBA, 0x60, 0x9E, 0x49, 0x30, + 0xCF, 0x1B, 0x30, 0x00, 0x17, 0xF0, 0x05, 0x8F, 0x66, 0x04, 0x09, 0x50, 0x01, 0x00, 0xA0, 0x03, + 0x3A, 0x90, 0x03, 0x44, 0xAD, 0x92, 0x05, 0xF0, 0x56, 0x26, 0xE3, 0x09, 0x03, 0x10, 0x03, 0xAA, + 0x45, 0xD1, 0x1C, 0xD1, 0x0F, 0x41, 0x10, 0x02, 0x6C, 0xE0, 0x5D, 0xE0, 0xBC, 0x55, 0xE0, 0xA2, + 0x00, 0x1F, 0xFD, 0x16, 0xFD, 0x60, 0x0F, 0x4D, 0xC0, 0x99, 0x1C, 0x24, 0xAD, 0xA3, 0x30, 0x08, + 0x05, 0x85, 0x7E, 0x8A, 0x20, 0x8D, 0x69, 0xE0, 0x3E, 0x81, 0x40, 0x0A, 0x73, 0xF0, 0x39, 0x52, + 0x70, 0x03, 0x06, 0x40, 0x00, 0xAC, 0xE0, 0x0B, 0x60, 0x30, 0x86, 0x30, 0x70, 0x26, 0xE3, 0xE0, + 0x0D, 0xDE, 0x60, 0x0E, 0xEB, 0x60, 0x0F, 0xEB, 0xB0, 0x08, 0x0E, 0x90, 0x03, 0x87, 0x70, 0x08, + 0x71, 0x30, 0x01, 0x45, 0xC0, 0x0C, 0xC7, 0xD0, 0x0C, 0x8A, 0x7D, 0x0D, 0xC7, 0x50, 0x01, 0x6D, + 0xD9, 0x0F, 0x73, 0x38, 0x18, 0xFD, 0x20, 0x08, 0x12, 0x90, 0x06, 0x94, 0x68, 0x09, 0xE4, 0x86, + 0x2D, 0xE5, 0xB3, 0x01, 0x0D, 0x40, 0x88, 0x70, 0xF1, 0x48, 0x5C, 0x40, 0x03, 0xDE, 0xC7, 0x8B, + 0x7E, 0x40, 0x7E, 0xA3, 0xE0, 0x08, 0x8C, 0xE3, 0xC8, 0x3D, 0xFB, 0x69, 0x60, 0x70, 0x37, 0xA4, + 0x10, 0x09, 0x4F, 0x13, 0x1C, 0x3B, 0xD0, 0x00, 0x7D, 0xC0, 0x07, 0x80, 0x80, 0x0B, 0xC1, 0x70, + 0x0D, 0xD7, 0xC0, 0x0D, 0xD9, 0x00, 0x0E, 0xEC, 0x40, 0x0E, 0xEA, 0x60, 0x0E, 0xEE, 0x00, 0x0F, + 0x81, 0x3D, 0xD8, 0x71, 0xB0, 0x02, 0x2B, 0x60, 0x0E, 0xDE, 0x50, 0x0D, 0xCC, 0x5D, 0x0D, 0xC4, + 0x30, 0x00, 0xEB, 0x40, 0x53, 0x4C, 0xFE, 0xF1, 0x11, 0xC7, 0x70, 0x01, 0x63, 0xD0, 0x30, 0x24, + 0x56, 0x6E, 0xE5, 0x23, 0x02, 0x0D, 0x50, 0x04, 0x81, 0xB1, 0x0F, 0x55, 0x20, 0x03, 0x03, 0xF2, + 0x34, 0xAE, 0x34, 0xAD, 0x00, 0x87, 0x7E, 0x78, 0x10, 0x65, 0xDC, 0x54, 0x06, 0x3D, 0xF0, 0x00, + 0x9E, 0x08, 0x09, 0xEA, 0x97, 0x07, 0x28, 0x40, 0x03, 0x93, 0xC0, 0x07, 0xC6, 0x70, 0x0C, 0xD3, + 0x40, 0x0E, 0xD0, 0x00, 0x0E, 0xE9, 0x20, 0x0F, 0xEA, 0x90, 0x0F, 0xC3, 0x0D, 0x0F, 0x2B, 0xC0, + 0x00, 0xC6, 0xED, 0x00, 0x2B, 0x20, 0x0F, 0xCB, 0x0D, 0x0E, 0xD9, 0x90, 0x0D, 0x9B, 0x80, 0x06, + 0xC0, 0x86, 0xB0, 0x04, 0x63, 0x01, 0x6B, 0xC0, 0x38, 0x07, 0x06, 0x51, 0xDB, 0xDD, 0x00, 0x19, + 0x90, 0xA8, 0x53, 0xB1, 0xCA, 0x01, 0xAA, 0x6F, 0x9C, 0x65, 0xDE, 0x71, 0x36, 0xA5, 0x52, 0xC5, + 0x06, 0x51, 0xC0, 0x03, 0x12, 0x10, 0x0A, 0x90, 0xF0, 0x54, 0x6C, 0x20, 0x07, 0x21, 0x10, 0x0A, + 0x91, 0x80, 0x0B, 0xC7, 0xE0, 0x0C, 0xCE, 0xC0, 0x0E, 0xDF, 0xF0, 0x0D, 0xEC, 0xF0, 0x0E, 0xEA, + 0x50, 0x0F, 0xEE, 0x50, 0x0F, 0xC5, 0x00, 0x00, 0x0C, 0xC0, 0x01, 0x0E, 0x00, 0x00, 0xCE, 0x60, + 0x0E, 0xEC, 0x90, 0x0E, 0xE0, 0x60, 0x0D, 0xE0, 0x60, 0x03, 0xC4, 0xF0, 0x9C, 0xF9, 0xD3, 0x01, + 0x66, 0xA0, 0x05, 0xD8, 0xA6, 0x4F, 0x94, 0x24, 0x03, 0x9C, 0x5D, 0x97, 0x6F, 0x11, 0x11, 0xFD, + 0x70, 0x0C, 0x09, 0xD0, 0xB4, 0xD1, 0x55, 0x59, 0x97, 0x3D, 0x0A, 0xE0, 0x55, 0x7C, 0x8F, 0xD3, + 0x38, 0x74, 0xB0, 0x76, 0x67, 0xC8, 0x0A, 0x90, 0x60, 0x61, 0x7E, 0x00, 0x7F, 0xB2, 0x40, 0x09, + 0x89, 0x40, 0x0E, 0xDB, 0x60, 0x0D, 0xE9, 0x60, 0xE3, 0xEC, 0xA0, 0x0E, 0x0B, 0x21, 0x0F, 0xFA, + 0xB0, 0x0B, 0x41, 0x0E, 0x00, 0xFE, 0xC8, 0x20, 0x0F, 0xDF, 0x90, 0x0E, 0xE9, 0x60, 0x0D, 0xD6, + 0x90, 0x0C, 0x36, 0x70, 0x16, 0x2C, 0xA3, 0x11, 0x1D, 0x20, 0x05, 0x50, 0x6E, 0x08, 0xFA, 0x24, + 0x31, 0x35, 0x40, 0x36, 0x0A, 0xA0, 0x02, 0x1A, 0x9E, 0x13, 0x55, 0x71, 0x0D, 0x10, 0x30, 0x03, + 0x69, 0x30, 0xE2, 0x6C, 0x80, 0x07, 0x0D, 0x93, 0x5D, 0x63, 0xCD, 0x49, 0x15, 0x78, 0x4F, 0x5A, + 0x20, 0x06, 0x21, 0xC0, 0x04, 0xB1, 0x30, 0x71, 0x75, 0xC0, 0x08, 0x5D, 0x20, 0x01, 0x91, 0x60, + 0x0C, 0xA8, 0x70, 0x0B, 0x71, 0x5E, 0xE3, 0x45, 0xCE, 0x0E, 0xF2, 0x40, 0xEB, 0x39, 0xFE, 0x0F, + 0xDC, 0xB0, 0x10, 0x80, 0x3E, 0xE7, 0x48, 0x7E, 0x07, 0xB7, 0x10, 0x11, 0xFA, 0x87, 0x12, 0x1D, + 0x20, 0x06, 0x5A, 0x00, 0x54, 0x50, 0x28, 0x31, 0x34, 0x30, 0x45, 0x05, 0xB0, 0xD5, 0x6F, 0xB1, + 0x97, 0x05, 0xF0, 0x02, 0x5A, 0xE0, 0x44, 0x61, 0x50, 0x06, 0x4E, 0xD4, 0x06, 0x83, 0x00, 0xE6, + 0x96, 0x50, 0x7C, 0xD5, 0xF3, 0x34, 0x8E, 0x33, 0xBE, 0x2C, 0xF0, 0x03, 0x25, 0xD5, 0x09, 0x90, + 0x10, 0x09, 0x28, 0xE0, 0x04, 0x7C, 0x10, 0x0D, 0x82, 0x90, 0x0A, 0xE0, 0x00, 0x0D, 0x35, 0x9E, + 0x0E, 0xEC, 0x70, 0xE3, 0xED, 0xE0, 0x0F, 0x3B, 0xEE, 0x0E, 0xEE, 0xA0, 0x0E, 0x80, 0x5E, 0xE3, + 0x35, 0x8E, 0x01, 0xE4, 0xC0, 0x98, 0x3A, 0x01, 0x01, 0x66, 0x30, 0xCB, 0xD9, 0x7D, 0x5E, 0x52, + 0x74, 0x01, 0x06, 0xB0, 0x3A, 0x70, 0x31, 0x7D, 0xB3, 0xBB, 0x01, 0x49, 0xF0, 0x38, 0x07, 0xA4, + 0x49, 0x56, 0xD0, 0x06, 0xDE, 0x55, 0x78, 0x15, 0x18, 0x35, 0x11, 0xD3, 0x3E, 0x20, 0xF0, 0x03, + 0x5A, 0x70, 0x0A, 0x7C, 0x90, 0x07, 0xB0, 0x07, 0x09, 0x81, 0x30, 0x0C, 0x99, 0xC0, 0x0B, 0xDE, + 0x90, 0x0D, 0x73, 0x7E, 0xFE, 0xE3, 0xEF, 0xD0, 0x0E, 0xED, 0x70, 0x0F, 0xF3, 0x5E, 0xEB, 0xDF, + 0x00, 0x0D, 0x81, 0x0E, 0x0C, 0x85, 0xEE, 0x11, 0x87, 0x4E, 0x84, 0x0A, 0x70, 0xDD, 0x41, 0x7A, + 0x31, 0x44, 0xE7, 0x02, 0xF1, 0x7A, 0x0D, 0x33, 0xAF, 0x13, 0x37, 0xDC, 0x01, 0x1B, 0x50, 0xEE, + 0xD8, 0xC2, 0x4B, 0x04, 0x35, 0xCB, 0xC3, 0x57, 0x78, 0xC4, 0x54, 0x4C, 0xF7, 0x34, 0x07, 0xDC, + 0x62, 0xB9, 0x2C, 0x20, 0x01, 0xC0, 0x53, 0xDF, 0x54, 0x5B, 0x02, 0xCD, 0x50, 0x0D, 0xE0, 0x40, + 0x0E, 0xE4, 0xF0, 0x0E, 0xEF, 0x70, 0x0E, 0xFC, 0x20, 0x0C, 0xD3, 0x50, 0x0F, 0x0B, 0xC1, 0x0E, + 0xD0, 0x90, 0x0C, 0x47, 0x6E, 0x03, 0xC2, 0x40, 0x10, 0xC8, 0xD8, 0xF3, 0x04, 0xF3, 0x00, 0x3F, + 0x4A, 0xAD, 0x1E, 0x78, 0x5E, 0x34, 0x50, 0xA4, 0x01, 0x10, 0x4D, 0x6F, 0xE1, 0x15, 0x19, 0x80, + 0x2C, 0x35, 0x70, 0x47, 0x1D, 0x24, 0x70, 0xD8, 0x36, 0x7C, 0x09, 0x66, 0x58, 0x65, 0xD4, 0xD6, + 0xDC, 0x22, 0x45, 0x2E, 0xB0, 0x03, 0x94, 0xB0, 0x01, 0x4C, 0xC0, 0x09, 0x9C, 0x30, 0x09, 0x6A, + 0x50, 0x00, 0xDC, 0xF0, 0x0C, 0xE7, 0x70, 0x0E, 0xE4, 0x70, 0x0E, 0xFE, 0x6D, 0xE7, 0xEA, 0xA0, + 0x0E, 0xE4, 0xF0, 0xEE, 0xDB, 0xB0, 0xF9, 0x02, 0x10, 0xEF, 0x08, 0x01, 0xEC, 0x28, 0xC1, 0xAB, + 0x6D, 0x8F, 0xC8, 0xE6, 0x45, 0x74, 0x27, 0x30, 0x3F, 0xA8, 0x42, 0xE9, 0x1A, 0x61, 0x1F, 0xFF, + 0x30, 0x04, 0x0B, 0xF0, 0x02, 0x71, 0x64, 0x50, 0x51, 0xD3, 0x49, 0x57, 0x3B, 0x80, 0x0E, 0x63, + 0xA9, 0x18, 0x63, 0x2D, 0xC8, 0xA4, 0x01, 0x09, 0x60, 0x02, 0x26, 0x20, 0x22, 0x58, 0x40, 0x27, + 0x74, 0xB0, 0x06, 0x1E, 0x70, 0x0C, 0xDE, 0x00, 0x0E, 0x92, 0xBF, 0xF5, 0xFC, 0xD0, 0x0E, 0x76, + 0xBE, 0xF5, 0xE0, 0xFE, 0xF0, 0xFC, 0xDB, 0x70, 0x0B, 0x24, 0x50, 0x1E, 0x40, 0x51, 0x18, 0xD2, + 0x07, 0x0A, 0xD6, 0x4D, 0x75, 0x98, 0xCD, 0x06, 0x2F, 0x5C, 0x03, 0x0E, 0x5C, 0x00, 0xF0, 0x86, + 0x12, 0xEC, 0x21, 0x13, 0x9C, 0x91, 0x11, 0xEB, 0xD0, 0x2E, 0x2C, 0xE0, 0xCA, 0xC6, 0x45, 0x06, + 0x5B, 0x03, 0xCF, 0x08, 0x86, 0xBC, 0x9B, 0xC5, 0x83, 0x4E, 0x90, 0x3E, 0xDF, 0xB2, 0x03, 0x35, + 0xE8, 0x20, 0x58, 0xB0, 0x66, 0x6C, 0xC0, 0x07, 0x2F, 0x10, 0x0C, 0x23, 0x1F, 0xF9, 0x00, 0x41, + 0xAE, 0xDD, 0x3C, 0x6E, 0xF2, 0xC8, 0x91, 0x03, 0x47, 0xCE, 0x9A, 0x35, 0x72, 0x24, 0x84, 0xFD, + 0xF3, 0xF7, 0x4F, 0x22, 0x3F, 0x89, 0xFE, 0x2C, 0xFA, 0xE3, 0x97, 0x91, 0xDF, 0xBD, 0x7E, 0x82, + 0x3C, 0x8C, 0x09, 0x53, 0x67, 0x90, 0x1D, 0x30, 0x4F, 0xA2, 0x20, 0x61, 0xF1, 0xA0, 0x40, 0x45, + 0x89, 0x2D, 0x5D, 0x5E, 0x6C, 0xB9, 0x0F, 0x5B, 0x91, 0x11, 0x6E, 0xC6, 0xED, 0xB3, 0x47, 0xAF, + 0x85, 0x97, 0x0D, 0x20, 0x94, 0xC8, 0x61, 0x63, 0x85, 0x8C, 0x16, 0x2D, 0x4E, 0xEA, 0x48, 0x72, + 0x24, 0xD2, 0x91, 0xA5, 0x41, 0x6D, 0xC2, 0xB0, 0xA1, 0xC3, 0x28, 0x49, 0x97, 0x0D, 0x3E, 0xFA, + 0x98, 0xF1, 0x80, 0x85, 0x51, 0x9D, 0x30, 0x6B, 0x76, 0xA0, 0xD2, 0x56, 0xED, 0xE0, 0xB9, 0x79, + 0xDB, 0xD4, 0x79, 0x33, 0x07, 0xCE, 0x1A, 0x34, 0x68, 0xDB, 0x36, 0x91, 0xE0, 0x67, 0xB1, 0x25, + 0xC5, 0x97, 0xFF, 0x34, 0xFE, 0xEB, 0xD7, 0xC2, 0x05, 0x18, 0x2B, 0x83, 0x1E, 0x31, 0x9A, 0xA3, + 0xA5, 0x0B, 0x8D, 0x10, 0x07, 0x7E, 0x41, 0x74, 0x99, 0x18, 0xE2, 0xC5, 0x7A, 0xFB, 0x54, 0x0D, + 0x50, 0xF0, 0xE1, 0x02, 0x81, 0x0B, 0xA5, 0xE2, 0x65, 0x1A, 0x40, 0xA4, 0x89, 0x14, 0x30, 0x69, + 0xCA, 0xCC, 0xFE, 0x01, 0x03, 0x26, 0x24, 0xD2, 0xA5, 0xA2, 0x4C, 0x3B, 0x32, 0x24, 0x49, 0xD3, + 0x25, 0x3F, 0x20, 0xCC, 0x04, 0xCA, 0x83, 0x82, 0x07, 0x29, 0x46, 0x4E, 0xBB, 0x34, 0xA9, 0x12, + 0x76, 0xDB, 0x32, 0x57, 0xDB, 0xB8, 0xA9, 0x7B, 0x56, 0x8D, 0x6D, 0xB2, 0x64, 0xC0, 0x04, 0x6C, + 0xAB, 0x18, 0xD1, 0x6E, 0xE2, 0x7C, 0x76, 0xE9, 0xF6, 0x5B, 0xC0, 0x43, 0x4E, 0x98, 0x41, 0x83, + 0xFC, 0xA4, 0x49, 0x93, 0x04, 0x85, 0x88, 0x02, 0xFB, 0x9A, 0x2B, 0x7E, 0x69, 0xF1, 0xDE, 0xBF, + 0x7D, 0x04, 0x82, 0xEC, 0xE0, 0xB1, 0x64, 0x89, 0x8B, 0x0B, 0x1E, 0x54, 0x5A, 0xB8, 0x31, 0x23, + 0x4A, 0x9A, 0x31, 0x60, 0xCA, 0xB0, 0xF1, 0x63, 0x48, 0x93, 0xA3, 0x47, 0x96, 0x4C, 0x9F, 0x1E, + 0x25, 0x40, 0x49, 0x6A, 0xF0, 0x03, 0x90, 0x48, 0x7A, 0x48, 0x63, 0x0E, 0x36, 0xD8, 0xD0, 0x62, + 0x0B, 0x29, 0x36, 0xD0, 0xE6, 0x19, 0x67, 0x84, 0x71, 0x66, 0x1B, 0x61, 0xD0, 0x78, 0x86, 0x98, + 0x55, 0x90, 0x01, 0xC6, 0xB8, 0x65, 0x32, 0xF2, 0xE7, 0x1E, 0xE5, 0x96, 0x73, 0x29, 0xA3, 0x96, + 0xF0, 0x69, 0x40, 0x8C, 0xAD, 0x50, 0xA3, 0x43, 0x8B, 0x93, 0x66, 0x78, 0x60, 0x81, 0x7E, 0x14, + 0x1B, 0xB1, 0x25, 0x8B, 0xF2, 0xE9, 0xA7, 0x97, 0x06, 0x76, 0x30, 0x63, 0x0C, 0x39, 0xE4, 0x30, + 0x03, 0x0A, 0x20, 0x80, 0x78, 0x41, 0x84, 0x0B, 0x24, 0xA0, 0x21, 0x8A, 0x27, 0xC0, 0x80, 0xCA, + 0x8E, 0xD4, 0x24, 0xB1, 0xC3, 0x49, 0x4B, 0x96, 0x1A, 0xC5, 0x11, 0x51, 0x2C, 0x91, 0xE4, 0x12, + 0x3B, 0xC2, 0xE0, 0x23, 0x89, 0x32, 0xAC, 0xF0, 0x83, 0x28, 0x07, 0x35, 0x68, 0x86, 0x98, 0x64, + 0x9C, 0x59, 0xC6, 0x99, 0x6A, 0x76, 0x69, 0x26, 0x95, 0x3D, 0x76, 0xB9, 0x45, 0x00, 0x57, 0x28, + 0xCA, 0xFE, 0x07, 0xA6, 0x89, 0x14, 0xA3, 0x2B, 0x1F, 0x65, 0x36, 0xE0, 0x43, 0x92, 0x47, 0x58, + 0x74, 0xB1, 0x87, 0x17, 0x08, 0x98, 0xE5, 0xBB, 0xF0, 0xEE, 0x5C, 0x2C, 0x1F, 0x7C, 0x5A, 0xB8, + 0xA0, 0x0B, 0x2D, 0x18, 0x64, 0x44, 0x8B, 0x34, 0xA2, 0x88, 0x02, 0x90, 0x2D, 0x06, 0x63, 0x21, + 0x84, 0x1F, 0xC8, 0xF0, 0x03, 0x8F, 0x3A, 0x9C, 0xF4, 0xC3, 0x0A, 0x27, 0xAC, 0x60, 0x43, 0x11, + 0x45, 0x0C, 0x31, 0xC4, 0x12, 0x4B, 0xEA, 0x30, 0x84, 0x2B, 0x36, 0xCA, 0xE0, 0xEB, 0x0D, 0x30, + 0xB4, 0x58, 0x63, 0x89, 0x12, 0xCA, 0x3C, 0xD3, 0x99, 0x64, 0x90, 0x79, 0x66, 0x17, 0x62, 0x76, + 0xD9, 0x65, 0x8F, 0x23, 0xE8, 0xFA, 0x67, 0xBC, 0x11, 0x89, 0x75, 0x69, 0xBC, 0x7E, 0xB2, 0x08, + 0x41, 0x0E, 0x49, 0xA6, 0xE4, 0x0A, 0x8C, 0x2E, 0x42, 0x48, 0xC1, 0x80, 0x7D, 0x16, 0x3B, 0xD4, + 0x39, 0x6C, 0xF1, 0x09, 0x42, 0x03, 0xA0, 0x5A, 0x0D, 0xA3, 0x0D, 0x36, 0xDE, 0x20, 0xC3, 0x89, + 0xA2, 0xA2, 0x80, 0x82, 0x05, 0x14, 0x94, 0xA0, 0x83, 0x8E, 0x05, 0x17, 0xD4, 0x22, 0x89, 0x24, + 0x94, 0x30, 0x17, 0xBF, 0x3A, 0x8E, 0xAA, 0xA3, 0x8D, 0x36, 0xAC, 0x48, 0xE3, 0x8D, 0x37, 0x44, + 0x7D, 0xA2, 0x0B, 0x19, 0x6E, 0x7D, 0x86, 0xB8, 0x33, 0x91, 0x41, 0x66, 0x97, 0x5C, 0x76, 0xD9, + 0x24, 0x02, 0x13, 0xFF, 0x69, 0xAE, 0xCE, 0x1A, 0xC3, 0xF3, 0x07, 0x47, 0x05, 0x7A, 0xF0, 0xE3, + 0x12, 0x4B, 0x0C, 0xD9, 0x77, 0xB0, 0x19, 0x5A, 0x90, 0x11, 0x3C, 0xB9, 0xEE, 0xBC, 0x11, 0x1F, + 0x18, 0x50, 0x00, 0xA4, 0xBF, 0x3A, 0xD8, 0x90, 0xA4, 0x55, 0x3C, 0xCA, 0x20, 0xEA, 0x89, 0x24, + 0xA2, 0x48, 0xA2, 0x06, 0x25, 0xB4, 0x20, 0xE3, 0x29, 0x36, 0x66, 0x8D, 0xF7, 0x07, 0x39, 0xD2, + 0xFE, 0x70, 0x82, 0x8D, 0x7B, 0x57, 0x0E, 0x83, 0x0C, 0x32, 0xD2, 0xE0, 0x39, 0x8A, 0x25, 0x24, + 0xF0, 0xA4, 0x19, 0x64, 0xA0, 0x39, 0x33, 0x19, 0x61, 0x7E, 0x6D, 0xA5, 0x15, 0x01, 0xB8, 0x41, + 0xD4, 0x50, 0xF0, 0xB0, 0xC5, 0xAB, 0x80, 0x35, 0x0A, 0xB9, 0x44, 0x13, 0xAE, 0xAC, 0x88, 0x62, + 0x86, 0x41, 0x8F, 0xB1, 0x31, 0x5B, 0x12, 0x2B, 0xC6, 0xE7, 0x81, 0x25, 0xD8, 0x58, 0xCA, 0x94, + 0x4B, 0x0C, 0x79, 0x84, 0x63, 0x45, 0xE6, 0x80, 0x59, 0x52, 0x30, 0x9C, 0x30, 0x17, 0xE7, 0x76, + 0xE7, 0xF8, 0x59, 0x8B, 0x9B, 0xF9, 0x0E, 0xC3, 0x8F, 0x28, 0xF3, 0xBE, 0x34, 0x0A, 0x27, 0x92, + 0xA0, 0x01, 0x8A, 0x02, 0x8E, 0x21, 0x06, 0x18, 0x64, 0x92, 0xB9, 0x03, 0x98, 0x5B, 0x6E, 0xF9, + 0xE5, 0x13, 0x00, 0xA6, 0x81, 0x88, 0xA2, 0x7A, 0x24, 0xD2, 0x3A, 0x31, 0x8B, 0xE6, 0x81, 0xF8, + 0x9A, 0x0B, 0xD2, 0x38, 0x0A, 0x5C, 0x2D, 0x90, 0x78, 0x01, 0x86, 0x01, 0xFA, 0xC9, 0x27, 0xAE, + 0x1A, 0x47, 0x5E, 0xFB, 0x1F, 0x7B, 0x88, 0x90, 0x42, 0x0E, 0x55, 0x15, 0xF1, 0xA3, 0x90, 0x56, + 0x97, 0xDA, 0xD8, 0xDD, 0x37, 0xD6, 0xD8, 0x82, 0x28, 0x26, 0xDB, 0x85, 0xCA, 0x5D, 0x36, 0xC2, + 0x10, 0x6A, 0x41, 0x3F, 0xE8, 0x28, 0xE9, 0x24, 0x24, 0x6A, 0xE8, 0xA1, 0x07, 0x1A, 0x44, 0x80, + 0xE0, 0x18, 0x61, 0x6E, 0xE9, 0x70, 0x93, 0xCB, 0x73, 0xF9, 0x64, 0x00, 0x07, 0x16, 0x89, 0x58, + 0x64, 0x1A, 0xE5, 0xEA, 0x07, 0x95, 0x17, 0x50, 0x37, 0x44, 0x11, 0x3A, 0xC2, 0xD8, 0x02, 0x08, + 0x0F, 0x5A, 0x50, 0x61, 0x39, 0xDA, 0xB9, 0x4E, 0x96, 0x3C, 0x2F, 0xA0, 0x70, 0xD6, 0x12, 0x36, + 0x08, 0x0C, 0xD7, 0x20, 0x02, 0x14, 0x3C, 0x32, 0x6C, 0x61, 0x0B, 0xA1, 0xD1, 0x82, 0xCE, 0xFE, + 0x74, 0xF6, 0xAE, 0x05, 0x15, 0xED, 0x0D, 0x93, 0x4A, 0x42, 0xF5, 0x68, 0x30, 0xC1, 0x19, 0xC8, + 0x4F, 0x15, 0xB9, 0xD8, 0xDE, 0x2A, 0x56, 0x71, 0x8B, 0x4D, 0x80, 0x6F, 0x00, 0x43, 0x58, 0x01, + 0x00, 0x3E, 0xB1, 0x35, 0xFC, 0x25, 0x27, 0x22, 0xE8, 0xF8, 0xC0, 0x0C, 0xC8, 0x50, 0x07, 0x53, + 0xB1, 0x81, 0x0C, 0x65, 0x0B, 0xC2, 0x00, 0x98, 0xE1, 0x9C, 0x10, 0xA9, 0xCD, 0x46, 0x8D, 0x49, + 0x61, 0x1E, 0xFC, 0x60, 0x0A, 0x3A, 0x24, 0xE1, 0x01, 0x6B, 0x00, 0x43, 0x21, 0x54, 0xA3, 0x09, + 0x43, 0x30, 0x48, 0x09, 0x51, 0x00, 0x43, 0x60, 0xC2, 0x90, 0x86, 0xA2, 0x91, 0xE1, 0x5D, 0xEE, + 0x0A, 0x83, 0x98, 0xBA, 0xB0, 0x84, 0x1E, 0xC8, 0x00, 0x05, 0x2C, 0x60, 0xC1, 0x0C, 0x4E, 0x50, + 0x82, 0x18, 0xFC, 0xA2, 0x15, 0xAE, 0x70, 0xC5, 0x26, 0x56, 0xB1, 0x89, 0x54, 0x84, 0x2F, 0x0B, + 0x23, 0xC0, 0x81, 0x0A, 0x00, 0x70, 0x8D, 0x6B, 0x85, 0xCE, 0x4E, 0x8B, 0x89, 0xC8, 0x3E, 0x7A, + 0x71, 0x81, 0xB7, 0xB1, 0x0A, 0x0F, 0x51, 0x44, 0xC2, 0x09, 0x0A, 0xA0, 0x02, 0xD8, 0xD1, 0x49, + 0x74, 0xE6, 0xDB, 0xC7, 0x02, 0x84, 0x60, 0x06, 0x48, 0x9C, 0x62, 0x0E, 0x4F, 0x08, 0x81, 0x04, + 0xD6, 0x90, 0x86, 0x4E, 0xB4, 0x0C, 0x0F, 0x43, 0x51, 0x82, 0x12, 0x3A, 0xD3, 0x19, 0xEC, 0x54, + 0x32, 0x0D, 0x81, 0x13, 0x0C, 0xA5, 0x90, 0x50, 0x45, 0x2B, 0xB2, 0xE0, 0x05, 0x5B, 0x24, 0x82, + 0x27, 0x52, 0xE1, 0x0A, 0x38, 0xC0, 0x61, 0x13, 0x9B, 0xF8, 0x44, 0x2A, 0x02, 0xA0, 0x07, 0x18, + 0x58, 0x00, 0x02, 0x10, 0x50, 0x63, 0x3F, 0x66, 0x74, 0x3E, 0xE5, 0xC0, 0x04, 0x1D, 0x5E, 0x10, + 0x41, 0x17, 0xF2, 0x83, 0x07, 0x3A, 0x58, 0x61, 0x0B, 0x32, 0x10, 0x01, 0x01, 0xD0, 0xFE, 0xD6, + 0x92, 0xCF, 0xD5, 0x45, 0x74, 0x11, 0xC9, 0x51, 0x03, 0xCE, 0x20, 0x0B, 0x33, 0x44, 0x62, 0x12, + 0x62, 0x90, 0x00, 0x08, 0xA2, 0x20, 0x87, 0xE7, 0xED, 0xAC, 0x28, 0x44, 0x11, 0xD3, 0x16, 0x28, + 0x45, 0xB3, 0x93, 0xD4, 0x80, 0x7A, 0xD5, 0xAB, 0x9E, 0x0C, 0xAC, 0x88, 0x82, 0x10, 0xBC, 0xC0, + 0x3D, 0x31, 0xF8, 0xC4, 0x1E, 0x36, 0x71, 0x84, 0x23, 0x6C, 0x22, 0x11, 0x89, 0x18, 0x80, 0x11, + 0xAA, 0x70, 0x03, 0x13, 0x28, 0xC0, 0x02, 0x31, 0x30, 0x00, 0x02, 0xAE, 0xF5, 0x8F, 0x79, 0x8C, + 0xC8, 0x4E, 0x35, 0xEC, 0x07, 0x36, 0x2C, 0xC0, 0x83, 0x31, 0xF8, 0xE1, 0x5E, 0x0C, 0x2A, 0x5B, + 0x03, 0xB2, 0x80, 0x8F, 0x96, 0x90, 0x8E, 0x84, 0x36, 0xAA, 0x18, 0x79, 0x6C, 0x51, 0x00, 0x13, + 0xFC, 0x21, 0x10, 0xA1, 0x58, 0x42, 0x14, 0x34, 0x40, 0x03, 0x33, 0x50, 0x6A, 0x71, 0x49, 0x58, + 0x02, 0x13, 0x98, 0xB0, 0x04, 0x19, 0xCC, 0x40, 0x5D, 0x28, 0x20, 0x27, 0x0B, 0x4E, 0x20, 0x82, + 0x17, 0xBC, 0x20, 0x04, 0x21, 0xC8, 0x94, 0x16, 0x43, 0xB0, 0x81, 0x0D, 0x5C, 0xA0, 0x01, 0x05, + 0x70, 0x43, 0x22, 0x4A, 0x59, 0xCA, 0x3D, 0xA0, 0x01, 0x00, 0x59, 0xC8, 0xC4, 0x0E, 0x66, 0x00, + 0xD3, 0x9A, 0x76, 0x60, 0x01, 0x6E, 0x98, 0xD1, 0xC8, 0x2E, 0xA2, 0x9C, 0xF1, 0xFC, 0x03, 0x1F, + 0xC3, 0x28, 0x80, 0x19, 0xE6, 0xD0, 0x2E, 0x77, 0x6D, 0x61, 0x09, 0x1B, 0x18, 0x00, 0x36, 0x66, + 0xF4, 0xB0, 0x87, 0x2A, 0x46, 0x96, 0xE3, 0xC8, 0x82, 0x02, 0x78, 0x90, 0x87, 0x2E, 0x4C, 0x51, + 0x02, 0x22, 0x68, 0xC2, 0x0E, 0x5A, 0x2A, 0x02, 0x21, 0x40, 0xE0, 0x03, 0x0A, 0x20, 0x00, 0x01, + 0x3A, 0x90, 0x02, 0x2E, 0xCC, 0xA0, 0x09, 0x25, 0x50, 0x80, 0x01, 0xF4, 0x5A, 0xFE, 0x80, 0x06, + 0x7C, 0xC0, 0x02, 0xEE, 0x91, 0xC0, 0x03, 0x1A, 0xA0, 0x80, 0x3D, 0x26, 0x02, 0x0D, 0xA5, 0x3C, + 0x02, 0x1C, 0x48, 0x00, 0x80, 0x21, 0xA0, 0x42, 0x0D, 0x4B, 0xE8, 0x42, 0x04, 0x97, 0x30, 0x83, + 0x1B, 0x5C, 0xC0, 0x00, 0xB3, 0x48, 0xEA, 0x45, 0x9A, 0x0A, 0x91, 0xF1, 0xC0, 0x03, 0x1F, 0x62, + 0x05, 0x84, 0xBB, 0xAC, 0x60, 0x05, 0x2D, 0xF4, 0xE0, 0x06, 0x04, 0x00, 0x05, 0xC4, 0xBA, 0xBA, + 0x5A, 0x88, 0xED, 0xA3, 0x00, 0x3D, 0xC8, 0x43, 0x14, 0x6A, 0xE5, 0x82, 0x04, 0x0C, 0xB6, 0x01, + 0x06, 0x98, 0x40, 0x2F, 0x40, 0x21, 0x0D, 0x71, 0xAC, 0x03, 0x1D, 0x30, 0x78, 0xC0, 0x03, 0x36, + 0x10, 0x8F, 0x75, 0xF4, 0xE3, 0x1A, 0xBF, 0x40, 0x03, 0x01, 0x06, 0x60, 0x00, 0x05, 0x0C, 0x96, + 0xB0, 0x03, 0xA8, 0x40, 0x22, 0xF6, 0xB0, 0x88, 0x23, 0x90, 0x40, 0x00, 0x72, 0x6A, 0x05, 0x00, + 0x0A, 0x20, 0x04, 0x31, 0x00, 0x71, 0x66, 0x9B, 0x04, 0x42, 0x0A, 0x02, 0x30, 0x82, 0x7D, 0xC0, + 0xAE, 0x58, 0xE3, 0xF9, 0x9C, 0x3B, 0x24, 0xB2, 0x0F, 0x2F, 0x68, 0x20, 0x0F, 0xF7, 0x99, 0xD5, + 0x16, 0x7E, 0x30, 0x83, 0x0B, 0x4C, 0xC0, 0x39, 0xFC, 0x28, 0x26, 0x6B, 0x15, 0xF3, 0xB9, 0x7D, + 0xEC, 0x43, 0x01, 0x21, 0x20, 0x6B, 0xBC, 0x7A, 0xB0, 0x01, 0x18, 0x18, 0x40, 0x19, 0xF8, 0x58, + 0x07, 0x3C, 0xF6, 0x81, 0x0F, 0x7A, 0x34, 0xD7, 0xA4, 0x0F, 0x50, 0xC0, 0x35, 0x66, 0xA9, 0x0F, + 0x7D, 0xFC, 0xE2, 0x0A, 0x06, 0x18, 0x40, 0x00, 0x32, 0x3C, 0x00, 0x00, 0x44, 0x00, 0x00, 0x1D, + 0x86, 0x83, 0x30, 0xE4, 0xB2, 0x8F, 0x2B, 0x0C, 0x00, 0x06, 0x6A, 0x98, 0x04, 0x18, 0xC8, 0x00, + 0x06, 0x25, 0x6C, 0xB2, 0x09, 0x0F, 0x20, 0x40, 0x16, 0xFA, 0x2B, 0x91, 0xFE, 0xCD, 0xE2, 0x05, + 0x1B, 0x05, 0xE8, 0x82, 0x13, 0x8B, 0xD2, 0x05, 0x14, 0xD0, 0x77, 0x00, 0xE2, 0xE0, 0x5A, 0x88, + 0xEE, 0xD7, 0xD5, 0xFC, 0xFE, 0x83, 0xC2, 0x1D, 0x90, 0x40, 0x1E, 0xFC, 0x55, 0x03, 0x4F, 0x52, + 0x00, 0x01, 0xF8, 0x80, 0xC7, 0x3F, 0xD6, 0xB1, 0x0E, 0x44, 0x34, 0x60, 0x33, 0x62, 0x68, 0x02, + 0x0C, 0x10, 0xA0, 0xDE, 0x7F, 0xD4, 0x43, 0x1F, 0xFD, 0xDD, 0x87, 0x38, 0x98, 0x71, 0x0C, 0x20, + 0x73, 0x63, 0x1A, 0x22, 0xF2, 0x47, 0x3F, 0x47, 0x8C, 0x8F, 0x7E, 0xA8, 0x80, 0x00, 0x4D, 0x90, + 0xC3, 0xA8, 0x9C, 0x90, 0x86, 0x35, 0x74, 0xA1, 0x07, 0x30, 0x52, 0x80, 0x11, 0x8A, 0xDB, 0xE5, + 0x7F, 0xB8, 0xA3, 0x1F, 0xEB, 0xB0, 0xF2, 0x16, 0x00, 0x61, 0xAE, 0x28, 0xF4, 0x60, 0xA6, 0x04, + 0xE8, 0x85, 0x2C, 0x55, 0x5B, 0xAC, 0xA5, 0xAE, 0xF6, 0x3B, 0xE5, 0x6B, 0x6D, 0x0B, 0x92, 0x1C, + 0x1A, 0x26, 0x6C, 0xC0, 0x95, 0x0B, 0xB0, 0xC7, 0x82, 0xCB, 0x81, 0x00, 0x0F, 0x40, 0xA1, 0x0B, + 0x51, 0xA0, 0xC1, 0x06, 0x20, 0x80, 0x8F, 0x7B, 0xDC, 0xA3, 0x1E, 0x8F, 0x6E, 0x89, 0x88, 0xD0, + 0xBC, 0xD4, 0x88, 0xE0, 0xE8, 0x5A, 0xFD, 0x60, 0x86, 0x02, 0x92, 0x9C, 0x40, 0xD2, 0x4E, 0x45, + 0x0C, 0x3C, 0xA0, 0x2D, 0x01, 0x04, 0x01, 0xE4, 0xE6, 0xE0, 0xC3, 0x0B, 0x3F, 0x5C, 0xA4, 0x80, + 0x8D, 0x04, 0x01, 0x23, 0xA0, 0xE3, 0x1A, 0xE2, 0x28, 0x6F, 0x3F, 0x9A, 0xFA, 0xC6, 0x87, 0x86, + 0x6E, 0x1E, 0xA4, 0xC3, 0x47, 0x0A, 0x42, 0x30, 0x09, 0x17, 0x49, 0x81, 0x05, 0x17, 0x38, 0x40, + 0x73, 0x41, 0x46, 0x01, 0xF4, 0xD8, 0xF5, 0x06, 0x09, 0x10, 0xC4, 0x3A, 0xEA, 0xB4, 0x9C, 0xE6, + 0x08, 0x79, 0x74, 0xAC, 0x8E, 0x28, 0x73, 0xC6, 0xF1, 0x01, 0x3E, 0xFE, 0x5D, 0x33, 0x0D, 0x5D, + 0x60, 0x42, 0x14, 0x98, 0x00, 0x85, 0x1D, 0x34, 0x20, 0x00, 0x2A, 0xF8, 0xC5, 0x3E, 0x04, 0x91, + 0x00, 0x20, 0x20, 0x41, 0x0C, 0x91, 0x9D, 0x6F, 0x3D, 0x0D, 0x60, 0x04, 0x03, 0x2C, 0xC0, 0x00, + 0x1D, 0x40, 0x85, 0xA2, 0xE1, 0xC8, 0xDA, 0x62, 0x16, 0xB3, 0x39, 0x1C, 0xB1, 0x47, 0x15, 0x36, + 0x30, 0x89, 0x31, 0x78, 0xB3, 0x07, 0x3D, 0x3E, 0xC1, 0x06, 0x58, 0x20, 0x02, 0x11, 0x78, 0x20, + 0xAF, 0x03, 0x70, 0x03, 0xA3, 0xF9, 0x99, 0x6A, 0xD9, 0xB1, 0x1A, 0x74, 0x10, 0xAB, 0x07, 0xB2, + 0x38, 0xB2, 0x0E, 0x05, 0x88, 0x20, 0x0F, 0xD7, 0x34, 0x17, 0x76, 0x64, 0xD6, 0x04, 0x22, 0x2C, + 0x60, 0x00, 0xCB, 0x85, 0xC1, 0x0B, 0x66, 0x40, 0x45, 0x1A, 0x6C, 0x47, 0x01, 0x0B, 0xA0, 0x00, + 0x65, 0x3C, 0x70, 0x83, 0x06, 0x40, 0x00, 0x1B, 0x0C, 0x65, 0x89, 0x7E, 0xCD, 0xF7, 0x0F, 0x74, + 0x54, 0xC1, 0xE5, 0x83, 0x76, 0xC2, 0x16, 0x6A, 0x20, 0x85, 0x25, 0x6C, 0x72, 0x03, 0x05, 0x10, + 0x04, 0x36, 0xC4, 0x21, 0x4B, 0xF5, 0x96, 0xDB, 0x50, 0x14, 0xC1, 0xC8, 0xC4, 0x52, 0x9E, 0xB5, + 0x88, 0xC0, 0x43, 0x1C, 0x06, 0x68, 0x42, 0x1E, 0x90, 0xE6, 0x07, 0x3F, 0x30, 0x48, 0xC0, 0x40, + 0xB8, 0x01, 0x0C, 0x3E, 0xD0, 0x00, 0x0F, 0x6C, 0xE0, 0x06, 0x27, 0xC0, 0xFB, 0x06, 0xE0, 0x8A, + 0x83, 0x05, 0x78, 0xE0, 0x05, 0x4D, 0x98, 0xC1, 0x0E, 0x12, 0x40, 0x8B, 0x59, 0x2A, 0x9D, 0x84, + 0x4D, 0xC5, 0x89, 0x08, 0x98, 0x10, 0x0B, 0x46, 0xB8, 0x0B, 0x0C, 0x63, 0xA0, 0x94, 0x14, 0x24, + 0x50, 0x0B, 0x7A, 0xD0, 0x23, 0x18, 0x10, 0xB0, 0xA7, 0x02, 0x8E, 0xD1, 0x8F, 0xFC, 0x22, 0x0B, + 0x3C, 0x1A, 0x01, 0x51, 0xBA, 0xFB, 0xF1, 0x0B, 0x05, 0x9C, 0xFE, 0x41, 0x0B, 0xF9, 0x69, 0x43, + 0x8B, 0x9C, 0xB0, 0x4D, 0x26, 0x58, 0x6F, 0x03, 0x0F, 0x48, 0x41, 0x02, 0x52, 0xE0, 0xD7, 0x01, + 0x8C, 0xA0, 0x1C, 0x14, 0x68, 0xC1, 0x06, 0x64, 0x20, 0x05, 0x29, 0x34, 0xE1, 0x02, 0x09, 0x47, + 0x94, 0xE1, 0x5B, 0xF2, 0x1D, 0x8C, 0x90, 0x27, 0x1A, 0x09, 0x98, 0xC4, 0x29, 0x24, 0x51, 0x87, + 0x97, 0x69, 0x41, 0x5A, 0x17, 0xA8, 0x42, 0x34, 0x2C, 0x50, 0x00, 0x9D, 0xB3, 0x00, 0x06, 0x14, + 0x90, 0xF0, 0x77, 0x3C, 0xFF, 0x50, 0x35, 0x27, 0xE6, 0x0A, 0x17, 0xC0, 0x05, 0x1D, 0x52, 0xB3, + 0xB2, 0xA2, 0xF4, 0xCD, 0x09, 0x3F, 0x00, 0x42, 0x02, 0x0A, 0xD0, 0x02, 0x08, 0x50, 0x60, 0x00, + 0x98, 0x3D, 0x06, 0x00, 0x5A, 0x10, 0x02, 0x19, 0xD4, 0x40, 0x0C, 0x6A, 0x68, 0x00, 0x36, 0xA2, + 0xBC, 0x7D, 0xE1, 0xE7, 0x43, 0x44, 0x31, 0x81, 0x80, 0x26, 0x90, 0x85, 0x67, 0xB1, 0x0E, 0x36, + 0x90, 0x83, 0x24, 0x00, 0x02, 0x0B, 0x50, 0x00, 0x13, 0x00, 0x02, 0x31, 0xD8, 0x02, 0x24, 0xD8, + 0x01, 0x02, 0xD0, 0xAA, 0x87, 0x42, 0x37, 0x98, 0xA8, 0x98, 0x88, 0xC9, 0x88, 0x7D, 0xF8, 0x00, + 0x35, 0x08, 0x04, 0x48, 0x68, 0xA4, 0xE5, 0x0B, 0x83, 0x32, 0x80, 0x19, 0x90, 0xA2, 0x96, 0xB8, + 0x9A, 0x80, 0x01, 0x28, 0x82, 0x04, 0x7B, 0x8C, 0x0F, 0x08, 0x01, 0x20, 0x58, 0x82, 0x26, 0x90, + 0x80, 0x0E, 0x50, 0x36, 0xBB, 0xE8, 0x27, 0xE1, 0x73, 0x09, 0xF5, 0x12, 0x11, 0xBA, 0x90, 0x86, + 0x06, 0xC0, 0x05, 0x46, 0xF0, 0x93, 0xE5, 0x71, 0x02, 0x26, 0x70, 0x01, 0x0F, 0xF8, 0x80, 0x1D, + 0xE8, 0x02, 0x30, 0x60, 0x84, 0x34, 0xE0, 0x01, 0x0B, 0xB0, 0x05, 0xCE, 0x23, 0xA1, 0x0A, 0x94, + 0x8B, 0xAF, 0x33, 0x91, 0x7D, 0x80, 0x80, 0x07, 0x30, 0xFE, 0x03, 0x4E, 0xE8, 0x84, 0x4B, 0xD0, + 0xC2, 0x4E, 0xB8, 0x1B, 0x3B, 0xB3, 0xAB, 0x0F, 0xB8, 0xB9, 0x75, 0xE8, 0xAF, 0x75, 0x20, 0x84, + 0x0E, 0xB0, 0x80, 0x97, 0x92, 0x80, 0x0B, 0xC8, 0x84, 0x6B, 0x59, 0xB5, 0x89, 0xB1, 0xC1, 0x52, + 0xAB, 0xA1, 0x5F, 0x20, 0x80, 0x46, 0xD0, 0xA5, 0xF7, 0x89, 0x17, 0x20, 0xF8, 0x00, 0x13, 0x70, + 0x81, 0x1E, 0x80, 0x04, 0x49, 0x50, 0x04, 0x48, 0xC0, 0x02, 0x08, 0x48, 0x34, 0x13, 0x81, 0x42, + 0x28, 0x7C, 0x34, 0x3B, 0xE9, 0x07, 0x7C, 0x08, 0x86, 0x04, 0xD0, 0x80, 0x1A, 0xE0, 0x03, 0x0F, + 0xEC, 0x84, 0x58, 0x20, 0x05, 0x3E, 0x98, 0x82, 0x1F, 0xE8, 0x01, 0x11, 0x88, 0xA1, 0x5F, 0x50, + 0xB0, 0x70, 0x80, 0x0C, 0xBF, 0x93, 0x80, 0x14, 0xC8, 0x34, 0x36, 0x4C, 0xB3, 0x21, 0xB3, 0xC1, + 0x96, 0xF8, 0xB3, 0x05, 0xB0, 0x00, 0x2E, 0x80, 0x02, 0x26, 0x98, 0x97, 0x1A, 0x08, 0x81, 0xDB, + 0x82, 0x00, 0x13, 0x10, 0x83, 0x34, 0x30, 0x85, 0x57, 0x20, 0x05, 0x28, 0x80, 0x00, 0x74, 0x88, + 0x1D, 0x13, 0x8A, 0x88, 0x5E, 0x84, 0x28, 0xF1, 0x80, 0x98, 0xEF, 0x40, 0xAF, 0x7E, 0x90, 0x09, + 0x2F, 0x48, 0x00, 0x14, 0x78, 0x02, 0x0D, 0x40, 0x81, 0x1A, 0x00, 0x84, 0x49, 0xC0, 0x05, 0x5C, + 0x98, 0x84, 0x99, 0xE9, 0x81, 0x1D, 0xB0, 0x80, 0x01, 0x50, 0x05, 0x6D, 0xB8, 0x80, 0x07, 0x68, + 0x82, 0x17, 0x08, 0xAC, 0x4C, 0xEB, 0x07, 0x7D, 0x28, 0x45, 0x1A, 0x19, 0x8F, 0x5D, 0xDC, 0x07, + 0x5B, 0x80, 0x80, 0x04, 0xD8, 0x01, 0x13, 0x30, 0x81, 0xBF, 0x32, 0xA9, 0x04, 0xF8, 0x02, 0x7A, + 0x10, 0x84, 0x00, 0xD8, 0x81, 0x48, 0xE0, 0x04, 0x52, 0xC8, 0x03, 0x05, 0xB0, 0x85, 0x6B, 0x61, + 0xB6, 0xAE, 0xF2, 0x3C, 0x59, 0xEA, 0x87, 0x62, 0xFE, 0x20, 0x84, 0x0F, 0x10, 0x01, 0x3E, 0x4C, + 0x03, 0x52, 0x60, 0x82, 0x44, 0x7A, 0x80, 0x0B, 0xD8, 0x81, 0x33, 0x30, 0x83, 0x24, 0x90, 0x19, + 0x28, 0x70, 0x81, 0xE6, 0x0A, 0x81, 0x25, 0xA0, 0x01, 0x19, 0x78, 0x81, 0x06, 0x60, 0x33, 0x53, + 0x94, 0xA5, 0xD0, 0x51, 0xBA, 0x56, 0x5B, 0x2F, 0x4F, 0xF8, 0x2F, 0x29, 0xE0, 0x81, 0x0B, 0x80, + 0x00, 0x03, 0xB0, 0x80, 0x17, 0xB8, 0xBA, 0x60, 0xC0, 0x07, 0x7C, 0xD8, 0xC1, 0x19, 0xE0, 0x81, + 0x1D, 0x50, 0x00, 0x54, 0xD8, 0x07, 0x7D, 0x90, 0x18, 0x37, 0x7C, 0xA8, 0x62, 0x5A, 0x30, 0x6D, + 0xC8, 0x02, 0xE6, 0x4A, 0x81, 0x46, 0xE8, 0x83, 0x35, 0xD0, 0x82, 0x31, 0x60, 0x02, 0x1E, 0xA0, + 0xB9, 0x0F, 0xD0, 0x2B, 0x08, 0xF0, 0x80, 0x33, 0x98, 0x8F, 0x99, 0xA1, 0xBA, 0x28, 0x50, 0x82, + 0x29, 0x9A, 0x01, 0x85, 0xFA, 0x85, 0x22, 0x38, 0x80, 0x05, 0x80, 0x80, 0x02, 0x58, 0x80, 0xF2, + 0x0A, 0x47, 0x46, 0xEB, 0x07, 0x5A, 0x28, 0x00, 0x3E, 0xF0, 0x03, 0x30, 0xE8, 0x01, 0x05, 0x40, + 0xB0, 0x01, 0x28, 0x92, 0x10, 0x80, 0xBE, 0x70, 0xB0, 0x07, 0x7C, 0xC0, 0x86, 0x59, 0xC0, 0x86, + 0xF2, 0x02, 0x47, 0xD9, 0x61, 0x8E, 0x60, 0x94, 0x88, 0x7A, 0x90, 0xA5, 0xFE, 0x32, 0xAE, 0x59, + 0x70, 0x83, 0x14, 0xB8, 0x00, 0x0D, 0x08, 0x01, 0x31, 0xC8, 0x83, 0x3A, 0xFB, 0x34, 0x4B, 0x04, + 0x02, 0x11, 0x50, 0x89, 0x21, 0x28, 0x06, 0x89, 0x00, 0x85, 0x01, 0x80, 0x82, 0x35, 0x48, 0x02, + 0x2D, 0x90, 0x03, 0xA3, 0x19, 0x8A, 0x93, 0x38, 0x01, 0x0B, 0x68, 0x80, 0x89, 0xAC, 0xB3, 0x3C, + 0xD0, 0xBB, 0x75, 0xD8, 0x4A, 0x88, 0x61, 0x06, 0x02, 0xA0, 0x04, 0x4E, 0xB8, 0x04, 0x36, 0x48, + 0x82, 0x0F, 0xC0, 0x07, 0x71, 0x20, 0x80, 0xFE, 0x17, 0xE0, 0x81, 0xA1, 0x4C, 0x80, 0x20, 0xC8, + 0xC8, 0x52, 0x5B, 0xB4, 0xC5, 0xB8, 0x87, 0xD0, 0xC9, 0x07, 0x71, 0xB8, 0x86, 0xDB, 0x54, 0x06, + 0x54, 0x30, 0x82, 0x06, 0x58, 0x2E, 0x08, 0xB8, 0x80, 0x19, 0x90, 0x82, 0x35, 0x20, 0x1E, 0x30, + 0xD0, 0x26, 0xF5, 0xD8, 0x38, 0xF5, 0xCB, 0x02, 0x74, 0xE8, 0x07, 0xCD, 0xF2, 0x4A, 0x29, 0x48, + 0x83, 0x05, 0x29, 0x04, 0x3A, 0x58, 0xB1, 0x08, 0x32, 0x9B, 0x81, 0x94, 0x03, 0x4E, 0x80, 0x04, + 0x39, 0xE8, 0x83, 0x05, 0xB8, 0x86, 0xCE, 0xEC, 0x87, 0x22, 0x68, 0x84, 0x49, 0x88, 0x85, 0x4E, + 0x48, 0x83, 0x10, 0x68, 0x81, 0x7E, 0x50, 0x86, 0x02, 0xE8, 0x83, 0x77, 0x9B, 0x46, 0x0B, 0x40, + 0x07, 0x7D, 0xF4, 0x07, 0x87, 0xAB, 0xC9, 0x1B, 0xF9, 0x07, 0x71, 0x18, 0x02, 0x04, 0xD8, 0x2B, + 0xBE, 0x92, 0x00, 0x0D, 0x60, 0x81, 0x33, 0x80, 0x82, 0x33, 0x10, 0x03, 0x31, 0x98, 0x02, 0x26, + 0x98, 0xA0, 0x97, 0x34, 0xCC, 0xC8, 0xF8, 0x00, 0x41, 0xC0, 0x87, 0x19, 0x43, 0x33, 0xA7, 0xBA, + 0x00, 0x16, 0x50, 0x9C, 0x34, 0x20, 0x8A, 0xD5, 0x93, 0x82, 0x0B, 0xB0, 0x27, 0x13, 0xA0, 0x84, + 0x2E, 0x88, 0x84, 0x48, 0xE0, 0x03, 0x4A, 0x80, 0x00, 0x20, 0xDB, 0xCA, 0x7E, 0x20, 0x80, 0x61, + 0x98, 0x04, 0x4E, 0x98, 0x83, 0x35, 0xD8, 0x00, 0x37, 0xD0, 0xB7, 0x0B, 0x00, 0x84, 0x53, 0x88, + 0x04, 0x33, 0xF0, 0x01, 0x05, 0x08, 0x06, 0xEF, 0x20, 0xC5, 0x46, 0xFB, 0x87, 0xF0, 0x31, 0x80, + 0x0C, 0xE8, 0x80, 0x16, 0x20, 0x82, 0x1B, 0x00, 0x82, 0xDD, 0xEB, 0x81, 0x2E, 0x30, 0x83, 0xD6, + 0xE3, 0x01, 0x1F, 0xD8, 0x81, 0x1B, 0xF8, 0xB9, 0x05, 0x18, 0x81, 0x59, 0x58, 0x50, 0x30, 0x03, + 0xC7, 0xEF, 0x48, 0xC4, 0x14, 0x10, 0xFE, 0x01, 0x2A, 0xFA, 0xB4, 0x24, 0x98, 0x82, 0x1E, 0x90, + 0x00, 0x08, 0x90, 0x06, 0x69, 0x28, 0x00, 0x09, 0xA0, 0x04, 0x5D, 0x90, 0x05, 0x56, 0x50, 0x03, + 0x0B, 0x40, 0xBA, 0x37, 0xC4, 0x8B, 0x0E, 0x28, 0x85, 0x33, 0x60, 0x82, 0x29, 0x70, 0x81, 0x0F, + 0xED, 0x87, 0x18, 0xB8, 0x01, 0x0F, 0xB4, 0xC7, 0x33, 0x48, 0x00, 0x99, 0x64, 0x89, 0x7C, 0x40, + 0x35, 0x3B, 0xD1, 0x07, 0x71, 0x50, 0x81, 0x0C, 0xD8, 0xAB, 0x04, 0x48, 0x80, 0x07, 0xD0, 0x80, + 0x41, 0xCD, 0xA2, 0x6C, 0xB4, 0x00, 0x25, 0x2D, 0x02, 0x09, 0x33, 0xAF, 0xB9, 0x34, 0xB2, 0x7D, + 0x08, 0x87, 0x23, 0xA9, 0x20, 0x11, 0x00, 0x82, 0x3B, 0x5B, 0xC7, 0x5E, 0x58, 0xC9, 0x45, 0x59, + 0x40, 0x17, 0xB8, 0x81, 0x0F, 0x18, 0x87, 0xC2, 0x13, 0x3E, 0xE5, 0x98, 0x05, 0x02, 0x30, 0x81, + 0x6D, 0x5C, 0x00, 0x42, 0x90, 0xA5, 0x00, 0xA8, 0x85, 0x28, 0xE0, 0x04, 0x5D, 0x08, 0x84, 0x26, + 0x28, 0x80, 0x68, 0x80, 0x9D, 0x34, 0x73, 0x09, 0x61, 0x74, 0xC3, 0xBB, 0xC4, 0x86, 0x60, 0xF0, + 0x84, 0x2F, 0x20, 0x82, 0x79, 0x22, 0x82, 0x14, 0x08, 0x02, 0x5B, 0xB8, 0x89, 0x19, 0xC1, 0xD3, + 0x73, 0x4B, 0xB7, 0x88, 0xF8, 0xB2, 0x70, 0x08, 0x82, 0x0B, 0x20, 0x12, 0x7B, 0x6A, 0x80, 0x22, + 0xF9, 0x00, 0x37, 0x25, 0x8F, 0x05, 0x8B, 0x86, 0x61, 0x08, 0x06, 0x7B, 0x58, 0xD4, 0x37, 0xAC, + 0x18, 0x7D, 0x60, 0x86, 0x11, 0x78, 0x25, 0x65, 0x98, 0xA5, 0x6B, 0x98, 0x43, 0x5C, 0xA0, 0x04, + 0x28, 0xC8, 0xB3, 0x8C, 0xB4, 0x93, 0x43, 0x44, 0x35, 0x34, 0x2B, 0xB5, 0xCD, 0xDA, 0x07, 0x31, + 0x4C, 0x36, 0x3E, 0x2B, 0x37, 0xC5, 0xA8, 0x93, 0x1A, 0xDC, 0x07, 0x54, 0xB8, 0x00, 0x11, 0xE0, + 0x81, 0x6B, 0x73, 0xCD, 0x0C, 0xFE, 0x68, 0x80, 0x1B, 0x48, 0x01, 0x08, 0x40, 0x2A, 0x48, 0xD3, + 0x4A, 0xC4, 0x28, 0xC5, 0x1A, 0x92, 0x08, 0x59, 0x82, 0xB2, 0x62, 0xAA, 0xB0, 0x02, 0xC8, 0x43, + 0x08, 0xF0, 0x82, 0x05, 0x65, 0xB4, 0xFB, 0xE1, 0x48, 0x38, 0xAA, 0xC0, 0x36, 0x24, 0xD8, 0x3B, + 0xF1, 0x23, 0xCE, 0x3A, 0x53, 0x13, 0x08, 0x05, 0x33, 0x98, 0xA2, 0x06, 0x08, 0x86, 0x7E, 0x98, + 0x05, 0x0B, 0x10, 0x81, 0x1D, 0x10, 0x01, 0x05, 0x90, 0x06, 0xF3, 0x82, 0x09, 0xB9, 0x2C, 0x58, + 0x93, 0x9B, 0xA5, 0x91, 0x59, 0x07, 0x65, 0x50, 0x86, 0x71, 0xB0, 0x56, 0x88, 0xB1, 0xD1, 0xAE, + 0x42, 0xB7, 0x5F, 0x1C, 0x19, 0xD0, 0x83, 0xA8, 0xE1, 0xEB, 0x07, 0x0A, 0x10, 0x02, 0x63, 0xD0, + 0x05, 0x3E, 0x18, 0x83, 0x25, 0x28, 0x00, 0x69, 0xC8, 0x87, 0x6B, 0x38, 0x80, 0x55, 0x1C, 0xCA, + 0x0B, 0xA0, 0x05, 0x8A, 0x4D, 0x9B, 0x96, 0x5D, 0x2A, 0xD8, 0xFC, 0x9C, 0xE2, 0xFB, 0x07, 0x78, + 0xF0, 0xC7, 0xE4, 0x68, 0xD0, 0x8E, 0x3C, 0x26, 0x9B, 0xFC, 0x45, 0x12, 0xB9, 0x06, 0x0A, 0x30, + 0x86, 0x2F, 0xE5, 0x03, 0x33, 0xE0, 0x01, 0x08, 0xB0, 0x07, 0xF2, 0xB8, 0x00, 0x2C, 0xE0, 0x03, + 0x3E, 0xD0, 0x02, 0x29, 0x30, 0x80, 0x6B, 0xB8, 0xD9, 0xAD, 0xF4, 0x45, 0xFE, 0xD3, 0x2C, 0x88, + 0x81, 0x43, 0x93, 0x0B, 0x47, 0xBA, 0xE0, 0x3F, 0x5E, 0x2C, 0xBE, 0x80, 0xB2, 0x80, 0x5A, 0xA0, + 0x04, 0x56, 0x08, 0x12, 0x13, 0x90, 0x41, 0xF2, 0xD8, 0x80, 0x40, 0xD0, 0x85, 0x48, 0x88, 0x94, + 0x06, 0x48, 0x2D, 0x52, 0x2C, 0x58, 0x6D, 0x21, 0xA6, 0x89, 0x28, 0x44, 0xBD, 0xDD, 0x5B, 0xAE, + 0xA2, 0x25, 0xB9, 0xB0, 0xCB, 0x45, 0x49, 0xCA, 0x3F, 0x68, 0x82, 0x1B, 0x80, 0x80, 0x60, 0x75, + 0x83, 0x06, 0xF8, 0x52, 0xB1, 0x59, 0x60, 0x84, 0x2E, 0x30, 0x81, 0x59, 0xB8, 0xD8, 0xCE, 0x5C, + 0xDD, 0x9E, 0xA5, 0x93, 0xF9, 0x9C, 0x5B, 0xD6, 0xEA, 0x45, 0x93, 0xC3, 0xDC, 0x9E, 0x2D, 0x91, + 0xF5, 0xC2, 0x87, 0x79, 0xB2, 0x80, 0x0F, 0x58, 0x80, 0x5F, 0x98, 0xA5, 0x7D, 0xE8, 0x80, 0x5A, + 0x30, 0x06, 0x5C, 0x60, 0x85, 0x1D, 0x18, 0x80, 0xEE, 0x64, 0x5D, 0x1B, 0x4A, 0x0E, 0xCF, 0xDB, + 0xDA, 0xBE, 0xDD, 0x9A, 0xFB, 0x89, 0x5D, 0x8A, 0xB5, 0xC9, 0xEF, 0x58, 0xB0, 0xB5, 0xAC, 0x59, + 0xEA, 0x05, 0x85, 0x05, 0x08, 0x82, 0x1B, 0xF0, 0x80, 0x20, 0xF0, 0x56, 0x12, 0x49, 0x5E, 0xE8, + 0x3D, 0x57, 0xE6, 0x88, 0x9D, 0xDA, 0x7D, 0x5E, 0xAF, 0x9D, 0x98, 0x9C, 0x4D, 0x0C, 0x70, 0x94, + 0x4D, 0x0A, 0x03, 0x9D, 0xB8, 0x70, 0x28, 0x58, 0xEB, 0x85, 0xF9, 0x45, 0x07, 0x71, 0x88, 0xB2, + 0xE4, 0xB5, 0x5D, 0xE9, 0xAD, 0x31, 0x3C, 0x31, 0xDF, 0xF3, 0xD1, 0x2F, 0xF5, 0x15, 0x99, 0x1A, + 0x5C, 0x8E, 0x92, 0x1B, 0x11, 0x7F, 0x54, 0xB8, 0x63, 0xC2, 0xDF, 0x85, 0x4B, 0xE0, 0x05, 0x46, + 0xE0, 0x3F, 0x62, 0xE0, 0x07, 0x86, 0xE0, 0x08, 0x96, 0xE0, 0x09, 0xA6, 0xE0, 0x0A, 0xB6, 0xE0, + 0x0B, 0xC6, 0x60, 0xF0, 0x08, 0x08, 0x00, 0x3B, +}; diff --git a/demos/modules/gwin/widgets/main.c b/demos/modules/gwin/widgets/main.c index e44ce6b0..e0e4c401 100644 --- a/demos/modules/gwin/widgets/main.c +++ b/demos/modules/gwin/widgets/main.c @@ -28,6 +28,9 @@ #include "gfx.h" +// include our chibios logo in a .gif format +#include "image_chibios.h" + static GListener gl; static GHandle ghConsole; static GHandle ghTabButtons, ghTabSliders, ghTabCheckboxes, ghTabLabels, ghTabRadios, ghTabImages; @@ -36,7 +39,7 @@ static GHandle ghSlider1, ghSlider2, ghSlider3, ghSlider4; static GHandle ghCheckbox1, ghCheckbox2; static GHandle ghLabel1; static GHandle ghRadio1, ghRadio2; -//static GHandle ghImage1; +static GHandle ghImage1; #define ScrWidth gdispGetWidth() #define ScrHeight gdispGetHeight() @@ -127,6 +130,12 @@ int main(void) { wi.g.x = 0*wi.g.width; wi.text = "Yes"; ghRadio1 = gwinCreateRadio(NULL, &wi, GROUP_R1R2); wi.g.x = 1*wi.g.width; wi.text = "No"; ghRadio2 = gwinCreateRadio(NULL, &wi, GROUP_R1R2); + // Image + wi.g.x = ScrWidth-210; wi.g.y = TAB_HEIGHT + 10; wi.g.width = 200; wi.g.height = 200; + ghImage1 = gwinImageCreate(NULL, &wi); + gwinImageOpenMemory(ghImage1, image_chibios); + gwinImageCache(ghImage1); + // Console - we apply some special colors before making it visible wi.g.width = ScrWidth/2-1; wi.g.height = ScrHeight/2-1; wi.g.x = ScrWidth/2+1; wi.g.y = ScrHeight/2+1; @@ -192,7 +201,7 @@ int main(void) { gwinSetVisible(ghLabel1, ((GEventGWinRadio *)pe)->radio == ghTabLabels); gwinSetVisible(ghRadio1, ((GEventGWinRadio *)pe)->radio == ghTabRadios); gwinSetVisible(ghRadio2, ((GEventGWinRadio *)pe)->radio == ghTabRadios); - //gwinSetVisible(ghImage1, ((GEventGWinRadio *)pe)->radio == ghTabImages); + gwinSetVisible(ghImage1, ((GEventGWinRadio *)pe)->radio == ghTabImages); // Do some special animation for Label1 if (((GEventGWinRadio *)pe)->radio == ghTabLabels) { -- cgit v1.2.3 From fb131f8d26319c787286a9adf24d9876d9793b2f Mon Sep 17 00:00:00 2001 From: inmarket Date: Sun, 7 Jul 2013 19:41:15 +1000 Subject: Remove Slider demo. It is replaced by the Wdigets demo --- demos/modules/gwin/slider/gfxconf.h | 84 ----------------------- demos/modules/gwin/slider/main.c | 97 --------------------------- demos/modules/gwin/slider/readme.txt | 6 -- demos/modules/gwin/slider/result_647x490.png | Bin 24141 -> 0 bytes 4 files changed, 187 deletions(-) delete mode 100644 demos/modules/gwin/slider/gfxconf.h delete mode 100644 demos/modules/gwin/slider/main.c delete mode 100644 demos/modules/gwin/slider/readme.txt delete mode 100644 demos/modules/gwin/slider/result_647x490.png (limited to 'demos/modules') diff --git a/demos/modules/gwin/slider/gfxconf.h b/demos/modules/gwin/slider/gfxconf.h deleted file mode 100644 index b7b39a3f..00000000 --- a/demos/modules/gwin/slider/gfxconf.h +++ /dev/null @@ -1,84 +0,0 @@ -/* - * 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. - */ - -#ifndef _GFXCONF_H -#define _GFXCONF_H - -/* The operating system to use - one of these must be defined */ -#define GFX_USE_OS_CHIBIOS TRUE -#define GFX_USE_OS_WIN32 FALSE -#define GFX_USE_OS_POSIX FALSE - -/* GFX sub-systems to turn on */ -#define GFX_USE_GDISP TRUE -#define GFX_USE_GWIN TRUE -#define GFX_USE_GEVENT TRUE -#define GFX_USE_GTIMER TRUE -#define GFX_USE_GINPUT TRUE - -/* Features for the GDISP sub-system. */ -#define GDISP_NEED_VALIDATION TRUE -#define GDISP_NEED_CLIP TRUE -#define GDISP_NEED_TEXT TRUE -#define GDISP_NEED_CIRCLE FALSE -#define GDISP_NEED_ELLIPSE FALSE -#define GDISP_NEED_ARC FALSE -#define GDISP_NEED_CONVEX_POLYGON FALSE -#define GDISP_NEED_SCROLL FALSE -#define GDISP_NEED_PIXELREAD FALSE -#define GDISP_NEED_CONTROL FALSE -#define GDISP_NEED_IMAGE FALSE -#define GDISP_NEED_MULTITHREAD TRUE -#define GDISP_NEED_ASYNC FALSE -#define GDISP_NEED_MSGAPI FALSE - -/* Builtin Fonts */ -#define GDISP_INCLUDE_FONT_SMALL FALSE -#define GDISP_INCLUDE_FONT_LARGER FALSE -#define GDISP_INCLUDE_FONT_UI1 FALSE -#define GDISP_INCLUDE_FONT_UI2 TRUE -#define GDISP_INCLUDE_FONT_LARGENUMBERS FALSE - -/* GDISP image decoders */ -#define GDISP_NEED_IMAGE_NATIVE FALSE -#define GDISP_NEED_IMAGE_GIF FALSE -#define GDISP_NEED_IMAGE_BMP FALSE -#define GDISP_NEED_IMAGE_JPG FALSE -#define GDISP_NEED_IMAGE_PNG FALSE - -/* Features for the GWIN sub-system. */ -#define GWIN_NEED_BUTTON FALSE -#define GWIN_NEED_CONSOLE TRUE -#define GWIN_NEED_SLIDER TRUE - -/* Features for the GINPUT sub-system. */ -#define GINPUT_NEED_MOUSE TRUE -#define GINPUT_NEED_DIAL TRUE - -#endif /* _GFXCONF_H */ diff --git a/demos/modules/gwin/slider/main.c b/demos/modules/gwin/slider/main.c deleted file mode 100644 index 15dc3e26..00000000 --- a/demos/modules/gwin/slider/main.c +++ /dev/null @@ -1,97 +0,0 @@ -/* - * 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 "chprintf.h" - -static GListener gl; - -#define SLIDER_WIDTH 20 - -int main(void) { - coord_t swidth, sheight; - GHandle ghSliderH, ghSliderV, ghConsole; - font_t fui2; - GEvent * pe; - GEventGWinSlider * pSliderEvent; - BaseSequentialStream *consout; - - gfxInit(); // Initialize the display - - // Get the display dimensions - swidth = gdispGetWidth(); - sheight = gdispGetHeight(); - - // Get the font - fui2 = gdispOpenFont("UI2"); - - // Create out gwin windows/widgets - ghSliderH = gwinCreateSlider(NULL, 5, 5, swidth-10, SLIDER_WIDTH); - ghSliderV = gwinCreateSlider(NULL, 5, 10+SLIDER_WIDTH, SLIDER_WIDTH, sheight-15+SLIDER_WIDTH); - ghConsole = gwinCreateConsole(NULL, 10+SLIDER_WIDTH, 10+SLIDER_WIDTH, swidth-15-SLIDER_WIDTH, sheight-15-SLIDER_WIDTH, fui2); - consout = gwinGetConsoleStream(ghConsole); - - // Color up the console window - gwinSetColor(ghConsole, White); - gwinSetBgColor(ghConsole, Blue); - - // Assign the mouse and dials to the sliders. -#if GINPUT_NEED_MOUSE - gwinAttachSliderMouse(ghSliderH, 0); - gwinAttachSliderMouse(ghSliderV, 0); -#endif -#if GINPUT_NEED_DIAL - gwinAttachSliderDial(ghSliderV, 0); - gwinAttachSliderDial(ghSliderH, 1); -#endif - - // We want to listen for slider events - geventListenerInit(&gl); - geventAttachSource(&gl, gwinGetSliderSource(ghSliderH), 0); - geventAttachSource(&gl, gwinGetSliderSource(ghSliderV), 0); - - // Draw everything on the screen - gwinClear(ghConsole); - gwinSliderDraw(ghSliderH); - gwinSliderDraw(ghSliderV); - - while(1) { - // Get an Event - pe = geventEventWait(&gl, TIME_INFINITE); - - switch(pe->type) { - case GEVENT_GWIN_SLIDER: - pSliderEvent = (GEventGWinSlider *)pe; - chprintf(consout, "%c=%d\n", pSliderEvent->slider == ghSliderH ? 'H' : 'V', pSliderEvent->position); - break; - } - } - - return 0; -} diff --git a/demos/modules/gwin/slider/readme.txt b/demos/modules/gwin/slider/readme.txt deleted file mode 100644 index 02d733e9..00000000 --- a/demos/modules/gwin/slider/readme.txt +++ /dev/null @@ -1,6 +0,0 @@ -This demo supports input from both a mouse/touch 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. diff --git a/demos/modules/gwin/slider/result_647x490.png b/demos/modules/gwin/slider/result_647x490.png deleted file mode 100644 index c7b12a93..00000000 Binary files a/demos/modules/gwin/slider/result_647x490.png and /dev/null differ -- cgit v1.2.3 From 74035c5b2e3c79d07643e8ac10058244ae74fcb7 Mon Sep 17 00:00:00 2001 From: inmarket Date: Sun, 7 Jul 2013 19:42:22 +1000 Subject: Add missing file to GDISP image demo --- demos/modules/gdisp/gdisp_images/test-pal8.h | 587 +++++++++++++++++++++++++++ 1 file changed, 587 insertions(+) create mode 100644 demos/modules/gdisp/gdisp_images/test-pal8.h (limited to 'demos/modules') diff --git a/demos/modules/gdisp/gdisp_images/test-pal8.h b/demos/modules/gdisp/gdisp_images/test-pal8.h new file mode 100644 index 00000000..9d1d7e0f --- /dev/null +++ b/demos/modules/gdisp/gdisp_images/test-pal8.h @@ -0,0 +1,587 @@ +/** + * This file was generated from "test-pal8.bmp" using... + * + * file2c -cs test-pal8.bmp test-pal8.h + * + */ +static const unsigned char test_pal8[] = { + 0x42, 0x4D, 0x26, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x04, 0x00, 0x00, 0x28, 0x00, + 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x13, 0x0B, 0x00, 0x00, 0x13, 0x0B, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0xCC, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x2B, + 0x00, 0x00, 0x00, 0x2B, 0x33, 0x00, 0x00, 0x2B, 0x66, 0x00, 0x00, 0x2B, 0x99, 0x00, 0x00, 0x2B, + 0xCC, 0x00, 0x00, 0x2B, 0xFF, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x55, 0x33, 0x00, 0x00, 0x55, + 0x66, 0x00, 0x00, 0x55, 0x99, 0x00, 0x00, 0x55, 0xCC, 0x00, 0x00, 0x55, 0xFF, 0x00, 0x00, 0x80, + 0x00, 0x00, 0x00, 0x80, 0x33, 0x00, 0x00, 0x80, 0x66, 0x00, 0x00, 0x80, 0x99, 0x00, 0x00, 0x80, + 0xCC, 0x00, 0x00, 0x80, 0xFF, 0x00, 0x00, 0xAA, 0x00, 0x00, 0x00, 0xAA, 0x33, 0x00, 0x00, 0xAA, + 0x66, 0x00, 0x00, 0xAA, 0x99, 0x00, 0x00, 0xAA, 0xCC, 0x00, 0x00, 0xAA, 0xFF, 0x00, 0x00, 0xD5, + 0x00, 0x00, 0x00, 0xD5, 0x33, 0x00, 0x00, 0xD5, 0x66, 0x00, 0x00, 0xD5, 0x99, 0x00, 0x00, 0xD5, + 0xCC, 0x00, 0x00, 0xD5, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x33, 0x00, 0x00, 0xFF, + 0x66, 0x00, 0x00, 0xFF, 0x99, 0x00, 0x00, 0xFF, 0xCC, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x33, 0x00, + 0x00, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x66, 0x00, 0x33, 0x00, 0x99, 0x00, 0x33, 0x00, + 0xCC, 0x00, 0x33, 0x00, 0xFF, 0x00, 0x33, 0x2B, 0x00, 0x00, 0x33, 0x2B, 0x33, 0x00, 0x33, 0x2B, + 0x66, 0x00, 0x33, 0x2B, 0x99, 0x00, 0x33, 0x2B, 0xCC, 0x00, 0x33, 0x2B, 0xFF, 0x00, 0x33, 0x55, + 0x00, 0x00, 0x33, 0x55, 0x33, 0x00, 0x33, 0x55, 0x66, 0x00, 0x33, 0x55, 0x99, 0x00, 0x33, 0x55, + 0xCC, 0x00, 0x33, 0x55, 0xFF, 0x00, 0x33, 0x80, 0x00, 0x00, 0x33, 0x80, 0x33, 0x00, 0x33, 0x80, + 0x66, 0x00, 0x33, 0x80, 0x99, 0x00, 0x33, 0x80, 0xCC, 0x00, 0x33, 0x80, 0xFF, 0x00, 0x33, 0xAA, + 0x00, 0x00, 0x33, 0xAA, 0x33, 0x00, 0x33, 0xAA, 0x66, 0x00, 0x33, 0xAA, 0x99, 0x00, 0x33, 0xAA, + 0xCC, 0x00, 0x33, 0xAA, 0xFF, 0x00, 0x33, 0xD5, 0x00, 0x00, 0x33, 0xD5, 0x33, 0x00, 0x33, 0xD5, + 0x66, 0x00, 0x33, 0xD5, 0x99, 0x00, 0x33, 0xD5, 0xCC, 0x00, 0x33, 0xD5, 0xFF, 0x00, 0x33, 0xFF, + 0x00, 0x00, 0x33, 0xFF, 0x33, 0x00, 0x33, 0xFF, 0x66, 0x00, 0x33, 0xFF, 0x99, 0x00, 0x33, 0xFF, + 0xCC, 0x00, 0x33, 0xFF, 0xFF, 0x00, 0x66, 0x00, 0x00, 0x00, 0x66, 0x00, 0x33, 0x00, 0x66, 0x00, + 0x66, 0x00, 0x66, 0x00, 0x99, 0x00, 0x66, 0x00, 0xCC, 0x00, 0x66, 0x00, 0xFF, 0x00, 0x66, 0x2B, + 0x00, 0x00, 0x66, 0x2B, 0x33, 0x00, 0x66, 0x2B, 0x66, 0x00, 0x66, 0x2B, 0x99, 0x00, 0x66, 0x2B, + 0xCC, 0x00, 0x66, 0x2B, 0xFF, 0x00, 0x66, 0x55, 0x00, 0x00, 0x66, 0x55, 0x33, 0x00, 0x66, 0x55, + 0x66, 0x00, 0x66, 0x55, 0x99, 0x00, 0x66, 0x55, 0xCC, 0x00, 0x66, 0x55, 0xFF, 0x00, 0x66, 0x80, + 0x00, 0x00, 0x66, 0x80, 0x33, 0x00, 0x66, 0x80, 0x66, 0x00, 0x66, 0x80, 0x99, 0x00, 0x66, 0x80, + 0xCC, 0x00, 0x66, 0x80, 0xFF, 0x00, 0x66, 0xAA, 0x00, 0x00, 0x66, 0xAA, 0x33, 0x00, 0x66, 0xAA, + 0x66, 0x00, 0x66, 0xAA, 0x99, 0x00, 0x66, 0xAA, 0xCC, 0x00, 0x66, 0xAA, 0xFF, 0x00, 0x66, 0xD5, + 0x00, 0x00, 0x66, 0xD5, 0x33, 0x00, 0x66, 0xD5, 0x66, 0x00, 0x66, 0xD5, 0x99, 0x00, 0x66, 0xD5, + 0xCC, 0x00, 0x66, 0xD5, 0xFF, 0x00, 0x66, 0xFF, 0x00, 0x00, 0x66, 0xFF, 0x33, 0x00, 0x66, 0xFF, + 0x66, 0x00, 0x66, 0xFF, 0x99, 0x00, 0x66, 0xFF, 0xCC, 0x00, 0x66, 0xFF, 0xFF, 0x00, 0x99, 0x00, + 0x00, 0x00, 0x99, 0x00, 0x33, 0x00, 0x99, 0x00, 0x66, 0x00, 0x99, 0x00, 0x99, 0x00, 0x99, 0x00, + 0xCC, 0x00, 0x99, 0x00, 0xFF, 0x00, 0x99, 0x2B, 0x00, 0x00, 0x99, 0x2B, 0x33, 0x00, 0x99, 0x2B, + 0x66, 0x00, 0x99, 0x2B, 0x99, 0x00, 0x99, 0x2B, 0xCC, 0x00, 0x99, 0x2B, 0xFF, 0x00, 0x99, 0x55, + 0x00, 0x00, 0x99, 0x55, 0x33, 0x00, 0x99, 0x55, 0x66, 0x00, 0x99, 0x55, 0x99, 0x00, 0x99, 0x55, + 0xCC, 0x00, 0x99, 0x55, 0xFF, 0x00, 0x99, 0x80, 0x00, 0x00, 0x99, 0x80, 0x33, 0x00, 0x99, 0x80, + 0x66, 0x00, 0x99, 0x80, 0x99, 0x00, 0x99, 0x80, 0xCC, 0x00, 0x99, 0x80, 0xFF, 0x00, 0x99, 0xAA, + 0x00, 0x00, 0x99, 0xAA, 0x33, 0x00, 0x99, 0xAA, 0x66, 0x00, 0x99, 0xAA, 0x99, 0x00, 0x99, 0xAA, + 0xCC, 0x00, 0x99, 0xAA, 0xFF, 0x00, 0x99, 0xD5, 0x00, 0x00, 0x99, 0xD5, 0x33, 0x00, 0x99, 0xD5, + 0x66, 0x00, 0x99, 0xD5, 0x99, 0x00, 0x99, 0xD5, 0xCC, 0x00, 0x99, 0xD5, 0xFF, 0x00, 0x99, 0xFF, + 0x00, 0x00, 0x99, 0xFF, 0x33, 0x00, 0x99, 0xFF, 0x66, 0x00, 0x99, 0xFF, 0x99, 0x00, 0x99, 0xFF, + 0xCC, 0x00, 0x99, 0xFF, 0xFF, 0x00, 0xCC, 0x00, 0x00, 0x00, 0xCC, 0x00, 0x33, 0x00, 0xCC, 0x00, + 0x66, 0x00, 0xCC, 0x00, 0x99, 0x00, 0xCC, 0x00, 0xCC, 0x00, 0xCC, 0x00, 0xFF, 0x00, 0xCC, 0x2B, + 0x00, 0x00, 0xCC, 0x2B, 0x33, 0x00, 0xCC, 0x2B, 0x66, 0x00, 0xCC, 0x2B, 0x99, 0x00, 0xCC, 0x2B, + 0xCC, 0x00, 0xCC, 0x2B, 0xFF, 0x00, 0xCC, 0x55, 0x00, 0x00, 0xCC, 0x55, 0x33, 0x00, 0xCC, 0x55, + 0x66, 0x00, 0xCC, 0x55, 0x99, 0x00, 0xCC, 0x55, 0xCC, 0x00, 0xCC, 0x55, 0xFF, 0x00, 0xCC, 0x80, + 0x00, 0x00, 0xCC, 0x80, 0x33, 0x00, 0xCC, 0x80, 0x66, 0x00, 0xCC, 0x80, 0x99, 0x00, 0xCC, 0x80, + 0xCC, 0x00, 0xCC, 0x80, 0xFF, 0x00, 0xCC, 0xAA, 0x00, 0x00, 0xCC, 0xAA, 0x33, 0x00, 0xCC, 0xAA, + 0x66, 0x00, 0xCC, 0xAA, 0x99, 0x00, 0xCC, 0xAA, 0xCC, 0x00, 0xCC, 0xAA, 0xFF, 0x00, 0xCC, 0xD5, + 0x00, 0x00, 0xCC, 0xD5, 0x33, 0x00, 0xCC, 0xD5, 0x66, 0x00, 0xCC, 0xD5, 0x99, 0x00, 0xCC, 0xD5, + 0xCC, 0x00, 0xCC, 0xD5, 0xFF, 0x00, 0xCC, 0xFF, 0x00, 0x00, 0xCC, 0xFF, 0x33, 0x00, 0xCC, 0xFF, + 0x66, 0x00, 0xCC, 0xFF, 0x99, 0x00, 0xCC, 0xFF, 0xCC, 0x00, 0xCC, 0xFF, 0xFF, 0x00, 0xFF, 0x00, + 0x00, 0x00, 0xFF, 0x00, 0x33, 0x00, 0xFF, 0x00, 0x66, 0x00, 0xFF, 0x00, 0x99, 0x00, 0xFF, 0x00, + 0xCC, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x2B, 0x00, 0x00, 0xFF, 0x2B, 0x33, 0x00, 0xFF, 0x2B, + 0x66, 0x00, 0xFF, 0x2B, 0x99, 0x00, 0xFF, 0x2B, 0xCC, 0x00, 0xFF, 0x2B, 0xFF, 0x00, 0xFF, 0x55, + 0x00, 0x00, 0xFF, 0x55, 0x33, 0x00, 0xFF, 0x55, 0x66, 0x00, 0xFF, 0x55, 0x99, 0x00, 0xFF, 0x55, + 0xCC, 0x00, 0xFF, 0x55, 0xFF, 0x00, 0xFF, 0x80, 0x00, 0x00, 0xFF, 0x80, 0x33, 0x00, 0xFF, 0x80, + 0x66, 0x00, 0xFF, 0x80, 0x99, 0x00, 0xFF, 0x80, 0xCC, 0x00, 0xFF, 0x80, 0xFF, 0x00, 0xFF, 0xAA, + 0x00, 0x00, 0xFF, 0xAA, 0x33, 0x00, 0xFF, 0xAA, 0x66, 0x00, 0xFF, 0xAA, 0x99, 0x00, 0xFF, 0xAA, + 0xCC, 0x00, 0xFF, 0xAA, 0xFF, 0x00, 0xFF, 0xD5, 0x00, 0x00, 0xFF, 0xD5, 0x33, 0x00, 0xFF, 0xD5, + 0x66, 0x00, 0xFF, 0xD5, 0x99, 0x00, 0xFF, 0xD5, 0xCC, 0x00, 0xFF, 0xD5, 0xFF, 0x00, 0xFF, 0xFF, + 0x00, 0x00, 0xFF, 0xFF, 0x33, 0x00, 0xFF, 0xFF, 0x66, 0x00, 0xFF, 0xFF, 0x99, 0x00, 0xFF, 0xFF, + 0xCC, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x30, 0x30, 0x30, 0x30, 0x36, + 0x36, 0x60, 0x60, 0x66, 0x66, 0x90, 0x66, 0x90, 0x90, 0x96, 0x96, 0x96, 0x96, 0xC6, 0xC0, 0xC6, + 0xC6, 0xC6, 0xC6, 0xF6, 0xF6, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, + 0x2B, 0x56, 0x56, 0x56, 0x56, 0x81, 0x56, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0xAC, 0xAC, 0xAC, + 0xAC, 0xAC, 0xAC, 0xD7, 0xD7, 0xD7, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x07, 0x07, 0x07, 0x0D, + 0x0D, 0x0E, 0x0E, 0x14, 0x14, 0x15, 0x14, 0x15, 0x15, 0x1B, 0x1B, 0x1B, 0x1B, 0x22, 0x1C, 0x22, + 0x22, 0x22, 0x22, 0x29, 0x29, 0x29, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, + 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, + 0x62, 0x62, 0x62, 0x62, 0x62, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x06, 0x36, 0x30, 0x60, 0x30, + 0x60, 0x36, 0x66, 0x60, 0x90, 0x66, 0x90, 0x66, 0x96, 0x90, 0xC0, 0x96, 0xC6, 0x96, 0xC6, 0xC0, + 0xF0, 0xC6, 0xF6, 0xC6, 0xF6, 0xF6, 0x00, 0x00, 0x2B, 0x00, 0x2B, 0x00, 0x2B, 0x2B, 0x56, 0x2B, + 0x56, 0x2B, 0x56, 0x56, 0x81, 0x56, 0x81, 0x56, 0x81, 0x81, 0xAC, 0x81, 0xAC, 0x81, 0xAC, 0xAC, + 0xD7, 0xAC, 0xD7, 0xAC, 0xD7, 0xD7, 0x00, 0x00, 0x07, 0x00, 0x07, 0x06, 0x0D, 0x07, 0x0E, 0x07, + 0x0E, 0x0D, 0x14, 0x0E, 0x15, 0x14, 0x15, 0x14, 0x1B, 0x15, 0x1C, 0x1B, 0x22, 0x1B, 0x22, 0x1C, + 0x23, 0x22, 0x29, 0x22, 0x29, 0x29, 0x68, 0x37, 0x68, 0x62, 0x68, 0x61, 0x68, 0x62, 0x68, 0x61, + 0x68, 0x62, 0x68, 0x61, 0x92, 0x62, 0x92, 0x61, 0x92, 0x62, 0x92, 0x61, 0x92, 0x62, 0x92, 0x61, + 0x92, 0x62, 0x92, 0x61, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x30, 0x30, 0x30, 0x30, 0x60, + 0x36, 0x60, 0x60, 0x66, 0x60, 0x66, 0x66, 0x90, 0x90, 0x96, 0x96, 0xC0, 0x96, 0xC0, 0xC6, 0xC6, + 0xC6, 0xC6, 0xC6, 0xF6, 0xF6, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B, 0x2B, 0x2B, 0x2B, 0x56, + 0x2B, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x81, 0x81, 0x81, 0x81, 0xAC, 0x81, 0xAC, 0xAC, 0xAC, + 0xAC, 0xAC, 0xAC, 0xD7, 0xD7, 0xD7, 0x00, 0x00, 0x00, 0x00, 0x06, 0x07, 0x07, 0x07, 0x07, 0x0E, + 0x0D, 0x0E, 0x0E, 0x14, 0x0E, 0x14, 0x14, 0x15, 0x15, 0x1B, 0x1B, 0x1C, 0x1B, 0x1C, 0x22, 0x22, + 0x22, 0x22, 0x22, 0x29, 0x29, 0x29, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, + 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x8C, 0x62, 0x62, 0x62, 0x8C, + 0x62, 0x62, 0x62, 0x8C, 0x62, 0x00, 0x01, 0x00, 0x06, 0x00, 0x31, 0x06, 0x30, 0x30, 0x61, 0x30, + 0x60, 0x36, 0x67, 0x60, 0x66, 0x60, 0x97, 0x66, 0x96, 0x90, 0xC1, 0x96, 0xC6, 0x96, 0xC7, 0xC6, + 0xC6, 0xC6, 0xF7, 0xC6, 0xF6, 0xF6, 0x06, 0x00, 0x00, 0x00, 0x31, 0x00, 0x2B, 0x2B, 0x5C, 0x2B, + 0x56, 0x2B, 0x5C, 0x56, 0x56, 0x56, 0x87, 0x56, 0x81, 0x81, 0xB2, 0x81, 0xAC, 0x81, 0xB2, 0xAC, + 0xAC, 0xAC, 0xDD, 0xAC, 0xD7, 0xD7, 0x2A, 0x00, 0x06, 0x00, 0x31, 0x06, 0x07, 0x07, 0x38, 0x07, + 0x0E, 0x0D, 0x3E, 0x0E, 0x14, 0x0E, 0x45, 0x14, 0x1B, 0x15, 0x46, 0x1B, 0x22, 0x1B, 0x4C, 0x22, + 0x22, 0x22, 0x53, 0x22, 0x29, 0x29, 0x68, 0x62, 0x68, 0x61, 0x68, 0x62, 0x68, 0x61, 0x92, 0x62, + 0x68, 0x61, 0x92, 0x62, 0x68, 0x61, 0x92, 0x62, 0x92, 0x61, 0x92, 0x62, 0x92, 0x61, 0x92, 0x62, + 0x92, 0x61, 0x92, 0x62, 0x92, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x30, 0x30, 0x30, 0x30, 0x36, + 0x36, 0x60, 0x60, 0x66, 0x66, 0x66, 0x66, 0x90, 0x90, 0x96, 0x96, 0x96, 0x96, 0xC6, 0xC0, 0xC6, + 0xC6, 0xF0, 0xC6, 0xF6, 0xF6, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, + 0x2B, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0xAC, 0xAC, 0xAC, + 0xAC, 0xD7, 0xAC, 0xD7, 0xD7, 0xD7, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x07, 0x07, 0x07, 0x0D, + 0x0D, 0x0E, 0x0E, 0x14, 0x14, 0x14, 0x14, 0x15, 0x15, 0x1B, 0x1B, 0x1B, 0x1B, 0x22, 0x1C, 0x22, + 0x22, 0x23, 0x22, 0x29, 0x29, 0x29, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, + 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x8C, + 0x62, 0x8C, 0x62, 0x8C, 0x62, 0x00, 0x01, 0x00, 0x31, 0x00, 0x31, 0x06, 0x31, 0x30, 0x61, 0x30, + 0x61, 0x36, 0x67, 0x60, 0x91, 0x66, 0x91, 0x66, 0x97, 0x90, 0xC1, 0x96, 0xC7, 0x96, 0xC7, 0xC0, + 0xF1, 0xC6, 0xF7, 0xC6, 0xF7, 0xF6, 0x06, 0x00, 0x31, 0x00, 0x31, 0x00, 0x31, 0x2B, 0x5C, 0x2B, + 0x5C, 0x2B, 0x5C, 0x56, 0x87, 0x56, 0x87, 0x56, 0x87, 0x81, 0xB2, 0x81, 0xB2, 0x81, 0xB2, 0xAC, + 0xDD, 0xAC, 0xDD, 0xAC, 0xDD, 0xD7, 0x2A, 0x00, 0x31, 0x00, 0x31, 0x06, 0x31, 0x07, 0x38, 0x07, + 0x38, 0x0D, 0x3E, 0x0E, 0x3F, 0x14, 0x3F, 0x14, 0x45, 0x15, 0x46, 0x1B, 0x4C, 0x1B, 0x4C, 0x1C, + 0x4D, 0x22, 0x53, 0x22, 0x53, 0x29, 0x68, 0x62, 0x68, 0x62, 0x68, 0x62, 0x68, 0x62, 0x68, 0x62, + 0x92, 0x62, 0x68, 0x62, 0x92, 0x62, 0x92, 0x62, 0x92, 0x62, 0x92, 0x62, 0x92, 0x62, 0x92, 0x62, + 0x92, 0x62, 0x92, 0x62, 0x92, 0x00, 0x00, 0x01, 0x00, 0x00, 0x06, 0x30, 0x30, 0x30, 0x30, 0x61, + 0x36, 0x60, 0x60, 0x66, 0x60, 0x66, 0x90, 0x91, 0x90, 0x96, 0x96, 0xC0, 0x96, 0xC0, 0xC6, 0xC7, + 0xC6, 0xC6, 0xC6, 0xF6, 0xF6, 0xF6, 0x00, 0x06, 0x00, 0x00, 0x00, 0x31, 0x2B, 0x2B, 0x2B, 0x5C, + 0x2B, 0x56, 0x56, 0x5C, 0x56, 0x56, 0x81, 0x87, 0x81, 0x81, 0x81, 0xB2, 0x81, 0xAC, 0xAC, 0xB2, + 0xAC, 0xAC, 0xAC, 0xDD, 0xD7, 0xD7, 0x00, 0x2A, 0x00, 0x00, 0x06, 0x07, 0x07, 0x07, 0x07, 0x38, + 0x0D, 0x0E, 0x0E, 0x14, 0x0E, 0x14, 0x15, 0x3F, 0x15, 0x1B, 0x1B, 0x1C, 0x1B, 0x1C, 0x22, 0x4C, + 0x22, 0x22, 0x22, 0x29, 0x29, 0x29, 0x62, 0x68, 0x62, 0x62, 0x62, 0x68, 0x62, 0x62, 0x62, 0x68, + 0x62, 0x62, 0x62, 0x68, 0x62, 0x62, 0x62, 0x92, 0x62, 0x62, 0x62, 0x92, 0x62, 0x62, 0x62, 0x92, + 0x62, 0x8C, 0x62, 0x92, 0x62, 0x00, 0x01, 0x00, 0x07, 0x00, 0x31, 0x06, 0x31, 0x30, 0x61, 0x30, + 0x61, 0x36, 0x67, 0x60, 0x67, 0x60, 0x97, 0x66, 0x97, 0x90, 0xC1, 0x96, 0xC1, 0x96, 0xC7, 0xC6, + 0xC7, 0xC6, 0xF7, 0xC6, 0xF7, 0xF6, 0x06, 0x00, 0x06, 0x00, 0x31, 0x00, 0x31, 0x2B, 0x5C, 0x2B, + 0x5C, 0x2B, 0x5C, 0x56, 0x5C, 0x56, 0x87, 0x56, 0x87, 0x81, 0xB2, 0x81, 0xB2, 0x81, 0xB2, 0xAC, + 0xB2, 0xAC, 0xDD, 0xAC, 0xDD, 0xD7, 0x2A, 0x00, 0x30, 0x00, 0x31, 0x06, 0x31, 0x07, 0x38, 0x07, + 0x38, 0x0D, 0x3E, 0x0E, 0x3E, 0x0E, 0x45, 0x14, 0x45, 0x15, 0x46, 0x1B, 0x46, 0x1B, 0x4C, 0x22, + 0x4C, 0x22, 0x53, 0x22, 0x53, 0x29, 0x93, 0x62, 0x68, 0x62, 0x92, 0x62, 0x68, 0x62, 0x93, 0x62, + 0x68, 0x62, 0x92, 0x62, 0x92, 0x62, 0x93, 0x62, 0x92, 0x62, 0x92, 0x62, 0x92, 0x62, 0x93, 0x62, + 0x92, 0x62, 0x92, 0x62, 0x92, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x31, 0x30, 0x31, 0x30, 0x37, + 0x36, 0x61, 0x60, 0x67, 0x66, 0x91, 0x66, 0x91, 0x90, 0x97, 0x96, 0x97, 0x96, 0xC7, 0xC0, 0xC7, + 0xC6, 0xC7, 0xC6, 0xF7, 0xF6, 0xF7, 0x00, 0x06, 0x06, 0x06, 0x00, 0x31, 0x31, 0x31, 0x2B, 0x31, + 0x31, 0x5C, 0x56, 0x5C, 0x5C, 0x87, 0x56, 0x87, 0x87, 0x87, 0x81, 0x87, 0x87, 0xB2, 0xAC, 0xB2, + 0xB2, 0xB2, 0xAC, 0xDD, 0xDD, 0xDD, 0x00, 0x2A, 0x00, 0x30, 0x00, 0x31, 0x07, 0x31, 0x07, 0x37, + 0x0D, 0x38, 0x0E, 0x3E, 0x14, 0x3F, 0x14, 0x3F, 0x15, 0x45, 0x1B, 0x45, 0x1B, 0x4C, 0x1C, 0x4C, + 0x22, 0x4C, 0x22, 0x53, 0x29, 0x53, 0x62, 0x62, 0x62, 0x68, 0x62, 0x62, 0x62, 0x68, 0x62, 0x62, + 0x62, 0x68, 0x62, 0x62, 0x62, 0x68, 0x62, 0x62, 0x62, 0x68, 0x62, 0x62, 0x62, 0x92, 0x62, 0x8C, + 0x62, 0x92, 0x62, 0x8C, 0x62, 0x00, 0x01, 0x00, 0x31, 0x00, 0x31, 0x06, 0x37, 0x30, 0x61, 0x30, + 0x61, 0x36, 0x67, 0x60, 0x91, 0x66, 0x91, 0x66, 0x97, 0x90, 0xC1, 0x96, 0xC7, 0x96, 0xC7, 0xC0, + 0xF1, 0xC6, 0xF7, 0xC6, 0xF7, 0xF6, 0x06, 0x00, 0x31, 0x00, 0x31, 0x00, 0x31, 0x2B, 0x5C, 0x2B, + 0x5C, 0x2B, 0x5C, 0x56, 0x87, 0x56, 0x87, 0x56, 0x87, 0x81, 0xB2, 0x81, 0xB2, 0x81, 0xB2, 0xAC, + 0xDD, 0xAC, 0xDD, 0xAC, 0xDD, 0xD7, 0x2A, 0x00, 0x31, 0x00, 0x31, 0x06, 0x37, 0x07, 0x38, 0x07, + 0x38, 0x0D, 0x3E, 0x0E, 0x3F, 0x14, 0x3F, 0x14, 0x45, 0x15, 0x46, 0x1B, 0x4C, 0x1B, 0x4C, 0x1C, + 0x4D, 0x22, 0x53, 0x22, 0x53, 0x29, 0x68, 0x62, 0x68, 0x62, 0x68, 0x62, 0x92, 0x62, 0x92, 0x62, + 0x92, 0x62, 0x92, 0x62, 0x92, 0x62, 0x92, 0x62, 0x92, 0x62, 0x92, 0x62, 0x92, 0x62, 0x92, 0x62, + 0x92, 0x62, 0x92, 0x62, 0x92, 0x00, 0x01, 0x01, 0x00, 0x01, 0x07, 0x31, 0x30, 0x31, 0x31, 0x61, + 0x36, 0x61, 0x61, 0x67, 0x60, 0x67, 0x67, 0x91, 0x90, 0x97, 0x97, 0xC1, 0x96, 0xC1, 0xC7, 0xC7, + 0xC6, 0xC7, 0xC7, 0xF7, 0xF6, 0xF7, 0x06, 0x06, 0x06, 0x06, 0x06, 0x31, 0x31, 0x31, 0x31, 0x5C, + 0x31, 0x5C, 0x5C, 0x5C, 0x5C, 0x5C, 0x5C, 0x87, 0x87, 0x87, 0x87, 0xB2, 0x87, 0xB2, 0xB2, 0xB2, + 0xB2, 0xB2, 0xB2, 0xDD, 0xDD, 0xDD, 0x2A, 0x2A, 0x00, 0x2A, 0x30, 0x31, 0x07, 0x31, 0x31, 0x38, + 0x0D, 0x38, 0x38, 0x3E, 0x0E, 0x3E, 0x3E, 0x3F, 0x15, 0x45, 0x45, 0x46, 0x1B, 0x46, 0x4C, 0x4C, + 0x22, 0x4C, 0x4C, 0x53, 0x29, 0x53, 0x62, 0x68, 0x62, 0x62, 0x62, 0x68, 0x62, 0x62, 0x62, 0x68, + 0x62, 0x62, 0x62, 0x92, 0x62, 0x62, 0x62, 0x92, 0x62, 0x62, 0x62, 0x92, 0x62, 0x8C, 0x62, 0x92, + 0x62, 0x8C, 0x8C, 0x92, 0x62, 0x00, 0x01, 0x00, 0x07, 0x00, 0x31, 0x07, 0x31, 0x30, 0x61, 0x30, + 0x61, 0x36, 0x67, 0x61, 0x67, 0x60, 0x97, 0x66, 0x97, 0x90, 0xC1, 0x97, 0xC7, 0x96, 0xC7, 0xC6, + 0xC7, 0xC6, 0xF7, 0xC7, 0xF7, 0xF6, 0x06, 0x06, 0x06, 0x06, 0x37, 0x06, 0x31, 0x31, 0x5C, 0x31, + 0x5C, 0x31, 0x62, 0x5C, 0x5C, 0x5C, 0x87, 0x5C, 0x87, 0x87, 0xB8, 0x87, 0xB2, 0x87, 0xB2, 0xB2, + 0xB2, 0xB2, 0xE3, 0xB2, 0xDD, 0xDD, 0x2A, 0x00, 0x30, 0x00, 0x31, 0x30, 0x31, 0x07, 0x38, 0x07, + 0x38, 0x0D, 0x3E, 0x38, 0x3E, 0x0E, 0x45, 0x14, 0x45, 0x15, 0x46, 0x45, 0x4C, 0x1B, 0x4C, 0x22, + 0x4C, 0x22, 0x53, 0x4C, 0x53, 0x29, 0x93, 0x62, 0x68, 0x62, 0x93, 0x62, 0x68, 0x62, 0x93, 0x62, + 0x92, 0x62, 0x93, 0x62, 0x92, 0x62, 0x93, 0x62, 0x92, 0x62, 0x93, 0x62, 0x92, 0x62, 0x93, 0x62, + 0x92, 0x62, 0x93, 0x62, 0x92, 0x00, 0x01, 0x01, 0x01, 0x07, 0x01, 0x31, 0x31, 0x31, 0x31, 0x37, + 0x37, 0x61, 0x61, 0x67, 0x67, 0x67, 0x67, 0x91, 0x91, 0x97, 0x97, 0x97, 0x97, 0xC7, 0xC1, 0xC7, + 0xC7, 0xF1, 0xC7, 0xF7, 0xF7, 0xF7, 0x06, 0x06, 0x06, 0x06, 0x06, 0x31, 0x31, 0x31, 0x31, 0x31, + 0x31, 0x5C, 0x5C, 0x5C, 0x5C, 0x5C, 0x5C, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0xB2, 0xB2, 0xB2, + 0xB2, 0xDD, 0xB2, 0xDD, 0xDD, 0xDD, 0x2A, 0x2A, 0x2A, 0x30, 0x2A, 0x31, 0x31, 0x31, 0x31, 0x37, + 0x37, 0x38, 0x38, 0x3E, 0x3E, 0x3E, 0x3E, 0x3F, 0x3F, 0x45, 0x45, 0x45, 0x45, 0x4C, 0x46, 0x4C, + 0x4C, 0x4D, 0x4C, 0x53, 0x53, 0x53, 0x62, 0x68, 0x62, 0x68, 0x62, 0x68, 0x62, 0x68, 0x62, 0x68, + 0x62, 0x68, 0x62, 0x68, 0x62, 0x68, 0x62, 0x92, 0x62, 0x92, 0x62, 0x92, 0x62, 0x92, 0x62, 0x92, + 0x62, 0x92, 0x62, 0x92, 0x8C, 0x00, 0x01, 0x01, 0x31, 0x01, 0x31, 0x07, 0x31, 0x31, 0x61, 0x31, + 0x61, 0x37, 0x67, 0x61, 0x91, 0x67, 0x91, 0x67, 0x97, 0x91, 0xC1, 0x97, 0xC7, 0x97, 0xC7, 0xC1, + 0xF1, 0xC7, 0xF7, 0xC7, 0xF7, 0xF7, 0x0C, 0x06, 0x37, 0x06, 0x31, 0x06, 0x37, 0x31, 0x62, 0x31, + 0x62, 0x31, 0x5C, 0x5C, 0x8D, 0x5C, 0x8D, 0x5C, 0x8D, 0x87, 0xB2, 0x87, 0xB8, 0x87, 0xB8, 0xB2, + 0xE3, 0xB2, 0xDD, 0xB2, 0xE3, 0xDD, 0x2A, 0x2A, 0x31, 0x2A, 0x31, 0x30, 0x31, 0x31, 0x38, 0x31, + 0x38, 0x37, 0x3E, 0x38, 0x3F, 0x3E, 0x3F, 0x3E, 0x45, 0x3F, 0x46, 0x45, 0x4C, 0x45, 0x4C, 0x46, + 0x4D, 0x4C, 0x53, 0x4C, 0x53, 0x53, 0x68, 0x62, 0x93, 0x62, 0x68, 0x62, 0x92, 0x62, 0x92, 0x62, + 0x93, 0x62, 0x92, 0x62, 0x92, 0x62, 0x92, 0x62, 0x93, 0x62, 0x92, 0x62, 0x92, 0x62, 0x92, 0x62, + 0x93, 0x62, 0x92, 0x62, 0x92, 0x00, 0x01, 0x01, 0x01, 0x01, 0x07, 0x31, 0x31, 0x31, 0x31, 0x61, + 0x37, 0x61, 0x61, 0x67, 0x61, 0x67, 0x91, 0x91, 0x91, 0x97, 0x97, 0xC1, 0x97, 0xC1, 0xC7, 0xC7, + 0xC7, 0xC7, 0xC7, 0xF7, 0xF7, 0xF7, 0x06, 0x06, 0x06, 0x06, 0x06, 0x31, 0x31, 0x31, 0x31, 0x5C, + 0x31, 0x5C, 0x5C, 0x5C, 0x5C, 0x5C, 0x87, 0x87, 0x87, 0x87, 0x87, 0xB2, 0x87, 0xB2, 0xB2, 0xB2, + 0xB2, 0xB2, 0xB2, 0xDD, 0xDD, 0xDD, 0x2A, 0x2A, 0x2A, 0x2A, 0x30, 0x31, 0x31, 0x31, 0x31, 0x38, + 0x37, 0x38, 0x38, 0x3E, 0x38, 0x3E, 0x3F, 0x3F, 0x3F, 0x45, 0x45, 0x46, 0x45, 0x46, 0x4C, 0x4C, + 0x4C, 0x4C, 0x4C, 0x53, 0x53, 0x53, 0x68, 0x68, 0x62, 0x68, 0x62, 0x68, 0x62, 0x68, 0x68, 0x92, + 0x62, 0x68, 0x62, 0x92, 0x62, 0x68, 0x68, 0x92, 0x62, 0x92, 0x62, 0x92, 0x62, 0x92, 0x92, 0x92, + 0x62, 0x92, 0x8C, 0x92, 0x62, 0x00, 0x02, 0x01, 0x07, 0x01, 0x32, 0x07, 0x31, 0x31, 0x62, 0x31, + 0x61, 0x37, 0x68, 0x61, 0x67, 0x61, 0x98, 0x67, 0x97, 0x91, 0xC2, 0x97, 0xC1, 0x97, 0xC8, 0xC7, + 0xC7, 0xC7, 0xF8, 0xC7, 0xF7, 0xF7, 0x0C, 0x06, 0x0C, 0x06, 0x37, 0x06, 0x37, 0x31, 0x62, 0x31, + 0x62, 0x31, 0x62, 0x5C, 0x62, 0x5C, 0x8D, 0x5C, 0x8D, 0x87, 0xB8, 0x87, 0xB8, 0x87, 0xB8, 0xB2, + 0xB8, 0xB2, 0xE3, 0xB2, 0xE3, 0xDD, 0x54, 0x2A, 0x30, 0x2A, 0x5B, 0x30, 0x31, 0x31, 0x62, 0x31, + 0x38, 0x37, 0x68, 0x38, 0x3E, 0x38, 0x6F, 0x3E, 0x45, 0x3F, 0x70, 0x45, 0x46, 0x45, 0x76, 0x4C, + 0x4C, 0x4C, 0x7D, 0x4C, 0x53, 0x53, 0x93, 0x62, 0x68, 0x62, 0x93, 0x62, 0x92, 0x62, 0x93, 0x62, + 0x92, 0x62, 0x93, 0x62, 0x92, 0x62, 0x93, 0x62, 0x92, 0x62, 0x93, 0x62, 0x92, 0x62, 0x93, 0x62, + 0x92, 0x62, 0x93, 0x62, 0x92, 0x00, 0x01, 0x01, 0x01, 0x07, 0x01, 0x31, 0x31, 0x31, 0x31, 0x37, + 0x37, 0x61, 0x61, 0x67, 0x67, 0x91, 0x67, 0x91, 0x91, 0x97, 0x97, 0x97, 0x97, 0xC7, 0xC1, 0xC7, + 0xC7, 0xC7, 0xC7, 0xF7, 0xF7, 0xF7, 0x06, 0x0C, 0x06, 0x0C, 0x06, 0x37, 0x31, 0x37, 0x31, 0x37, + 0x31, 0x62, 0x5C, 0x62, 0x5C, 0x8D, 0x5C, 0x8D, 0x87, 0x8D, 0x87, 0x8D, 0x87, 0xB8, 0xB2, 0xB8, + 0xB2, 0xB8, 0xB2, 0xE3, 0xDD, 0xE3, 0x2A, 0x2A, 0x2A, 0x30, 0x2A, 0x31, 0x31, 0x31, 0x31, 0x37, + 0x37, 0x38, 0x38, 0x3E, 0x3E, 0x3F, 0x3E, 0x3F, 0x3F, 0x45, 0x45, 0x45, 0x45, 0x4C, 0x46, 0x4C, + 0x4C, 0x4C, 0x4C, 0x53, 0x53, 0x53, 0x62, 0x68, 0x62, 0x68, 0x62, 0x68, 0x62, 0x68, 0x62, 0x68, + 0x62, 0x68, 0x62, 0x68, 0x62, 0x92, 0x62, 0x92, 0x62, 0x92, 0x62, 0x92, 0x62, 0x92, 0x62, 0x92, + 0x8C, 0x92, 0x8C, 0x92, 0x8C, 0x00, 0x02, 0x01, 0x32, 0x01, 0x32, 0x07, 0x38, 0x31, 0x62, 0x31, + 0x62, 0x37, 0x68, 0x61, 0x92, 0x67, 0x92, 0x67, 0x98, 0x91, 0xC2, 0x97, 0xC8, 0x97, 0xC8, 0xC1, + 0xF2, 0xC7, 0xF8, 0xC7, 0xF8, 0xF7, 0x0C, 0x06, 0x37, 0x06, 0x37, 0x06, 0x37, 0x31, 0x62, 0x31, + 0x62, 0x31, 0x62, 0x5C, 0x8D, 0x5C, 0x8D, 0x5C, 0x8D, 0x87, 0xB8, 0x87, 0xB8, 0x87, 0xB8, 0xB2, + 0xE3, 0xB2, 0xE3, 0xB2, 0xE3, 0xDD, 0x54, 0x2A, 0x5B, 0x2A, 0x5B, 0x30, 0x61, 0x31, 0x62, 0x31, + 0x62, 0x37, 0x68, 0x38, 0x69, 0x3E, 0x69, 0x3E, 0x6F, 0x3F, 0x70, 0x45, 0x76, 0x45, 0x76, 0x46, + 0x77, 0x4C, 0x7D, 0x4C, 0x7D, 0x53, 0x93, 0x62, 0x93, 0x62, 0x93, 0x62, 0x93, 0x62, 0x93, 0x62, + 0x93, 0x62, 0x93, 0x62, 0x93, 0x62, 0x93, 0x62, 0x93, 0x62, 0x93, 0x62, 0x93, 0x62, 0x93, 0x62, + 0x93, 0x62, 0x93, 0x62, 0x93, 0x00, 0x01, 0x02, 0x01, 0x01, 0x07, 0x32, 0x31, 0x31, 0x31, 0x62, + 0x37, 0x61, 0x61, 0x68, 0x61, 0x67, 0x67, 0x92, 0x91, 0x97, 0x97, 0xC2, 0x97, 0xC1, 0xC7, 0xC8, + 0xC7, 0xC7, 0xC7, 0xF8, 0xF7, 0xF7, 0x0C, 0x0C, 0x06, 0x0C, 0x0C, 0x37, 0x31, 0x37, 0x37, 0x62, + 0x31, 0x62, 0x62, 0x62, 0x5C, 0x62, 0x62, 0x8D, 0x87, 0x8D, 0x8D, 0xB8, 0x87, 0xB8, 0xB8, 0xB8, + 0xB2, 0xB8, 0xB8, 0xE3, 0xDD, 0xE3, 0x2A, 0x54, 0x2A, 0x2A, 0x30, 0x5B, 0x31, 0x31, 0x31, 0x62, + 0x37, 0x38, 0x38, 0x68, 0x38, 0x3E, 0x3E, 0x69, 0x3F, 0x45, 0x45, 0x70, 0x45, 0x46, 0x4C, 0x76, + 0x4C, 0x4C, 0x4C, 0x7D, 0x53, 0x53, 0x68, 0x68, 0x62, 0x68, 0x68, 0x92, 0x62, 0x68, 0x68, 0x92, + 0x62, 0x68, 0x68, 0x92, 0x62, 0x92, 0x68, 0x92, 0x62, 0x92, 0x92, 0x92, 0x62, 0x92, 0x92, 0x92, + 0x62, 0x92, 0x92, 0x92, 0x8C, 0x00, 0x02, 0x01, 0x08, 0x01, 0x32, 0x07, 0x32, 0x31, 0x62, 0x31, + 0x62, 0x37, 0x68, 0x61, 0x68, 0x61, 0x98, 0x67, 0x98, 0x91, 0xC2, 0x97, 0xC8, 0x97, 0xC8, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x5C, 0x62, 0x5C, 0x8D, 0x5C, 0x8D, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xB8, 0xB2, 0xE3, 0xB2, 0xE3, 0xDD, 0x54, 0x2A, 0x5A, 0x2A, 0x5B, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x68, 0x38, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x76, 0x45, 0x76, 0x4C, + 0x76, 0x4C, 0x7D, 0x4C, 0x7D, 0x53, 0x93, 0x62, 0x92, 0x62, 0x93, 0x62, 0x92, 0x62, 0x93, 0x62, + 0x92, 0x62, 0x93, 0x62, 0x92, 0x62, 0x93, 0x62, 0x92, 0x62, 0x93, 0x62, 0x92, 0x62, 0x93, 0x62, + 0x92, 0x62, 0x93, 0x8C, 0x92, 0x00, 0x01, 0x02, 0x01, 0x08, 0x01, 0x32, 0x31, 0x32, 0x31, 0x38, + 0x37, 0x62, 0x61, 0x68, 0x67, 0x68, 0x67, 0x92, 0x91, 0x98, 0x97, 0x98, 0x97, 0xC8, 0xC1, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x62, 0x8D, 0x8D, 0x8D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xB8, 0xE3, 0xB8, 0xE3, 0xE3, 0xE3, 0x2A, 0x54, 0x2A, 0x5A, 0x2A, 0x5B, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x68, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x45, 0x76, 0x46, 0x76, + 0x4C, 0x77, 0x4C, 0x7D, 0x53, 0x7D, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x92, + 0x68, 0x92, 0x68, 0x92, 0x68, 0x92, 0x68, 0x92, 0x68, 0x92, 0x68, 0x92, 0x92, 0x92, 0x92, 0x92, + 0x92, 0x92, 0x92, 0x92, 0x92, 0x00, 0x02, 0x01, 0x32, 0x01, 0x32, 0x07, 0x32, 0x31, 0x62, 0x31, + 0x62, 0x37, 0x68, 0x61, 0x92, 0x67, 0x92, 0x67, 0x98, 0x91, 0xC2, 0x97, 0xC8, 0x97, 0xC8, 0x00, + 0x00, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, + 0xFB, 0xFB, 0xFB, 0x00, 0x00, 0x00, 0x8D, 0x62, 0x8D, 0x8D, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, + 0xE3, 0xB8, 0xE3, 0xB8, 0xE3, 0xE3, 0x54, 0x2A, 0x5B, 0x2A, 0x5B, 0x30, 0x00, 0x00, 0xFB, 0xFB, + 0x00, 0x00, 0x68, 0x38, 0x69, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x45, 0x76, 0x45, 0x76, 0x46, + 0x77, 0x4C, 0x7D, 0x4C, 0x7D, 0x53, 0x93, 0x62, 0x93, 0x62, 0x93, 0x62, 0x93, 0x62, 0x93, 0x62, + 0x93, 0x62, 0x93, 0x62, 0x93, 0x62, 0x93, 0x62, 0x93, 0x62, 0x93, 0x62, 0x93, 0x62, 0x93, 0x62, + 0x93, 0x62, 0x93, 0x62, 0x93, 0x00, 0x02, 0x02, 0x01, 0x02, 0x08, 0x32, 0x31, 0x32, 0x32, 0x62, + 0x37, 0x62, 0x62, 0x68, 0x61, 0x68, 0x92, 0x92, 0x91, 0x98, 0x98, 0xC2, 0x97, 0xC2, 0xC8, 0x00, + 0x00, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, + 0xFB, 0xFB, 0xFB, 0xFB, 0x00, 0x00, 0x00, 0x8D, 0x8D, 0x8D, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, + 0xB8, 0xB8, 0xB8, 0xE3, 0xE3, 0xE3, 0x54, 0x54, 0x2A, 0x54, 0x5A, 0x5B, 0x00, 0x00, 0xFB, 0xFB, + 0x00, 0x00, 0x62, 0x68, 0x38, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x70, 0x45, 0x70, 0x76, 0x76, + 0x4C, 0x76, 0x76, 0x7D, 0x53, 0x7D, 0x68, 0x93, 0x68, 0x68, 0x68, 0x92, 0x62, 0x68, 0x68, 0x93, + 0x68, 0x92, 0x68, 0x92, 0x62, 0x92, 0x92, 0x93, 0x68, 0x92, 0x92, 0x92, 0x62, 0x92, 0x92, 0x93, + 0x92, 0x92, 0x92, 0x92, 0x8C, 0x00, 0x02, 0x02, 0x08, 0x01, 0x32, 0x07, 0x32, 0x31, 0x62, 0x32, + 0x62, 0x37, 0x68, 0x61, 0x68, 0x61, 0x98, 0x68, 0x98, 0x91, 0xC2, 0x97, 0xC2, 0x97, 0xC8, 0x00, + 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFB, 0xFB, 0xFB, 0x00, 0x00, 0x62, 0x8D, 0x8D, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, + 0xB8, 0xB8, 0xE9, 0xB8, 0xE3, 0xE3, 0x54, 0x54, 0x5A, 0x2A, 0x5B, 0x30, 0x00, 0x00, 0xFB, 0xFB, + 0x00, 0x00, 0x68, 0x38, 0x68, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x45, 0x70, 0x45, 0x76, 0x76, + 0x76, 0x4C, 0x7D, 0x4C, 0x7D, 0x53, 0x93, 0x68, 0x93, 0x62, 0x93, 0x62, 0x93, 0x62, 0x93, 0x68, + 0x93, 0x62, 0x93, 0x62, 0x93, 0x62, 0x93, 0x68, 0x93, 0x62, 0x93, 0x62, 0x93, 0x62, 0x93, 0x92, + 0x93, 0x62, 0x93, 0x8C, 0x93, 0x00, 0x02, 0x02, 0x02, 0x08, 0x02, 0x32, 0x32, 0x32, 0x32, 0x38, + 0x38, 0x62, 0x62, 0x68, 0x68, 0x92, 0x68, 0x92, 0x92, 0x98, 0x98, 0x98, 0x98, 0xC8, 0xC2, 0x00, + 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x8D, 0x8D, 0x8D, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, + 0xB8, 0xB8, 0xB8, 0xE3, 0xE3, 0xE3, 0x54, 0x54, 0x54, 0x5A, 0x54, 0x5B, 0x00, 0x00, 0xFB, 0xFB, + 0x00, 0x00, 0x62, 0x68, 0x68, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x6F, 0x6F, 0x76, 0x70, 0x76, + 0x76, 0x76, 0x76, 0x7D, 0x7D, 0x7D, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x92, 0x68, 0x92, + 0x68, 0x92, 0x68, 0x92, 0x68, 0x92, 0x68, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, + 0x92, 0x92, 0x92, 0x92, 0x92, 0x00, 0x02, 0x02, 0x32, 0x02, 0x32, 0x08, 0x38, 0x32, 0x62, 0x32, + 0x62, 0x38, 0x68, 0x62, 0x92, 0x68, 0x92, 0x68, 0x98, 0x92, 0xC2, 0x98, 0xC8, 0x98, 0xC8, 0x00, + 0x00, 0xFB, 0xFB, 0x00, 0x00, 0xF8, 0x12, 0x0C, 0x3D, 0x0C, 0x3D, 0x0C, 0x3D, 0x37, 0x68, 0x37, + 0x00, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x62, 0x93, 0x8D, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, + 0xE9, 0xB8, 0xE9, 0xB8, 0xE9, 0xE3, 0x54, 0x54, 0x5B, 0x54, 0x5B, 0x5A, 0x00, 0x00, 0xFB, 0xFB, + 0x00, 0x00, 0x68, 0x62, 0x69, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x6F, 0x76, 0x6F, 0x76, 0x70, + 0x77, 0x76, 0x7D, 0x76, 0x7D, 0x7D, 0x93, 0x62, 0x93, 0x62, 0x93, 0x62, 0x93, 0x62, 0x93, 0x62, + 0x93, 0x62, 0x93, 0x62, 0x93, 0x62, 0x93, 0x62, 0x93, 0x62, 0x93, 0x62, 0x93, 0x62, 0x93, 0x62, + 0x93, 0x8C, 0x93, 0x8C, 0x93, 0x00, 0x02, 0x02, 0x02, 0x02, 0x08, 0x32, 0x32, 0x32, 0x32, 0x62, + 0x38, 0x62, 0x62, 0x68, 0x62, 0x68, 0x68, 0x92, 0x92, 0x98, 0x98, 0xC2, 0x98, 0xC2, 0xC8, 0x00, + 0x00, 0xFB, 0xFB, 0x00, 0x00, 0xF8, 0x0C, 0x12, 0x0C, 0x0C, 0x0C, 0x3D, 0x37, 0x37, 0x37, 0x68, + 0x37, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x93, 0x8D, 0x8D, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, + 0xB8, 0xB8, 0xB8, 0xE9, 0xE3, 0xE3, 0x54, 0x54, 0x54, 0x54, 0x5A, 0x5B, 0x00, 0x00, 0xFB, 0xFB, + 0x00, 0x00, 0x62, 0x68, 0x62, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x70, 0x6F, 0x70, 0x76, 0x76, + 0x76, 0x76, 0x76, 0x7D, 0x7D, 0x7D, 0x68, 0x93, 0x68, 0x68, 0x68, 0x93, 0x68, 0x92, 0x68, 0x93, + 0x68, 0x92, 0x92, 0x93, 0x68, 0x92, 0x92, 0x93, 0x68, 0x92, 0x92, 0x93, 0x92, 0x92, 0x92, 0x93, + 0x92, 0x92, 0x92, 0x93, 0x92, 0x00, 0x03, 0x02, 0x08, 0x02, 0x33, 0x08, 0x32, 0x32, 0x63, 0x32, + 0x62, 0x38, 0x69, 0x62, 0x68, 0x62, 0x99, 0x68, 0x98, 0x92, 0xC3, 0x98, 0xC8, 0x98, 0xC9, 0x00, + 0x00, 0xFB, 0xFB, 0x00, 0x00, 0xF8, 0x12, 0x0C, 0x12, 0x0C, 0x3D, 0x0C, 0x3D, 0x37, 0x68, 0x37, + 0x68, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x62, 0x93, 0x8D, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, + 0xBE, 0xB8, 0xE9, 0xB8, 0xE9, 0xE3, 0x7E, 0x54, 0x5A, 0x54, 0x85, 0x5A, 0x00, 0x00, 0xFB, 0xFB, + 0x00, 0x00, 0x92, 0x62, 0x68, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x6F, 0x76, 0x6F, 0xA0, 0x76, + 0x76, 0x76, 0xA7, 0x76, 0x7D, 0x7D, 0x93, 0x68, 0x93, 0x62, 0x93, 0x68, 0x93, 0x62, 0x93, 0x68, + 0x93, 0x62, 0x93, 0x68, 0x93, 0x62, 0x93, 0x68, 0x93, 0x62, 0x93, 0x92, 0x93, 0x62, 0x93, 0x92, + 0x93, 0x62, 0x93, 0x92, 0x93, 0x00, 0x02, 0x02, 0x02, 0x08, 0x02, 0x32, 0x32, 0x32, 0x32, 0x38, + 0x38, 0x62, 0x62, 0x68, 0x68, 0x68, 0x68, 0x92, 0x92, 0x98, 0x98, 0x98, 0x98, 0xC8, 0xC2, 0x00, + 0x00, 0xFB, 0xFB, 0x00, 0x00, 0xF8, 0x0C, 0x12, 0x12, 0x12, 0x0C, 0x3D, 0x37, 0x3D, 0x37, 0x3D, + 0x00, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x93, 0x93, 0x93, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, + 0xBE, 0xE9, 0xB8, 0xE9, 0xE3, 0xE9, 0x54, 0x54, 0x54, 0x5A, 0x54, 0x5B, 0x00, 0x00, 0xFB, 0xFB, + 0x00, 0x00, 0x62, 0x68, 0x68, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x6F, 0x6F, 0x76, 0x70, 0x76, + 0x76, 0x77, 0x76, 0x7D, 0x7D, 0x7D, 0x68, 0x92, 0x68, 0x93, 0x68, 0x92, 0x68, 0x93, 0x68, 0x92, + 0x68, 0x93, 0x68, 0x92, 0x92, 0x93, 0x92, 0x92, 0x92, 0x93, 0x92, 0x92, 0x92, 0x93, 0x92, 0x92, + 0x92, 0x93, 0x92, 0x92, 0x92, 0x00, 0x03, 0x02, 0x33, 0x02, 0x33, 0x08, 0x33, 0x32, 0x63, 0x32, + 0x63, 0x38, 0x69, 0x62, 0x93, 0x68, 0x93, 0x68, 0x99, 0x92, 0xC3, 0x98, 0xC9, 0x98, 0xC9, 0x00, + 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x93, 0x62, 0x93, 0x8D, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, + 0xE9, 0xB8, 0xE9, 0xB8, 0xE9, 0x00, 0x00, 0x54, 0x85, 0x54, 0x85, 0x5A, 0x00, 0x00, 0xFB, 0xFB, + 0x00, 0x00, 0x92, 0x62, 0x93, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x93, 0x62, 0x93, 0x68, 0x93, 0x68, + 0x93, 0x68, 0x93, 0x62, 0x93, 0x68, 0x93, 0x68, 0x93, 0x68, 0x93, 0x62, 0x93, 0x92, 0x93, 0x92, + 0x93, 0x92, 0x93, 0x8C, 0x93, 0x00, 0x02, 0x03, 0x02, 0x02, 0x08, 0x33, 0x32, 0x32, 0x32, 0x63, + 0x38, 0x62, 0x62, 0x69, 0x62, 0x68, 0x92, 0x93, 0x92, 0x98, 0x98, 0xC3, 0x98, 0xC2, 0xC8, 0x00, + 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x68, 0x93, 0x93, 0x93, 0x93, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, + 0xBE, 0xBE, 0xBE, 0xE9, 0x00, 0x00, 0x00, 0x00, 0x54, 0x54, 0x5A, 0x85, 0x00, 0x00, 0xFB, 0xFB, + 0x00, 0x00, 0x62, 0x92, 0x62, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x93, 0x68, 0x92, 0x92, 0x93, + 0x68, 0x92, 0x92, 0x93, 0x68, 0x92, 0x92, 0x93, 0x92, 0x92, 0x92, 0x93, 0x92, 0x92, 0x92, 0x93, + 0x92, 0x92, 0x92, 0x93, 0x92, 0x00, 0x03, 0x02, 0x09, 0x02, 0x33, 0x08, 0x33, 0x32, 0x63, 0x32, + 0x63, 0x38, 0x69, 0x62, 0x69, 0x62, 0x99, 0x68, 0x99, 0x92, 0xC3, 0x98, 0xC3, 0x98, 0xC9, 0x00, + 0x00, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, + 0xFB, 0xFB, 0x00, 0x00, 0x68, 0x62, 0x93, 0x68, 0x93, 0x8D, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, + 0xBE, 0xB8, 0xE9, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x54, 0x85, 0x5A, 0x00, 0x00, 0xFB, 0xFB, + 0x00, 0x00, 0x92, 0x62, 0x92, 0x00, 0x00, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, + 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x00, 0x00, 0x00, 0x93, 0x62, 0x93, 0x68, + 0x93, 0x68, 0x93, 0x68, 0x93, 0x62, 0x93, 0x92, 0x93, 0x68, 0x93, 0x92, 0x93, 0x62, 0x93, 0x92, + 0x93, 0x92, 0x93, 0x92, 0x93, 0x00, 0x02, 0x03, 0x02, 0x09, 0x02, 0x33, 0x32, 0x33, 0x32, 0x39, + 0x38, 0x63, 0x62, 0x69, 0x68, 0x93, 0x68, 0x93, 0x92, 0x99, 0x98, 0x99, 0x98, 0xC9, 0xC2, 0x00, + 0x00, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, + 0xFB, 0xFB, 0x00, 0x00, 0x68, 0x93, 0x68, 0x93, 0x93, 0x93, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, + 0xBE, 0xBE, 0x00, 0x00, 0xFB, 0xFB, 0xFB, 0xFB, 0x00, 0x00, 0x54, 0x85, 0x00, 0x00, 0xFB, 0xFB, + 0x00, 0x00, 0x62, 0x92, 0x68, 0x00, 0x00, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, + 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x00, 0x00, 0x00, 0x93, 0x68, 0x93, + 0x92, 0x93, 0x92, 0x93, 0x92, 0x93, 0x92, 0x93, 0x92, 0x93, 0x92, 0x93, 0x92, 0x93, 0x92, 0x93, + 0x92, 0x93, 0x92, 0x93, 0x92, 0x00, 0x03, 0x02, 0x33, 0x02, 0x33, 0x08, 0x39, 0x32, 0x63, 0x32, + 0x63, 0x38, 0x69, 0x62, 0x93, 0x68, 0x93, 0x68, 0x99, 0x92, 0xC3, 0x98, 0xC9, 0x98, 0xC9, 0x00, + 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x68, 0x93, 0x68, 0x99, 0x93, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, + 0xEF, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x5A, 0x00, 0x00, 0xFB, 0xFB, + 0x00, 0x00, 0x92, 0x62, 0x93, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xFB, 0xFB, 0x00, 0x00, 0x68, 0x93, 0x68, + 0x93, 0x68, 0x93, 0x68, 0x93, 0x68, 0x93, 0x68, 0x93, 0x92, 0x93, 0x92, 0x93, 0x92, 0x93, 0x92, + 0x93, 0x92, 0x93, 0x92, 0xBD, 0x00, 0x03, 0x03, 0x02, 0x03, 0x09, 0x33, 0x32, 0x33, 0x33, 0x63, + 0x38, 0x63, 0x63, 0x69, 0x62, 0x69, 0x69, 0x93, 0x92, 0x99, 0x99, 0xC3, 0x98, 0xC3, 0xC9, 0x00, + 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x68, 0x93, 0x93, 0x93, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, + 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xFB, + 0x00, 0x00, 0x8C, 0x92, 0x62, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x93, 0x92, 0x93, + 0x68, 0x93, 0x92, 0x93, 0x92, 0x93, 0x92, 0x93, 0x92, 0x93, 0x92, 0x93, 0x92, 0x93, 0x92, 0x93, + 0x92, 0x93, 0x92, 0x93, 0x92, 0x00, 0x03, 0x02, 0x09, 0x02, 0x33, 0x08, 0x33, 0x32, 0x63, 0x32, + 0x63, 0x38, 0x69, 0x62, 0x69, 0x62, 0x99, 0x68, 0x99, 0x92, 0xC3, 0x98, 0xC9, 0x98, 0xC9, 0x00, + 0x00, 0xFB, 0xFB, 0x00, 0x00, 0xF8, 0x18, 0x12, 0x18, 0x12, 0x43, 0x12, 0x43, 0x3D, 0x6E, 0x3D, + 0x00, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x68, 0x99, 0x93, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, + 0x00, 0xFB, 0xFB, 0x00, 0x00, 0xE9, 0x7E, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x00, 0xFB, 0xFB, + 0x00, 0x00, 0x92, 0x62, 0x92, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x6F, 0xA0, 0x6F, 0xA0, 0x76, + 0xA0, 0x76, 0xA7, 0x76, 0xA7, 0x7D, 0x00, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x68, 0x99, 0x68, + 0x93, 0x68, 0x99, 0x92, 0x93, 0x68, 0x99, 0x92, 0x93, 0x68, 0x99, 0x92, 0x93, 0x92, 0x99, 0x92, + 0x93, 0x92, 0xC3, 0x92, 0x93, 0x00, 0x03, 0x03, 0x03, 0x09, 0x03, 0x33, 0x33, 0x33, 0x33, 0x39, + 0x39, 0x63, 0x63, 0x69, 0x69, 0x69, 0x69, 0x93, 0x93, 0x99, 0x99, 0x99, 0x99, 0xC9, 0xC3, 0x00, + 0x00, 0xFB, 0xFB, 0x00, 0x00, 0xF9, 0x12, 0x18, 0x12, 0x18, 0x12, 0x3D, 0x3D, 0x43, 0x3D, 0x43, + 0x3D, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x99, 0x93, 0x99, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, + 0xFB, 0xFB, 0x00, 0x00, 0xE9, 0xEF, 0x7E, 0x7E, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0xFB, 0xFB, + 0x00, 0x00, 0x8C, 0x92, 0x92, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x99, 0x99, 0xA0, 0x9A, 0xA0, + 0xA0, 0xA1, 0xA0, 0xA7, 0xA7, 0xA7, 0x68, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x93, 0x92, 0x93, + 0x92, 0x93, 0x92, 0x93, 0x92, 0x93, 0x92, 0x93, 0x92, 0x93, 0x92, 0x93, 0x92, 0x93, 0x92, 0x93, + 0x92, 0x93, 0x92, 0x93, 0x92, 0x00, 0x03, 0x03, 0x33, 0x03, 0x33, 0x08, 0x33, 0x33, 0x63, 0x33, + 0x63, 0x39, 0x69, 0x62, 0x93, 0x69, 0x93, 0x69, 0x99, 0x93, 0xC3, 0x98, 0xC9, 0x99, 0xC9, 0x00, + 0x00, 0xFB, 0xFB, 0x00, 0x00, 0xF9, 0x18, 0x12, 0x43, 0x12, 0x43, 0x12, 0x43, 0x3D, 0x6E, 0x3D, + 0x6E, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x68, 0x99, 0x93, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0xFB, + 0xFB, 0x00, 0x00, 0xBE, 0xEF, 0xE9, 0x7E, 0x7E, 0x85, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0xFB, 0xFB, + 0x00, 0x00, 0x92, 0x62, 0x93, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x6F, 0xA0, 0x99, 0xA0, 0x9A, + 0xA1, 0xA0, 0xA7, 0x76, 0xA7, 0xA7, 0x93, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x68, 0x93, 0x68, + 0x99, 0x68, 0x93, 0x68, 0x93, 0x92, 0x93, 0x92, 0x99, 0x92, 0x93, 0x92, 0x93, 0x92, 0x93, 0x92, + 0xC3, 0x92, 0x93, 0x92, 0xBD, 0x00, 0x03, 0x03, 0x03, 0x03, 0x09, 0x33, 0x33, 0x33, 0x33, 0x63, + 0x39, 0x63, 0x63, 0x69, 0x63, 0x69, 0x93, 0x93, 0x93, 0x99, 0x99, 0xC3, 0x99, 0xC3, 0xC9, 0x00, + 0x00, 0xFB, 0xFB, 0x00, 0x00, 0xF9, 0x18, 0x18, 0x12, 0x18, 0x18, 0x43, 0x3D, 0x43, 0x43, 0x6E, + 0x00, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x99, 0x93, 0x99, 0x00, 0x00, 0xFB, 0xFB, 0xFB, 0xFB, + 0x00, 0x00, 0xC4, 0xEF, 0xE9, 0xEF, 0x7E, 0x7E, 0x7E, 0x7E, 0x00, 0x00, 0xFB, 0xFB, 0xFB, 0xFB, + 0x00, 0x00, 0x8C, 0x92, 0x8C, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x9A, 0x99, 0x9A, 0xA0, 0xA0, + 0xA0, 0xA0, 0xA0, 0xA7, 0xA7, 0xA7, 0x00, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x93, 0x93, 0x93, + 0x92, 0x93, 0x93, 0x93, 0x92, 0x93, 0x93, 0x93, 0x92, 0x93, 0x93, 0x93, 0x92, 0x93, 0x93, 0x93, + 0x92, 0x93, 0x93, 0x93, 0x92, 0x00, 0x04, 0x03, 0x09, 0x03, 0x34, 0x09, 0x33, 0x33, 0x64, 0x33, + 0x63, 0x39, 0x6A, 0x63, 0x69, 0x63, 0x9A, 0x69, 0x99, 0x93, 0xC4, 0x99, 0xC3, 0x99, 0xCA, 0x00, + 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x68, 0x99, 0x93, 0x00, 0x00, 0xFB, 0xFB, 0xFB, 0x00, + 0x00, 0xBE, 0xEF, 0xBE, 0xEF, 0xE9, 0xA8, 0x7E, 0x84, 0x7E, 0xAF, 0x00, 0x00, 0xFB, 0xFB, 0xFB, + 0x00, 0x00, 0xBC, 0x8C, 0x92, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x68, 0x99, 0x92, + 0x93, 0x68, 0x99, 0x92, 0x93, 0x68, 0x99, 0x92, 0x93, 0x92, 0x99, 0x92, 0x93, 0x92, 0xC3, 0x92, + 0x93, 0x92, 0xC3, 0x92, 0x93, 0x00, 0x03, 0x03, 0x03, 0x09, 0x03, 0x33, 0x33, 0x33, 0x33, 0x39, + 0x39, 0x63, 0x63, 0x69, 0x69, 0x93, 0x69, 0x93, 0x93, 0x99, 0x99, 0x99, 0x99, 0xC9, 0xC3, 0x00, + 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFB, 0xFB, 0xFB, 0x00, 0x00, 0x99, 0x99, 0x99, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, + 0xC4, 0xC4, 0xC4, 0xEF, 0xEF, 0xEF, 0x7E, 0x7E, 0x7E, 0x84, 0x7E, 0x85, 0x00, 0x00, 0xFB, 0xFB, + 0x00, 0x00, 0x8C, 0x92, 0x92, 0x00, 0x00, 0xFB, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xFB, 0xFB, 0x00, 0x00, 0x93, 0x92, 0x93, + 0x93, 0x93, 0x92, 0x93, 0x93, 0x93, 0x92, 0x93, 0x93, 0x93, 0x92, 0x93, 0x93, 0x93, 0x92, 0x93, + 0x93, 0x93, 0x92, 0x93, 0x93, 0x00, 0x04, 0x03, 0x34, 0x03, 0x34, 0x09, 0x3A, 0x33, 0x64, 0x33, + 0x64, 0x39, 0x6A, 0x63, 0x94, 0x69, 0x94, 0x69, 0x9A, 0x93, 0xC4, 0x99, 0xCA, 0x99, 0xCA, 0x00, + 0x00, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, + 0xFB, 0xFB, 0xFB, 0xFB, 0x00, 0x00, 0x00, 0x68, 0x99, 0x99, 0x00, 0x00, 0xFB, 0x00, 0x00, 0xBE, + 0xEF, 0xC4, 0xEF, 0xBE, 0xEF, 0xEF, 0xA8, 0x7E, 0xAF, 0x7E, 0xAF, 0x84, 0xB5, 0x00, 0x00, 0xFB, + 0x00, 0x00, 0xBC, 0x8C, 0xBD, 0x00, 0x00, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, + 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x00, 0x00, 0x00, 0x68, 0x99, 0x68, + 0x99, 0x92, 0x99, 0x92, 0x99, 0x92, 0x99, 0x92, 0x99, 0x92, 0x99, 0x92, 0xC3, 0x92, 0x99, 0x92, + 0xC3, 0x92, 0xC3, 0x92, 0xC3, 0x00, 0x03, 0x04, 0x03, 0x03, 0x09, 0x34, 0x33, 0x33, 0x33, 0x64, + 0x39, 0x63, 0x63, 0x6A, 0x63, 0x69, 0x69, 0x94, 0x93, 0x99, 0x99, 0xC4, 0x99, 0xC3, 0xC9, 0x00, + 0x00, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, + 0xFB, 0xFB, 0xFB, 0x00, 0x00, 0x00, 0x6E, 0x99, 0x99, 0x99, 0x00, 0x00, 0x00, 0x00, 0xC4, 0xC4, + 0xC4, 0xC4, 0xC4, 0xEF, 0xEF, 0xEF, 0x7E, 0xA8, 0x7E, 0x7E, 0x84, 0xAF, 0x85, 0x85, 0x00, 0x00, + 0x00, 0x00, 0x8C, 0xBC, 0x8C, 0x00, 0x00, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, + 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x00, 0x00, 0x00, 0x92, 0x93, 0x93, 0x93, + 0x92, 0x93, 0x93, 0x93, 0x92, 0x93, 0x93, 0x93, 0x92, 0x93, 0x93, 0x93, 0x92, 0x93, 0x93, 0x93, + 0x92, 0x93, 0x93, 0x93, 0x92, 0x00, 0x04, 0x03, 0x0A, 0x03, 0x34, 0x09, 0x34, 0x33, 0x64, 0x33, + 0x64, 0x39, 0x6A, 0x63, 0x6A, 0x63, 0x9A, 0x69, 0x9A, 0x93, 0xC4, 0x99, 0xCA, 0x99, 0xCA, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x9F, 0x6E, 0x99, 0x99, 0x00, 0x00, 0x00, 0x99, 0xCA, 0xC4, + 0xC4, 0xC4, 0xF5, 0xC4, 0xEF, 0xEF, 0xA8, 0x7E, 0xAE, 0x7E, 0xAF, 0x84, 0xAF, 0x85, 0xB6, 0x00, + 0x00, 0x00, 0xBC, 0x8C, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0x99, 0x68, 0x99, 0x92, + 0x99, 0x68, 0x99, 0x92, 0x99, 0x92, 0x99, 0x92, 0x99, 0x92, 0xC3, 0x92, 0x99, 0x92, 0xC3, 0x92, + 0x99, 0x92, 0xC3, 0x92, 0xC3, 0x00, 0x03, 0x04, 0x03, 0x0A, 0x03, 0x34, 0x33, 0x34, 0x33, 0x3A, + 0x39, 0x64, 0x63, 0x6A, 0x69, 0x6A, 0x69, 0x94, 0x93, 0x9A, 0x99, 0x9A, 0x99, 0xCA, 0xC3, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x6E, 0x6E, 0x6E, 0x6E, 0x99, 0x99, 0x99, 0x00, 0x00, 0x99, 0xC4, 0xC4, 0xC4, + 0xC4, 0xEF, 0xC4, 0xEF, 0xEF, 0xEF, 0x7E, 0xA8, 0x7E, 0xAE, 0x7E, 0xAF, 0x85, 0xAF, 0x85, 0xB5, + 0x00, 0x00, 0x8C, 0xBC, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, + 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, + 0x93, 0x93, 0x93, 0x93, 0x93, 0x00, 0x04, 0x03, 0x34, 0x03, 0x34, 0x09, 0x34, 0x33, 0x64, 0x33, + 0x64, 0x39, 0x6A, 0x63, 0x94, 0x69, 0x94, 0x69, 0x9A, 0x93, 0xC4, 0x99, 0xCA, 0x99, 0xCA, 0xC3, + 0xF4, 0xC9, 0xFA, 0xC9, 0xFA, 0xF9, 0x1E, 0x18, 0x49, 0x18, 0x49, 0x18, 0x49, 0x43, 0x74, 0x43, + 0x74, 0x43, 0x74, 0x6E, 0x9F, 0x6E, 0x9F, 0x6E, 0x9F, 0x99, 0xCA, 0x99, 0xCA, 0x99, 0xCA, 0xC4, + 0xF5, 0xC4, 0xF5, 0xC4, 0xF5, 0xEF, 0xA8, 0x7E, 0xAF, 0x7E, 0xAF, 0x84, 0xAF, 0x85, 0xB6, 0x85, + 0xB6, 0x8B, 0xBC, 0x8C, 0xBD, 0x92, 0xBD, 0x92, 0xC3, 0x93, 0xC4, 0x99, 0xCA, 0x99, 0xCA, 0x9A, + 0xCB, 0xA0, 0xD1, 0xA0, 0xD1, 0xA7, 0x99, 0x68, 0x99, 0x68, 0x99, 0x68, 0x99, 0x92, 0x99, 0x92, + 0x99, 0x92, 0x99, 0x92, 0x99, 0x92, 0x99, 0x92, 0xC3, 0x92, 0x99, 0x92, 0xC3, 0x92, 0xC3, 0x92, + 0xC3, 0x92, 0xC3, 0x92, 0xC3, 0x00, 0x04, 0x04, 0x03, 0x04, 0x0A, 0x34, 0x33, 0x34, 0x34, 0x64, + 0x39, 0x64, 0x64, 0x6A, 0x63, 0x6A, 0x94, 0x94, 0x93, 0x9A, 0x9A, 0xC4, 0x99, 0xC4, 0xCA, 0xCA, + 0xC9, 0xCA, 0xCA, 0xFA, 0xF9, 0xFA, 0x18, 0x1E, 0x18, 0x18, 0x18, 0x49, 0x43, 0x43, 0x43, 0x74, + 0x43, 0x6E, 0x6E, 0x74, 0x6E, 0x6E, 0x99, 0x9F, 0x99, 0x99, 0x99, 0xCA, 0x99, 0xC4, 0xC4, 0xCA, + 0xC4, 0xC4, 0xC4, 0xF5, 0xEF, 0xEF, 0xA8, 0xA8, 0x7E, 0xA8, 0xAE, 0xAF, 0x85, 0xAF, 0xAF, 0xB6, + 0x8B, 0xB6, 0xB6, 0xBC, 0x8C, 0xBC, 0xBD, 0xBD, 0x93, 0xC3, 0xC3, 0xC4, 0x99, 0xC4, 0xCA, 0xCA, + 0xA0, 0xCA, 0xCA, 0xD1, 0xA7, 0xD1, 0x93, 0x99, 0x93, 0x93, 0x93, 0x93, 0x92, 0x93, 0x93, 0x99, + 0x93, 0x93, 0x93, 0x93, 0x92, 0x93, 0x93, 0x99, 0x93, 0x93, 0x93, 0x93, 0x92, 0x93, 0x93, 0x99, + 0x93, 0x93, 0x93, 0xBD, 0x92, 0x00, 0x04, 0x03, 0x0A, 0x03, 0x34, 0x09, 0x34, 0x33, 0x64, 0x33, + 0x64, 0x39, 0x6A, 0x63, 0x6A, 0x63, 0x9A, 0x69, 0x9A, 0x93, 0xC4, 0x99, 0xC4, 0x99, 0xCA, 0xC9, + 0xCA, 0xC9, 0xFA, 0xC9, 0xFA, 0xF9, 0x1E, 0x18, 0x1E, 0x18, 0x49, 0x18, 0x49, 0x43, 0x74, 0x43, + 0x74, 0x43, 0x74, 0x6E, 0x74, 0x6E, 0x9F, 0x6E, 0x9F, 0x99, 0xCA, 0x99, 0xCA, 0x99, 0xCA, 0xC4, + 0xCA, 0xC4, 0xF5, 0xC4, 0xF5, 0xEF, 0xA8, 0x7E, 0xAE, 0x7E, 0xAF, 0x84, 0xAF, 0x85, 0xB6, 0x85, + 0xB6, 0x8B, 0xBC, 0x8C, 0xBC, 0x8C, 0xC3, 0x92, 0xC3, 0x93, 0xC4, 0x99, 0xC4, 0x99, 0xCA, 0xA0, + 0xCA, 0xA0, 0xD1, 0xA0, 0xD1, 0xA7, 0x99, 0x93, 0x99, 0x68, 0x99, 0x92, 0x99, 0x68, 0x99, 0x93, + 0x99, 0x92, 0x99, 0x92, 0x99, 0x92, 0xC3, 0x93, 0x99, 0x92, 0xC3, 0x92, 0x99, 0x92, 0xC3, 0x93, + 0xC3, 0x92, 0xC3, 0x92, 0xC3, 0x00, 0x04, 0x04, 0x04, 0x0A, 0x04, 0x34, 0x34, 0x34, 0x34, 0x3A, + 0x3A, 0x64, 0x64, 0x6A, 0x6A, 0x94, 0x6A, 0x94, 0x94, 0x9A, 0x9A, 0x9A, 0x9A, 0xCA, 0xC4, 0xCA, + 0xCA, 0xCA, 0xCA, 0xFA, 0xFA, 0xFA, 0x18, 0x1E, 0x18, 0x1E, 0x18, 0x49, 0x43, 0x49, 0x43, 0x49, + 0x43, 0x74, 0x6E, 0x74, 0x6E, 0x9F, 0x6E, 0x9F, 0x99, 0x9F, 0x99, 0x9F, 0x99, 0xCA, 0xC4, 0xCA, + 0xC4, 0xCA, 0xC4, 0xF5, 0xEF, 0xF5, 0xA8, 0xA8, 0xA8, 0xAE, 0xA8, 0xAF, 0xAF, 0xAF, 0xAF, 0xB5, + 0xB5, 0xB6, 0xB6, 0xBC, 0xBC, 0xBD, 0xBC, 0xBD, 0xBD, 0xC3, 0xC3, 0xC3, 0xC3, 0xCA, 0xC4, 0xCA, + 0xCA, 0xCA, 0xCA, 0xD1, 0xD1, 0xD1, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x99, 0x93, 0x93, + 0x93, 0x93, 0x93, 0x93, 0x93, 0x99, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x99, 0x93, 0x93, + 0x93, 0x93, 0x93, 0x93, 0x93, 0x00, 0x04, 0x03, 0x34, 0x04, 0x34, 0x09, 0x3A, 0x34, 0x64, 0x33, + 0x64, 0x3A, 0x6A, 0x63, 0x94, 0x6A, 0x94, 0x69, 0x9A, 0x94, 0xC4, 0x99, 0xCA, 0x9A, 0xCA, 0xC3, + 0xF4, 0xCA, 0xFA, 0xC9, 0xFA, 0xFA, 0x1E, 0x18, 0x49, 0x18, 0x49, 0x18, 0x49, 0x43, 0x74, 0x43, + 0x74, 0x43, 0x74, 0x6E, 0x9F, 0x6E, 0x9F, 0x6E, 0x9F, 0x99, 0xCA, 0x99, 0xCA, 0x99, 0xCA, 0xC4, + 0xF5, 0xC4, 0xF5, 0xC4, 0xF5, 0xEF, 0xA8, 0x7E, 0xAF, 0xA8, 0xAF, 0x84, 0xB5, 0xAF, 0xB6, 0x85, + 0xB6, 0xB5, 0xBC, 0x8C, 0xBD, 0xBC, 0xBD, 0x92, 0xC3, 0xBD, 0xC4, 0x99, 0xCA, 0xC3, 0xCA, 0x9A, + 0xCB, 0xCA, 0xD1, 0xA0, 0xD1, 0xD1, 0x99, 0x68, 0x99, 0x92, 0x99, 0x92, 0x99, 0x92, 0x99, 0x92, + 0x99, 0x92, 0x99, 0x92, 0xC3, 0x92, 0x99, 0x92, 0xC3, 0x92, 0xC3, 0x92, 0xC3, 0x92, 0xC3, 0x92, + 0xC3, 0x92, 0xC3, 0x92, 0xC3, 0x00, 0x04, 0x04, 0x04, 0x04, 0x0A, 0x34, 0x34, 0x34, 0x34, 0x64, + 0x3A, 0x64, 0x64, 0x6A, 0x64, 0x6A, 0x6A, 0x94, 0x94, 0x9A, 0x9A, 0xC4, 0x9A, 0xC4, 0xCA, 0xCA, + 0xCA, 0xCA, 0xCA, 0xFA, 0xFA, 0xFA, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x49, 0x49, 0x49, 0x49, 0x74, + 0x49, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x9F, 0x9F, 0x9F, 0x9F, 0xCA, 0x9F, 0xCA, 0xCA, 0xCA, + 0xCA, 0xCA, 0xCA, 0xF5, 0xF5, 0xF5, 0xA8, 0xA8, 0xA8, 0xA8, 0xAE, 0xAF, 0xAF, 0xAF, 0xAF, 0xB6, + 0xB5, 0xB6, 0xB6, 0xBC, 0xB6, 0xBC, 0xBC, 0xBD, 0xBD, 0xC3, 0xC3, 0xC4, 0xC3, 0xC4, 0xCA, 0xCA, + 0xCA, 0xCA, 0xCA, 0xD1, 0xD1, 0xD1, 0x93, 0x99, 0x93, 0x93, 0x93, 0x99, 0x93, 0x93, 0x93, 0x99, + 0x93, 0x93, 0x93, 0x99, 0x93, 0x93, 0x93, 0x99, 0x93, 0x93, 0x93, 0x99, 0x93, 0x93, 0x93, 0xC3, + 0x93, 0x93, 0x93, 0xC3, 0x93, 0x00, 0x05, 0x04, 0x0A, 0x04, 0x35, 0x0A, 0x34, 0x34, 0x65, 0x34, + 0x64, 0x3A, 0x6B, 0x64, 0x6A, 0x64, 0x9B, 0x6A, 0x9A, 0x94, 0xC5, 0x9A, 0xCA, 0x9A, 0xCB, 0xCA, + 0xCA, 0xCA, 0xFB, 0xCA, 0xFA, 0xFA, 0x1E, 0x1E, 0x1E, 0x18, 0x49, 0x1E, 0x49, 0x43, 0x74, 0x49, + 0x74, 0x43, 0x74, 0x74, 0x74, 0x6E, 0x9F, 0x74, 0x9F, 0x99, 0xCA, 0x9F, 0xCA, 0x99, 0xCA, 0xCA, + 0xCA, 0xC4, 0xF5, 0xCA, 0xF5, 0xEF, 0xD2, 0xA8, 0xAE, 0xA8, 0xD9, 0xAE, 0xAF, 0xAF, 0xE0, 0xAF, + 0xB6, 0xB5, 0xE6, 0xB6, 0xBC, 0xB6, 0xED, 0xBC, 0xC3, 0xBD, 0xEE, 0xC3, 0xCA, 0xC3, 0xF4, 0xCA, + 0xCA, 0xCA, 0xFB, 0xCA, 0xD1, 0xD1, 0x99, 0x93, 0x99, 0x68, 0x99, 0x93, 0x99, 0x92, 0x99, 0x93, + 0x99, 0x92, 0xC3, 0x93, 0x99, 0x92, 0xC3, 0x93, 0x99, 0x92, 0xC3, 0x93, 0xC3, 0x92, 0xC3, 0x93, + 0xC3, 0x92, 0xC3, 0x93, 0xC3, 0x00, 0x04, 0x04, 0x04, 0x0A, 0x04, 0x34, 0x34, 0x34, 0x34, 0x3A, + 0x3A, 0x64, 0x64, 0x6A, 0x6A, 0x6A, 0x6A, 0x94, 0x94, 0x9A, 0x9A, 0x9A, 0x9A, 0xCA, 0xC4, 0xCA, + 0xCA, 0xF4, 0xCA, 0xFA, 0xFA, 0xFA, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x49, 0x49, 0x49, 0x49, 0x49, + 0x49, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0xCA, 0xCA, 0xCA, + 0xCA, 0xF5, 0xCA, 0xF5, 0xF5, 0xF5, 0xA8, 0xA8, 0xA8, 0xAE, 0xA8, 0xAF, 0xAF, 0xAF, 0xAF, 0xB5, + 0xB5, 0xB6, 0xB6, 0xBC, 0xBC, 0xBC, 0xBC, 0xBD, 0xBD, 0xC3, 0xC3, 0xC3, 0xC3, 0xCA, 0xC4, 0xCA, + 0xCA, 0xCB, 0xCA, 0xD1, 0xD1, 0xD1, 0x93, 0x99, 0x93, 0x99, 0x93, 0x99, 0x93, 0x99, 0x93, 0x99, + 0x93, 0x99, 0x93, 0x99, 0x93, 0x99, 0x93, 0x99, 0x93, 0x99, 0x93, 0x99, 0x93, 0x99, 0x93, 0x99, + 0x93, 0xC3, 0x93, 0x99, 0x93, 0x00, 0x05, 0x04, 0x35, 0x04, 0x35, 0x0A, 0x35, 0x34, 0x65, 0x34, + 0x65, 0x3A, 0x6B, 0x64, 0x95, 0x6A, 0x95, 0x6A, 0x9B, 0x94, 0xC5, 0x9A, 0xCB, 0x9A, 0xCB, 0xC4, + 0xF5, 0xCA, 0xFB, 0xCA, 0xFB, 0xFA, 0x1E, 0x1E, 0x49, 0x1E, 0x49, 0x1E, 0x49, 0x49, 0x74, 0x49, + 0x74, 0x49, 0x74, 0x74, 0x9F, 0x74, 0x9F, 0x74, 0x9F, 0x9F, 0xCA, 0x9F, 0xCA, 0x9F, 0xCA, 0xCA, + 0xF5, 0xCA, 0xF5, 0xCA, 0xF5, 0xF5, 0xD2, 0xA8, 0xD9, 0xA8, 0xD9, 0xAE, 0xD9, 0xAF, 0xE0, 0xAF, + 0xE0, 0xB5, 0xE6, 0xB6, 0xE7, 0xBC, 0xE7, 0xBC, 0xED, 0xBD, 0xEE, 0xC3, 0xF4, 0xC3, 0xF4, 0xC4, + 0xF5, 0xCA, 0xFB, 0xCA, 0xFB, 0xD1, 0x99, 0x93, 0x99, 0x93, 0x99, 0x92, 0x99, 0x93, 0x99, 0x93, + 0xC3, 0x93, 0x99, 0x92, 0xC3, 0x93, 0xC3, 0x93, 0xC3, 0x93, 0xC3, 0x92, 0xC3, 0x93, 0xC3, 0x93, + 0xC3, 0x93, 0xC3, 0x92, 0xC3, 0x00, 0x04, 0x04, 0x04, 0x04, 0x0A, 0x34, 0x34, 0x34, 0x34, 0x64, + 0x3A, 0x64, 0x64, 0x6A, 0x64, 0x6A, 0x94, 0x94, 0x94, 0x9A, 0x9A, 0xC4, 0x9A, 0xC4, 0xCA, 0xCA, + 0xCA, 0xCA, 0xCA, 0xFA, 0xFA, 0xFA, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x49, 0x49, 0x49, 0x49, 0x74, + 0x49, 0x74, 0x74, 0x74, 0x74, 0x74, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0xCA, 0x9F, 0xCA, 0xCA, 0xCA, + 0xCA, 0xCA, 0xCA, 0xF5, 0xF5, 0xF5, 0xA8, 0xA8, 0xA8, 0xA8, 0xAE, 0xAF, 0xAF, 0xAF, 0xAF, 0xB6, + 0xB5, 0xB6, 0xB6, 0xBC, 0xB6, 0xBC, 0xBD, 0xBD, 0xBD, 0xC3, 0xC3, 0xC4, 0xC3, 0xC4, 0xCA, 0xCA, + 0xCA, 0xCA, 0xCA, 0xD1, 0xD1, 0xD1, 0x93, 0x99, 0x93, 0x99, 0x93, 0x99, 0x93, 0x93, 0x93, 0x99, + 0x93, 0x99, 0x93, 0x99, 0x93, 0x93, 0x93, 0x99, 0x93, 0x99, 0x93, 0xC3, 0x93, 0x93, 0x93, 0xC3, + 0x93, 0x99, 0x93, 0xC3, 0x93, 0x00, 0x05, 0x04, 0x0B, 0x04, 0x35, 0x0A, 0x35, 0x34, 0x65, 0x34, + 0x65, 0x3A, 0x6B, 0x64, 0x6B, 0x64, 0x9B, 0x6A, 0x9B, 0x94, 0xC5, 0x9A, 0xC5, 0x9A, 0xCB, 0xCA, + 0xCB, 0xCA, 0xFB, 0xCA, 0xFB, 0xFA, 0x24, 0x1E, 0x24, 0x1E, 0x4F, 0x1E, 0x49, 0x49, 0x7A, 0x49, + 0x7A, 0x49, 0x7A, 0x74, 0x74, 0x74, 0xA5, 0x74, 0xA5, 0x9F, 0xD0, 0x9F, 0xCA, 0x9F, 0xD0, 0xCA, + 0xD0, 0xCA, 0xFB, 0xCA, 0xF5, 0xF5, 0xD2, 0xA8, 0xD8, 0xA8, 0xD9, 0xAE, 0xD9, 0xAF, 0xE0, 0xAF, + 0xE0, 0xB5, 0xE6, 0xB6, 0xE6, 0xB6, 0xED, 0xBC, 0xED, 0xBD, 0xEE, 0xC3, 0xEE, 0xC3, 0xF4, 0xCA, + 0xF4, 0xCA, 0xFB, 0xCA, 0xFB, 0xD1, 0x99, 0x93, 0x99, 0x93, 0x99, 0x93, 0x99, 0x92, 0xC3, 0x93, + 0x99, 0x93, 0xC3, 0x93, 0x99, 0x92, 0xC3, 0x93, 0xC3, 0x93, 0xC3, 0x93, 0xC3, 0x92, 0xC3, 0x93, + 0xC3, 0x93, 0xC3, 0x93, 0xC3, 0x00, 0x04, 0x04, 0x04, 0x0B, 0x04, 0x35, 0x34, 0x35, 0x34, 0x3A, + 0x3A, 0x65, 0x64, 0x6B, 0x6A, 0x95, 0x6A, 0x94, 0x94, 0x9B, 0x9A, 0x9B, 0x9A, 0xCB, 0xC4, 0xCA, + 0xCA, 0xCB, 0xCA, 0xFB, 0xFA, 0xFB, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x49, 0x49, 0x49, 0x49, 0x49, + 0x49, 0x74, 0x74, 0x74, 0x74, 0x9F, 0x74, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0xCA, 0xCA, 0xCA, + 0xCA, 0xCA, 0xCA, 0xF5, 0xF5, 0xF5, 0xA8, 0xA8, 0xA8, 0xD8, 0xA8, 0xD9, 0xAF, 0xD9, 0xAF, 0xB5, + 0xB5, 0xE0, 0xB6, 0xE6, 0xBC, 0xE7, 0xBC, 0xBD, 0xBD, 0xED, 0xC3, 0xED, 0xC3, 0xF4, 0xC4, 0xCA, + 0xCA, 0xF4, 0xCA, 0xFB, 0xD1, 0xFB, 0x93, 0x99, 0x93, 0x99, 0x93, 0x99, 0x93, 0x99, 0x93, 0x99, + 0x93, 0x99, 0x93, 0x99, 0x93, 0x99, 0x93, 0x99, 0x93, 0x99, 0x93, 0x99, 0x93, 0xC3, 0x93, 0xC3, + 0x93, 0xC3, 0x93, 0xC3, 0x93, 0x00, 0x05, 0x04, 0x35, 0x04, 0x35, 0x0A, 0x3B, 0x34, 0x65, 0x34, + 0x65, 0x3A, 0x6B, 0x64, 0x95, 0x6A, 0x95, 0x6A, 0x9B, 0x94, 0xC5, 0x9A, 0xCB, 0x9A, 0xCB, 0xC4, + 0xF5, 0xCA, 0xFB, 0xCA, 0xFB, 0xFA, 0x24, 0x1E, 0x4F, 0x1E, 0x4F, 0x1E, 0x4F, 0x49, 0x7A, 0x49, + 0x7A, 0x49, 0x7A, 0x74, 0xA5, 0x74, 0xA5, 0x74, 0xA5, 0x9F, 0xD0, 0x9F, 0xD0, 0x9F, 0xD0, 0xCA, + 0xFB, 0xCA, 0xFB, 0xCA, 0xFB, 0xF5, 0xD2, 0xA8, 0xD9, 0xA8, 0xD9, 0xAE, 0xDF, 0xAF, 0xE0, 0xAF, + 0xE0, 0xB5, 0xE6, 0xB6, 0xE7, 0xBC, 0xE7, 0xBC, 0xED, 0xBD, 0xEE, 0xC3, 0xF4, 0xC3, 0xF4, 0xC4, + 0xF5, 0xCA, 0xFB, 0xCA, 0xFB, 0xD1, 0x99, 0x93, 0x99, 0x93, 0x99, 0x93, 0xC3, 0x93, 0x99, 0x93, + 0xC3, 0x93, 0xC3, 0x93, 0xC3, 0x93, 0xC3, 0x93, 0xC3, 0x93, 0xC3, 0x93, 0xC3, 0x93, 0xC3, 0x93, + 0xC3, 0x93, 0xC3, 0x93, 0xC3, 0x00, 0x05, 0x05, 0x04, 0x05, 0x0B, 0x35, 0x34, 0x35, 0x35, 0x65, + 0x3A, 0x65, 0x65, 0x6B, 0x64, 0x6B, 0x6B, 0x95, 0x94, 0x9B, 0x9B, 0xC5, 0x9A, 0xC5, 0xCB, 0xCB, + 0xCA, 0xCB, 0xCB, 0xFB, 0xFA, 0xFB, 0x1E, 0x24, 0x1E, 0x24, 0x1E, 0x4F, 0x49, 0x4F, 0x49, 0x7A, + 0x49, 0x7A, 0x74, 0x7A, 0x74, 0x7A, 0x74, 0xA5, 0x9F, 0xA5, 0x9F, 0xD0, 0x9F, 0xD0, 0xCA, 0xD0, + 0xCA, 0xD0, 0xCA, 0xFB, 0xF5, 0xFB, 0xD2, 0xD2, 0xA8, 0xD2, 0xD8, 0xD9, 0xAF, 0xD9, 0xD9, 0xE0, + 0xB5, 0xE0, 0xE0, 0xE6, 0xB6, 0xE6, 0xE6, 0xE7, 0xBD, 0xED, 0xED, 0xEE, 0xC3, 0xEE, 0xF4, 0xF4, + 0xCA, 0xF4, 0xF4, 0xFB, 0xD1, 0xFB, 0x99, 0x99, 0x93, 0x99, 0x99, 0x99, 0x93, 0x99, 0x99, 0x99, + 0x93, 0x99, 0x99, 0x99, 0x93, 0x99, 0x99, 0xC3, 0x93, 0x99, 0x99, 0xC3, 0x93, 0x99, 0x99, 0xC3, + 0x93, 0xC3, 0x99, 0xC3, 0x93, 0x00, 0x05, 0x04, 0x0B, 0x04, 0x35, 0x0A, 0x35, 0x34, 0x65, 0x34, + 0x65, 0x3A, 0x6B, 0x64, 0x6B, 0x64, 0x9B, 0x6A, 0x9B, 0x94, 0xC5, 0x9A, 0xCB, 0x9A, 0xCB, 0xCA, + 0xCB, 0xCA, 0xFB, 0xCA, 0xFB, 0xFA, 0x24, 0x1E, 0x24, 0x1E, 0x4F, 0x1E, 0x4F, 0x49, 0x7A, 0x49, + 0x7A, 0x49, 0x7A, 0x74, 0x7A, 0x74, 0xA5, 0x74, 0xA5, 0x9F, 0xD0, 0x9F, 0xD0, 0x9F, 0xD0, 0xCA, + 0xD0, 0xCA, 0xFB, 0xCA, 0xFB, 0xF5, 0xD2, 0xA8, 0xD8, 0xA8, 0xD9, 0xAE, 0xD9, 0xAF, 0xE0, 0xAF, + 0xE0, 0xB5, 0xE6, 0xB6, 0xE6, 0xB6, 0xED, 0xBC, 0xED, 0xBD, 0xEE, 0xC3, 0xF4, 0xC3, 0xF4, 0xCA, + 0xF4, 0xCA, 0xFB, 0xCA, 0xFB, 0xD1, 0x99, 0x93, 0x99, 0x93, 0xC4, 0x93, 0x99, 0x93, 0xC3, 0x93, + 0x99, 0x93, 0xC4, 0x93, 0xC3, 0x93, 0xC3, 0x93, 0xC3, 0x93, 0xC4, 0x93, 0xC3, 0x93, 0xC3, 0x93, + 0xC3, 0x93, 0xC4, 0x93, 0xC3, 0x00, 0x05, 0x05, 0x05, 0x0B, 0x05, 0x35, 0x35, 0x35, 0x35, 0x3B, + 0x3B, 0x65, 0x65, 0x6B, 0x6B, 0x6B, 0x6B, 0x95, 0x95, 0x9B, 0x9B, 0x9B, 0x9B, 0xCB, 0xC5, 0xCB, + 0xCB, 0xF5, 0xCB, 0xFB, 0xFB, 0xFB, 0x24, 0x24, 0x24, 0x24, 0x24, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, + 0x4F, 0x7A, 0x7A, 0x7A, 0x7A, 0x7A, 0x7A, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xD0, 0xD0, 0xD0, + 0xD0, 0xFB, 0xD0, 0xFB, 0xFB, 0xFB, 0xD2, 0xD2, 0xD2, 0xD8, 0xD2, 0xD9, 0xD9, 0xD9, 0xD9, 0xDF, + 0xDF, 0xE0, 0xE0, 0xE6, 0xE6, 0xE6, 0xE6, 0xE7, 0xE7, 0xED, 0xED, 0xED, 0xED, 0xF4, 0xEE, 0xF4, + 0xF4, 0xF5, 0xF4, 0xFB, 0xFB, 0xFB, 0x93, 0x99, 0x99, 0x99, 0x93, 0x99, 0x99, 0x99, 0x93, 0x99, + 0x99, 0x99, 0x93, 0x99, 0x99, 0x99, 0x93, 0x99, 0x99, 0xC3, 0x93, 0x99, 0x99, 0xC3, 0x93, 0xC3, + 0x99, 0xC3, 0x93, 0xC3, 0x99, 0x00, 0x05, 0x04, 0x35, 0x05, 0x35, 0x0A, 0x35, 0x34, 0x65, 0x34, + 0x65, 0x3B, 0x6B, 0x64, 0x95, 0x6A, 0x95, 0x6A, 0x9B, 0x95, 0xC5, 0x9A, 0xCB, 0x9A, 0xCB, 0xC4, + 0xF5, 0xCB, 0xFB, 0xCA, 0xFB, 0xFA, 0x24, 0x1E, 0x4F, 0x1E, 0x4F, 0x1E, 0x4F, 0x49, 0x7A, 0x49, + 0x7A, 0x49, 0x7A, 0x74, 0xA5, 0x74, 0xA5, 0x74, 0xA5, 0x9F, 0xD0, 0x9F, 0xD0, 0x9F, 0xD0, 0xCA, + 0xFB, 0xCA, 0xFB, 0xCA, 0xFB, 0xF5, 0xD2, 0xA8, 0xD9, 0xD2, 0xD9, 0xAE, 0xD9, 0xAF, 0xE0, 0xAF, + 0xE0, 0xDF, 0xE6, 0xB6, 0xE7, 0xBC, 0xE7, 0xBC, 0xED, 0xE7, 0xEE, 0xC3, 0xF4, 0xC3, 0xF4, 0xC4, + 0xF5, 0xF4, 0xFB, 0xCA, 0xFB, 0xD1, 0x99, 0x93, 0xC3, 0x93, 0x99, 0x93, 0xC3, 0x93, 0xC3, 0x93, + 0xC3, 0x93, 0xC3, 0x93, 0xC3, 0x93, 0xC3, 0x93, 0xC3, 0x93, 0xC3, 0x93, 0xC3, 0x93, 0xC3, 0x93, + 0xC3, 0x93, 0xC3, 0x93, 0xC3, 0x00, 0x05, 0x05, 0x05, 0x05, 0x0B, 0x35, 0x35, 0x35, 0x35, 0x65, + 0x3B, 0x65, 0x65, 0x6B, 0x65, 0x6B, 0x95, 0x95, 0x95, 0x9B, 0x9B, 0xC5, 0x9B, 0xC5, 0xCB, 0xCB, + 0xCB, 0xCB, 0xCB, 0xFB, 0xFB, 0xFB, 0x24, 0x24, 0x24, 0x24, 0x24, 0x4F, 0x4F, 0x4F, 0x4F, 0x7A, + 0x4F, 0x7A, 0x7A, 0x7A, 0x7A, 0x7A, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xD0, 0xA5, 0xD0, 0xD0, 0xD0, + 0xD0, 0xD0, 0xD0, 0xFB, 0xFB, 0xFB, 0xD2, 0xD2, 0xD2, 0xD2, 0xD8, 0xD9, 0xD9, 0xD9, 0xD9, 0xE0, + 0xDF, 0xE0, 0xE0, 0xE6, 0xE0, 0xE6, 0xE7, 0xE7, 0xE7, 0xED, 0xED, 0xEE, 0xED, 0xEE, 0xF4, 0xF4, + 0xF4, 0xF4, 0xF4, 0xFB, 0xFB, 0xFB, 0x99, 0x99, 0x93, 0x99, 0x99, 0x99, 0x93, 0x99, 0x99, 0x99, + 0x93, 0x99, 0x99, 0xC3, 0x93, 0x99, 0x99, 0xC3, 0x93, 0x99, 0x99, 0xC3, 0x93, 0xC3, 0xC3, 0xC3, + 0x93, 0xC3, 0xC3, 0xC3, 0x93, 0x00, 0x05, 0x05, 0x0B, 0x05, 0x35, 0x0B, 0x35, 0x35, 0x65, 0x35, + 0x65, 0x3B, 0x6B, 0x65, 0x6B, 0x65, 0x9B, 0x6B, 0x9B, 0x95, 0xC5, 0x9B, 0xC5, 0x9B, 0xCB, 0xCB, + 0xCB, 0xCB, 0xFB, 0xCB, 0xFB, 0xFB, 0x24, 0x24, 0x24, 0x24, 0x4F, 0x24, 0x4F, 0x4F, 0x7A, 0x4F, + 0x7A, 0x4F, 0x7A, 0x7A, 0x7A, 0x7A, 0xA5, 0x7A, 0xA5, 0xA5, 0xD0, 0xA5, 0xD0, 0xA5, 0xD0, 0xD0, + 0xD0, 0xD0, 0xFB, 0xD0, 0xFB, 0xFB, 0xD2, 0xD2, 0xD8, 0xD2, 0xD9, 0xD8, 0xD9, 0xD9, 0xE0, 0xD9, + 0xE0, 0xDF, 0xE6, 0xE0, 0xE6, 0xE0, 0xED, 0xE6, 0xED, 0xE7, 0xEE, 0xED, 0xEE, 0xED, 0xF4, 0xF4, + 0xF4, 0xF4, 0xFB, 0xF4, 0xFB, 0xFB, 0xC4, 0x93, 0x99, 0x93, 0xC4, 0x93, 0x99, 0x93, 0xC4, 0x93, + 0xC3, 0x93, 0xC4, 0x93, 0xC3, 0x93, 0xC4, 0x93, 0xC3, 0x93, 0xC4, 0x93, 0xC3, 0x93, 0xC4, 0x93, + 0xC3, 0x93, 0xC4, 0x93, 0xC3, 0x00, +}; -- cgit v1.2.3 From 8681e85ba6028287bf202d8b8a86a7d0a0d49101 Mon Sep 17 00:00:00 2001 From: inmarket Date: Sun, 7 Jul 2013 19:43:03 +1000 Subject: Change GDISP image default reading mode for WIN32 --- demos/modules/gdisp/gdisp_images/main.c | 2 +- demos/modules/gdisp/gdisp_images_animated/main.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'demos/modules') diff --git a/demos/modules/gdisp/gdisp_images/main.c b/demos/modules/gdisp/gdisp_images/main.c index e5b55a3a..c581f942 100644 --- a/demos/modules/gdisp/gdisp_images/main.c +++ b/demos/modules/gdisp/gdisp_images/main.c @@ -30,7 +30,7 @@ #include "gfx.h" #ifdef WIN32 - #define USE_MEMORY_FILE FALSE // Can be true or false for Win32 + #define USE_MEMORY_FILE TRUE // Can be true or false for Win32 #else #define USE_MEMORY_FILE TRUE // Non-Win32 - use the compiled in image #endif diff --git a/demos/modules/gdisp/gdisp_images_animated/main.c b/demos/modules/gdisp/gdisp_images_animated/main.c index 4713e0e9..c5260174 100644 --- a/demos/modules/gdisp/gdisp_images_animated/main.c +++ b/demos/modules/gdisp/gdisp_images_animated/main.c @@ -33,7 +33,7 @@ #define MY_BG_COLOR RGB2COLOR(220, 220, 255) // Pale blue so we can see the transparent parts #ifdef WIN32 - #define USE_MEMORY_FILE FALSE // Can be true or false for Win32 + #define USE_MEMORY_FILE TRUE // Can be true or false for Win32 #else #define USE_MEMORY_FILE TRUE // Non-Win32 - use the compiled in image #endif -- cgit v1.2.3 From ba264ef1add20e8ede39fde1ceae1d57687498d1 Mon Sep 17 00:00:00 2001 From: inmarket Date: Sun, 7 Jul 2013 19:43:34 +1000 Subject: Update GWIN demos --- demos/modules/ginput/touch_driver_test/main.c | 118 ++++----- demos/modules/gwin/basic/main.c | 14 +- demos/modules/gwin/console/main.c | 41 ++-- demos/modules/gwin/widgets/main.c | 330 +++++++++++++++++--------- demos/modules/gwin/widgets/readme.txt | 4 +- 5 files changed, 308 insertions(+), 199 deletions(-) (limited to 'demos/modules') diff --git a/demos/modules/ginput/touch_driver_test/main.c b/demos/modules/ginput/touch_driver_test/main.c index 1a1157b0..225a111c 100644 --- a/demos/modules/ginput/touch_driver_test/main.c +++ b/demos/modules/ginput/touch_driver_test/main.c @@ -28,7 +28,6 @@ */ #include "gfx.h" -#include "chprintf.h" static GConsoleObject gc; static GButtonObject gNext; @@ -39,15 +38,15 @@ static GListener gl; * GINPUT Touch Driver Calibrator. * *------------------------------------------------------------------------*/ int main(void) { - GSourceHandle gs, gsNext, gsPrev; + GSourceHandle gs; GEvent *pe; GEventMouse *pem; GEventGWinButton *peb; coord_t swidth, sheight; GHandle ghc, ghNext, ghPrev; - BaseSequentialStream *gp; GEventType deviceType; font_t font; + GWidgetInit wi; gfxInit(); // Initialize the display @@ -58,12 +57,13 @@ int main(void) { // Create our title font = gdispOpenFont("UI2"); + gwinSetDefaultFont(font); gdispFillStringBox(0, 0, swidth, 20, "Touch Calibration", font, Red, White, justifyLeft); // Create our main display window - ghc = gwinCreateConsole(&gc, 0, 20, swidth, sheight-20, font); + wi.g.show = TRUE; wi.g.x = 0; wi.g.y = 20; wi.g.width = swidth; wi.g.height = sheight-20; + ghc = gwinConsoleCreate(&gc, &wi.g); gwinClear(ghc); - gp = gwinGetConsoleStream(ghc); // Initialize the mouse in our special no calibration mode. geventListenerInit(&gl); @@ -77,22 +77,22 @@ int main(void) { StepDeviceType: gwinClear(ghc); gwinSetColor(ghc, Yellow); - chprintf(gp, "\n1. DEVICE TYPE\n\n"); + gwinPrintf(ghc, "\n1. DEVICE TYPE\n\n"); pem = (GEventMouse *)&gl.event; ginputGetMouseStatus(0, pem); deviceType = pem->type; gwinSetColor(ghc, White); - chprintf(gp, "This is detected as a %s device\n\n", + gwinPrintf(ghc, "This is detected as a %s device\n\n", deviceType == GEVENT_MOUSE ? "MOUSE" : (pem->type == GEVENT_TOUCH ? "TOUCH" : "UNKNOWN")); if (ghNext) - chprintf(gp, "Press Next or Back to continue.\n"); + gwinPrintf(ghc, "Press Next or Back to continue.\n"); else if (deviceType == GEVENT_MOUSE) - chprintf(gp, "Click the mouse button to move on to the next test.\n"); + gwinPrintf(ghc, "Click the mouse button to move on to the next test.\n"); else - chprintf(gp, "Press and release your finger to move on to the next test.\n"); + gwinPrintf(ghc, "Press and release your finger to move on to the next test.\n"); while(1) { pe = geventEventWait(&gl, TIME_INFINITE); @@ -117,23 +117,23 @@ StepDeviceType: StepRawJitter: gwinClear(ghc); gwinSetColor(ghc, Yellow); - chprintf(gp, "\n2. GINPUT_MOUSE_READ_CYCLES\n\n"); + gwinPrintf(ghc, "\n2. GINPUT_MOUSE_READ_CYCLES\n\n"); gwinSetColor(ghc, White); if (deviceType == GEVENT_MOUSE) - chprintf(gp, "Press and hold the mouse button.\n\n"); + gwinPrintf(ghc, "Press and hold the mouse button.\n\n"); else - chprintf(gp, "Press and hold on the surface.\n\n"); - chprintf(gp, "Numbers will display in this window.\n" + gwinPrintf(ghc, "Press and hold on the surface.\n\n"); + gwinPrintf(ghc, "Numbers will display in this window.\n" "Ensure that values don't jump around very much when your finger is stationary.\n\n" "Increasing GINPUT_MOUSE_READ_CYCLES helps reduce jitter but increases CPU usage.\n\n"); if (ghNext) - chprintf(gp, "Press Next or Back to continue.\n"); + gwinPrintf(ghc, "Press Next or Back to continue.\n"); else if (deviceType == GEVENT_MOUSE) - chprintf(gp, "Release the mouse button to move on to the next test.\n"); + gwinPrintf(ghc, "Release the mouse button to move on to the next test.\n"); else - chprintf(gp, "Release your finger to move on to the next test.\n"); + gwinPrintf(ghc, "Release your finger to move on to the next test.\n"); // For this test turn on ALL mouse movement events geventAttachSource(&gl, gs, GLISTEN_MOUSEDOWNMOVES|GLISTEN_MOUSEMETA|GLISTEN_MOUSENOFILTER); @@ -150,7 +150,7 @@ StepRawJitter: if (pe->type == GEVENT_MOUSE || pe->type == GEVENT_TOUCH) { pem = (GEventMouse *)pe; if ((pem->current_buttons & GINPUT_MOUSE_BTN_LEFT)) - chprintf(gp, "%u:%u\n", pem->x, pem->y); + gwinPrintf(ghc, "%u:%u\n", pem->x, pem->y); if (!ghNext && (pem->meta & GMETA_MOUSE_UP)) break; } @@ -166,19 +166,19 @@ StepRawJitter: StepCalibrate: gwinClear(ghc); gwinSetColor(ghc, Yellow); - chprintf(gp, "\n3. GINPUT_MOUSE_CALIBRATION_ERROR\n\n"); + gwinPrintf(ghc, "\n3. GINPUT_MOUSE_CALIBRATION_ERROR\n\n"); gwinSetColor(ghc, Gray); - chprintf(gp, "Ensure GINPUT_MOUSE_NEED_CALIBRATION = TRUE and GINPUT_MOUSE_CALIBRATION_ERROR is >= 0\n\n"); + gwinPrintf(ghc, "Ensure GINPUT_MOUSE_NEED_CALIBRATION = TRUE and GINPUT_MOUSE_CALIBRATION_ERROR is >= 0\n\n"); gwinSetColor(ghc, White); - chprintf(gp, "You will be presented with a number of points to touch.\nPress them in turn.\n\n" + gwinPrintf(ghc, "You will be presented with a number of points to touch.\nPress them in turn.\n\n" "If the calibration repeatedly fails, increase GINPUT_MOUSE_CALIBRATION_ERROR and try again.\n\n"); if (ghNext) - chprintf(gp, "Press Next to start the calibration.\n"); + gwinPrintf(ghc, "Press Next to start the calibration.\n"); else if (deviceType == GEVENT_MOUSE) - chprintf(gp, "Click the mouse button to start the calibration.\n"); + gwinPrintf(ghc, "Click the mouse button to start the calibration.\n"); else - chprintf(gp, "Press and release your finger to start the calibration.\n"); + gwinPrintf(ghc, "Press and release your finger to start the calibration.\n"); while(1) { pe = geventEventWait(&gl, TIME_INFINITE); @@ -201,37 +201,21 @@ StepCalibrate: /* From now on we can use Next and Previous Buttons */ if (!ghNext) { + gwinAttachMouse(0); + gwinAttachListener(&gl); - ghNext = gwinCreateButton(&gNext, swidth-50, 0, 50, 20, font, GBTN_NORMAL); - gwinSetButtonText(ghNext, "Next", FALSE); - gsNext = gwinGetButtonSource(ghNext); - geventAttachSource(&gl, gsNext, 0); - gwinAttachButtonMouse(ghNext, 0); - - ghPrev = gwinCreateButton(&gPrev, swidth-100, 0, 50, 20, font, GBTN_NORMAL); - gwinSetButtonText(ghPrev, "Back", FALSE); - gsPrev = gwinGetButtonSource(ghPrev); - geventAttachSource(&gl, gsPrev, 0); - gwinAttachButtonMouse(ghPrev, 0); - -#if 0 - { - // Attach a couple of hardware toggle buttons to our Next and Back buttons as well. - // We can always use the mouse to trigger the buttons if you don't want to use hardware toggles. - // This code depends on your hardware. Turn it on only if you have - // defined a board definition for your toggle driver. Then change - // the next two lines to be correct for your hardware. The values - // below are correct for the Win32 toggle driver. - gwinAttachButtonToggle(ghNext, GINPUT_TOGGLE_MOMENTARY1); - gwinAttachButtonToggle(ghPrev, GINPUT_TOGGLE_MOMENTARY2); - } -#endif + wi.customDraw = 0; wi.customParam = 0; wi.customStyle = 0; + wi.g.show = TRUE; wi.g.x = swidth-50; wi.g.y = 0; wi.g.width = 50; wi.g.height = 20; + wi.text = "Next"; ghNext = gwinButtonCreate(&gNext, &wi); + + wi.g.show = TRUE; wi.g.x = swidth-100; + wi.text = "Back"; ghPrev = gwinButtonCreate(&gPrev, &wi); } // Calibration used the whole screen - re-establish our title gdispFillStringBox(0, 0, swidth, 20, "Touch Calibration", font, Green, White, justifyLeft); - gwinButtonDraw(ghNext); - gwinButtonDraw(ghPrev); + gwinRedraw(ghNext); + gwinRedraw(ghPrev); /* * Test: Mouse movement jitter @@ -240,18 +224,18 @@ StepCalibrate: StepJitter: gwinClear(ghc); gwinSetColor(ghc, Yellow); - chprintf(gp, "\n4. GINPUT_MOUSE_MOVE_JITTER\n\n"); + gwinPrintf(ghc, "\n4. GINPUT_MOUSE_MOVE_JITTER\n\n"); gwinSetColor(ghc, White); if (deviceType == GEVENT_MOUSE) - chprintf(gp, "Press and hold the mouse button and move around as if to draw.\n\n"); + gwinPrintf(ghc, "Press and hold the mouse button and move around as if to draw.\n\n"); else - chprintf(gp, "Press firmly on the surface and move around as if to draw.\n\n"); + gwinPrintf(ghc, "Press firmly on the surface and move around as if to draw.\n\n"); - chprintf(gp, "Dots will display in this window. Ensure that when you stop moving your finger that " + gwinPrintf(ghc, "Dots will display in this window. Ensure that when you stop moving your finger that " "new dots stop displaying.\nNew dots should only display when your finger is moving.\n\n" "Adjust GINPUT_MOUSE_MOVE_JITTER to the smallest value that this reliably works for.\n\n"); - chprintf(gp, "Press Next or Back to continue.\n\n"); + gwinPrintf(ghc, "Press Next or Back to continue.\n\n"); while(1) { pe = geventEventWait(&gl, TIME_INFINITE); @@ -265,7 +249,7 @@ StepJitter: if (pe->type == GEVENT_MOUSE || pe->type == GEVENT_TOUCH) { pem = (GEventMouse *)pe; if ((pem->current_buttons & GINPUT_MOUSE_BTN_LEFT)) - chprintf(gp, "."); + gwinPrintf(ghc, "."); } } @@ -276,16 +260,16 @@ StepJitter: StepPolling: gwinClear(ghc); gwinSetColor(ghc, Yellow); - chprintf(gp, "\n5. GINPUT_MOUSE_POLL_PERIOD\n\n"); + gwinPrintf(ghc, "\n5. GINPUT_MOUSE_POLL_PERIOD\n\n"); gwinSetColor(ghc, White); - chprintf(gp, "Press firmly on the surface (or press and hold the mouse button) and move around as if to draw.\n\n"); - chprintf(gp, "A green line will follow your finger.\n" + gwinPrintf(ghc, "Press firmly on the surface (or press and hold the mouse button) and move around as if to draw.\n\n"); + gwinPrintf(ghc, "A green line will follow your finger.\n" "Adjust GINPUT_MOUSE_POLL_PERIOD to the highest value that provides a line without " "gaps that are too big.\nDecreasing the value increases CPU usage.\n" "About 25 (millisecs) normally produces good results." "This test can be ignored for interrupt driven drivers.\n\n"); - chprintf(gp, "Press Next or Back to continue.\n\n"); + gwinPrintf(ghc, "Press Next or Back to continue.\n\n"); while(1) { pe = geventEventWait(&gl, TIME_INFINITE); @@ -310,18 +294,18 @@ StepPolling: StepClickJitter: gwinClear(ghc); gwinSetColor(ghc, Yellow); - chprintf(gp, "\n6. GINPUT_MOUSE_MAX_CLICK_JITTER\n\n"); + gwinPrintf(ghc, "\n6. GINPUT_MOUSE_MAX_CLICK_JITTER\n\n"); gwinSetColor(ghc, White); - chprintf(gp, "Press and release the touch surface to \"click\".\nTry both short and long presses.\n"); - chprintf(gp, "For a mouse click with the left and right buttons.\n\n"); - chprintf(gp, "Dots will display in this window. A yellow dash is a left (or short) click. " + gwinPrintf(ghc, "Press and release the touch surface to \"click\".\nTry both short and long presses.\n"); + gwinPrintf(ghc, "For a mouse click with the left and right buttons.\n\n"); + gwinPrintf(ghc, "Dots will display in this window. A yellow dash is a left (or short) click. " "A red x is a right (or long) click.\n\n" "Adjust GINPUT_MOUSE_CLICK_JITTER to the smallest value that this reliably works for.\n" "Adjust GINPUT_MOUSE_CLICK_TIME to adjust distinguishing short vs long presses.\n" "TIME_INFINITE means there are no long presses (although a right mouse button will still work).\n\n" "Note: moving your finger (mouse) during a click cancels it.\n\n"); - chprintf(gp, "This is the last test but you can press Next or Back to continue.\n\n"); + gwinPrintf(ghc, "This is the last test but you can press Next or Back to continue.\n\n"); while(1) { pe = geventEventWait(&gl, TIME_INFINITE); @@ -336,11 +320,11 @@ StepClickJitter: pem = (GEventMouse *)pe; if ((pem->meta & GMETA_MOUSE_CLICK)) { gwinSetColor(ghc, Yellow); - chprintf(gp, "-"); + gwinPrintf(ghc, "-"); } if ((pem->meta & GMETA_MOUSE_CXTCLICK)) { gwinSetColor(ghc, Red); - chprintf(gp, "x"); + gwinPrintf(ghc, "x"); } } } diff --git a/demos/modules/gwin/basic/main.c b/demos/modules/gwin/basic/main.c index 5dc1bab7..c46e6969 100644 --- a/demos/modules/gwin/basic/main.c +++ b/demos/modules/gwin/basic/main.c @@ -40,8 +40,14 @@ int main(void) { gdispClear(Lime); /* Create two windows */ - GW1 = gwinCreateWindow(NULL, 20, 10, 200, 150); - GW2 = gwinCreateWindow(NULL, 50, 190, 150, 100); + { + GWindowInit wi; + + wi.show = TRUE; wi.x = 20; wi.y = 10; wi.width = 200; wi.height = 150; + GW1 = gwinWindowCreate(NULL, &wi); + wi.show = TRUE; wi.x = 50; wi.y = 190; wi.width = 150; wi.height = 100; + GW2 = gwinWindowCreate(NULL, &wi); + } /* Set fore- and background colors for both windows */ gwinSetColor(GW1, Black); @@ -53,9 +59,9 @@ int main(void) { gwinClear(GW1); gwinClear(GW2); - gwinDrawLine (GW1, 5, 30, 150, 110); + gwinDrawLine(GW1, 5, 30, 150, 110); for(i=5, j=0; i < 200 && j < 150; i+=3, j+=i/20) - gwinDrawPixel (GW1, i, j); + gwinDrawPixel(GW1, i, j); /* * Draw two filled circles at the same coordinate diff --git a/demos/modules/gwin/console/main.c b/demos/modules/gwin/console/main.c index aa3de40d..197a8ad6 100644 --- a/demos/modules/gwin/console/main.c +++ b/demos/modules/gwin/console/main.c @@ -28,27 +28,37 @@ */ #include "gfx.h" -#include "chprintf.h" /* The handles for our three consoles */ GHandle GW1, GW2, GW3; -/* The streams for our three consoles */ -BaseSequentialStream *S1, *S2, *S3; - int main(void) { uint8_t i; font_t font1, font2; /* initialize and clear the display */ gfxInit(); - font1 = gdispOpenFont("UI2 Double"); - font2 = gdispOpenFont("Small"); - /* create the three console windows and set a font for each */ - GW1 = gwinCreateConsole(NULL, 0, 0, gdispGetWidth(), gdispGetHeight()/2, font1); - GW2 = gwinCreateConsole(NULL, 0, gdispGetHeight()/2, gdispGetWidth()/2, gdispGetHeight(), font2); - GW3 = gwinCreateConsole(NULL, gdispGetWidth()/2, gdispGetHeight()/2, gdispGetWidth(), gdispGetHeight(), font2); + /* Set some fonts */ + font1 = gdispOpenFont("Small"); + font2 = gdispOpenFont("UI2 Double"); + gwinSetDefaultFont(font1); + + /* create the three console windows */ + { + GWindowInit wi; + + wi.show = TRUE; + wi.x = 0; wi.y = 0; wi.width = gdispGetWidth(); wi.height = gdispGetHeight()/2; + GW1 = gwinConsoleCreate(NULL, &wi); + wi.y = gdispGetHeight()/2; wi.width = gdispGetWidth()/2; wi.height = gdispGetHeight(); + GW2 = gwinConsoleCreate(NULL, &wi); + wi.x = gdispGetWidth()/2; wi.height = gdispGetHeight(); + GW3 = gwinConsoleCreate(NULL, &wi); + } + + /* Use a special font for GW1 */ + gwinSetFont(GW1, font2); /* Set the fore- and background colors for each console */ gwinSetColor(GW1, Green); @@ -63,24 +73,19 @@ int main(void) { gwinClear(GW2); gwinClear(GW3); - /* receive the stream pointers of each console */ - S1 = gwinGetConsoleStream(GW1); - S2 = gwinGetConsoleStream(GW2); - S3 = gwinGetConsoleStream(GW3); - /* Output some data on the first console */ for(i = 0; i < 10; i++) { - chprintf(S1, "Hello ChibiOS/GFX!\r\n"); + gwinPrintf(GW1, "Hello ChibiOS/GFX!\r\n"); } /* Output some data on the second console */ for(i = 0; i < 16; i++) { - chprintf(S2, "Message Nr.: %d\r\n", i+1); + gwinPrintf(GW2, "Message Nr.: %d\r\n", i+1); } /* Output some data on the third console */ for(i = 0; i < 18; i++) { - chprintf(S3, "Message Nr.: %d\r\n", i+1); + gwinPrintf(GW3, "Message Nr.: %d\r\n", i+1); } while(TRUE) { diff --git a/demos/modules/gwin/widgets/main.c b/demos/modules/gwin/widgets/main.c index e44ce6b0..4d485186 100644 --- a/demos/modules/gwin/widgets/main.c +++ b/demos/modules/gwin/widgets/main.c @@ -28,37 +28,186 @@ #include "gfx.h" +/** + * This demo demonstrates many of the GWIN widgets. + * On the "Radio" tab try playing with the color radio buttons. + * On the "Checkbox" tab try playing with the "Disable All" checkbox. + */ + +/* Our custom yellow style */ +static const GWidgetStyle YellowWidgetStyle = { + Yellow, // window background + + // 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 GListener gl; static GHandle ghConsole; static GHandle ghTabButtons, ghTabSliders, ghTabCheckboxes, ghTabLabels, ghTabRadios, ghTabImages; static GHandle ghButton1, ghButton2, ghButton3, ghButton4; static GHandle ghSlider1, ghSlider2, ghSlider3, ghSlider4; -static GHandle ghCheckbox1, ghCheckbox2; +static GHandle ghCheckbox1, ghCheckbox2, ghCheckDisableAll; static GHandle ghLabel1; static GHandle ghRadio1, ghRadio2; +static GHandle ghRadioBlack, ghRadioWhite, ghRadioYellow; //static GHandle ghImage1; +/* Some useful macros */ #define ScrWidth gdispGetWidth() #define ScrHeight gdispGetHeight() -#define TAB_HEIGHT 30 -#define BUTTON_WIDTH 50 -#define BUTTON_HEIGHT 30 -#define SLIDER_WIDTH 20 -#define CHECKBOX_WIDTH 80 -#define CHECKBOX_HEIGHT 20 -#define RADIO_WIDTH 50 -#define RADIO_HEIGHT 20 -#define GROUP_TABS 0 -#define GROUP_R1R2 1 - -static GHandle createTab(GWidgetInit *pwi) { - GHandle gh; - - gh = gwinCreateRadio(NULL, pwi, GROUP_TABS); - gwinSetCustomDraw(gh, gwinRadioDraw_Tab, 0); - gwinSetVisible(gh, TRUE); - return gh; +#define TAB_HEIGHT 30 +#define LABEL_HEIGHT 40 +#define BUTTON_WIDTH 50 +#define BUTTON_HEIGHT 30 +#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 + +/** + * Create all the widgets. + * With the exception of the Tabs they are all created invisible. + */ +static void createWidgets(void) { + GWidgetInit wi; + + wi.customDraw = 0; wi.customParam = 0; wi.customStyle = 0; + + // Create the Tabs + wi.g.show = TRUE; wi.customDraw = gwinRadioDraw_Tab; + wi.g.width = ScrWidth/6; wi.g.height = TAB_HEIGHT; wi.g.y = 0; + wi.g.x = 0*wi.g.width; wi.text = "Buttons"; ghTabButtons = gwinRadioCreate(NULL, &wi, GROUP_TABS); + wi.g.x = 1*wi.g.width; wi.text = "Sliders"; ghTabSliders = gwinRadioCreate(NULL, &wi, GROUP_TABS); + wi.g.x = 2*wi.g.width; wi.text = "Checkbox"; ghTabCheckboxes = gwinRadioCreate(NULL, &wi, GROUP_TABS); + wi.g.x = 3*wi.g.width; wi.text = "Radios"; ghTabRadios = gwinRadioCreate(NULL, &wi, GROUP_TABS); + wi.g.x = 4*wi.g.width; wi.text = "Labels"; ghTabLabels = gwinRadioCreate(NULL, &wi, GROUP_TABS); + wi.g.x = 5*wi.g.width; wi.text = "Images"; ghTabImages = gwinRadioCreate(NULL, &wi, GROUP_TABS); + + // Buttons + wi.g.show = FALSE; wi.customDraw = 0; + wi.g.width = BUTTON_WIDTH; wi.g.height = BUTTON_HEIGHT; wi.g.y = TAB_HEIGHT+5; + wi.g.x = 0+0*(BUTTON_WIDTH+1); wi.text = "B1"; ghButton1 = gwinButtonCreate(NULL, &wi); + wi.g.x = 0+1*(BUTTON_WIDTH+1); wi.text = "B2"; ghButton2 = gwinButtonCreate(NULL, &wi); + wi.g.x = 0+2*(BUTTON_WIDTH+1); wi.text = "B3"; ghButton3 = gwinButtonCreate(NULL, &wi); + wi.g.x = 0+3*(BUTTON_WIDTH+1); wi.text = "B4"; ghButton4 = gwinButtonCreate(NULL, &wi); + + // Horizontal Sliders + wi.g.width = ScrWidth/2-2; wi.g.height = SLIDER_WIDTH; wi.g.x = ScrWidth/2+1; + wi.g.y = ScrHeight/2-2*(SLIDER_WIDTH+1); wi.text = "S1"; ghSlider1 = gwinSliderCreate(NULL, &wi); + wi.g.y = ScrHeight/2-1*(SLIDER_WIDTH+1); wi.text = "S2"; ghSlider2 = gwinSliderCreate(NULL, &wi); + + // Vertical Sliders + wi.g.width = SLIDER_WIDTH; wi.g.height = ScrHeight/2-2; wi.g.y = ScrHeight/2+1; + wi.g.x = 0+0*(SLIDER_WIDTH+1); wi.text = "S3"; ghSlider3 = gwinSliderCreate(NULL, &wi); + wi.g.x = 0+1*(SLIDER_WIDTH+1); wi.text = "S4"; ghSlider4 = gwinSliderCreate(NULL, &wi); + + // Checkboxes - for the 2nd checkbox we apply special drawing before making it visible + wi.g.width = CHECKBOX_WIDTH; wi.g.height = CHECKBOX_HEIGHT; wi.g.x = 0; + wi.g.y = TAB_HEIGHT+5+0*(CHECKBOX_HEIGHT+1); wi.text = "C1"; ghCheckbox1 = gwinCheckboxCreate(NULL, &wi); + wi.customDraw = gwinCheckboxDraw_CheckOnRight; + wi.g.y = TAB_HEIGHT+5+1*(CHECKBOX_HEIGHT+1); wi.text = "C2"; ghCheckbox2 = gwinCheckboxCreate(NULL, &wi); + wi.customDraw = 0; wi.g.width = DISABLEALL_WIDTH; + wi.g.y = TAB_HEIGHT+5+2*(CHECKBOX_HEIGHT+1); wi.text = "Disable All"; ghCheckDisableAll = gwinCheckboxCreate(NULL, &wi); + + // Labels + wi.g.width = 0; wi.g.height = LABEL_HEIGHT; // dynamic width, fixed height + wi.g.y = TAB_HEIGHT+5+2*(CHECKBOX_HEIGHT+1); wi.text = "Label"; ghLabel1 = gwinLabelCreate(NULL, &wi); + + // Radio Buttons + wi.g.width = RADIO_WIDTH; wi.g.height = RADIO_HEIGHT; wi.g.y = TAB_HEIGHT+5; + wi.g.x = 0*wi.g.width; wi.text = "Yes"; ghRadio1 = gwinRadioCreate(NULL, &wi, GROUP_YESNO); + wi.g.x = 1*wi.g.width; wi.text = "No"; ghRadio2 = gwinRadioCreate(NULL, &wi, GROUP_YESNO); + wi.g.width = COLOR_WIDTH; wi.g.y += RADIO_HEIGHT+5; + wi.g.x = 0*wi.g.width; wi.text = "Black"; ghRadioBlack = gwinRadioCreate(NULL, &wi, GROUP_COLORS); + wi.g.x = 1*wi.g.width; wi.text = "White"; ghRadioWhite = gwinRadioCreate(NULL, &wi, GROUP_COLORS); + wi.g.x = 2*wi.g.width; wi.text = "Yellow"; ghRadioYellow = gwinRadioCreate(NULL, &wi, GROUP_COLORS); + gwinRadioPress(ghRadioWhite); + + // Console - we apply some special colors before making it visible + wi.g.width = ScrWidth/2-1; wi.g.height = ScrHeight/2-1; + wi.g.x = ScrWidth/2+1; wi.g.y = ScrHeight/2+1; + ghConsole = gwinConsoleCreate(NULL, &wi.g); + gwinSetColor(ghConsole, Yellow); + gwinSetBgColor(ghConsole, Black); +} + +/** + * Set the visibility of widgets based on which tab is selected. + */ +static void setTab(GHandle tab) { + /* Make sure everything is invisible first */ + gwinSetVisible(ghButton1, FALSE); gwinSetVisible(ghButton2, FALSE); + gwinSetVisible(ghButton3, FALSE); gwinSetVisible(ghButton4, FALSE); + gwinSetVisible(ghSlider1, FALSE); gwinSetVisible(ghSlider2, FALSE); + gwinSetVisible(ghSlider3, FALSE); gwinSetVisible(ghSlider4, FALSE); + gwinSetVisible(ghCheckbox1, FALSE); gwinSetVisible(ghCheckbox2, FALSE); gwinSetVisible(ghCheckDisableAll, FALSE); + gwinSetVisible(ghLabel1, FALSE); + gwinSetVisible(ghRadio1, FALSE); gwinSetVisible(ghRadio2, FALSE); + gwinSetVisible(ghRadioWhite, FALSE);gwinSetVisible(ghRadioBlack, FALSE);gwinSetVisible(ghRadioYellow, FALSE); + //gwinSetVisible(ghImage1, FALSE); + + /* Turn on widgets depending on the tab selected */ + if (tab == ghTabButtons) { + gwinSetVisible(ghButton1, TRUE); gwinSetVisible(ghButton2, TRUE); + gwinSetVisible(ghButton3, TRUE); gwinSetVisible(ghButton4, TRUE); + } else if (tab == ghTabSliders) { + gwinSetVisible(ghSlider1, TRUE); gwinSetVisible(ghSlider2, TRUE); + gwinSetVisible(ghSlider3, TRUE); gwinSetVisible(ghSlider4, TRUE); + } else if (tab == ghTabCheckboxes) { + gwinSetVisible(ghCheckbox1, TRUE); gwinSetVisible(ghCheckbox2, TRUE); gwinSetVisible(ghCheckDisableAll, TRUE); + } else if (tab == ghTabLabels) { + gwinSetVisible(ghLabel1, TRUE); + } else if (tab == ghTabRadios) { + gwinSetVisible(ghRadio1, TRUE); gwinSetVisible(ghRadio2, TRUE); + gwinSetVisible(ghRadioWhite, TRUE); gwinSetVisible(ghRadioBlack, TRUE); gwinSetVisible(ghRadioYellow, TRUE); + } else if (tab == ghTabImages) { + //gwinSetVisible(ghImage1, TRUE); + } +} + +/** + * Set the enabled state of every widget (except the tabs etc) + */ +static void setEnabled(bool_t ena) { + gwinSetEnabled(ghButton1, ena); gwinSetEnabled(ghButton2, ena); + gwinSetEnabled(ghButton3, ena); gwinSetEnabled(ghButton4, ena); + gwinSetEnabled(ghSlider1, ena); gwinSetEnabled(ghSlider2, ena); + gwinSetEnabled(ghSlider3, ena); gwinSetEnabled(ghSlider4, ena); + gwinSetEnabled(ghCheckbox1, ena); gwinSetEnabled(ghCheckbox2, ena); //gwinSetEnabled(ghCheckDisableAll, TRUE); + gwinSetEnabled(ghLabel1, ena); + gwinSetEnabled(ghRadio1, ena); gwinSetEnabled(ghRadio2, ena); + gwinSetEnabled(ghRadioWhite, ena); gwinSetEnabled(ghRadioBlack, ena); gwinSetEnabled(ghRadioYellow, ena); + //gwinSetEnabled(ghImage1, ena); } int main(void) { @@ -66,16 +215,11 @@ int main(void) { // Initialize the display gfxInit(); - gdispClear(White); // Set the widget defaults gwinSetDefaultFont(gdispOpenFont("UI2")); - gwinSetDefaultColor(Black); - gwinSetDefaultBgColor(White); - - // We want to listen for widget events - geventListenerInit(&gl); - gwinAttachListener(&gl); + gwinSetDefaultStyle(&WhiteWidgetStyle, FALSE); + gdispClear(White); // Connect the mouse #if GINPUT_NEED_MOUSE @@ -83,59 +227,9 @@ int main(void) { #endif // Create the gwin windows/widgets - { - GWidgetInit wi; - - // Create the Tabs - wi.g.show = FALSE; wi.g.width = ScrWidth/6; wi.g.height = TAB_HEIGHT; wi.g.y = 0; - wi.g.x = 0*wi.g.width; wi.text = "Buttons"; ghTabButtons = createTab(&wi); - wi.g.x = 1*wi.g.width; wi.text = "Sliders"; ghTabSliders = createTab(&wi); - wi.g.x = 2*wi.g.width; wi.text = "Checkbox"; ghTabCheckboxes = createTab(&wi); - wi.g.x = 3*wi.g.width; wi.text = "Labels"; ghTabLabels = createTab(&wi); - wi.g.x = 4*wi.g.width; wi.text = "Radios"; ghTabRadios = createTab(&wi); - wi.g.x = 5*wi.g.width; wi.text = "Images"; ghTabImages = createTab(&wi); - - // Buttons - wi.g.width = BUTTON_WIDTH; wi.g.height = BUTTON_HEIGHT; wi.g.y = TAB_HEIGHT+5; - wi.g.x = 0+0*(BUTTON_WIDTH+1); wi.text = "B1"; ghButton1 = gwinCreateButton(NULL, &wi); - wi.g.x = 0+1*(BUTTON_WIDTH+1); wi.text = "B2"; ghButton2 = gwinCreateButton(NULL, &wi); - wi.g.x = 0+2*(BUTTON_WIDTH+1); wi.text = "B3"; ghButton3 = gwinCreateButton(NULL, &wi); - wi.g.x = 0+3*(BUTTON_WIDTH+1); wi.text = "B4"; ghButton4 = gwinCreateButton(NULL, &wi); - - // Horizontal Sliders - wi.g.width = ScrWidth/2-2; wi.g.height = SLIDER_WIDTH; wi.g.x = ScrWidth/2+1; - wi.g.y = ScrHeight/2-2*(SLIDER_WIDTH+1); wi.text = "S1"; ghSlider1 = gwinCreateSlider(NULL, &wi); - wi.g.y = ScrHeight/2-1*(SLIDER_WIDTH+1); wi.text = "S2"; ghSlider2 = gwinCreateSlider(NULL, &wi); - - // Vertical Sliders - wi.g.width = SLIDER_WIDTH; wi.g.height = ScrHeight/2-2; wi.g.y = ScrHeight/2+1; - wi.g.x = 0+0*(SLIDER_WIDTH+1); wi.text = "S3"; ghSlider3 = gwinCreateSlider(NULL, &wi); - wi.g.x = 0+1*(SLIDER_WIDTH+1); wi.text = "S4"; ghSlider4 = gwinCreateSlider(NULL, &wi); - - // Checkboxes - for the 2nd checkbox we apply special drawing before making it visible - wi.g.width = CHECKBOX_WIDTH; wi.g.height = CHECKBOX_HEIGHT; wi.g.x = 0; - wi.g.y = TAB_HEIGHT+5+0*(CHECKBOX_HEIGHT+1); wi.text = "C1"; ghCheckbox1 = gwinCreateCheckbox(NULL, &wi); - wi.g.y = TAB_HEIGHT+5+1*(CHECKBOX_HEIGHT+1); wi.text = "C2"; ghCheckbox2 = gwinCreateCheckbox(NULL, &wi); - gwinSetCustomDraw(ghCheckbox2, gwinCheckboxDraw_CheckOnRight, 0); - - // Labels - wi.g.width = 0; // dynamic width - wi.g.y = TAB_HEIGHT+5+2*(CHECKBOX_HEIGHT+1); wi.text = "L1"; ghLabel1 = gwinLabelCreate(NULL, &wi); - - // Radio Buttons - wi.g.width = RADIO_WIDTH; wi.g.height = RADIO_HEIGHT; wi.g.y = TAB_HEIGHT+5; - wi.g.x = 0*wi.g.width; wi.text = "Yes"; ghRadio1 = gwinCreateRadio(NULL, &wi, GROUP_R1R2); - wi.g.x = 1*wi.g.width; wi.text = "No"; ghRadio2 = gwinCreateRadio(NULL, &wi, GROUP_R1R2); - - // Console - we apply some special colors before making it visible - wi.g.width = ScrWidth/2-1; wi.g.height = ScrHeight/2-1; - wi.g.x = ScrWidth/2+1; wi.g.y = ScrHeight/2+1; - ghConsole = gwinCreateConsole(NULL, &wi.g); - gwinSetColor(ghConsole, Yellow); - gwinSetBgColor(ghConsole, Black); - } + createWidgets(); - // Assign toggles and dials to the buttons & sliders etc. + // Assign toggles and dials to specific buttons & sliders etc. #if GINPUT_NEED_TOGGLE gwinAttachToggle(ghButton1, 0, 0); gwinAttachToggle(ghButton2, 0, 1); @@ -149,8 +243,12 @@ int main(void) { gwinSetVisible(ghConsole, TRUE); gwinClear(ghConsole); - // Press the Buttons Tab - gwinPressRadio(ghTabButtons); + // We want to listen for widget events + geventListenerInit(&gl); + gwinAttachListener(&gl); + + // Press the Tab we want visible + gwinRadioPress(ghTabButtons); while(1) { // Get an Event @@ -160,54 +258,68 @@ int main(void) { case GEVENT_GWIN_BUTTON: gwinPrintf(ghConsole, "Button %s\n", gwinGetText(((GEventGWinButton *)pe)->button)); break; + case GEVENT_GWIN_SLIDER: gwinPrintf(ghConsole, "Slider %s=%d\n", gwinGetText(((GEventGWinSlider *)pe)->slider), ((GEventGWinSlider *)pe)->position); break; + case GEVENT_GWIN_CHECKBOX: gwinPrintf(ghConsole, "Checkbox %s=%s\n", gwinGetText(((GEventGWinCheckbox *)pe)->checkbox), ((GEventGWinCheckbox *)pe)->isChecked ? "Checked" : "UnChecked"); + + // If it is the Disable All checkbox then do that. + if (((GEventGWinCheckbox *)pe)->checkbox == ghCheckDisableAll) { + gwinPrintf(ghConsole, "%s All\n", ((GEventGWinCheckbox *)pe)->isChecked ? "Disable" : "Enable"); + setEnabled(!((GEventGWinCheckbox *)pe)->isChecked); + } break; + case GEVENT_GWIN_RADIO: gwinPrintf(ghConsole, "Radio Group %u=%s\n", ((GEventGWinRadio *)pe)->group, gwinGetText(((GEventGWinRadio *)pe)->radio)); - // Is this the tab radio's - if (((GEventGWinRadio *)pe)->group == GROUP_TABS) { - - // Do some special animation for Label1 - if (((GEventGWinRadio *)pe)->radio == ghTabLabels) { - gwinSetBgColor(ghLabel1, gwinGetDefaultBgColor()); - gwinSetColor(ghLabel1, gwinGetDefaultColor()); - } + switch(((GEventGWinRadio *)pe)->group) { + case GROUP_TABS: // Set control visibility depending on the tab selected - gwinSetVisible(ghButton1, ((GEventGWinRadio *)pe)->radio == ghTabButtons); - gwinSetVisible(ghButton2, ((GEventGWinRadio *)pe)->radio == ghTabButtons); - gwinSetVisible(ghButton3, ((GEventGWinRadio *)pe)->radio == ghTabButtons); - gwinSetVisible(ghButton4, ((GEventGWinRadio *)pe)->radio == ghTabButtons); - gwinSetVisible(ghSlider1, ((GEventGWinRadio *)pe)->radio == ghTabSliders); - gwinSetVisible(ghSlider2, ((GEventGWinRadio *)pe)->radio == ghTabSliders); - gwinSetVisible(ghSlider3, ((GEventGWinRadio *)pe)->radio == ghTabSliders); - gwinSetVisible(ghSlider4, ((GEventGWinRadio *)pe)->radio == ghTabSliders); - gwinSetVisible(ghCheckbox1, ((GEventGWinRadio *)pe)->radio == ghTabCheckboxes); - gwinSetVisible(ghCheckbox2, ((GEventGWinRadio *)pe)->radio == ghTabCheckboxes); - gwinSetVisible(ghLabel1, ((GEventGWinRadio *)pe)->radio == ghTabLabels); - gwinSetVisible(ghRadio1, ((GEventGWinRadio *)pe)->radio == ghTabRadios); - gwinSetVisible(ghRadio2, ((GEventGWinRadio *)pe)->radio == ghTabRadios); - //gwinSetVisible(ghImage1, ((GEventGWinRadio *)pe)->radio == ghTabImages); - - // Do some special animation for Label1 + setTab(((GEventGWinRadio *)pe)->radio); + + // Do some special animation for Label1 to demonstrate auto width sizing if (((GEventGWinRadio *)pe)->radio == ghTabLabels) { + gwinPrintf(ghConsole, "Change Label Text\n"); gfxSleepMilliseconds(1000); - gwinSetBgColor(ghLabel1, Blue); - gwinSetColor(ghLabel1, Yellow); gwinSetText(ghLabel1, "Very Big Label", FALSE); gfxSleepMilliseconds(1000); - gwinSetBgColor(ghLabel1, Yellow); - gwinSetColor(ghLabel1, Red); - gwinSetText(ghLabel1, "L1", FALSE); + gwinSetText(ghLabel1, "Label", FALSE); } + break; + + case GROUP_COLORS: + { + const GWidgetStyle *pstyle; + + gwinPrintf(ghConsole, "Change Color Scheme\n"); + + if (((GEventGWinRadio *)pe)->radio == ghRadioYellow) + pstyle = &YellowWidgetStyle; + else if (((GEventGWinRadio *)pe)->radio == ghRadioBlack) + pstyle = &BlackWidgetStyle; + else + pstyle = &WhiteWidgetStyle; + + // Clear the screen to the new color - we avoid the console area as it can't redraw itself + #if GDISP_NEED_CLIP + gdispUnsetClip(); + #endif + gdispFillArea(0, 0, ScrWidth, ScrHeight/2, pstyle->background); + gdispFillArea(0, ScrHeight/2, ScrWidth/2, ScrHeight/2, pstyle->background); + + // Update the style on all controls + gwinSetDefaultStyle(pstyle, TRUE); + } + break; } break; + default: gwinPrintf(ghConsole, "Unknown %d\n", pe->type); break; diff --git a/demos/modules/gwin/widgets/readme.txt b/demos/modules/gwin/widgets/readme.txt index 02d733e9..b5777061 100644 --- a/demos/modules/gwin/widgets/readme.txt +++ b/demos/modules/gwin/widgets/readme.txt @@ -1,6 +1,8 @@ -This demo supports input from both a mouse/touch and/or a dial input. +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. -- cgit v1.2.3