This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project gfxprim.git.
The branch, master has been updated via d2cdbe621395f3e2f5cf5f814491a33f814bb4eb (commit) via 047ce730dcb1c40acf586439be2fc64352e74621 (commit) via 0ddba05bdb8c901c75b4797e9d281ce1d6307e5e (commit) from e90eda658220809b70c37e954d2624e3cfdcd5ea (commit)
Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below.
- Log ----------------------------------------------------------------- http://repo.or.cz/w/gfxprim.git/commit/d2cdbe621395f3e2f5cf5f814491a33f814bb...
commit d2cdbe621395f3e2f5cf5f814491a33f814bb4eb Author: Cyril Hrubis metan@ucw.cz Date: Wed Nov 21 23:34:24 2012 +0100
tests: Port blittest to backends.
diff --git a/demos/c_simple/Makefile b/demos/c_simple/Makefile index 03c91c5..708a3ca 100644 --- a/demos/c_simple/Makefile +++ b/demos/c_simple/Makefile @@ -9,7 +9,7 @@ LDLIBS+=-lrt `$(TOPDIR)/gfxprim-config --libs --libs-backends` APPS=backend_example loaders_example loaders filters_symmetry gfx_koch virtual_backend_example meta_data meta_data_dump tmp_file showimage v4l2_show v4l2_grab convolution weighted_median shapetest koch input- fileview linetest randomshapetest fonttest loaders_register + fileview linetest randomshapetest fonttest loaders_register blittest
v4l2_show: LDLIBS+=-lGP_grabbers v4l2_grab: LDLIBS+=-lGP_grabbers diff --git a/tests/SDL/ball.ppm b/demos/c_simple/ball.ppm similarity index 100% rename from tests/SDL/ball.ppm rename to demos/c_simple/ball.ppm diff --git a/tests/SDL/blittest.c b/demos/c_simple/blittest.c similarity index 51% rename from tests/SDL/blittest.c rename to demos/c_simple/blittest.c index c23776c..013bf07 100644 --- a/tests/SDL/blittest.c +++ b/demos/c_simple/blittest.c @@ -23,48 +23,25 @@ * * *****************************************************************************/
-#include <stdlib.h> -#include <stdio.h> -#include <errno.h> -#include <SDL/SDL.h> - -#include "GP.h" -#include "GP_SDL.h" +#include <GP.h>
static GP_Pixel black; static GP_Pixel white;
-SDL_Surface *display = NULL; -GP_Context context; -GP_Context *bitmap, *bitmap_raw, *bitmap_conv; - -SDL_TimerID timer; - -SDL_UserEvent timer_event; - -static int pause_flag = 0; +static GP_Backend *win;
+static GP_Context *bitmap, *bitmap_raw, *bitmap_conv; static int bitmap_x, bitmap_y, bitmap_vx = -3, bitmap_vy = -3; - -Uint32 timer_callback(__attribute__((unused)) Uint32 interval, - __attribute__((unused)) void *param) -{ - timer_event.type = SDL_USEREVENT; - SDL_PushEvent((SDL_Event *) &timer_event); - return 10; -} +static int pause_flag = 0;
static char text_buf[255];
void redraw_screen(void) { - if (pause_flag) - return; - bitmap_x += bitmap_vx; bitmap_y += bitmap_vy;
- if (bitmap_x + GP_ContextW(bitmap) > context.w) { + if (bitmap_x + GP_ContextW(bitmap) > win->context->w) { bitmap_vx = -bitmap_vx; bitmap_x += bitmap_vx; } @@ -74,7 +51,7 @@ void redraw_screen(void) bitmap_x += bitmap_vx; }
- if (bitmap_y + GP_ContextH(bitmap) > context.h) { + if (bitmap_y + GP_ContextH(bitmap) > win->context->h) { bitmap_vy = -bitmap_vy; bitmap_y += bitmap_vy; } @@ -84,25 +61,21 @@ void redraw_screen(void) bitmap_y += bitmap_vy; }
- SDL_LockSurface(display); - - GP_FillRectXYWH(&context, 20, 20, 300, 50, black); + GP_FillRectXYWH(win->context, 20, 20, 300, 50, black); - GP_Text(&context, NULL, 20, 20, GP_ALIGN_RIGHT|GP_VALIGN_BOTTOM, + GP_Text(win->context, NULL, 20, 20, GP_ALIGN_RIGHT|GP_VALIGN_BOTTOM, white, black, text_buf);
- GP_Print(&context, NULL, 250, 20, GP_ALIGN_RIGHT|GP_VALIGN_BOTTOM, + GP_Print(win->context, NULL, 250, 20, GP_ALIGN_RIGHT|GP_VALIGN_BOTTOM, white, black, "%c|%c|%c", bitmap->x_swap ? 'x' : ' ', bitmap->y_swap ? 'y' : ' ', bitmap->axes_swap ? 'a' : ' '); GP_Blit(bitmap, 0, 0, GP_ContextW(bitmap), GP_ContextH(bitmap), - &context, bitmap_x, bitmap_y); - - SDL_UpdateRect(display, bitmap_x, bitmap_y, - GP_ContextW(bitmap), GP_ContextH(bitmap)); - SDL_UpdateRect(display, 20, 20, 400, 50); + win->context, bitmap_x, bitmap_y);
- SDL_UnlockSurface(display); + GP_BackendUpdateRectXYWH(win, bitmap_x, bitmap_y, + GP_ContextW(bitmap), GP_ContextH(bitmap)); + GP_BackendUpdateRectXYWH(win, 20, 20, 400, 50); }
static void change_bitmap(void) @@ -113,48 +86,52 @@ static void change_bitmap(void) bitmap = bitmap_raw; snprintf(text_buf, sizeof(text_buf), "'%s' -> '%s'", - GP_PixelTypes[bitmap->pixel_type].name, - GP_PixelTypes[context.pixel_type].name); + GP_PixelTypeName(bitmap->pixel_type), + GP_PixelTypeName(win->context->pixel_type)); }
void event_loop(void) { - SDL_Event event; - - while (SDL_WaitEvent(&event) > 0) { - - switch (event.type) { - - case SDL_USEREVENT: - redraw_screen(); - break; - case SDL_KEYDOWN: - switch (event.key.keysym.sym) { - case SDLK_p: - pause_flag = !pause_flag; - break; - case SDLK_x: + GP_Event ev; + + while (GP_EventGet(&ev)) { + GP_EventDump(&ev); + + switch (ev.type) { + case GP_EV_KEY: + if (ev.code != GP_EV_KEY_DOWN) + continue; + + switch (ev.val.key.key) { + case GP_KEY_X: bitmap->x_swap = !bitmap->x_swap; break; - case SDLK_y: + case GP_KEY_Y: bitmap->y_swap = !bitmap->y_swap; break; - case SDLK_a: + case GP_KEY_R: bitmap->axes_swap = !bitmap->axes_swap; break; - case SDLK_SPACE: + case GP_KEY_P: + pause_flag = !pause_flag; + break; + case GP_KEY_SPACE: change_bitmap(); break; - case SDLK_ESCAPE: - return; - default: - break; - } + case GP_KEY_ESC: + GP_BackendExit(win); + exit(0); break; - case SDL_QUIT: - return; - default: + } + break; + case GP_EV_SYS: + switch(ev.code) { + case GP_EV_SYS_QUIT: + GP_BackendExit(win); + exit(0); break; + } + break; } } } @@ -162,78 +139,48 @@ void event_loop(void) void print_instructions(void) { printf("Use the following keys to control the test:n"); - printf(" Esc ................. exitn"); - printf(" Space ............... converts bitmap to screen pixel formatn"); - printf(" A ................... swap sprite axesn"); - printf(" X ................... mirror sprite Xn"); - printf(" Y ................... mirror sprite Yn"); - printf(" P ................... pausen"); + printf(" Esc ............. exitn"); + printf(" Space ........... converts bitmap to screen pixel formatn"); + printf(" R ............... swap sprite axesn"); + printf(" X ............... mirror sprite Xn"); + printf(" Y ............... mirror sprite Yn"); + printf(" P ............... pausen"); }
int main(int argc, char *argv[]) { - int display_bpp = 0; const char *sprite = "ball.ppm"; + const char *backend_opts = "X11";
print_instructions(); - - int i; - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-16") == 0) { - display_bpp = 16; - } else if (strcmp(argv[i], "-24") == 0) { - display_bpp = 24; - } else if (strcmp(argv[i], "-32") == 0) { - display_bpp = 32; - } else { - sprite = argv[i]; - } - } - - GP_SetDebugLevel(10); - - if ((bitmap_raw = GP_LoadImage(sprite, NULL)) == NULL) { - fprintf(stderr, "Failed to load bitmap: %sn", strerror(errno)); - return 1; - } - /* Initialize SDL */ - if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER) != 0) { - fprintf(stderr, "Could not initialize SDL: %sn", SDL_GetError()); + win = GP_BackendInit(backend_opts, "Line Test", stderr); + + if (win == NULL) { + fprintf(stderr, "Failed to initalize backend '%s'n", + backend_opts); return 1; }
- /* Create a window with a software back surface */ - display = SDL_SetVideoMode(640, 480, display_bpp, SDL_SWSURFACE); - if (display == NULL) { - fprintf(stderr, "Could not open display: %sn", SDL_GetError()); - goto fail; - } + bitmap_raw = GP_LoadImage(sprite, NULL);
- GP_SDL_ContextFromSurface(&context, display); - - bitmap_conv = GP_ContextConvertAlloc(bitmap_raw, context.pixel_type); + bitmap_conv = GP_ContextConvertAlloc(bitmap_raw, + win->context->pixel_type); change_bitmap();
- black = GP_ColorToContextPixel(GP_COL_BLACK, &context); - white = GP_ColorToContextPixel(GP_COL_WHITE, &context); + black = GP_ColorToContextPixel(GP_COL_BLACK, win->context); + white = GP_ColorToContextPixel(GP_COL_WHITE, win->context);
- /* Set up the refresh timer */ - timer = SDL_AddTimer(60, timer_callback, NULL); - if (timer == 0) { - fprintf(stderr, "Could not set up timer: %sn", SDL_GetError()); - goto fail; - } - - /* Enter the event loop */ - event_loop(); + for (;;) { + GP_BackendPoll(win); + event_loop(); + + usleep(8000);
- /* We're done */ - SDL_Quit(); - return 0; + if (pause_flag) + continue;
-fail: - SDL_Quit(); - return 1; + redraw_screen(); + } }
diff --git a/tests/SDL/Makefile b/tests/SDL/Makefile index bea9cd3..ce12dcb 100644 --- a/tests/SDL/Makefile +++ b/tests/SDL/Makefile @@ -7,7 +7,7 @@ LDLIBS+=-lGP -L$(TOPDIR)/build/ -lGP_SDL -lSDL ifeq ($(HAVE_LIBSDL),yes) CSOURCES=$(shell echo *.c)
-APPS=textaligntest blittest subcontext+APPS=textaligntest subcontext mixpixeltest endif
diff --git a/tests/SDL/ball.pgm b/tests/SDL/ball.pgm deleted file mode 100644 index 9f9487f..0000000 --- a/tests/SDL/ball.pgm +++ /dev/null @@ -1,10004 +0,0 @@ -P2 -# CREATOR: GIMP PNM Filter Version 1.1 -100 100 -255 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -2 -2 -1 -1 -2 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -3 -4 -6 -6 -8 -8 -9 -9 -9 -9 -8 -8 -7 -6 -5 -4 -3 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -3 -6 -8 -10 -11 -12 -13 -15 -15 -16 -16 -16 -16 -15 -15 -15 -13 -12 -11 -10 -8 -6 -3 -2 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -3 -6 -8 -11 -12 -15 -17 -18 -19 -20 -22 -22 -23 -23 -23 -22 -23 -22 -21 -21 -19 -17 -17 -15 -13 -11 -8 -6 -3 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -4 -6 -9 -12 -15 -17 -20 -22 -23 -25 -26 -28 -28 -29 -29 -30 -30 -30 -29 -29 -28 -27 -26 -25 -23 -22 -20 -17 -14 -12 -10 -6 -4 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -3 -6 -10 -13 -16 -18 -21 -23 -26 -28 -30 -32 -33 -34 -36 -36 -37 -36 -37 -37 -37 -36 -35 -34 -33 -32 -30 -28 -26 -24 -22 -19 -16 -13 -10 -6 -3 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -6 -9 -12 -16 -19 -22 -25 -28 -30 -32 -35 -37 -38 -40 -42 -43 -43 -43 -44 -44 -44 -44 -43 -42 -41 -40 -39 -36 -35 -33 -30 -27 -25 -22 -19 -16 -13 -9 -6 -2 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -3 -7 -12 -15 -19 -23 -25 -29 -31 -34 -37 -39 -41 -43 -45 -46 -48 -49 -50 -50 -51 -51 -51 -51 -50 -49 -48 -47 -45 -43 -42 -39 -37 -34 -32 -29 -26 -23 -19 -15 -11 -7 -4 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -4 -9 -13 -17 -21 -25 -29 -31 -35 -38 -41 -43 -46 -48 -50 -52 -53 -55 -56 -57 -57 -59 -58 -58 -58 -57 -56 -55 -53 -52 -50 -48 -46 -44 -41 -38 -35 -32 -29 -25 -21 -17 -13 -9 -5 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -5 -10 -14 -19 -23 -27 -31 -34 -38 -41 -44 -48 -50 -52 -54 -57 -59 -61 -62 -63 -64 -64 -65 -66 -65 -64 -64 -63 -62 -61 -59 -57 -55 -53 -50 -47 -44 -41 -38 -34 -31 -27 -23 -19 -14 -10 -6 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -2 -7 -11 -16 -20 -24 -29 -33 -37 -41 -44 -47 -51 -54 -57 -59 -62 -63 -66 -67 -69 -70 -71 -72 -72 -72 -72 -71 -71 -70 -69 -68 -66 -64 -62 -59 -57 -54 -51 -47 -44 -40 -36 -33 -29 -25 -20 -15 -11 -7 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -6 -11 -16 -21 -26 -30 -35 -38 -43 -46 -50 -53 -56 -60 -63 -66 -68 -70 -72 -75 -76 -77 -78 -79 -80 -80 -79 -78 -78 -77 -76 -74 -72 -70 -68 -66 -63 -60 -56 -53 -50 -46 -43 -39 -34 -30 -25 -21 -16 -12 -7 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -7 -12 -16 -21 -26 -30 -36 -40 -44 -48 -52 -56 -59 -63 -66 -69 -72 -75 -78 -79 -81 -82 -84 -85 -86 -86 -86 -86 -86 -85 -84 -83 -81 -79 -77 -75 -72 -69 -67 -64 -60 -56 -52 -48 -44 -40 -35 -30 -26 -21 -16 -11 -6 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -6 -11 -16 -21 -27 -31 -36 -40 -45 -50 -54 -58 -62 -65 -70 -73 -76 -78 -81 -84 -86 -88 -90 -91 -92 -92 -93 -93 -93 -93 -92 -91 -89 -88 -86 -84 -81 -79 -76 -72 -70 -65 -62 -58 -54 -50 -46 -41 -36 -31 -26 -22 -16 -11 -6 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -5 -10 -16 -21 -26 -31 -37 -41 -46 -51 -56 -60 -64 -68 -72 -75 -79 -82 -85 -87 -90 -93 -94 -97 -98 -99 -100 -101 -100 -101 -100 -99 -98 -96 -95 -93 -90 -88 -85 -82 -79 -75 -72 -68 -64 -60 -55 -51 -46 -41 -36 -31 -26 -21 -16 -10 -5 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -3 -9 -15 -20 -25 -31 -36 -41 -46 -52 -56 -61 -65 -69 -74 -78 -81 -85 -89 -91 -95 -97 -99 -101 -103 -104 -106 -106 -107 -107 -107 -107 -106 -104 -104 -101 -99 -97 -94 -91 -88 -85 -81 -78 -73 -70 -65 -60 -55 -51 -46 -42 -36 -31 -25 -20 -15 -9 -4 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -8 -14 -18 -24 -30 -36 -41 -46 -52 -57 -61 -66 -71 -75 -80 -83 -87 -91 -95 -98 -100 -103 -106 -108 -110 -112 -113 -114 -114 -114 -114 -114 -113 -112 -110 -108 -106 -104 -101 -98 -94 -92 -87 -84 -80 -75 -71 -66 -61 -56 -51 -46 -41 -35 -29 -24 -18 -13 -8 -2 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -5 -11 -17 -22 -29 -34 -40 -46 -51 -56 -61 -66 -71 -75 -80 -84 -89 -93 -97 -101 -104 -107 -110 -113 -115 -117 -119 -120 -121 -121 -121 -121 -121 -120 -118 -117 -115 -112 -110 -108 -104 -100 -97 -93 -89 -85 -81 -76 -71 -66 -61 -56 -51 -45 -40 -35 -28 -23 -17 -11 -6 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -3 -9 -15 -21 -27 -33 -39 -44 -50 -55 -60 -66 -71 -77 -81 -85 -90 -95 -99 -103 -107 -110 -113 -116 -119 -122 -124 -126 -127 -128 -128 -129 -128 -128 -127 -126 -123 -122 -119 -116 -114 -110 -107 -103 -99 -95 -90 -86 -81 -76 -71 -65 -61 -55 -49 -44 -39 -33 -26 -21 -15 -9 -3 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -7 -13 -19 -25 -31 -37 -42 -48 -54 -60 -65 -70 -75 -81 -86 -91 -96 -100 -104 -108 -112 -116 -120 -122 -126 -128 -130 -132 -133 -134 -135 -135 -136 -134 -133 -132 -131 -129 -125 -123 -120 -116 -112 -109 -105 -100 -95 -91 -86 -81 -75 -70 -65 -60 -53 -48 -42 -37 -30 -25 -19 -13 -6 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -3 -10 -16 -22 -28 -34 -40 -46 -52 -58 -64 -69 -75 -80 -85 -91 -96 -101 -106 -110 -115 -119 -122 -126 -130 -132 -135 -137 -139 -141 -141 -142 -143 -142 -142 -140 -140 -137 -135 -132 -130 -126 -122 -119 -115 -110 -106 -100 -96 -91 -86 -81 -75 -69 -64 -58 -52 -46 -40 -34 -28 -23 -16 -10 -4 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -7 -13 -19 -25 -31 -38 -44 -50 -56 -62 -68 -73 -79 -85 -91 -96 -101 -106 -111 -116 -119 -124 -129 -132 -136 -139 -141 -144 -146 -148 -148 -149 -150 -149 -148 -148 -146 -144 -141 -139 -135 -132 -128 -125 -120 -115 -111 -106 -101 -96 -90 -85 -79 -73 -68 -62 -56 -50 -44 -37 -32 -26 -20 -13 -7 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -3 -9 -16 -22 -29 -35 -41 -47 -53 -60 -66 -72 -78 -83 -90 -95 -100 -105 -111 -116 -121 -125 -130 -134 -138 -141 -144 -148 -150 -152 -154 -156 -156 -157 -156 -156 -154 -152 -151 -148 -145 -142 -138 -134 -130 -125 -120 -115 -111 -105 -100 -95 -89 -84 -78 -71 -66 -60 -54 -47 -41 -35 -29 -22 -16 -10 -3 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -6 -12 -19 -25 -31 -38 -44 -51 -56 -63 -70 -75 -82 -88 -94 -99 -105 -110 -116 -120 -125 -130 -135 -140 -144 -147 -151 -154 -157 -159 -161 -163 -163 -164 -164 -162 -161 -160 -157 -154 -151 -148 -144 -140 -135 -131 -126 -121 -116 -110 -105 -99 -93 -88 -81 -76 -69 -63 -57 -51 -44 -38 -32 -25 -19 -12 -6 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -8 -14 -21 -27 -35 -40 -47 -54 -60 -67 -73 -78 -85 -91 -97 -103 -109 -114 -120 -125 -131 -136 -141 -145 -149 -153 -157 -161 -164 -166 -168 -170 -171 -170 -170 -169 -168 -166 -164 -161 -158 -154 -150 -145 -140 -135 -131 -126 -120 -115 -109 -103 -97 -91 -85 -79 -72 -66 -60 -54 -47 -40 -35 -28 -21 -15 -8 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -3 -11 -17 -23 -30 -37 -44 -50 -57 -63 -69 -76 -82 -89 -95 -100 -106 -113 -118 -125 -130 -135 -141 -146 -150 -155 -159 -163 -167 -170 -173 -175 -177 -177 -178 -177 -177 -175 -172 -170 -167 -163 -159 -155 -151 -145 -141 -135 -130 -124 -119 -112 -107 -101 -95 -88 -82 -75 -69 -63 -57 -50 -44 -37 -31 -24 -17 -10 -4 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -6 -12 -20 -26 -33 -39 -46 -53 -59 -66 -72 -79 -85 -91 -97 -104 -110 -116 -122 -128 -134 -140 -145 -150 -155 -160 -164 -169 -173 -176 -180 -182 -184 -184 -185 -184 -183 -181 -179 -177 -173 -169 -165 -160 -155 -150 -145 -139 -134 -129 -123 -116 -110 -104 -98 -91 -85 -79 -72 -66 -60 -53 -46 -40 -32 -26 -19 -13 -6 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -7 -15 -21 -28 -35 -41 -48 -55 -61 -68 -75 -82 -88 -95 -100 -108 -114 -120 -126 -132 -138 -144 -150 -155 -161 -166 -170 -175 -179 -182 -186 -188 -190 -191 -191 -191 -190 -189 -186 -183 -179 -175 -170 -165 -160 -155 -149 -144 -138 -132 -126 -119 -114 -107 -100 -94 -88 -81 -75 -69 -61 -55 -48 -42 -35 -28 -21 -15 -8 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -2 -10 -17 -23 -30 -36 -43 -50 -57 -64 -71 -77 -83 -90 -98 -104 -110 -116 -123 -129 -136 -142 -147 -153 -160 -165 -171 -175 -180 -185 -189 -192 -195 -197 -199 -199 -199 -197 -195 -192 -189 -185 -180 -176 -171 -165 -159 -153 -148 -141 -135 -129 -123 -117 -110 -103 -97 -91 -84 -77 -70 -64 -57 -50 -44 -37 -30 -23 -17 -9 -2 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -4 -11 -18 -25 -32 -39 -45 -53 -59 -66 -73 -79 -86 -93 -100 -106 -112 -119 -126 -132 -138 -145 -151 -158 -164 -169 -175 -181 -186 -191 -195 -199 -201 -204 -205 -206 -205 -204 -201 -199 -194 -190 -185 -180 -175 -169 -163 -157 -151 -145 -139 -132 -126 -119 -113 -106 -99 -93 -86 -79 -73 -65 -59 -52 -45 -38 -31 -25 -18 -11 -4 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -5 -13 -20 -26 -33 -40 -47 -54 -60 -67 -74 -81 -87 -95 -102 -108 -115 -121 -128 -134 -142 -148 -155 -161 -167 -173 -179 -184 -190 -196 -200 -204 -207 -210 -212 -213 -212 -210 -208 -204 -200 -195 -190 -184 -179 -173 -167 -161 -155 -148 -141 -134 -128 -122 -115 -108 -101 -94 -88 -82 -74 -67 -60 -54 -47 -40 -33 -26 -19 -12 -5 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -7 -13 -20 -28 -34 -41 -49 -55 -61 -69 -76 -83 -90 -97 -103 -110 -117 -124 -131 -137 -144 -150 -157 -164 -170 -176 -182 -189 -194 -200 -205 -210 -214 -217 -219 -220 -219 -217 -214 -210 -205 -200 -194 -188 -183 -176 -170 -164 -157 -150 -144 -137 -130 -124 -117 -110 -103 -96 -90 -83 -75 -69 -62 -55 -49 -42 -35 -28 -20 -14 -7 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -7 -14 -21 -29 -36 -42 -49 -56 -63 -70 -77 -84 -91 -98 -104 -112 -118 -125 -132 -139 -146 -153 -159 -166 -173 -179 -185 -192 -198 -205 -210 -215 -220 -224 -226 -227 -226 -223 -220 -216 -210 -204 -198 -192 -186 -179 -172 -166 -159 -153 -146 -139 -132 -125 -119 -111 -105 -98 -91 -84 -77 -70 -63 -56 -49 -42 -35 -28 -22 -14 -7 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -8 -15 -22 -29 -36 -43 -50 -57 -64 -71 -78 -85 -92 -99 -106 -113 -120 -126 -133 -141 -148 -154 -161 -168 -175 -182 -188 -195 -201 -208 -214 -220 -225 -230 -232 -234 -233 -230 -225 -220 -214 -208 -202 -195 -189 -182 -175 -169 -161 -154 -147 -141 -134 -126 -120 -113 -105 -99 -92 -85 -78 -71 -64 -57 -50 -43 -36 -29 -22 -15 -8 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -9 -16 -23 -30 -37 -44 -51 -57 -65 -71 -79 -85 -93 -100 -107 -114 -121 -127 -135 -141 -148 -155 -163 -169 -176 -183 -190 -197 -204 -210 -217 -223 -230 -235 -239 -241 -240 -235 -230 -223 -217 -211 -204 -197 -191 -184 -176 -169 -162 -156 -149 -142 -135 -127 -120 -114 -107 -99 -92 -85 -79 -72 -65 -57 -50 -44 -36 -30 -23 -16 -8 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -2 -9 -16 -23 -30 -37 -44 -51 -58 -65 -73 -79 -86 -93 -100 -108 -114 -121 -128 -135 -143 -149 -157 -164 -171 -177 -184 -191 -198 -205 -212 -219 -226 -233 -239 -245 -248 -245 -239 -233 -226 -219 -212 -205 -198 -192 -184 -178 -170 -163 -157 -149 -143 -135 -128 -122 -114 -107 -100 -93 -86 -79 -72 -65 -58 -51 -44 -37 -30 -23 -15 -9 -2 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -2 -9 -16 -23 -30 -37 -44 -51 -58 -65 -72 -79 -86 -93 -101 -107 -115 -121 -129 -135 -143 -149 -157 -163 -170 -178 -184 -192 -199 -206 -213 -219 -227 -234 -241 -248 -255 -248 -241 -234 -226 -220 -213 -206 -198 -192 -184 -178 -171 -163 -157 -149 -143 -135 -129 -122 -115 -108 -101 -93 -86 -79 -72 -66 -59 -51 -44 -37 -30 -23 -16 -9 -2 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -2 -9 -16 -23 -29 -36 -44 -51 -58 -65 -72 -79 -87 -93 -100 -107 -114 -121 -128 -135 -142 -150 -156 -164 -170 -177 -184 -191 -199 -205 -213 -220 -226 -233 -240 -245 -248 -245 -239 -233 -226 -219 -212 -205 -198 -192 -185 -177 -170 -163 -157 -150 -142 -136 -129 -121 -114 -107 -100 -93 -86 -80 -73 -65 -58 -51 -44 -37 -30 -23 -16 -9 -2 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -2 -8 -16 -22 -30 -37 -43 -51 -57 -64 -72 -79 -86 -92 -100 -106 -114 -121 -128 -135 -142 -149 -156 -163 -169 -176 -183 -190 -197 -204 -210 -217 -223 -229 -235 -240 -241 -239 -235 -230 -223 -217 -211 -204 -197 -190 -183 -176 -169 -162 -156 -149 -142 -135 -128 -121 -114 -106 -100 -93 -86 -78 -72 -65 -58 -50 -44 -37 -29 -23 -16 -8 -2 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -8 -15 -22 -29 -36 -43 -50 -57 -64 -71 -78 -85 -92 -99 -106 -113 -120 -126 -134 -141 -148 -154 -161 -168 -174 -181 -189 -195 -201 -208 -214 -220 -226 -230 -233 -234 -232 -229 -225 -220 -214 -208 -201 -195 -189 -182 -175 -168 -161 -155 -147 -140 -134 -127 -120 -113 -106 -98 -92 -85 -78 -71 -64 -57 -50 -43 -36 -29 -22 -15 -8 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -8 -14 -21 -29 -36 -42 -50 -56 -64 -70 -77 -84 -91 -98 -105 -111 -119 -125 -132 -139 -146 -153 -159 -166 -173 -180 -185 -192 -198 -204 -210 -216 -220 -223 -226 -227 -226 -224 -220 -215 -210 -204 -199 -192 -186 -179 -173 -166 -159 -153 -146 -139 -132 -126 -119 -111 -105 -98 -91 -84 -77 -70 -63 -56 -50 -42 -36 -29 -21 -15 -7 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -6 -13 -21 -27 -34 -41 -48 -55 -62 -69 -75 -82 -90 -97 -103 -110 -117 -123 -131 -137 -143 -151 -158 -163 -170 -176 -183 -189 -194 -200 -206 -210 -214 -217 -219 -219 -219 -217 -214 -210 -205 -200 -195 -189 -183 -176 -170 -164 -157 -151 -144 -138 -131 -124 -117 -110 -103 -97 -90 -82 -75 -69 -62 -55 -48 -41 -35 -27 -21 -13 -6 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -5 -12 -20 -26 -33 -40 -47 -54 -61 -68 -74 -81 -88 -95 -102 -109 -115 -122 -128 -135 -141 -148 -154 -161 -167 -173 -179 -184 -190 -195 -200 -205 -208 -211 -212 -213 -212 -211 -208 -204 -200 -196 -190 -184 -179 -173 -167 -161 -154 -148 -142 -135 -128 -121 -115 -108 -101 -95 -87 -81 -74 -68 -61 -53 -47 -39 -33 -26 -20 -13 -5 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -4 -11 -18 -25 -31 -39 -45 -53 -58 -66 -72 -79 -86 -93 -99 -106 -113 -120 -125 -132 -139 -145 -151 -157 -163 -169 -175 -181 -185 -190 -194 -198 -202 -204 -205 -206 -205 -204 -201 -199 -194 -190 -186 -180 -175 -170 -163 -158 -151 -145 -139 -132 -126 -119 -113 -106 -100 -93 -86 -80 -73 -65 -59 -52 -45 -39 -31 -25 -18 -11 -4 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -3 -10 -17 -23 -30 -37 -44 -50 -57 -64 -70 -77 -83 -90 -97 -103 -110 -116 -123 -129 -135 -142 -147 -154 -160 -165 -170 -176 -180 -185 -189 -192 -195 -197 -199 -199 -198 -197 -195 -192 -189 -185 -180 -175 -170 -165 -159 -154 -148 -142 -135 -129 -123 -116 -110 -103 -97 -90 -84 -77 -70 -64 -57 -50 -44 -36 -30 -23 -16 -9 -3 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -8 -15 -22 -29 -35 -42 -48 -55 -61 -69 -75 -81 -88 -95 -101 -107 -114 -119 -126 -132 -138 -144 -149 -155 -160 -165 -170 -175 -179 -183 -186 -188 -190 -191 -192 -191 -190 -189 -186 -182 -179 -175 -170 -166 -160 -155 -149 -144 -138 -132 -126 -119 -113 -108 -101 -95 -88 -81 -75 -68 -62 -55 -48 -41 -35 -29 -21 -15 -7 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -6 -13 -20 -26 -32 -39 -46 -52 -60 -65 -73 -79 -85 -92 -97 -104 -111 -117 -122 -128 -134 -140 -145 -151 -156 -160 -165 -169 -173 -177 -179 -182 -183 -184 -185 -184 -183 -182 -179 -176 -173 -169 -165 -161 -156 -150 -146 -140 -134 -128 -122 -117 -111 -104 -98 -91 -86 -79 -72 -66 -59 -52 -46 -39 -32 -26 -19 -12 -6 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -3 -10 -18 -24 -30 -36 -44 -50 -57 -63 -69 -76 -82 -88 -95 -101 -107 -113 -119 -125 -129 -135 -140 -146 -150 -155 -159 -163 -167 -170 -173 -174 -177 -178 -177 -177 -176 -175 -173 -170 -167 -163 -159 -155 -151 -146 -141 -136 -130 -124 -118 -112 -107 -100 -95 -88 -82 -76 -70 -63 -57 -50 -44 -37 -31 -24 -17 -11 -4 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -2 -8 -15 -21 -28 -34 -41 -47 -54 -60 -67 -73 -79 -85 -91 -97 -103 -108 -115 -120 -125 -131 -136 -141 -146 -150 -154 -158 -161 -163 -166 -169 -169 -170 -171 -170 -169 -168 -166 -164 -161 -158 -153 -150 -145 -141 -136 -131 -125 -120 -114 -109 -102 -97 -91 -85 -78 -72 -66 -60 -54 -47 -40 -35 -28 -21 -14 -8 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -5 -13 -18 -25 -32 -38 -45 -51 -57 -63 -69 -75 -81 -88 -93 -99 -104 -110 -115 -121 -126 -130 -135 -140 -144 -148 -151 -154 -157 -159 -161 -163 -163 -164 -163 -162 -161 -160 -157 -155 -151 -147 -143 -139 -135 -131 -126 -120 -115 -110 -104 -99 -93 -87 -82 -76 -69 -63 -57 -51 -45 -38 -32 -25 -18 -12 -5 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -3 -9 -16 -22 -29 -35 -41 -47 -53 -60 -66 -72 -78 -83 -89 -95 -100 -105 -111 -116 -121 -126 -130 -134 -138 -142 -145 -147 -151 -152 -154 -156 -156 -156 -157 -156 -154 -153 -151 -148 -145 -141 -138 -134 -130 -125 -121 -116 -111 -105 -100 -95 -89 -83 -78 -72 -65 -60 -53 -48 -41 -35 -29 -23 -15 -9 -3 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -7 -13 -19 -25 -32 -38 -44 -50 -57 -62 -68 -73 -79 -85 -91 -96 -100 -105 -111 -115 -120 -124 -128 -132 -135 -138 -142 -143 -146 -147 -149 -150 -149 -150 -149 -148 -146 -144 -141 -139 -136 -133 -128 -124 -120 -115 -111 -106 -100 -95 -90 -85 -79 -74 -68 -62 -56 -50 -44 -38 -32 -25 -19 -12 -6 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -3 -10 -16 -22 -29 -35 -41 -47 -52 -58 -63 -70 -75 -80 -85 -91 -96 -101 -106 -110 -115 -119 -123 -126 -129 -132 -135 -137 -139 -140 -142 -142 -143 -142 -142 -141 -139 -137 -135 -133 -129 -126 -123 -118 -114 -110 -105 -101 -96 -91 -85 -81 -75 -70 -64 -58 -52 -46 -40 -34 -29 -22 -16 -10 -3 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -6 -13 -18 -24 -31 -36 -42 -48 -54 -59 -65 -70 -76 -81 -86 -91 -96 -100 -105 -109 -113 -116 -120 -123 -126 -128 -130 -132 -134 -134 -135 -136 -135 -135 -133 -132 -130 -128 -126 -123 -119 -116 -113 -109 -105 -100 -95 -91 -86 -81 -76 -70 -65 -60 -54 -49 -43 -36 -31 -25 -19 -12 -7 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -3 -9 -15 -21 -27 -33 -39 -44 -50 -55 -60 -66 -71 -76 -81 -85 -90 -94 -99 -103 -107 -110 -113 -116 -119 -122 -124 -125 -127 -128 -128 -129 -128 -128 -127 -126 -124 -122 -119 -116 -113 -110 -106 -103 -99 -95 -91 -86 -81 -76 -71 -66 -61 -56 -50 -44 -39 -32 -27 -21 -15 -9 -3 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -5 -11 -17 -22 -29 -34 -40 -46 -51 -56 -61 -66 -71 -76 -81 -85 -89 -93 -97 -101 -104 -107 -110 -113 -114 -117 -118 -120 -121 -121 -122 -121 -121 -120 -119 -117 -115 -113 -110 -107 -105 -100 -97 -94 -89 -85 -80 -76 -71 -66 -61 -56 -50 -46 -40 -34 -29 -23 -17 -11 -5 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -7 -13 -19 -24 -30 -35 -41 -46 -51 -56 -61 -66 -71 -75 -79 -83 -87 -91 -94 -98 -101 -104 -106 -108 -110 -112 -113 -114 -114 -114 -114 -114 -113 -111 -110 -108 -106 -104 -101 -98 -95 -92 -87 -83 -79 -75 -71 -66 -61 -56 -52 -46 -41 -36 -30 -24 -18 -13 -7 -2 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -4 -9 -15 -20 -25 -31 -36 -41 -46 -51 -56 -61 -65 -69 -73 -78 -81 -85 -88 -91 -94 -97 -100 -101 -103 -104 -106 -106 -107 -108 -107 -106 -106 -105 -103 -101 -100 -97 -94 -91 -88 -84 -82 -77 -74 -69 -65 -61 -56 -51 -46 -41 -36 -30 -25 -20 -15 -9 -3 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -4 -10 -16 -21 -26 -31 -37 -41 -46 -50 -55 -59 -64 -68 -72 -75 -79 -82 -85 -88 -91 -93 -95 -97 -98 -99 -100 -100 -100 -100 -100 -99 -98 -96 -94 -93 -91 -88 -85 -82 -79 -75 -71 -68 -64 -59 -56 -50 -46 -41 -36 -31 -26 -21 -15 -10 -4 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -6 -11 -16 -21 -26 -31 -36 -41 -45 -50 -54 -58 -62 -66 -70 -72 -75 -79 -81 -84 -86 -88 -90 -91 -92 -93 -93 -93 -93 -93 -91 -91 -90 -88 -85 -84 -81 -78 -75 -72 -70 -66 -62 -58 -54 -50 -46 -41 -36 -31 -26 -21 -16 -11 -6 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -6 -11 -17 -22 -27 -31 -36 -39 -44 -49 -53 -56 -59 -63 -66 -69 -72 -75 -77 -79 -81 -82 -84 -85 -86 -86 -86 -86 -86 -84 -84 -83 -81 -79 -77 -74 -72 -70 -66 -63 -59 -56 -52 -48 -45 -40 -35 -31 -26 -21 -16 -11 -6 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -2 -6 -12 -16 -21 -26 -30 -34 -38 -42 -46 -50 -54 -57 -60 -63 -65 -68 -70 -73 -75 -76 -77 -78 -79 -80 -79 -79 -78 -78 -77 -76 -74 -72 -70 -68 -66 -63 -60 -57 -54 -50 -46 -43 -38 -34 -30 -26 -21 -16 -11 -6 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -6 -11 -16 -20 -24 -28 -33 -37 -41 -44 -48 -51 -54 -56 -59 -61 -63 -66 -67 -68 -70 -71 -71 -72 -72 -72 -71 -71 -70 -69 -67 -66 -64 -62 -59 -57 -54 -51 -47 -44 -41 -37 -33 -29 -24 -20 -15 -11 -6 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -5 -10 -15 -19 -23 -27 -31 -35 -38 -41 -45 -47 -51 -52 -55 -57 -59 -61 -62 -63 -64 -64 -65 -65 -65 -64 -64 -63 -62 -60 -58 -57 -55 -53 -51 -47 -44 -41 -38 -34 -31 -27 -23 -19 -14 -10 -5 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -5 -9 -13 -17 -21 -25 -29 -32 -35 -38 -41 -44 -46 -48 -50 -52 -53 -55 -56 -58 -58 -58 -58 -58 -58 -57 -56 -55 -54 -52 -50 -48 -46 -44 -41 -38 -35 -31 -29 -25 -21 -17 -13 -9 -4 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -4 -8 -12 -15 -18 -22 -25 -28 -32 -35 -37 -40 -41 -44 -46 -47 -48 -49 -50 -51 -51 -51 -51 -51 -50 -49 -48 -47 -45 -43 -41 -39 -37 -34 -32 -29 -25 -22 -19 -15 -11 -7 -4 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -5 -9 -12 -16 -20 -22 -25 -28 -30 -33 -35 -37 -39 -40 -41 -42 -43 -44 -44 -45 -44 -44 -43 -43 -41 -40 -38 -36 -35 -32 -30 -28 -25 -23 -19 -16 -12 -9 -6 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -3 -7 -10 -13 -16 -18 -21 -23 -26 -28 -30 -31 -33 -35 -36 -36 -36 -37 -37 -37 -37 -36 -35 -35 -34 -31 -30 -28 -26 -23 -22 -19 -16 -13 -10 -7 -3 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -4 -6 -10 -12 -15 -17 -19 -21 -24 -25 -26 -28 -28 -29 -30 -30 -30 -30 -29 -29 -28 -28 -26 -25 -23 -22 -19 -17 -15 -12 -10 -6 -3 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -3 -6 -8 -10 -13 -15 -16 -18 -19 -21 -21 -22 -23 -23 -23 -23 -22 -23 -21 -20 -19 -17 -16 -14 -13 -11 -8 -6 -3 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -2 -4 -5 -8 -9 -11 -12 -13 -14 -15 -15 -16 -16 -16 -16 -15 -14 -14 -13 -11 -9 -8 -6 -3 -2 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -2 -4 -5 -7 -7 -8 -9 -9 -9 -9 -8 -8 -7 -7 -6 -4 -2 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -1 -1 -2 -2 -2 -1 -1 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
http://repo.or.cz/w/gfxprim.git/commit/047ce730dcb1c40acf586439be2fc64352e74...
commit 047ce730dcb1c40acf586439be2fc64352e74621 Author: Cyril Hrubis metan@ucw.cz Date: Wed Nov 21 23:33:27 2012 +0100
backends: Add GP_BackendUpdateXYWH().
diff --git a/include/backends/GP_Backend.h b/include/backends/GP_Backend.h index 159892d..64b504d 100644 --- a/include/backends/GP_Backend.h +++ b/include/backends/GP_Backend.h @@ -139,9 +139,23 @@ static inline void GP_BackendFlip(GP_Backend *backend) /* * Calls backend->UpdateRect(). */ -void GP_BackendUpdateRect(GP_Backend *backend, - GP_Coord x0, GP_Coord y0, - GP_Coord x1, GP_Coord y1); +void GP_BackendUpdateRectXYXY(GP_Backend *backend, + GP_Coord x0, GP_Coord y0, + GP_Coord x1, GP_Coord y1); + +static inline void GP_BackendUpdateRect(GP_Backend *backend, + GP_Coord x0, GP_Coord y0, + GP_Coord x1, GP_Coord y1) +{ + return GP_BackendUpdateRectXYXY(backend, x0, y0, x1, y1); +} + +static inline void GP_BackendUpdateRectXYWH(GP_Backend *backend, + GP_Coord x, GP_Coord y, + GP_Size w, GP_Size h) +{ + GP_BackendUpdateRectXYXY(backend, x, y, x + w, y + h); +}
/* * Calls backend->Exit(). diff --git a/libs/backends/GP_Backend.c b/libs/backends/GP_Backend.c index 88b52a3..036fd56 100644 --- a/libs/backends/GP_Backend.c +++ b/libs/backends/GP_Backend.c @@ -25,16 +25,16 @@
#include "backends/GP_Backend.h"
-void GP_BackendUpdateRect(GP_Backend *backend, - GP_Coord x0, GP_Coord y0, - GP_Coord x1, GP_Coord y1) +void GP_BackendUpdateRectXYXY(GP_Backend *backend, + GP_Coord x0, GP_Coord y0, + GP_Coord x1, GP_Coord y1) { GP_TRANSFORM_POINT(backend->context, x0, y0); GP_TRANSFORM_POINT(backend->context, x1, y1);
if (x1 < x0) GP_SWAP(x0, x1); - + if (y1 < y0) GP_SWAP(y0, y1);
http://repo.or.cz/w/gfxprim.git/commit/0ddba05bdb8c901c75b4797e9d281ce1d6307...
commit 0ddba05bdb8c901c75b4797e9d281ce1d6307e5e Author: Cyril Hrubis metan@ucw.cz Date: Wed Nov 21 20:55:17 2012 +0100
tests: SDL: Remove aatest.c.
diff --git a/tests/SDL/Makefile b/tests/SDL/Makefile index 1a27121..bea9cd3 100644 --- a/tests/SDL/Makefile +++ b/tests/SDL/Makefile @@ -8,7 +8,7 @@ ifeq ($(HAVE_LIBSDL),yes) CSOURCES=$(shell echo *.c)
APPS=textaligntest blittest subcontext- aatest mixpixeltest + mixpixeltest endif
include $(TOPDIR)/app.mk diff --git a/tests/SDL/aatest.c b/tests/SDL/aatest.c deleted file mode 100644 index 6eba9a6..0000000 --- a/tests/SDL/aatest.c +++ /dev/null @@ -1,168 +0,0 @@ -/***************************************************************************** - * This file is part of gfxprim library. * - * * - * Gfxprim is free software; you can redistribute it and/or * - * modify it under the terms of the GNU Lesser General Public * - * License as published by the Free Software Foundation; either * - * version 2.1 of the License, or (at your option) any later version. * - * * - * Gfxprim 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 * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with gfxprim; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, * - * Boston, MA 02110-1301 USA * - * * - * Copyright (C) 2009-2010 Jiri "BlueBear" Dluhos * - * jiri.bluebear.dluhos@gmail.com * - * * - * Copyright (C) 2009-2012 Cyril Hrubis metan@ucw.cz * - * * - *****************************************************************************/ - -#include <stdio.h> -#include <stdlib.h> -#include <SDL/SDL.h> - -#include "GP.h" -#include "GP_SDL.h" - -SDL_Surface *display = NULL; -GP_Context context; - -static GP_Coord x = 10 * GP_FP_1 + GP_FP_1_2; -static GP_Coord y = 10 * GP_FP_1 + GP_FP_1_2; - -SDL_UserEvent timer_event; - -GP_Pixel red_pixel, green_pixel, blue_pixel, white_pixel; - -static void draw(void) -{ - GP_Context *ctx = &context; - - GP_Fill(ctx, white_pixel); - - GP_Coord i; - - for (i = 0; i < 24; i++) { - // GP_FillRect(ctx, (x>>8), (y + (10*i<<8) - 128)>>8, - // (x>>8) + 60, (y + ((10*i)<<8) + 64*i + 64 + 128)>>8, green_pixel); - - GP_FillRect_AA(ctx, x, y + ((10*i)<<8), - x + (60<<8), y + ((10*i)<<8) + 64*i + 64, 0); - - GP_FillRect_AA(ctx, x + (80<<8), y + ((10*i)<<8) + 64, - x + (140<<8), y + ((10*i)<<8) + 64*i + 128, 0); - - GP_FillRect_AA(ctx, x + (160<<8), y + ((10*i)<<8) + 128, - x + (220<<8), y + ((10*i)<<8) + 64*i + 192, 0); - - GP_FillRect_AA(ctx, x + (240<<8), y + ((10*i)<<8) + 192, - x + (300<<8), y + ((10*i)<<8) + 64*i + 256, 0); - printf("%i --------------------------------------------------------n", i); - } - - SDL_Flip(display); -} - -void event_loop(void) -{ - SDL_Event event; - - while (SDL_WaitEvent(&event) > 0) { - switch (event.type) { - case SDL_KEYDOWN: - switch (event.key.keysym.sym) { - case SDLK_DOWN: - y += 64; - draw(); - break; - case SDLK_UP: - y -= 64; - draw(); - break; - case SDLK_LEFT: - x -= 64; - draw(); - break; - case SDLK_RIGHT: - x += 64; - draw(); - break; - case SDLK_x: - context.x_swap = !context.x_swap; - draw(); - break; - case SDLK_y: - context.y_swap = !context.y_swap; - draw(); - break; - case SDLK_r: - context.axes_swap = !context.axes_swap; - draw(); - break; - case SDLK_ESCAPE: - case SDLK_q: - return; - default: - break; - } - break; - case SDL_QUIT: - return; - } - } -} - -int main(int argc, char **argv) -{ - int display_bpp = 0; - - int i; - for (i = 1; i < argc; i++) { - if (strcmp(argv[i], "-16") == 0) { - display_bpp = 16; - } else if (strcmp(argv[i], "-24") == 0) { - display_bpp = 24; - } - } - - if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER) != 0) { - fprintf(stderr, "Could not initialize SDL: %sn", SDL_GetError()); - return 1; - } - - display = SDL_SetVideoMode(320, 320, display_bpp, SDL_SWSURFACE); - if (display == NULL) { - fprintf(stderr, "Could not open display: %sn", SDL_GetError()); - goto fail; - } - - - printf("Display surface properties:n"); - printf(" width: %4d, height: %4d, pitch: %4dn", - display->w, display->h, display->pitch); - printf(" bits per pixel: %2d, bytes per pixel: %2dn", - display->format->BitsPerPixel, display->format->BytesPerPixel); - - GP_SDL_ContextFromSurface(&context, display); - - red_pixel = GP_ColorToContextPixel(GP_COL_RED, &context); - green_pixel = GP_ColorToContextPixel(GP_COL_GREEN, &context); - blue_pixel = GP_ColorToContextPixel(GP_COL_BLUE, &context); - white_pixel = GP_ColorToContextPixel(GP_COL_WHITE, &context); - - draw(); - - event_loop(); - SDL_Quit(); - return 0; - -fail: - SDL_Quit(); - return 1; -}
-----------------------------------------------------------------------
Summary of changes: demos/c_simple/Makefile | 2 +- {tests/SDL => demos/c_simple}/ball.ppm | Bin 30054 -> 30054 bytes {tests/SDL => demos/c_simple}/blittest.c | 195 +- include/backends/GP_Backend.h | 20 +- libs/backends/GP_Backend.c | 8 +- tests/SDL/Makefile | 4 +- tests/SDL/aatest.c | 168 - tests/SDL/ball.pgm |10004 ------------------------------ 8 files changed, 95 insertions(+), 10306 deletions(-) rename {tests/SDL => demos/c_simple}/ball.ppm (100%) rename {tests/SDL => demos/c_simple}/blittest.c (51%) delete mode 100644 tests/SDL/aatest.c delete mode 100644 tests/SDL/ball.pgm
repo.or.cz automatic notification. Contact project admin jiri.bluebear.dluhos@gmail.com if you want to unsubscribe, or site admin admin@repo.or.cz if you receive no reply.