summaryrefslogtreecommitdiff
path: root/gdk-pixbuf
diff options
context:
space:
mode:
authorMatthias Clasen <matthiasc@src.gnome.org>2002-03-13 18:11:15 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2002-03-13 18:11:15 +0000
commit5ebe8faab2c02715bbc13412206aa00c1772b16c (patch)
tree22b3c42acb7d144eb63b5978778a1d9a6a07a5dd /gdk-pixbuf
parent166894bd8b77d45ace190a1b9ee1470f764b7beb (diff)
downloadgtk+-5ebe8faab2c02715bbc13412206aa00c1772b16c.tar.gz
Add valid_ras_test and invalid_bmp_1.
* test-images.h: Add valid_ras_test and invalid_bmp_1. * test-loaders.c (main): Add random tests for ras and pnm and an invalid bmp which was a crasher until my 2002-03-12 commit. * io-pnm.c (gdk_pixbuf__pnm_image_load_increment): Don't unref the pixbuf on errors. * io-ras.c: Handle some errors.
Diffstat (limited to 'gdk-pixbuf')
-rw-r--r--gdk-pixbuf/ChangeLog12
-rw-r--r--gdk-pixbuf/io-pnm.c2
-rw-r--r--gdk-pixbuf/io-ras.c88
-rw-r--r--gdk-pixbuf/test-images.h446
-rw-r--r--gdk-pixbuf/test-loaders.c24
5 files changed, 532 insertions, 40 deletions
diff --git a/gdk-pixbuf/ChangeLog b/gdk-pixbuf/ChangeLog
index cc79137ac6..494890123b 100644
--- a/gdk-pixbuf/ChangeLog
+++ b/gdk-pixbuf/ChangeLog
@@ -1,3 +1,15 @@
+2002-03-13 Matthias Clasen <maclas@gmx.de>
+
+ * test-images.h: Add valid_ras_test and invalid_bmp_1.
+
+ * test-loaders.c (main): Add random tests for ras and pnm and an
+ invalid bmp which was a crasher until my 2002-03-12 commit.
+
+ * io-pnm.c (gdk_pixbuf__pnm_image_load_increment): Don't unref the
+ pixbuf on errors.
+
+ * io-ras.c: Handle some errors.
+
2002-03-12 Sven Neumann <sven@gimp.org>
* gdk-pixbuf.c (gdk_pixbuf_fill): use sequential writes instead of
diff --git a/gdk-pixbuf/io-pnm.c b/gdk-pixbuf/io-pnm.c
index bb188eedf2..adf843f33c 100644
--- a/gdk-pixbuf/io-pnm.c
+++ b/gdk-pixbuf/io-pnm.c
@@ -1013,8 +1013,6 @@ gdk_pixbuf__pnm_image_load_increment (gpointer data,
if (retval == PNM_SUSPEND) {
break;
} else if (retval == PNM_FATAL_ERR) {
- if (context->pixbuf)
- g_object_unref (context->pixbuf);
return FALSE;
} else if (retval == PNM_OK) {
/* send updated signal */
diff --git a/gdk-pixbuf/io-ras.c b/gdk-pixbuf/io-ras.c
index ad692428bb..593c89a86c 100644
--- a/gdk-pixbuf/io-ras.c
+++ b/gdk-pixbuf/io-ras.c
@@ -138,8 +138,9 @@ static GdkPixbuf *gdk_pixbuf__ras_image_load(FILE * f, GError **error)
return pb;
}
-static void RAS2State(struct rasterfile *RAS,
- struct ras_progressive_state *State)
+static gboolean RAS2State(struct rasterfile *RAS,
+ struct ras_progressive_state *State,
+ GError **error)
{
State->Header.width = GUINT32_FROM_BE(RAS->width);
State->Header.height = GUINT32_FROM_BE(RAS->height);
@@ -148,47 +149,73 @@ static void RAS2State(struct rasterfile *RAS,
State->Header.maptype = GUINT32_FROM_BE(RAS->maptype);
State->Header.maplength = GUINT32_FROM_BE(RAS->maplength);
- g_assert(State->Header.maplength <= 768); /* Otherwise, we are in trouble */
+ if ((gint)State->Header.width <= 0 ||
+ (gint)State->Header.height <= 0 ||
+ State->Header.maplength > 768) {
+ g_set_error (error,
+ GDK_PIXBUF_ERROR,
+ GDK_PIXBUF_ERROR_CORRUPT_IMAGE,
+ _("RAS image has bogus header data"));
+ return FALSE;
+ }
State->RasType = State->Header.depth; /* This may be less trivial someday */
State->HeaderSize = 32 + State->Header.maplength;
if (State->RasType == 32)
State->LineWidth = State->Header.width * 4;
- if (State->RasType == 24)
+ else if (State->RasType == 24)
State->LineWidth = State->Header.width * 3;
- if (State->RasType == 8)
+ else if (State->RasType == 8)
State->LineWidth = State->Header.width * 1;
- if (State->RasType == 1) {
+ else if (State->RasType == 1) {
State->LineWidth = State->Header.width / 8;
if ((State->Header.width & 7) != 0)
State->LineWidth++;
}
+ else {
+ g_set_error (error,
+ GDK_PIXBUF_ERROR,
+ GDK_PIXBUF_ERROR_CORRUPT_IMAGE,
+ _("RAS image has unknown type"));
+ return FALSE;
+ }
- /* Now padd the line to be a multiple of 16 bits */
+ /* Now pad the line to be a multiple of 16 bits */
if ((State->LineWidth & 1) != 0)
State->LineWidth++;
- if (State->LineBuf == NULL)
- State->LineBuf = g_malloc(State->LineWidth);
+ if (!State->LineBuf) {
+ State->LineBuf = g_try_malloc (State->LineWidth);
- g_assert(State->LineBuf != NULL);
+ if (!State->LineBuf) {
+ g_set_error (error,
+ GDK_PIXBUF_ERROR,
+ GDK_PIXBUF_ERROR_INSUFFICIENT_MEMORY,
+ _("Not enough memory to load RAS image"));
+ return FALSE;
+ }
+ }
- if (State->pixbuf == NULL) {
+ if (!State->pixbuf) {
if (State->RasType == 32)
- State->pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE,
- 8,
- (gint)
- State->Header.width,
- (gint)
- State->Header.
- height);
+ State->pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8,
+ (gint) State->Header.width,
+ (gint) State->Header.height);
else
- State->pixbuf =
- gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8,
- (gint) State->Header.width,
- (gint) State->Header.height);
+ State->pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8,
+ (gint) State->Header.width,
+ (gint) State->Header.height);
+
+ if (!State->pixbuf) {
+ g_set_error (error,
+ GDK_PIXBUF_ERROR,
+ GDK_PIXBUF_ERROR_INSUFFICIENT_MEMORY,
+ _("Not enough memory to load RAS image"));
+ return FALSE;
+ }
+
if (State->prepared_func != NULL)
/* Notify the client that we are ready to go */
(*State->prepared_func) (State->pixbuf,
@@ -197,7 +224,7 @@ static void RAS2State(struct rasterfile *RAS,
}
- if ((State->Header.maplength==0)&&(State->RasType==1)) {
+ if ((State->Header.maplength == 0) && (State->RasType == 1)) {
State->HeaderBuf[32] = 255;
State->HeaderBuf[33] = 0;
State->HeaderBuf[34] = 255;
@@ -206,6 +233,7 @@ static void RAS2State(struct rasterfile *RAS,
State->HeaderBuf[37] = 0;
}
+ return TRUE;
}
/*
@@ -362,6 +390,9 @@ static void OneLine1(struct ras_progressive_state *context)
static void OneLine(struct ras_progressive_state *context)
{
+ context->LineDone = 0;
+ if (context->Lines >= context->Header.height)
+ return;
if (context->RasType == 32)
OneLine32(context);
if (context->RasType == 24)
@@ -372,8 +403,6 @@ static void OneLine(struct ras_progressive_state *context)
OneLine1(context);
context->LineDone = 0;
- if (context->Lines > context->Header.height)
- return;
context->Lines++;
if (context->updated_func != NULL) {
@@ -392,7 +421,7 @@ static void OneLine(struct ras_progressive_state *context)
* buf - new image data
* size - length of new image data
*
- * append image data onto inrecrementally built output image
+ * append image data onto incrementally built output image
*/
static gboolean
gdk_pixbuf__ras_image_load_increment(gpointer data,
@@ -443,8 +472,10 @@ gdk_pixbuf__ras_image_load_increment(gpointer data,
}
if (context->HeaderDone >= 32)
- RAS2State((struct rasterfile *) context->HeaderBuf,
- context);
+ if (!RAS2State((struct rasterfile *) context->HeaderBuf,
+ context, error)) {
+ return FALSE;
+ }
}
@@ -460,3 +491,4 @@ gdk_pixbuf__ras_fill_vtable (GdkPixbufModule *module)
module->stop_load = gdk_pixbuf__ras_image_stop_load;
module->load_increment = gdk_pixbuf__ras_image_load_increment;
}
+
diff --git a/gdk-pixbuf/test-images.h b/gdk-pixbuf/test-images.h
index 7bf9993748..b805b128de 100644
--- a/gdk-pixbuf/test-images.h
+++ b/gdk-pixbuf/test-images.h
@@ -9460,5 +9460,449 @@ static unsigned char const valid_xpm_test[] = {
46, 32, 46, 32, 46, 32, 34, 125, 59, 10
};
-#endif
+static unsigned char const valid_ras_test[] = {
+89, 166, 106, 149, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 24,
+0, 0, 27, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 253, 253, 253, 251, 251, 251,
+250, 250, 250, 249, 249, 249, 248, 248, 248, 248, 248, 248, 248, 248, 248, 249,
+249, 249, 250, 250, 250, 251, 251, 251, 253, 253, 253, 254, 254, 254, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 254, 254, 254, 253, 253, 253, 251, 251, 251, 248, 248, 248, 245, 245, 245,
+243, 243, 243, 241, 241, 241, 239, 239, 239, 239, 239, 239, 239, 239, 239, 240,
+240, 240, 242, 242, 242, 245, 245, 245, 248, 248, 248, 250, 250, 250, 253, 253,
+253, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253,
+253, 251, 251, 251, 248, 248, 248, 244, 244, 244, 240, 240, 240, 235, 235, 235,
+231, 231, 231, 227, 227, 227, 224, 224, 224, 224, 224, 224, 224, 224, 224, 226,
+226, 226, 229, 229, 229, 233, 233, 233, 238, 238, 238, 243, 243, 243, 248, 248,
+248, 251, 251, 251, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 253, 253, 253, 250, 250,
+250, 246, 246, 246, 241, 241, 241, 234, 234, 234, 227, 227, 227, 221, 221, 221,
+215, 215, 215, 209, 209, 209, 206, 206, 206, 204, 204, 204, 205, 205, 205, 207,
+207, 207, 211, 211, 211, 217, 217, 217, 224, 224, 224, 231, 231, 231, 238, 238,
+238, 245, 245, 245, 249, 249, 249, 253, 253, 253, 254, 254, 254, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 253, 250, 250, 250, 245, 245,
+245, 238, 238, 238, 230, 230, 230, 221, 221, 221, 213, 213, 213, 200, 200, 201,
+174, 179, 182, 157, 165, 170, 144, 154, 161, 134, 145, 154, 127, 139, 147, 120,
+131, 140, 122, 132, 141, 134, 141, 147, 160, 164, 167, 204, 205, 206, 225, 225,
+225, 234, 234, 234, 242, 242, 242, 248, 248, 248, 252, 252, 252, 254, 254, 254,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 253, 253, 253, 250, 250, 250, 245, 245, 245, 237, 237,
+237, 228, 228, 228, 218, 218, 218, 200, 201, 203, 170, 177, 182, 155, 166, 174,
+156, 167, 175, 155, 166, 174, 151, 163, 171, 147, 158, 166, 140, 151, 159, 132,
+143, 151, 122, 134, 142, 110, 123, 133, 101, 113, 121, 90, 101, 109, 132, 139,
+144, 203, 204, 205, 231, 231, 231, 241, 241, 241, 248, 248, 248, 252, 252, 252,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 254, 254, 254, 251, 251, 251, 246, 246, 246, 238, 238, 238, 228, 228,
+228, 217, 217, 217, 184, 189, 192, 160, 172, 178, 165, 177, 184, 169, 179, 186,
+171, 180, 187, 169, 179, 186, 165, 177, 184, 159, 171, 178, 153, 164, 172, 143,
+155, 163, 133, 144, 153, 122, 134, 142, 109, 122, 132, 98, 110, 120, 85, 98,
+107, 79, 89, 97, 155, 158, 161, 230, 230, 230, 241, 241, 241, 249, 249, 249,
+253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254,
+254, 254, 252, 252, 252, 247, 247, 247, 240, 240, 240, 230, 230, 230, 218, 218,
+218, 178, 184, 189, 164, 176, 183, 174, 184, 190, 179, 189, 195, 184, 193, 199,
+185, 194, 200, 184, 193, 199, 179, 189, 195, 174, 184, 190, 164, 176, 183, 155,
+166, 174, 143, 155, 163, 132, 143, 151, 118, 130, 139, 104, 117, 127, 92, 104,
+114, 80, 91, 99, 66, 78, 86, 128, 134, 137, 231, 231, 231, 242, 242, 242,
+250, 250, 250, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253,
+253, 253, 250, 250, 250, 243, 243, 243, 234, 234, 234, 222, 222, 222, 178, 184,
+188, 164, 176, 183, 176, 186, 192, 185, 194, 200, 192, 202, 207, 197, 207, 212,
+199, 208, 212, 197, 207, 212, 192, 202, 207, 185, 194, 200, 176, 186, 192, 164,
+176, 183, 153, 164, 172, 143, 153, 161, 127, 139, 147, 111, 124, 134, 98, 110,
+120, 85, 96, 104, 71, 83, 92, 60, 71, 78, 123, 130, 134, 233, 233, 233,
+244, 244, 244, 251, 251, 251, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 252,
+252, 252, 247, 247, 247, 238, 238, 238, 227, 227, 227, 187, 191, 195, 159, 171,
+178, 174, 184, 190, 185, 194, 200, 196, 205, 209, 204, 213, 217, 211, 219, 222,
+213, 221, 224, 211, 219, 222, 204, 213, 217, 196, 205, 209, 185, 194, 200, 174,
+184, 190, 159, 171, 178, 147, 158, 166, 138, 148, 157, 116, 128, 137, 103, 115,
+123, 90, 101, 109, 75, 88, 96, 62, 73, 82, 50, 62, 68, 148, 152, 154,
+237, 237, 237, 247, 247, 247, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 253, 250,
+250, 250, 243, 243, 243, 233, 233, 233, 211, 213, 214, 152, 164, 172, 165, 177,
+184, 179, 189, 195, 192, 202, 207, 204, 213, 217, 215, 223, 225, 224, 230, 232,
+226, 232, 234, 224, 230, 232, 215, 223, 225, 204, 213, 217, 192, 202, 207, 179,
+189, 195, 165, 177, 184, 151, 163, 171, 137, 149, 157, 123, 134, 141, 106, 117,
+126, 92, 104, 114, 79, 90, 98, 65, 77, 85, 52, 64, 70, 46, 56, 61,
+206, 207, 207, 241, 241, 241, 250, 250, 250, 254, 254, 254, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 253, 248,
+248, 248, 240, 240, 240, 228, 228, 228, 171, 177, 182, 155, 166, 174, 169, 179,
+186, 183, 192, 198, 197, 207, 212, 211, 219, 222, 224, 230, 232, 233, 238, 239,
+239, 242, 243, 233, 238, 239, 224, 230, 232, 211, 219, 222, 197, 207, 212, 184,
+193, 199, 169, 179, 186, 155, 166, 174, 140, 151, 159, 124, 136, 144, 117, 128,
+136, 95, 107, 115, 80, 92, 101, 66, 78, 86, 53, 65, 71, 41, 52, 57,
+107, 113, 116, 233, 233, 233, 246, 246, 246, 252, 252, 252, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 251, 251, 251, 245,
+245, 245, 235, 235, 235, 215, 216, 216, 141, 153, 160, 156, 167, 175, 171, 180,
+187, 185, 194, 200, 199, 208, 212, 213, 221, 224, 226, 232, 234, 239, 242, 243,
+251, 251, 251, 239, 242, 243, 226, 232, 234, 213, 221, 224, 199, 208, 212, 185,
+194, 200, 171, 180, 187, 156, 167, 175, 141, 153, 160, 126, 137, 146, 123, 134,
+142, 110, 117, 121, 79, 89, 97, 66, 78, 86, 54, 66, 72, 41, 52, 58,
+27, 38, 42, 206, 207, 207, 239, 239, 239, 249, 249, 249, 254, 254, 254, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 250, 250, 250, 242,
+242, 242, 230, 230, 230, 179, 183, 187, 140, 151, 159, 155, 166, 174, 169, 179,
+186, 184, 193, 199, 197, 207, 212, 211, 219, 222, 224, 230, 232, 233, 238, 239,
+239, 242, 243, 233, 238, 239, 224, 230, 232, 211, 219, 222, 197, 207, 212, 184,
+193, 199, 169, 179, 186, 155, 166, 174, 140, 151, 159, 124, 136, 144, 128, 137,
+143, 92, 94, 95, 90, 91, 91, 34, 40, 44, 43, 53, 58, 32, 40, 44,
+21, 29, 32, 130, 135, 136, 230, 230, 230, 245, 245, 245, 252, 252, 252, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 253, 249, 249, 249, 240,
+240, 240, 226, 226, 226, 152, 160, 165, 137, 149, 157, 151, 163, 171, 164, 176,
+183, 179, 189, 195, 192, 202, 207, 204, 213, 217, 215, 223, 225, 224, 230, 232,
+226, 232, 234, 224, 230, 232, 215, 223, 225, 204, 213, 217, 192, 202, 207, 179,
+189, 195, 165, 177, 184, 151, 163, 171, 137, 149, 157, 122, 134, 142, 125, 134,
+140, 82, 83, 84, 177, 178, 178, 105, 106, 106, 26, 33, 36, 22, 28, 31,
+26, 34, 36, 78, 85, 88, 218, 218, 218, 238, 238, 238, 249, 249, 249, 254,
+254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 253, 247, 247, 247, 237,
+237, 237, 222, 222, 222, 131, 141, 149, 133, 144, 153, 147, 158, 166, 159, 171,
+178, 174, 184, 190, 185, 194, 200, 196, 205, 209, 204, 213, 217, 211, 219, 222,
+213, 221, 224, 211, 219, 222, 204, 213, 217, 196, 205, 209, 185, 194, 200, 174,
+184, 190, 159, 171, 178, 147, 158, 166, 133, 144, 153, 118, 130, 139, 107, 118,
+126, 88, 88, 89, 191, 193, 195, 208, 209, 209, 62, 63, 64, 18, 24, 26,
+46, 53, 55, 33, 41, 43, 202, 202, 202, 229, 229, 229, 245, 245, 245, 253,
+253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 252, 247, 247, 247, 235,
+235, 235, 219, 219, 219, 115, 126, 136, 127, 139, 147, 140, 151, 159, 153, 164,
+172, 164, 176, 183, 176, 186, 192, 185, 194, 200, 192, 202, 207, 197, 207, 212,
+199, 208, 212, 197, 207, 212, 192, 202, 207, 185, 194, 200, 176, 186, 192, 164,
+176, 183, 153, 164, 172, 140, 151, 159, 127, 139, 147, 111, 124, 134, 77, 87,
+95, 65, 66, 67, 142, 145, 147, 224, 224, 224, 139, 140, 140, 35, 37, 39,
+34, 43, 46, 16, 24, 27, 185, 185, 185, 218, 218, 218, 239, 239, 239, 250,
+250, 250, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 252, 246, 246, 246, 234,
+234, 234, 216, 216, 216, 104, 117, 127, 118, 130, 139, 132, 143, 151, 141, 153,
+161, 155, 166, 174, 164, 176, 183, 174, 184, 190, 179, 189, 195, 184, 193, 199,
+185, 194, 200, 184, 193, 199, 179, 189, 195, 174, 184, 190, 164, 176, 183, 155,
+166, 174, 143, 155, 163, 132, 143, 151, 118, 130, 139, 104, 117, 127, 68, 77,
+84, 59, 62, 64, 67, 68, 69, 163, 165, 165, 194, 195, 195, 15, 18, 20,
+16, 24, 26, 17, 24, 27, 166, 166, 166, 205, 205, 205, 232, 232, 232, 247,
+247, 247, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 252, 246, 246, 246, 234,
+234, 234, 215, 215, 215, 100, 112, 122, 109, 122, 132, 122, 134, 142, 121, 131,
+139, 96, 104, 110, 163, 172, 179, 159, 171, 178, 165, 177, 184, 169, 179, 186,
+171, 180, 187, 169, 179, 186, 165, 177, 184, 159, 171, 178, 153, 164, 172, 143,
+155, 163, 133, 144, 153, 122, 134, 142, 109, 122, 132, 98, 110, 120, 76, 88,
+96, 49, 53, 56, 38, 38, 39, 106, 110, 111, 187, 189, 189, 92, 95, 96,
+16, 21, 24, 24, 31, 34, 148, 148, 148, 191, 191, 191, 223, 223, 223, 242,
+242, 242, 251, 251, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 253, 247, 247, 247, 235,
+235, 235, 215, 215, 215, 87, 94, 100, 101, 113, 121, 110, 123, 133, 99, 109,
+115, 56, 60, 63, 100, 105, 108, 147, 158, 166, 151, 163, 171, 155, 166, 174,
+156, 167, 175, 155, 166, 174, 151, 163, 171, 147, 158, 166, 140, 151, 159, 132,
+143, 151, 122, 134, 142, 110, 123, 133, 101, 113, 121, 72, 81, 87, 46, 51,
+55, 79, 84, 87, 81, 86, 88, 46, 48, 49, 65, 71, 74, 138, 140, 141,
+20, 26, 29, 35, 42, 47, 132, 132, 132, 176, 176, 176, 212, 212, 212, 236,
+236, 236, 249, 249, 249, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 253, 248, 248, 248, 236,
+236, 236, 216, 216, 216, 117, 122, 127, 58, 65, 70, 74, 82, 88, 86, 91,
+94, 149, 151, 153, 77, 81, 83, 109, 118, 125, 129, 140, 148, 140, 151, 159,
+141, 153, 160, 140, 151, 159, 137, 149, 157, 133, 144, 153, 127, 139, 147, 118,
+130, 139, 93, 104, 113, 63, 70, 75, 54, 60, 65, 101, 106, 110, 132, 140,
+146, 99, 107, 113, 38, 46, 50, 35, 41, 43, 38, 46, 49, 65, 68, 70,
+91, 93, 94, 44, 50, 53, 118, 118, 118, 163, 163, 163, 202, 202, 202, 230,
+230, 230, 246, 246, 246, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 249, 249, 249, 238,
+238, 238, 219, 219, 219, 166, 169, 171, 171, 177, 181, 74, 79, 82, 56, 57,
+59, 204, 204, 205, 124, 126, 128, 48, 53, 57, 74, 82, 87, 108, 119, 126,
+106, 116, 123, 85, 93, 99, 93, 102, 109, 78, 86, 92, 64, 72, 78, 52,
+58, 63, 46, 51, 56, 83, 88, 92, 140, 145, 149, 110, 118, 124, 88, 97,
+104, 59, 71, 77, 27, 34, 38, 54, 64, 68, 47, 57, 62, 32, 40, 45,
+123, 125, 125, 32, 35, 37, 109, 109, 109, 152, 152, 152, 192, 192, 192, 223,
+223, 223, 242, 242, 242, 251, 251, 251, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 250, 250, 250, 241,
+241, 241, 223, 223, 223, 185, 186, 187, 85, 96, 104, 157, 163, 168, 82, 84,
+86, 210, 210, 210, 193, 194, 194, 18, 19, 20, 31, 33, 34, 31, 35, 37,
+60, 66, 71, 54, 60, 64, 57, 61, 65, 81, 86, 90, 120, 126, 131, 146,
+152, 156, 166, 173, 177, 158, 164, 168, 88, 99, 107, 62, 73, 80, 52, 64,
+70, 43, 54, 61, 29, 38, 42, 37, 45, 48, 62, 72, 79, 52, 64, 70,
+67, 72, 74, 120, 121, 121, 84, 84, 84, 144, 144, 144, 184, 184, 184, 217,
+217, 217, 238, 238, 238, 249, 249, 249, 254, 254, 254, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 252, 244,
+244, 244, 228, 228, 228, 201, 201, 201, 103, 110, 114, 66, 78, 86, 37, 41,
+43, 181, 182, 182, 218, 218, 218, 54, 55, 56, 73, 76, 79, 107, 109, 110,
+160, 164, 168, 180, 185, 189, 172, 178, 183, 171, 177, 181, 157, 163, 167, 101,
+110, 117, 87, 97, 105, 66, 78, 86, 60, 71, 78, 51, 63, 69, 43, 54,
+61, 38, 49, 54, 29, 39, 43, 30, 39, 43, 82, 92, 97, 66, 78, 86,
+53, 60, 64, 118, 118, 118, 51, 51, 51, 140, 140, 140, 178, 178, 178, 211,
+211, 211, 235, 235, 235, 247, 247, 247, 253, 253, 253, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 253, 247,
+247, 247, 233, 233, 233, 208, 208, 208, 159, 160, 161, 57, 69, 75, 26, 30,
+33, 164, 165, 166, 194, 194, 195, 105, 109, 112, 20, 22, 24, 69, 74, 77,
+84, 90, 95, 104, 114, 122, 105, 115, 122, 73, 85, 93, 71, 83, 92, 66,
+78, 86, 62, 73, 80, 55, 67, 73, 48, 60, 66, 42, 53, 59, 38, 49,
+54, 34, 46, 52, 37, 47, 52, 35, 43, 47, 96, 106, 113, 74, 84, 92,
+54, 55, 56, 65, 65, 65, 92, 92, 92, 111, 111, 111, 174, 174, 174, 207,
+207, 207, 231, 231, 231, 246, 246, 246, 253, 253, 253, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 250,
+250, 250, 239, 239, 239, 217, 217, 217, 183, 183, 183, 102, 106, 109, 34, 42,
+46, 93, 95, 96, 146, 146, 147, 100, 103, 106, 20, 22, 24, 35, 42, 46,
+40, 47, 52, 56, 66, 73, 65, 77, 85, 61, 72, 81, 60, 71, 78, 55,
+67, 73, 50, 62, 68, 45, 56, 63, 40, 51, 56, 37, 48, 53, 39, 50,
+55, 44, 55, 62, 52, 63, 69, 57, 64, 69, 93, 103, 110, 52, 58, 61,
+62, 62, 62, 84, 84, 84, 82, 82, 82, 60, 60, 60, 172, 172, 172, 204,
+204, 204, 229, 229, 229, 244, 244, 244, 252, 252, 252, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252,
+252, 252, 244, 244, 244, 226, 226, 226, 195, 195, 195, 153, 153, 153, 68, 74,
+77, 44, 48, 50, 95, 96, 97, 46, 49, 51, 27, 30, 32, 29, 35, 39,
+28, 34, 37, 47, 58, 63, 52, 64, 70, 52, 64, 70, 49, 61, 67, 45,
+56, 63, 43, 54, 61, 41, 52, 57, 41, 52, 57, 42, 54, 60, 51, 63,
+69, 62, 73, 80, 70, 81, 88, 71, 78, 83, 59, 68, 74, 55, 55, 55,
+71, 71, 71, 91, 91, 91, 101, 101, 101, 55, 55, 55, 131, 131, 131, 204,
+204, 204, 228, 228, 228, 243, 243, 243, 251, 251, 251, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254,
+254, 254, 248, 248, 248, 234, 234, 234, 208, 208, 208, 169, 169, 169, 123, 123,
+123, 49, 54, 57, 6, 8, 9, 13, 16, 18, 23, 27, 29, 43, 47, 50,
+26, 33, 36, 40, 50, 55, 48, 60, 66, 47, 59, 65, 46, 57, 64, 47,
+59, 65, 48, 60, 66, 48, 60, 66, 51, 63, 69, 61, 72, 79, 71, 83,
+92, 81, 93, 102, 82, 93, 100, 62, 68, 73, 51, 51, 51, 65, 65, 65,
+81, 81, 81, 100, 100, 100, 122, 122, 122, 75, 75, 75, 56, 56, 56, 187,
+187, 187, 227, 227, 227, 243, 243, 243, 251, 251, 251, 254, 254, 254, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 251, 251, 251, 241, 241, 241, 220, 220, 220, 186, 186, 186, 142, 142,
+142, 98, 98, 98, 14, 16, 17, 9, 11, 13, 18, 23, 25, 44, 48, 50,
+40, 47, 51, 42, 52, 57, 55, 67, 73, 57, 69, 75, 62, 73, 80, 62,
+73, 80, 65, 77, 85, 71, 82, 90, 79, 90, 98, 83, 94, 102, 91, 102,
+110, 93, 104, 112, 51, 58, 63, 50, 50, 50, 62, 62, 62, 76, 76, 76,
+92, 92, 92, 109, 109, 109, 131, 131, 131, 148, 148, 148, 29, 29, 29, 154,
+154, 154, 228, 228, 228, 243, 243, 243, 251, 251, 251, 254, 254, 254, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 253, 253, 253, 246, 246, 246, 230, 230, 230, 202, 202, 202, 163, 163,
+163, 120, 120, 120, 32, 32, 32, 10, 10, 10, 37, 43, 47, 25, 29, 32,
+59, 63, 67, 57, 67, 74, 71, 83, 92, 75, 88, 96, 81, 93, 102, 84,
+95, 103, 90, 101, 109, 92, 104, 114, 98, 110, 120, 98, 110, 120, 58, 67,
+71, 46, 47, 48, 52, 52, 52, 62, 62, 62, 74, 74, 74, 87, 87, 87,
+103, 103, 103, 120, 120, 120, 140, 140, 140, 162, 162, 162, 114, 114, 114, 45,
+45, 45, 230, 230, 230, 244, 244, 244, 251, 251, 251, 254, 254, 254, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 254, 254, 254, 250, 250, 250, 239, 239, 239, 217, 217, 217, 184, 184,
+184, 144, 144, 144, 58, 58, 58, 13, 13, 13, 44, 44, 44, 41, 43, 43,
+40, 43, 47, 71, 79, 83, 79, 91, 99, 97, 108, 118, 100, 111, 120, 100,
+112, 120, 87, 98, 106, 70, 79, 85, 52, 58, 63, 21, 22, 23, 14, 14,
+14, 56, 56, 56, 65, 65, 65, 75, 75, 75, 87, 87, 87, 100, 100, 100,
+114, 114, 114, 131, 131, 131, 149, 149, 149, 170, 170, 170, 191, 191, 191, 63,
+63, 63, 146, 146, 146, 245, 245, 245, 252, 252, 252, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 252, 252, 252, 245, 245, 245, 228, 228, 228, 202, 202,
+202, 168, 168, 168, 94, 94, 94, 15, 15, 15, 55, 55, 55, 64, 64, 64,
+54, 54, 54, 48, 48, 48, 44, 44, 44, 42, 42, 42, 41, 41, 41, 42,
+42, 42, 44, 44, 44, 47, 47, 47, 51, 51, 51, 49, 49, 49, 11, 11,
+11, 68, 68, 68, 79, 79, 79, 88, 88, 88, 99, 99, 99, 112, 112, 112,
+126, 126, 126, 142, 142, 142, 160, 160, 160, 179, 179, 179, 200, 200, 200, 186,
+186, 186, 66, 66, 66, 227, 227, 227, 252, 252, 252, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 254, 254, 254, 249, 249, 249, 238, 238, 238, 217, 217,
+217, 189, 189, 189, 156, 156, 156, 20, 20, 20, 66, 66, 66, 86, 86, 86,
+75, 75, 75, 67, 67, 67, 63, 63, 63, 60, 60, 60, 58, 58, 58, 59,
+59, 59, 60, 60, 60, 62, 62, 62, 66, 66, 66, 72, 72, 72, 20, 20,
+20, 59, 59, 59, 93, 93, 93, 102, 102, 102, 113, 113, 113, 125, 125, 125,
+138, 138, 138, 154, 154, 154, 170, 170, 170, 189, 189, 189, 207, 207, 207, 225,
+225, 225, 93, 93, 93, 153, 153, 153, 253, 253, 253, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 252, 244, 244, 244, 230, 230,
+230, 207, 207, 207, 180, 180, 180, 33, 33, 33, 58, 58, 58, 110, 110, 110,
+97, 97, 97, 88, 88, 88, 82, 82, 82, 79, 79, 79, 77, 77, 77, 76,
+76, 76, 77, 77, 77, 79, 79, 79, 82, 82, 82, 87, 87, 87, 61, 61,
+61, 34, 34, 34, 107, 107, 107, 116, 116, 116, 126, 126, 126, 138, 138, 138,
+151, 151, 151, 166, 166, 166, 181, 181, 181, 198, 198, 198, 215, 215, 215, 231,
+231, 231, 208, 208, 208, 80, 80, 80, 242, 242, 242, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 249, 249, 249, 239, 239,
+239, 223, 223, 223, 200, 200, 200, 72, 72, 72, 47, 47, 47, 134, 134, 134,
+120, 120, 120, 109, 109, 109, 102, 102, 102, 98, 98, 98, 96, 96, 96, 94,
+94, 94, 95, 95, 95, 96, 96, 96, 99, 99, 99, 103, 103, 103, 104, 104,
+104, 32, 32, 32, 108, 108, 108, 131, 131, 131, 140, 140, 140, 151, 151, 151,
+164, 164, 164, 178, 178, 178, 192, 192, 192, 208, 208, 208, 223, 223, 223, 236,
+236, 236, 245, 245, 245, 132, 132, 132, 133, 133, 133, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 252, 246, 246,
+246, 234, 234, 234, 218, 218, 218, 130, 130, 130, 46, 46, 46, 157, 157, 157,
+142, 142, 142, 131, 131, 131, 123, 123, 123, 118, 118, 118, 115, 115, 115, 113,
+113, 113, 113, 113, 113, 114, 114, 114, 116, 116, 116, 119, 119, 119, 124, 124,
+124, 68, 68, 68, 77, 77, 77, 145, 145, 145, 155, 155, 155, 165, 165, 165,
+177, 177, 177, 190, 190, 190, 203, 203, 203, 218, 218, 218, 231, 231, 231, 242,
+242, 242, 249, 249, 249, 238, 238, 238, 95, 95, 95, 246, 246, 246, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 250, 250,
+250, 243, 243, 243, 231, 231, 231, 196, 196, 196, 57, 57, 57, 179, 179, 179,
+165, 165, 165, 153, 153, 153, 144, 144, 144, 138, 138, 138, 134, 134, 134, 131,
+131, 131, 131, 131, 131, 131, 131, 131, 133, 133, 133, 136, 136, 136, 140, 140,
+140, 119, 119, 119, 76, 76, 76, 160, 160, 160, 169, 169, 169, 179, 179, 179,
+190, 190, 190, 202, 202, 202, 215, 215, 215, 227, 227, 227, 238, 238, 238, 246,
+246, 246, 252, 252, 252, 254, 254, 254, 164, 164, 164, 131, 131, 131, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253,
+253, 249, 249, 249, 241, 241, 241, 227, 227, 227, 83, 83, 83, 173, 173, 173,
+186, 186, 186, 174, 174, 174, 165, 165, 165, 158, 158, 158, 153, 153, 153, 150,
+150, 150, 149, 149, 149, 149, 149, 149, 150, 150, 150, 153, 153, 153, 157, 157,
+157, 160, 160, 160, 96, 96, 96, 162, 162, 162, 183, 183, 183, 193, 193, 193,
+203, 203, 203, 214, 214, 214, 225, 225, 225, 236, 236, 236, 244, 244, 244, 250,
+250, 250, 253, 253, 253, 255, 255, 255, 245, 245, 245, 111, 111, 111, 243, 243,
+243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254,
+254, 252, 252, 252, 248, 248, 248, 240, 240, 240, 112, 112, 112, 161, 161, 161,
+206, 206, 206, 195, 195, 195, 185, 185, 185, 178, 178, 178, 173, 173, 173, 169,
+169, 169, 167, 167, 167, 167, 167, 167, 168, 168, 168, 170, 170, 170, 173, 173,
+173, 178, 178, 178, 156, 156, 156, 135, 135, 135, 198, 198, 198, 206, 206, 206,
+216, 216, 216, 225, 225, 225, 235, 235, 235, 243, 243, 243, 249, 249, 249, 252,
+252, 252, 254, 254, 254, 255, 255, 255, 255, 255, 255, 186, 186, 186, 185, 185,
+185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 254, 254, 254, 252, 252, 252, 248, 248, 248, 169, 169, 169, 143, 143, 143,
+223, 223, 223, 214, 214, 214, 205, 205, 205, 198, 198, 198, 192, 192, 192, 188,
+188, 188, 186, 186, 186, 185, 185, 185, 185, 185, 185, 187, 187, 187, 190, 190,
+190, 194, 194, 194, 191, 191, 191, 158, 158, 158, 212, 212, 212, 219, 219, 219,
+228, 228, 228, 236, 236, 236, 243, 243, 243, 248, 248, 248, 252, 252, 252, 254,
+254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, 183,
+183, 236, 236, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 254, 254, 254, 252, 252, 252, 219, 219, 219, 121, 121, 121,
+236, 236, 236, 229, 229, 229, 222, 222, 222, 216, 216, 216, 210, 210, 210, 206,
+206, 206, 204, 204, 204, 203, 203, 203, 203, 203, 203, 204, 204, 204, 206, 206,
+206, 209, 209, 209, 214, 214, 214, 183, 183, 183, 217, 217, 217, 232, 232, 232,
+238, 238, 238, 244, 244, 244, 248, 248, 248, 252, 252, 252, 254, 254, 254, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 235,
+235, 217, 217, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 247, 247, 247, 144, 144, 144,
+246, 246, 246, 241, 241, 241, 236, 236, 236, 231, 231, 231, 226, 226, 226, 223,
+223, 223, 221, 221, 221, 219, 219, 219, 219, 219, 219, 220, 220, 220, 221, 221,
+221, 224, 224, 224, 228, 228, 228, 212, 212, 212, 204, 204, 204, 241, 241, 241,
+246, 246, 246, 249, 249, 249, 252, 252, 252, 254, 254, 254, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 185, 185, 185,
+228, 228, 228, 248, 248, 248, 245, 245, 245, 242, 242, 242, 239, 239, 239, 236,
+236, 236, 235, 235, 235, 233, 233, 233, 233, 233, 233, 234, 234, 234, 235, 235,
+235, 237, 237, 237, 239, 239, 239, 242, 242, 242, 214, 214, 214, 248, 248, 248,
+251, 251, 251, 253, 253, 253, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 227, 227,
+196, 196, 196, 253, 253, 253, 251, 251, 251, 249, 249, 249, 247, 247, 247, 246,
+246, 246, 245, 245, 245, 244, 244, 244, 244, 244, 244, 244, 244, 244, 245, 245,
+245, 246, 246, 246, 248, 248, 248, 249, 249, 249, 246, 246, 246, 248, 248, 248,
+254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+207, 207, 207, 255, 255, 255, 254, 254, 254, 253, 253, 253, 252, 252, 252, 252,
+252, 252, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251,
+251, 252, 252, 252, 252, 252, 252, 253, 253, 253, 254, 254, 254, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+230, 230, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254,
+254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
+254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255
+};
+
+
+static unsigned char const invalid_bmp_1[] = {
+66, 77, 54, 27, 204, 0, 0, 0, 0, 0, 246, 0, 0, 0, 40, 0, 0, 0, 126, 0, 0, 0, 48, 0, 0, 0, 1, 0, 24, 0, 199, 0, 0, 153, 0, 27, 0, 0, 18, 11, 0, 0, 93, 11, 0, 98, 0, 0, 0, 67, 0, 126, 0, 0, 255, 255, 137, 255, 255, 255, 255, 255, 255, 255, 255, 240, 255, 255, 255, 255, 255, 228, 255, 23, 255, 255, 255, 233, 255, 255, 255, 255, 255, 255, 255, 255, 5, 255, 218, 255, 255, 255, 255, 255, 143, 95, 255, 255, 255, 255, 255, 255, 255, 255, 255, 103, 255, 255, 81, 255, 255, 255, 255, 69, 255, 255, 8, 218, 255, 255, 125, 255, 255, 74, 255, 79, 255, 255, 255, 255, 255, 184, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 104, 196, 255, 255, 255, 255, 255, 255, 211, 255, 255, 255, 255, 255, 255, 63, 255, 255, 255, 255, 12, 255, 196, 255, 255, 7, 255, 255, 255, 255, 255, 255, 255, 255, 81, 255, 255, 255, 255, 255, 255, 255, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 136, 255, 48, 255, 200, 255, 255, 255, 36, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 156, 255, 255, 255, 255, 255, 255, 255, 255, 176, 255, 255, 255, 255, 255, 255, 128, 255, 229, 255, 66, 254, 254, 254, 252, 252, 252, 175, 229, 251, 250, 250, 250, 248, 248, 24, 250, 250, 250, 250, 250, 250, 252, 100, 252, 253, 253, 253, 254, 110, 254, 254, 43, 254, 254, 254, 254, 255, 245, 255, 55, 255, 255, 255, 255, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 255, 255, 255, 255, 255, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 74, 255, 255, 76, 255, 113, 196, 255, 123, 255, 255, 164, 255, 210, 255, 255, 222, 255, 255, 255, 255, 255, 254, 102, 254, 249, 249, 249, 129, 244, 171, 240, 240, 240, 125, 232, 232, 225, 225, 44, 220, 220, 220, 174, 24, 23, 222, 222, 222, 221, 221, 221, 222, 222, 222, 194, 221, 221, 226, 113, 226, 229, 229, 229, 231, 231, 137, 234, 234, 234, 220, 56, 138, 235, 235, 235, 239, 239, 194, 206, 64, 254, 243, 243, 243, 247, 247, 247, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 58, 255, 255, 255, 255, 255, 255, 253, 38, 10, 255, 255, 19, 121, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 73, 162, 255, 255, 171, 255, 255, 255, 255, 72, 255, 255, 219, 255, 255, 255, 69, 255, 255, 232, 255, 255, 255, 253, 253, 253, 250, 250, 250, 241, 241, 163, 85, 227, 232, 215, 215, 55, 11, 200, 200, 130, 178, 178, 160, 160, 253, 170, 153, 153, 149, 193, 149, 155, 225, 155, 160, 160, 160, 159, 159, 159, 159, 159, 159, 144, 64, 158, 164, 164, 164, 169, 8, 169, 176, 176, 176, 177, 177, 177, 177, 177, 177, 186, 186, 27, 188, 185, 185, 190, 190, 190, 195, 195, 195, 212, 212, 212, 228, 228, 228, 244, 244, 20, 251, 251, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 255, 255, 255, 105, 255, 255, 255, 255, 255, 255, 255, 255, 18, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 255, 255, 255, 255, 255, 181, 255, 255, 255, 255, 6, 255, 255, 255, 255, 29, 255, 255, 255, 255, 253, 37, 253, 244, 21, 244, 231, 250, 231, 212, 212, 212, 188, 188, 54, 166, 166, 166, 139, 139, 139, 117, 117, 117, 90, 90, 90, 61, 61, 222, 47, 47, 185, 46, 46, 46, 45, 45, 82, 45, 45, 45, 33, 2, 33, 26, 26, 220, 22, 22, 22, 177, 12, 12, 10, 10, 2, 20, 20, 20, 31, 147, 32, 54, 54, 197, 84, 84, 84, 103, 185, 103, 121, 121, 121, 126, 126, 126, 149, 149, 149, 174, 174, 174, 197, 197, 197, 222, 222, 222, 240, 240, 240, 250, 250, 250, 254, 254, 254, 54, 255, 255, 10, 255, 255, 238, 255, 255, 255, 255, 255, 255, 10, 255, 255, 255, 255, 255, 255, 50, 255, 255, 255, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 122, 123, 255, 255, 255, 255, 255, 2, 254, 252, 252, 239, 239, 216, 215, 215, 76, 180, 180, 125, 149, 149, 149, 122, 122, 122, 73, 73, 73, 27, 254, 27, 8, 8, 177, 20, 30, 254, 19, 216, 27, 0, 0, 134, 0, 0, 0, 0, 175, 0, 74, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 207, 0, 0, 0, 215, 0, 0, 203, 0, 0, 0, 0, 0, 69, 138, 1, 1, 1, 13, 13, 13, 45, 77, 150, 84, 84, 84, 114, 114, 114, 115, 136, 136, 163, 126, 77, 159, 194, 150, 217, 100, 217, 236, 236, 236, 252, 252, 252, 255, 255, 255, 255, 255, 255, 114, 255, 255, 251, 251, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 28, 255, 163, 255, 255, 255, 255, 255, 255, 140, 51, 255, 255, 255, 254, 254, 254, 246, 246, 246, 202, 218, 218, 178, 178, 178, 126, 126, 126, 57, 57, 57, 123, 11, 84, 8, 13, 12, 33, 49, 81, 45, 71, 106, 44, 199, 105, 44, 67, 99, 80, 56, 80, 8, 11, 17, 0, 0, 0, 0, 0, 0, 10, 16, 15, 29, 43, 60, 36, 56, 82, 41, 63, 93, 40, 67, 101, 42, 71, 101, 40, 69, 92, 30, 45, 137, 107, 17, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 12, 12, 12, 70, 70, 70, 111, 111, 111, 81, 132, 132, 166, 166, 166, 200, 200, 200, 231, 231, 231, 251, 251, 251, 131, 255, 255, 255, 255, 255, 245, 87, 245, 211, 254, 254, 255, 255, 255, 255, 255, 255, 122, 255, 255, 255, 255, 230, 255, 222, 255, 230, 255, 255, 210, 255, 255, 253, 253, 253, 238, 206, 238, 204, 132, 204, 158, 158, 86, 41, 41, 41, 0, 0, 0, 146, 193, 75, 50, 73, 25, 48, 85, 109, 48, 198, 243, 47, 77, 110, 44, 170, 105, 43, 97, 104, 44, 72, 107, 41, 72, 208, 156, 220, 108, 45, 71, 18, 74, 73, 198, 44, 71, 107, 44, 130, 211, 44, 72, 105, 48, 78, 105, 223, 73, 56, 44, 146, 95, 40, 178, 89, 28, 138, 56, 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 12, 12, 12, 80, 80, 80, 117, 117, 117, 101, 155, 155, 196, 148, 196, 235, 3, 235, 219, 255, 255, 255, 255, 255, 241, 241, 219, 251, 109, 251, 255, 255, 255, 119, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 159, 252, 18, 239, 239, 210, 210, 210, 116, 116, 116, 7, 12, 11, 44, 61, 147, 53, 79, 122, 74, 84, 121, 55, 78, 116, 53, 21, 117, 53, 76, 114, 49, 192, 116, 229, 71, 110, 45, 70, 108, 43, 71, 195, 45, 161, 108, 41, 71, 108, 43, 73, 110, 45, 71, 106, 48, 72, 109, 49, 78, 110, 50, 247, 105, 48, 75, 103, 45, 71, 98, 42, 141, 89, 39, 121, 88, 34, 53, 222, 183, 119, 0, 0, 0, 0, 0, 0, 0, 24, 70, 0, 167, 142, 0, 193, 3, 3, 93, 63, 63, 50, 112, 112, 59, 165, 165, 214, 25, 214, 255, 255, 255, 255, 255, 174, 242, 242, 242, 217, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 141, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 253, 246, 246, 246, 229, 229, 229, 123, 0, 160, 185, 78, 13, 59, 85, 128, 61, 87, 126, 60, 84, 127, 57, 84, 128, 57, 84, 128, 216, 81, 128, 56, 80, 125, 70, 77, 122, 52, 236, 119, 112, 78, 117, 49, 74, 233, 48, 74, 113, 46, 76, 113, 109, 83, 7, 47, 79, 114, 52, 81, 111, 49, 54, 5, 50, 75, 105, 50, 75, 103, 45, 70, 96, 40, 69, 91, 36, 61, 85, 31, 52, 68, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 33, 16, 16, 74, 64, 64, 152, 152, 152, 201, 201, 201, 255, 255, 255, 255, 255, 255, 248, 248, 248, 255, 255, 255, 255, 212, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 120, 255, 255, 255, 255, 255, 255, 253, 195, 253, 196, 202, 210, 80, 100, 140, 63, 88, 134, 63, 52, 134, 65, 89, 237, 195, 85, 137, 65, 92, 119, 63, 90, 238, 65, 92, 142, 65, 91, 138, 63, 104, 132, 59, 249, 130, 57, 83, 130, 56, 160, 125, 56, 84, 125, 195, 67, 72, 50, 80, 121, 104, 136, 120, 49, 75, 114, 103, 79, 110, 54, 78, 115, 54, 80, 111, 109, 80, 105, 47, 74, 94, 39, 242, 86, 34, 56, 81, 28, 46, 61, 0, 0, 0, 188, 58, 167, 0, 0, 0, 10, 10, 87, 20, 17, 146, 90, 90, 90, 166, 166, 178, 209, 209, 209, 255, 62, 255, 255, 255, 255, 254, 124, 137, 255, 255, 255, 177, 255, 255, 255, 255, 255, 255, 255, 64, 255, 26, 255, 255, 219, 255, 7, 255, 255, 255, 255, 255, 255, 255, 255, 36, 234, 50, 79, 98, 144, 68, 94, 254, 67, 92, 144, 104, 94, 144, 68, 93, 149, 72, 98, 151, 71, 34, 112, 72, 195, 151, 193, 98, 152, 67, 97, 142, 66, 98, 151, 76, 101, 147, 66, 39, 22, 67, 95, 142, 187, 91, 139, 59, 83, 132, 57, 83, 130, 53, 85, 132, 105, 82, 95, 53, 78, 120, 55, 36, 116, 54, 81, 111, 54, 22, 107, 45, 72, 102, 44, 64, 87, 221, 56, 77, 33, 56, 80, 20, 33, 152, 0, 0, 0, 5, 5, 5, 42, 42, 42, 104, 104, 138, 165, 58, 165, 200, 99, 200, 230, 230, 230, 255, 181, 255, 255, 255, 146, 255, 255, 255, 87, 255, 255, 255, 255, 23, 255, 255, 255, 255, 102, 255, 255, 255, 255, 45, 255, 255, 255, 255, 255, 255, 72, 255, 228, 233, 233, 86, 104, 146, 70, 91, 143, 24, 92, 144, 72, 95, 149, 76, 98, 153, 77, 142, 160, 78, 105, 77, 77, 102, 158, 78, 103, 161, 76, 102, 161, 79, 106, 160, 75, 105, 160, 165, 103, 157, 74, 105, 157, 74, 106, 153, 68, 95, 180, 108, 96, 145, 189, 120, 140, 61, 88, 134, 59, 84, 130, 57, 85, 128, 56, 31, 123, 52, 112, 113, 52, 79, 107, 49, 77, 104, 44, 187, 93, 20, 202, 85, 34, 55, 74, 88, 58, 76, 4, 73, 72, 112, 112, 112, 148, 148, 148, 182, 24, 182, 245, 214, 34, 235, 235, 235, 249, 249, 249, 255, 255, 255, 255, 255, 255, 255, 102, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 132, 255, 255, 255, 255, 255, 125, 255, 255, 255, 255, 255, 255, 124, 137, 56, 69, 91, 146, 70, 89, 149, 116, 65, 153, 79, 102, 177, 81, 104, 164, 82, 106, 167, 177, 104, 168, 83, 17, 172, 84, 45, 60, 82, 218, 169, 81, 109, 174, 80, 110, 171, 80, 109, 239, 240, 107, 50, 78, 105, 254, 72, 114, 159, 69, 100, 152, 66, 96, 147, 67, 114, 142, 65, 89, 132, 240, 86, 130, 56, 80, 123, 218, 81, 117, 52, 125, 115, 53, 75, 106, 47, 71, 98, 39, 64, 88, 31, 54, 78, 32, 32, 79, 77, 96, 109, 191, 191, 191, 215, 215, 215, 159, 236, 236, 247, 247, 195, 253, 253, 253, 242, 173, 255, 255, 173, 255, 255, 255, 255, 255, 255, 177, 255, 255, 189, 255, 255, 255, 255, 255, 255, 255, 255, 48, 255, 255, 255, 165, 255, 230, 255, 255, 255, 134, 58, 220, 72, 94, 147, 74, 46, 155, 76, 97, 16, 82, 103, 163, 82, 106, 167, 84, 107, 171, 86, 109, 175, 87, 110, 174, 88, 113, 177, 88, 112, 179, 87, 113, 180, 89, 115, 157, 85, 114, 180, 85, 113, 221, 85, 114, 174, 179, 107, 165, 79, 107, 164, 74, 226, 161, 73, 103, 154, 67, 100, 150, 66, 94, 220, 66, 93, 65, 61, 87, 130, 58, 78, 119, 54, 79, 117, 51, 71, 108, 50, 137, 103, 41, 64, 10, 37, 237, 82, 31, 50, 186, 31, 56, 172, 206, 212, 211, 253, 253, 86, 100, 255, 255, 103, 255, 255, 255, 255, 255, 255, 36, 255, 76, 255, 255, 255, 255, 255, 179, 255, 255, 255, 43, 245, 255, 110, 171, 255, 255, 255, 255, 255, 255, 122, 255, 255, 70, 24, 255, 255, 255, 56, 87, 103, 213, 76, 96, 153, 83, 101, 158, 85, 104, 166, 90, 109, 145, 88, 54, 45, 90, 109, 173, 89, 113, 180, 93, 140, 84, 92, 124, 49, 96, 118, 181, 92, 116, 185, 92, 116, 183, 93, 116, 182, 147, 114, 179, 87, 193, 176, 83, 109, 176, 80, 108, 171, 155, 107, 168, 78, 105, 161, 72, 164, 157, 215, 102, 154, 68, 96, 120, 66, 89, 137, 60, 86, 133, 58, 74, 112, 53, 75, 114, 47, 72, 106, 44, 68, 95, 34, 63, 91, 226, 49, 75, 32, 53, 43, 103, 142, 137, 255, 255, 255, 255, 255, 255, 255, 255, 168, 255, 255, 255, 255, 42, 74, 255, 255, 255, 255, 255, 255, 247, 255, 255, 67, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 153, 255, 255, 204, 207, 216, 73, 192, 144, 81, 100, 162, 89, 107, 166, 150, 114, 173, 102, 119, 177, 231, 118, 178, 96, 116, 181, 96, 116, 183, 98, 118, 185, 99, 119, 184, 96, 117, 185, 95, 117, 106, 97, 58, 188, 94, 118, 187, 91, 115, 184, 91, 51, 182, 10, 111, 178, 85, 111, 172, 81, 105, 172, 37, 104, 163, 75, 104, 162, 73, 96, 111, 73, 99, 148, 68, 90, 145, 63, 88, 140, 60, 87, 133, 53, 74, 120, 217, 67, 111, 244, 63, 97, 184, 63, 94, 33, 53, 80, 57, 59, 81, 33, 56, 33, 215, 222, 220, 255, 255, 255, 168, 255, 255, 255, 255, 255, 255, 255, 255, 50, 255, 255, 254, 184, 255, 13, 255, 255, 255, 255, 255, 255, 255, 255, 6, 29, 255, 255, 143, 255, 255, 255, 255, 255, 255, 255, 124, 237, 171, 75, 91, 152, 86, 100, 163, 100, 61, 173, 110, 124, 183, 56, 125, 186, 106, 122, 189, 102, 117, 183, 98, 64, 187, 103, 121, 188, 105, 123, 188, 102, 121, 189, 100, 119, 189, 100, 182, 189, 97, 144, 190, 188, 139, 185, 93, 241, 182, 180, 115, 184, 88, 111, 177, 167, 108, 172, 81, 107, 166, 80, 103, 161, 76, 99, 157, 71, 162, 154, 70, 95, 147, 66, 92, 145, 69, 25, 140, 74, 80, 127, 253, 76, 119, 45, 71, 110, 40, 62, 99, 35, 56, 84, 33, 56, 75, 33, 52, 78, 127, 188, 151, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 177, 255, 255, 255, 255, 196, 255, 234, 255, 15, 255, 255, 255, 255, 255, 255, 57, 255, 255, 255, 255, 255, 255, 255, 73, 198, 148, 77, 34, 160, 91, 106, 172, 104, 119, 183, 118, 132, 191, 119, 135, 196, 116, 131, 135, 110, 80, 187, 111, 126, 75, 108, 122, 193, 110, 124, 53, 108, 124, 191, 102, 119, 191, 102, 121, 191, 99, 120, 195, 96, 118, 230, 94, 116, 189, 93, 116, 184, 90, 35, 181, 86, 112, 158, 144, 108, 169, 80, 103, 163, 47, 103, 134, 232, 100, 155, 75, 97, 152, 73, 92, 148, 67, 89, 144, 63, 85, 136, 58, 82, 36, 48, 69, 112, 46, 68, 85, 39, 66, 93, 35, 171, 84, 31, 57, 82, 48, 68, 90, 255, 255, 255, 255, 255, 109, 255, 255, 255, 255, 255, 255, 255, 181, 255, 255, 255, 65, 81, 68, 255, 85, 255, 255, 255, 187, 183, 109, 255, 255, 255, 42, 255, 255, 255, 255, 109, 216, 216, 76, 90, 153, 82, 96, 167, 95, 177, 180, 79, 128, 189, 81, 141, 202, 130, 142, 199, 134, 132, 173, 117, 128, 196, 112, 126, 219, 114, 126, 197, 113, 127, 196, 111, 125, 196, 157, 122, 37, 104, 119, 193, 101, 48, 192, 27, 118, 190, 97, 119, 57, 92, 114, 185, 92, 129, 122, 89, 112, 180, 85, 184, 174, 85, 108, 168, 81, 104, 164, 78, 99, 159, 88, 96, 154, 73, 91, 148, 63, 88, 145, 69, 87, 140, 58, 161, 131, 54, 73, 119, 49, 68, 104, 111, 63, 93, 33, 58, 88, 80, 53, 69, 157, 58, 82, 126, 195, 193, 158, 255, 255, 255, 167, 255, 255, 255, 255, 255, 255, 255, 255, 73, 255, 255, 31, 255, 255, 255, 255, 255, 255, 255, 255, 255, 90, 255, 255, 255, 17, 255, 255, 185, 189, 206, 73, 85, 156, 81, 99, 170, 102, 114, 185, 3, 139, 197, 140, 150, 203, 137, 147, 172, 128, 84, 203, 122, 132, 203, 118, 130, 201, 119, 69, 200, 120, 160, 203, 118, 30, 197, 112, 123, 72, 107, 219, 196, 107, 124, 196, 209, 160, 193, 0, 115, 139, 59, 115, 188, 93, 115, 186, 186, 114, 182, 89, 112, 178, 85, 39, 30, 83, 107, 159, 79, 99, 164, 77, 97, 156, 75, 64, 232, 73, 91, 150, 69, 130, 140, 63, 83, 65, 56, 77, 123, 47, 65, 110, 41, 65, 102, 34, 52, 89, 33, 63, 88, 33, 53, 80, 130, 148, 142, 255, 87, 17, 255, 255, 255, 255, 255, 255, 255, 252, 255, 255, 255, 255, 255, 77, 13, 255, 255, 48, 255, 255, 255, 147, 255, 255, 255, 255, 255, 255, 255, 255, 184, 187, 208, 77, 89, 215, 87, 98, 16, 100, 79, 189, 146, 153, 209, 146, 153, 209, 140, 146, 155, 135, 145, 208, 124, 134, 207, 124, 177, 233, 129, 138, 204, 126, 135, 205, 120, 132, 203, 115, 61, 166, 112, 126, 197, 112, 127, 199, 110, 124, 195, 103, 94, 192, 100, 117, 189, 95, 106, 186, 93, 105, 184, 91, 110, 180, 87, 23, 156, 124, 106, 170, 82, 99, 163, 136, 97, 161, 73, 94, 154, 70, 87, 123, 69, 85, 144, 61, 76, 138, 59, 79, 130, 51, 68, 119, 42, 59, 99, 37, 60, 138, 239, 58, 86, 33, 46, 82, 89, 99, 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 191, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, 255, 255, 175, 188, 205, 76, 86, 161, 86, 94, 175, 97, 42, 99, 158, 159, 212, 153, 157, 214, 141, 149, 210, 138, 225, 75, 135, 145, 208, 131, 140, 208, 135, 145, 206, 130, 138, 209, 173, 135, 205, 120, 130, 207, 120, 131, 201, 114, 128, 203, 110, 22, 199, 107, 121, 194, 101, 118, 192, 98, 115, 187, 93, 176, 184, 113, 112, 182, 88, 107, 177, 86, 104, 171, 82, 242, 167, 81, 95, 164, 216, 86, 160, 72, 85, 153, 69, 83, 146, 111, 77, 138, 57, 76, 132, 53, 71, 169, 46, 146, 109, 207, 65, 247, 27, 180, 90, 36, 59, 85, 37, 53, 80, 255, 255, 255, 255, 255, 109, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 18, 255, 255, 43, 255, 255, 255, 255, 255, 93, 255, 255, 255, 255, 255, 255, 255, 228, 231, 232, 180, 89, 160, 85, 94, 178, 100, 241, 189, 162, 166, 217, 164, 168, 250, 148, 151, 217, 151, 157, 216, 145, 118, 214, 134, 141, 211, 132, 210, 211, 135, 146, 210, 131, 137, 208, 125, 217, 208, 122, 134, 205, 117, 130, 123, 64, 125, 205, 108, 121, 122, 103, 119, 196, 97, 114, 80, 220, 112, 186, 93, 111, 186, 91, 108, 180, 85, 90, 174, 207, 103, 170, 79, 92, 170, 79, 197, 160, 72, 82, 155, 68, 72, 153, 66, 162, 145, 63, 77, 132, 58, 16, 150, 45, 65, 112, 42, 60, 97, 79, 61, 92, 132, 66, 105, 172, 58, 84, 255, 255, 255, 255, 255, 82, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 255, 255, 75, 214, 156, 86, 95, 175, 95, 104, 188, 154, 160, 67, 174, 178, 223, 175, 176, 228, 160, 218, 205, 163, 166, 224, 138, 145, 213, 138, 143, 55, 137, 142, 212, 133, 58, 78, 128, 51, 207, 124, 53, 209, 119, 127, 216, 115, 126, 206, 82, 123, 120, 106, 119, 199, 102, 117, 195, 97, 114, 188, 95, 110, 186, 92, 140, 183, 90, 109, 97, 53, 104, 171, 112, 146, 168, 78, 136, 89, 74, 82, 161, 72, 75, 154, 66, 74, 147, 62, 200, 135, 57, 80, 124, 52, 76, 70, 44, 61, 95, 37, 40, 92, 36, 55, 83, 38, 228, 112, 255, 94, 228, 118, 255, 255, 255, 255, 176, 255, 255, 255, 255, 255, 205, 29, 149, 217, 211, 255, 9, 255, 247, 255, 255, 184, 255, 255, 255, 255, 223, 255, 223, 255, 255, 255, 227, 131, 168, 81, 87, 170, 94, 101, 187, 145, 148, 212, 187, 191, 194, 186, 187, 215, 247, 174, 74, 158, 162, 219, 163, 170, 222, 136, 141, 130, 223, 147, 87, 134, 187, 215, 129, 137, 208, 125, 131, 210, 122, 128, 207, 119, 80, 208, 114, 125, 205, 110, 122, 199, 101, 76, 196, 98, 114, 82, 115, 109, 185, 93, 108, 102, 88, 124, 179, 85, 100, 174, 81, 96, 172, 77, 5, 168, 248, 82, 161, 60, 77, 154, 66, 68, 149, 145, 32, 136, 153, 75, 128, 52, 221, 113, 41, 62, 100, 36, 58, 91, 195, 59, 73, 39, 223, 88, 255, 255, 255, 255, 255, 255, 255, 255, 65, 255, 255, 255, 255, 64, 255, 64, 255, 255, 136, 255, 255, 255, 241, 255, 241, 255, 255, 202, 66, 255, 255, 255, 255, 122, 255, 228, 207, 207, 219, 77, 84, 73, 89, 94, 184, 108, 114, 27, 186, 187, 229, 191, 192, 232, 177, 183, 226, 187, 188, 232, 147, 138, 216, 28, 139, 216, 147, 149, 220, 148, 156, 217, 198, 135, 209, 125, 133, 210, 123, 131, 208, 122, 130, 209, 120, 130, 205, 110, 123, 203, 106, 211, 159, 129, 112, 180, 95, 111, 188, 93, 109, 186, 89, 184, 78, 171, 69, 175, 82, 93, 173, 77, 134, 172, 72, 76, 4, 68, 75, 159, 66, 74, 37, 65, 74, 140, 60, 189, 127, 100, 7, 112, 101, 60, 96, 34, 60, 91, 36, 60, 93, 44, 64, 91, 227, 255, 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 91, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 111, 113, 177, 155, 89, 178, 99, 99, 136, 0, 161, 220, 193, 193, 232, 80, 194, 232, 181, 4, 21, 188, 190, 231, 154, 142, 215, 137, 142, 212, 155, 202, 222, 137, 141, 214, 127, 135, 210, 121, 127, 210, 122, 128, 209, 87, 126, 114, 114, 126, 203, 108, 119, 201, 101, 114, 196, 97, 112, 190, 91, 107, 188, 89, 184, 182, 87, 100, 194, 84, 44, 177, 78, 85, 173, 76, 80, 169, 72, 76, 161, 66, 68, 32, 59, 70, 136, 59, 74, 50, 46, 68, 113, 41, 57, 20, 34, 98, 93, 41, 63, 94, 85, 112, 148, 255, 255, 255, 255, 2, 98, 255, 255, 255, 255, 255, 16, 255, 255, 255, 255, 255, 148, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, 255, 255, 255, 24, 178, 193, 255, 2, 36, 255, 206, 206, 219, 81, 83, 172, 90, 92, 89, 124, 124, 84, 188, 187, 228, 204, 202, 235, 206, 206, 237, 182, 183, 229, 158, 163, 219, 131, 133, 214, 126, 157, 211, 133, 21, 214, 124, 177, 209, 69, 126, 211, 193, 123, 210, 117, 126, 210, 68, 125, 205, 110, 100, 201, 107, 119, 196, 98, 114, 191, 93, 104, 188, 91, 112, 111, 86, 98, 183, 82, 89, 181, 77, 82, 176, 74, 76, 171, 71, 75, 162, 67, 76, 148, 60, 72, 133, 50, 70, 121, 45, 65, 106, 86, 60, 92, 38, 61, 95, 44, 65, 184, 169, 27, 183, 255, 98, 255, 255, 245, 54, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 203, 209, 205, 201, 207, 168, 255, 255, 255, 255, 255, 100, 141, 255, 255, 255, 255, 255, 255, 255, 14, 145, 147, 189, 85, 114, 194, 92, 70, 187, 149, 147, 216, 197, 93, 232, 215, 213, 240, 195, 197, 234, 178, 178, 227, 161, 161, 222, 122, 242, 76, 117, 122, 210, 119, 58, 248, 116, 11, 209, 45, 120, 209, 187, 122, 205, 112, 121, 205, 113, 119, 202, 106, 115, 199, 100, 111, 193, 93, 104, 188, 226, 95, 185, 84, 119, 183, 81, 83, 180, 219, 85, 176, 75, 77, 166, 67, 73, 156, 67, 91, 144, 4, 72, 135, 51, 66, 114, 45, 65, 102, 38, 54, 89, 41, 57, 77, 80, 98, 128, 255, 255, 255, 139, 255, 161, 255, 255, 255, 221, 209, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, 210, 207, 78, 176, 121, 190, 197, 193, 255, 255, 255, 255, 255, 31, 255, 255, 255, 255, 255, 255, 255, 156, 236, 94, 90, 167, 88, 84, 198, 95, 95, 186, 227, 118, 201, 153, 237, 217, 196, 195, 232, 131, 177, 226, 173, 17, 226, 137, 137, 212, 111, 113, 178, 140, 113, 226, 112, 114, 207, 111, 114, 147, 111, 116, 206, 112, 163, 205, 97, 9, 201, 206, 113, 196, 96, 223, 191, 161, 38, 190, 87, 89, 186, 80, 80, 192, 61, 78, 183, 77, 77, 176, 72, 77, 169, 65, 69, 152, 147, 73, 209, 57, 68, 206, 49, 120, 110, 45, 59, 221, 37, 59, 92, 17, 62, 33, 222, 224, 91, 255, 193, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 8, 255, 255, 255, 255, 255, 255, 255, 255, 13, 255, 255, 255, 255, 104, 133, 136, 135, 130, 119, 107, 123, 37, 181, 189, 183, 240, 242, 241, 255, 255, 255, 255, 255, 255, 67, 227, 230, 94, 90, 172, 84, 148, 241, 92, 86, 183, 95, 93, 188, 95, 92, 195, 110, 110, 201, 121, 119, 204, 102, 104, 67, 106, 203, 86, 102, 104, 201, 104, 106, 201, 106, 97, 201, 103, 110, 202, 114, 39, 199, 106, 208, 199, 103, 110, 198, 23, 102, 189, 90, 94, 187, 227, 208, 221, 188, 18, 211, 80, 32, 179, 76, 74, 171, 71, 75, 158, 69, 78, 146, 48, 74, 130, 54, 68, 81, 45, 59, 106, 41, 53, 94, 44, 61, 97, 166, 174, 119, 255, 255, 192, 255, 24, 45, 255, 66, 255, 255, 242, 255, 255, 255, 255, 255, 123, 125, 248, 255, 255, 87, 12, 62, 255, 255, 255, 2, 255, 255, 175, 188, 181, 107, 133, 119, 254, 142, 129, 98, 121, 64, 34, 119, 109, 143, 155, 146, 228, 231, 229, 255, 255, 255, 227, 227, 231, 111, 108, 178, 222, 77, 168, 83, 81, 176, 87, 83, 182, 88, 86, 226, 87, 87, 186, 86, 62, 183, 88, 91, 185, 163, 90, 187, 61, 160, 189, 93, 98, 188, 123, 102, 192, 95, 102, 192, 99, 106, 194, 97, 102, 190, 93, 96, 203, 88, 90, 183, 81, 81, 180, 81, 79, 182, 120, 73, 174, 70, 230, 161, 69, 77, 152, 64, 75, 113, 59, 73, 126, 50, 65, 113, 45, 61, 76, 61, 79, 113, 193, 125, 205, 255, 255, 255, 255, 255, 244, 255, 255, 255, 255, 255, 255, 103, 55, 255, 255, 255, 255, 176, 255, 255, 242, 255, 255, 255, 255, 187, 255, 255, 255, 255, 255, 255, 255, 255, 51, 103, 124, 172, 104, 134, 121, 122, 160, 145, 114, 136, 123, 105, 141, 32, 112, 127, 117, 147, 158, 150, 230, 233, 231, 214, 255, 255, 206, 205, 219, 127, 126, 180, 82, 73, 158, 77, 74, 163, 75, 74, 159, 76, 183, 158, 113, 4, 175, 126, 129, 180, 107, 109, 142, 137, 84, 170, 212, 90, 176, 88, 94, 181, 90, 228, 183, 91, 251, 182, 91, 95, 182, 85, 87, 178, 80, 80, 175, 79, 51, 170, 75, 72, 161, 65, 220, 152, 156, 78, 144, 59, 70, 128, 50, 67, 75, 81, 237, 102, 102, 114, 140, 222, 223, 224, 255, 179, 255, 255, 255, 255, 255, 255, 255, 255, 255, 104, 255, 255, 142, 255, 255, 145, 255, 255, 16, 255, 255, 255, 255, 255, 255, 255, 255, 107, 15, 255, 255, 255, 255, 49, 255, 255, 255, 200, 207, 202, 166, 118, 105, 104, 133, 119, 109, 136, 122, 18, 150, 133, 104, 127, 114, 162, 149, 141, 133, 145, 136, 174, 182, 18, 249, 249, 249, 255, 69, 255, 255, 255, 255, 255, 255, 255, 55, 255, 255, 255, 255, 104, 179, 187, 182, 236, 124, 113, 132, 119, 119, 142, 142, 142, 167, 135, 184, 79, 85, 166, 81, 87, 170, 84, 90, 169, 84, 88, 169, 80, 86, 167, 3, 77, 3, 71, 3, 154, 63, 73, 144, 61, 69, 140, 106, 211, 127, 52, 67, 3, 87, 84, 133, 193, 108, 200, 255, 162, 170, 255, 255, 192, 210, 194, 70, 255, 22, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 42, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 56, 255, 255, 72, 255, 255, 255, 255, 255, 255, 118, 134, 123, 209, 130, 116, 103, 130, 116, 109, 46, 131, 98, 121, 108, 202, 159, 90, 99, 121, 108, 98, 115, 103, 101, 117, 106, 126, 109, 169, 196, 202, 198, 233, 235, 233, 220, 224, 221, 135, 148, 140, 210, 107, 95, 58, 139, 127, 183, 101, 104, 117, 117, 117, 255, 255, 255, 190, 204, 206, 98, 147, 157, 244, 80, 153, 74, 76, 149, 73, 78, 146, 68, 75, 141, 63, 103, 136, 58, 67, 127, 91, 100, 137, 140, 65, 157, 223, 224, 224, 158, 255, 255, 255, 255, 255, 255, 255, 49, 65, 255, 212, 255, 255, 255, 255, 229, 241, 255, 255, 255, 255, 230, 255, 255, 255, 255, 255, 157, 255, 255, 255, 255, 255, 20, 255, 255, 255, 255, 21, 255, 255, 33, 255, 255, 255, 255, 255, 255, 255, 51, 255, 255, 37, 215, 219, 245, 94, 58, 99, 107, 144, 128, 103, 129, 115, 105, 139, 232, 122, 163, 146, 103, 130, 116, 105, 135, 121, 97, 125, 111, 91, 110, 148, 91, 107, 96, 92, 108, 96, 91, 108, 96, 90, 95, 95, 120, 135, 125, 255, 255, 255, 91, 77, 104, 44, 44, 44, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 210, 211, 176, 187, 254, 177, 187, 190, 176, 187, 189, 197, 202, 203, 104, 254, 254, 254, 254, 255, 255, 148, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 160, 255, 255, 255, 161, 255, 255, 255, 255, 255, 255, 255, 226, 255, 255, 255, 255, 255, 255, 205, 255, 255, 255, 255, 255, 255, 255, 197, 255, 255, 255, 255, 255, 64, 255, 255, 255, 48, 255, 255, 255, 255, 255, 255, 170, 143, 134, 230, 113, 63, 115, 157, 174, 102, 129, 115, 107, 130, 118, 107, 138, 157, 122, 166, 243, 122, 161, 145, 163, 163, 118, 122, 163, 146, 111, 146, 131, 93, 110, 98, 135, 147, 139, 119, 255, 255, 255, 255, 220, 105, 117, 122, 30, 30, 30, 188, 188, 188, 255, 255, 255, 255, 255, 120, 255, 255, 131, 255, 152, 255, 255, 255, 92, 255, 255, 255, 255, 53, 255, 50, 255, 255, 48, 255, 255, 255, 255, 255, 255, 255, 169, 255, 97, 255, 255, 255, 255, 255, 255, 159, 255, 255, 255, 255, 255, 255, 255, 255, 167, 255, 255, 255, 255, 255, 11, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 54, 255, 255, 255, 255, 255, 255, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 255, 255, 57, 115, 103, 98, 123, 109, 142, 144, 158, 102, 130, 136, 104, 183, 201, 219, 126, 112, 100, 124, 110, 100, 126, 111, 100, 128, 150, 95, 167, 100, 178, 186, 180, 255, 255, 255, 255, 255, 52, 255, 255, 255, 144, 156, 160, 28, 32, 33, 62, 62, 62, 255, 255, 255, 255, 255, 255, 255, 207, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 75, 153, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 142, 194, 255, 255, 255, 255, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, 255, 255, 255, 255, 109, 255, 255, 255, 255, 147, 255, 255, 242, 243, 210, 115, 111, 99, 97, 120, 203, 113, 150, 133, 128, 154, 141, 108, 101, 124, 115, 157, 140, 27, 147, 130, 97, 112, 101, 177, 189, 183, 255, 255, 255, 255, 255, 22, 255, 255, 136, 255, 255, 255, 225, 94, 35, 73, 89, 95, 25, 25, 25, 189, 189, 189, 183, 255, 255, 255, 255, 255, 128, 255, 255, 58, 255, 255, 255, 255, 255, 255, 255, 0, 139, 255, 202, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127, 255, 255, 255, 255, 255, 255, 255, 4, 255, 255, 255, 208, 255, 255, 255, 153, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 255, 255, 255, 255, 255, 255, 255, 255, 238, 255, 255, 255, 255, 167, 21, 255, 255, 255, 221, 188, 183, 18, 113, 99, 185, 125, 112, 115, 156, 139, 106, 144, 126, 95, 116, 103, 56, 113, 101, 178, 186, 180, 255, 219, 255, 255, 255, 255, 255, 255, 27, 255, 255, 131, 255, 255, 255, 234, 255, 255, 104, 119, 126, 36, 54, 227, 78, 119, 78, 190, 240, 240, 15, 255, 255, 255, 255, 181, 255, 255, 33, 255, 255, 18, 255, 36, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 255, 255, 255, 255, 101, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 255, 255, 255, 255, 194, 56, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 146, 255, 255, 255, 255, 119, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 59, 220, 255, 255, 255, 203, 85, 204, 132, 145, 136, 109, 123, 113, 101, 117, 106, 142, 153, 145, 243, 245, 244, 255, 22, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 255, 255, 10, 49, 160, 170, 174, 77, 93, 100, 78, 78, 78, 244, 244, 244, 255, 255, 255, 255, 255, 255, 255, 255, 27, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 54, 255, 255, 255, 219, 255, 255, 255, 214, 255, 17, 255, 255, 255, 255, 255, 255, 255, 255, 228, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 118, 255, 255, 255, 255, 255, 255, 255, 193, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 201, 255, 255, 255, 255, 255, 255, 255, 214, 255, 255, 255, 163, 255, 255, 255, 255, 255, 255, 255, 255, 99, 255, 255, 255, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 76, 255, 255, 255, 255, 255, 255, 255, 75, 255, 255, 255, 255, 255, 255, 255, 192, 255, 255, 109, 255, 255, 255, 221, 222, 222, 249, 174, 249, 255, 255, 255, 255, 255, 135, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 255, 255, 255, 255, 255, 157, 255, 255, 255, 255, 255, 136, 255, 255, 255, 108, 255, 255, 255, 255, 255, 255, 255, 88, 255, 255, 255, 37, 255, 255, 255, 255, 255, 255, 255, 139, 255, 255, 255, 105, 255, 10, 255, 66, 255, 255, 95, 255, 255, 255, 255, 255, 132, 255, 211, 255, 255, 255, 255, 255, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 255, 255, 151, 255, 255, 103, 255, 255, 35, 255, 255, 255, 255, 255, 255, 255, 60, 255, 202, 255, 255, 255, 52, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 155, 255, 255, 255, 255, 166, 255, 255, 167, 255, 255, 255, 255, 255, 255, 252, 255, 34, 255, 255, 255, 10, 255, 255, 255, 224, 255, 250, 255, 255, 255, 255, 255, 255, 50, 255, 255, 255, 123, 255, 255, 189, 255, 57, 255, 255, 255, 141, 255, 134, 255, 255, 255, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 255, 255, 213, 255, 255, 255, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 12, 255, 255, 255, 148, 255, 61, 255, 255, 255, 155, 255, 30, 255, 255, 255, 255, 255, 115, 255, 255, 25, 255, 255, 255, 141, 117, 255, 255, 255, 255, 255, 255, 255, 255, 255, 160, 255, 255, 255, 255, 88, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 33, 255, 255, 255, 255, 255, 255, 178, 255, 90, 255, 255, 255, 255, 255, 255, 255, 255, 217, 255, 255, 61, 255, 255, 255, 255, 255, 255, 142, 255, 255, 255, 255, 115, 251, 105, 255, 181, 255, 218, 255, 255, 29, 255, 255, 255, 255, 255, 255, 57, 255, 164, 255, 255, 255, 36, 255, 255, 255, 255, 255, 255, 255, 174, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 145, 255, 255, 255, 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 255, 255, 255, 255, 255, 6, 255, 255, 249, 255, 133, 255, 61, 255, 255, 188, 255, 255, 255, 255, 254, 255, 255, 255, 145, 255, 255, 255, 255, 255, 255, 235, 255, 255, 255, 242, 255, 255, 16, 255, 255, 255, 255, 255, 255, 255, 46, 60, 255, 255, 255, 255, 255, 255, 255, 98, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 41, 255, 255, 90, 255, 255, 255, 255, 255, 255, 255, 98, 213, 255, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 143, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 6, 255, 255, 255, 255, 255, 255, 255, 255, 37, 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 83, 255, 255, 92, 255, 255, 255, 255, 255, 255, 6, 227, 255, 255, 255, 255, 255, 255, 120, 255, 123, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 152, 255, 255, 99, 255, 255, 255, 255, 255, 255, 71, 255, 255, 255, 255, 255, 255, 255, 255,
+255, 255, 255, 255, 76, 255, 255, 255, 255, 255, 255, 215, 255, 255, 145, 255, 247, 255, 255, 81, 255, 194, 255, 50, 216, 255, 255, 255, 255, 255, 142, 255, 255, 255, 255, 255, 255, 255, 255, 78, 255, 255, 255, 255, 255, 255, 82, 255, 6, 255, 255, 255, 255, 255, 97, 255, 255, 255, 123, 255, 255, 255, 141, 238, 255, 133, 255, 255, 255, 234, 0, 255, 244, 255, 76, 255, 255, 255, 255, 255, 255, 242, 255, 54, 50, 48, 77, 80, 255, 255, 255, 255, 255, 255, 255, 167, 255, 255, 148, 255, 255, 255, 116, 255, 255, 150, 255, 255, 195, 255, 255, 255, 211, 49, 255, 255, 255, 255, 255, 255, 22, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 237, 255, 255, 255, 255, 24, 255, 255, 255, 255, 255, 255, 255, 255, 183, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 178, 255, 255, 45, 156, 255, 255,
+255, 255, 61, 255, 255, 255, 217, 255, 255, 255, 56, 255, 255, 255, 255, 114, 255, 255, 255, 255, 255, 255, 255, 58, 255, 255, 255, 255, 130, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 234, 255, 255
+};
+
+#endif
diff --git a/gdk-pixbuf/test-loaders.c b/gdk-pixbuf/test-loaders.c
index 5286f020d6..68db054798 100644
--- a/gdk-pixbuf/test-loaders.c
+++ b/gdk-pixbuf/test-loaders.c
@@ -358,10 +358,6 @@ main (int argc, char **argv)
{
int seed;
- /* Set a malloc which emulates low mem */
- max_allocation = G_MAXINT;
- g_mem_set_vtable (&limited_table);
-
if (argc > 1)
seed = atoi (argv[1]);
else
@@ -370,6 +366,10 @@ main (int argc, char **argv)
write_seed (seed);
}
g_random_set_seed (seed);
+
+ /* Set a malloc which emulates low mem */
+ max_allocation = G_MAXINT;
+ g_mem_set_vtable (&limited_table);
g_type_init ();
g_log_set_always_fatal (G_LOG_LEVEL_WARNING | G_LOG_LEVEL_ERROR | G_LOG_LEVEL_CRITICAL);
@@ -411,7 +411,7 @@ main (int argc, char **argv)
TEST (tiff1_test_1, FALSE);
TEST (tiff1_test_2, FALSE);
#if 0
- TEST (tiff1_test_3, FALSE); /* Segfault in TIFFReadDirectory with libtiff 3.5.5, fixed in 3.5.7 */
+ TEST (tiff1_test_3, FALSE); /* Segfault in TIFFReadDirectory */
#endif
TEST (valid_tga_test, TRUE);
@@ -421,7 +421,11 @@ main (int argc, char **argv)
TEST (wbmp_test_1, FALSE);
TEST (wbmp_test_2, FALSE);
-
+
+ TEST (invalid_bmp_1, FALSE);
+
+ TEST (valid_ras_test, TRUE);
+
TEST_RANDOM (GIF_HEADER, 150, FALSE);
TEST_RANDOM (PNG_HEADER, 1100, FALSE);
TEST_RANDOM (JPEG_HEADER, 800, FALSE);
@@ -435,8 +439,9 @@ main (int argc, char **argv)
TEST_RANDOM (BMP_HEADER, 150, FALSE);
#define XPM_HEADER '/', '*', ' ', 'X', 'P', 'M', ' ', '*', '/'
TEST_RANDOM (XPM_HEADER, 150, FALSE);
-
-
+#define RAS_HEADER 0x59, 0xA6, 0x6A, 0x95
+ TEST_RANDOM (RAS_HEADER, 300, FALSE);
+
TEST_RANDOMLY_MODIFIED (valid_tiff1_test, FALSE);
TEST_RANDOMLY_MODIFIED (valid_gif_test, FALSE);
TEST_RANDOMLY_MODIFIED (valid_png_test, FALSE);
@@ -445,8 +450,9 @@ main (int argc, char **argv)
TEST_RANDOMLY_MODIFIED (valid_ico_test, FALSE);
TEST_RANDOMLY_MODIFIED (valid_bmp_test, FALSE);
TEST_RANDOMLY_MODIFIED (valid_xpm_test, FALSE);
+ TEST_RANDOMLY_MODIFIED (valid_ras_test, FALSE);
+ TEST_RANDOMLY_MODIFIED (valid_ppm_4, FALSE);
-
/* memory tests */
/* How do the loaders behave when memory is low?