summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2010-04-09 13:22:34 +0200
committerAlexander Larsson <alexl@redhat.com>2010-04-09 13:22:34 +0200
commit85a91015051ee6613bc80f6d474417ffea01df51 (patch)
tree8eb96b5b50ea066db0397a22e970952482390d0c
parent65036b0e441efa04b07a4d82852c4f05ee98af23 (diff)
Don't use glib types in core code
-rw-r--r--daemon.c88
1 files changed, 45 insertions, 43 deletions
diff --git a/daemon.c b/daemon.c
index 9751fd3..976e795 100644
--- a/daemon.c
+++ b/daemon.c
@@ -4,14 +4,8 @@
#include <gio/gio.h>
#include <string.h>
-
-static int port = 8080;
-static char *root = NULL;
-static GOptionEntry cmd_entries[] = {
- {"port", 'p', 0, G_OPTION_ARG_INT, &port,
- "Local port to bind to", NULL},
- {NULL}
-};
+#include <stdint.h>
+#include <arpa/inet.h>
/************************************************************************
* conversion of raw image data to uncompressed png data: uris *
@@ -79,7 +73,7 @@ update_adler32(unsigned long adler, unsigned char *buf, int len)
}
char *
-to_png_rgb (int w, int h, int stride, guint32 *data)
+to_png_rgb (int w, int h, int stride, uint32_t *data)
{
guchar header[] = {137, 80, 78, 71, 13, 10, 26, 10};
guchar ihdr[13+12] = {0, 0, 0, 13, 'I', 'H', 'D', 'R',
@@ -91,18 +85,18 @@ to_png_rgb (int w, int h, int stride, guint32 *data)
gsize data_size, row_size;
char row_header[6];
guint8 *png, *p, *p_row, *p_idat;
- guint32 *row;
+ uint32_t *row;
unsigned long adler;
- guint32 pixel;
+ uint32_t pixel;
gsize png_size;
int x, y;
char *url, *url_base64;
gint state = 0, outlen;
gint save = 0;
- *(guint32 *)&ihdr[8] = GUINT32_TO_BE(w);
- *(guint32 *)&ihdr[12] = GUINT32_TO_BE(h);
- *(guint32 *)&ihdr[21] = GUINT32_TO_BE(crc(&ihdr[4], 13 + 4));
+ *(uint32_t *)&ihdr[8] = htonl(w);
+ *(uint32_t *)&ihdr[12] = htonl(h);
+ *(uint32_t *)&ihdr[21] = htonl(crc(&ihdr[4], 13 + 4));
row_size = 1 + w * 3;
row_header[0] = 0;
@@ -114,7 +108,7 @@ to_png_rgb (int w, int h, int stride, guint32 *data)
data_size = 2 + (6 + w * 3) * h + 4;
- *(guint32 *)&idat_start[0] = GUINT32_TO_BE(data_size);
+ *(uint32_t *)&idat_start[0] = htonl(data_size);
png_size = sizeof(header) + sizeof(ihdr) + 12 + data_size + sizeof(iend);
png = g_malloc (png_size);
@@ -161,9 +155,9 @@ to_png_rgb (int w, int h, int stride, guint32 *data)
}
/* adler32 */
- *(guint32 *)p = GUINT32_TO_BE(adler);
+ *(uint32_t *)p = htonl(adler);
p += 4;
- *(guint32 *)p = GUINT32_TO_BE(crc(p_idat, p - p_idat));
+ *(uint32_t *)p = htonl(crc(p_idat, p - p_idat));
p += 4;
memcpy (p, iend, sizeof(iend));
@@ -186,7 +180,7 @@ to_png_rgb (int w, int h, int stride, guint32 *data)
}
char *
-to_png_rgba (int w, int h, int stride, guint32 *data)
+to_png_rgba (int w, int h, int stride, uint32_t *data)
{
guchar header[] = {137, 80, 78, 71, 13, 10, 26, 10};
guchar ihdr[13+12] = {0, 0, 0, 13, 'I', 'H', 'D', 'R',
@@ -200,16 +194,16 @@ to_png_rgba (int w, int h, int stride, guint32 *data)
guint8 *png, *p, *p_row, *p_idat;
guint32 *row;
unsigned long adler;
- guint32 pixel;
+ uint32_t pixel;
gsize png_size;
int x, y;
char *url, *url_base64;
gint state = 0, outlen;
gint save = 0;
- *(guint32 *)&ihdr[8] = GUINT32_TO_BE(w);
- *(guint32 *)&ihdr[12] = GUINT32_TO_BE(h);
- *(guint32 *)&ihdr[21] = GUINT32_TO_BE(crc(&ihdr[4], 13 + 4));
+ *(uint32_t *)&ihdr[8] = htonl(w);
+ *(uint32_t *)&ihdr[12] = htonl(h);
+ *(uint32_t *)&ihdr[21] = htonl(crc(&ihdr[4], 13 + 4));
row_size = 1 + w * 4;
row_header[0] = 0;
@@ -221,7 +215,7 @@ to_png_rgba (int w, int h, int stride, guint32 *data)
data_size = 2 + (6 + w * 4) * h + 4;
- *(guint32 *)&idat_start[0] = GUINT32_TO_BE(data_size);
+ *(uint32_t *)&idat_start[0] = htonl(data_size);
png_size = sizeof(header) + sizeof(ihdr) + 12 + data_size + sizeof(iend);
png = g_malloc (png_size);
@@ -269,9 +263,9 @@ to_png_rgba (int w, int h, int stride, guint32 *data)
}
/* adler32 */
- *(guint32 *)p = GUINT32_TO_BE(adler);
+ *(uint32_t *)p = htonl(adler);
p += 4;
- *(guint32 *)p = GUINT32_TO_BE(crc(p_idat, p - p_idat));
+ *(uint32_t *)p = htonl(crc(p_idat, p - p_idat));
p += 4;
memcpy (p, iend, sizeof(iend));
@@ -308,16 +302,16 @@ to_png_a (int w, int h, int stride, guint8 *data)
guint8 *png, *p, *p_row, *p_idat;
guint8 *row;
unsigned long adler;
- guint32 pixel;
+ uint32_t pixel;
gsize png_size;
int x, y;
char *url, *url_base64;
gint state = 0, outlen;
gint save = 0;
- *(guint32 *)&ihdr[8] = GUINT32_TO_BE(w);
- *(guint32 *)&ihdr[12] = GUINT32_TO_BE(h);
- *(guint32 *)&ihdr[21] = GUINT32_TO_BE(crc(&ihdr[4], 13 + 4));
+ *(uint32_t *)&ihdr[8] = htonl(w);
+ *(uint32_t *)&ihdr[12] = htonl(h);
+ *(uint32_t *)&ihdr[21] = htonl(crc(&ihdr[4], 13 + 4));
row_size = 1 + w * 2;
row_header[0] = 0;
@@ -329,7 +323,7 @@ to_png_a (int w, int h, int stride, guint8 *data)
data_size = 2 + (6 + w * 2) * h + 4;
- *(guint32 *)&idat_start[0] = GUINT32_TO_BE(data_size);
+ *(uint32_t *)&idat_start[0] = htonl(data_size);
png_size = sizeof(header) + sizeof(ihdr) + 12 + data_size + sizeof(iend);
png = g_malloc (png_size);
@@ -375,9 +369,9 @@ to_png_a (int w, int h, int stride, guint8 *data)
}
/* adler32 */
- *(guint32 *)p = GUINT32_TO_BE(adler);
+ *(uint32_t *)p = htonl(adler);
p += 4;
- *(guint32 *)p = GUINT32_TO_BE(crc(p_idat, p - p_idat));
+ *(uint32_t *)p = htonl(crc(p_idat, p - p_idat));
p += 4;
memcpy (p, iend, sizeof(iend));
@@ -407,14 +401,14 @@ static const char base64_alphabet[] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
static void
-base64_uint8 (guint8 v, char *c)
+base64_uint8 (uint8_t v, char *c)
{
c[0] = base64_alphabet[(v >> 0) & 0x3f];
c[1] = base64_alphabet[(v >> 6) & 0x3];
}
static void
-base64_uint16 (guint32 v, char *c)
+base64_uint16 (uint32_t v, char *c)
{
c[0] = base64_alphabet[(v >> 0) & 0x3f];
c[1] = base64_alphabet[(v >> 6) & 0x3f];
@@ -422,7 +416,7 @@ base64_uint16 (guint32 v, char *c)
}
static void
-base64_uint24 (guint32 v, char *c)
+base64_uint24 (uint32_t v, char *c)
{
c[0] = base64_alphabet[(v >> 0) & 0x3f];
c[1] = base64_alphabet[(v >> 6) & 0x3f];
@@ -431,7 +425,7 @@ base64_uint24 (guint32 v, char *c)
}
static void
-base64_uint32 (guint32 v, char *c)
+base64_uint32 (uint32_t v, char *c)
{
c[0] = base64_alphabet[(v >> 0) & 0x3f];
c[1] = base64_alphabet[(v >> 6) & 0x3f];
@@ -442,7 +436,7 @@ base64_uint32 (guint32 v, char *c)
}
static void
-send_rgb (GOutputStream *out, guint32 rgb)
+send_rgb (GOutputStream *out, uint32_t rgb)
{
char buf[5];
@@ -454,7 +448,7 @@ send_rgb (GOutputStream *out, guint32 rgb)
}
static void
-send_rgba (GOutputStream *out, guint32 argb)
+send_rgba (GOutputStream *out, uint32_t argb)
{
char buf[7];
@@ -635,10 +629,10 @@ send_image_rgb (GOutputStream *out, int x, int y,
static void
send_image_rgba (GOutputStream *out, int x, int y,
- int w, int h, int stride, guint32 *data)
+ int w, int h, int stride, uint32_t *data)
{
char buf[13];
- gsize len;
+ size_t len;
char *url;
buf[0] = 'i';
@@ -660,10 +654,10 @@ send_image_rgba (GOutputStream *out, int x, int y,
static void
send_image_a (GOutputStream *out, int x, int y,
- int w, int h, int stride, guint8 *data)
+ int w, int h, int stride, uint8_t *data)
{
char buf[13];
- gsize len;
+ size_t len;
char *url;
buf[0] = 'i';
@@ -712,7 +706,7 @@ flush (GOutputStream *out)
static int font_w = 286;
static int font_cell_w = 11;
static int font_h = 18;
-static guint8 font[] = "\0\0\0\0\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\161\332\372\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\230\377\377\377\270\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\130\377\266\142\134\134\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\66\134\134\377\270\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\134\200\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\246\377\21\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\0\5\10\0\0\0\0\0\0\0\0\0\10\5\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\267\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\26\221\324\370\365\313\133\0\0\0\0\0\377\270\145\337\367\305\66\0\0\0\0\0\14\203\330\370\356\261\60\0\0\0\66\305\367\340\146\270\377\0\0\0\0\13\204\334\371\347\227\20\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\64\305\367\337\143\270\377\0\0\0\0\377\270\104\313\367\343\152\0\0\0\0\114\377\377\377\377\0\0\0\0\0\0\260\377\377\377\270\0\0\0\0\0\0\377\270\0\0\0\215\376\151\0\0\0\0\0\377\270\0\0\0\0\0\0\377\303\303\355\115\270\366\200\0\0\0\0\377\270\104\313\367\343\152\0\0\0\0\42\246\352\372\335\205\10\0\0\0\0\377\270\145\340\367\305\65\0\0\0\0\64\304\367\337\143\270\377\0\0\0\0\0\377\270\47\272\366\364\301\0\0\0\15\223\345\374\357\277\74\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\270\0\0\0\0\377\270\0\5\355\273\0\0\0\0\1\342\307\0\343\263\0\0\0\0\0\0\0\337\272\0\236\370\60\0\0\0\133\377\165\0\0\203\377\56\0\0\0\0\142\377\123\0\0\377\377\377\377\377\377\377\0\0\0\74\350\223\145\151\303\377\146\0\0\0\0\377\353\345\162\160\344\363\42\0\0\0\12\315\375\240\144\157\277\200\0\0\43\363\345\161\162\346\353\377\0\0\0\10\310\370\217\141\205\363\313\5\0\0\0\134\134\321\377\134\134\134\134\0\0\37\361\350\164\160\342\350\377\0\0\0\0\377\335\333\162\152\334\377\74\0\0\0\33\134\134\321\377\0\0\0\0\0\0\77\134\134\377\270\0\0\0\0\0\0\377\270\0\0\222\375\142\0\0\0\0\0\0\377\270\0\0\0\0\0\0\377\370\164\370\370\220\320\372\13\0\0\0\377\335\333\162\152\334\377\74\0\0\33\352\362\203\142\241\377\270\1\0\0\0\377\353\345\162\160\344\362\40\0\0\41\362\343\161\161\344\353\377\0\0\0\0\0\377\307\344\237\143\162\317\0\0\0\252\377\231\141\155\256\164\0\0\0\134\134\321\377\134\134\134\134\0\0\0\0\377\270\0\0\0\0\377\270\0\0\232\374\26\0\0\0\73\377\155\0\250\350\0\0\0\0\0\0\25\377\176\0\13\327\327\13\0\40\361\266\1\0\0\43\377\214\0\0\0\0\277\354\6\0\0\134\134\134\134\136\350\354\0\0\0\17\10\0\0\0\7\350\326\0\0\0\0\377\377\64\0\0\65\377\232\0\0\0\176\377\151\0\0\0\0\32\0\0\232\377\64\0\0\70\377\377\0\0\0\171\377\116\0\0\0\124\377\135\0\0\0\0\0\270\377\0\0\0\0\0\0\225\377\70\0\0\65\377\377\0\0\0\0\377\375\47\0\0\72\377\222\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\377\270\1\226\374\134\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\377\313\0\312\377\23\201\377\61\0\0\0\377\375\47\0\0\72\377\222\0\0\224\377\110\0\0\0\221\377\112\0\0\0\377\377\64\0\0\65\377\227\0\0\227\377\61\0\0\65\377\377\0\0\0\0\0\377\377\146\0\0\0\3\0\0\0\366\306\0\0\0\0\3\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\377\270\0\0\0\0\377\270\0\0\100\377\151\0\0\0\222\374\27\0\155\377\37\0\7\30\2\0\113\377\103\0\0\56\367\235\3\305\345\25\0\0\0\0\301\346\3\0\0\35\376\222\0\0\0\0\0\0\0\175\376\110\0\0\0\0\0\0\11\23\24\301\370\0\0\0\0\377\334\0\0\0\0\335\335\0\0\0\323\352\2\0\0\0\0\0\0\0\335\334\0\0\0\0\336\377\0\0\0\321\343\24\24\24\24\36\377\237\0\0\0\0\0\270\377\0\0\0\0\0\0\333\335\0\0\0\0\335\377\0\0\0\0\377\316\0\0\0\7\377\261\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\377\271\233\377\135\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\377\273\0\274\377\3\163\377\102\0\0\0\377\316\0\0\0\7\377\261\0\0\333\342\0\0\0\0\53\377\222\0\0\0\377\334\0\0\0\0\335\333\0\0\333\333\0\0\0\0\335\377\0\0\0\0\0\377\352\3\0\0\0\0\0\0\0\350\351\41\0\0\0\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\377\270\0\0\0\0\377\270\0\0\2\344\300\0\0\2\346\272\0\0\62\377\126\0\162\377\101\0\201\374\14\0\0\0\152\377\273\375\100\0\0\0\0\0\140\377\110\0\0\170\377\61\0\0\0\0\0\0\101\375\205\0\0\0\0\5\203\342\377\377\377\377\377\0\0\0\0\377\275\0\0\0\0\276\370\0\0\0\367\277\0\0\0\0\0\0\0\0\371\275\0\0\0\0\276\377\0\0\0\367\377\377\377\377\377\377\377\265\0\0\0\0\0\270\377\0\0\0\0\0\0\371\275\0\0\0\0\276\377\0\0\0\0\377\271\0\0\0\0\377\270\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\377\374\372\377\223\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\377\270\0\270\377\0\160\377\107\0\0\0\377\271\0\0\0\0\377\270\0\0\371\276\0\0\0\0\6\377\260\0\0\0\377\275\0\0\0\0\276\370\0\0\371\275\0\0\0\0\276\377\0\0\0\0\0\377\300\0\0\0\0\0\0\0\0\140\372\376\321\233\116\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\377\270\0\0\0\0\377\270\0\0\0\215\375\32\0\101\377\140\0\0\3\363\214\0\267\355\210\0\267\315\0\0\0\0\0\266\377\211\0\0\0\0\0\0\13\363\246\0\0\323\321\0\0\0\0\0\0\30\350\277\3\0\0\0\0\224\377\255\127\104\104\314\377\0\0\0\0\377\275\0\0\0\0\276\370\0\0\0\367\277\0\0\0\0\0\0\0\0\371\275\0\0\0\0\276\377\0\0\0\367\316\104\104\104\104\104\104\60\0\0\0\0\0\270\377\0\0\0\0\0\0\371\275\0\0\0\0\276\377\0\0\0\0\377\270\0\0\0\0\377\270\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\377\365\105\236\377\113\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\377\270\0\270\377\0\160\377\110\0\0\0\377\270\0\0\0\0\377\270\0\0\371\276\0\0\0\0\6\377\260\0\0\0\377\275\0\0\0\0\276\370\0\0\371\275\0\0\0\0\276\377\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\33\146\241\357\377\205\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\377\270\0\0\0\1\377\270\0\0\0\63\377\157\0\230\367\17\0\0\0\275\303\7\365\155\320\0\354\222\0\0\0\0\27\350\377\314\6\0\0\0\0\0\0\236\366\15\60\377\160\0\0\0\0\0\3\276\350\30\0\0\0\0\0\357\322\0\0\0\0\323\377\0\0\0\0\377\335\0\0\0\0\335\333\0\0\0\323\351\2\0\0\0\0\0\0\0\334\334\0\0\0\0\337\377\0\0\0\322\340\0\0\0\0\0\0\0\0\0\0\0\0\270\377\0\0\0\0\0\0\333\337\0\0\0\0\337\377\0\0\0\0\377\270\0\0\0\0\377\270\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\377\270\0\14\334\352\30\0\0\0\0\0\0\375\272\0\0\0\0\0\0\377\270\0\270\377\0\160\377\110\0\0\0\377\270\0\0\0\0\377\270\0\0\334\342\0\0\0\0\53\377\222\0\0\0\377\335\0\0\0\0\335\335\0\0\335\333\0\0\0\0\335\377\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\0\22\341\360\0\0\0\0\0\267\377\0\0\0\0\0\0\0\0\372\276\0\0\0\30\377\270\0\0\0\0\331\306\4\353\255\0\0\0\0\202\365\106\330\12\367\73\377\126\0\0\0\2\273\357\130\374\222\0\0\0\0\0\0\75\377\142\215\372\25\0\0\0\0\0\203\375\102\0\0\0\0\0\0\365\320\0\0\0\74\377\377\0\0\0\0\377\377\64\0\0\65\377\227\0\0\0\176\377\146\0\0\0\0\27\0\0\231\377\64\0\0\70\377\377\0\0\0\172\377\133\0\0\0\0\12\25\0\0\0\0\0\270\377\0\0\0\0\0\0\225\377\73\0\0\67\377\377\0\0\0\0\377\270\0\0\0\0\377\270\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\377\270\0\0\70\374\271\1\0\0\0\0\0\343\335\0\0\0\0\0\0\377\270\0\270\377\0\160\377\110\0\0\0\377\270\0\0\0\0\377\270\0\0\224\377\110\0\0\0\221\377\112\0\0\0\377\377\64\0\0\65\377\232\0\0\233\377\57\0\0\65\377\377\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\21\0\0\0\0\320\360\0\0\0\0\0\250\377\26\0\0\0\0\0\0\0\334\354\7\0\0\161\377\270\0\0\0\0\200\376\145\377\123\0\0\0\0\107\377\270\217\0\272\267\377\33\0\0\0\173\377\125\0\176\377\120\0\0\0\0\0\0\333\302\345\257\0\0\0\0\0\107\375\175\0\0\0\0\0\0\0\245\377\246\143\202\350\333\377\0\0\0\0\377\353\344\161\160\344\361\40\0\0\0\12\315\374\237\143\155\272\177\0\0\43\363\344\161\162\346\353\377\0\0\0\10\310\374\240\144\150\233\355\120\0\0\0\0\0\270\377\0\0\0\0\0\0\37\361\351\164\157\341\342\377\0\0\0\0\377\270\0\0\0\0\377\270\0\0\0\134\134\134\321\377\134\134\134\0\0\0\0\0\0\377\270\0\0\0\0\0\0\377\270\0\0\0\177\377\163\0\0\0\0\0\215\377\232\134\134\0\0\0\377\270\0\270\377\0\160\377\110\0\0\0\377\270\0\0\0\0\377\270\0\0\33\352\362\202\142\240\377\271\1\0\0\0\377\354\344\161\160\344\364\44\0\0\44\364\342\160\161\344\352\377\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\363\242\153\146\257\377\225\0\0\0\0\0\145\377\266\123\110\110\0\0\0\0\211\377\274\152\217\314\377\270\0\0\0\0\47\377\362\361\10\0\0\0\0\17\375\377\105\0\161\377\340\0\0\0\74\374\236\0\0\3\304\356\37\0\0\0\0\0\173\377\377\120\0\0\0\0\0\352\350\136\134\134\134\134\0\0\0\15\234\356\367\307\77\264\377\0\0\0\0\377\270\145\341\370\304\65\0\0\0\0\0\14\204\331\371\357\261\60\0\0\0\67\306\370\340\145\270\377\0\0\0\0\11\177\326\370\365\316\211\30\0\0\0\0\0\270\377\0\0\0\0\0\0\0\65\306\370\336\134\271\374\0\0\0\0\377\270\0\0\0\0\377\270\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\377\270\0\0\0\0\0\0\377\270\0\0\0\3\306\371\61\0\0\0\0\11\236\362\377\377\0\0\0\377\270\0\270\377\0\160\377\110\0\0\0\377\270\0\0\0\0\377\270\0\0\0\43\247\353\372\336\206\11\0\0\0\0\377\270\150\341\370\307\70\0\0\0\0\70\306\370\341\147\270\377\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\211\317\365\373\333\177\5\0\0\0\0\0\2\202\336\373\377\377\0\0\0\0\12\240\362\362\256\33\377\270\0\0\0\0\0\315\377\240\0\0\0\0\0\0\321\365\7\0\50\377\245\0\0\22\342\333\14\0\0\0\37\360\307\4\0\0\0\0\35\375\355\6\0\0\0\0\0\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\313\350\0\0\0\0\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\377\264\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\31\374\224\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\11\0\0\0\33\372\254\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\50\377\230\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\202\377\61\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\322\235\145\157\331\372\64\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\56\134\140\307\377\101\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\130\172\366\275\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\213\332\372\364\277\75\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\200\377\377\344\153\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\370\265\30\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
+static uint8_t font[] = "\0\0\0\0\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\161\332\372\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\230\377\377\377\270\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\130\377\266\142\134\134\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\66\134\134\377\270\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\134\200\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\246\377\21\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\0\5\10\0\0\0\0\0\0\0\0\0\10\5\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\267\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\26\221\324\370\365\313\133\0\0\0\0\0\377\270\145\337\367\305\66\0\0\0\0\0\14\203\330\370\356\261\60\0\0\0\66\305\367\340\146\270\377\0\0\0\0\13\204\334\371\347\227\20\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\64\305\367\337\143\270\377\0\0\0\0\377\270\104\313\367\343\152\0\0\0\0\114\377\377\377\377\0\0\0\0\0\0\260\377\377\377\270\0\0\0\0\0\0\377\270\0\0\0\215\376\151\0\0\0\0\0\377\270\0\0\0\0\0\0\377\303\303\355\115\270\366\200\0\0\0\0\377\270\104\313\367\343\152\0\0\0\0\42\246\352\372\335\205\10\0\0\0\0\377\270\145\340\367\305\65\0\0\0\0\64\304\367\337\143\270\377\0\0\0\0\0\377\270\47\272\366\364\301\0\0\0\15\223\345\374\357\277\74\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\270\0\0\0\0\377\270\0\5\355\273\0\0\0\0\1\342\307\0\343\263\0\0\0\0\0\0\0\337\272\0\236\370\60\0\0\0\133\377\165\0\0\203\377\56\0\0\0\0\142\377\123\0\0\377\377\377\377\377\377\377\0\0\0\74\350\223\145\151\303\377\146\0\0\0\0\377\353\345\162\160\344\363\42\0\0\0\12\315\375\240\144\157\277\200\0\0\43\363\345\161\162\346\353\377\0\0\0\10\310\370\217\141\205\363\313\5\0\0\0\134\134\321\377\134\134\134\134\0\0\37\361\350\164\160\342\350\377\0\0\0\0\377\335\333\162\152\334\377\74\0\0\0\33\134\134\321\377\0\0\0\0\0\0\77\134\134\377\270\0\0\0\0\0\0\377\270\0\0\222\375\142\0\0\0\0\0\0\377\270\0\0\0\0\0\0\377\370\164\370\370\220\320\372\13\0\0\0\377\335\333\162\152\334\377\74\0\0\33\352\362\203\142\241\377\270\1\0\0\0\377\353\345\162\160\344\362\40\0\0\41\362\343\161\161\344\353\377\0\0\0\0\0\377\307\344\237\143\162\317\0\0\0\252\377\231\141\155\256\164\0\0\0\134\134\321\377\134\134\134\134\0\0\0\0\377\270\0\0\0\0\377\270\0\0\232\374\26\0\0\0\73\377\155\0\250\350\0\0\0\0\0\0\25\377\176\0\13\327\327\13\0\40\361\266\1\0\0\43\377\214\0\0\0\0\277\354\6\0\0\134\134\134\134\136\350\354\0\0\0\17\10\0\0\0\7\350\326\0\0\0\0\377\377\64\0\0\65\377\232\0\0\0\176\377\151\0\0\0\0\32\0\0\232\377\64\0\0\70\377\377\0\0\0\171\377\116\0\0\0\124\377\135\0\0\0\0\0\270\377\0\0\0\0\0\0\225\377\70\0\0\65\377\377\0\0\0\0\377\375\47\0\0\72\377\222\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\377\270\1\226\374\134\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\377\313\0\312\377\23\201\377\61\0\0\0\377\375\47\0\0\72\377\222\0\0\224\377\110\0\0\0\221\377\112\0\0\0\377\377\64\0\0\65\377\227\0\0\227\377\61\0\0\65\377\377\0\0\0\0\0\377\377\146\0\0\0\3\0\0\0\366\306\0\0\0\0\3\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\377\270\0\0\0\0\377\270\0\0\100\377\151\0\0\0\222\374\27\0\155\377\37\0\7\30\2\0\113\377\103\0\0\56\367\235\3\305\345\25\0\0\0\0\301\346\3\0\0\35\376\222\0\0\0\0\0\0\0\175\376\110\0\0\0\0\0\0\11\23\24\301\370\0\0\0\0\377\334\0\0\0\0\335\335\0\0\0\323\352\2\0\0\0\0\0\0\0\335\334\0\0\0\0\336\377\0\0\0\321\343\24\24\24\24\36\377\237\0\0\0\0\0\270\377\0\0\0\0\0\0\333\335\0\0\0\0\335\377\0\0\0\0\377\316\0\0\0\7\377\261\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\377\271\233\377\135\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\377\273\0\274\377\3\163\377\102\0\0\0\377\316\0\0\0\7\377\261\0\0\333\342\0\0\0\0\53\377\222\0\0\0\377\334\0\0\0\0\335\333\0\0\333\333\0\0\0\0\335\377\0\0\0\0\0\377\352\3\0\0\0\0\0\0\0\350\351\41\0\0\0\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\377\270\0\0\0\0\377\270\0\0\2\344\300\0\0\2\346\272\0\0\62\377\126\0\162\377\101\0\201\374\14\0\0\0\152\377\273\375\100\0\0\0\0\0\140\377\110\0\0\170\377\61\0\0\0\0\0\0\101\375\205\0\0\0\0\5\203\342\377\377\377\377\377\0\0\0\0\377\275\0\0\0\0\276\370\0\0\0\367\277\0\0\0\0\0\0\0\0\371\275\0\0\0\0\276\377\0\0\0\367\377\377\377\377\377\377\377\265\0\0\0\0\0\270\377\0\0\0\0\0\0\371\275\0\0\0\0\276\377\0\0\0\0\377\271\0\0\0\0\377\270\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\377\374\372\377\223\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\377\270\0\270\377\0\160\377\107\0\0\0\377\271\0\0\0\0\377\270\0\0\371\276\0\0\0\0\6\377\260\0\0\0\377\275\0\0\0\0\276\370\0\0\371\275\0\0\0\0\276\377\0\0\0\0\0\377\300\0\0\0\0\0\0\0\0\140\372\376\321\233\116\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\377\270\0\0\0\0\377\270\0\0\0\215\375\32\0\101\377\140\0\0\3\363\214\0\267\355\210\0\267\315\0\0\0\0\0\266\377\211\0\0\0\0\0\0\13\363\246\0\0\323\321\0\0\0\0\0\0\30\350\277\3\0\0\0\0\224\377\255\127\104\104\314\377\0\0\0\0\377\275\0\0\0\0\276\370\0\0\0\367\277\0\0\0\0\0\0\0\0\371\275\0\0\0\0\276\377\0\0\0\367\316\104\104\104\104\104\104\60\0\0\0\0\0\270\377\0\0\0\0\0\0\371\275\0\0\0\0\276\377\0\0\0\0\377\270\0\0\0\0\377\270\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\377\365\105\236\377\113\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\377\270\0\270\377\0\160\377\110\0\0\0\377\270\0\0\0\0\377\270\0\0\371\276\0\0\0\0\6\377\260\0\0\0\377\275\0\0\0\0\276\370\0\0\371\275\0\0\0\0\276\377\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\33\146\241\357\377\205\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\377\270\0\0\0\1\377\270\0\0\0\63\377\157\0\230\367\17\0\0\0\275\303\7\365\155\320\0\354\222\0\0\0\0\27\350\377\314\6\0\0\0\0\0\0\236\366\15\60\377\160\0\0\0\0\0\3\276\350\30\0\0\0\0\0\357\322\0\0\0\0\323\377\0\0\0\0\377\335\0\0\0\0\335\333\0\0\0\323\351\2\0\0\0\0\0\0\0\334\334\0\0\0\0\337\377\0\0\0\322\340\0\0\0\0\0\0\0\0\0\0\0\0\270\377\0\0\0\0\0\0\333\337\0\0\0\0\337\377\0\0\0\0\377\270\0\0\0\0\377\270\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\377\270\0\14\334\352\30\0\0\0\0\0\0\375\272\0\0\0\0\0\0\377\270\0\270\377\0\160\377\110\0\0\0\377\270\0\0\0\0\377\270\0\0\334\342\0\0\0\0\53\377\222\0\0\0\377\335\0\0\0\0\335\335\0\0\335\333\0\0\0\0\335\377\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\0\22\341\360\0\0\0\0\0\267\377\0\0\0\0\0\0\0\0\372\276\0\0\0\30\377\270\0\0\0\0\331\306\4\353\255\0\0\0\0\202\365\106\330\12\367\73\377\126\0\0\0\2\273\357\130\374\222\0\0\0\0\0\0\75\377\142\215\372\25\0\0\0\0\0\203\375\102\0\0\0\0\0\0\365\320\0\0\0\74\377\377\0\0\0\0\377\377\64\0\0\65\377\227\0\0\0\176\377\146\0\0\0\0\27\0\0\231\377\64\0\0\70\377\377\0\0\0\172\377\133\0\0\0\0\12\25\0\0\0\0\0\270\377\0\0\0\0\0\0\225\377\73\0\0\67\377\377\0\0\0\0\377\270\0\0\0\0\377\270\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\377\270\0\0\70\374\271\1\0\0\0\0\0\343\335\0\0\0\0\0\0\377\270\0\270\377\0\160\377\110\0\0\0\377\270\0\0\0\0\377\270\0\0\224\377\110\0\0\0\221\377\112\0\0\0\377\377\64\0\0\65\377\232\0\0\233\377\57\0\0\65\377\377\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\21\0\0\0\0\320\360\0\0\0\0\0\250\377\26\0\0\0\0\0\0\0\334\354\7\0\0\161\377\270\0\0\0\0\200\376\145\377\123\0\0\0\0\107\377\270\217\0\272\267\377\33\0\0\0\173\377\125\0\176\377\120\0\0\0\0\0\0\333\302\345\257\0\0\0\0\0\107\375\175\0\0\0\0\0\0\0\245\377\246\143\202\350\333\377\0\0\0\0\377\353\344\161\160\344\361\40\0\0\0\12\315\374\237\143\155\272\177\0\0\43\363\344\161\162\346\353\377\0\0\0\10\310\374\240\144\150\233\355\120\0\0\0\0\0\270\377\0\0\0\0\0\0\37\361\351\164\157\341\342\377\0\0\0\0\377\270\0\0\0\0\377\270\0\0\0\134\134\134\321\377\134\134\134\0\0\0\0\0\0\377\270\0\0\0\0\0\0\377\270\0\0\0\177\377\163\0\0\0\0\0\215\377\232\134\134\0\0\0\377\270\0\270\377\0\160\377\110\0\0\0\377\270\0\0\0\0\377\270\0\0\33\352\362\202\142\240\377\271\1\0\0\0\377\354\344\161\160\344\364\44\0\0\44\364\342\160\161\344\352\377\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\363\242\153\146\257\377\225\0\0\0\0\0\145\377\266\123\110\110\0\0\0\0\211\377\274\152\217\314\377\270\0\0\0\0\47\377\362\361\10\0\0\0\0\17\375\377\105\0\161\377\340\0\0\0\74\374\236\0\0\3\304\356\37\0\0\0\0\0\173\377\377\120\0\0\0\0\0\352\350\136\134\134\134\134\0\0\0\15\234\356\367\307\77\264\377\0\0\0\0\377\270\145\341\370\304\65\0\0\0\0\0\14\204\331\371\357\261\60\0\0\0\67\306\370\340\145\270\377\0\0\0\0\11\177\326\370\365\316\211\30\0\0\0\0\0\270\377\0\0\0\0\0\0\0\65\306\370\336\134\271\374\0\0\0\0\377\270\0\0\0\0\377\270\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\377\270\0\0\0\0\0\0\377\270\0\0\0\3\306\371\61\0\0\0\0\11\236\362\377\377\0\0\0\377\270\0\270\377\0\160\377\110\0\0\0\377\270\0\0\0\0\377\270\0\0\0\43\247\353\372\336\206\11\0\0\0\0\377\270\150\341\370\307\70\0\0\0\0\70\306\370\341\147\270\377\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\211\317\365\373\333\177\5\0\0\0\0\0\2\202\336\373\377\377\0\0\0\0\12\240\362\362\256\33\377\270\0\0\0\0\0\315\377\240\0\0\0\0\0\0\321\365\7\0\50\377\245\0\0\22\342\333\14\0\0\0\37\360\307\4\0\0\0\0\35\375\355\6\0\0\0\0\0\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\313\350\0\0\0\0\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\377\264\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\31\374\224\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\11\0\0\0\33\372\254\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\50\377\230\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\202\377\61\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\322\235\145\157\331\372\64\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\56\134\140\307\377\101\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\130\172\366\275\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\213\332\372\364\277\75\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\200\377\377\344\153\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\270\0\0\0\0\0\0\0\0\0\0\0\0\0\0\270\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\370\265\30\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
static gboolean
send_draw_ops (GOutputStream *out)
@@ -788,6 +782,14 @@ send_draw_ops (GOutputStream *out)
* lame http server *
************************************************************************/
+static int port = 8080;
+static char *root = NULL;
+static GOptionEntry cmd_entries[] = {
+ {"port", 'p', 0, G_OPTION_ARG_INT, &port,
+ "Local port to bind to", NULL},
+ {NULL}
+};
+
static void
send_error (GOutputStream *out,
int error_code,