From 4fa8a129e6ecfa168604568673cfbdaa2c8e34b0 Mon Sep 17 00:00:00 2001
From: Rudy Bousset <rbousset@z2r4p3.le-101.fr>
Date: Sun, 9 Feb 2020 14:31:57 +0100
Subject: Renamed minilibx

---
 Makefile                          |   27 +-
 libmlx/Makefile                   |   24 -
 libmlx/font.c                     | 3525 -------------------------------------
 libmlx/font.xcf                   |  Bin 52570 -> 0 bytes
 libmlx/mlx.h                      |  149 --
 libmlx/mlx_init_loop.m            |  192 --
 libmlx/mlx_int.h                  |  102 --
 libmlx/mlx_int_str_to_wordtab.c   |  107 --
 libmlx/mlx_mouse.m                |   52 -
 libmlx/mlx_new_image.m            |  198 ---
 libmlx/mlx_new_window.h           |   57 -
 libmlx/mlx_new_window.m           |  766 --------
 libmlx/mlx_opengl.h               |   21 -
 libmlx/mlx_opengl.m               |   57 -
 libmlx/mlx_png.c                  |  418 -----
 libmlx/mlx_png.h                  |    4 -
 libmlx/mlx_rgb.c                  |  763 --------
 libmlx/mlx_shaders.c              |  240 ---
 libmlx/mlx_xpm.c                  |  338 ----
 minilibx/Makefile                 |   24 +
 minilibx/font.c                   | 3525 +++++++++++++++++++++++++++++++++++++
 minilibx/font.xcf                 |  Bin 0 -> 52570 bytes
 minilibx/mlx.h                    |  149 ++
 minilibx/mlx_init_loop.m          |  192 ++
 minilibx/mlx_int.h                |  102 ++
 minilibx/mlx_int_str_to_wordtab.c |  107 ++
 minilibx/mlx_mouse.m              |   52 +
 minilibx/mlx_new_image.m          |  198 +++
 minilibx/mlx_new_window.h         |   57 +
 minilibx/mlx_new_window.m         |  766 ++++++++
 minilibx/mlx_opengl.h             |   21 +
 minilibx/mlx_opengl.m             |   57 +
 minilibx/mlx_png.c                |  418 +++++
 minilibx/mlx_png.h                |    4 +
 minilibx/mlx_rgb.c                |  763 ++++++++
 minilibx/mlx_shaders.c            |  240 +++
 minilibx/mlx_xpm.c                |  338 ++++
 37 files changed, 7028 insertions(+), 7025 deletions(-)
 delete mode 100644 libmlx/Makefile
 delete mode 100644 libmlx/font.c
 delete mode 100644 libmlx/font.xcf
 delete mode 100644 libmlx/mlx.h
 delete mode 100644 libmlx/mlx_init_loop.m
 delete mode 100644 libmlx/mlx_int.h
 delete mode 100644 libmlx/mlx_int_str_to_wordtab.c
 delete mode 100644 libmlx/mlx_mouse.m
 delete mode 100644 libmlx/mlx_new_image.m
 delete mode 100644 libmlx/mlx_new_window.h
 delete mode 100644 libmlx/mlx_new_window.m
 delete mode 100644 libmlx/mlx_opengl.h
 delete mode 100644 libmlx/mlx_opengl.m
 delete mode 100644 libmlx/mlx_png.c
 delete mode 100644 libmlx/mlx_png.h
 delete mode 100644 libmlx/mlx_rgb.c
 delete mode 100644 libmlx/mlx_shaders.c
 delete mode 100644 libmlx/mlx_xpm.c
 create mode 100644 minilibx/Makefile
 create mode 100644 minilibx/font.c
 create mode 100644 minilibx/font.xcf
 create mode 100644 minilibx/mlx.h
 create mode 100644 minilibx/mlx_init_loop.m
 create mode 100644 minilibx/mlx_int.h
 create mode 100644 minilibx/mlx_int_str_to_wordtab.c
 create mode 100644 minilibx/mlx_mouse.m
 create mode 100644 minilibx/mlx_new_image.m
 create mode 100644 minilibx/mlx_new_window.h
 create mode 100644 minilibx/mlx_new_window.m
 create mode 100644 minilibx/mlx_opengl.h
 create mode 100644 minilibx/mlx_opengl.m
 create mode 100644 minilibx/mlx_png.c
 create mode 100644 minilibx/mlx_png.h
 create mode 100644 minilibx/mlx_rgb.c
 create mode 100644 minilibx/mlx_shaders.c
 create mode 100644 minilibx/mlx_xpm.c

diff --git a/Makefile b/Makefile
index 2e2b65b..cc7001c 100644
--- a/Makefile
+++ b/Makefile
@@ -10,7 +10,7 @@ INCS_DIR	= inc/
 SRCS_DIR	= src/
 OBJS_DIR	= obj/
 LFT_DIR		= libft/
-MLX_DIR		= libmlx/
+MLX_DIR		= minilibx/
 #==============================================================================#
 #--------------------------------- Files --------------------------------------#
 #==============================================================================#
@@ -44,6 +44,17 @@ SRCS		= $(addprefix ${SRCS_DIR},${SRCS_NAME})
 #------------------------------------------------------------------------------#
 OBJS		= $(patsubst ${SRCS_DIR}%.c,${OBJS_DIR}%.o,${SRCS})
 #==============================================================================#
+#--------------------------------- UNIX ---------------------------------------#
+#==============================================================================#
+MKDIR		= mkdir -p
+RM			= rm -rf
+OS			= $(shell uname)
+ifeq (${OS}, Darwin)
+	SCR_SZE = 1980x1024
+else
+	SCR_SZE	= $(shell xdpyinfo | grep dimensions | awk '{print $$2}')
+endif
+#==============================================================================#
 #-------------------------------- Compiler ------------------------------------#
 #==============================================================================#
 CC			= clang
@@ -67,17 +78,9 @@ else
 	NAME	= a.out
 endif
 #==============================================================================#
-#--------------------------------- UNIX ---------------------------------------#
-#==============================================================================#
-MKDIR		= mkdir -p
-RM			= rm -rf
-OS			= $(shell uname)
-SCR_SZE		= $(shell xdpyinfo | grep dimensions | awk '{print $$2}')
-#==============================================================================#
 #--------------------------------- Rules --------------------------------------#
 #==============================================================================#
 ${OBJS_DIR}%.o:		${SRCS_DIR}%.c ${INCS_DIR}${INCS}
-	echo ${SCR_SIZE}
 	@${MKDIR} ${OBJS_DIR}
 ifeq (${OS}, Darwin)
 	${CC} -c ${CFLAGS} -I${LFT_DIR}${INCS_DIR} -I${MLX_DIR} -I${INCS_DIR} -o $@ $<
@@ -97,12 +100,12 @@ endif
 #------------------------------------------------------------------------------#
 all:
 ifeq (${OS}, Darwin)
-	@$(MAKE) --no-print-directory -C ${MLX_DIR} all
+	@$(MAKE) --jobs 5 --no-print-directory -C ${MLX_DIR} all
 endif
 ifdef ASAN
-	@$(MAKE) --no-print-directory -C ${LFT_DIR} all ASAN=1
+	@$(MAKE) --jobs 5 --no-print-directory -C ${LFT_DIR} all ASAN=1
 else
-	@$(MAKE) --no-print-directory -C ${LFT_DIR} all
+	@$(MAKE) --jobs 5 --no-print-directory -C ${LFT_DIR} all
 endif
 	@$(MAKE) ${NAME}
 #------------------------------------------------------------------------------#
diff --git a/libmlx/Makefile b/libmlx/Makefile
deleted file mode 100644
index 2e44836..0000000
--- a/libmlx/Makefile
+++ /dev/null
@@ -1,24 +0,0 @@
-#
-#
-
-NOM=libmlx.a
-SRC= mlx_shaders.c mlx_new_window.m mlx_init_loop.m mlx_new_image.m mlx_xpm.c mlx_int_str_to_wordtab.c
-SRC+= mlx_png.c mlx_mouse.m
-OBJ1=$(SRC:.c=.o)
-OBJ=$(OBJ1:.m=.o)
-CFLAGS+=-O2
-
-# add to match string put with X11 in size and position
-CFLAGS+= -DSTRINGPUTX11
-
-all: $(NOM)
-
-$(NOM):	$(OBJ)
-	ar -r $(NOM) $(OBJ)
-	ranlib $(NOM)
-
-clean:
-	rm -f $(NOM) $(OBJ) *~
-	rm -f mlx_app
-
-re: clean all
diff --git a/libmlx/font.c b/libmlx/font.c
deleted file mode 100644
index 656d248..0000000
--- a/libmlx/font.c
+++ /dev/null
@@ -1,3525 +0,0 @@
-/* GIMP RGBA C-Source image dump (font.c) */
-
-static const struct {
-  unsigned int 	 width;
-  unsigned int 	 height;
-  unsigned int 	 bytes_per_pixel; /* 2:RGB16, 3:RGB, 4:RGBA */ 
-  unsigned char	 pixel_data[1140 * 20 * 4 + 1];
-} font_atlas = {
-  1140, 20, 4,
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\377\377\377\214\377\377\377\224\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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"
-  "\377\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\377\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\377\377\377I\0\0"
-  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377"
-  ")\377\377\377\33\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\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\216\377\377\377\263\377\377\377\13\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\377\377\377\0\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\377\377\377b\377\377\377V\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\215\377\377\377\270\377\377"
-  "\377u\377\377\377\13\377\377\377\252\377\377\377\255\377\377\377\13\0\0\0"
-  "\0\377\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\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\317\377\377\377\374\377\377"
-  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377"
-  "\377e\377\377\3775\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\234\377\377\377\267"
-  "\377\377\377B\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\13\377\377\377\343\377\377"
-  "\377\375\377\377\377M\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377"
-  "\377\377\13\377\377\377\355\377\377\377\367\377\377\3778\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\377\377j\377\377\377\373\377\377\377\243\0\0\0\0\377"
-  "\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377"
-  "\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\377\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\377\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\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\377\377\377b\377\377\377\237\377\377\377\233\377\377\377Z\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\377\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\377\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\377\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\377\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\377\377\377"
-  "b\377\377\377c\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\377\377\377)\377\377\377e\377\377\377I\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377U\377\377\377"
-  "c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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"
-  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377b\377\377\377c\377\377\377\13\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\377\377\377S\377\377\377c\377\377\3775\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\213\377"
-  "\377\377\363\377\377\377\364\377\377\377\364\377\377\377\372\377\377\377"
-  "\225\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377u\377\377"
-  "\377\371\377\377\377\233\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\377\377\377\377\377\377\377\0\0\0\0\377\377\377\215\377\377\377\372"
-  "\377\377\377\364\377\377\377\364\377\377\377\363\377\377\377\224\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\377\377\377U\377\377\377e\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\0\0\0\0\377\377\377\13\377\377\377\351\377\377\377\376\377\377\377s\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\214\377\377\377\372\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\377\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\377\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\377\377\377K\377\377\377\367\377\377\377"
-  "\315\0\0\0\0\377\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\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\3775\377\377\377\340"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\304\377\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\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\377\377\377\214\377\377\377\372\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\377\377\377s\377\377\377\366\377\377\377\342\377\377\377%"
-  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\377\377\377s\377\377\377\366\377\377\377\342\377\377\377%\0\0\0"
-  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377"
-  "\372\377\377\377\225\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"
-  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\306\377\377\377\374\377"
-  "\377\377\370\377\377\377\370\377\377\377\304\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377"
-  "\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\377\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\377\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\377\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\377\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\377\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\377\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\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377E\377\377"
-  "\377\317\377\377\377\357\377\377\377\373\377\377\377\225\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\320"
-  "\377\377\377\374\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\377\377\377\215\377\377\377\372\377\377\377\363\377"
-  "\377\377\333\377\377\377m\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\1\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\377\377\377\13\377\377\377\364\377\377\377\366\377\377\377%\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377"
-  "\377\361\377\377\377\377\377\377\377\254\377\377\377=\377\377\377\375\377"
-  "\377\377\372\377\377\377)\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\377\377\377\215\377\377\377\363\377\377\377%\377\377\377"
-  "\224\377\377\377\363\377\377\377%\0\0\0\0\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\3772\377\377\377\336\377\377\377\375\377"
-  "\377\377x\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\377\377\377\262\377\377\377\372\377\377\377\370\377\377\377\246\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377=\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\0\0\0\0\377\377\377~\377\377\377\374\377\377\377\377\377\377"
-  "\377\376\377\377\377\224\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377V\377\377\377\375\377\377\377"
-  "\376\377\377\377l\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\325\377\377\377\377"
-  "\377\377\377\271\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\355\377\377\377\33\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377"
-  "\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\377\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\377\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\377\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\377\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\377\377\377\313\377\377\377\376\377\377\377v\0\0\0\0"
-  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
-  "\315\377\377\377\367\377\377\377\373\377\377\377\334\377\377\377B\0\0\0\0"
-  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377`\377\377\377\300\377\377\377\342\377\377\377Z\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\224\377\377"
-  "\377\347\377\377\377\373\377\377\377\364\377\377\377\312\377\377\377)\0\0"
-  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377"
-  "\226\377\377\377\346\377\377\377\370\377\377\377\360\377\377\377\327\377"
-  "\377\377b\0\0\0\0\0\0\0\0\377\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\377\377\377\214\377\377\377\343\377\377\377\273"
-  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377"
-  "\377\377\315\377\377\377\337\377\377\377\333\377\377\377\333\377\377\377"
-  "\333\377\377\377\343\377\377\377\223\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\215\377\377\377\346\377\377\377"
-  "\370\377\377\377\364\377\377\377\320\377\377\377O\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\377\377\377\13\377\377\377\315\377\377\377\337\377\377\377"
-  "\333\377\377\377\333\377\377\377\333\377\377\377\333\377\377\377\333\377"
-  "\377\377\323\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0"
-  "\0\377\377\3772\377\377\377\316\377\377\377\366\377\377\377\373\377\377\377"
-  "\344\377\377\377\200\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\0\0\0\0\377\377\377u\377\377\377\342\377\377\377\370\377\377\377\364"
-  "\377\377\377\305\377\377\377%\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377"
-  "\377\377)\377\377\3775\0\0\0\0\377\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\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\371\371\377.\377\377\377V\0\0\0\0\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\377\377\377\377\377\377"
-  "\377\0\0\0\0\377\377\377\13\377\377\377\321\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\271\0\0\0\0\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377Q\377\377\377"
-  "\273\377\377\377\332\377\377\377\322\377\377\377\206\0\0\0\0\0\0\0\0\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\3778\377\377"
-  "\377\367\377\377\377\376\377\377\377s\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\374\377\377\377\360\377\377\377\253\0\0"
-  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377"
-  "\13\377\377\377\304\377\377\377\375\377\377\377\377\377\377\377\377\377\377"
-  "\377\373\377\377\377\247\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\377\377\377\307\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\374\377\377\377\324\377\377\377B\0\0\0\0\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\346"
-  "\377\377\377\13\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377"
-  "\377\377\352\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\376\377\377\377l\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\0\0\0\0\377\377\3775\377\377\377\333\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\361\377\377\377\202\0\0\0\0\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\307\377\377\377\376\377"
-  "\377\377i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\352\377\377\377\364"
-  "\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\373\377\377\377"
-  "\377\377\377\377\377\377\377\377\303\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\377\377\377\13\377\377\377\361\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377\225\0\0\0\0"
-  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377"
-  "\377\377\377\225\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\356\377\377\377"
-  "\376\377\377\377v\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13"
-  "\377\377\377\352\377\377\377\364\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\307\377"
-  "\377\377\377\377\377\377\243\0\0\0\0\0\0\0\0\377\377\377u\377\377\377\375"
-  "\377\377\377\321\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
-  "\377\307\377\377\377\377\377\377\377\251\0\0\0\0\0\0\0\0\377\377\377\13\377"
-  "\377\377\355\377\377\377\330\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\0\0\0\0\377\377\377\206\377\377\377\366\377\377\377\377\377\377\377"
-  "\377\377\377\377\373\377\377\377\246\0\0\0\0\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\370\377\377\377\324\377\377\377"
-  "B\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\206"
-  "\377\377\377\370\377\377\377\377\377\377\377\377\377\377\377\373\377\377"
-  "\377\240\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
-  "\377\224\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\364\377\377\377\312\377\377\377\33\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\0\0\0\0\377\377\377\204\377\377\377\365\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\342\377\377\377V\0\0\0\0"
-  "\377\377\377\377\377\377\377\377\377\377\377\224\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\373\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\252\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\377\377\377\307\377\377\377\376\377\377\377i\0\0\0\0\0\0"
-  "\0\0\377\377\377\13\377\377\377\352\377\377\377\364\377\377\377%\377\377"
-  "\377\377\377\377\377\377\377\377\377}\377\377\377\376\377\377\377\332\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\262\377\377\377\377\377\377\377"
-  "\216\377\377\377\377\377\377\377\377\377\377\377\345\377\377\377\372\377"
-  "\377\377=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355"
-  "\377\377\377\356\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377"
-  "\345\377\377\377\376\377\377\377~\0\0\0\0\0\0\0\0\377\377\3778\377\377\377"
-  "\367\377\377\377\360\377\377\377\33\377\377\377\377\377\377\377\377\377\377"
-  "\377\206\377\377\377\377\377\377\377\332\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\377\377\377\266\377\377\377\377\377\377\377\234\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\361"
-  "\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\377\377\224\377\377\377\377\377\377\377\312\377\377\377\255\377\377\377"
-  "\266\377\377\377u\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
-  "\377;\377\377\377\373\377\377\377\347\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\377\377\377\377\377\377\377\0\0\0\0\377\377\377`\377\377"
-  "\377\266\377\377\377\263\377\377\377\256\377\377\377\373\377\377\377\254"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\377\377\377\33\377\377\377\371\377\377\377\376\377\377\377_\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377b\377\377\377\374"
-  "\377\377\377\355\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
-  "\224\377\377\377\376\377\377\377l\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\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\377\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\377\377\377K\377"
-  "\377\377\374\377\377\377\333\0\0\0\0\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\377\377\334\377\377\377\377\377\377\377\346\377\377\377\272\377\377\377"
-  "\342\377\377\377\276\377\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\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377"
-  "l\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\377\377\377\377\377"
-  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\215\377\377\377\377"
-  "\377\377\377\377\377\377\377l\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\215\377\377\377\377\377"
-  "\377\377\377\377\377\377l\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\377\377\377K\377\377\377\375\377\377\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377"
-  "\377\377\247\377\377\377\343\377\377\377\340\377\377\377\377\377\377\377"
-  "\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\377\377\377`\377\377\377\262\377\377\377=\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\377\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\377\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\377\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\377\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\377\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\377"
-  "\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\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\342\377\377\377\377\377\377\377"
-  "\325\377\377\377\266\377\377\377u\0\0\0\0\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377"
-  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377"
-  "\377\377`\377\377\377\263\377\377\377\307\377\377\377\376\377\377\377\363"
-  "\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
-  "\0\377\377\377\0\377\377\377\0\377\377\377\1\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377"
-  "\377\351\377\377\377\366\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\356\377\377\377\377"
-  "\377\377\377\243\377\377\377;\377\377\377\374\377\377\377\364\377\377\377"
-  "%\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377\313\377\377\377\355\0\0\0\0\377\377\377\320\377\377\377\346\0\0\0\0"
-  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\247"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\352\377\377\377S\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377"
-  "}\377\377\377\377\377\377\377\326\377\377\377\334\377\377\377\376\377\377"
-  "\377l\0\0\0\0\377\377\377}\377\377\377\377\377\377\377\323\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\354\377\377\377\364\377"
-  "\377\377\226\377\377\377\373\377\377\377\337\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\33\377\377"
-  "\377\362\377\377\377\376\377\377\377l\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\232\377"
-  "\377\377\377\377\377\377\336\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\302\377\377\377\377\377"
-  "\377\377\277\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377|\377\377\377\205\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\377\377\377_\377\377\377\232\377\377\377\13\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\377\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\377\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\377\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\377\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\377\377\377"
-  "!\377\377\377\371\377\377\377\352\377\377\377\13\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\345\377\377\377\377\377"
-  "\377\377\365\377\377\377\353\377\377\377\377\377\377\377\367\377\377\377"
-  "2\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\313"
-  "\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377l\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\314\377"
-  "\377\377\377\377\377\377\376\377\377\377\335\377\377\377\371\377\377\377"
-  "\377\377\377\377\352\377\377\377\33\0\0\0\0\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\377\377\377\302\377\377\377\377\377\377\377\377\377\377\377\342"
-  "\377\377\377\362\377\377\377\377\377\377\377\375\377\377\377\\\0\0\0\0\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
-  "U\377\377\377\374\377\377\377\377\377\377\377\333\0\0\0\0\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\361\377\377\377"
-  "\377\377\377\377\373\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\251\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377"
-  "\377\377\247\377\377\377\377\377\377\377\377\377\377\377\360\377\377\377"
-  "\373\377\377\377\377\377\377\377\360\377\377\377\33\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\377\377\377\332\377\377\377\377\377\377\377\376\377\377"
-  "\377\374\377\377\377\374\377\377\377\376\377\377\377\377\377\377\377\367"
-  "\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\25\377"
-  "\377\377\356\377\377\377\377\377\377\377\351\377\377\377\350\377\377\377"
-  "\376\377\377\377\376\377\377\377s\0\0\0\0\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\377\377\377|\377\377\377\376\377\377\377\377\377\377\377\345\377"
-  "\377\377\356\377\377\377\377\377\377\377\355\377\377\377%\0\0\0\0\377\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\377\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"
-  "\377\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\377\377\377}\377\377\377\374\377\377\377\254\0\0\0\0\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377"
-  "\377\377V\377\377\377\375\377\377\377\241\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\377\377\377\377\377\377\377\0\0\0\0\377\377\3778\377"
-  "\377\377\372\377\377\377\343\377\377\377u\377\377\377\217\377\377\377\374"
-  "\377\377\377\375\377\377\377M\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\0\0\0\0\377\377\377\233\377\377\377\376\377\377\377\377\377\377\377"
-  "\354\377\377\377\375\377\377\377\377\377\377\377\257\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\232\377\377\377"
-  "\377\377\377\377\377\377\377\377\277\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377"
-  "\342\377\377\377\304\377\377\377\332\377\377\377\376\377\377\377\377\377"
-  "\377\377\227\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377"
-  "\377\377\331\377\377\377\377\377\377\377\373\377\377\377\306\377\377\377"
-  "\307\377\377\377\375\377\377\377\376\377\377\377Q\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\377\377\377\313\377\377\377\377\377\377\377\330\377\377"
-  "\377\310\377\377\377\370\377\377\377\377\377\377\377\375\377\377\377f\0\0"
-  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\374"
-  "\377\377\377\376\377\377\377\323\377\377\377\327\377\377\377\327\377\377"
-  "\377\327\377\377\377\316\377\377\377\33\377\377\377\377\377\377\377\377\0"
-  "\0\0\0\377\377\377\13\377\377\377\356\377\377\377\376\377\377\377\324\377"
-  "\377\377\327\377\377\377\327\377\377\377\327\377\377\377\312\377\377\377"
-  "%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\33\377\377\377\362"
-  "\377\377\377\377\377\377\377\365\377\377\377\277\377\377\377\321\377\377"
-  "\377\377\377\377\377\366\377\377\377\33\377\377\377\377\377\377\377\377\0"
-  "\0\0\0\377\377\377\313\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377"
-  "\377\13\377\377\377\356\377\377\377\366\377\377\377%\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\377\377\377}\377\377\377\332\377\377\377\323\377\377"
-  "\377\371\377\377\377\377\377\377\377\331\377\377\377\327\377\377\377\266"
-  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377"
-  "\302\377\377\377\323\377\377\377\322\377\377\377\322\377\377\377\342\377"
-  "\377\377\377\377\377\377\252\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\377\377\377\224\377\377\377\377\377\377\377\252\0\0\0\0\0\0\0\0\377"
-  "\377\377\335\377\377\377\377\377\377\377\315\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\377\377\377\13\377\377\377\356\377\377\377\366\377\377"
-  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\377\377\377\313\377\377\377\377\377\377\377\336\0\0\0\0\0\0"
-  "\0\0\377\377\377\275\377\377\377\377\377\377\377\330\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\377\377\377\312\377\377\377\377\377\377\377"
-  "\364\377\377\377%\0\0\0\0\377\377\377\13\377\377\377\361\377\377\377\333"
-  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377j\377\377\377"
-  "\375\377\377\377\377\377\377\377\325\377\377\377\313\377\377\377\376\377"
-  "\377\377\377\377\377\377\225\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\377\377\377\224\377\377\377\377\377\377\377\342\377\377\377\310\377"
-  "\377\377\322\377\377\377\366\377\377\377\377\377\377\377\355\377\377\377"
-  "\33\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377j\377\377\377\375"
-  "\377\377\377\377\377\377\377\321\377\377\377\307\377\377\377\376\377\377"
-  "\377\377\377\377\377\216\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\377\377\377\224\377\377\377\377\377\377\377\342\377\377\377\310\377\377"
-  "\377\322\377\377\377\371\377\377\377\377\377\377\377\336\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\374\377\377\377"
-  "\377\377\377\377\330\377\377\377\271\377\377\377\351\377\377\377\377\377"
-  "\377\377\334\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377}\377\377"
-  "\377\332\377\377\377\327\377\377\377\323\377\377\377\371\377\377\377\377"
-  "\377\377\377\331\377\377\377\326\377\377\377\332\377\377\377p\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377"
-  "i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\356\377\377\377\366\377\377"
-  "\377%\377\377\377\377\377\377\377\377\377\377\377\33\377\377\377\365\377"
-  "\377\377\375\377\377\3778\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\345"
-  "\377\377\377\375\377\377\377Q\377\377\377\377\377\377\377\377\377\377\377"
-  "\313\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377\13\377\377\377\361\377\377\377\347\377\377\377\377\377\377\377\377\0"
-  "\0\0\0\377\377\377\214\377\377\377\377\377\377\377\343\0\0\0\0\0\0\0\0\377"
-  "\377\377\261\377\377\377\377\377\377\377\272\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\377\377\377\13\377\377\377\351\377\377\377\376\377\377\377i"
-  "\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\366\377\377\377\372\377\377\377"
-  "8\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377v\377\377\377\327\377"
-  "\377\377\322\377\377\377\322\377\377\377\316\377\377\377\351\377\377\377"
-  "\377\377\377\377\360\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377U\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377"
-  "\377\377\320\377\377\377\376\377\377\377_\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\377\377\377\13\377\377\377\364\377\377\377\254\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377"
-  "\377\377\377\377\377\377\377\377\377\377\272\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\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\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\233\377\377\377\371\377\377\377"
-  "i\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\376\377\377"
-  "\377i\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\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\377\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\377\377\377K\377\377\377\374\377\377\377\333"
-  "\0\0\0\0\377\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\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377I\377\377\377\373\377\377\377"
-  "\356\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377"
-  "\377\376\377\377\377i\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"
-  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
-  "S\377\377\377\314\377\377\377\271\377\377\377\13\0\0\0\0\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377S\377"
-  "\377\377\314\377\377\377\271\377\377\377\13\0\0\0\0\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\375\377\377\377\252\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\377\377\377\377\377\377"
-  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\360\377\377\377\334\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377"
-  "\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\377\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\377\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\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\377\377\377\247\377\377\377\377\377\377\377l\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\377\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\377\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\377\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\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\361\377\377\377\337\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\377\377\377\313\377\377\377\372\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\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\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\3\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\331"
-  "\377\377\377\376\377\377\377i\377\377\377K\377\377\377\374\377\377\377\366"
-  "\377\377\377)\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\377\377\377\316\377\377\377\333\0\0\0\0\377\377\377\316\377\377\377"
-  "\333\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
-  "8\377\377\377\372\377\377\377\377\377\377\377\307\377\377\377\237\377\377"
-  "\377\364\377\377\377\377\377\377\377\244\0\0\0\0\377\377\377\377\377\377"
-  "\377\377\377\377\377\232\377\377\377\375\377\377\3772\377\377\377=\377\377"
-  "\377\375\377\377\377\254\377\377\377!\377\377\377\371\377\377\377\367\377"
-  "\377\3778\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377;\377\377\377"
-  "\372\377\377\377\346\377\377\377\13\377\377\377\371\377\377\377\333\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\377\377\377\13\377\377\377\355\377\377\377\375\377\377\377\\\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\377\377\13\377\377\377\355\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377!\377\377\377\372\377\377\377\375\377\377\3778\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377\327\377\377\377\343\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\320\377\377"
-  "\377\374\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\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\377\377\377\224\377\377\377\377\377\377\377\252\0\0"
-  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\204\377"
-  "\377\377\377\377\377\377\353\377\377\377\13\0\0\0\0\377\377\377\320\377\377"
-  "\377\377\377\377\377\260\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\0\0\0\0\377\377\377\205\377\377\377\322\377\377\377\353\377\377\377\376"
-  "\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\377\377\377\325\377\377\377\375\377\377\377M\0\0\0\0\377\377\377\33"
-  "\377\377\377\356\377\377\377\376\377\377\377l\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\377\377\377\215\377\377\377\375\377\377\377Z\0\0\0\0"
-  "\0\0\0\0\377\377\377\325\377\377\377\377\377\377\377\257\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\25\377\377\377"
-  "\356\377\377\377\377\377\377\377\377\377\377\377\326\0\0\0\0\0\0\0\0\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\374\377\377"
-  "\377\330\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\377\377\377"
-  "\377\377\377\377\0\0\0\0\377\377\377!\377\377\377\371\377\377\377\377\377"
-  "\377\377\216\0\0\0\0\0\0\0\0\377\377\377\302\377\377\377\224\0\0\0\0\377"
-  "\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\377\377\377\302\377\377\377\377\377\377\377\252\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\377\377\377V\377\377\377\375\377\377\377\333"
-  "\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\260\0\0\0\0"
-  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\330\377\377\377\377"
-  "\377\377\377\251\0\0\0\0\377\377\377\13\377\377\377\336\377\377\377\377\377"
-  "\377\377\227\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\377\377\377\250\377\377\377\276\377\377\377\33\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\377\377\377\250\377\377\377\276\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\377\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"
-  "\377\377\377\276\377\377\377\377\377\377\377\377\377\377\377\225\0\0\0\0"
-  "\377\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\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\377\377\377I\377\377\377\373\377\377\377\377\377\377\377\325\377"
-  "\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\0\0\0\0\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\306\377"
-  "\377\377\376\377\377\377l\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\377\377\377K\377\377\377\374\377\377\377\375\377\377\377q\0\0\0\0\377\377"
-  "\377\33\377\377\377\362\377\377\377\366\377\377\377%\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\334\377\377\377\377\377"
-  "\377\377\376\377\377\377\360\377\377\377\33\0\0\0\0\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\243"
-  "\0\0\0\0\0\0\0\0\377\377\377\223\377\377\377\377\377\377\377\327\0\0\0\0"
-  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377s\377\377\377\376\377"
-  "\377\377\375\377\377\377_\0\0\0\0\0\0\0\0\377\377\377z\377\377\377\257\0"
-  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377"
-  "\376\377\377\377U\0\0\0\0\377\377\377\33\377\377\377\353\377\377\377\377"
-  "\377\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
-  "\377K\377\377\377\374\377\377\377\326\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\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377"
-  "\377\355\377\377\377\366\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\247\377\377\377"
-  "\377\377\377\377\364\377\377\377)\0\0\0\0\0\0\0\0\377\377\377\246\377\377"
-  "\377\213\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313"
-  "\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
-  "\355\377\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\355\377\377\377\363\377\377\377\13\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\213\377\377\377\377\377\377\377"
-  "\252\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377"
-  "\377\377\377\377\377\377\252\0\0\0\0\377\377\377\270\377\377\377\377\377"
-  "\377\377\355\377\377\377\33\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0"
-  "\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377"
-  "\377\377\307\377\377\377\377\377\377\377\375\377\377\3778\377\377\377\13"
-  "\377\377\377\352\377\377\377\377\377\377\377\327\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\377\377\377\307\377\377\377\377\377\377\377\377"
-  "\377\377\377\251\0\0\0\0\377\377\377\13\377\377\377\361\377\377\377\333\0"
-  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377"
-  "\377\377\377\377\315\0\0\0\0\0\0\0\0\377\377\377\253\377\377\377\377\377"
-  "\377\377\346\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
-  "\224\377\377\377\377\377\377\377\243\0\0\0\0\0\0\0\0\377\377\377\25\377\377"
-  "\377\356\377\377\377\376\377\377\377l\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\377\377\377\313\377\377\377\377\377\377\377\310\0\0\0\0\0\0\0\0\377"
-  "\377\377\253\377\377\377\377\377\377\377\342\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\243\0\0"
-  "\0\0\0\0\0\0\377\377\377!\377\377\377\371\377\377\377\367\377\377\377)\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\232\377\377\377\377\377"
-  "\377\377\315\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\302\377\377\377z\0\0\0\0"
-  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377\355\377\377\377\363\377\377\377\13\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377"
-  "i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377"
-  "\377%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\312\377\377\377"
-  "\377\377\377\377\215\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377"
-  "\377\347\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\247\377\377"
-  "\377\377\377\377\377\206\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377K\377"
-  "\377\377\374\377\377\377\333\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
-  "\0\0\377\377\377\342\377\377\377\376\377\377\377v\377\377\377\33\377\377"
-  "\377\366\377\377\377\367\377\377\377)\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\377\377\377\214\377\377\377\377\377\377\377\316\0\0\0\0\0\0"
-  "\0\0\377\377\377\232\377\377\377\377\377\377\377\264\0\0\0\0\377\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\377\377\377"
-  "\25\377\377\377\356\377\377\377\376\377\377\377v\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\376"
-  "\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\377\377\377\377\277\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\364\377\377\377\254\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\377\377\377\335\377\377\377\370\377\377\377\353\377\377\377\363\377"
-  "\377\377%\0\0\0\0\0\0\0\0\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377)\377\377\377V\377\377\377\33\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224"
-  "\377\377\377\376\377\377\377b\0\0\0\0\377\377\377S\377\377\3775\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\377\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\377\377\377S\377\377\377I\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377S\377"
-  "\377\3775\377\377\377;\377\377\377\374\377\377\377\333\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377)\377\377"
-  "\377V\377\377\377\13\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377;\377\377\377\374\377\377\377\326"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377E\377\377\377E\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377"
-  "\377\376\377\377\377b\0\0\0\0\377\377\377E\377\377\377S\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377"
-  "\377\375\377\377\377\252\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\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377"
-  "\377\377\361\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377)\377\377\377X\0"
-  "\0\0\0\0\0\0\0\377\377\377V\0\0\0\0\0\0\0\0\377\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\377\377\377E\377\377\377S\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\377\377\377E\377\377\377K\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\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\377"
-  "\377\377S\377\377\3775\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377S\377\377\3775\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377)\377\377\377U\0\0\0\0\0\0\0\0"
-  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377E\377\377\377U\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\376\377\377"
-  "\377b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\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\377\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\377\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\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\361"
-  "\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371"
-  "\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377"
-  "%\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\0\377"
-  "\377\377\0\377\377\377\6\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371"
-  "\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377l\377\377\377\33"
-  "\377\377\377\364\377\377\377\352\377\377\377\13\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\377\377\3772\377\377\377\274\377\377\377\361\377\377"
-  "\377\375\377\377\377\265\377\377\377\367\377\377\377\372\377\377\377\221"
-  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377V\377\377\377"
-  "\374\377\377\377\336\0\0\0\0\0\0\0\0\377\377\3775\377\377\377\261\377\377"
-  "\377\13\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\232\377\377\377"
-  "\371\377\377\377\33\377\377\377;\377\377\377\374\377\377\377\217\377\377"
-  "\377\335\377\377\377\375\377\377\377\\\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\377\377\377\33\377\377\377\371\377\377\377\333\377\377\377e"
-  "\377\377\377\374\377\377\377\326\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\361\377"
-  "\377\377\364\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377b\377\377\377\375\377\377\377"
-  "\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\266\377\377\377\377\377\377\377"
-  "\227\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\377\377\377\316\377\377\377\334\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\377\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\377\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\377\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\377\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\377\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\377\377\377\335\377\377"
-  "\377\375\377\377\377=\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\377\377\377\306\377\377\377\377\377\377\377\225\0\0\0\0\0\0\0\0\377"
-  "\377\377`\377\377\377\375\377\377\377\346\0\0\0\0\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\213\377\377\377\376"
-  "\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\377\377\3772\377\377\377f\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\253\377"
-  "\377\377\376\377\377\377i\0\0\0\0\377\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\377\377\377\231\377\377\377\377"
-  "\377\377\377\257\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\377\377\377\313\377\377\377\377\377\377\377\356\377\377\377\374"
-  "\377\377\377\332\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\377\377\377K\377\377\377\374\377\377\377\326\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\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
-  "\224\377\377\377\377\377\377\377\326\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\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\377\377\377b\377\377\377\375\377\377\377\347\377\377\377\13"
-  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377U\377\377\377"
-  "\375\377\377\377\266\0\0\0\0\0\0\0\0\377\377\377;\377\377\377\374\377\377"
-  "\377\236\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\25\377\377\377"
-  "\361\377\377\377\367\377\377\377)\0\0\0\0\0\0\0\0\377\377\377j\377\377\377"
-  "\376\377\377\377\322\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\377\377\377\214\377\377\377\377\377\377\377\377\377\377\377"
-  "\260\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\377\377\377\214\377\377\377\377\377\377\377\377\377\377\377"
-  "\260\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\377\377\377G\377\377\377\350\377\377\377\377\377\377\377\367"
-  "\377\377\377y\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377"
-  "\377\377\207\377\377\377\307\377\377\377\304\377\377\377\304\377\377\377"
-  "\304\377\377\377\304\377\377\377\304\377\377\377\243\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377S\377\377\377\351\377\377"
-  "\377\377\377\377\377\365\377\377\377n\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377"
-  "\13\377\377\377\345\377\377\377\376\377\377\377_\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\377\377\377\273\377\377\377\377\377\377\377\234"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\232\377\377\377\376\377\377\377i\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377;\377\377\377\373"
-  "\377\377\377\344\377\377\377\317\377\377\377\376\377\377\377v\0\0\0\0\0\0"
-  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377"
-  "\377\377\377\377\252\0\0\0\0\0\0\0\0\377\377\377X\377\377\377\375\377\377"
-  "\377\327\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\300"
-  "\377\377\377\377\377\377\377\277\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\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377"
-  "\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377"
-  "\377\375\377\377\377Q\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
-  "K\377\377\377\374\377\377\377\332\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\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377"
-  "\355\377\377\377\366\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\342\377\377\377\377"
-  "\377\377\377\225\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\377"
-  "\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377"
-  "\377b\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377"
-  "\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377\13\377\377\377\355\377\377\377\366\377\377\377)\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\377\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\377\377\377\224\377\377\377\377\377\377\377\252\0\0\0\0\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377"
-  "\377\377\237\377\377\377\203\377\377\377\377\377\377\377\375\377\377\377"
-  "Q\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13"
-  "\377\377\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\312\377"
-  "\377\377\377\377\377\377\377\377\377\377\217\377\377\377X\377\377\377\375"
-  "\377\377\377\373\377\377\377\332\0\0\0\0\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\377\377\377\313\377\377\377\373\377\377\377\371\377\377\377\366"
-  "\377\377\377%\377\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\377"
-  "\377\377\377\377\377\377\377\377\377\377\33\377\377\377\362\377\377\377\375"
-  "\377\377\377\\\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\366\377\377\377"
-  "\375\377\377\377Q\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224"
-  "\377\377\377\377\377\377\377\252\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\306"
-  "\377\377\377\375\377\377\377\\\377\377\377\377\377\377\377\377\377\377\377"
-  "\33\377\377\377\362\377\377\377\375\377\377\377Q\0\0\0\0\0\0\0\0\377\377"
-  "\377!\377\377\377\371\377\377\377\375\377\377\377M\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\252\0\0\0\0"
-  "\0\0\0\0\377\377\377\25\377\377\377\370\377\377\377\364\377\377\377%\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\232\377\377\377\377\377"
-  "\377\377\304\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\377\377"
-  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355"
-  "\377\377\377\366\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377i\0\0\0\0"
-  "\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\204\377\377\377\377\377"
-  "\377\377\311\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377"
-  "\260\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\222\377\377\377"
-  "\377\377\377\377\252\0\0\0\0\377\377\377\307\377\377\377\355\377\377\377"
-  "%\377\377\377K\377\377\377\374\377\377\377\260\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\0\0\0\0\377\377\377l\377\377\377\376\377\377\377\333\377\377"
-  "\377\243\377\377\377\377\377\377\377\244\0\0\0\0\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\345\377\377\377\375\377"
-  "\377\377M\377\377\377\13\377\377\377\351\377\377\377\372\377\377\377)\0\0"
-  "\0\0\377\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\377\377\377\317\377\377\377\377\377\377\377\277\0\0\0\0\0\0\0\0\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377"
-  "\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\25\377\377\377\362\377\377\377"
-  "\363\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\364\377"
-  "\377\377\254\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\0\0\0\0\377\377\377U\377\377\377\374\377\377\377\316\377\377\377\247"
-  "\377\377\377\377\377\377\377\206\0\0\0\0\0\0\0\0\377\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\377\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\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\216\377\377\377\345\377\377"
-  "\377\377\377\377\377\377\377\377\377\376\377\377\377\275\0\0\0\0\0\0\0\0"
-  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\376"
-  "\377\377\377\271\377\377\377\364\377\377\377\377\377\377\377\377\377\377"
-  "\377\313\377\377\377\13\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0"
-  "\0\0\0\377\377\377\13\377\377\377\272\377\377\377\371\377\377\377\377\377"
-  "\377\377\377\377\377\377\355\377\377\377\200\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\361\377\377\377\377"
-  "\377\377\377\377\377\377\377\325\377\377\377\377\377\377\377\332\0\0\0\0"
-  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\3775\377\377\377"
-  "\327\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377\267\0\0"
-  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\205\377"
-  "\377\377\361\377\377\377\363\377\377\377\377\377\377\377\374\377\377\377"
-  "\364\377\377\377\367\377\377\377\354\377\377\377%\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\0\0\0\0\377\377\377b\377\377\377\350\377\377\377\377\377"
-  "\377\377\377\377\377\377\360\377\377\377\360\377\377\377\375\377\377\377"
-  "\243\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377"
-  "\376\377\377\377\215\377\377\377\350\377\377\377\377\377\377\377\377\377"
-  "\377\377\346\377\377\3772\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\377\377\377\301\377\377\377\370\377\377\377\364\377\377\377\364\377\377"
-  "\377\360\377\377\377\350\377\377\377%\0\0\0\0\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\377\377\377\301\377\377\377\370\377\377\377\364\377"
-  "\377\377\364\377\377\377\360\377\377\377\350\377\377\377%\0\0\0\0\0\0\0\0"
-  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\375\377"
-  "\377\377\252\0\0\0\0\0\0\0\0\377\377\377S\377\377\377\354\377\377\377\363"
-  "\377\377\377I\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\342\377\377"
-  "\377\332\377\377\377\374\377\377\377\377\377\377\377\276\377\377\377\353"
-  "\377\377\377\377\377\377\377\352\377\377\377)\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\377\377\377\214\377\377\377\371\377\377\377\212\377\377\377"
-  "\350\377\377\377\377\377\377\377\377\377\377\377\346\377\377\3772\0\0\0\0"
-  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377u\377\377\377"
-  "\351\377\377\377\377\377\377\377\377\377\377\377\364\377\377\377\222\0\0"
-  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\213\377"
-  "\377\377\371\377\377\377\262\377\377\377\365\377\377\377\377\377\377\377"
-  "\377\377\377\377\313\377\377\377\13\0\0\0\0\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\361\377\377\377\377\377\377\377"
-  "\377\377\377\377\310\377\377\377\347\377\377\377\315\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\301\377\377\377\351\377"
-  "\377\377)\377\377\377\326\377\377\377\377\377\377\377\377\377\377\377\372"
-  "\377\377\377M\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377"
-  "\224\377\377\377\365\377\377\377\377\377\377\377\377\377\377\377\373\377"
-  "\377\377\300\377\377\377=\0\0\0\0\377\377\377\377\377\377\377\377\377\377"
-  "\377\13\377\377\377\332\377\377\377\360\377\377\377\373\377\377\377\377\377"
-  "\377\377\376\377\377\377\364\377\377\377\367\377\377\377\354\377\377\377"
-  "%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\301\377\377\377\354"
-  "\377\377\3772\0\0\0\0\0\0\0\0\377\377\377I\377\377\377\364\377\377\377\275"
-  "\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377I\377\377\377\364\377"
-  "\377\377\330\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\267\377\377\377"
-  "\367\377\377\377\\\377\377\377\377\377\377\377\377\377\377\377\335\377\377"
-  "\377\360\377\377\3778\0\0\0\0\377\377\377~\377\377\377\224\0\0\0\0\377\377"
-  "\377\13\377\377\377\332\377\377\377\342\377\377\377\377\377\377\377\377\0"
-  "\0\0\0\377\377\377\275\377\377\377\373\377\377\377\255\0\0\0\0\0\0\0\0\377"
-  "\377\377r\377\377\377\370\377\377\377\315\0\0\0\0\377\377\377\377\377\377"
-  "\377\377\377\377\377I\377\377\377\364\377\377\377\330\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\377\377\377\254\377\377\377\367\377\377\377\\\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\365\377\377\377\364\377"
-  "\377\377\364\377\377\377\364\377\377\377\360\377\377\377\360\377\377\377"
-  "\354\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\377\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313"
-  "\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\7\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\377\377\313\377\377\377\372\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\306\377\377\377\375"
-  "\377\377\3778\377\377\377\13\377\377\377\364\377\377\377\334\0\0\0\0\0\0"
-  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\364"
-  "\377\377\377\376\377\377\377\370\377\377\377\364\377\377\377\376\377\377"
-  "\377\374\377\377\377\320\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\377\377\3778\377\377\377\372\377\377\377\376\377\377\377\307\377\377\377"
-  "O\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377"
-  "\377\223\377\377\377\377\377\377\377\234\377\377\377\243\377\377\377\376"
-  "\377\377\377\217\377\377\377\373\377\377\377v\0\0\0\0\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\331\377\377\377\377\377"
-  "\377\377\377\377\377\377\367\377\377\3778\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\323"
-  "\377\377\377\374\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\245\377\377\377\377\377"
-  "\377\377\215\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377V\377\377\377\375\377\377"
-  "\377\322\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\377\377\377\260\377\377\377\354\377\377\377\236\377\377\377\326\377\377"
-  "\377\361\377\377\377\224\377\377\377\341\377\377\377\314\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313"
-  "\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\325"
-  "\377\377\377\374\377\377\3772\377\377\377\215\377\377\377\241\377\377\377"
-  "\13\377\377\377\361\377\377\377\367\377\377\377)\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\376"
-  "\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\307\377\377\377"
-  "\376\377\377\377l\0\0\0\0\377\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\377\377\377\200\377\377\377\363\377\377\377\376"
-  "\377\377\377s\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377"
-  "\377\377\240\377\377\377\377\377\377\377\363\377\377\377V\377\377\377\374"
-  "\377\377\377\333\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\377\377\377K\377\377\377\374\377\377\377\333\377\377\377\274\377\377\377"
-  "\310\377\377\377\251\377\377\377=\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\377\377\377\314\377\377\377\376\377\377\377l\377\377\377"
-  "j\377\377\377\237\377\377\377\223\377\377\377%\0\0\0\0\0\0\0\0\377\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\377\377\377"
-  "\342\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\377\377\3778\377\377\377\372\377\377\377\376\377\377\377"
-  "\237\0\0\0\0\377\377\377\254\377\377\377\377\377\377\377\243\0\0\0\0\377"
-  "\377\377\377\377\377\377\377\377\377\377\25\377\377\377\361\377\377\377\366"
-  "\377\377\377\33\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\366\377\377\377"
-  "\355\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\377\377\377\232\377\377\377\377\377\377\377\377\377\377\377\323\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\377\377\377\232\377\377\377\377\377\377\377\377\377\377\377\323\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377"
-  "\377\224\377\377\377\374\377\377\377\377\377\377\377\314\377\377\377\33\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
-  "\274\377\377\377\377\377\377\377\370\377\377\377\370\377\377\377\370\377"
-  "\377\377\370\377\377\377\373\377\377\377\321\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\264\377\377\377"
-  "\377\377\377\377\377\377\377\377\262\0\0\0\0\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\337"
-  "\377\377\377\377\377\377\377\271\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
-  "\377\377\377\377\377\25\377\377\377\361\377\377\377\352\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\377\377\377U\377\377\377\237\377\377\377\376\377\377\377l\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\232\377\377\377\377"
-  "\377\377\377\266\377\377\377\213\377\377\377\377\377\377\377\304\0\0\0\0"
-  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377"
-  "\377\377\377\377\377\265\377\377\377E\377\377\377y\377\377\377\337\377\377"
-  "\377\377\377\377\377\227\0\0\0\0\377\377\377\377\377\377\377\377\377\377"
-  "\377\13\377\377\377\352\377\377\377\375\377\377\377Q\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\377\377\377\377\377\377\377\0\0\0\0\377"
-  "\377\377\313\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377\324\377\377\377\376\377\377\377l\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\377\377\377K\377\377\377\374\377\377\377\337\377\377\377Z\377\377\377"
-  "p\377\377\377p\377\377\377f\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377)\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377"
-  "\377\3775\377\377\377\371\377\377\377\367\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\377\377\377\377\377\377\377\377\0\0\0\0\377"
-  "\377\377\313\377\377\377\376\377\377\377\224\377\377\377m\377\377\377v\377"
-  "\377\377h\377\377\377\362\377\377\377\366\377\377\377%\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377"
-  "\377\366\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\224\377"
-  "\377\377\377\377\377\377\252\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\377\377\377\224\377\377\377\377\377\377\377\300\377\377\377\372\377"
-  "\377\377\377\377\377\377\236\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377"
-  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\377\377\377\313\377\377\377\370\377\377\377\366\377\377\377"
-  "\317\377\377\377\243\377\377\377\376\377\377\377\372\377\377\377\333\0\0"
-  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377"
-  "\367\377\377\377\304\377\377\377\377\377\377\377\251\377\377\377\13\377\377"
-  "\377\361\377\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\377\377"
-  "\377U\377\377\377\374\377\377\377\343\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\377\377\314\377\377\377\376\377\377\377i\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\243\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\377\377\377\335\377\377\377\376\377\377\377l\377\377\377\377\377"
-  "\377\377\377\377\377\377U\377\377\377\374\377\377\377\336\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\377\377\377\317\377\377\377\376\377\377\377l\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377"
-  "\243\0\0\0\0\0\0\0\0\377\377\377`\377\377\377\373\377\377\377\366\377\377"
-  "\377%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377`\377\377\377\374"
-  "\377\377\377\377\377\377\377\336\377\377\377\205\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377\13\377\377\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377"
-  "\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377"
-  "\377\366\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
-  "\33\377\377\377\371\377\377\377\360\377\377\377\33\0\0\0\0\377\377\377\320"
-  "\377\377\377\376\377\377\377_\0\0\0\0\377\377\377\377\377\377\377\377\377"
-  "\377\377U\377\377\377\375\377\377\377\277\377\377\377\33\377\377\377\366"
-  "\377\377\377\376\377\377\377m\377\377\377\213\377\377\377\377\377\377\377"
-  "\243\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
-  "\324\377\377\377\377\377\377\377\377\377\377\377\355\377\377\377\33\0\0\0"
-  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\204"
-  "\377\377\377\377\377\377\377\304\377\377\377\204\377\377\377\377\377\377"
-  "\377\260\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\377\377\377\214\377\377\377\377\377\377\377\355\377\377"
-  "\377\33\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\377\377\377\224\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377\266\377\377\377\377\377\377\377\206\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377\13\377\377\377\364\377\377\377\254\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\266\377\377\377\377\377"
-  "\377\377\207\377\377\377K\377\377\377\374\377\377\377\327\0\0\0\0\0\0\0\0"
-  "\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377}\377\377\377"
-  "\377\377\377\377\373\377\377\377\313\377\377\377\303\377\377\377\374\377"
-  "\377\377\377\377\377\377\252\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\377\377\377\224\377\377\377\377\377\377\377\377\377\377\377\351\377"
-  "\377\377\300\377\377\377\365\377\377\377\377\377\377\377\316\0\0\0\0\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\346\377\377"
-  "\377\377\377\377\377\365\377\377\377\305\377\377\377\315\377\377\377\376"
-  "\377\377\377\366\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0\0\377"
-  "\377\377}\377\377\377\376\377\377\377\377\377\377\377\325\377\377\377\321"
-  "\377\377\377\376\377\377\377\377\377\377\377\332\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\377\377\3778\377\377\377\371\377\377\377\377\377"
-  "\377\377\335\377\377\377\263\377\377\377\351\377\377\377\377\377\377\377"
-  "\304\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377S\377\377"
-  "\377\330\377\377\377\343\377\377\377\377\377\377\377\364\377\377\377\327"
-  "\377\377\377\333\377\377\377\322\377\377\377\33\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\377\377\3778\377\377\377\372\377\377\377\376\377\377\377\275"
-  "\377\377\377\307\377\377\377\376\377\377\377\377\377\377\377\324\377\377"
-  "\377y\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377"
-  "\377\377\377\377\377\377\377\377\370\377\377\377\306\377\377\377\356\377"
-  "\377\377\377\377\377\377\322\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\377\377\377\224\377\377\377\336\377\377\377\333\377\377\377\327\377"
-  "\377\377\377\377\377\377\366\377\377\377)\0\0\0\0\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\336\377\377\377\333"
-  "\377\377\377\327\377\377\377\377\377\377\377\366\377\377\377)\0\0\0\0\0\0"
-  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\375"
-  "\377\377\377\252\0\0\0\0\377\377\377`\377\377\377\373\377\377\377\377\377"
-  "\377\377\242\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\377\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\355"
-  "\377\377\377\377\377\377\377\346\377\377\377\362\377\377\377\377\377\377"
-  "\377\362\377\377\377\347\377\377\377\377\377\377\377\215\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\377"
-  "\377\377\377\370\377\377\377\306\377\377\377\356\377\377\377\377\377\377"
-  "\377\322\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377u\377"
-  "\377\377\376\377\377\377\377\377\377\377\321\377\377\377\307\377\377\377"
-  "\375\377\377\377\377\377\377\377\243\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\377\377\377\377"
-  "\352\377\377\377\300\377\377\377\365\377\377\377\377\377\377\377\316\0\0"
-  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377}\377\377\377\376"
-  "\377\377\377\377\377\377\377\325\377\377\377\321\377\377\377\376\377\377"
-  "\377\377\377\377\377\332\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377\366\377\377\377\377"
-  "\377\377\377\335\377\377\377\322\377\377\377\343\377\377\377%\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\377\377\377u\377\377\377\377\377\377\377\370"
-  "\377\377\377\277\377\377\377\262\377\377\377\346\377\377\377\377\377\377"
-  "\377\231\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377"
-  "\315\377\377\377\330\377\377\377\370\377\377\377\377\377\377\377\335\377"
-  "\377\377\327\377\377\377\333\377\377\377\322\377\377\377\33\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377l\0\0"
-  "\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\377\377\377\341\377\377\377\376\377\377"
-  "\377v\0\0\0\0\0\0\0\0\377\377\377!\377\377\377\371\377\377\377\366\377\377"
-  "\377)\377\377\377\377\377\377\377\377\377\377\377\313\377\377\377\377\377"
-  "\377\377\205\377\377\377\13\377\377\377\364\377\377\377\376\377\377\377Q"
-  "\377\377\377!\377\377\377\371\377\377\377\352\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\377\377\377I\377\377\377\372\377\377\377\376\377\377\377v\377"
-  "\377\377\33\377\377\377\362\377\377\377\376\377\377\377}\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\377\377\377\335\377\377\377\376\377\377"
-  "\377v\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\364\377\377\377\372\377"
-  "\377\3772\377\377\377\377\377\377\377\377\0\0\0\0\377\377\3775\377\377\377"
-  "\323\377\377\377\333\377\377\377\333\377\377\377\327\377\377\377\377\377"
-  "\377\377\377\377\377\377\326\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\320\377\377\377\355\377\377\377"
-  "\13\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\377\377\377\313\377\377\377\371\377\377\377\33\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377}\377\377"
-  "\377\313\377\377\377\257\377\377\377\13\0\0\0\0\377\377\377\223\377\377\377"
-  "\252\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\377\377\377\0\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\316"
-  "\377\377\377\352\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\0\0\0\0\377\377\377z\377\377\377\325\377\377\377\33\377"
-  "\377\377\13\377\377\377\314\377\377\377\267\0\0\0\0\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377!\377\377\377\373\377\377\377"
-  "\211\377\377\377!\377\377\377\374\377\377\377\200\0\0\0\0\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\205\377\377\377\370"
-  "\377\377\377\377\377\377\377\377\377\377\377\345\377\377\377\200\0\0\0\0"
-  "\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\333\377"
-  "\377\377\377\377\377\377\377\377\377\377\321\0\0\0\0\377\377\377r\377\377"
-  "\377z\377\377\377%\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
-  "\377\25\377\377\377\337\377\377\377\377\377\377\377\375\377\377\3778\0\0"
-  "\0\0\377\377\377U\377\377\377\365\377\377\377\256\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\255\377\377\377\275"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\377\377\377\314\377\377\377\376\377\377\377b\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\377\377\377\33\377\377\377\371\377\377\377\333\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377~\377\377\377"
-  "\347\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\361\377\377\377\227\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\377\377\377\312\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\322\0\0\0\0\377"
-  "\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\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\377\377\377\312\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\322\0\0\0\0\377"
-  "\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\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\261\377\377\377\377\377\377\377"
-  "\215\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377"
-  "\25\377\377\377\361\377\377\377\363\377\377\377E\377\377\377\375\377\377"
-  "\377\377\377\377\377V\377\377\377\324\377\377\377\366\377\377\377%\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224"
-  "\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377j\377\377"
-  "\377\375\377\377\377\361\377\377\377%\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\215\0\0\0\0\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\377\377\377b\377\377\377\374\377\377\377\375\377\377"
-  "\377Q\377\377\377K\377\377\377\374\377\377\377\332\0\0\0\0\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\375\377\377\377"
-  "\377\377\377\377\374\377\377\377\376\377\377\377\377\377\377\377\375\377"
-  "\377\377s\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\312"
-  "\377\377\377\377\377\377\377\360\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\376\377\377\377\213\0\0\0\0\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\377\377"
-  "\377\377\315\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\0\0\0\0\377\377\377\215\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\333\0\0\0\0\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\377\377\377\321\377\377\377\377\377\377\377\315\377"
-  "\377\377q\377\377\377\221\377\377\377\363\377\377\377\377\377\377\377\364"
-  "\377\377\377)\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\377\377G\377\377\377\330\377\377\377\343\377\377\377c\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
-  "G\377\377\377\330\377\377\377\343\377\377\377c\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377V\377\377\377\375\377\377"
-  "\377\376\377\377\377\214\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\377\377U\377\377\377\374\377\377\377"
-  "\377\377\377\377m\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\377\377\377\330\377\377\377\377\377\377\377\271\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377U\377\377\377"
-  "\375\377\377\377\252\0\0\0\0\377\377\377\233\377\377\377\366\377\377\377"
-  "\377\377\377\377\377\377\377\377\376\377\377\377i\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\0\0\0\0\377\377\377\334\377\377\377\376\377\377\377U\377"
-  "\377\377!\377\377\377\371\377\377\377\363\377\377\377%\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\371\377"
-  "\377\377)\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377"
-  "\377\355\377\377\377\366\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\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377"
-  "\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377"
-  "\377\376\377\377\377i\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
-  "K\377\377\377\374\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\375\377\377\377)\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377l\0\0\0\0\377"
-  "\377\377\377\377\377\377\377\377\377\377K\377\377\377\374\377\377\377\333"
-  "\0\0\0\0\0\0\0\0\377\377\377\247\377\377\377\327\377\377\377\322\377\377"
-  "\377\300\377\377\377\13\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
-  "\312\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\364\377\377\377%\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377"
-  "\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\224"
-  "\377\377\377\377\377\377\377\252\0\0\0\0\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\332\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377"
-  "\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\377\377\377\313\377\377\377\363\377\377\377\301\377\377"
-  "\377\373\377\377\377\356\377\377\377\333\377\377\377\352\377\377\377\333"
-  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377"
-  "\377\376\377\377\377w\377\377\377\371\377\377\377\366\377\377\377!\377\377"
-  "\377\360\377\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\377\377"
-  "\377K\377\377\377\374\377\377\377\327\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\377\377\312\377\377\377\377\377\377\377\251\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\326\377\377\377"
-  "\247\377\377\377\262\377\377\377\351\377\377\377\377\377\377\377\355\377"
-  "\377\377\33\377\377\377\377\377\377\377\377\377\377\377K\377\377\377\374"
-  "\377\377\377\343\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377"
-  "\377\376\377\377\377i\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
-  "\224\377\377\377\377\377\377\377\356\377\377\377\340\377\377\377\343\377"
-  "\377\377\376\377\377\377\377\377\377\377\304\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\365\377\377\377\377"
-  "\377\377\377\377\377\377\377\364\377\377\377\247\0\0\0\0\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
-  "\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377i\0\0"
-  "\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%"
-  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\321\377\377"
-  "\377\376\377\377\377i\377\377\377\33\377\377\377\365\377\377\377\355\377"
-  "\377\377\13\0\0\0\0\377\377\377\377\377\377\377\377\377\377\3778\377\377"
-  "\377\372\377\377\377\327\377\377\377c\377\377\377\377\377\377\377\377\377"
-  "\377\377\271\377\377\377\205\377\377\377\376\377\377\377i\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377l\377\377\377\377\377"
-  "\377\377\377\377\377\377\226\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\344\377\377\377\376\377"
-  "\377\377\372\377\377\377\367\377\377\377)\0\0\0\0\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377!\377\377\377\371\377"
-  "\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\376\377\377"
-  "\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\377\377\377V\377\377\377\375\377\377\377\326\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\364\377\377\377\254\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\33\377"
-  "\377\377\364\377\377\377\363\377\377\377%\0\0\0\0\377\377\377\335\377\377"
-  "\377\375\377\377\377M\0\0\0\0\377\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\377"
-  "\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\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\0\0\0\0\377\377\377\177\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\205\377"
-  "\377\377\376\377\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\377\377\377\224\377\377\377\377\377\377\377\257\0\0\0\0\0\0\0\0\377"
-  "\377\377;\377\377\377\373\377\377\377\372\377\377\3778\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\377\377\377\247\377\377\377\377\377\377\377\345\377"
-  "\377\377\33\0\0\0\0\0\0\0\0\377\377\377O\377\377\377X\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\377\377\377\13\377\377\377\351\377\377\377\377\377\377"
-  "\377\252\0\0\0\0\0\0\0\0\377\377\377b\377\377\377\375\377\377\377\332\0\0"
-  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\306\377\377\377"
-  "\377\377\377\377\252\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\344\377\377\377"
-  "\372\377\377\377)\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\377\377\377%\377\377\377\374\377\377\377\326\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\232\377\377\377"
-  "\377\377\377\377\264\0\0\0\0\0\0\0\0\377\377\377\335\377\377\377\376\377"
-  "\377\377Q\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224"
-  "\377\377\377\377\377\377\377\325\377\377\377\13\0\0\0\0\377\377\377;\377"
-  "\377\377\373\377\377\377\363\377\377\377%\377\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\377\377\377\354\377\377\377\366"
-  "\377\377\377%\0\0\0\0\0\0\0\0\377\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\377\377\377\354\377\377\377\366\377\377\377"
-  "%\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377"
-  "\377\377\375\377\377\377\237\377\377\377j\377\377\377\374\377\377\377\376"
-  "\377\377\377\214\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377"
-  "\377\377\361\377\377\377\352\0\0\0\0\377\377\377\306\377\377\377\375\377"
-  "\377\377=\377\377\377\211\377\377\377\377\377\377\377\252\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\325"
-  "\377\377\377\13\0\0\0\0\377\377\377;\377\377\377\373\377\377\377\363\377"
-  "\377\377%\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\351"
-  "\377\377\377\377\377\377\377\243\0\0\0\0\0\0\0\0\377\377\377r\377\377\377"
-  "\375\377\377\377\363\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\377\377\377\224\377\377\377\377\377\377\377\257\0\0\0\0\0\0\0\0\377\377"
-  "\377;\377\377\377\373\377\377\377\372\377\377\3778\377\377\377\377\377\377"
-  "\377\377\377\377\377\13\377\377\377\351\377\377\377\377\377\377\377\252\0"
-  "\0\0\0\0\0\0\0\377\377\377b\377\377\377\375\377\377\377\332\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\312\377\377\377\377"
-  "\377\377\377\372\377\377\377f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377"
-  "\333\377\377\377\13\0\0\0\0\0\0\0\0\377\377\377S\0\0\0\0\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\306\377\377"
-  "\377\376\377\377\377U\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377i\0\0\0\0"
-  "\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\377\377\377\204\377\377\377\377\377\377\377"
-  "\322\0\0\0\0\0\0\0\0\377\377\377\241\377\377\377\377\377\377\377\264\0\0"
-  "\0\0\377\377\377\377\377\377\377\377\377\377\377\224\377\377\377\377\377"
-  "\377\377\266\377\377\377;\377\377\377\374\377\377\377\377\377\377\377\226"
-  "\377\377\377l\377\377\377\377\377\377\377\300\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\0\0\0\0\377\377\377u\377\377\377\376\377\377\377\361\377\377"
-  "\377\325\377\377\377\377\377\377\377\252\0\0\0\0\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\377\377\377s\377\377\377\377\377\377\377\333\0\0"
-  "\0\0\0\0\0\0\377\377\377\215\377\377\377\377\377\377\377\277\0\0\0\0\377"
-  "\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\377"
-  "\377\377\314\377\377\377\377\377\377\377\333\0\0\0\0\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377E\377\377\377\217\377\377"
-  "\377\373\377\377\377\343\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377"
-  "\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\376\377"
-  "\377\377\247\377\377\377I\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\377\377\377\214\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\364\377\377\377\245\377\377\377\372\377\377\377\355\0\0\0\0"
-  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377\0\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\324\377\377\377"
-  "\343\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\205\377\377\377"
-  "\271\377\377\377\376\377\377\377\303\377\377\377\262\377\377\377\377\377"
-  "\377\377\315\377\377\377l\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\220\377\377\377\341\377\377\377\377"
-  "\377\377\377\377\377\377\377\233\0\0\0\0\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\257\377\377\377)\377\377\377"
-  "\313\377\377\377\377\377\377\377\377\377\377\377\375\377\377\377\\\377\377"
-  "\377\377\377\377\377\377\377\377\377\13\377\377\377\342\377\377\377\377\377"
-  "\377\377\373\377\377\377\377\377\377\377\265\0\0\0\0\377\377\377\266\377"
-  "\377\377\377\377\377\377\215\377\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\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377"
-  "\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
-  "\360\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\261\377\377\377\377\377\377\377"
-  "\377\377\377\377\332\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\377\377\377`\377\377\377\262\377\377\377\251\377\377\377\354"
-  "\377\377\377\373\377\377\377\261\377\377\377\262\377\377\377\224\0\0\0\0"
-  "\377\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\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\377\377\377v\377\377\377\263\377\377\377\255\377\377\377\255\377"
-  "\377\377\255\377\377\377\255\377\377\377\263\377\377\377\224\0\0\0\0\377"
-  "\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\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\356\377\377\377\366\377\377"
-  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377"
-  "\13\377\377\377\356\377\377\377\363\371\371\377.\377\377\377\362\377\377"
-  "\377\375\377\377\377B\377\377\377\335\377\377\377\366\377\377\377%\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224"
-  "\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377U\377\377\377\373"
-  "\377\377\377\376\377\377\377s\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\205\377\377\377\271\377\377\377"
-  "\332\377\377\377\377\377\377\377\373\377\377\377r\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\377\377\377\33\377\377\377\362\377\377\377\377\377\377\377"
-  "\242\377\377\377E\377\377\377x\377\377\377\374\377\377\377\336\377\377\377"
-  "K\377\377\377\13\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377"
-  "\377\216\377\377\377]\0\0\0\0\0\0\0\0\377\377\377\251\377\377\377\377\377"
-  "\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
-  "\312\377\377\377\377\377\377\377\356\377\377\377v\0\0\0\0\377\377\377\220"
-  "\377\377\377\374\377\377\377\363\377\377\377\33\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\324\377\377\377\376\377"
-  "\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\377\377\377j\377\377\377\374\377\377\377\367\377\377\377\260\377\377\377"
-  "\342\377\377\377\377\377\377\377\376\377\377\377\224\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\377\377\3775\377\377\377\347\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\343\377\377\377\374\377\377"
-  "\377\360\377\377\377%\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377"
-  "\377\377\25\377\377\377\337\377\377\377\377\377\377\377\361\377\377\377\200"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\377\377\377b\377\377\377\232\377\377\377\232\377\377\377\232\377\377\377"
-  "\232\377\377\377\232\377\377\377\232\377\377\377}\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377_\377\377\377"
-  "\345\377\377\377\377\377\377\377\361\377\377\3778\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377V\377\377\377\376\377"
-  "\377\377\344\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\377\377\377K\377\377\377\374\377\377\377\245\377\377\377l\377\377\377"
-  "\377\377\377\377\344\377\377\377v\377\377\377;\377\377\377\375\377\377\377"
-  "l\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377;\377\377\377\373\377"
-  "\377\377\376\377\377\377\301\377\377\377\271\377\377\377\374\377\377\377"
-  "\376\377\377\377v\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
-  "\377\224\377\377\377\377\377\377\377\304\377\377\377e\377\377\377x\377\377"
-  "\377\300\377\377\377\376\377\377\377\367\377\377\377)\377\377\377\377\377"
-  "\377\377\377\377\377\377\13\377\377\377\361\377\377\377\367\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\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377i\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\377\377\377\307\377\377\377\376\377\377\377i\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\343\377"
-  "\377\377|\377\377\377\202\377\377\377\211\377\377\377\202\377\377\377\13"
-  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377"
-  "\355\377\377\377\373\377\377\377\300\377\377\377\276\377\377\377\276\377"
-  "\377\377\302\377\377\377G\0\0\0\0\377\377\377\377\377\377\377\377\377\377"
-  "\377U\377\377\377\374\377\377\377\352\377\377\377\13\0\0\0\0\377\377\377"
-  "\307\377\377\377\374\377\377\377\377\377\377\377\372\377\377\377)\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377"
-  "\377\240\377\377\377\200\377\377\377\210\377\377\377\202\377\377\377\371"
-  "\377\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\224\377\377\377\377\377\377"
-  "\377\252\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224"
-  "\377\377\377\377\377\377\377\377\377\377\377\311\377\377\377\343\377\377"
-  "\377\377\377\377\377\225\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\377\377\377\313\377\377\377\366\377\377\377]\377\377\377\375\377\377"
-  "\377\377\377\377\377\211\377\377\377\354\377\377\377\333\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377"
-  "\377V\377\377\377\252\377\377\377\377\377\377\377\244\377\377\377\354\377"
-  "\377\377\334\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377U\377\377"
-  "\377\374\377\377\377\326\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\307"
-  "\377\377\377\376\377\377\377\177\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\377\377\377\224\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\374\377\377\377\324\377\377\377)\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\377\377\377U\377\377\377\374\377\377\377\327\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\307\377\377\377\376\377\377\377l\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377"
-  "\377\377\365\377\377\377\357\377\377\377\377\377\377\377\377\377\377\377"
-  "\224\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\377\377\377\210\377\377\377\335\377\377\377\377\377\377\377"
-  "\377\377\377\377\315\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
-  "\377\313\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377\13\377"
-  "\377\377\355\377\377\377\366\377\377\377)\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\0\0\0\0\377\377\377\215\377\377\377\377\377\377\377\254\377\377"
-  "\377c\377\377\377\377\377\377\377\273\0\0\0\0\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\377\377\377\13\377\377\377\361\377\377\377\340\377\377\377\277"
-  "\377\377\377\367\377\377\377\351\377\377\377\352\377\377\377\300\377\377"
-  "\377\375\377\377\377I\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\377\377\377\307\377\377\377\377\377\377\377\377\377\377\377\335\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\377\377\377}\377\377\377\376\377\377\377\377\377\377\377\252\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\377\377\377\325\377\377\377\377\377\377\377\264\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377\224\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
-  "\342\377\377\377\375\377\377\3778\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
-  "\364\377\377\377\254\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\377\377\377I\377\377\377\340\377\377\377\240\0\0\0\0\0\0\0\0"
-  "\377\377\377}\377\377\377\341\377\377\377Z\0\0\0\0\377\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\377\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\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377Q\377\377\377\306\377\377\377"
-  "\366\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\332\0\0"
-  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377"
-  "\376\377\377\377b\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\320\377\377\377\376"
-  "\377\377\377l\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\317\377"
-  "\377\377\376\377\377\377l\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\377\377\377\377\377\377\377\377\377\377\13\377\377\377\356\377\377\377"
-  "\372\377\377\377)\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377"
-  "\333\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\351"
-  "\377\377\377\377\377\377\377\361\377\377\377\354\377\377\377\354\377\377"
-  "\377\354\377\377\377\376\377\377\377\376\377\377\377l\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377"
-  "\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\377\377\377\215\377\377\377\377\377\377\377\311\0\0\0\0\0\0\0\0"
-  "\377\377\377\335\377\377\377\376\377\377\377i\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377_\0\0\0\0"
-  "\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377)\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
-  "\13\377\377\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377"
-  "\377\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333\377"
-  "\377\377\374\377\377\377\377\377\377\377\311\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377"
-  "\377\361\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\377\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\377"
-  "\377\377\313\377\377\377\371\377\377\377%\377\377\377\224\377\377\377\377"
-  "\377\377\377\252\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224"
-  "\377\377\377\376\377\377\377_\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
-  "\355\377\377\377\366\377\377\377)\377\377\377\377\377\377\377\377\377\377"
-  "\377\13\377\377\377\356\377\377\377\372\377\377\377)\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\377\377\377\345\377\377\377\376\377\377\377i\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377b\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\377\377\377\321\377\377\377\376\377\377\377l\377\377\377\377"
-  "\377\377\377\377\377\377\377\13\377\377\377\356\377\377\377\372\377\377\377"
-  ")\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333\0\0\0\0\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377"
-  "\377\377\377\377\205\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\333\377\377\377\377"
-  "\377\377\377\377\377\377\377\354\377\377\377\300\377\377\377\\\0\0\0\0\0"
-  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
-  "\313\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377"
-  "\377i\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333\0\0\0"
-  "\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\355"
-  "\377\377\377\375\377\377\377M\377\377\377\13\377\377\377\355\377\377\377"
-  "\375\377\377\377=\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377U\377"
-  "\377\377\374\377\377\377\333\377\377\377\217\377\377\377\373\377\377\377"
-  "\361\377\377\377\312\377\377\377\241\377\377\377\377\377\377\377\215\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\253\377"
-  "\377\377\377\377\377\377\377\377\377\377\315\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\335\377\377\377"
-  "\376\377\377\377i\0\0\0\0\377\377\377\342\377\377\377\375\377\377\377Q\0"
-  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\377\377\315\377\377\377\377\377\377\377\342\377\377\377\13\0\0\0\0\0\0\0"
-  "\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377V\377\377\377\375\377"
-  "\377\377\377\377\377\377\377\377\377\377\252\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377c\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377l\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\360\377\377"
-  "\377\33\377\377\377\205\377\377\377\365\377\377\377\377\377\377\377\364\377"
-  "\377\377\\\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\377\377\377\0\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
-  "|\377\377\377\206\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\307"
-  "\377\377\377\377\377\377\377\377\377\377\377\370\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\244\0\0\0\0\377\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\377\377\377\205"
-  "\377\377\377\376\377\377\377\336\0\0\0\0\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\0\0\0\0\377\377\377\302\377\377\377\377\377\377\377\242\377\377"
-  "\377\374\377\377\377\264\377\377\377\33\377\377\377\371\377\377\377\316\377"
-  "\377\377\377\377\377\377\377\377\377\377b\377\377\377\376\377\377\377\326"
-  "\377\377\377\25\377\377\377\362\377\377\377\377\377\377\377\304\377\377\377"
-  "\372\377\377\377\360\377\377\377\33\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\317"
-  "\377\377\377\376\377\377\377_\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377"
-  "\377\361\377\377\377\334\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\0\0\0\0\377\377\377`\377\377\377\374\377\377\377\343\377"
-  "\377\377\313\377\377\377\377\377\377\377\215\0\0\0\0\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\306\377"
-  "\377\377\371\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\377\377\377s\377\377\377\377\377\377\377\304\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\320\377"
-  "\377\377\375\377\377\377=\0\0\0\0\0\0\0\0\377\377\377\25\377\377\377\362"
-  "\377\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377i\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\377\377\377l\377\377\377\373\377\377\377\376\377\377\377\214\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\377\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\377\377\377\204\377\377\377\377\377\377\377\333\0\0"
-  "\0\0\377\377\377\377\377\377\377\377\377\377\377\224\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377m\377\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\377\377\377\33\377"
-  "\377\377\366\377\377\377\367\377\377\377)\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\377\377\377\317\377\377\377\376\377\377\377e\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\377\377\377\330\377\377\377\371\377\377\377)\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\365\377\377\377"
-  "\363\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
-  "\377\377\377\13\377\377\377\351\377\377\377\375\377\377\377=\0\0\0\0\0\0"
-  "\0\0\377\377\377}\377\377\377\374\377\377\377\366\377\377\377%\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377U\377\377\377p\377"
-  "\377\377M\377\377\377!\377\377\377\373\377\377\377\333\0\0\0\0\377\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\377\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\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\234\377"
-  "\377\377\374\377\377\377\377\377\377\377\320\377\377\377%\0\0\0\0\0\0\0\0"
-  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\320\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\337\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\377\377\377\271\377\377\377\377\377\377\377\377\377\377"
-  "\377\267\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\251\377\377\377V\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377K\377\377"
-  "\377\374\377\377\377\245\377\377\377|\377\377\377\377\377\377\377y\0\0\0"
-  "\0\377\377\377\247\377\377\377\376\377\377\377l\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\377\377\377\240\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\373\377\377\377\377\377\377\377\304\0\0"
-  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377"
-  "\377\377\377\377\244\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377"
-  "\376\377\377\377l\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\334"
-  "\377\377\377\377\377\377\377\205\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\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377"
-  "\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377"
-  "\377\377\376\377\377\377i\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
-  "\377K\377\377\377\374\377\377\377\327\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\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377"
-  "\377\355\377\377\377\366\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\377\377\377\377\377\377\377\377\377\377\377\25\377\377\377\362\377"
-  "\377\377\375\377\377\377=\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377"
-  "\377\371\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
-  "\313\377\377\377\376\377\377\377b\0\0\0\0\0\0\0\0\377\377\377\13\377\377"
-  "\377\355\377\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377"
-  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\224\377\377\377\377\377"
-  "\377\377\257\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
-  "\224\377\377\377\377\377\377\377\331\0\0\0\0\377\377\377j\377\377\377\376"
-  "\377\377\377\366\377\377\377)\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\377\377\377\313\377\377\377\371\377\377\377\33\377\377\377\351\377\377\377"
-  "\371\377\377\377!\377\377\377\360\377\377\377\333\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377i\377"
-  "\377\377\33\377\377\377\365\377\377\377\365\377\377\377\361\377\377\377\333"
-  "\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377K\377\377\377\374\377"
-  "\377\377\364\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\340\377\377"
-  "\377\376\377\377\377l\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
-  "\224\377\377\377\377\377\377\377\257\0\0\0\0\377\377\377\13\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377I\377\377\377"
-  "\373\377\377\377\363\377\377\377%\0\0\0\0\0\0\0\0\377\377\377\13\377\377"
-  "\377\345\377\377\377\376\377\377\377i\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\377\377\377\224\377\377\377\377\377\377\377\243\0\0\0\0\377\377\377"
-  "\330\377\377\377\377\377\377\377\257\0\0\0\0\0\0\0\0\377\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\377\377\377"
-  "l\377\377\377\373\377\377\377\375\377\377\377M\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366"
-  "\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\377\377\377\313\377\377\377\376\377\377\377b\0\0\0\0\0\0\0\0\377\377"
-  "\377\13\377\377\377\361\377\377\377\355\377\377\377\33\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\0\0\0\0\377\377\377!\377\377\377\372\377\377\377\337"
-  "\377\377\377\257\377\377\377\376\377\377\377l\0\0\0\0\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\377\377\377\324\377\377\377\370\377\377\377"
-  "\360\377\377\377\323\377\377\377\255\377\377\377\375\377\377\377\333\377"
-  "\377\377\371\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
-  "\377\377\377l\377\377\377\376\377\377\377\337\377\377\377\326\377\377\377"
-  "\377\377\377\377\234\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\356\377\377\377\372\377\377"
-  "\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
-  "\0\0\377\377\377\232\377\377\377\377\377\377\377\346\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\377\377\377\224\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\377\377\377\232\377\377\377\377\377\377\377\244\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377\13\377\377\377\364\377\377\377\254\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377"
-  "\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\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\377\377\377\215\377\377\377\376\377\377\377\376\377\377\377\313\377"
-  "\377\377\224\377\377\377\202\377\377\377\374\377\377\377\332\0\0\0\0\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\376\377"
-  "\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\324\377\377\377\376\377\377"
-  "\377i\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\314\377\377\377"
-  "\376\377\377\377b\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\377"
-  "\377\377\377\377\377\377\377\377\377\13\377\377\377\355\377\377\377\374\377"
-  "\377\377)\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333\0"
-  "\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\352\377"
-  "\377\377\377\377\377\377\321\377\377\377\321\377\377\377\316\377\377\377"
-  "\322\377\377\377\316\377\377\377\315\377\377\377G\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377"
-  "\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\377\377\377\13\377\377\377\361\377\377\377\377\377\377\377\362\377\377"
-  "\377\366\377\377\377\377\377\377\377\326\0\0\0\0\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377i\0\0"
-  "\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%"
-  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377\13\377\377\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
-  "\13\377\377\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\374\377\377\377"
-  "\377\377\377\377\370\377\377\377\366\377\377\377\376\377\377\377\214\0\0"
-  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\361\377\377"
-  "\377\333\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377%\377\377\377"
-  "\223\377\377\377\377\377\377\377\252\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\377\377\377\224\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377"
-  "\377\13\377\377\377\355\377\377\377\366\377\377\377%\377\377\377\377\377"
-  "\377\377\377\377\377\377\13\377\377\377\355\377\377\377\374\377\377\377)"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\317\377\377\377\376\377\377\377l\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\376\377"
-  "\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\324\377\377\377\376\377\377"
-  "\377i\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\355\377"
-  "\377\377\374\377\377\377)\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377"
-  "\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377"
-  "\377\377\313\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377u\377\377\377\302\377\377\377\357\377\377\377\377\377\377\377\377\377"
-  "\377\377\276\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\377\377\377\313\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377"
-  "\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377;\377\377\377\374\377\377"
-  "\377\333\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377"
-  "\377\240\377\377\377\377\377\377\377\266\377\377\377s\377\377\377\377\377"
-  "\377\377\315\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377"
-  "\25\377\377\377\361\377\377\377\361\377\377\377\320\377\377\377\344\377\377"
-  "\377\303\377\377\377\356\377\377\377\316\377\377\377\375\377\377\377M\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\275\377"
-  "\377\377\377\377\377\377\377\377\377\377\314\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377v\377\377\377\377"
-  "\377\377\377\321\377\377\377M\377\377\377\375\377\377\377\327\0\0\0\0\0\0"
-  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
-  "\307\377\377\377\377\377\377\377\346\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377b\377\377\377"
-  "\237\377\377\377\374\377\377\377\336\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
-  "\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377"
-  "\377\376\377\377\377\263\377\377\377f\377\377\377\13\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\0\0\0\0\371\371\377.\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\377\377\377B\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\377\377\377\25\377\377\377\304\377\377\377\322\377\377\377S\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\214\377\377\377\374\377"
-  "\377\377\33\377\377\377\222\377\377\377\374\377\377\377%\0\0\0\0\0\0\0\0"
-  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\247\377\377\377\377"
-  "\377\377\377\302\377\377\377\\\377\377\3772\377\377\377\264\377\377\377\377"
-  "\377\377\377\326\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
-  "\377\315\377\377\377\377\377\377\377\257\377\377\377;\377\377\377\375\377"
-  "\377\377b\377\377\377\13\377\377\377\360\377\377\377\337\377\377\377\377"
-  "\377\377\377\377\377\377\377\204\377\377\377\377\377\377\377\322\0\0\0\0"
-  "\377\377\377\33\377\377\377\356\377\377\377\377\377\377\377\377\377\377\377"
-  "\217\0\0\0\0\377\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\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\247\377\377\377\377\377"
-  "\377\377\210\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377V\377\377\377\374\377\377"
-  "\377\326\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\0\0\0\0\377\377\377\317\377\377\377\374\377\377\3778\377\377\377\13\377"
-  "\377\377\351\377\377\377\366\377\377\377\33\0\0\0\0\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\324\377\377\377\374"
-  "\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\377\377\3775\377\377\377\347\377\377\377\367\377\377"
-  "\377\232\0\0\0\0\0\0\0\0\0\0\0\0\377\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"
-  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377_\377"
-  "\377\377\355\377\377\377\367\377\377\377}\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377"
-  "\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\377\377\377\261\377\377\377\377\377\377\377\257\0\0"
-  "\0\0\0\0\0\0\377\377\377\204\377\377\377\377\377\377\377\322\0\0\0\0\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
-  "\213\377\377\377\376\377\377\377U\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\375\377\377"
-  "\377\373\377\377\377s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\377\377\377\214\377\377\377}\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\377\377\377j\377\377\377\376\377\377\377\333\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\377\377\377~\377\377\377\202\377\377\377\202\377\377"
-  "\377\201\377\377\377\231\377\377\377\377\377\377\377\343\377\377\377z\377"
-  "\377\377\33\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\205\377\377"
-  "\377j\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\376\377\377\377\343"
-  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\255\377\377"
-  "\377\377\377\377\377\264\0\0\0\0\0\0\0\0\377\377\377\25\377\377\377\356\377"
-  "\377\377\372\377\377\377)\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\327\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\356"
-  "\377\377\377\375\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\355\377"
-  "\377\377\367\377\377\377)\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
-  "\377\377\3775\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\377\377"
-  "\377\377\257\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\377\377\377_\377\377\377\355\377\377\377\367\377\377\377}\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\377\3775\377\377\377\347\377\377\377\367\377\377\377\232\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\377\377\3772\377\377\377\327\377\377\377\377\377\377\377\375\377\377\377"
-  "z\0\0\0\0\377\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\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\377\377\3775\377\377\377\362\377\377\377\377\377\377\377"
-  "\346\377\377\377V\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377S\377\377\377\320\377\377\377"
-  "\305\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
-  "\377\377\377K\377\377\377\374\377\377\377\252\377\377\377K\377\377\377\374"
-  "\377\377\377\376\377\377\377\363\377\377\377\377\377\377\377\377\377\377"
-  "\377l\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\335\377\377\377"
-  "\376\377\377\377l\0\0\0\0\0\0\0\0\377\377\377;\377\377\377\373\377\377\377"
-  "\363\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224"
-  "\377\377\377\377\377\377\377\243\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
-  "\343\377\377\377\376\377\377\377l\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\377\377\377\232\377\377\377\377\377\377\377\356\377\377\377)\0\0\0\0\0\0"
-  "\0\0\377\377\3775\377\377\377\260\377\377\377\13\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377U\0\0\0\0\0\0"
-  "\0\0\377\377\377\276\377\377\377\377\377\377\377\346\377\377\377\13\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\374\377\377\377"
-  "\326\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\377\377\377\377"
-  "\377\377\377\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377"
-  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\377\377\377\312\377\377\377\377\377\377\377\321\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377%\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377i\0\0"
-  "\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%"
-  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377\355\377\377\377\366\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\377\377\377j\377\377\377\330\377\377\377%\0"
-  "\0\0\0\0\0\0\0\377\377\377\312\377\377\377\377\377\377\377\206\0\0\0\0\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377"
-  "\377\377\244\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\377\377\377\377"
-  "\277\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377"
-  "\377\355\377\377\377\366\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377"
-  "\371\377\377\377%\377\377\377]\377\377\377f\377\377\377\13\377\377\377\361"
-  "\377\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
-  "\377\313\377\377\377\376\377\377\377i\0\0\0\0\377\377\377\232\377\377\377"
-  "\377\377\377\377\377\377\377\377\327\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\377\377\377\334\377\377\377\377\377\377\377\252\0\0\0\0\0\0"
-  "\0\0\377\377\377}\377\377\377\376\377\377\377\363\377\377\377%\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377"
-  "\252\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\377\377\377\377"
-  "\377\377\377\0\0\0\0\377\377\377\332\377\377\377\377\377\377\377\251\0\0"
-  "\0\0\0\0\0\0\377\377\377\214\377\377\377\377\377\377\377\355\377\377\377"
-  "\13\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377"
-  "\377\377\377\252\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\375\377"
-  "\377\377Q\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\205"
-  "\377\377\377\304\377\377\377\13\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
-  "\362\377\377\377\375\377\377\377Q\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377"
-  "%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
-  "\377\312\377\377\377\377\377\377\377\264\0\0\0\0\0\0\0\0\377\377\377}\377"
-  "\377\377\376\377\377\377\332\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\377\377\377\330\377\377\377\376\377\377\377\372\377"
-  "\377\377\360\377\377\377\33\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\377\377\377\305\377\377\377\377\377\377\377\377\377\377\377\237"
-  "\377\377\377l\377\377\377\376\377\377\377\377\377\377\377\336\0\0\0\0\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\351\377\377"
-  "\377\376\377\377\377l\377\377\377K\377\377\377\374\377\377\377\372\377\377"
-  "\3772\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\377\377\13\377\377\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377;\377\377\377"
-  "\373\377\377\377\372\377\377\377=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224"
-  "\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377!\377\377"
-  "\377\372\377\377\377\347\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\364\377"
-  "\377\377\254\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377"
-  "\377\377\376\377\377\377b\0\0\0\0\0\0\0\0\377\377\377b\377\377\377\375\377"
-  "\377\377\332\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
-  "\224\377\377\377\377\377\377\377~\0\0\0\0\0\0\0\0\377\377\377U\377\377\377"
-  "\374\377\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\377\377\377\266\377\377\377\377\377\377\377\326\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\377\377\377\13\377\377\377e\0\0\0\0\377\377\377\377\377\377\377\377\377"
-  "\377\377\13\377\377\377\355\377\377\377\376\377\377\377v\0\0\0\0\0\0\0\0"
-  "\377\377\377s\377\377\377\376\377\377\377\332\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\377\377\377\317\377\377\377\377\377\377\377\251\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\377\377\377\377\377\377"
-  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\377\377\377j\377\377\377\375\377\377\377\326\377\377\377\302\377\377\377"
-  "\304\377\377\377\206\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0"
-  "\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377"
-  "\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355"
-  "\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\361\377\377\377=\377"
-  "\377\377V\377\377\377\374\377\377\377\375\377\377\377M\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\361"
-  "\377\377\377\355\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
-  "\377\377\377\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\377\377\377"
-  "\313\377\377\377\371\377\377\377%\377\377\377\223\377\377\377\377\377\377"
-  "\377\252\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377"
-  "\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377"
-  "\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\377\377\377\13"
-  "\377\377\377\355\377\377\377\376\377\377\377\215\0\0\0\0\0\0\0\0\377\377"
-  "\377V\377\377\377\374\377\377\377\367\377\377\377)\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377~\0\0\0\0\0\0"
-  "\0\0\377\377\377K\377\377\377\374\377\377\377\366\377\377\377)\377\377\377"
-  "\377\377\377\377\377\377\377\377\13\377\377\377\355\377\377\377\376\377\377"
-  "\377v\0\0\0\0\0\0\0\0\377\377\377s\377\377\377\375\377\377\377\332\0\0\0"
-  "\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\313\377\377"
-  "\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\377\377\3772\377\377\377n\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\377\377\377`\377\377\377\373\377\377\377\366\377\377\377)\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\317\377\377"
-  "\377\376\377\377\377v\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\377\377\377\314\377\377\377\376\377\377\377b\0\0\0\0"
-  "\0\0\0\0\377\377\377\254\377\377\377\377\377\377\377\332\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\366\377"
-  "\377\377\361\377\377\377\331\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0"
-  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\320\377\377\377\377"
-  "\377\377\377\377\377\377\377\273\377\377\377\205\377\377\377\377\377\377"
-  "\377\376\377\377\377\355\377\377\377\33\377\377\377\377\377\377\377\377\0"
-  "\0\0\0\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\336\377\377\377"
-  "\330\377\377\377\377\377\377\377\256\0\0\0\0\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\342\377\377\377\375\377"
-  "\377\377\326\377\377\377\376\377\377\377~\0\0\0\0\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\275\377\377\377\377\377\377"
-  "\377\345\377\377\377\13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\323\377\377\377"
-  "\360\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377"
-  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377\33\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\377\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\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\1\377\377\377\0\377"
-  "\377\377\0\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\206\377\377\377\377\377\377"
-  "\377\377\377\377\377\260\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377"
-  "\377\313\377\377\377\360\377\377\377\13\377\377\377\316\377\377\377\352\377"
-  "\377\377\13\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
-  "\377\205\377\377\377\365\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\356\377\377\3778\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\377\377\377\224\377\377\377\377\377\377\377\311\0\0\0\0\377"
-  "\377\377K\377\377\377\374\377\377\377\316\377\377\377y\377\377\377\374\377"
-  "\377\377\273\377\377\377\377\377\377\377\377\377\377\377!\377\377\377\371"
-  "\377\377\377\377\377\377\377\315\377\377\377\242\377\377\377\360\377\377"
-  "\377\377\377\377\377\377\377\377\377\370\377\377\377\237\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\377\377\377`\377\377\377\375\377\377\377\327\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\377\377\377\266\377\377\377\377\377\377\377\217\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\371\371\377.\377\377"
-  "\377M\0\0\0\0\0\0\0\0\371\371\377.\377\377\377M\0\0\0\0\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377|\377\377"
-  "\377s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\377\377\377\232\377\377\377\377\377\377\377\377\377"
-  "\377\377\343\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
-  "\232\377\377\377\377\377\377\377\377\377\377\377\326\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377!\377\377"
-  "\377\371\377\377\377\352\377\377\377\13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\377\377\3778\377\377\377\372\377\377"
-  "\377\377\377\377\377\275\377\377\377\253\377\377\377\374\377\377\377\376"
-  "\377\377\377s\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
-  "r\377\377\377\314\377\377\377\304\377\377\377\332\377\377\377\377\377\377"
-  "\377\321\377\377\377\307\377\377\377\271\377\377\377\13\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\377\377\377\263\377\377\377\377\377\377\377\377\377"
-  "\377\377\350\377\377\377\307\377\377\377\322\377\377\377\321\377\377\377"
-  "\310\377\377\377\33\377\377\377\377\377\377\377\377\377\377\3778\377\377"
-  "\377\373\377\377\377\377\377\377\377\325\377\377\377\242\377\377\377\275"
-  "\377\377\377\371\377\377\377\377\377\377\377\272\0\0\0\0\377\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\377\377\377K\377"
-  "\377\377\374\377\377\377\333\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\377\377\3778\377\377\377\373\377\377\377\377\377\377\377\321\377\377"
-  "\377\250\377\377\377\307\377\377\377\375\377\377\377\377\377\377\377\234"
-  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\33\377\377\377"
-  "\362\377\377\377\377\377\377\377\313\377\377\377\214\377\377\377\345\377"
-  "\377\377\377\377\377\377\322\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\376\377\377\377\326\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
-  "\377\302\377\377\377\377\377\377\377\346\377\377\377\226\377\377\377\201"
-  "\377\377\377\320\377\377\377\377\377\377\377\347\377\377\377\13\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\377\377\377\266\377\377\377\377\377\377\377"
-  "\307\377\377\377\250\377\377\377\335\377\377\377\377\377\377\377\356\377"
-  "\377\377\33\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\377\377\377\232\377\377\377\377\377\377\377\377\377\377\377\326\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\377\377\377\232\377\377\377\377\377\377\377\377\377\377\377\343\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\377\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\377\377\377\207\377\377\377\374\377\377\377\266"
-  "\0\0\0\0\377\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\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\377\377\377V\377\377\377\375\377\377\377\247\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\377\377\377\377\377\377\377\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\377\377\377\306\377\377\377\377\377\377\377\376\377"
-  "\377\377l\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377"
-  "\377\13\377\377\377\355\377\377\377\352\0\0\0\0\377\377\377s\377\377\377"
-  "\314\377\377\377\315\377\377\377v\377\377\377\245\377\377\377%\377\377\377"
-  "\377\377\377\377\377\377\377\377K\377\377\377\373\377\377\377\360\377\377"
-  "\377\33\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\335\377\377\377\376\377\377\377"
-  "~\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377"
-  "\377\377\377\335\377\377\377\275\377\377\377\310\377\377\377\366\377\377"
-  "\377\377\377\377\377\346\377\377\377\33\377\377\377\377\377\377\377\377\0"
-  "\0\0\0\377\377\377\13\377\377\377\342\377\377\377\377\377\377\377\370\377"
-  "\377\377\300\377\377\377\276\377\377\377\371\377\377\377\377\377\377\377"
-  "\227\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\312\377\377\377"
-  "\377\377\377\377\325\377\377\377\303\377\377\377\361\377\377\377\377\377"
-  "\377\377\375\377\377\377f\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\377\377\377K\377\377\377\374\377\377\377\362\377\377\377\316\377\377\377"
-  "\316\377\377\377\316\377\377\377\322\377\377\377\273\377\377\377\13\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\356\377\377\377"
-  "\366\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\377\377\3778\377\377\377\371\377\377\377\377\377"
-  "\377\377\352\377\377\377\271\377\377\377\321\377\377\377\375\377\377\377"
-  "\372\377\377\377)\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313"
-  "\377\377\377\376\377\377\377l\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
-  "\355\377\377\377\366\377\377\377)\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\377\377\377u\377\377\377\325\377\377\377\316\377\377\377\371\377\377\377"
-  "\373\377\377\377\320\377\377\377\322\377\377\377\207\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\377\377\377\302\377\377\377\377\377\377\377"
-  "\365\377\377\377\266\377\377\377\324\377\377\377\377\377\377\377\375\377"
-  "\377\377=\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224"
-  "\377\377\377\377\377\377\377\252\0\0\0\0\0\0\0\0\377\377\3778\377\377\377"
-  "\372\377\377\377\376\377\377\377i\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\377\377\377\13\377\377\377\356\377\377\377\376\377\377\377\320\377\377\377"
-  "\316\377\377\377\316\377\377\377\316\377\377\377\322\377\377\377V\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\371\377\377"
-  "\377%\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\361\377\377\377\333\0\0"
-  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377"
-  "\376\377\377\377l\0\0\0\0\377\377\377\13\377\377\377\352\377\377\377\377"
-  "\377\377\377\332\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
-  "\377j\377\377\377\375\377\377\377\377\377\377\377\321\377\377\377\302\377"
-  "\377\377\375\377\377\377\377\377\377\377\234\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\252\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\377\377\377\377\377\377"
-  "\377\0\0\0\0\377\377\377j\377\377\377\375\377\377\377\377\377\377\377\320"
-  "\377\377\377\307\377\377\377\375\377\377\377\377\377\377\377\216\0\0\0\0"
-  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377"
-  "\377\377\377\252\0\0\0\0\0\0\0\0\377\377\377\266\377\377\377\377\377\377"
-  "\377\336\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377"
-  "\351\377\377\377\377\377\377\377\370\377\377\377\306\377\377\377\264\377"
-  "\377\377\351\377\377\377\377\377\377\377\343\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\356\377\377"
-  "\377\366\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\377\377\377b\377\377\377\375\377\377\377\377\377\377\377\325"
-  "\377\377\377\307\377\377\377\374\377\377\377\377\377\377\377\227\0\0\0\0"
-  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\232"
-  "\377\377\377\377\377\377\377\377\377\377\377\304\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377"
-  "\377\377\377\375\377\377\377_\377\377\377\33\377\377\377\365\377\377\377"
-  "\377\377\377\377\322\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377"
-  "\377\377\253\377\377\377\377\377\377\377\322\0\0\0\0\0\0\0\0\377\377\377"
-  "\275\377\377\377\377\377\377\377\315\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\356\377\377\377\366"
-  "\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\377\377\377\334\377\377\377\377\377\377\377\372\377\377\377\310\377"
-  "\377\377\316\377\377\377\316\377\377\377\321\377\377\377\310\377\377\377"
-  "%\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224"
-  "\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377"
-  "\317\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\364\377"
-  "\377\377\254\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\307\377"
-  "\377\377\377\377\377\377\336\377\377\377\233\377\377\377\305\377\377\377"
-  "\376\377\377\377\377\377\377\377\332\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\376\377\377\377"
-  "\307\377\377\377\255\377\377\377\370\377\377\377\377\377\377\377\272\0\0"
-  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377!\377\377\377\366"
-  "\377\377\377\377\377\377\377\346\377\377\377\271\377\377\377\270\377\377"
-  "\377\365\377\377\377\375\377\377\377M\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\377\377\377\255\377\377\377\377\377\377\377\373\377\377\377\257\377"
-  "\377\377\302\377\377\377\376\377\377\377\377\377\377\377\332\0\0\0\0\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377`\377\377\377\374\377\377"
-  "\377\377\377\377\377\332\377\377\377\233\377\377\377\260\377\377\377\367"
-  "\377\377\377\316\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\377\377\377U\377\377\377\374\377\377\377\333\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\215\377"
-  "\377\377\377\377\377\377\342\377\377\377\242\377\377\377\237\377\377\377"
-  "\246\377\377\377\247\377\377\377X\0\0\0\0\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\377"
-  "\377\377\13\377\377\377\356\377\377\377\366\377\377\377)\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
-  "\356\377\377\377\366\377\377\377)\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377"
-  "\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\377\377\377K\377\377\377\375\377\377\377\245\0\0\0\0\0\0\0\0\377"
-  "\377\377\233\377\377\377\377\377\377\377\356\377\377\377%\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377"
-  "\377\377\376\377\377\377\302\377\377\377\262\377\377\377\322\377\377\377"
-  "\33\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\361\377\377"
-  "\377\333\0\0\0\0\377\377\377\320\377\377\377\371\377\377\377%\377\377\377"
-  "\223\377\377\377\377\377\377\377\252\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\377\377\377\224\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377"
-  "\377\13\377\377\377\356\377\377\377\366\377\377\377)\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\377\377\377\214\377\377\377\377\377\377\377\376\377"
-  "\377\377\274\377\377\377\255\377\377\377\370\377\377\377\377\377\377\377"
-  "\265\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377"
-  "\377\377\377\377\377\377\376\377\377\377\307\377\377\377\255\377\377\377"
-  "\370\377\377\377\377\377\377\377\272\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\377\377\377\255\377\377\377\377\377\377\377\373\377\377\377"
-  "\257\377\377\377\302\377\377\377\376\377\377\377\377\377\377\377\332\0\0"
-  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\313\377"
-  "\377\377\376\377\377\377l\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\377\377\377\341\377\377\377\377\377\377"
-  "\377\335\377\377\377\233\377\377\377\213\377\377\377\306\377\377\377\377"
-  "\377\377\377\352\377\377\377\13\377\377\377\377\377\377\377\377\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\377\377\377\241\377\377\377\377\377\377\377\365\377\377\377"
-  "\245\377\377\377\255\377\377\377\325\377\377\3772\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\377\377\377\275\377\377\377\377\377\377\377\361\377\377"
-  "\377\252\377\377\377\331\377\377\377\377\377\377\377\377\377\377\377\332"
-  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377\266\377\377\377\377\377\377\377\377\377\377\377\336\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\240\377\377"
-  "\377\377\377\377\377\377\377\377\377\207\377\377\377K\377\377\377\374\377"
-  "\377\377\377\377\377\377\315\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\377\377\377U\377\377\377\374\377\377\377\372\377\377\3778\377\377\377"
-  "!\377\377\377\366\377\377\377\376\377\377\377\177\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\377\377"
-  "\377\377\377\377\377\377\352\377\377\377\13\0\0\0\0\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\377\377\377\267\377\377\377\377\377\377\377\377"
-  "\377\377\377\311\377\377\377\302\377\377\377\304\377\377\377\304\377\377"
-  "\377\271\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\377\377\377\13\377\377\377\361\377\377\377\327\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\377\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\377\377\377b\377\377\377\374\377\377\377\377\377\377\377\225\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\377\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\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\316\377\377\377\333\0\0\0\0"
-  "\377\377\377\316\377\377\377\334\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377w\377\377\377\343\377"
-  "\377\377\375\377\377\377\201\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\377\377\377\13\377\377\377\244\377\377\377\13\0\0\0\0\0\0\0"
-  "\0\377\377\377\302\377\377\377\377\377\377\377\377\377\377\377\364\377\377"
-  "\377Z\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377~\377\377\377\370"
-  "\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377\275\377\377"
-  "\377\266\377\377\377\376\377\377\377\323\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\377\377\377\335\377\377\377\376\377\377\377~\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377K\377\377"
-  "\377\373\377\377\377\363\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377I\377\377"
-  "\377\357\377\377\377\377\377\377\377\364\377\377\377)\0\0\0\0\0\0\0\0\377"
-  "\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\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\376\377\377\377\377\377\377"
-  "\377\244\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\0\0\0\0\377\377\377\232\377\377\377\377\377\377\377\251\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
-  "\377\377\377l\377\377\377\367\377\377\377\377\377\377\377\377\377\377\377"
-  "\376\377\377\377\223\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\377\377\377\232\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\372\377\377\377"
-  ")\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\355\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\360\377\377\377\33\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\377\377\377j\377\377\377\350\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\376\377\377\377\302\0\0\0\0\0\0\0\0\377\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\377\377"
-  "\377;\377\377\377\372\377\377\377\316\0\0\0\0\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\377\377\377u\377\377\377\351\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\373\377\377\377\254\0\0\0\0\0\0\0\0"
-  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377S\377\377\377"
-  "\354\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\325\377"
-  "\377\377\33\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\377\377\377\214\377\377\377\377\377\377\377\244\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377"
-  "\377\315\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\342\377\377\3772\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\377\377\377\177\377\377\377\365\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\342\377\377\3772\0\0\0\0\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\376\377"
-  "\377\377\377\377\377\377\244\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377I\377\377\377\357\377\377"
-  "\377\377\377\377\377\364\377\377\377)\0\0\0\0\0\0\0\0\377\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\377"
-  "\377\377\13\377\377\377M\0\0\0\0\377\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"
-  "\377\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\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\232\377\377\377\377\377\377\377\375"
-  "\377\377\377\\\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0"
-  "\0\0\0\377\377\377\255\377\377\377\377\377\377\377\234\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\377\377\377\377\377\377\377\377\377\377"
-  "\224\377\377\377\377\377\377\377\276\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\377\377\240\377\377\377\377\377\377\377\266\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\377\377\377\215\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\370\377\377\377\312\377\377\377%\0\0\0\0"
-  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
-  "\316\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\376\377"
-  "\377\377\255\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
-  "\305\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\373\377"
-  "\377\377\330\377\377\377V\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\372\377\377\377"
-  ")\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\351"
-  "\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377I\377\377\377\345"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\370\377\377"
-  "\377\241\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313"
-  "\377\377\377\375\377\377\377\\\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
-  "\355\377\377\377\355\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0"
-  "\0\377\377\377\224\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\336\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\316\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\373\377\377\377\213\0\0"
-  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377"
-  "\377\377\377\377\377\377\252\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\247\377"
-  "\377\377\377\377\377\377\326\377\377\377\377\377\377\377\377\0\0\0\0\377"
-  "\377\377\13\377\377\377\351\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377_\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\366\377\377\377"
-  "%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\344\377\377\377\333\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\377\377\377\307\377\377\377\375\377\377"
-  "\377Q\0\0\0\0\0\0\0\0\377\377\377\204\377\377\377\377\377\377\377\327\0\0"
-  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\206\377"
-  "\377\377\371\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377"
-  "\240\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
-  "\215\377\377\377\377\377\377\377\244\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\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377"
-  "\206\377\377\377\370\377\377\377\377\377\377\377\377\377\377\377\376\377"
-  "\377\377\241\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377"
-  "\377\377\214\377\377\377\377\377\377\377\252\0\0\0\0\0\0\0\0\377\377\377"
-  "\33\377\377\377\356\377\377\377\376\377\377\377v\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\377\377\377\25\377\377\377\316\377\377\377\376\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\335\377\377\377)\0\0\0\0"
-  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377"
-  "\377\377\351\377\377\377\364\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\233\377\377\377\375"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\276\0\0\0\0"
-  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377;\377\377\377\372\377\377\377\376\377\377\377|\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377u\377\377\377\375\377"
-  "\377\377\355\377\377\377\33\0\0\0\0\377\377\377\320\377\377\377\377\377\377"
-  "\377\244\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\33\377\377\377"
-  "\366\377\377\377\372\377\377\377=\0\0\0\0\0\0\0\0\377\377\377\33\377\377"
-  "\377\362\377\377\377\376\377\377\377_\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\351\377\377\377\364\377\377"
-  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377"
-  "\13\377\377\377\356\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377l\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377"
-  "\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377}\377"
-  "\377\377\377\377\377\377\277\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\364\377\377"
-  "\377\254\0\0\0\0\0\0\0\0\0\0\0\0\377\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"
-  "\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377\377\3775\377\377\377"
-  "\347\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\303\377"
-  "\377\377\362\377\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\377\377\377\224\377\377\377\377\377\377\377\345\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\307\0\0\0\0\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377I\377\377\377\345\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\373\377\377\377\260"
-  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\310"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\326\377\377"
-  "\377\367\377\377\377\315\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\0\0\0\0\377\377\377l\377\377\377\356\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\370\377\377\377\231\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377;\377\377\377\373\377\377"
-  "\377\322\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\377\377\377I\377\377\377\373\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\216\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377"
-  "\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\351\377\377"
-  "\377\355\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\377\377\377\13\377\377\377\351\377\377\377\355\377\377\377"
-  "\33\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377)\0"
-  "\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377"
-  "\377\374\377\377\377\252\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\307\377\377"
-  "\377\377\377\377\377\304\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\377\377\377\223\377\377\377\375\377\377\377\377\377\377"
-  "\377\377\377\377\377\372\377\377\377M\377\377\377\377\377\377\377\377\377"
-  "\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\377\377\377\275\377\377"
-  "\377\371\377\377\377%\377\377\377\223\377\377\377\377\377\377\377\252\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\376\377"
-  "\377\377i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\351\377\377\377\355"
-  "\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377"
-  "\240\377\377\377\374\377\377\377\377\377\377\377\377\377\377\377\376\377"
-  "\377\377\275\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377"
-  "\377\377\224\377\377\377\377\377\377\377\352\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\307\0\0\0\0\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\0\0\0\0\377\377\377\310\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\337\377\377\377\377\377\377\377\332\0\0"
-  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\307\377"
-  "\377\377\375\377\377\377_\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\377\377\377c\377\377\377\330\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\354\377"
-  "\377\377Z\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\377\377\377\13\377\377\377\333\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\375\377\377\377_\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\377\377\377\33\377\377\377\350\377\377\377\377\377\377\377\377\377\377\377"
-  "\376\377\377\377\255\377\377\377\362\377\377\377\323\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377;\377\377\377\372"
-  "\377\377\377\376\377\377\377\206\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\377\377\377b\377\377\377\374\377\377\377\372\377"
-  "\377\377I\377\377\377\13\377\377\377\355\377\377\377\377\377\377\377\243"
-  "\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\345\377"
-  "\377\377\376\377\377\377\214\0\0\0\0\0\0\0\0\377\377\377j\377\377\377\374"
-  "\377\377\377\363\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\377\377\377\335\377\377\377\377\377\377\377\236\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377"
-  "\377\355\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\372\377\377\377)\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\360"
-  "\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371"
-  "\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377"
-  "%\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\0\377"
-  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377E\377\377\377S\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\377\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\377\377\377Q\377\377\377n\377\377\377\13\0\0\0\0\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377b\377\377"
-  "\377e\377\377\377\33\0\0\0\0\0\0\0\0\371\371\377.\377\377\3775\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\377\377\377V\377\377\377\374\377\377\377\364\377\377"
-  "\3772\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377"
-  "\377\377\13\377\377\377\343\377\377\377\377\377\377\377\215\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\371\377\377\377\334\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\377\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\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377E\377\377\377X\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0"
-  "\0\0\0\377\377\377\341\377\377\377\375\377\377\377=\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\377\377\377e\377\377\377l\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377E\377\377\377X\377\377\377S\377\377\377\13\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\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\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\377\377\377@\377\377\377e\377\377\377c\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\377\377\377S\377\377\377K\377\377\377I\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\377\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\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377)\377\377\377e\377\377\377n\377\377\377"
-  "8\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\377\377\377_\377\377\377p\377\377\377I\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\377\377E\377\377\377X\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\371"
-  "\377\377\377\334\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\377\377\377`\377\377\377I\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\377\377\377\33\377\377\377\362\377\377\377"
-  "\376\377\377\377\255\377\377\3775\377\377\377V\377\377\377\322\377\377\377"
-  "\255\0\0\0\0\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\377\377\377)\377\377\377X\377\377\377V\377\377\377\13\0\0\0"
-  "\0\0\0\0\0\377\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\377\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\377\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\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377E\377\377\377"
-  "m\377\377\377c\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\0\0\0\0\0\0\0\0\371\371\377.\377\377\377m\377\377\377c\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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"
-  "\377\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\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377b\377\377\377c\377\377\377\13"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\320"
-  "\377\377\377\377\377\377\377\333\377\377\377\33\377\377\377E\377\377\377"
-  "\13\377\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\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377e\377\377\377e\377\377"
-  "\3778\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
-  "e\377\377\377n\377\377\3775\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377U\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\25\377\377\377\361\377\377\377\366\377\377"
-  "\377%\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\377\377\377\13\377\377\377\364\377\377\377\254\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\377\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\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\377\377\377\216\377\377\377\233\377\377\377\232\377\377\377\232"
-  "\377\377\377\232\377\377\377\232\377\377\377\232\377\377\377\237\377\377"
-  "\377=\377\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\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377U\377\377\377n\377\377\3775\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\377\377\377E\377\377\377n\377\377\3778\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\377\377\377@\377\377\377m\377\377\377c\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377@\377\377\377p\377"
-  "\377\377I\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377Q\377\377\377p\377\377\377X\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\377\377\377\324\377\377\377\376\377\377\377"
-  "|\377\377\377S\377\377\377V\377\377\377K\377\377\377\263\377\377\377\377"
-  "\377\377\377\252\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\377\377\377\25\377\377\377\362\377\377\377\360\377\377\377"
-  "\33\0\0\0\0\0\0\0\0\377\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\377\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\377\377\377)\377"
-  "\377\377p\377\377\377c\0\0\0\0\0\0\0\0\377\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\377\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\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377b\377\377\377f\377\377\377"
-  "\13\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
-  "\377\224\377\377\377\376\377\377\377U\377\377\377@\377\377\377e\377\377\377"
-  "8\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\377\377\377@\377\377\377p\377\377\377I\377\377\377;\377\377\377"
-  "\374\377\377\377\333\0\0\0\0\377\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\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377"
-  "\377e\377\377\377e\377\377\377I\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377O\377\377"
-  "\377X\377\377\377U\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\377\377\377j\377\377\377n\377\377\377\33\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377"
-  "\362\377\377\377\367\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\377\377\377\13\377\377\377\361\377\377\377\356\377\377\377%\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\377\377\377\335\377\377\377\372\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\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\377\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\377\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\377\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\377\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\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\267\377\377\377"
-  "\345\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\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\377\377\377\237\377\377\377\377\377\377\377\361\377\377"
-  "\3772\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377"
-  "\331\377\377\377\377\377\377\377\304\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\377\3772\377\377\377\337\377\377\377\377\377\377\377\236\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377b\377"
-  "\377\377\376\377\377\377\330\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\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\377\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\377\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\377\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\377\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\377\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\377\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\377"
-  "\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\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\377\3772\377\377\377\337\377\377\377\377\377\377\377\236\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\377\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\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
-  "\377\377\3775\377\377\377\344\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\270\0\0\0\0\377\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\377\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\377\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\377\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\377\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\377\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\377"
-  "\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377"
-  "\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\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\3775\377\377\377\362\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\210\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\232\377\377\377\377\377\377"
-  "\377\370\377\377\377\364\377\377\377\372\377\377\377\243\0\0\0\0\377\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"
-  "\377\377\377\266\377\377\377\377\377\377\377\225\0\0\0\0\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\377\377\377\205\377\377\377\371\377\377\377\364"
-  "\377\377\377\364\377\377\377\377\377\377\377\260\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\377\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\377\377\377\377\377\377\377\377"
-  "\377\377\377\13\377\377\377\370\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\377m\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\345\377\377\377"
-  "\375\377\377\377f\0\0\0\0\0\0\0\0\377\377\3772\377\377\377\326\377\377\377"
-  "\377\377\377\377\245\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377"
-  "\377\377\234\377\377\377\205\377\377\377I\377\377\377\272\377\377\377\377"
-  "\377\377\377\326\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
-  "\377\224\377\377\377\376\377\377\377i\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\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\377\377\377K\377\377\377\374\377\377\377\333\0\0\0\0"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\377\377\377i\377\377\377\203\377\377\377"
-  "\337\377\377\377\377\377\377\377\260\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\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\377\377\377\377\377\377\377\377\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\275\377\377\377\377\377\377\377"
-  "\377\377\377\377\373\377\377\377\243\0\0\0\0\377\377\377\377\377\377\377"
-  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377"
-  "\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\377\377\377\177\377\377\377\372\377\377\377\376\377\377\377\377\377\377"
-  "\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\377\377\253\377\377"
-  "\377\340\377\377\377%\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
-  "\0\0\377\377\377\310\377\377\377\307\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\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377"
-  "\377\377\13\377\377\377\351\377\377\377\377\377\377\377\276\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
-  "\377u\377\377\377\325\377\377\377w\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\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377"
-  "\377\13\377\377\377\351\377\377\377\377\377\377\377\276\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\377\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\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\377\377\377`\377\377\377\213\377\377\377\203\377\377"
-  "\3778\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377"
-  "\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377"
-  "\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\377\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\377\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\377\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\377\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\377\377\377\13\377\377\377\251\377\377\377\322\377\377\377\316"
-  "\377\377\377m\377\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\377\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\377\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\377\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\377\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\377"
-  "\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\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377"
-  "\377\377`\377\377\377\263\377\377\377\263\377\377\377\263\377\377\377\266"
-  "\377\377\377u\0\0\0\0\377\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\377\377\377G\377\377\377\317\377\377\377w\0"
-  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377i\377\377\377\266"
-  "\377\377\377\263\377\377\377\263\377\377\377\262\377\377\377_\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\377\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\377\377\377\377\377"
-  "\377\377\377\0\0\0\0\377\377\377`\377\377\377y\377\377\377y\377\377\377y"
-  "\377\377\377y\377\377\377y\377\377\377y\377\377\377x\377\377\377\33\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\377\377\377"
-  "\377\377\377\377\0\0\0\0\377\377\377\237\377\377\377\377\377\377\377\377"
-  "\377\377\377\370\377\377\377\370\377\377\377\377\377\377\377\377\377\377"
-  "\377\325\377\377\377\33\377\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\377\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\377\377\377\377\377\377\377\377\377\377\377"
-  ";\377\377\377\374\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
-  "\377\376\377\377\377z\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377"
-  "\377\377\233\377\377\377\377\377\377\377l\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\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\377\377\377V\377\377\377\376\377\377\377\327\0\0"
-  "\0\0\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377"
-  "\377\377\377\377\377\377\377\377\377\377\13\377\377\377\361\377\377\377\377"
-  "\377\377\377\377\377\377\377\325\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\377\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\377\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\377\377\377v\377\377\377\246\377"
-  "\377\377\266\377\377\377u\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\372\377\377\377)\0\0"
-  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
-  "i\377\377\377\266\377\377\377\255\377\377\377\214\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\0\0\0\0\0\0\0\0\377\377\377s\377\377\377|\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-  "\0\0\0\0\0\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\377"
-  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377s\377\377\377"
-  "|\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
-  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\0\0\0\0\377\377\377_\377\377\377\266\377\377\377\321\377\377\377\316\377"
-  "\377\377\271\377\377\377q\0\0\0\0\0\0\0\0\377\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\377\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\377\377\377\377\377\377"
-  "\377\377\0\0\0\0\377\377\377`\377\377\377\245\377\377\377\267\377\377\377"
-  "\247\377\377\377=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0"
-  "\377\377\377E\377\377\377\212\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\377\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\377\377\377\13\377\377\377\211\377\377\377=\0"
-  "\0\0\0\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377"
-  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377v\377\377\377\232\377\377"
-  "\377q\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\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\377\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\377\377\377"
-  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377"
-  "\377\377\363\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\377\377\377"
-  "\377\377\377\377",
-};
-
diff --git a/libmlx/font.xcf b/libmlx/font.xcf
deleted file mode 100644
index b9c8c82..0000000
Binary files a/libmlx/font.xcf and /dev/null differ
diff --git a/libmlx/mlx.h b/libmlx/mlx.h
deleted file mode 100644
index e75b4af..0000000
--- a/libmlx/mlx.h
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
-** mlx.h for MinilibX in 
-** 
-** Made by Charlie Root
-** Login   <ol@staff.42.fr>
-** 
-** Started on  Mon Jul 31 16:37:50 2000 Charlie Root
-** Last update Tue Oct 01 16:23:28 2014 Olivier Crouzet
-*/
-
-/*
-**   MinilibX -  Please report bugs
-*/
-
-
-/*
-** FR msg - FR msg - FR msg
-**
-** MacOSX
-** La MinilibX utilise 2 frameworks Mac : OpenGL et AppKit
-**    qu'il faut ajouter a la compilation :
-**   -framework OpenGL -framework AppKit
-**
-** UNIX / Linux
-** La MinilibX utilise 2 librairies supplementaires qu'il
-**      est necessaire de rajouter a la compilation :
-**   -lmlx -lXext -lX11
-**
-** La MinilibX permet le chargement des images de type Xpm.
-** Notez que cette implementation est incomplete.
-**
-** Il y a des differences entre X11 et MacOS.
-** les numeros des touches ne sont pas les memes,
-** les numeros des boutons souris ne sont pas les memes.
-** Egalement l'expose est gere differemment, et sous MacOS
-** il est preferable d'entrer le plus tot possible dans mlx_loop,
-** il est normal que les fenetres n'apparaissent pas avant mlx_loop
-** (ou bien forcez avec mlx_do_sync mais c'est pas genial).
-** Sous MacOS, l'octet Alpha est pris en compte dans toutes les
-** images, et represente la transparence et non l'opacite comme
-** c'est normalement le cas.
-*/
-
-
-#ifndef MLX_H
-
-#define	MLX_H
-
-
-void	*mlx_init();
-/*
-**  needed before everything else.
-**  return (void *)0 if failed
-*/
-
-
-/*
-** Basic actions
-*/
-
-void	*mlx_new_window(void *mlx_ptr, int size_x, int size_y, char *title);
-/*
-**  return void *0 if failed
-*/
-int	mlx_clear_window(void *mlx_ptr, void *win_ptr);
-int	mlx_pixel_put(void *mlx_ptr, void *win_ptr, int x, int y, int color);
-/*
-**  origin for x & y is top left corner of the window
-**  y down is positive
-**  color is 0x00RRGGBB
-*/
-
-
-/*
-** Image stuff
-*/
-
-void	*mlx_new_image(void *mlx_ptr,int width,int height);
-/*
-**  return void *0 if failed
-*/
-char	*mlx_get_data_addr(void *img_ptr, int *bits_per_pixel,
-			   int *size_line, int *endian);
-/*
-**  endian : 0 = sever X is little endian, 1 = big endian
-**  endian : useless on macos, client and graphical framework have the same endian
-*/
-int	mlx_put_image_to_window(void *mlx_ptr, void *win_ptr, void *img_ptr,
-				int x, int y);
-unsigned int	mlx_get_color_value(void *mlx_ptr, int color);
-
-
-/*
-** dealing with Events
-*/
-
-int	mlx_mouse_hook (void *win_ptr, int (*funct_ptr)(), void *param);
-int	mlx_key_hook (void *win_ptr, int (*funct_ptr)(), void *param);
-int	mlx_expose_hook (void *win_ptr, int (*funct_ptr)(), void *param);
-
-int	mlx_loop_hook (void *mlx_ptr, int (*funct_ptr)(), void *param);
-int	mlx_loop (void *mlx_ptr);
-
-
-/*
-**  hook funct are called as follow :
-**
-**   expose_hook(void *param);
-**   key_hook(int keycode, void *param);
-**   mouse_hook(int button, int x,int y, void *param);
-**   loop_hook(void *param);
-**
-*/
-
-
-/*
-**  Usually asked...
-*/
-
-int	mlx_string_put(void *mlx_ptr, void *win_ptr, int x, int y, int color,
-		       char *string);
-void	*mlx_xpm_to_image(void *mlx_ptr, char **xpm_data,
-			  int *width, int *height);
-void	*mlx_xpm_file_to_image(void *mlx_ptr, char *filename,
-			       int *width, int *height);
-void    *mlx_png_file_to_image(void *mlx_ptr, char *file, int *width, int *height);
-
-int	mlx_destroy_window(void *mlx_ptr, void *win_ptr);
-
-int	mlx_destroy_image(void *mlx_ptr, void *img_ptr);
-
-/*
-**  generic hook system for all events, and minilibX functions that
-**    can be hooked. Some macro and defines from X11/X.h are needed here.
-*/
-
-int	mlx_hook(void *win_ptr, int x_event, int x_mask,
-                 int (*funct)(), void *param);
-
-int     mlx_mouse_hide();
-int     mlx_mouse_show();
-int     mlx_mouse_move(void *win_ptr, int x, int y);
-int     mlx_mouse_get_pos(void *win_ptr, int *x, int *y);
-
-int	mlx_do_key_autorepeatoff(void *mlx_ptr);
-int	mlx_do_key_autorepeaton(void *mlx_ptr);
-int	mlx_do_sync(void *mlx_ptr);
-
-#endif /* MLX_H */
diff --git a/libmlx/mlx_init_loop.m b/libmlx/mlx_init_loop.m
deleted file mode 100644
index 0377771..0000000
--- a/libmlx/mlx_init_loop.m
+++ /dev/null
@@ -1,192 +0,0 @@
-//  mlx_init_loop.m
-// By Ol
-
-#import <Cocoa/Cocoa.h>
-#import <OpenGL/gl3.h>
-#import <AppKit/NSOpenGLView.h>
-
-#include "mlx_int.h"
-#include "mlx_new_window.h"
-
-#include "font.c"
-
-
-void	do_loop_hook2(CFRunLoopTimerRef observer, void * info)
-{
-  ((mlx_ptr_t *)info)->loop_hook(((mlx_ptr_t *)info)->loop_hook_data);
-}
-
-
-void do_loop_flush(CFRunLoopObserverRef observer, CFRunLoopActivity activity, void * info)
-{
-  mlx_ptr_t	*mlx_ptr;
-  mlx_win_list_t *win;
-
-  mlx_ptr = (mlx_ptr_t *)info;
-  win = mlx_ptr->win_list;
-  while (win)
-    {
-      if (win->nb_flush > 0 && win->pixmgt)
-	{
-	  [(id)win->winid selectGLContext];
-	  [(id)win->winid mlx_gl_draw];
-	  glFlush();
-	  win->nb_flush = 0;
-	}
-      win = win->next;
-    }
-}
-
-
-
-
-void *mlx_init()
-{
-  mlx_ptr_t	*new_mlx;
-  int		bidon;
-  int		i;
-
-  if ((new_mlx = malloc(sizeof(*new_mlx))) == NULL)
-    return ((void *)0);
-  new_mlx->win_list = NULL;
-  new_mlx->img_list = NULL;
-  new_mlx->loop_hook = NULL;
-  new_mlx->loop_hook_data = NULL;
-  new_mlx->main_loop_active = 0;
-
-  new_mlx->appid = [NSApplication sharedApplication];
-
-  // super magic trick to detach app from terminal, get menubar & key input events
-  for (NSRunningApplication * app in [NSRunningApplication runningApplicationsWithBundleIdentifier:@"com.apple.finder"])
-    {
-      [app activateWithOptions:NSApplicationActivateIgnoringOtherApps];
-      break;
-    }
-  usleep(100000);
-  ProcessSerialNumber psn = { 0, kCurrentProcess };
-  (void) TransformProcessType(&psn, kProcessTransformToForegroundApplication);
-  usleep(100000);
-  [[NSRunningApplication currentApplication] activateWithOptions:NSApplicationActivateIgnoringOtherApps];
-
-  // load font
-  new_mlx->font = mlx_new_image(new_mlx, (FONT_WIDTH+2)*95, FONT_HEIGHT);
-  i = 0;
-  while (i < 4*(FONT_WIDTH+2)*95*FONT_HEIGHT)
-    {
-      new_mlx->font->buffer[i+0] = font_atlas.pixel_data[i+2];
-      new_mlx->font->buffer[i+1] = font_atlas.pixel_data[i+1];
-      new_mlx->font->buffer[i+2] = font_atlas.pixel_data[i+0];
-      ((unsigned char *)new_mlx->font->buffer)[i+3] = 0xFF-font_atlas.pixel_data[i+3];
-      i += 4;
-    }
-
-
-#ifdef	STRINGPUTX11
-  new_mlx->font->vertexes[2] = FONT_WIDTH/1.4;
-  new_mlx->font->vertexes[4] = FONT_WIDTH/1.4;
-  new_mlx->font->vertexes[5] = (-FONT_HEIGHT-1)/1.4;
-  new_mlx->font->vertexes[7] = (-FONT_HEIGHT-1)/1.4;
-#else
-  new_mlx->font->vertexes[2] = FONT_WIDTH;
-  new_mlx->font->vertexes[4] = FONT_WIDTH;
-  new_mlx->font->vertexes[5] = -FONT_HEIGHT-1;
-  new_mlx->font->vertexes[7] = -FONT_HEIGHT-1;
-#endif
-
-  return ((void *)new_mlx);
-}
-
-
-void mlx_loop(mlx_ptr_t *mlx_ptr)
-{
-  CFRunLoopObserverRef observer;
-  CFRunLoopObserverContext ocontext = {.version = 0, .info = mlx_ptr, .retain = NULL, .release = NULL, .copyDescription = NULL};
-
-  mlx_ptr->main_loop_active = 1;
-
-  observer = CFRunLoopObserverCreate(NULL, kCFRunLoopBeforeTimers, true, 0, do_loop_flush, &ocontext);
-  CFRunLoopAddObserver(CFRunLoopGetMain(), observer, kCFRunLoopCommonModes);
-
-  //  [[[MlxLoopHookObj alloc] initWithPtr:mlx_ptr] performSelector:@selector(do_loop_hook) withObject:nil afterDelay:0.0];
-
-  [NSApp run];
-}
-
-
-void mlx_pixel_put(mlx_ptr_t *mlx_ptr, mlx_win_list_t *win_ptr, int x, int y, int color)
-{
-  if (!win_ptr->pixmgt)
-    return ;
-  [(id)(win_ptr->winid) selectGLContext];
-  [(id)(win_ptr->winid) pixelPutColor:color X:x Y:y];
-  win_ptr->nb_flush ++;
-}
-
-
-void	mlx_int_loop_once()
-{
-  NSEvent *event;
-  NSDate  *thedate;
-
-  thedate = [NSDate dateWithTimeIntervalSinceNow:0.1];
-  while (42)
-    {
-      event = [NSApp nextEventMatchingMask:NSEventMaskAny
-		     untilDate:thedate
-		     inMode:NSDefaultRunLoopMode
-		     dequeue:YES];
-      if (event == nil)
-	{
-	  [thedate release];
-	  return ;
-	}
-      [NSApp sendEvent:event];
-      [NSApp updateWindows];
-    }
-}
-
-
-int     mlx_do_sync(mlx_ptr_t *mlx_ptr)
-{
-  mlx_win_list_t *win;
-
-  win = mlx_ptr->win_list;
-  while (win)
-    {
-      if (win->pixmgt)
-	{
-	  [(id)(win->winid) selectGLContext];
-	  [(id)(win->winid) mlx_gl_draw];
-	  glFlush();
-	  if (!mlx_ptr->main_loop_active)
-	    mlx_int_loop_once();
-	}
-      win = win->next;
-    }
-  return (0);
-}
-
-
-int mlx_loop_hook(mlx_ptr_t *mlx_ptr, void (*fct)(void *), void *param)
-{
-  CFRunLoopTimerContext	tcontext = {0, mlx_ptr, NULL, NULL, NULL};
-  CFRunLoopTimerRef	timer;
-
-  if (mlx_ptr->loop_hook != NULL)
-    {
-      CFRunLoopTimerInvalidate(mlx_ptr->loop_timer);
-      [(id)(mlx_ptr->loop_timer) release];
-    }
-
-  mlx_ptr->loop_hook = fct;
-  mlx_ptr->loop_hook_data = param;
-
-  if (fct)
-    {
-      timer = CFRunLoopTimerCreate(kCFAllocatorDefault, 0.0, 0.0001, 0, 0, &do_loop_hook2, &tcontext);
-      mlx_ptr->loop_timer = timer;
-      CFRunLoopAddTimer(CFRunLoopGetMain(), timer, kCFRunLoopCommonModes);
-    }
-
-  return (0);
-}
diff --git a/libmlx/mlx_int.h b/libmlx/mlx_int.h
deleted file mode 100644
index a93c1c9..0000000
--- a/libmlx/mlx_int.h
+++ /dev/null
@@ -1,102 +0,0 @@
-//
-// mlx_int.h for minilibx
-//
-// ol@staff.42.fr
-//
-// include opengl needed before mlx_int.h
-//
-
-
-#define	MAX_EVENT	32
-#define MAX_PIXEL_NB	200000
-#define UNIQ_BPP	4
-
-#define FONT_WIDTH	10
-#define	FONT_HEIGHT	20
-
-
-typedef int (*func_t)();
-
-/* structs */
-
-typedef struct	glsl_info_s
-{
-  GLuint	pixel_vshader;
-  GLuint	pixel_fshader;
-  GLuint	pixel_program;
-  GLint		loc_pixel_position;
-  GLint		loc_pixel_texture;
-  GLint		loc_pixel_winhalfsize;
-
-  GLuint	image_vshader;
-  GLuint	image_fshader;
-  GLuint	image_program;
-  GLint		loc_image_position;
-  GLint		loc_image_winhalfsize;
-  GLint		loc_image_texture;
-  GLint		loc_image_pos;
-  GLint		loc_image_size;
-
-  GLuint	font_vshader;
-  GLuint	font_fshader;
-  GLuint	font_program;
-  GLint		loc_font_position;
-  GLint		loc_font_winhalfsize;
-  GLint		loc_font_texture;
-  GLint		loc_font_color;
-  GLint		loc_font_posinwin;
-  GLint		loc_font_posinatlas;
-  GLint		loc_font_atlassize;
-} glsl_info_t;
-
-
-typedef struct	mlx_img_list_s
-{
-  int			width;
-  int			height;
-  char			*buffer;
-  GLfloat		vertexes[8];
-  struct mlx_img_list_s	*next;
-} mlx_img_list_t;
-
-
-typedef struct	mlx_img_ctx_s
-{
-  GLuint		texture;
-  GLuint		vbuffer;
-  mlx_img_list_t	*img;
-  struct mlx_img_ctx_s	*next;
-} mlx_img_ctx_t;
-
-typedef struct	mlx_win_list_s
-{
-  void			*winid;
-  mlx_img_ctx_t		*img_list;
-  int			nb_flush;
-  int			pixmgt;
-  struct mlx_win_list_s	*next;
-} mlx_win_list_t;
-
-
-typedef struct		mlx_ptr_s
-{
-  void			*appid;
-  mlx_win_list_t	*win_list;
-  mlx_img_list_t	*img_list;
-  void			(*loop_hook)(void *);
-  void			*loop_hook_data;
-  void			*loop_timer;
-  mlx_img_list_t	*font;
-  int			main_loop_active;
-} mlx_ptr_t;
-
-// proto
-
-int	mlx_shaders(glsl_info_t *glsl);
-char    **mlx_int_str_to_wordtab(char *str);
-int     mlx_int_str_str(char *str,char *find,int len);
-int     mlx_int_str_str_cote(char *str,char *find,int len);
-int	mlx_destroy_image(mlx_ptr_t *mlx_ptr, mlx_img_list_t *img_ptr);
-void	*mlx_new_image();
-void    *mlx_xpm_to_image(mlx_ptr_t *xvar,char **xpm_data,int *width,int *height);
-int	mlx_do_sync(mlx_ptr_t *mlx_ptr);
diff --git a/libmlx/mlx_int_str_to_wordtab.c b/libmlx/mlx_int_str_to_wordtab.c
deleted file mode 100644
index 3b2ef2e..0000000
--- a/libmlx/mlx_int_str_to_wordtab.c
+++ /dev/null
@@ -1,107 +0,0 @@
-//
-// str 2 wordtab & co
-// by ol
-
-
-#include <stdlib.h>
-#include <string.h>
-
-int	mlx_int_str_str(char *str,char *find,int len)
-{
-  int	len_f;
-  int	pos;
-  char	*s;
-  char	*f;
-
-  len_f = strlen(find);
-  if (len_f>len)
-    return (-1);
-  pos = 0;
-  while (*(str+len_f-1))
-    {
-      s = str;
-      f = find;
-      while (*(f++) == *(s++))
-        if (!*f)
-          return (pos);
-      str ++;
-      pos ++;
-    }
-  return (-1);
-}
-
-
-
-int	mlx_int_str_str_cote(char *str,char *find,int len)
-{
-  int	len_f;
-  int	pos;
-  char	*s;
-  char	*f;
-  int	cote;
-
-  len_f = strlen(find);
-  if (len_f>len)
-    return (-1);
-  cote = 0;
-  pos = 0;
-  while (*(str+len_f-1))
-    {
-      if (*str=='"')
-	cote = 1-cote;
-      if (!cote)
-	{
-	  s = str;
-	  f = find;
-	  while (*(f++) == *(s++))
-	    if (!*f)
-	      return (pos);
-	}
-      str ++;
-      pos ++;
-    }
-  return (-1);
-}
-
-
-char	**mlx_int_str_to_wordtab(char *str)
-{
-  char	**tab;
-  int	pos;
-  int	nb_word;
-  int	len;
-
-  len = strlen(str);
-  nb_word = 0;
-  pos = 0;
-  while (pos<len)
-  {
-    while (*(str+pos)==' ' || *(str+pos)=='\t')
-      pos ++;
-    if (*(str+pos))
-      nb_word ++;
-    while (*(str+pos) && *(str+pos)!=' ' && *(str+pos)!='\t')
-      pos ++;
-  }
-  if (!(tab = malloc((1+nb_word)*sizeof(*tab))))
-    return ((char **)0);
-  nb_word = 0;
-  pos = 0;
-  while (pos<len)
-    {
-      while (*(str+pos)==' ' || *(str+pos)=='\t')
-	{
-	  *(str+pos) = 0;
-	  pos ++;
-	}
-      if (*(str+pos))
-	{
-	  tab[nb_word] = str+pos;
-	  nb_word ++;
-	}
-      while (*(str+pos) && *(str+pos)!=' ' && *(str+pos)!='\t')
-	pos ++;
-    }
-  tab[nb_word] = 0;
-  return (tab);
-}
diff --git a/libmlx/mlx_mouse.m b/libmlx/mlx_mouse.m
deleted file mode 100644
index 94ce0a9..0000000
--- a/libmlx/mlx_mouse.m
+++ /dev/null
@@ -1,52 +0,0 @@
-#include	<stdio.h>
-
-#import <Cocoa/Cocoa.h>
-#import <OpenGL/gl3.h>
-
-#include	"mlx_int.h"
-#include	"mlx_new_window.h"
-
-int	mlx_mouse_hide()
-{
-  //  CGDisplayHideCursor(kCGDirectMainDisplay);
-  [NSCursor hide];
-  return (0);
-}
-
-int	mlx_mouse_show()
-{
-  //  CGDisplayShowCursor(kCGDirectMainDisplay);
-  [NSCursor unhide];
-  return (0);
-}
-
-int	mlx_mouse_move(mlx_win_list_t *win, int x, int y)
-{
-  CGPoint	point;
-  NSRect	pos;
-  id	thewin;
-
-  thewin = [(id)(win->winid) win];
-  pos = [thewin frame];
-  //  printf("got win pos %f %f\n", pos.origin.x, pos.origin.y);
-  point.x = pos.origin.x + x;
-  point.y = NSHeight([[thewin screen] frame]) - NSHeight([(id)(win->winid) frame]) - pos.origin.y + 1 + y;
-  CGWarpMouseCursorPosition(point);
-  CGAssociateMouseAndMouseCursorPosition(true);
-  return (0);
-}
-
-
-int	mlx_mouse_get_pos(mlx_win_list_t *win, int *x, int *y)
-{
-  CGPoint	point;
-  id		thewin;
-  NSRect	pos;
-
-  thewin = [(id)(win->winid) win];
-  pos = [(id)(win->winid) frame];
-  point = [thewin mouseLocationOutsideOfEventStream];
-  *x = point.x;
-  *y = NSHeight(pos) - 1 - point.y;
-  return (0);
-}
diff --git a/libmlx/mlx_new_image.m b/libmlx/mlx_new_image.m
deleted file mode 100644
index 46e1df1..0000000
--- a/libmlx/mlx_new_image.m
+++ /dev/null
@@ -1,198 +0,0 @@
-// mlx_new_image
-//
-// by Ol
-//
-
-
-#import <Cocoa/Cocoa.h>
-#import <OpenGL/gl3.h>
-
-#include "mlx_int.h"
-#include "mlx_new_window.h"
-
-
-
-void    *mlx_new_image(mlx_ptr_t *mlx_ptr, int width, int height)
-{
-  mlx_img_list_t        *newimg;
-
-  //  if (mlx_ptr->win_list == NULL)
-  //    return (NULL);  // need at leat one window created to have openGL context and create texture
-  if ((newimg = malloc(sizeof(*newimg))) == NULL)
-    return ((void *)0);
-  newimg->next = mlx_ptr->img_list;
-  mlx_ptr->img_list = newimg;
-  newimg->width = width;
-  newimg->height = height;
-  newimg->vertexes[0] = 0.0;  newimg->vertexes[1] = 0.0;
-  newimg->vertexes[2] = width;  newimg->vertexes[3] = 0.0;
-  newimg->vertexes[4] = width;  newimg->vertexes[5] = -height;
-  newimg->vertexes[6] = 0.0;  newimg->vertexes[7] = -height;
-  newimg->buffer = malloc(UNIQ_BPP*width*height);
-  bzero(newimg->buffer, UNIQ_BPP*width*height);
-
-  return (newimg);
-}
-
-mlx_img_ctx_t	*add_img_to_ctx(mlx_img_list_t *img, mlx_win_list_t *win)
-{
-  mlx_img_ctx_t	*imgctx;
-
-  imgctx = win->img_list;
-  while (imgctx)
-    {
-      if (imgctx->img == img)
-	return (imgctx);
-      imgctx = imgctx->next;
-    }
-
-  imgctx = malloc(sizeof(*imgctx));
-  imgctx->img = img;
-  imgctx->next = win->img_list;
-  win->img_list = imgctx;
-
-  glGenTextures(1, &(imgctx->texture));
-  glBindTexture(GL_TEXTURE_2D, imgctx->texture);
-  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,     GL_CLAMP_TO_EDGE);
-  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,     GL_CLAMP_TO_EDGE);
-  glTexImage2D(
-	       GL_TEXTURE_2D, 0,           /* target, level of detail */
-	       GL_RGBA8,                    /* internal format */
-	       img->width, img->height, 0,           /* width, height, border */
-	       GL_BGRA, GL_UNSIGNED_BYTE,   /* external format, type */
-	       img->buffer               /* pixels */
-	       );
-
-  glGenBuffers(1, &(imgctx->vbuffer));
-  glBindBuffer(GL_ARRAY_BUFFER, imgctx->vbuffer);
-  glBufferData(GL_ARRAY_BUFFER, sizeof(img->vertexes), img->vertexes, GL_DYNAMIC_DRAW); // 4 points buff
-
-  return (imgctx);
-}
-
-
-void    mlx_put_image_to_window(mlx_ptr_t *mlx_ptr, mlx_win_list_t *win_ptr, mlx_img_list_t *img_ptr, int x, int y)
-{
-  mlx_img_ctx_t	*imgctx;
-
-  if (!win_ptr->pixmgt)
-    return ;
-
-  [(id)(win_ptr->winid) selectGLContext];
-  imgctx = add_img_to_ctx(img_ptr, win_ptr);
-
-  // update texture
-  glBindTexture(GL_TEXTURE_2D, imgctx->texture);
-  glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, img_ptr->width, img_ptr->height, 0,
-	       GL_BGRA, GL_UNSIGNED_BYTE, img_ptr->buffer);
-
-  [(id)(win_ptr->winid) mlx_gl_draw_img:img_ptr andCtx:imgctx andX:x andY:y];
-
-  win_ptr->nb_flush ++;
-}
-
-// assume here 32bpp little endian
-
-char    *mlx_get_data_addr(mlx_img_list_t *img_ptr, int *bits_per_pixel, int *size_line, int *endian)
-{
-  *bits_per_pixel = UNIQ_BPP*8;
-  *size_line = img_ptr->width*UNIQ_BPP;
-  *endian = 0; // little endian for now on mac-intel
-  return (img_ptr->buffer);
-}
-
-unsigned int    mlx_get_color_value(mlx_ptr_t *mlx_ptr, int color)
-{
-  return (color);
-}
-
-int mlx_string_put(mlx_ptr_t *mlx_ptr, mlx_win_list_t *win_ptr, int x, int y, int color, unsigned char *string)
-{
-  mlx_img_ctx_t	*imgctx;
-  int		gX;
-  int		gY;
-
-  if (!win_ptr->pixmgt)
-    return(0);
-
-#ifdef STRINGPUTX11
-  y -= (FONT_HEIGHT * 2)/3;
-#endif
-
-  [(id)(win_ptr->winid) selectGLContext];
-
-  imgctx = add_img_to_ctx(mlx_ptr->font, win_ptr);
-
-  while (*string)
-    {
-      if (*string >= 32 && *string <= 127)
-	{
-	  gX = (FONT_WIDTH+2)*(*string-32);
-	  gY = 0;
-	  //      printf("put char %c pos %d %d\n", *string, gX, gY);
-	  [(id)(win_ptr->winid) mlx_gl_draw_font:mlx_ptr->font andCtx:imgctx andX:x andY:y andColor:color glyphX:gX glyphY:gY];
-#ifdef STRINGPUTX11
-	  x += FONT_WIDTH/1.4;
-#else
-	  x += FONT_WIDTH;
-#endif
-	}
-      string ++;
-    }
-
-  win_ptr->nb_flush ++;
-  
-  return (0);
-}
-
-int     mlx_destroy_image(mlx_ptr_t *mlx_ptr, mlx_img_list_t *img_todel)
-{
-  mlx_img_ctx_t	ctx_first;
-  mlx_img_ctx_t	*ctx;
-  mlx_img_ctx_t	*ctx_to_del;
-  mlx_img_list_t img_first;
-  mlx_img_list_t *img;
-  mlx_win_list_t *win;
-
-  img_first.next = mlx_ptr->img_list;
-  img = &img_first;
-  while (img && img->next)
-    {
-      if (img->next == img_todel)
-	img->next = img->next->next;
-      img = img->next;
-    }
-  mlx_ptr->img_list = img_first.next;
-
-
-  win = mlx_ptr->win_list;
-  while (win)
-    {
-      ctx_first.next = win->img_list;
-      ctx = &ctx_first;
-      while (ctx && ctx->next)
-	{
-	  if (ctx->next->img == img_todel)
-	    {
-	      [(id)(win->winid) selectGLContext];
-	      glDeleteBuffers(1, &(ctx->next->vbuffer));
-	      glDeleteTextures(1, &(ctx->next->texture));
-	      ctx_to_del = ctx->next;
-	      ctx->next = ctx->next->next;
-	      free(ctx_to_del);
-	    }
-	  ctx = ctx->next;
-	}
-      win->img_list = ctx_first.next;
-      win = win->next;
-    }
-
-
-  free(img_todel->buffer);
-  free(img_todel);
-
-  //  printf("destroy image done.\n");
-  return (0);
-}
diff --git a/libmlx/mlx_new_window.h b/libmlx/mlx_new_window.h
deleted file mode 100644
index d173e61..0000000
--- a/libmlx/mlx_new_window.h
+++ /dev/null
@@ -1,57 +0,0 @@
-//
-// mlx_int.h for minilibx
-//
-// ol@staff.42.fr
-//
-// include opengl needed before mlx_int.h
-//
-
-#import <Cocoa/Cocoa.h>
-#import "mlx_int.h"
-
-@interface NSWindowEvent : NSWindow
-{
-  func_t	event_funct[MAX_EVENT];
-  void		*(event_param[MAX_EVENT]);
-  int		keyrepeat;
-  int		keyflag;
-  int		size_x;
-  int		size_y;
-}
-- (NSWindowEvent *) initWithContentRect:(NSRect)rect styleMask:(NSUInteger)winstyle backing:(NSBackingStoreType)bck defer:(BOOL) dfr;
-- (void) setEvent:(int)event andFunc:(func_t)func andParam:(void *)param;
-- (void) setKeyRepeat:(int)mode;
-- (void) exposeNotification:(NSNotification *)note;
-- (void) closeNotification:(NSNotification *)note;
-@end
-
-
-@interface MlxWin : NSOpenGLView
-{
-  NSWindowEvent		*win;
-  NSOpenGLContext	*ctx;
-  glsl_info_t		glsl;
-  int			openglwin;
-
-  int			size_x;
-  int			size_y;
-
-  int			pixel_nb;
-  GLuint		pixel_vbuffer;
-  GLuint		pixel_texture;
-  unsigned int		*pixtexbuff;
-}
-
-- (id) initWithRect: (NSRect)rect andTitle: (NSString *)title pfaAttrs: (NSOpenGLPixelFormatAttribute *)attrs;
-- (void) selectGLContext;
-- (void) flushGLContext;
-- (void) pixelPutColor: (int)color X:(int)x Y:(int)y;
-- (void) mlx_gl_draw;
-- (void) mlx_gl_draw_img:(mlx_img_list_t *)img andCtx:(mlx_img_ctx_t *)imgctx andX:(int)x andY:(int)y;
-- (void) mlx_gl_draw_font:(mlx_img_list_t *)img andCtx:(mlx_img_ctx_t *)imgctx andX:(int)x andY:(int)y andColor:(int)color glyphX:(int)gx glyphY:(int)gy;
-- (NSOpenGLContext *) ctx;
-- (NSWindowEvent *) win;
-- (void) setEvent:(int)event andFunc:(func_t)func andParam:(void *)param;
-- (void) setKeyRepeat:(int)mode;
-- (void) ctxNeedsUpdate;
-@end
diff --git a/libmlx/mlx_new_window.m b/libmlx/mlx_new_window.m
deleted file mode 100644
index 6d4fea4..0000000
--- a/libmlx/mlx_new_window.m
+++ /dev/null
@@ -1,766 +0,0 @@
-//  mlx_new_window.m
-
-#import <Cocoa/Cocoa.h>
-#import <OpenGL/gl3.h>
-#import <AppKit/NSOpenGLView.h>
-
-#include <stdio.h>
-#include <math.h>
-
-#include "mlx_int.h"
-#include "mlx_new_window.h"
-
-
-NSOpenGLPixelFormatAttribute pfa_attrs[] =
-  {
-    NSOpenGLPFADepthSize, 32,
-    NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersionLegacy,
-    0
-  };
-
-static const GLfloat pixel_vertexes[8] =
-  {
-    -1.0 , -1.0,
-    1.0, -1.0,
-    1.0, 1.0,
-    -1.0, 1.0
-  };
-
-
-
-int get_mouse_button(NSEventType eventtype)
-{
-  switch (eventtype) {
-  case NSEventTypeLeftMouseDown:
-  case NSEventTypeLeftMouseUp:
-  case NSEventTypeLeftMouseDragged:
-    return 1;
-  case NSEventTypeRightMouseDown:
-  case NSEventTypeRightMouseUp:
-  case NSEventTypeRightMouseDragged:
-    return 2;
-  case NSEventTypeOtherMouseDown:
-  case NSEventTypeOtherMouseUp:
-  case NSEventTypeOtherMouseDragged:
-    return 3;
-  default:
-    return 0;
-  }
-}
-
-
-// classes for window & events
-
-
-
-
-@implementation NSWindowEvent
-
-- (NSWindowEvent *) initWithContentRect:(NSRect)rect styleMask:(NSUInteger)winstyle backing:(NSBackingStoreType)bck defer:(BOOL) dfr
-{
-  int i;
-
-  if ((self = [super initWithContentRect:rect
-		     styleMask:winstyle
-		     backing:bck
-		     defer:dfr]))
-    {
-      i = MAX_EVENT;
-      while (i--)
-	{
-	  event_funct[i] = NULL;
-	  event_param[i] = NULL;
-	}
-      keyrepeat = 0;
-      keyflag = 0;
-      size_x = rect.size.width;
-      size_y = rect.size.height;
-    }
-  return (self);
-}
-
-
-- (void) setEvent:(int)event andFunc:(func_t)func andParam:(void *)param
-{
-  event_funct[event] = func;
-  event_param[event] = param;
-  if (event == 6 || event == 32) // motion notify && high precision motion notify
-    {
-      if (func == NULL)
-	[self setAcceptsMouseMovedEvents:NO];
-      else
-	[self setAcceptsMouseMovedEvents:YES];
-    }
-}
-
-
-- (void) setKeyRepeat:(int)mode
-{
-  keyrepeat = mode;
-}
-
-- (BOOL) acceptsFirstResponder
-{
-  return (YES);
-}
-
-- (void) flagsChanged:(NSEvent *)theEvent
-{
-  unsigned int flag;
-  int the_key;
-  unsigned int val;
-
-  flag = [theEvent modifierFlags];
-  //  printf("Key flag changed: %x => %x\n", keyflag, flag);
-  //  printf("**mlx flag low part : %d  - %x\n", flag&0xFFFF, flag&0xFFFF);
-
-  if (!(val = (keyflag|flag)&(~(keyflag&flag))))
-    return ;   // no change - can happen when loosing focus on special key pressed, then re-pressed later
-  the_key = 1;
-  while (((val >> (the_key-1)) & 0x01)==0)
-    the_key ++;
-  if (flag > keyflag && event_funct[2] != NULL)
-    event_funct[2](0xFF+the_key, event_param[2]);
-  if (flag < keyflag && event_funct[3] != NULL)
-    event_funct[3](0xFF+the_key, event_param[3]);
-  /*
-  if (event_funct[2] != NULL)
-    {
-      if (!(keyflag & NSAlphaShiftKeyMask) && (flag&NSAlphaShiftKeyMask)) event_funct[2](0xFF+1, event_param[2]);
-      if (!(keyflag & NSShiftKeyMask) && (flag&NSShiftKeyMask)) event_funct[2](0xFF+2, event_param[2]);
-      if (!(keyflag & NSControlKeyMask) && (flag&NSControlKeyMask)) event_funct[2](0xFF+3, event_param[2]);
-      if (!(keyflag & NSAlternateKeyMask) && (flag&NSAlternateKeyMask)) event_funct[2](0xFF+4, event_param[2]);
-      if (!(keyflag & NSCommandKeyMask) && (flag&NSCommandKeyMask)) event_funct[2](0xFF+5, event_param[2]);
-      if (!(keyflag & NSNumericPadKeyMask) && (flag&NSNumericPadKeyMask)) event_funct[2](0xFF+6, event_param[2]);
-      if (!(keyflag & NSHelpKeyMask) && (flag&NSHelpKeyMask)) event_funct[2](0xFF+7, event_param[2]);
-      if (!(keyflag & NSFunctionKeyMask) && (flag&NSFunctionKeyMask)) event_funct[2](0xFF+8, event_param[2]);
-    }
-  if (event_funct[3] != NULL)
-    {
-      if ((keyflag & NSShiftKeyMask) && !(flag&NSShiftKeyMask)) event_funct[3](NSShiftKeyMask, event_param[3]);
-
-      if ((keyflag & NSAlphaShiftKeyMask) && !(flag&NSAlphaShiftKeyMask)) event_funct[3](0xFF+1, event_param[3]);
-      if ((keyflag & NSShiftKeyMask) && !(flag&NSShiftKeyMask)) event_funct[3](0xFF+2, event_param[3]);
-      if ((keyflag & NSControlKeyMask) && !(flag&NSControlKeyMask)) event_funct[3](0xFF+3, event_param[3]);
-      if ((keyflag & NSAlternateKeyMask) && !(flag&NSAlternateKeyMask)) event_funct[3](0xFF+4, event_param[3]);
-      if ((keyflag & NSCommandKeyMask) && !(flag&NSCommandKeyMask)) event_funct[3](0xFF+5, event_param[3]);
-      if ((keyflag & NSNumericPadKeyMask) && !(flag&NSNumericPadKeyMask)) event_funct[3](0xFF+6, event_param[3]);
-      if ((keyflag & NSHelpKeyMask) && !(flag&NSHelpKeyMask)) event_funct[3](0xFF+7, event_param[3]);
-      if ((keyflag & NSFunctionKeyMask) && !(flag&NSFunctionKeyMask)) event_funct[3](0xFF+8, event_param[3]);
-    }
-  */
-  keyflag = flag;
-}
-
-- (void) keyDown:(NSEvent *)theEvent
-{
-  if (keyrepeat==0 && [theEvent isARepeat])
-    return ;
-  //  printf("Key Down: %d\n", [theEvent keyCode]);
-  if (event_funct[2] != NULL)
-    event_funct[2]([theEvent keyCode], event_param[2]);
-  //  else [super keyDown: theEvent];
-}
-
-- (void) keyUp:(NSEvent *)theEvent
-{
-  //  printf("Key Up: %d\n", [theEvent keyCode]);
-  if (event_funct[3] != NULL)
-    event_funct[3]([theEvent keyCode], event_param[3]);
-  //  else [super keyUp: theEvent];
-
-}
-
-- (void) mouseDown:(NSEvent *)theEvent
-{
-  NSPoint thepoint;
-  int     button;
-
-  thepoint = [theEvent locationInWindow];
-  button = get_mouse_button([theEvent type]);
-  //  printf("Mouse pressed bt %d  pos: %f, %f\n", button, thepoint.x, thepoint.y);
-  if (event_funct[4] != NULL)
-    event_funct[4](button, (int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[4]);
-}
-
-- (void) rightMouseDown:(NSEvent *)theEvent
-{
-  NSPoint thepoint;
-  int     button;
-
-  thepoint = [theEvent locationInWindow];
-  button = get_mouse_button([theEvent type]);
-  //  printf("Mouse pressed bt %d  pos: %f, %f\n", button, thepoint.x, thepoint.y);
-  if (event_funct[4] != NULL)
-    event_funct[4](button, (int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[4]);
-}
-
-- (void) otherMouseDown:(NSEvent *)theEvent
-{
-  NSPoint thepoint;
-  int     button;
-
-  thepoint = [theEvent locationInWindow];
-  button = get_mouse_button([theEvent type]);
-  //  printf("Mouse pressed bt %d  pos: %f, %f\n", button, thepoint.x, thepoint.y);
-  if (event_funct[4] != NULL)
-    event_funct[4](button, (int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[4]);
-}
-
-- (void) mouseUp:(NSEvent *)theEvent
-{
-  NSPoint thepoint;
-  int     button;
-
-  thepoint = [theEvent locationInWindow];
-  button = get_mouse_button([theEvent type]);
-  //  printf("Mouse release bt %d  pos: %f, %f\n", button, thepoint.x, thepoint.y);
-  if (event_funct[5] != NULL)
-    event_funct[5](button, (int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[5]);
-}
-
-- (void) rightMouseUp:(NSEvent *)theEvent
-{
-  NSPoint thepoint;
-  int     button;
-
-  thepoint = [theEvent locationInWindow];
-  button = get_mouse_button([theEvent type]);
-  //  printf("Mouse release bt %d  pos: %f, %f\n", button, thepoint.x, thepoint.y);
-  if (event_funct[5] != NULL)
-    event_funct[5](button, (int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[5]);
-}
-
-- (void) otherMouseUp:(NSEvent *)theEvent
-{
-  NSPoint thepoint;
-  int     button;
-
-  thepoint = [theEvent locationInWindow];
-  button = get_mouse_button([theEvent type]);
-  //  printf("Mouse release bt %d  pos: %f, %f\n", button, thepoint.x, thepoint.y);
-  if (event_funct[5] != NULL)
-    event_funct[5](button, (int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[5]);
-}
-
-- (void) mouseMoved:(NSEvent *)theEvent
-{
-  NSPoint thepoint;
-
-  thepoint = [theEvent locationInWindow];
-  //  printf("Mouse moved  pos: %f, %f\n", thepoint.x, thepoint.y);
-  if (event_funct[6] != NULL)
-    event_funct[6]((int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[6]);
-}
-
-
-- (void) mouseDragged:(NSEvent *)theEvent
-{
-  NSPoint thepoint;
-
-  thepoint = [theEvent locationInWindow];
-  //  printf("Mouse moved  pos: %f, %f\n", thepoint.x, thepoint.y);
-  if (event_funct[6] != NULL)
-    event_funct[6]((int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[6]);
-}
-
-
-- (void) rightMouseDragged:(NSEvent *)theEvent
-{
-  NSPoint thepoint;
-
-  thepoint = [theEvent locationInWindow];
-  //  printf("Mouse moved  pos: %f, %f\n", thepoint.x, thepoint.y);
-  if (event_funct[6] != NULL)
-    event_funct[6]((int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[6]);
-}
-
-
-- (void) otherMouseDragged:(NSEvent *)theEvent
-{
-  NSPoint thepoint;
-
-  thepoint = [theEvent locationInWindow];
-  //  printf("Mouse moved  pos: %f, %f\n", thepoint.x, thepoint.y);
-  if (event_funct[6] != NULL)
-    event_funct[6]((int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[6]);
-}
-
-
-- (void) scrollWheel:(NSEvent *)theEvent
-{
-  NSPoint thepoint;
-  int     button;
-  float	  sens;
-
-  if (event_funct[4] == NULL)
-    return ;
-
-  button = 0;
-  thepoint = [theEvent locationInWindow];
-  sens = [theEvent deltaY];
-  if (sens > 0.2)
-    button = 4;
-  if (sens < -0.2)
-    button = 5;
-  sens = [theEvent deltaX];
-  if (sens > 0.2)
-    button = 6;
-  if (sens < -0.2)
-    button = 7;
-  if (button != 0)
-    event_funct[4](button, (int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[4]);
-}
-
-
-- (void) exposeNotification:(NSNotification *)note
-{
-  //    printf("Expose...\n");
-    if (event_funct[12] != NULL)
-      event_funct[12](event_param[12]);
-    //    printf("Expose done.\n");
-}
-
-- (void) closeNotification:(NSNotification *)note
-{
-  if (event_funct[17] != NULL)
-    event_funct[17](event_param[17]);
-}
-
-- (void) deminiaturizeNotification:(NSNotification *)note
-{
-  //  if (event_funct[??] != NULL)
-  //    event_funct[??](event_param[??]);
-  [self exposeNotification:note];
-}
-@end
-
-
-@implementation MlxWin
-
-- (id) initWithRect: (NSRect)rect andTitle: (NSString *)title pfaAttrs: (NSOpenGLPixelFormatAttribute *)attrs
-{
-  NSOpenGLPixelFormat* pixFmt = [[NSOpenGLPixelFormat alloc] initWithAttributes:attrs];
-
-  if ((self = [super initWithFrame:rect pixelFormat:pixFmt]) != nil)
-    {
-      NSUInteger windowStyle = NSWindowStyleMaskTitled | NSWindowStyleMaskClosable | NSWindowStyleMaskMiniaturizable;
-
-      win = [[NSWindowEvent alloc] initWithContentRect:rect
-				   styleMask:windowStyle
-				   backing:NSBackingStoreBuffered   // NSBackingStoreNonretained
-				   defer:NO];
-      [win setContentView:self];
-      [win setTitle:title];
-      [win setKeyRepeat:1];
-      [win makeKeyAndOrderFront:self];
-
-      //      printf("init ctx: current %p ", [NSOpenGLContext currentContext]);
-
-      //      ctx = [[NSOpenGLContext alloc] initWithFormat:pixFmt shareContext:[NSOpenGLContext currentContext]]; //other_context];
-      //      [ctx setView:self];
-      //      [ctx makeCurrentContext];
-
-      [[self openGLContext] makeCurrentContext];
-      [[self openGLContext] setView:self];
-      [self prepareOpenGL];
-
-      [self setNextKeyView:self];
-
-      //      [[NSNotificationCenter defaultCenter] addObserver:win selector:@selector(exposeNotification:) name:@"NSWindowDidExposeNotification" object:nil];
-      [[NSNotificationCenter defaultCenter] addObserver:win selector:@selector(exposeNotification:) name:@"NSWindowDidBecomeKeyNotification" object:win];
-      [[NSNotificationCenter defaultCenter] addObserver:win selector:@selector(deminiaturizeNotification:) name:@"NSWindowDidDeminiaturizeNotification" object:win];
-      [[NSNotificationCenter defaultCenter] addObserver:win selector:@selector(closeNotification:) name:@"NSWindowWillCloseNotification" object:win];
-      // [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(ctxNeedsUpdate:)
-      //				    name:NSViewGlobalFrameDidChangeNotification
-      //				    object:nil];
-
-      size_x = rect.size.width;
-      size_y = rect.size.height;
-
-      glClearColor(0, 0, 0, 0);
-      glClear(GL_COLOR_BUFFER_BIT);
-      glFlush();
-
-      //[win makeKeyAndOrderFront:nil];
-      // BOOL r = [win isKeyWindow];
-      //  if (r==YES) printf("keywindow ok\n"); else printf("keywindow KO\n");
-
-      // Window controller subclass to set title
-      // NSWindowController* windowController = [[NSWindowController alloc] initWithWindow:win];
-      // [windowController windowTitleForDocumentDisplayName:title];
-      // [windowController showWindow:nil];
-      // MlxWinController *mlxWinCont = [[MlxWinController alloc] initWin:win andTitle:title];
-
-      // after nswindowcontroller who will retake first responder
-      //      BOOL r = [win makeFirstResponder:nil];
-      //      if (r==YES) printf("responder ok\n"); else printf("responder KO\n");
-
-      [pixFmt release];
-    }
-  return (self);
-}
-
-- (int)	pixel_management
-{
-  bzero(&glsl, sizeof(glsl));   // so gldelete[shader/program] go silent on error.
-
-  glDisable(GL_DEPTH_TEST);
-  glGenBuffers(1, &pixel_vbuffer);
-  glBindBuffer(GL_ARRAY_BUFFER, pixel_vbuffer);
-  glBufferData(GL_ARRAY_BUFFER, sizeof(pixel_vertexes), pixel_vertexes, GL_DYNAMIC_DRAW); // 4 points buff
-  // pixel_ptr = glMapBuffer(GL_ARRAY_BUFFER, GL_WRITE_ONLY);
-
-  glGenTextures(1, &pixel_texture);
-  glBindTexture(GL_TEXTURE_2D, pixel_texture);
-  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,     GL_CLAMP_TO_EDGE);
-  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,     GL_CLAMP_TO_EDGE);
-  pixtexbuff = malloc(sizeof(unsigned int)*size_x*size_y);
-  pixel_nb = size_x*size_y;
-  while (pixel_nb--) pixtexbuff[pixel_nb] = 0xFF000000;
-  pixel_nb = 0;
-  glTexImage2D(
-	       GL_TEXTURE_2D, 0,           /* target, level of detail */
-	       GL_RGBA8,                    /* internal format */
-	       size_x, size_y, 0,           /* width, height, border */
-	       GL_BGRA, GL_UNSIGNED_BYTE,   /* external format, type */
-	       pixtexbuff                   /* pixels */
-	       );
-  //      printf("pix tex err? 0x%x\n", glGetError());
-
-  if (mlx_shaders(&glsl))
-    return (0);
-
-  glUseProgram(glsl.pixel_program);
-  glsl.loc_pixel_texture = glGetUniformLocation(glsl.pixel_program, "texture");
-  //glsl.loc_pixel_winhalfsize = glGetUniformLocation(glsl.pixel_program, "winhalfsize");
-  glsl.loc_pixel_position = glGetAttribLocation(glsl.pixel_program, "position");
-  //      printf("err? 0x%x\n", glGetError());
-
-  glUseProgram(glsl.image_program);
-  glsl.loc_image_texture = glGetUniformLocation(glsl.image_program, "texture");
-  glsl.loc_image_pos = glGetUniformLocation(glsl.image_program, "imagepos");
-  glsl.loc_image_size = glGetUniformLocation(glsl.image_program, "imagesize");
-  glsl.loc_image_winhalfsize = glGetUniformLocation(glsl.image_program, "winhalfsize");
-  glsl.loc_image_position = glGetAttribLocation(glsl.image_program, "position");
-  //      printf("err? 0x%x\n", glGetError());
-
-  glUseProgram(glsl.font_program);
-  glsl.loc_font_texture = glGetUniformLocation(glsl.font_program, "texture");
-  glsl.loc_font_color = glGetUniformLocation(glsl.font_program, "color");
-  glsl.loc_font_posinwin = glGetUniformLocation(glsl.font_program, "fontposinwin");
-  glsl.loc_font_posinatlas = glGetUniformLocation(glsl.font_program, "fontposinatlas");
-  glsl.loc_font_atlassize = glGetUniformLocation(glsl.font_program, "fontatlassize");
-  glsl.loc_font_winhalfsize = glGetUniformLocation(glsl.font_program, "winhalfsize");
-  glsl.loc_font_position = glGetAttribLocation(glsl.font_program, "position");
-  //      printf("err? 0x%x\n", glGetError());
-
-  glFlush();
-  return (1);
-}
-
-- (void) ctxNeedsUpdate
-{
-  // printf("Context update\n");
-  [ctx update];
-}
-
-- (void) selectGLContext
-{
-  if ([NSOpenGLContext currentContext] != [self openGLContext])
-    {
-      //      printf("ctx: %p => %p\n", [NSOpenGLContext currentContext], [self openGLContext]);
-      [[self openGLContext] makeCurrentContext];
-    }
-}
-
-- (void) flushGLContext
-{
-  [[self openGLContext] flushBuffer];
-}
-
-- (NSOpenGLContext *) ctx
-{
-  return (ctx);
-}
-
-- (NSWindowEvent *) win
-{
-  return (win);
-}
-
-
-- (void) pixelPutColor: (int)color X:(int)x Y:(int)y
-{
-  pixel_nb ++;
-
-  glBindTexture(GL_TEXTURE_2D, pixel_vbuffer);
-  glTexSubImage2D(GL_TEXTURE_2D, 0, x, y, 1, 1, GL_BGRA, GL_UNSIGNED_BYTE, (GLvoid *)(&color));
-
-  if (pixel_nb >= MAX_PIXEL_NB)
-    [self mlx_gl_draw];
-}
-
-- (void) destroyPixelManagement
-{
-  free(pixtexbuff);
-  [self selectGLContext];
-  glDeleteBuffers(1, &pixel_vbuffer);
-  glDeleteTextures(1, &pixel_texture);
-  glDeleteProgram(glsl.pixel_program);
-  glDeleteProgram(glsl.image_program);
-  glDeleteShader(glsl.pixel_vshader);
-  glDeleteShader(glsl.pixel_fshader);
-  glDeleteShader(glsl.image_vshader);
-  glDeleteShader(glsl.image_fshader);
-}
-
-
-- (void) destroyMe
-{
-  [[NSNotificationCenter defaultCenter] removeObserver:win];
-  [[NSNotificationCenter defaultCenter] removeObserver:self];
-  // [ctx release];
-  [win close];
-  [self release];
-}
-
-- (void) setEvent:(int)event andFunc:(func_t)func andParam:(void *)param
-{
-  [win setEvent:event andFunc:func andParam:param];
-}
-
-- (void) setKeyRepeat:(int)mode
-{
-  [win setKeyRepeat:mode];
-}
-
-- (void) clearWin
-{
-  glClearColor(0, 0, 0, 0);
-  glClear(GL_COLOR_BUFFER_BIT);
-}
-
-- (void) mlx_gl_draw_img:(mlx_img_list_t *)img andCtx:(mlx_img_ctx_t *)imgctx andX:(int)x andY:(int)y
-{
-
-  if (pixel_nb >0)
-    [self mlx_gl_draw];
-
-  glUseProgram(glsl.image_program);
-
-  glActiveTexture(GL_TEXTURE0);
-  glBindTexture(GL_TEXTURE_2D, imgctx->texture);
-  glUniform1i(glsl.loc_image_texture, 0);
-
-  glUniform2f(glsl.loc_image_winhalfsize, size_x/2, size_y/2);
-  glUniform2f(glsl.loc_image_pos, x, size_y - y);
-  glUniform2f(glsl.loc_image_size, img->width, -img->height);
-
-  glBindBuffer(GL_ARRAY_BUFFER, imgctx->vbuffer);
-  glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 2*sizeof(GLfloat), (void*)0);
-  glEnableVertexAttribArray(0);
-
-  glEnable(GL_BLEND);
-  glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA);  // src alpha 0xFF : keep dst
-  glBlendEquation(GL_FUNC_ADD);
-
-  glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
-  glDisableVertexAttribArray(0);
-
-}
-
-
-- (void) mlx_gl_draw_font:(mlx_img_list_t *)img andCtx:(mlx_img_ctx_t *)imgctx andX:(int)x andY:(int)y andColor:(int)color glyphX:(int)gx glyphY:(int)gy
-{
-  GLfloat color_tab[4];
-
-  if (pixel_nb >0)
-    [self mlx_gl_draw];
-
-  color_tab[0] = ((float)((color&0xFF0000)>>16))/255.0;
-  color_tab[1] = ((float)((color&0xFF00)>>8))/255.0;
-  color_tab[2] = ((float)((color&0xFF)>>0))/255.0;
-  color_tab[3] = 1.0;
-  glUseProgram(glsl.font_program);
-
-  glActiveTexture(GL_TEXTURE0);
-  glBindTexture(GL_TEXTURE_2D, imgctx->texture);
-  glUniform1i(glsl.loc_font_texture, 0);
-  glUniform4fv(glsl.loc_font_color, 1, color_tab);
-
-  glUniform2f(glsl.loc_font_winhalfsize, size_x/2, size_y/2);
-  glUniform2f(glsl.loc_font_posinwin, x, size_y - 1 - y);
-  glUniform2f(glsl.loc_font_posinatlas, gx, gy);
-  glUniform2f(glsl.loc_font_atlassize, img->width, img->height);
-
-  glBindBuffer(GL_ARRAY_BUFFER, imgctx->vbuffer);
-  glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 2*sizeof(GLfloat), (void*)0);
-  glEnableVertexAttribArray(0);
-
-  glEnable(GL_BLEND);
-  glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA);  // src alpha 0xFF : keep dst
-  glBlendEquation(GL_FUNC_ADD);
-
-  glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
-  glDisableVertexAttribArray(0);
-
-}
-
-
-- (void) mlx_gl_draw
-{
-  if (pixel_nb <= 0)
-    return ;
-
-  glUseProgram(glsl.pixel_program);
-
-  glActiveTexture(GL_TEXTURE0);
-  glBindTexture(GL_TEXTURE_2D, pixel_vbuffer);
-  glUniform1i(glsl.loc_pixel_texture, 0);
-  
-  glBindBuffer(GL_ARRAY_BUFFER, pixel_vbuffer);
-  glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 2*sizeof(GLfloat), (void*)0);
-  glEnableVertexAttribArray(0);
-
-  glEnable(GL_BLEND);
-  glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA);  // src alpha 0xFF : keep dst
-  glBlendEquation(GL_FUNC_ADD);
-
-  glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
-  glDisableVertexAttribArray(0);
-
-  pixel_nb = size_x*size_y;
-  while (pixel_nb--) pixtexbuff[pixel_nb] = 0xFF000000;
-  glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, size_x, size_y, 0, GL_BGRA, GL_UNSIGNED_BYTE, pixtexbuff);
-  pixel_nb = 0;
-  
-}
-
-@end
-
-
-// mlx API
- 
-
-void *mlx_new_window(mlx_ptr_t *mlx_ptr, int size_x, int size_y, char *title)
-{
-  mlx_win_list_t	*newwin;
-  NSString		*str;
-
-  if ((newwin = malloc(sizeof(*newwin))) == NULL)
-    return ((void *)0);
-  newwin->img_list = NULL;
-  newwin->next = mlx_ptr->win_list;
-  newwin->nb_flush = 0;
-  newwin->pixmgt = 1;
-  mlx_ptr->win_list = newwin;
-
-  NSRect windowRect = NSMakeRect(100, 100, size_x, size_y);
-  str = [NSString stringWithCString:title encoding:NSASCIIStringEncoding];
-  newwin->winid = [[MlxWin alloc] initWithRect:windowRect andTitle:str pfaAttrs:pfa_attrs];
-  if (newwin->winid)
-    if (![(id)(newwin->winid) pixel_management])
-      {
-	[(id)(newwin->winid) destroyPixelManagement];
-	[(id)(newwin->winid) destroyMe];
-      }
-  return ((void *)newwin);
-}
-
-
-void mlx_clear_window(mlx_ptr_t *mlx_ptr, mlx_win_list_t *win_ptr)
-{
-  [(id)(win_ptr->winid) selectGLContext];
-  [(id)(win_ptr->winid) clearWin];
-  win_ptr->nb_flush ++;
-}
-
-
-void mlx_expose_hook(mlx_win_list_t *win_ptr, int (*funct_ptr)(), void *param)
-{
-  [(id)(win_ptr->winid) setEvent:12 andFunc:funct_ptr andParam:param];
-}
-
-void mlx_key_hook(mlx_win_list_t *win_ptr, int (*funct_ptr)(), void *param)
-{
-  [(id)(win_ptr->winid) setEvent:3 andFunc:funct_ptr andParam:param];
-}
-
-void mlx_mouse_hook(mlx_win_list_t *win_ptr, int (*funct_ptr)(), void *param)
-{
-  [(id)(win_ptr->winid) setEvent:4 andFunc:funct_ptr andParam:param];
-}
-
-void mlx_hook(mlx_win_list_t *win_ptr, int x_event, int x_mask, int (*funct_ptr)(), void *param)
-{
-  [(id)(win_ptr->winid) setEvent:x_event andFunc:funct_ptr andParam:param];
-}
-
-int     mlx_do_key_autorepeatoff(mlx_ptr_t *mlx_ptr)
-{
-  mlx_win_list_t *win;
-
-  win = mlx_ptr->win_list;
-  while (win)
-    {
-      [(id)(win->winid) setKeyRepeat:0];
-      win = win->next;
-    }
-  return (0);
-}
-
-int     mlx_do_key_autorepeaton(mlx_ptr_t *mlx_ptr)
-{
-  mlx_win_list_t *win;
-
-  win = mlx_ptr->win_list;
-  while (win)
-    {
-      [(id)(win->winid) setKeyRepeat:1];
-      win = win->next;
-    }
-  return (0);
-}
-
-
-int     mlx_destroy_window(mlx_ptr_t *mlx_ptr, mlx_win_list_t *win_to_del)
-{
-  mlx_win_list_t    first;
-  mlx_win_list_t    *win;
-  mlx_img_ctx_t	    *ctx;
-  mlx_img_ctx_t	    *ctx2;
-
-  first.next = mlx_ptr->win_list;
-  win = &first;
-  while (win && win->next)
-    {
-      if (win->next == win_to_del)
-	win->next = win->next->next;
-      win = win->next;
-    }
-  mlx_ptr->win_list = first.next;
-
-  if (win_to_del->pixmgt)
-    {
-      [(id)(win_to_del->winid) selectGLContext];
-      ctx = win_to_del->img_list;   // should be null anyway if no pixel management
-      while (ctx)
-	{
-	  glDeleteBuffers(1, &(ctx->vbuffer));
-	  glDeleteTextures(1, &(ctx->texture));
-	  ctx2 = ctx;
-	  ctx = ctx->next;
-	  free(ctx2);
-	}
-      [(id)(win_to_del->winid) destroyPixelManagement];
-    }
-  [(id)(win_to_del->winid) destroyMe];
-  free(win_to_del);
-
-  //  printf("destroy window done.\n");
-  mlx_do_sync(mlx_ptr);
-  return (0);
-}
diff --git a/libmlx/mlx_opengl.h b/libmlx/mlx_opengl.h
deleted file mode 100644
index bb39267..0000000
--- a/libmlx/mlx_opengl.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-**
-** mlx_opengl.h 
-**
-** public include, use it after mlx.h
-** designed only for minilibx_macos
-**
-*/
-
-void    *mlx_new_opengl_window(void *mlx_ptr, int size_x, int size_y, char *title);
-
-/* create an opengl window. put_image & pixel_put & string_put do not work there. */
-
-int	mlx_opengl_swap_buffers(void *win_ptr);
-
-/* the created window is double buffered. Use this funct to swap buffers */
-/* this funct will call glFlush(). Don't call it. */
-
-int	mlx_opengl_window_set_context(void *win_ptr);
-
-/* in case multiple opengl windows are present, change opengl active context */
diff --git a/libmlx/mlx_opengl.m b/libmlx/mlx_opengl.m
deleted file mode 100644
index 554d79b..0000000
--- a/libmlx/mlx_opengl.m
+++ /dev/null
@@ -1,57 +0,0 @@
-// mlx_opengl.m
-
-#import <Cocoa/Cocoa.h>
-#import <OpenGL/gl3.h>
-#import <AppKit/NSOpenGLView.h>
-
-#include <stdio.h>
-
-#include "mlx_int.h"
-#include "mlx_new_window.h"
-
-
-
-
-
-NSOpenGLPixelFormatAttribute pfa_attrs_opengl[] =
-  {
-    NSOpenGLPFADepthSize, 32,
-    NSOpenGLPFADoubleBuffer,
-    NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion4_1Core,
-    0
-  };
-
-
-
-void	*mlx_new_opengl_window(mlx_ptr_t *mlx_ptr, int size_x, int size_y, char *title)
-{
-  mlx_win_list_t	*newwin;
-  NSString		*str;
-
-  if ((newwin = malloc(sizeof(*newwin))) == NULL)
-    return ((void *)0);
-  newwin->img_list = NULL;
-  newwin->next = mlx_ptr->win_list;
-  newwin->nb_flush = 0;
-  newwin->pixmgt = 0;
-  mlx_ptr->win_list = newwin;
-
-  NSRect windowRect = NSMakeRect(100, 100, size_x, size_y);
-  str = [NSString stringWithCString:title encoding:NSASCIIStringEncoding];
-  newwin->winid = [[MlxWin alloc] initWithRect:windowRect andTitle:str pfaAttrs:pfa_attrs_opengl];
-
-  return ((void *)newwin);
-}
-
-
-int	mlx_opengl_swap_buffers(mlx_win_list_t *win_ptr)
-{
-  [(id)(win_ptr->winid) flushGLContext];
-  return (0);
-}
-
-int	mlx_opengl_window_set_context(mlx_win_list_t *win_ptr)
-{
-  [(id)(win_ptr->winid) selectGLContext];
-  return (0);
-}
diff --git a/libmlx/mlx_png.c b/libmlx/mlx_png.c
deleted file mode 100644
index ca8024d..0000000
--- a/libmlx/mlx_png.c
+++ /dev/null
@@ -1,418 +0,0 @@
-
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <sys/mman.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <err.h>
-#include <string.h>
-#include <arpa/inet.h>
-
-#include "zlib.h"
-
-#include <OpenGL/gl3.h>
-#include	"mlx_int.h"
-
-
-#define	PNG_MAGIC_SIZE	8
-unsigned char magic[PNG_MAGIC_SIZE] = {137, 80, 78, 71, 13, 10, 26, 10};
-#define PNG_HDR_SIZE	13
-
-#define	Z_CHUNK	32768
-
-#define	ERR_MAGIC_SIZE	1
-#define	ERR_MAGIC_WRONG	2
-#define	ERR_STRUCT_INCOMPLETE	3
-#define	ERR_STRUCT_HDR	4
-#define	ERR_STRUCT_END	5
-#define	ERR_STRUCT_CRC	6
-#define	ERR_STRUCT_INCIMPL 7
-#define	ERR_STRUCT_DAT	8
-#define	ERR_STRUCT_MISSCHK	9
-#define	ERR_ZLIB	10
-#define	ERR_DATA_MISMATCH	11
-#define	ERR_DATA_FILTER	12
-char *(mipng_err[]) =
-{
-  "No error",
-  "Not enough size for magic",
-  "Wrong magic",
-  "Incomplete chunk structure",
-  "Duplicate or incorrect header",
-  "Duplicate or incorrect end",
-  "Invalid CRC in chunk",
-  "Incorrect header or configuration not implemented",
-  "Non consecutive dat chunks",
-  "Missing header/dat/end chunk(s)",
-  "Zlib inflate error",
-  "Inflated data size mismatch",
-  "Unknown scanline filter"
-};
-
-typedef struct png_info_s
-{
-  unsigned int	width;
-  unsigned int	height;
-  int		depth;
-  int		color;
-  int		interlace;
-  int		bpp;
-} png_info_t;
-
-
-int	mipng_is_type(unsigned char *ptr, char *type)
-{
-  if (ptr[4] == type[0] && ptr[5] == type[1] && ptr[6] == type[2] && ptr[7] == type[3])
-    return (1);
-  return (0);
-}
-
-
-unsigned char mipng_defilter_none(unsigned char *buff, int pos, int a, int b, int c)
-{ return (buff[pos]); }
-unsigned char mipng_defilter_sub(unsigned char *buff, int pos, int a, int b, int c)
-{ return (buff[pos]+(unsigned int)a); }
-unsigned char mipng_defilter_up(unsigned char *buff, int pos, int a, int b, int c)
-{ return (buff[pos]+(unsigned int)b); }
-unsigned char mipng_defilter_average(unsigned char *buff, int pos, int a, int b, int c)
-{ return (buff[pos]+((unsigned int)a+(unsigned int)b)/2); }
-unsigned char mipng_defilter_paeth(unsigned char *buff, int pos, int a, int b, int c)
-{
-  int	p;
-  int	result;
-
-  p = a + b - c;
-  if (abs(b - c) <= abs(a - c) && abs(b - c) <= abs(a + b - c - c))
-    result = a;
-  else
-    if (abs(a - c) <= abs(a + b - c - c))
-      result = b;
-    else
-      result = c;
- return (buff[pos]+result);
-}
-
-
-
-unsigned char (*(mipng_defilter[]))(unsigned char *buff, int pos, int a, int b, int c) =
-{
-  mipng_defilter_none,
-  mipng_defilter_sub,
-  mipng_defilter_up,
-  mipng_defilter_average,
-  mipng_defilter_paeth
-};
-
-// only work for mlx mac or img 32bpp
-int	mipng_fill_img(mlx_img_list_t *img, unsigned char *buf, png_info_t *pi)
-{
-  unsigned int	current_filter;
-  int	ipos;
-  int	bpos;
-  int	ilen;
-  int	iline;
-  int	blen;
-  unsigned char tmp;
-  unsigned char *ibuf;
-
-  ibuf = (unsigned char *)img->buffer;
-  iline = img->width * UNIQ_BPP;
-  ilen = img->width * img->height * UNIQ_BPP;
-  blen = img->width * img->height * pi->bpp + img->height;
-  ipos = 0;
-  bpos = 0;
-  while (ipos < ilen && bpos < blen)
-    {
-      if ((ipos % iline) == 0)
-	{
-	  if ((current_filter = buf[bpos++]) > 4)
-	    return (ERR_DATA_FILTER);
-	}
-      ibuf[ipos] = mipng_defilter[current_filter](buf, bpos,
-				 ipos%iline>3?ibuf[ipos-UNIQ_BPP]:0,
-				 (ipos>=iline)?ibuf[ipos-iline]:0,
-				 (ipos>=iline && ipos%iline>3)?ibuf[ipos-iline-UNIQ_BPP]:0);
-      ipos ++;
-      bpos ++;
-      if (pi->depth == 16)
-	bpos ++;
-      if (ipos % 4 == 3 && pi->color == 2)  // no alpha
-	img->buffer[ipos++] = 0xFF;
-    }
-  if (ipos != ilen || bpos != blen)
-    {
-      //      printf("fill err ipos %d vs %d, bpos %d vs %d\n", ipos, ilen, bpos, blen);
-      return (ERR_DATA_MISMATCH);
-    }
-  ipos = 0;
-  while (ipos < ilen)
-    {
-      tmp = ibuf[ipos];
-      ibuf[ipos] = ibuf[ipos+2];
-      ibuf[ipos+2] = tmp;
-      ibuf[ipos+3] = 0xFF - ibuf[ipos+3];
-      ipos += UNIQ_BPP;
-    }
-  return (0);
-}
-
-
-int	mipng_data(mlx_img_list_t *img, unsigned char *dat, png_info_t *pi)
-{
-  unsigned int	len;
-  int		b_pos;
-  unsigned char *buffer;
-  int		ret;
-  int z_ret;
-  unsigned z_have;
-  z_stream z_strm;
-  unsigned char z_out[Z_CHUNK];
-
-  b_pos = 0;
-  if (!(buffer = malloc((long long)img->width*(long long)img->height*(long long)pi->bpp + img->height)))
-    err(1, "Can't malloc");
-  z_strm.zalloc = Z_NULL;
-  z_strm.zfree = Z_NULL;
-  z_strm.opaque = Z_NULL;
-  z_strm.avail_in = 0;
-  z_strm.next_in = Z_NULL;
-  z_ret = inflateInit(&z_strm);
-  if (z_ret != Z_OK)
-    return (ERR_ZLIB);
-
-  while (mipng_is_type(dat, "IDAT"))
-    {
-      len = *((unsigned int *)dat);
-      len = ntohl(len);
-      z_strm.avail_in = len;
-      z_strm.next_in = dat + 8;
-      z_strm.avail_out = 0;
-      while (z_strm.avail_out == 0)
-	{
-	  z_strm.avail_out = Z_CHUNK;
-	  z_strm.next_out = z_out;
-	  z_ret = inflate(&z_strm, Z_NO_FLUSH);
-	  //	  printf("inflate ret %d avail_out %d\n", z_ret, z_strm.avail_out);
-	  if (z_ret != Z_OK && z_ret != Z_STREAM_END)
-	    {
-	      inflateEnd(&z_strm);
-	      return (ERR_ZLIB);
-	    }
-	  if (b_pos + Z_CHUNK - z_strm.avail_out > img->width*img->height*pi->bpp+img->height)
-	    {
-	      inflateEnd(&z_strm);
-	      return (ERR_DATA_MISMATCH);
-	    }
-	  bcopy(z_out, buffer+b_pos, Z_CHUNK - z_strm.avail_out);
-	  b_pos += Z_CHUNK - z_strm.avail_out;
-	}
-      dat += len + 4 + 4 + 4;
-    } 
-  inflateEnd(&z_strm);
-  if (b_pos != img->width*img->height*pi->bpp+img->height)
-    {
-      //      printf("pb : bpos %d vs expected %d\n", b_pos, img->width*img->height*pi->bpp+img->height);
-      return (ERR_DATA_MISMATCH);
-    }
-  if ((ret = mipng_fill_img(img, buffer, pi)))
-    return (ret);
-  return (0);
-}
-
-
-
-int	mipng_magic(unsigned char *ptr, int size)
-{
-  int	i;
-
-  if (size < PNG_MAGIC_SIZE)
-    return (ERR_MAGIC_SIZE);
-  i = 0;
-  while (i < PNG_MAGIC_SIZE)
-    if (*(ptr++) != magic[i++])
-      return (ERR_MAGIC_WRONG);
-  return (0);
-}
-
-
-unsigned long crc_table[256] = { 0, 0x77073096, 0xee0e612c, 0x990951ba, 0x76dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0xedb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x9b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x1db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x6b6b51f, 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0xf00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x86d3d2d, 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x3b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x4db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, 0xd6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0xa00ae27, 0x7d079eb1, 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x26d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x5005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0xcb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0xbdbdf21, 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d };
-
-// From http://www.w3.org/TR/PNG/#D-CRCAppendix
-int	mipng_crc(unsigned char *ptr, int len)
-{
-  unsigned int	file_crc;
-  unsigned long crc;
-  int		i;
-
-  file_crc = *((unsigned int *)(ptr+4+4+len));
-  file_crc = ntohl(file_crc);
-  
-  crc = 0xffffffffL;
-  i = 0;
-  while (i < len+4)
-    crc = crc_table[(crc ^ ptr[(i++)+4]) & 0xff] ^ (crc >> 8);
-  crc ^= 0xffffffffL;
-
-  if (file_crc != crc)
-    return (1);
-  return (0);
-}
-
-
-int	mipng_structure(unsigned char *ptr, int size, unsigned char **hdr, unsigned char **dat)
-{
-  unsigned int	len;
-  int		dat_state;
-  int		end;
-
-  dat_state = 0;
-  *hdr = NULL;
-  *dat = NULL;
-  end = 0;
-  while (size)
-    {
-      if (size >= 4) // length present
-	{
-	  len = *((unsigned int *)ptr);
-	  len = ntohl(len);
-	  if (size < 4 + 4 + 4 + len)
-	    return (ERR_STRUCT_INCOMPLETE);
-	  if (mipng_crc(ptr, len))
-	    return (ERR_STRUCT_CRC);
-	  //	  printf("found chunk len %d type %c%c%c%c\n", len, *(ptr+4), *(ptr+5), *(ptr+6), *(ptr+7));
-	  if (mipng_is_type(ptr, "IHDR"))
-	    {
-	      if (*hdr || len != PNG_HDR_SIZE)
-		return (ERR_STRUCT_HDR);
-	      *hdr = ptr;
-	    }
-	  if (mipng_is_type(ptr, "IEND"))
-	    {
-	      if (len != 0 || size != 4+4+4)
-		return (ERR_STRUCT_END);
-	      end = 1;
-	    }
-	  if (mipng_is_type(ptr, "IDAT"))
-	    {
-	      if (dat_state == 0)
-		{
-		  dat_state = 1;
-		  *dat = ptr;
-		}
-	      if (dat_state == 2)
-		return (ERR_STRUCT_DAT);
-	    }
-	  else
-	    if (dat_state == 1)
-	      dat_state = 2;
-	  size -= 4+4+4+len;
-	  ptr += 4+4+4+len;
-	}
-      else
-	return (ERR_STRUCT_INCOMPLETE);
-    }
-  if (*hdr == 0 || *dat == 0 || end == 0)
-    return (ERR_STRUCT_MISSCHK);
-  return (0);
-}
-
-
-int	mipng_verif_hdr(unsigned char *hdr, png_info_t *pi)
-{
-  unsigned int	compress;
-  unsigned int	filter;
-
-  hdr += 8;
-  pi->width = ntohl(*((unsigned long *)hdr));
-  pi->height = ntohl(*((unsigned long *)(hdr+4)));
-  pi->depth = *(hdr+8);
-  pi->color = *(hdr+9);
-  compress = *(hdr+10);
-  filter = *(hdr+11);
-  pi->interlace = *(hdr+12);
-  if (pi->width <= 0 || pi->height <= 0 || (pi->depth != 8 && pi->depth != 16)
-      || (pi->color != 2 && pi->color != 6) || compress != 0 || filter != 0 || pi->interlace != 0)
-    return (ERR_STRUCT_INCIMPL);
-  pi->bpp = pi->depth / 8;
-  if (pi->color == 2)
-    pi->bpp *= 3;
-  if (pi->color == 6)
-    pi->bpp *= 4;
-  //  printf("hdr info : %d x %d, depth %d, col type %d, comp %d, filter %d, interlace %d\nbpp is %d\n",
-  //	 pi->width, pi->height, pi->depth, pi->color, compress, filter, pi->interlace, pi->bpp);
-  return (0);
-}
-
-
-mlx_img_list_t	*mlx_int_parse_png(mlx_ptr_t *xvar, unsigned char *fptr, int size)
-{
-  int		err;
-  unsigned char *hdr;
-  unsigned char *dat;
-  png_info_t	pi;
-  mlx_img_list_t *img;
-
-  if ((err = mipng_magic(fptr, size)))
-    {
-      warnx("mlx PNG error : %s", mipng_err[err]);
-      return ((mlx_img_list_t *)0);
-    }
-  fptr += PNG_MAGIC_SIZE;
-  size -= PNG_MAGIC_SIZE;
-  if ((err = mipng_structure(fptr, size, &hdr, &dat)))
-    {
-      warnx("mlx PNG error : %s", mipng_err[err]);
-      return ((mlx_img_list_t *)0);
-    }
-  if ((err = mipng_verif_hdr(hdr, &pi)))
-    {
-      warnx("mlx PNG error : %s", mipng_err[err]);
-      return ((mlx_img_list_t *)0);
-    }
-  if (!(img = mlx_new_image(xvar, pi.width, pi.height)))
-    {
-      warnx("mlx PNG error : Can't create mlx image");
-      return ((mlx_img_list_t *)0);
-    }
-  if ((err = mipng_data(img, dat, &pi)))
-    {
-      mlx_destroy_image(xvar, img);
-      warnx("mlx PNG error : %s", mipng_err[err]);
-      return ((mlx_img_list_t *)0);
-    }
-  return (img);
-}
-
-
-
-
-void	*mlx_png_file_to_image(mlx_ptr_t *xvar, char *file, int *width, int *height)
-{
-  int			fd;
-  int			size;
-  unsigned char		*ptr;
-  mlx_img_list_t        *img;
-
-  if ((fd = open(file, O_RDONLY)) == -1 || (size = lseek(fd, 0, SEEK_END)) == -1 ||
-      (ptr = mmap(0, size, PROT_READ, MAP_PRIVATE, fd, 0)) == (void *)MAP_FAILED)
-    {
-      if (fd >= 0)
-        close(fd);
-      warnx("Can't map png file '%s'", file);
-      return ((void *)0);
-    }
-  if ((img = mlx_int_parse_png(xvar, ptr, size)))
-    {
-      *width = img->width;
-      *height = img->height;
-    }
-  else
-    {
-      *width = 0;
-      *height = 0;
-    }
-  munmap(ptr,size);
-  close(fd);
-  return (img);
-}
diff --git a/libmlx/mlx_png.h b/libmlx/mlx_png.h
deleted file mode 100644
index 83ef145..0000000
--- a/libmlx/mlx_png.h
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-void    *mlx_png_file_to_image(void *xvar, char *file, int *width, int *height);
diff --git a/libmlx/mlx_rgb.c b/libmlx/mlx_rgb.c
deleted file mode 100644
index 3f98717..0000000
--- a/libmlx/mlx_rgb.c
+++ /dev/null
@@ -1,763 +0,0 @@
-/*
-** This is a generated file with rgb2c.pl and rgb.txt from
-** the XFree86 distribution.
-*/
-
-
-struct s_col_name mlx_col_name[] =
-{
- { "snow" , 0xfffafa },
- { "ghost white" , 0xf8f8ff },
- { "ghostwhite" , 0xf8f8ff },
- { "white smoke" , 0xf5f5f5 },
- { "whitesmoke" , 0xf5f5f5 },
- { "gainsboro" , 0xdcdcdc },
- { "floral white" , 0xfffaf0 },
- { "floralwhite" , 0xfffaf0 },
- { "old lace" , 0xfdf5e6 },
- { "oldlace" , 0xfdf5e6 },
- { "linen" , 0xfaf0e6 },
- { "antique white" , 0xfaebd7 },
- { "antiquewhite" , 0xfaebd7 },
- { "papaya whip" , 0xffefd5 },
- { "papayawhip" , 0xffefd5 },
- { "blanched almond" , 0xffebcd },
- { "blanchedalmond" , 0xffebcd },
- { "bisque" , 0xffe4c4 },
- { "peach puff" , 0xffdab9 },
- { "peachpuff" , 0xffdab9 },
- { "navajo white" , 0xffdead },
- { "navajowhite" , 0xffdead },
- { "moccasin" , 0xffe4b5 },
- { "cornsilk" , 0xfff8dc },
- { "ivory" , 0xfffff0 },
- { "lemon chiffon" , 0xfffacd },
- { "lemonchiffon" , 0xfffacd },
- { "seashell" , 0xfff5ee },
- { "honeydew" , 0xf0fff0 },
- { "mint cream" , 0xf5fffa },
- { "mintcream" , 0xf5fffa },
- { "azure" , 0xf0ffff },
- { "alice blue" , 0xf0f8ff },
- { "aliceblue" , 0xf0f8ff },
- { "lavender" , 0xe6e6fa },
- { "lavender blush" , 0xfff0f5 },
- { "lavenderblush" , 0xfff0f5 },
- { "misty rose" , 0xffe4e1 },
- { "mistyrose" , 0xffe4e1 },
- { "white" , 0xffffff },
- { "black" , 0x0 },
- { "dark slate" , 0x2f4f4f },
- { "darkslategray" , 0x2f4f4f },
- { "dark slate" , 0x2f4f4f },
- { "darkslategrey" , 0x2f4f4f },
- { "dim gray" , 0x696969 },
- { "dimgray" , 0x696969 },
- { "dim grey" , 0x696969 },
- { "dimgrey" , 0x696969 },
- { "slate gray" , 0x708090 },
- { "slategray" , 0x708090 },
- { "slate grey" , 0x708090 },
- { "slategrey" , 0x708090 },
- { "light slate" , 0x778899 },
- { "lightslategray" , 0x778899 },
- { "light slate" , 0x778899 },
- { "lightslategrey" , 0x778899 },
- { "gray" , 0xbebebe },
- { "grey" , 0xbebebe },
- { "light grey" , 0xd3d3d3 },
- { "lightgrey" , 0xd3d3d3 },
- { "light gray" , 0xd3d3d3 },
- { "lightgray" , 0xd3d3d3 },
- { "midnight blue" , 0x191970 },
- { "midnightblue" , 0x191970 },
- { "navy" , 0x80 },
- { "navy blue" , 0x80 },
- { "navyblue" , 0x80 },
- { "cornflower blue" , 0x6495ed },
- { "cornflowerblue" , 0x6495ed },
- { "dark slate" , 0x483d8b },
- { "darkslateblue" , 0x483d8b },
- { "slate blue" , 0x6a5acd },
- { "slateblue" , 0x6a5acd },
- { "medium slate" , 0x7b68ee },
- { "mediumslateblue" , 0x7b68ee },
- { "light slate" , 0x8470ff },
- { "lightslateblue" , 0x8470ff },
- { "medium blue" , 0xcd },
- { "mediumblue" , 0xcd },
- { "royal blue" , 0x4169e1 },
- { "royalblue" , 0x4169e1 },
- { "blue" , 0xff },
- { "dodger blue" , 0x1e90ff },
- { "dodgerblue" , 0x1e90ff },
- { "deep sky" , 0xbfff },
- { "deepskyblue" , 0xbfff },
- { "sky blue" , 0x87ceeb },
- { "skyblue" , 0x87ceeb },
- { "light sky" , 0x87cefa },
- { "lightskyblue" , 0x87cefa },
- { "steel blue" , 0x4682b4 },
- { "steelblue" , 0x4682b4 },
- { "light steel" , 0xb0c4de },
- { "lightsteelblue" , 0xb0c4de },
- { "light blue" , 0xadd8e6 },
- { "lightblue" , 0xadd8e6 },
- { "powder blue" , 0xb0e0e6 },
- { "powderblue" , 0xb0e0e6 },
- { "pale turquoise" , 0xafeeee },
- { "paleturquoise" , 0xafeeee },
- { "dark turquoise" , 0xced1 },
- { "darkturquoise" , 0xced1 },
- { "medium turquoise" , 0x48d1cc },
- { "mediumturquoise" , 0x48d1cc },
- { "turquoise" , 0x40e0d0 },
- { "cyan" , 0xffff },
- { "light cyan" , 0xe0ffff },
- { "lightcyan" , 0xe0ffff },
- { "cadet blue" , 0x5f9ea0 },
- { "cadetblue" , 0x5f9ea0 },
- { "medium aquamarine" , 0x66cdaa },
- { "mediumaquamarine" , 0x66cdaa },
- { "aquamarine" , 0x7fffd4 },
- { "dark green" , 0x6400 },
- { "darkgreen" , 0x6400 },
- { "dark olive" , 0x556b2f },
- { "darkolivegreen" , 0x556b2f },
- { "dark sea" , 0x8fbc8f },
- { "darkseagreen" , 0x8fbc8f },
- { "sea green" , 0x2e8b57 },
- { "seagreen" , 0x2e8b57 },
- { "medium sea" , 0x3cb371 },
- { "mediumseagreen" , 0x3cb371 },
- { "light sea" , 0x20b2aa },
- { "lightseagreen" , 0x20b2aa },
- { "pale green" , 0x98fb98 },
- { "palegreen" , 0x98fb98 },
- { "spring green" , 0xff7f },
- { "springgreen" , 0xff7f },
- { "lawn green" , 0x7cfc00 },
- { "lawngreen" , 0x7cfc00 },
- { "green" , 0xff00 },
- { "chartreuse" , 0x7fff00 },
- { "medium spring" , 0xfa9a },
- { "mediumspringgreen" , 0xfa9a },
- { "green yellow" , 0xadff2f },
- { "greenyellow" , 0xadff2f },
- { "lime green" , 0x32cd32 },
- { "limegreen" , 0x32cd32 },
- { "yellow green" , 0x9acd32 },
- { "yellowgreen" , 0x9acd32 },
- { "forest green" , 0x228b22 },
- { "forestgreen" , 0x228b22 },
- { "olive drab" , 0x6b8e23 },
- { "olivedrab" , 0x6b8e23 },
- { "dark khaki" , 0xbdb76b },
- { "darkkhaki" , 0xbdb76b },
- { "khaki" , 0xf0e68c },
- { "pale goldenrod" , 0xeee8aa },
- { "palegoldenrod" , 0xeee8aa },
- { "light goldenrod" , 0xfafad2 },
- { "lightgoldenrodyellow" , 0xfafad2 },
- { "light yellow" , 0xffffe0 },
- { "lightyellow" , 0xffffe0 },
- { "yellow" , 0xffff00 },
- { "gold" , 0xffd700 },
- { "light goldenrod" , 0xeedd82 },
- { "lightgoldenrod" , 0xeedd82 },
- { "goldenrod" , 0xdaa520 },
- { "dark goldenrod" , 0xb8860b },
- { "darkgoldenrod" , 0xb8860b },
- { "rosy brown" , 0xbc8f8f },
- { "rosybrown" , 0xbc8f8f },
- { "indian red" , 0xcd5c5c },
- { "indianred" , 0xcd5c5c },
- { "saddle brown" , 0x8b4513 },
- { "saddlebrown" , 0x8b4513 },
- { "sienna" , 0xa0522d },
- { "peru" , 0xcd853f },
- { "burlywood" , 0xdeb887 },
- { "beige" , 0xf5f5dc },
- { "wheat" , 0xf5deb3 },
- { "sandy brown" , 0xf4a460 },
- { "sandybrown" , 0xf4a460 },
- { "tan" , 0xd2b48c },
- { "chocolate" , 0xd2691e },
- { "firebrick" , 0xb22222 },
- { "brown" , 0xa52a2a },
- { "dark salmon" , 0xe9967a },
- { "darksalmon" , 0xe9967a },
- { "salmon" , 0xfa8072 },
- { "light salmon" , 0xffa07a },
- { "lightsalmon" , 0xffa07a },
- { "orange" , 0xffa500 },
- { "dark orange" , 0xff8c00 },
- { "darkorange" , 0xff8c00 },
- { "coral" , 0xff7f50 },
- { "light coral" , 0xf08080 },
- { "lightcoral" , 0xf08080 },
- { "tomato" , 0xff6347 },
- { "orange red" , 0xff4500 },
- { "orangered" , 0xff4500 },
- { "red" , 0xff0000 },
- { "hot pink" , 0xff69b4 },
- { "hotpink" , 0xff69b4 },
- { "deep pink" , 0xff1493 },
- { "deeppink" , 0xff1493 },
- { "pink" , 0xffc0cb },
- { "light pink" , 0xffb6c1 },
- { "lightpink" , 0xffb6c1 },
- { "pale violet" , 0xdb7093 },
- { "palevioletred" , 0xdb7093 },
- { "maroon" , 0xb03060 },
- { "medium violet" , 0xc71585 },
- { "mediumvioletred" , 0xc71585 },
- { "violet red" , 0xd02090 },
- { "violetred" , 0xd02090 },
- { "magenta" , 0xff00ff },
- { "violet" , 0xee82ee },
- { "plum" , 0xdda0dd },
- { "orchid" , 0xda70d6 },
- { "medium orchid" , 0xba55d3 },
- { "mediumorchid" , 0xba55d3 },
- { "dark orchid" , 0x9932cc },
- { "darkorchid" , 0x9932cc },
- { "dark violet" , 0x9400d3 },
- { "darkviolet" , 0x9400d3 },
- { "blue violet" , 0x8a2be2 },
- { "blueviolet" , 0x8a2be2 },
- { "purple" , 0xa020f0 },
- { "medium purple" , 0x9370db },
- { "mediumpurple" , 0x9370db },
- { "thistle" , 0xd8bfd8 },
- { "snow1" , 0xfffafa },
- { "snow2" , 0xeee9e9 },
- { "snow3" , 0xcdc9c9 },
- { "snow4" , 0x8b8989 },
- { "seashell1" , 0xfff5ee },
- { "seashell2" , 0xeee5de },
- { "seashell3" , 0xcdc5bf },
- { "seashell4" , 0x8b8682 },
- { "antiquewhite1" , 0xffefdb },
- { "antiquewhite2" , 0xeedfcc },
- { "antiquewhite3" , 0xcdc0b0 },
- { "antiquewhite4" , 0x8b8378 },
- { "bisque1" , 0xffe4c4 },
- { "bisque2" , 0xeed5b7 },
- { "bisque3" , 0xcdb79e },
- { "bisque4" , 0x8b7d6b },
- { "peachpuff1" , 0xffdab9 },
- { "peachpuff2" , 0xeecbad },
- { "peachpuff3" , 0xcdaf95 },
- { "peachpuff4" , 0x8b7765 },
- { "navajowhite1" , 0xffdead },
- { "navajowhite2" , 0xeecfa1 },
- { "navajowhite3" , 0xcdb38b },
- { "navajowhite4" , 0x8b795e },
- { "lemonchiffon1" , 0xfffacd },
- { "lemonchiffon2" , 0xeee9bf },
- { "lemonchiffon3" , 0xcdc9a5 },
- { "lemonchiffon4" , 0x8b8970 },
- { "cornsilk1" , 0xfff8dc },
- { "cornsilk2" , 0xeee8cd },
- { "cornsilk3" , 0xcdc8b1 },
- { "cornsilk4" , 0x8b8878 },
- { "ivory1" , 0xfffff0 },
- { "ivory2" , 0xeeeee0 },
- { "ivory3" , 0xcdcdc1 },
- { "ivory4" , 0x8b8b83 },
- { "honeydew1" , 0xf0fff0 },
- { "honeydew2" , 0xe0eee0 },
- { "honeydew3" , 0xc1cdc1 },
- { "honeydew4" , 0x838b83 },
- { "lavenderblush1" , 0xfff0f5 },
- { "lavenderblush2" , 0xeee0e5 },
- { "lavenderblush3" , 0xcdc1c5 },
- { "lavenderblush4" , 0x8b8386 },
- { "mistyrose1" , 0xffe4e1 },
- { "mistyrose2" , 0xeed5d2 },
- { "mistyrose3" , 0xcdb7b5 },
- { "mistyrose4" , 0x8b7d7b },
- { "azure1" , 0xf0ffff },
- { "azure2" , 0xe0eeee },
- { "azure3" , 0xc1cdcd },
- { "azure4" , 0x838b8b },
- { "slateblue1" , 0x836fff },
- { "slateblue2" , 0x7a67ee },
- { "slateblue3" , 0x6959cd },
- { "slateblue4" , 0x473c8b },
- { "royalblue1" , 0x4876ff },
- { "royalblue2" , 0x436eee },
- { "royalblue3" , 0x3a5fcd },
- { "royalblue4" , 0x27408b },
- { "blue1" , 0xff },
- { "blue2" , 0xee },
- { "blue3" , 0xcd },
- { "blue4" , 0x8b },
- { "dodgerblue1" , 0x1e90ff },
- { "dodgerblue2" , 0x1c86ee },
- { "dodgerblue3" , 0x1874cd },
- { "dodgerblue4" , 0x104e8b },
- { "steelblue1" , 0x63b8ff },
- { "steelblue2" , 0x5cacee },
- { "steelblue3" , 0x4f94cd },
- { "steelblue4" , 0x36648b },
- { "deepskyblue1" , 0xbfff },
- { "deepskyblue2" , 0xb2ee },
- { "deepskyblue3" , 0x9acd },
- { "deepskyblue4" , 0x688b },
- { "skyblue1" , 0x87ceff },
- { "skyblue2" , 0x7ec0ee },
- { "skyblue3" , 0x6ca6cd },
- { "skyblue4" , 0x4a708b },
- { "lightskyblue1" , 0xb0e2ff },
- { "lightskyblue2" , 0xa4d3ee },
- { "lightskyblue3" , 0x8db6cd },
- { "lightskyblue4" , 0x607b8b },
- { "slategray1" , 0xc6e2ff },
- { "slategray2" , 0xb9d3ee },
- { "slategray3" , 0x9fb6cd },
- { "slategray4" , 0x6c7b8b },
- { "lightsteelblue1" , 0xcae1ff },
- { "lightsteelblue2" , 0xbcd2ee },
- { "lightsteelblue3" , 0xa2b5cd },
- { "lightsteelblue4" , 0x6e7b8b },
- { "lightblue1" , 0xbfefff },
- { "lightblue2" , 0xb2dfee },
- { "lightblue3" , 0x9ac0cd },
- { "lightblue4" , 0x68838b },
- { "lightcyan1" , 0xe0ffff },
- { "lightcyan2" , 0xd1eeee },
- { "lightcyan3" , 0xb4cdcd },
- { "lightcyan4" , 0x7a8b8b },
- { "paleturquoise1" , 0xbbffff },
- { "paleturquoise2" , 0xaeeeee },
- { "paleturquoise3" , 0x96cdcd },
- { "paleturquoise4" , 0x668b8b },
- { "cadetblue1" , 0x98f5ff },
- { "cadetblue2" , 0x8ee5ee },
- { "cadetblue3" , 0x7ac5cd },
- { "cadetblue4" , 0x53868b },
- { "turquoise1" , 0xf5ff },
- { "turquoise2" , 0xe5ee },
- { "turquoise3" , 0xc5cd },
- { "turquoise4" , 0x868b },
- { "cyan1" , 0xffff },
- { "cyan2" , 0xeeee },
- { "cyan3" , 0xcdcd },
- { "cyan4" , 0x8b8b },
- { "darkslategray1" , 0x97ffff },
- { "darkslategray2" , 0x8deeee },
- { "darkslategray3" , 0x79cdcd },
- { "darkslategray4" , 0x528b8b },
- { "aquamarine1" , 0x7fffd4 },
- { "aquamarine2" , 0x76eec6 },
- { "aquamarine3" , 0x66cdaa },
- { "aquamarine4" , 0x458b74 },
- { "darkseagreen1" , 0xc1ffc1 },
- { "darkseagreen2" , 0xb4eeb4 },
- { "darkseagreen3" , 0x9bcd9b },
- { "darkseagreen4" , 0x698b69 },
- { "seagreen1" , 0x54ff9f },
- { "seagreen2" , 0x4eee94 },
- { "seagreen3" , 0x43cd80 },
- { "seagreen4" , 0x2e8b57 },
- { "palegreen1" , 0x9aff9a },
- { "palegreen2" , 0x90ee90 },
- { "palegreen3" , 0x7ccd7c },
- { "palegreen4" , 0x548b54 },
- { "springgreen1" , 0xff7f },
- { "springgreen2" , 0xee76 },
- { "springgreen3" , 0xcd66 },
- { "springgreen4" , 0x8b45 },
- { "green1" , 0xff00 },
- { "green2" , 0xee00 },
- { "green3" , 0xcd00 },
- { "green4" , 0x8b00 },
- { "chartreuse1" , 0x7fff00 },
- { "chartreuse2" , 0x76ee00 },
- { "chartreuse3" , 0x66cd00 },
- { "chartreuse4" , 0x458b00 },
- { "olivedrab1" , 0xc0ff3e },
- { "olivedrab2" , 0xb3ee3a },
- { "olivedrab3" , 0x9acd32 },
- { "olivedrab4" , 0x698b22 },
- { "darkolivegreen1" , 0xcaff70 },
- { "darkolivegreen2" , 0xbcee68 },
- { "darkolivegreen3" , 0xa2cd5a },
- { "darkolivegreen4" , 0x6e8b3d },
- { "khaki1" , 0xfff68f },
- { "khaki2" , 0xeee685 },
- { "khaki3" , 0xcdc673 },
- { "khaki4" , 0x8b864e },
- { "lightgoldenrod1" , 0xffec8b },
- { "lightgoldenrod2" , 0xeedc82 },
- { "lightgoldenrod3" , 0xcdbe70 },
- { "lightgoldenrod4" , 0x8b814c },
- { "lightyellow1" , 0xffffe0 },
- { "lightyellow2" , 0xeeeed1 },
- { "lightyellow3" , 0xcdcdb4 },
- { "lightyellow4" , 0x8b8b7a },
- { "yellow1" , 0xffff00 },
- { "yellow2" , 0xeeee00 },
- { "yellow3" , 0xcdcd00 },
- { "yellow4" , 0x8b8b00 },
- { "gold1" , 0xffd700 },
- { "gold2" , 0xeec900 },
- { "gold3" , 0xcdad00 },
- { "gold4" , 0x8b7500 },
- { "goldenrod1" , 0xffc125 },
- { "goldenrod2" , 0xeeb422 },
- { "goldenrod3" , 0xcd9b1d },
- { "goldenrod4" , 0x8b6914 },
- { "darkgoldenrod1" , 0xffb90f },
- { "darkgoldenrod2" , 0xeead0e },
- { "darkgoldenrod3" , 0xcd950c },
- { "darkgoldenrod4" , 0x8b6508 },
- { "rosybrown1" , 0xffc1c1 },
- { "rosybrown2" , 0xeeb4b4 },
- { "rosybrown3" , 0xcd9b9b },
- { "rosybrown4" , 0x8b6969 },
- { "indianred1" , 0xff6a6a },
- { "indianred2" , 0xee6363 },
- { "indianred3" , 0xcd5555 },
- { "indianred4" , 0x8b3a3a },
- { "sienna1" , 0xff8247 },
- { "sienna2" , 0xee7942 },
- { "sienna3" , 0xcd6839 },
- { "sienna4" , 0x8b4726 },
- { "burlywood1" , 0xffd39b },
- { "burlywood2" , 0xeec591 },
- { "burlywood3" , 0xcdaa7d },
- { "burlywood4" , 0x8b7355 },
- { "wheat1" , 0xffe7ba },
- { "wheat2" , 0xeed8ae },
- { "wheat3" , 0xcdba96 },
- { "wheat4" , 0x8b7e66 },
- { "tan1" , 0xffa54f },
- { "tan2" , 0xee9a49 },
- { "tan3" , 0xcd853f },
- { "tan4" , 0x8b5a2b },
- { "chocolate1" , 0xff7f24 },
- { "chocolate2" , 0xee7621 },
- { "chocolate3" , 0xcd661d },
- { "chocolate4" , 0x8b4513 },
- { "firebrick1" , 0xff3030 },
- { "firebrick2" , 0xee2c2c },
- { "firebrick3" , 0xcd2626 },
- { "firebrick4" , 0x8b1a1a },
- { "brown1" , 0xff4040 },
- { "brown2" , 0xee3b3b },
- { "brown3" , 0xcd3333 },
- { "brown4" , 0x8b2323 },
- { "salmon1" , 0xff8c69 },
- { "salmon2" , 0xee8262 },
- { "salmon3" , 0xcd7054 },
- { "salmon4" , 0x8b4c39 },
- { "lightsalmon1" , 0xffa07a },
- { "lightsalmon2" , 0xee9572 },
- { "lightsalmon3" , 0xcd8162 },
- { "lightsalmon4" , 0x8b5742 },
- { "orange1" , 0xffa500 },
- { "orange2" , 0xee9a00 },
- { "orange3" , 0xcd8500 },
- { "orange4" , 0x8b5a00 },
- { "darkorange1" , 0xff7f00 },
- { "darkorange2" , 0xee7600 },
- { "darkorange3" , 0xcd6600 },
- { "darkorange4" , 0x8b4500 },
- { "coral1" , 0xff7256 },
- { "coral2" , 0xee6a50 },
- { "coral3" , 0xcd5b45 },
- { "coral4" , 0x8b3e2f },
- { "tomato1" , 0xff6347 },
- { "tomato2" , 0xee5c42 },
- { "tomato3" , 0xcd4f39 },
- { "tomato4" , 0x8b3626 },
- { "orangered1" , 0xff4500 },
- { "orangered2" , 0xee4000 },
- { "orangered3" , 0xcd3700 },
- { "orangered4" , 0x8b2500 },
- { "red1" , 0xff0000 },
- { "red2" , 0xee0000 },
- { "red3" , 0xcd0000 },
- { "red4" , 0x8b0000 },
- { "deeppink1" , 0xff1493 },
- { "deeppink2" , 0xee1289 },
- { "deeppink3" , 0xcd1076 },
- { "deeppink4" , 0x8b0a50 },
- { "hotpink1" , 0xff6eb4 },
- { "hotpink2" , 0xee6aa7 },
- { "hotpink3" , 0xcd6090 },
- { "hotpink4" , 0x8b3a62 },
- { "pink1" , 0xffb5c5 },
- { "pink2" , 0xeea9b8 },
- { "pink3" , 0xcd919e },
- { "pink4" , 0x8b636c },
- { "lightpink1" , 0xffaeb9 },
- { "lightpink2" , 0xeea2ad },
- { "lightpink3" , 0xcd8c95 },
- { "lightpink4" , 0x8b5f65 },
- { "palevioletred1" , 0xff82ab },
- { "palevioletred2" , 0xee799f },
- { "palevioletred3" , 0xcd6889 },
- { "palevioletred4" , 0x8b475d },
- { "maroon1" , 0xff34b3 },
- { "maroon2" , 0xee30a7 },
- { "maroon3" , 0xcd2990 },
- { "maroon4" , 0x8b1c62 },
- { "violetred1" , 0xff3e96 },
- { "violetred2" , 0xee3a8c },
- { "violetred3" , 0xcd3278 },
- { "violetred4" , 0x8b2252 },
- { "magenta1" , 0xff00ff },
- { "magenta2" , 0xee00ee },
- { "magenta3" , 0xcd00cd },
- { "magenta4" , 0x8b008b },
- { "orchid1" , 0xff83fa },
- { "orchid2" , 0xee7ae9 },
- { "orchid3" , 0xcd69c9 },
- { "orchid4" , 0x8b4789 },
- { "plum1" , 0xffbbff },
- { "plum2" , 0xeeaeee },
- { "plum3" , 0xcd96cd },
- { "plum4" , 0x8b668b },
- { "mediumorchid1" , 0xe066ff },
- { "mediumorchid2" , 0xd15fee },
- { "mediumorchid3" , 0xb452cd },
- { "mediumorchid4" , 0x7a378b },
- { "darkorchid1" , 0xbf3eff },
- { "darkorchid2" , 0xb23aee },
- { "darkorchid3" , 0x9a32cd },
- { "darkorchid4" , 0x68228b },
- { "purple1" , 0x9b30ff },
- { "purple2" , 0x912cee },
- { "purple3" , 0x7d26cd },
- { "purple4" , 0x551a8b },
- { "mediumpurple1" , 0xab82ff },
- { "mediumpurple2" , 0x9f79ee },
- { "mediumpurple3" , 0x8968cd },
- { "mediumpurple4" , 0x5d478b },
- { "thistle1" , 0xffe1ff },
- { "thistle2" , 0xeed2ee },
- { "thistle3" , 0xcdb5cd },
- { "thistle4" , 0x8b7b8b },
- { "gray0" , 0x0 },
- { "grey0" , 0x0 },
- { "gray1" , 0x30303 },
- { "grey1" , 0x30303 },
- { "gray2" , 0x50505 },
- { "grey2" , 0x50505 },
- { "gray3" , 0x80808 },
- { "grey3" , 0x80808 },
- { "gray4" , 0xa0a0a },
- { "grey4" , 0xa0a0a },
- { "gray5" , 0xd0d0d },
- { "grey5" , 0xd0d0d },
- { "gray6" , 0xf0f0f },
- { "grey6" , 0xf0f0f },
- { "gray7" , 0x121212 },
- { "grey7" , 0x121212 },
- { "gray8" , 0x141414 },
- { "grey8" , 0x141414 },
- { "gray9" , 0x171717 },
- { "grey9" , 0x171717 },
- { "gray10" , 0x1a1a1a },
- { "grey10" , 0x1a1a1a },
- { "gray11" , 0x1c1c1c },
- { "grey11" , 0x1c1c1c },
- { "gray12" , 0x1f1f1f },
- { "grey12" , 0x1f1f1f },
- { "gray13" , 0x212121 },
- { "grey13" , 0x212121 },
- { "gray14" , 0x242424 },
- { "grey14" , 0x242424 },
- { "gray15" , 0x262626 },
- { "grey15" , 0x262626 },
- { "gray16" , 0x292929 },
- { "grey16" , 0x292929 },
- { "gray17" , 0x2b2b2b },
- { "grey17" , 0x2b2b2b },
- { "gray18" , 0x2e2e2e },
- { "grey18" , 0x2e2e2e },
- { "gray19" , 0x303030 },
- { "grey19" , 0x303030 },
- { "gray20" , 0x333333 },
- { "grey20" , 0x333333 },
- { "gray21" , 0x363636 },
- { "grey21" , 0x363636 },
- { "gray22" , 0x383838 },
- { "grey22" , 0x383838 },
- { "gray23" , 0x3b3b3b },
- { "grey23" , 0x3b3b3b },
- { "gray24" , 0x3d3d3d },
- { "grey24" , 0x3d3d3d },
- { "gray25" , 0x404040 },
- { "grey25" , 0x404040 },
- { "gray26" , 0x424242 },
- { "grey26" , 0x424242 },
- { "gray27" , 0x454545 },
- { "grey27" , 0x454545 },
- { "gray28" , 0x474747 },
- { "grey28" , 0x474747 },
- { "gray29" , 0x4a4a4a },
- { "grey29" , 0x4a4a4a },
- { "gray30" , 0x4d4d4d },
- { "grey30" , 0x4d4d4d },
- { "gray31" , 0x4f4f4f },
- { "grey31" , 0x4f4f4f },
- { "gray32" , 0x525252 },
- { "grey32" , 0x525252 },
- { "gray33" , 0x545454 },
- { "grey33" , 0x545454 },
- { "gray34" , 0x575757 },
- { "grey34" , 0x575757 },
- { "gray35" , 0x595959 },
- { "grey35" , 0x595959 },
- { "gray36" , 0x5c5c5c },
- { "grey36" , 0x5c5c5c },
- { "gray37" , 0x5e5e5e },
- { "grey37" , 0x5e5e5e },
- { "gray38" , 0x616161 },
- { "grey38" , 0x616161 },
- { "gray39" , 0x636363 },
- { "grey39" , 0x636363 },
- { "gray40" , 0x666666 },
- { "grey40" , 0x666666 },
- { "gray41" , 0x696969 },
- { "grey41" , 0x696969 },
- { "gray42" , 0x6b6b6b },
- { "grey42" , 0x6b6b6b },
- { "gray43" , 0x6e6e6e },
- { "grey43" , 0x6e6e6e },
- { "gray44" , 0x707070 },
- { "grey44" , 0x707070 },
- { "gray45" , 0x737373 },
- { "grey45" , 0x737373 },
- { "gray46" , 0x757575 },
- { "grey46" , 0x757575 },
- { "gray47" , 0x787878 },
- { "grey47" , 0x787878 },
- { "gray48" , 0x7a7a7a },
- { "grey48" , 0x7a7a7a },
- { "gray49" , 0x7d7d7d },
- { "grey49" , 0x7d7d7d },
- { "gray50" , 0x7f7f7f },
- { "grey50" , 0x7f7f7f },
- { "gray51" , 0x828282 },
- { "grey51" , 0x828282 },
- { "gray52" , 0x858585 },
- { "grey52" , 0x858585 },
- { "gray53" , 0x878787 },
- { "grey53" , 0x878787 },
- { "gray54" , 0x8a8a8a },
- { "grey54" , 0x8a8a8a },
- { "gray55" , 0x8c8c8c },
- { "grey55" , 0x8c8c8c },
- { "gray56" , 0x8f8f8f },
- { "grey56" , 0x8f8f8f },
- { "gray57" , 0x919191 },
- { "grey57" , 0x919191 },
- { "gray58" , 0x949494 },
- { "grey58" , 0x949494 },
- { "gray59" , 0x969696 },
- { "grey59" , 0x969696 },
- { "gray60" , 0x999999 },
- { "grey60" , 0x999999 },
- { "gray61" , 0x9c9c9c },
- { "grey61" , 0x9c9c9c },
- { "gray62" , 0x9e9e9e },
- { "grey62" , 0x9e9e9e },
- { "gray63" , 0xa1a1a1 },
- { "grey63" , 0xa1a1a1 },
- { "gray64" , 0xa3a3a3 },
- { "grey64" , 0xa3a3a3 },
- { "gray65" , 0xa6a6a6 },
- { "grey65" , 0xa6a6a6 },
- { "gray66" , 0xa8a8a8 },
- { "grey66" , 0xa8a8a8 },
- { "gray67" , 0xababab },
- { "grey67" , 0xababab },
- { "gray68" , 0xadadad },
- { "grey68" , 0xadadad },
- { "gray69" , 0xb0b0b0 },
- { "grey69" , 0xb0b0b0 },
- { "gray70" , 0xb3b3b3 },
- { "grey70" , 0xb3b3b3 },
- { "gray71" , 0xb5b5b5 },
- { "grey71" , 0xb5b5b5 },
- { "gray72" , 0xb8b8b8 },
- { "grey72" , 0xb8b8b8 },
- { "gray73" , 0xbababa },
- { "grey73" , 0xbababa },
- { "gray74" , 0xbdbdbd },
- { "grey74" , 0xbdbdbd },
- { "gray75" , 0xbfbfbf },
- { "grey75" , 0xbfbfbf },
- { "gray76" , 0xc2c2c2 },
- { "grey76" , 0xc2c2c2 },
- { "gray77" , 0xc4c4c4 },
- { "grey77" , 0xc4c4c4 },
- { "gray78" , 0xc7c7c7 },
- { "grey78" , 0xc7c7c7 },
- { "gray79" , 0xc9c9c9 },
- { "grey79" , 0xc9c9c9 },
- { "gray80" , 0xcccccc },
- { "grey80" , 0xcccccc },
- { "gray81" , 0xcfcfcf },
- { "grey81" , 0xcfcfcf },
- { "gray82" , 0xd1d1d1 },
- { "grey82" , 0xd1d1d1 },
- { "gray83" , 0xd4d4d4 },
- { "grey83" , 0xd4d4d4 },
- { "gray84" , 0xd6d6d6 },
- { "grey84" , 0xd6d6d6 },
- { "gray85" , 0xd9d9d9 },
- { "grey85" , 0xd9d9d9 },
- { "gray86" , 0xdbdbdb },
- { "grey86" , 0xdbdbdb },
- { "gray87" , 0xdedede },
- { "grey87" , 0xdedede },
- { "gray88" , 0xe0e0e0 },
- { "grey88" , 0xe0e0e0 },
- { "gray89" , 0xe3e3e3 },
- { "grey89" , 0xe3e3e3 },
- { "gray90" , 0xe5e5e5 },
- { "grey90" , 0xe5e5e5 },
- { "gray91" , 0xe8e8e8 },
- { "grey91" , 0xe8e8e8 },
- { "gray92" , 0xebebeb },
- { "grey92" , 0xebebeb },
- { "gray93" , 0xededed },
- { "grey93" , 0xededed },
- { "gray94" , 0xf0f0f0 },
- { "grey94" , 0xf0f0f0 },
- { "gray95" , 0xf2f2f2 },
- { "grey95" , 0xf2f2f2 },
- { "gray96" , 0xf5f5f5 },
- { "grey96" , 0xf5f5f5 },
- { "gray97" , 0xf7f7f7 },
- { "grey97" , 0xf7f7f7 },
- { "gray98" , 0xfafafa },
- { "grey98" , 0xfafafa },
- { "gray99" , 0xfcfcfc },
- { "grey99" , 0xfcfcfc },
- { "gray100" , 0xffffff },
- { "grey100" , 0xffffff },
- { "dark grey" , 0xa9a9a9 },
- { "darkgrey" , 0xa9a9a9 },
- { "dark gray" , 0xa9a9a9 },
- { "darkgray" , 0xa9a9a9 },
- { "dark blue" , 0x8b },
- { "darkblue" , 0x8b },
- { "dark cyan" , 0x8b8b },
- { "darkcyan" , 0x8b8b },
- { "dark magenta" , 0x8b008b },
- { "darkmagenta" , 0x8b008b },
- { "dark red" , 0x8b0000 },
- { "darkred" , 0x8b0000 },
- { "light green" , 0x90ee90 },
- { "lightgreen" , 0x90ee90 },
- { "none", -1 },
- { 0, 0 }
-};
diff --git a/libmlx/mlx_shaders.c b/libmlx/mlx_shaders.c
deleted file mode 100644
index 4a58955..0000000
--- a/libmlx/mlx_shaders.c
+++ /dev/null
@@ -1,240 +0,0 @@
-//  mlx_shaders.c
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <OpenGL/gl3.h>
-#include "mlx_int.h"
-
-
-void display_log(GLuint object, void (*param_func)(), void (*getlog_func)())
-{
-  GLint log_length;
-  char *log;
-
-  param_func(object, GL_INFO_LOG_LENGTH, &log_length);
-  log = malloc(log_length);
-  getlog_func(object, log_length, NULL, log);
-  fprintf(stderr, "%s", log);
-  free(log);
-}
-
-
-int mlx_shaders_pixel(glsl_info_t *glsl)
-{
-  char  *source;
-  int	length;
-  GLint action_ok;
-
-  glsl->pixel_vshader = glCreateShader(GL_VERTEX_SHADER);
-  source = strdup("#version 110 \n"
-		  "attribute vec2 position;"
-		  "varying vec2 texcoord;"
-		  "void main()"
-		  "{"
-		  " gl_Position = vec4( position, 0.0, 1.0);"
-		  " texcoord = vec2(position[0]+1.0, 1.0 - position[1]) / 2.0;"
-		  "}");
-  length = strlen(source);
-  glShaderSource(glsl->pixel_vshader, 1, (const GLchar**)&source, &length);
-  glCompileShader(glsl->pixel_vshader);
-  free(source);
-
-  glGetShaderiv(glsl->pixel_vshader, GL_COMPILE_STATUS, &action_ok);
-  if (!action_ok) {
-    fprintf(stderr, "Failed to compile pixel vshader :\n");
-    display_log(glsl->pixel_vshader, glGetShaderiv, glGetShaderInfoLog);
-    return (1);
-  }
-
-  glsl->pixel_fshader = glCreateShader(GL_FRAGMENT_SHADER);
-  source = strdup("#version 110 \n"
-		  "uniform sampler2D texture;"
-		  "varying vec2 texcoord;"
-		  "void main()"
-		  "{"
-		  " gl_FragColor = texture2D(texture, texcoord);"
-		  "}");
-  length = strlen(source);
-  glShaderSource(glsl->pixel_fshader, 1, (const GLchar**)&source, &length);
-  glCompileShader(glsl->pixel_fshader);
-  free(source);
-
-  glGetShaderiv(glsl->pixel_fshader, GL_COMPILE_STATUS, &action_ok);
-  if (!action_ok) {
-    fprintf(stderr, "Failed to compile pixel fshader :\n");
-    display_log(glsl->pixel_fshader, glGetShaderiv, glGetShaderInfoLog);
-    return (1);
-  }
-
-  glsl->pixel_program = glCreateProgram();
-  glAttachShader(glsl->pixel_program, glsl->pixel_vshader);
-  glAttachShader(glsl->pixel_program, glsl->pixel_fshader);
-  glLinkProgram(glsl->pixel_program);
-
-  glGetProgramiv(glsl->pixel_program, GL_LINK_STATUS, &action_ok);
-  if (!action_ok) {
-    fprintf(stderr, "Failed to link pixel shader program:\n");
-    display_log(glsl->pixel_program, glGetProgramiv, glGetProgramInfoLog);
-    return (1);
-  }
-
-  glFlush();
-
-  return (0);
-}
-
-
-int mlx_shaders_image(glsl_info_t *glsl)
-{
-  char  *source;
-  int	length;
-  GLint action_ok;
-
-  glsl->image_vshader = glCreateShader(GL_VERTEX_SHADER);
-  source = strdup("#version 110 \n"
-		  "attribute vec2 position;"
-		  "uniform vec2 winhalfsize;"
-		  "uniform vec2 imagepos;"
-		  "uniform vec2 imagesize;"
-		  "varying vec2 texcoord;"
-		  "void main()"
-		  "{"
-		  " texcoord = position / imagesize;"
-		  " vec2 pos = position - winhalfsize + imagepos;"
-		  " pos = pos / winhalfsize;"
-		  " gl_Position = vec4( pos, 0.0, 1.0);"
-		  "}");
-  length = strlen(source);
-  glShaderSource(glsl->image_vshader, 1, (const GLchar**)&source, &length);
-  glCompileShader(glsl->image_vshader);
-  free(source);
-
-  glGetShaderiv(glsl->image_vshader, GL_COMPILE_STATUS, &action_ok);
-  if (!action_ok) {
-    fprintf(stderr, "Failed to compile image vshader :\n");
-    display_log(glsl->image_vshader, glGetShaderiv, glGetShaderInfoLog);
-    return (1);
-  }
-
-  glsl->image_fshader = glCreateShader(GL_FRAGMENT_SHADER);
-  source = strdup("#version 110 \n"
-		  "uniform sampler2D texture;"
-		  "varying vec2 texcoord;"
-		  "void main()"
-		  "{"
-		  " gl_FragColor = texture2D(texture, texcoord);"
-		  "}");
-  length = strlen(source);
-  glShaderSource(glsl->image_fshader, 1, (const GLchar**)&source, &length);
-  glCompileShader(glsl->image_fshader);
-  free(source);
-
-  glGetShaderiv(glsl->image_fshader, GL_COMPILE_STATUS, &action_ok);
-  if (!action_ok) {
-    fprintf(stderr, "Failed to compile image fshader :\n");
-    display_log(glsl->image_fshader, glGetShaderiv, glGetShaderInfoLog);
-    return (1);
-  }
-
-  glsl->image_program = glCreateProgram();
-  glAttachShader(glsl->image_program, glsl->image_vshader);
-  glAttachShader(glsl->image_program, glsl->image_fshader);
-  glLinkProgram(glsl->image_program);
-
-  glGetProgramiv(glsl->image_program, GL_LINK_STATUS, &action_ok);
-  if (!action_ok) {
-    fprintf(stderr, "Failed to link image shader program:\n");
-    display_log(glsl->image_program, glGetProgramiv, glGetProgramInfoLog);
-    return (1);
-  }
-
-  glFlush();
-
-  return (0);
-}
-
-
-
-
-int mlx_shaders_font(glsl_info_t *glsl)
-{
-  char  *source;
-  int	length;
-  GLint action_ok;
-
-  glsl->font_vshader = glCreateShader(GL_VERTEX_SHADER);
-  source = strdup("#version 110 \n"
-		  "attribute vec2 position;"
-		  "uniform vec2 winhalfsize;"
-		  "uniform vec2 fontposinwin;"
-		  "uniform vec2 fontposinatlas;"
-		  "uniform vec2 fontatlassize;"
-		  "varying vec2 texcoord;"
-		  "void main()"
-		  "{"
-#ifdef STRINGPUTX11
-		  " texcoord = (position * vec2(1.4, -1.4) + fontposinatlas ) / fontatlassize;"
-#else
-		  " texcoord = (position * vec2(1.0, -1.0) + fontposinatlas ) / fontatlassize;"
-#endif
-		  " vec2 pos = position - winhalfsize + fontposinwin;"
-		  " pos = pos / winhalfsize;"
-		  " gl_Position = vec4( pos, 0.0, 1.0);"
-		  "}");
-  length = strlen(source);
-  glShaderSource(glsl->font_vshader, 1, (const GLchar**)&source, &length);
-  glCompileShader(glsl->font_vshader);
-  free(source);
-
-  glGetShaderiv(glsl->font_vshader, GL_COMPILE_STATUS, &action_ok);
-  if (!action_ok) {
-    fprintf(stderr, "Failed to compile font vshader :\n");
-    display_log(glsl->font_vshader, glGetShaderiv, glGetShaderInfoLog);
-    return (1);
-  }
-
-  glsl->font_fshader = glCreateShader(GL_FRAGMENT_SHADER);
-  source = strdup("#version 110 \n"
-		  "uniform sampler2D texture;"
-		  "uniform vec4 color;"
-		  "varying vec2 texcoord;"
-		  "void main()"
-		  "{"
-		  " gl_FragColor = color * texture2D(texture, texcoord);"
-		  "}");
-  length = strlen(source);
-  glShaderSource(glsl->font_fshader, 1, (const GLchar**)&source, &length);
-  glCompileShader(glsl->font_fshader);
-  free(source);
-
-  glGetShaderiv(glsl->font_fshader, GL_COMPILE_STATUS, &action_ok);
-  if (!action_ok) {
-    fprintf(stderr, "Failed to compile font fshader :\n");
-    display_log(glsl->font_fshader, glGetShaderiv, glGetShaderInfoLog);
-    return (1);
-  }
-
-  glsl->font_program = glCreateProgram();
-  glAttachShader(glsl->font_program, glsl->font_vshader);
-  glAttachShader(glsl->font_program, glsl->font_fshader);
-  glLinkProgram(glsl->font_program);
-
-  glGetProgramiv(glsl->font_program, GL_LINK_STATUS, &action_ok);
-  if (!action_ok) {
-    fprintf(stderr, "Failed to link font shader program:\n");
-    display_log(glsl->font_program, glGetProgramiv, glGetProgramInfoLog);
-    return (1);
-  }
-
-  glFlush();
-
-  return (0);
-}
-
-
-
-int mlx_shaders(glsl_info_t *glsl)
-{
-  return (mlx_shaders_pixel(glsl) + mlx_shaders_image(glsl) + mlx_shaders_font(glsl));
-}
diff --git a/libmlx/mlx_xpm.c b/libmlx/mlx_xpm.c
deleted file mode 100644
index 78d8c9b..0000000
--- a/libmlx/mlx_xpm.c
+++ /dev/null
@@ -1,338 +0,0 @@
-// mlx xpm
-// by ol
-
-#include <OpenGL/gl3.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <sys/mman.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <string.h>
-#include	"mlx_int.h"
-
-typedef struct  s_xpm_col
-{
-  int           name;
-  int           col;
-} t_xpm_col;
-
-
-struct  s_col_name
-{
-  char  *name;
-  int   color;
-};
-
-//extern struct s_col_name mlx_col_name[];
-#include "mlx_rgb.c"
-
-
-#define	RETURN	{ if (colors) free(colors); if (tab) free(tab); \
-		  if (colors_direct) free(colors_direct); \
-                  if (img) mlx_destroy_image(xvar, img);   \
-                  return ((void *)0); }
-
-
-
-
-char	*mlx_int_get_line(char *ptr,int *pos,int size)
-{
-  int	pos2;
-  int	pos3;
-  int	pos4;
-
-  if ((pos2 = mlx_int_str_str(ptr+*pos,"\"",size-*pos))==-1)
-    return ((char *)0);
-  if ((pos3 = mlx_int_str_str(ptr+*pos+pos2+1,"\"",size-*pos-pos2-1))==-1)
-    return ((char *)0);
-  *(ptr+*pos+pos2) = 0;
-  *(ptr+*pos+pos2+1+pos3) = 0;
-  pos4 = *pos+pos2+1;
-  *pos += pos2+pos3+2;
-  return (ptr+pos4);
-}
-
-
-
-char	*mlx_int_static_line(char **xpm_data,int *pos,int size)
-{
-  static char	*copy = 0;
-  static int	len = 0;
-  int		len2;
-  char		*str;
-
-  str = xpm_data[(*pos)++];
-  if ((len2 = strlen(str))>len)
-    {
-      if (copy)
-	free(copy);
-      if (!(copy = malloc(len2+1)))
-	return ((char *)0);
-      len = len2;
-    }
-  /* strcpy(copy,str); */
-  strlcpy(copy, str, len2+1);
-  return (copy);
-}
-
-
-int	mlx_int_get_col_name(char *str,int size)
-{
-  int	result;
-
-  result = 0;
-  while (size--)
-    result = (result<<8)+*(str++);
-  return (result);
-}
-
-int	mlx_int_get_text_rgb(char *name, char *end)
-{
-  int	i;
-  char	buff[64];
-
-  if (*name == '#')
-    return (strtol(name+1,0,16));
-  if (end)
-    {
-      snprintf(buff, 64, "%s %s", name, end);
-      name = buff;
-    }
-  i = 0;
-  while (mlx_col_name[i].name)
-    {
-      if (!strcasecmp(mlx_col_name[i].name, name))
-	return (mlx_col_name[i].color);
-      i ++;
-    }
-  return (0);
-}
-
-
-void	mlx_int_xpm_set_pixel(mlx_img_list_t *img, char *data, int opp, int col, int x)
-{
-  /*
-  int	dec;
-
-  dec = opp;
-  while (dec--)
-    {
-      if (img->image->byte_order)
-	*(data+x*opp+dec) = col&0xFF;
-      else
-	*(data+x*opp+opp-dec-1) = col&0xFF;
-      col >>= 8;
-    }
-  */
-  // opp is 4, do it the simple way
-  *((unsigned int *)(data+4*x)) = col;
-}
-
-
-void	*mlx_int_parse_xpm(mlx_ptr_t *xvar,void *info,int info_size,char *(*f)())
-{
-  int	pos;
-  char	*line;
-  char	**tab;
-  char	*data;
-  char	*clip_data;
-  int	nc;
-  int	opp;
-  int	cpp;
-  int	col;
-  int	rgb_col;
-  int	col_name;
-  int	method;
-  int	x;
-  int	i;
-  int	j;
-  mlx_img_list_t	*img;
-  t_xpm_col	*colors;
-  int		*colors_direct;
-  int	width;
-  int	height;
-
-  colors = 0;
-  colors_direct = 0;
-  img = 0;
-  tab = 0;
-  pos = 0;
-  if (!(line = f(info,&pos,info_size)) ||
-      !(tab = mlx_int_str_to_wordtab(line)) || !(width = atoi(tab[0])) ||
-      !(height = atoi(tab[1])) || !(nc = atoi(tab[2])) ||
-      !(cpp = atoi(tab[3])) )
-    RETURN;
-  free(tab);
-  tab = 0;
-
-  method = 0;
-  if (cpp<=2)
-    {
-      method = 1;
-      if (!(colors_direct = malloc((cpp==2?65536:256)*sizeof(int))))
-	RETURN;
-    }
-  else
-    if (!(colors = malloc(nc*sizeof(*colors))))
-      RETURN;
-
-  clip_data = 0;
-
-  i = nc;
-  while (i--)
-    {
-      if (!(line = f(info,&pos,info_size)) ||
-	  !(tab = mlx_int_str_to_wordtab(line+cpp)) )
-	RETURN;
-      j = 0;
-      while (tab[j] && strcmp(tab[j++],"c"));
-
-      if (!tab[j])
-	RETURN;
-
-      rgb_col = mlx_int_get_text_rgb(tab[j], tab[j+1]);
-      /*      
-      if ((rgb_col = mlx_int_get_text_rgb(tab[j], tab[j+1]))==-1)
-	{
-	  if (!(clip_data = malloc(4*width*height)) ||   // ok, nice size ..
-	      !(clip_img = XCreateImage(xvar->display, xvar->visual,
-					1, XYPixmap, 0, clip_data,
-					width, height, 8, (width+7)/8)) )
-	    RETURN;
-	  memset(clip_data, 0xFF, 4*width*height);
-	}
-      */
-      if (method)
-	colors_direct[mlx_int_get_col_name(line,cpp)] = rgb_col;
-      //	  rgb_col>=0?mlx_get_color_value(xvar, rgb_col):rgb_col;
-      else
-	{
-	  colors[i].name = mlx_int_get_col_name(line,cpp);
-	  colors[i].col = rgb_col; // rgb_col>=0?mlx_get_color_value(xvar,rgb_col):rgb_col;
-	}
-      free(tab);
-      tab = 0;
-    }
-
-  if (!(img = mlx_new_image(xvar,width,height)))
-    RETURN;
-  //opp = img->bpp/8;
-  opp = 4;
-
-
-  i = height;
-  data = img->buffer;
-  while (i--)
-    {
-      if (!(line = f(info,&pos,info_size)))
-	RETURN;
-      x = 0;
-      while (x<width)
-	{
-	  col = 0;
-	  col_name = mlx_int_get_col_name(line+cpp*x,cpp);
-	  if (method)
-	    col = colors_direct[col_name];
-	  else
-	    {
-	      j = nc;
-	      while (j--)
-		if (colors[j].name==col_name)
-		  {
-		    col = colors[j].col;
-		    j = 0;
-		  }
-	    }
-	  //	  if (col==-1)
-	  //	    XPutPixel(clip_img, x, height-1-i, 0);
-	  //	  else
-	  if (col==-1)
-	    col = 0xFF000000;
-	  mlx_int_xpm_set_pixel(img, data, opp, col, x);
-	  x ++;
-	}
-      //      data += img->size_line;
-      data += img->width*4;
-    }
-  /*
-  if (clip_data)
-    {
-      if (!(clip_pix = XCreatePixmap(xvar->display, xvar->root,
-					   width, height, 1)) )
-	RETURN;
-      img->gc = XCreateGC(xvar->display, clip_pix, 0, &xgcv);
-      XPutImage(xvar->display, clip_pix, img->gc, clip_img,
-		0, 0, 0, 0, width, height);
-      XFreeGC(xvar->display, img->gc);
-      xgcv.clip_mask = clip_pix;
-      xgcv.function = GXcopy;
-      xgcv.plane_mask = AllPlanes;
-      img->gc = XCreateGC(xvar->display, xvar->root, GCClipMask|GCFunction|
-			  GCPlaneMask, &xgcv);
-      XSync(xvar->display, False);
-      XDestroyImage(clip_img);
-    }
-  */
-  if (colors)
-    free(colors);
-  if (colors_direct)
-    free(colors_direct);
-  return (img);
-}
-
-
-void	mlx_int_file_get_rid_comment(char *ptr, int size)
-{
-  int	com_begin;
-  int	com_end;
-
-  while ((com_begin = mlx_int_str_str_cote(ptr,"/*",size))!=-1)
-    {
-      com_end = mlx_int_str_str(ptr+com_begin+2,"*/",size-com_begin-2);
-      memset(ptr+com_begin,' ',com_end+4);
-    }
-  while ((com_begin = mlx_int_str_str_cote(ptr,"//",size))!=-1)
-    {
-      com_end = mlx_int_str_str(ptr+com_begin+2,"\n",size-com_begin-2);
-      memset(ptr+com_begin,' ',com_end+3);
-    }
-}
-
-
-void	*mlx_xpm_file_to_image(mlx_ptr_t *xvar,char *file,int *width,int *height)
-{
-  int	fd;
-  int	size;
-  char	*ptr;
-  mlx_img_list_t	*img;
-
-  if ((fd = open(file,O_RDONLY))==-1 || (size = lseek(fd,0,SEEK_END))==-1 ||
-      (ptr = mmap(0,size,PROT_WRITE|PROT_READ,MAP_PRIVATE,fd,0))==
-      (void *)MAP_FAILED)
-    {
-      if (fd>=0)
-	close(fd);
-      return ((void *)0);
-    }
-  mlx_int_file_get_rid_comment(ptr, size);
-  if ((img = mlx_int_parse_xpm(xvar,ptr,size,mlx_int_get_line)))
-    {
-      *width = img->width;
-      *height = img->height;
-    }
-  munmap(ptr,size);
-  close(fd);
-  return (img);
-}
-
-void	*mlx_xpm_to_image(mlx_ptr_t *xvar,char **xpm_data,int *width,int *height)
-{
-  mlx_img_list_t	*img;
-
-  if ((img = mlx_int_parse_xpm(xvar,xpm_data,0,mlx_int_static_line)))
-    {
-      *width = img->width;
-      *height = img->height;
-    }
-  return (img);
-}
diff --git a/minilibx/Makefile b/minilibx/Makefile
new file mode 100644
index 0000000..2e44836
--- /dev/null
+++ b/minilibx/Makefile
@@ -0,0 +1,24 @@
+#
+#
+
+NOM=libmlx.a
+SRC= mlx_shaders.c mlx_new_window.m mlx_init_loop.m mlx_new_image.m mlx_xpm.c mlx_int_str_to_wordtab.c
+SRC+= mlx_png.c mlx_mouse.m
+OBJ1=$(SRC:.c=.o)
+OBJ=$(OBJ1:.m=.o)
+CFLAGS+=-O2
+
+# add to match string put with X11 in size and position
+CFLAGS+= -DSTRINGPUTX11
+
+all: $(NOM)
+
+$(NOM):	$(OBJ)
+	ar -r $(NOM) $(OBJ)
+	ranlib $(NOM)
+
+clean:
+	rm -f $(NOM) $(OBJ) *~
+	rm -f mlx_app
+
+re: clean all
diff --git a/minilibx/font.c b/minilibx/font.c
new file mode 100644
index 0000000..656d248
--- /dev/null
+++ b/minilibx/font.c
@@ -0,0 +1,3525 @@
+/* GIMP RGBA C-Source image dump (font.c) */
+
+static const struct {
+  unsigned int 	 width;
+  unsigned int 	 height;
+  unsigned int 	 bytes_per_pixel; /* 2:RGB16, 3:RGB, 4:RGBA */ 
+  unsigned char	 pixel_data[1140 * 20 * 4 + 1];
+} font_atlas = {
+  1140, 20, 4,
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\214\377\377\377\224\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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"
+  "\377\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\377\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\377\377\377I\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377"
+  ")\377\377\377\33\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\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\216\377\377\377\263\377\377\377\13\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\0\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377b\377\377\377V\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\215\377\377\377\270\377\377"
+  "\377u\377\377\377\13\377\377\377\252\377\377\377\255\377\377\377\13\0\0\0"
+  "\0\377\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\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\317\377\377\377\374\377\377"
+  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377"
+  "\377e\377\377\3775\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\234\377\377\377\267"
+  "\377\377\377B\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\13\377\377\377\343\377\377"
+  "\377\375\377\377\377M\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377"
+  "\377\377\13\377\377\377\355\377\377\377\367\377\377\3778\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\377\377j\377\377\377\373\377\377\377\243\0\0\0\0\377"
+  "\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377"
+  "\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\377\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\377\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\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377b\377\377\377\237\377\377\377\233\377\377\377Z\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377\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\377\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\377\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\377\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\377\377\377"
+  "b\377\377\377c\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377)\377\377\377e\377\377\377I\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377U\377\377\377"
+  "c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377b\377\377\377c\377\377\377\13\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377S\377\377\377c\377\377\3775\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\213\377"
+  "\377\377\363\377\377\377\364\377\377\377\364\377\377\377\372\377\377\377"
+  "\225\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377u\377\377"
+  "\377\371\377\377\377\233\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\377\377\377\377\377\377\377\0\0\0\0\377\377\377\215\377\377\377\372"
+  "\377\377\377\364\377\377\377\364\377\377\377\363\377\377\377\224\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377U\377\377\377e\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\377\377\377\13\377\377\377\351\377\377\377\376\377\377\377s\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\214\377\377\377\372\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\377\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\377\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\377\377\377K\377\377\377\367\377\377\377"
+  "\315\0\0\0\0\377\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\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\3775\377\377\377\340"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\304\377\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\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377\214\377\377\377\372\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377\377\377s\377\377\377\366\377\377\377\342\377\377\377%"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377s\377\377\377\366\377\377\377\342\377\377\377%\0\0\0"
+  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377"
+  "\372\377\377\377\225\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"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\306\377\377\377\374\377"
+  "\377\377\370\377\377\377\370\377\377\377\304\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377"
+  "\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\377\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\377\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\377\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\377\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\377\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\377\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\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377E\377\377"
+  "\377\317\377\377\377\357\377\377\377\373\377\377\377\225\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\320"
+  "\377\377\377\374\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\215\377\377\377\372\377\377\377\363\377"
+  "\377\377\333\377\377\377m\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\1\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\13\377\377\377\364\377\377\377\366\377\377\377%\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377"
+  "\377\361\377\377\377\377\377\377\377\254\377\377\377=\377\377\377\375\377"
+  "\377\377\372\377\377\377)\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\215\377\377\377\363\377\377\377%\377\377\377"
+  "\224\377\377\377\363\377\377\377%\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\3772\377\377\377\336\377\377\377\375\377"
+  "\377\377x\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377\262\377\377\377\372\377\377\377\370\377\377\377\246\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377=\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\377\377\377~\377\377\377\374\377\377\377\377\377\377"
+  "\377\376\377\377\377\224\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377V\377\377\377\375\377\377\377"
+  "\376\377\377\377l\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\325\377\377\377\377"
+  "\377\377\377\271\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\355\377\377\377\33\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377"
+  "\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\377\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\377\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\377\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\377\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\377\377\377\313\377\377\377\376\377\377\377v\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
+  "\315\377\377\377\367\377\377\377\373\377\377\377\334\377\377\377B\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377`\377\377\377\300\377\377\377\342\377\377\377Z\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\224\377\377"
+  "\377\347\377\377\377\373\377\377\377\364\377\377\377\312\377\377\377)\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377"
+  "\226\377\377\377\346\377\377\377\370\377\377\377\360\377\377\377\327\377"
+  "\377\377b\0\0\0\0\0\0\0\0\377\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\377\377\377\214\377\377\377\343\377\377\377\273"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377"
+  "\377\377\315\377\377\377\337\377\377\377\333\377\377\377\333\377\377\377"
+  "\333\377\377\377\343\377\377\377\223\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\215\377\377\377\346\377\377\377"
+  "\370\377\377\377\364\377\377\377\320\377\377\377O\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\377\377\377\13\377\377\377\315\377\377\377\337\377\377\377"
+  "\333\377\377\377\333\377\377\377\333\377\377\377\333\377\377\377\333\377"
+  "\377\377\323\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0"
+  "\0\377\377\3772\377\377\377\316\377\377\377\366\377\377\377\373\377\377\377"
+  "\344\377\377\377\200\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\377\377\377u\377\377\377\342\377\377\377\370\377\377\377\364"
+  "\377\377\377\305\377\377\377%\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377"
+  "\377\377)\377\377\3775\0\0\0\0\377\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\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\371\371\377.\377\377\377V\0\0\0\0\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\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\13\377\377\377\321\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\271\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377Q\377\377\377"
+  "\273\377\377\377\332\377\377\377\322\377\377\377\206\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\3778\377\377"
+  "\377\367\377\377\377\376\377\377\377s\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\374\377\377\377\360\377\377\377\253\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377"
+  "\13\377\377\377\304\377\377\377\375\377\377\377\377\377\377\377\377\377\377"
+  "\377\373\377\377\377\247\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377\307\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\374\377\377\377\324\377\377\377B\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\346"
+  "\377\377\377\13\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377"
+  "\377\377\352\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\376\377\377\377l\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\377\377\3775\377\377\377\333\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\361\377\377\377\202\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\307\377\377\377\376\377"
+  "\377\377i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\352\377\377\377\364"
+  "\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\373\377\377\377"
+  "\377\377\377\377\377\377\377\377\303\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\13\377\377\377\361\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377\225\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377"
+  "\377\377\377\225\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\356\377\377\377"
+  "\376\377\377\377v\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13"
+  "\377\377\377\352\377\377\377\364\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\307\377"
+  "\377\377\377\377\377\377\243\0\0\0\0\0\0\0\0\377\377\377u\377\377\377\375"
+  "\377\377\377\321\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377\307\377\377\377\377\377\377\377\251\0\0\0\0\0\0\0\0\377\377\377\13\377"
+  "\377\377\355\377\377\377\330\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\377\377\377\206\377\377\377\366\377\377\377\377\377\377\377"
+  "\377\377\377\377\373\377\377\377\246\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\370\377\377\377\324\377\377\377"
+  "B\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\206"
+  "\377\377\377\370\377\377\377\377\377\377\377\377\377\377\377\373\377\377"
+  "\377\240\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377\224\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\364\377\377\377\312\377\377\377\33\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\377\377\377\204\377\377\377\365\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\342\377\377\377V\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\377\377\377\224\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\373\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\252\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\377\307\377\377\377\376\377\377\377i\0\0\0\0\0\0"
+  "\0\0\377\377\377\13\377\377\377\352\377\377\377\364\377\377\377%\377\377"
+  "\377\377\377\377\377\377\377\377\377}\377\377\377\376\377\377\377\332\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\262\377\377\377\377\377\377\377"
+  "\216\377\377\377\377\377\377\377\377\377\377\377\345\377\377\377\372\377"
+  "\377\377=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355"
+  "\377\377\377\356\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377"
+  "\345\377\377\377\376\377\377\377~\0\0\0\0\0\0\0\0\377\377\3778\377\377\377"
+  "\367\377\377\377\360\377\377\377\33\377\377\377\377\377\377\377\377\377\377"
+  "\377\206\377\377\377\377\377\377\377\332\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\266\377\377\377\377\377\377\377\234\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\361"
+  "\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\224\377\377\377\377\377\377\377\312\377\377\377\255\377\377\377"
+  "\266\377\377\377u\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377;\377\377\377\373\377\377\377\347\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\377\377\377\377\377\377\377\0\0\0\0\377\377\377`\377\377"
+  "\377\266\377\377\377\263\377\377\377\256\377\377\377\373\377\377\377\254"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\33\377\377\377\371\377\377\377\376\377\377\377_\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377b\377\377\377\374"
+  "\377\377\377\355\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "\224\377\377\377\376\377\377\377l\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\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\377\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\377\377\377K\377"
+  "\377\377\374\377\377\377\333\0\0\0\0\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\334\377\377\377\377\377\377\377\346\377\377\377\272\377\377\377"
+  "\342\377\377\377\276\377\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\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377"
+  "l\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\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\215\377\377\377\377"
+  "\377\377\377\377\377\377\377l\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\215\377\377\377\377\377"
+  "\377\377\377\377\377\377l\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377K\377\377\377\375\377\377\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377"
+  "\377\377\247\377\377\377\343\377\377\377\340\377\377\377\377\377\377\377"
+  "\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377`\377\377\377\262\377\377\377=\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377\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\377\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\377\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\377\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\377\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\377"
+  "\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\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\342\377\377\377\377\377\377\377"
+  "\325\377\377\377\266\377\377\377u\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377"
+  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377"
+  "\377\377`\377\377\377\263\377\377\377\307\377\377\377\376\377\377\377\363"
+  "\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\0\377\377\377\0\377\377\377\0\377\377\377\1\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377"
+  "\377\351\377\377\377\366\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\356\377\377\377\377"
+  "\377\377\377\243\377\377\377;\377\377\377\374\377\377\377\364\377\377\377"
+  "%\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\313\377\377\377\355\0\0\0\0\377\377\377\320\377\377\377\346\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\247"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\352\377\377\377S\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377"
+  "}\377\377\377\377\377\377\377\326\377\377\377\334\377\377\377\376\377\377"
+  "\377l\0\0\0\0\377\377\377}\377\377\377\377\377\377\377\323\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\354\377\377\377\364\377"
+  "\377\377\226\377\377\377\373\377\377\377\337\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\33\377\377"
+  "\377\362\377\377\377\376\377\377\377l\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\232\377"
+  "\377\377\377\377\377\377\336\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\302\377\377\377\377\377"
+  "\377\377\277\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377|\377\377\377\205\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377_\377\377\377\232\377\377\377\13\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\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\377\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\377\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\377\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\377\377\377"
+  "!\377\377\377\371\377\377\377\352\377\377\377\13\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\345\377\377\377\377\377"
+  "\377\377\365\377\377\377\353\377\377\377\377\377\377\377\367\377\377\377"
+  "2\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\313"
+  "\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377l\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\314\377"
+  "\377\377\377\377\377\377\376\377\377\377\335\377\377\377\371\377\377\377"
+  "\377\377\377\377\352\377\377\377\33\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377\302\377\377\377\377\377\377\377\377\377\377\377\342"
+  "\377\377\377\362\377\377\377\377\377\377\377\375\377\377\377\\\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "U\377\377\377\374\377\377\377\377\377\377\377\333\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\361\377\377\377"
+  "\377\377\377\377\373\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\251\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377"
+  "\377\377\247\377\377\377\377\377\377\377\377\377\377\377\360\377\377\377"
+  "\373\377\377\377\377\377\377\377\360\377\377\377\33\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\377\332\377\377\377\377\377\377\377\376\377\377"
+  "\377\374\377\377\377\374\377\377\377\376\377\377\377\377\377\377\377\367"
+  "\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\25\377"
+  "\377\377\356\377\377\377\377\377\377\377\351\377\377\377\350\377\377\377"
+  "\376\377\377\377\376\377\377\377s\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377|\377\377\377\376\377\377\377\377\377\377\377\345\377"
+  "\377\377\356\377\377\377\377\377\377\377\355\377\377\377%\0\0\0\0\377\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\377\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"
+  "\377\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\377\377\377}\377\377\377\374\377\377\377\254\0\0\0\0\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377"
+  "\377\377V\377\377\377\375\377\377\377\241\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\377\377\377\377\377\377\377\0\0\0\0\377\377\3778\377"
+  "\377\377\372\377\377\377\343\377\377\377u\377\377\377\217\377\377\377\374"
+  "\377\377\377\375\377\377\377M\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\377\377\377\233\377\377\377\376\377\377\377\377\377\377\377"
+  "\354\377\377\377\375\377\377\377\377\377\377\377\257\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\232\377\377\377"
+  "\377\377\377\377\377\377\377\377\277\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377"
+  "\342\377\377\377\304\377\377\377\332\377\377\377\376\377\377\377\377\377"
+  "\377\377\227\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377"
+  "\377\377\331\377\377\377\377\377\377\377\373\377\377\377\306\377\377\377"
+  "\307\377\377\377\375\377\377\377\376\377\377\377Q\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\377\313\377\377\377\377\377\377\377\330\377\377"
+  "\377\310\377\377\377\370\377\377\377\377\377\377\377\375\377\377\377f\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\374"
+  "\377\377\377\376\377\377\377\323\377\377\377\327\377\377\377\327\377\377"
+  "\377\327\377\377\377\316\377\377\377\33\377\377\377\377\377\377\377\377\0"
+  "\0\0\0\377\377\377\13\377\377\377\356\377\377\377\376\377\377\377\324\377"
+  "\377\377\327\377\377\377\327\377\377\377\327\377\377\377\312\377\377\377"
+  "%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\33\377\377\377\362"
+  "\377\377\377\377\377\377\377\365\377\377\377\277\377\377\377\321\377\377"
+  "\377\377\377\377\377\366\377\377\377\33\377\377\377\377\377\377\377\377\0"
+  "\0\0\0\377\377\377\313\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377"
+  "\377\13\377\377\377\356\377\377\377\366\377\377\377%\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377}\377\377\377\332\377\377\377\323\377\377"
+  "\377\371\377\377\377\377\377\377\377\331\377\377\377\327\377\377\377\266"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377"
+  "\302\377\377\377\323\377\377\377\322\377\377\377\322\377\377\377\342\377"
+  "\377\377\377\377\377\377\252\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\224\377\377\377\377\377\377\377\252\0\0\0\0\0\0\0\0\377"
+  "\377\377\335\377\377\377\377\377\377\377\315\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\13\377\377\377\356\377\377\377\366\377\377"
+  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\313\377\377\377\377\377\377\377\336\0\0\0\0\0\0"
+  "\0\0\377\377\377\275\377\377\377\377\377\377\377\330\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\312\377\377\377\377\377\377\377"
+  "\364\377\377\377%\0\0\0\0\377\377\377\13\377\377\377\361\377\377\377\333"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377j\377\377\377"
+  "\375\377\377\377\377\377\377\377\325\377\377\377\313\377\377\377\376\377"
+  "\377\377\377\377\377\377\225\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\224\377\377\377\377\377\377\377\342\377\377\377\310\377"
+  "\377\377\322\377\377\377\366\377\377\377\377\377\377\377\355\377\377\377"
+  "\33\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377j\377\377\377\375"
+  "\377\377\377\377\377\377\377\321\377\377\377\307\377\377\377\376\377\377"
+  "\377\377\377\377\377\216\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377\224\377\377\377\377\377\377\377\342\377\377\377\310\377\377"
+  "\377\322\377\377\377\371\377\377\377\377\377\377\377\336\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\374\377\377\377"
+  "\377\377\377\377\330\377\377\377\271\377\377\377\351\377\377\377\377\377"
+  "\377\377\334\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377}\377\377"
+  "\377\332\377\377\377\327\377\377\377\323\377\377\377\371\377\377\377\377"
+  "\377\377\377\331\377\377\377\326\377\377\377\332\377\377\377p\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377"
+  "i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\356\377\377\377\366\377\377"
+  "\377%\377\377\377\377\377\377\377\377\377\377\377\33\377\377\377\365\377"
+  "\377\377\375\377\377\3778\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\345"
+  "\377\377\377\375\377\377\377Q\377\377\377\377\377\377\377\377\377\377\377"
+  "\313\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\13\377\377\377\361\377\377\377\347\377\377\377\377\377\377\377\377\0"
+  "\0\0\0\377\377\377\214\377\377\377\377\377\377\377\343\0\0\0\0\0\0\0\0\377"
+  "\377\377\261\377\377\377\377\377\377\377\272\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\377\377\377\13\377\377\377\351\377\377\377\376\377\377\377i"
+  "\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\366\377\377\377\372\377\377\377"
+  "8\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377v\377\377\377\327\377"
+  "\377\377\322\377\377\377\322\377\377\377\316\377\377\377\351\377\377\377"
+  "\377\377\377\377\360\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377U\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377"
+  "\377\377\320\377\377\377\376\377\377\377_\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\13\377\377\377\364\377\377\377\254\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377"
+  "\377\377\377\377\377\377\377\377\377\377\272\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\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\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\233\377\377\377\371\377\377\377"
+  "i\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\376\377\377"
+  "\377i\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\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\377\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\377\377\377K\377\377\377\374\377\377\377\333"
+  "\0\0\0\0\377\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\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377I\377\377\377\373\377\377\377"
+  "\356\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377"
+  "\377\376\377\377\377i\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"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "S\377\377\377\314\377\377\377\271\377\377\377\13\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377S\377"
+  "\377\377\314\377\377\377\271\377\377\377\13\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\375\377\377\377\252\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\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\360\377\377\377\334\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377"
+  "\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\377\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\377\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\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\247\377\377\377\377\377\377\377l\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\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\377\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\377\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\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\361\377\377\377\337\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\377\377\313\377\377\377\372\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\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\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\3\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\331"
+  "\377\377\377\376\377\377\377i\377\377\377K\377\377\377\374\377\377\377\366"
+  "\377\377\377)\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\316\377\377\377\333\0\0\0\0\377\377\377\316\377\377\377"
+  "\333\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "8\377\377\377\372\377\377\377\377\377\377\377\307\377\377\377\237\377\377"
+  "\377\364\377\377\377\377\377\377\377\244\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\377\377\377\232\377\377\377\375\377\377\3772\377\377\377=\377\377"
+  "\377\375\377\377\377\254\377\377\377!\377\377\377\371\377\377\377\367\377"
+  "\377\3778\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377;\377\377\377"
+  "\372\377\377\377\346\377\377\377\13\377\377\377\371\377\377\377\333\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\377\377\13\377\377\377\355\377\377\377\375\377\377\377\\\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\13\377\377\377\355\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377!\377\377\377\372\377\377\377\375\377\377\3778\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\327\377\377\377\343\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\320\377\377"
+  "\377\374\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\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\377\377\377\224\377\377\377\377\377\377\377\252\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\204\377"
+  "\377\377\377\377\377\377\353\377\377\377\13\0\0\0\0\377\377\377\320\377\377"
+  "\377\377\377\377\377\260\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\377\377\377\205\377\377\377\322\377\377\377\353\377\377\377\376"
+  "\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\325\377\377\377\375\377\377\377M\0\0\0\0\377\377\377\33"
+  "\377\377\377\356\377\377\377\376\377\377\377l\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\215\377\377\377\375\377\377\377Z\0\0\0\0"
+  "\0\0\0\0\377\377\377\325\377\377\377\377\377\377\377\257\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\25\377\377\377"
+  "\356\377\377\377\377\377\377\377\377\377\377\377\326\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\374\377\377"
+  "\377\330\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\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377!\377\377\377\371\377\377\377\377\377"
+  "\377\377\216\0\0\0\0\0\0\0\0\377\377\377\302\377\377\377\224\0\0\0\0\377"
+  "\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\377\377\377\302\377\377\377\377\377\377\377\252\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377V\377\377\377\375\377\377\377\333"
+  "\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\260\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\330\377\377\377\377"
+  "\377\377\377\251\0\0\0\0\377\377\377\13\377\377\377\336\377\377\377\377\377"
+  "\377\377\227\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\250\377\377\377\276\377\377\377\33\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\377\377\250\377\377\377\276\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\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"
+  "\377\377\377\276\377\377\377\377\377\377\377\377\377\377\377\225\0\0\0\0"
+  "\377\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\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377I\377\377\377\373\377\377\377\377\377\377\377\325\377"
+  "\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\306\377"
+  "\377\377\376\377\377\377l\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377K\377\377\377\374\377\377\377\375\377\377\377q\0\0\0\0\377\377"
+  "\377\33\377\377\377\362\377\377\377\366\377\377\377%\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\334\377\377\377\377\377"
+  "\377\377\376\377\377\377\360\377\377\377\33\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\243"
+  "\0\0\0\0\0\0\0\0\377\377\377\223\377\377\377\377\377\377\377\327\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377s\377\377\377\376\377"
+  "\377\377\375\377\377\377_\0\0\0\0\0\0\0\0\377\377\377z\377\377\377\257\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377"
+  "\376\377\377\377U\0\0\0\0\377\377\377\33\377\377\377\353\377\377\377\377"
+  "\377\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377K\377\377\377\374\377\377\377\326\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\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377"
+  "\377\355\377\377\377\366\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\247\377\377\377"
+  "\377\377\377\377\364\377\377\377)\0\0\0\0\0\0\0\0\377\377\377\246\377\377"
+  "\377\213\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313"
+  "\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
+  "\355\377\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\355\377\377\377\363\377\377\377\13\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\213\377\377\377\377\377\377\377"
+  "\252\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377"
+  "\377\377\377\377\377\377\252\0\0\0\0\377\377\377\270\377\377\377\377\377"
+  "\377\377\355\377\377\377\33\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0"
+  "\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377"
+  "\377\377\307\377\377\377\377\377\377\377\375\377\377\3778\377\377\377\13"
+  "\377\377\377\352\377\377\377\377\377\377\377\327\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\307\377\377\377\377\377\377\377\377"
+  "\377\377\377\251\0\0\0\0\377\377\377\13\377\377\377\361\377\377\377\333\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377"
+  "\377\377\377\377\315\0\0\0\0\0\0\0\0\377\377\377\253\377\377\377\377\377"
+  "\377\377\346\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "\224\377\377\377\377\377\377\377\243\0\0\0\0\0\0\0\0\377\377\377\25\377\377"
+  "\377\356\377\377\377\376\377\377\377l\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\313\377\377\377\377\377\377\377\310\0\0\0\0\0\0\0\0\377"
+  "\377\377\253\377\377\377\377\377\377\377\342\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\243\0\0"
+  "\0\0\0\0\0\0\377\377\377!\377\377\377\371\377\377\377\367\377\377\377)\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\232\377\377\377\377\377"
+  "\377\377\315\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\302\377\377\377z\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\355\377\377\377\363\377\377\377\13\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377"
+  "i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377"
+  "\377%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\312\377\377\377"
+  "\377\377\377\377\215\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377"
+  "\377\347\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\247\377\377"
+  "\377\377\377\377\377\206\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377K\377"
+  "\377\377\374\377\377\377\333\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\377\377\377\342\377\377\377\376\377\377\377v\377\377\377\33\377\377"
+  "\377\366\377\377\377\367\377\377\377)\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\214\377\377\377\377\377\377\377\316\0\0\0\0\0\0"
+  "\0\0\377\377\377\232\377\377\377\377\377\377\377\264\0\0\0\0\377\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\377\377\377"
+  "\25\377\377\377\356\377\377\377\376\377\377\377v\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\376"
+  "\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\377\377\377\377\277\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\364\377\377\377\254\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\377\377\335\377\377\377\370\377\377\377\353\377\377\377\363\377"
+  "\377\377%\0\0\0\0\0\0\0\0\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377)\377\377\377V\377\377\377\33\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224"
+  "\377\377\377\376\377\377\377b\0\0\0\0\377\377\377S\377\377\3775\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377\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\377\377\377S\377\377\377I\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377S\377"
+  "\377\3775\377\377\377;\377\377\377\374\377\377\377\333\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377)\377\377"
+  "\377V\377\377\377\13\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377;\377\377\377\374\377\377\377\326"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377E\377\377\377E\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377"
+  "\377\376\377\377\377b\0\0\0\0\377\377\377E\377\377\377S\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377"
+  "\377\375\377\377\377\252\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\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377"
+  "\377\377\361\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377)\377\377\377X\0"
+  "\0\0\0\0\0\0\0\377\377\377V\0\0\0\0\0\0\0\0\377\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\377\377\377E\377\377\377S\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\377\377\377E\377\377\377K\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\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\377"
+  "\377\377S\377\377\3775\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377S\377\377\3775\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377)\377\377\377U\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377E\377\377\377U\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\376\377\377"
+  "\377b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\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\377\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\377\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\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\361"
+  "\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371"
+  "\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377"
+  "%\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\0\377"
+  "\377\377\0\377\377\377\6\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371"
+  "\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377l\377\377\377\33"
+  "\377\377\377\364\377\377\377\352\377\377\377\13\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\3772\377\377\377\274\377\377\377\361\377\377"
+  "\377\375\377\377\377\265\377\377\377\367\377\377\377\372\377\377\377\221"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377V\377\377\377"
+  "\374\377\377\377\336\0\0\0\0\0\0\0\0\377\377\3775\377\377\377\261\377\377"
+  "\377\13\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\232\377\377\377"
+  "\371\377\377\377\33\377\377\377;\377\377\377\374\377\377\377\217\377\377"
+  "\377\335\377\377\377\375\377\377\377\\\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\33\377\377\377\371\377\377\377\333\377\377\377e"
+  "\377\377\377\374\377\377\377\326\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\361\377"
+  "\377\377\364\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377b\377\377\377\375\377\377\377"
+  "\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\266\377\377\377\377\377\377\377"
+  "\227\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\316\377\377\377\334\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\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\377\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\377\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\377\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\377\377\377\335\377\377"
+  "\377\375\377\377\377=\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\306\377\377\377\377\377\377\377\225\0\0\0\0\0\0\0\0\377"
+  "\377\377`\377\377\377\375\377\377\377\346\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\213\377\377\377\376"
+  "\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\3772\377\377\377f\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\253\377"
+  "\377\377\376\377\377\377i\0\0\0\0\377\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\377\377\377\231\377\377\377\377"
+  "\377\377\377\257\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\313\377\377\377\377\377\377\377\356\377\377\377\374"
+  "\377\377\377\332\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377K\377\377\377\374\377\377\377\326\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\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "\224\377\377\377\377\377\377\377\326\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\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\377\377\377b\377\377\377\375\377\377\377\347\377\377\377\13"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377U\377\377\377"
+  "\375\377\377\377\266\0\0\0\0\0\0\0\0\377\377\377;\377\377\377\374\377\377"
+  "\377\236\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\25\377\377\377"
+  "\361\377\377\377\367\377\377\377)\0\0\0\0\0\0\0\0\377\377\377j\377\377\377"
+  "\376\377\377\377\322\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\214\377\377\377\377\377\377\377\377\377\377\377"
+  "\260\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\214\377\377\377\377\377\377\377\377\377\377\377"
+  "\260\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377G\377\377\377\350\377\377\377\377\377\377\377\367"
+  "\377\377\377y\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377"
+  "\377\377\207\377\377\377\307\377\377\377\304\377\377\377\304\377\377\377"
+  "\304\377\377\377\304\377\377\377\304\377\377\377\243\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377S\377\377\377\351\377\377"
+  "\377\377\377\377\377\365\377\377\377n\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377"
+  "\13\377\377\377\345\377\377\377\376\377\377\377_\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\273\377\377\377\377\377\377\377\234"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\232\377\377\377\376\377\377\377i\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377;\377\377\377\373"
+  "\377\377\377\344\377\377\377\317\377\377\377\376\377\377\377v\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377"
+  "\377\377\377\377\252\0\0\0\0\0\0\0\0\377\377\377X\377\377\377\375\377\377"
+  "\377\327\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\300"
+  "\377\377\377\377\377\377\377\277\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\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377"
+  "\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377"
+  "\377\375\377\377\377Q\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "K\377\377\377\374\377\377\377\332\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\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377"
+  "\355\377\377\377\366\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\342\377\377\377\377"
+  "\377\377\377\225\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\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377"
+  "\377b\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377"
+  "\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\13\377\377\377\355\377\377\377\366\377\377\377)\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\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\377\377\377\224\377\377\377\377\377\377\377\252\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377"
+  "\377\377\237\377\377\377\203\377\377\377\377\377\377\377\375\377\377\377"
+  "Q\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13"
+  "\377\377\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\312\377"
+  "\377\377\377\377\377\377\377\377\377\377\217\377\377\377X\377\377\377\375"
+  "\377\377\377\373\377\377\377\332\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377\313\377\377\377\373\377\377\377\371\377\377\377\366"
+  "\377\377\377%\377\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\377\377\377\33\377\377\377\362\377\377\377\375"
+  "\377\377\377\\\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\366\377\377\377"
+  "\375\377\377\377Q\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224"
+  "\377\377\377\377\377\377\377\252\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\306"
+  "\377\377\377\375\377\377\377\\\377\377\377\377\377\377\377\377\377\377\377"
+  "\33\377\377\377\362\377\377\377\375\377\377\377Q\0\0\0\0\0\0\0\0\377\377"
+  "\377!\377\377\377\371\377\377\377\375\377\377\377M\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\252\0\0\0\0"
+  "\0\0\0\0\377\377\377\25\377\377\377\370\377\377\377\364\377\377\377%\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\232\377\377\377\377\377"
+  "\377\377\304\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\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355"
+  "\377\377\377\366\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377i\0\0\0\0"
+  "\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\204\377\377\377\377\377"
+  "\377\377\311\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377"
+  "\260\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\222\377\377\377"
+  "\377\377\377\377\252\0\0\0\0\377\377\377\307\377\377\377\355\377\377\377"
+  "%\377\377\377K\377\377\377\374\377\377\377\260\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\377\377\377l\377\377\377\376\377\377\377\333\377\377"
+  "\377\243\377\377\377\377\377\377\377\244\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\345\377\377\377\375\377"
+  "\377\377M\377\377\377\13\377\377\377\351\377\377\377\372\377\377\377)\0\0"
+  "\0\0\377\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\377\377\377\317\377\377\377\377\377\377\377\277\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377"
+  "\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\25\377\377\377\362\377\377\377"
+  "\363\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\364\377"
+  "\377\377\254\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\377\377\377U\377\377\377\374\377\377\377\316\377\377\377\247"
+  "\377\377\377\377\377\377\377\206\0\0\0\0\0\0\0\0\377\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\377\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\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\216\377\377\377\345\377\377"
+  "\377\377\377\377\377\377\377\377\377\376\377\377\377\275\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\376"
+  "\377\377\377\271\377\377\377\364\377\377\377\377\377\377\377\377\377\377"
+  "\377\313\377\377\377\13\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0"
+  "\0\0\0\377\377\377\13\377\377\377\272\377\377\377\371\377\377\377\377\377"
+  "\377\377\377\377\377\377\355\377\377\377\200\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\361\377\377\377\377"
+  "\377\377\377\377\377\377\377\325\377\377\377\377\377\377\377\332\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\3775\377\377\377"
+  "\327\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377\267\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\205\377"
+  "\377\377\361\377\377\377\363\377\377\377\377\377\377\377\374\377\377\377"
+  "\364\377\377\377\367\377\377\377\354\377\377\377%\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\377\377\377b\377\377\377\350\377\377\377\377\377"
+  "\377\377\377\377\377\377\360\377\377\377\360\377\377\377\375\377\377\377"
+  "\243\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377"
+  "\376\377\377\377\215\377\377\377\350\377\377\377\377\377\377\377\377\377"
+  "\377\377\346\377\377\3772\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377\301\377\377\377\370\377\377\377\364\377\377\377\364\377\377"
+  "\377\360\377\377\377\350\377\377\377%\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\301\377\377\377\370\377\377\377\364\377"
+  "\377\377\364\377\377\377\360\377\377\377\350\377\377\377%\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\375\377"
+  "\377\377\252\0\0\0\0\0\0\0\0\377\377\377S\377\377\377\354\377\377\377\363"
+  "\377\377\377I\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\342\377\377"
+  "\377\332\377\377\377\374\377\377\377\377\377\377\377\276\377\377\377\353"
+  "\377\377\377\377\377\377\377\352\377\377\377)\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\214\377\377\377\371\377\377\377\212\377\377\377"
+  "\350\377\377\377\377\377\377\377\377\377\377\377\346\377\377\3772\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377u\377\377\377"
+  "\351\377\377\377\377\377\377\377\377\377\377\377\364\377\377\377\222\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\213\377"
+  "\377\377\371\377\377\377\262\377\377\377\365\377\377\377\377\377\377\377"
+  "\377\377\377\377\313\377\377\377\13\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\361\377\377\377\377\377\377\377"
+  "\377\377\377\377\310\377\377\377\347\377\377\377\315\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\301\377\377\377\351\377"
+  "\377\377)\377\377\377\326\377\377\377\377\377\377\377\377\377\377\377\372"
+  "\377\377\377M\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377"
+  "\224\377\377\377\365\377\377\377\377\377\377\377\377\377\377\377\373\377"
+  "\377\377\300\377\377\377=\0\0\0\0\377\377\377\377\377\377\377\377\377\377"
+  "\377\13\377\377\377\332\377\377\377\360\377\377\377\373\377\377\377\377\377"
+  "\377\377\376\377\377\377\364\377\377\377\367\377\377\377\354\377\377\377"
+  "%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\301\377\377\377\354"
+  "\377\377\3772\0\0\0\0\0\0\0\0\377\377\377I\377\377\377\364\377\377\377\275"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377I\377\377\377\364\377"
+  "\377\377\330\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\267\377\377\377"
+  "\367\377\377\377\\\377\377\377\377\377\377\377\377\377\377\377\335\377\377"
+  "\377\360\377\377\3778\0\0\0\0\377\377\377~\377\377\377\224\0\0\0\0\377\377"
+  "\377\13\377\377\377\332\377\377\377\342\377\377\377\377\377\377\377\377\0"
+  "\0\0\0\377\377\377\275\377\377\377\373\377\377\377\255\0\0\0\0\0\0\0\0\377"
+  "\377\377r\377\377\377\370\377\377\377\315\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\377\377\377I\377\377\377\364\377\377\377\330\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\254\377\377\377\367\377\377\377\\\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\365\377\377\377\364\377"
+  "\377\377\364\377\377\377\364\377\377\377\360\377\377\377\360\377\377\377"
+  "\354\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313"
+  "\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\7\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\313\377\377\377\372\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\306\377\377\377\375"
+  "\377\377\3778\377\377\377\13\377\377\377\364\377\377\377\334\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\364"
+  "\377\377\377\376\377\377\377\370\377\377\377\364\377\377\377\376\377\377"
+  "\377\374\377\377\377\320\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\3778\377\377\377\372\377\377\377\376\377\377\377\307\377\377\377"
+  "O\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377"
+  "\377\223\377\377\377\377\377\377\377\234\377\377\377\243\377\377\377\376"
+  "\377\377\377\217\377\377\377\373\377\377\377v\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\331\377\377\377\377\377"
+  "\377\377\377\377\377\377\367\377\377\3778\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\323"
+  "\377\377\377\374\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\245\377\377\377\377\377"
+  "\377\377\215\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377V\377\377\377\375\377\377"
+  "\377\322\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377\260\377\377\377\354\377\377\377\236\377\377\377\326\377\377"
+  "\377\361\377\377\377\224\377\377\377\341\377\377\377\314\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313"
+  "\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\325"
+  "\377\377\377\374\377\377\3772\377\377\377\215\377\377\377\241\377\377\377"
+  "\13\377\377\377\361\377\377\377\367\377\377\377)\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\376"
+  "\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\307\377\377\377"
+  "\376\377\377\377l\0\0\0\0\377\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\377\377\377\200\377\377\377\363\377\377\377\376"
+  "\377\377\377s\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377"
+  "\377\377\240\377\377\377\377\377\377\377\363\377\377\377V\377\377\377\374"
+  "\377\377\377\333\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377K\377\377\377\374\377\377\377\333\377\377\377\274\377\377\377"
+  "\310\377\377\377\251\377\377\377=\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\377\314\377\377\377\376\377\377\377l\377\377\377"
+  "j\377\377\377\237\377\377\377\223\377\377\377%\0\0\0\0\0\0\0\0\377\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\377\377\377"
+  "\342\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\3778\377\377\377\372\377\377\377\376\377\377\377"
+  "\237\0\0\0\0\377\377\377\254\377\377\377\377\377\377\377\243\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\377\377\377\25\377\377\377\361\377\377\377\366"
+  "\377\377\377\33\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\366\377\377\377"
+  "\355\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\377\377\232\377\377\377\377\377\377\377\377\377\377\377\323\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\377\377\232\377\377\377\377\377\377\377\377\377\377\377\323\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377"
+  "\377\224\377\377\377\374\377\377\377\377\377\377\377\314\377\377\377\33\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "\274\377\377\377\377\377\377\377\370\377\377\377\370\377\377\377\370\377"
+  "\377\377\370\377\377\377\373\377\377\377\321\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\264\377\377\377"
+  "\377\377\377\377\377\377\377\377\262\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\337"
+  "\377\377\377\377\377\377\377\271\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\377\377\377\25\377\377\377\361\377\377\377\352\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\377\377U\377\377\377\237\377\377\377\376\377\377\377l\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\232\377\377\377\377"
+  "\377\377\377\266\377\377\377\213\377\377\377\377\377\377\377\304\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377"
+  "\377\377\377\377\377\265\377\377\377E\377\377\377y\377\377\377\337\377\377"
+  "\377\377\377\377\377\227\0\0\0\0\377\377\377\377\377\377\377\377\377\377"
+  "\377\13\377\377\377\352\377\377\377\375\377\377\377Q\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\377\377\377\377\377\377\377\0\0\0\0\377"
+  "\377\377\313\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\324\377\377\377\376\377\377\377l\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377K\377\377\377\374\377\377\377\337\377\377\377Z\377\377\377"
+  "p\377\377\377p\377\377\377f\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377)\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377"
+  "\377\3775\377\377\377\371\377\377\377\367\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\377\377\377\377\377\377\377\377\0\0\0\0\377"
+  "\377\377\313\377\377\377\376\377\377\377\224\377\377\377m\377\377\377v\377"
+  "\377\377h\377\377\377\362\377\377\377\366\377\377\377%\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377"
+  "\377\366\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\224\377"
+  "\377\377\377\377\377\377\252\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\224\377\377\377\377\377\377\377\300\377\377\377\372\377"
+  "\377\377\377\377\377\377\236\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377"
+  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\313\377\377\377\370\377\377\377\366\377\377\377"
+  "\317\377\377\377\243\377\377\377\376\377\377\377\372\377\377\377\333\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377"
+  "\367\377\377\377\304\377\377\377\377\377\377\377\251\377\377\377\13\377\377"
+  "\377\361\377\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\377\377"
+  "\377U\377\377\377\374\377\377\377\343\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\314\377\377\377\376\377\377\377i\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\243\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\335\377\377\377\376\377\377\377l\377\377\377\377\377"
+  "\377\377\377\377\377\377U\377\377\377\374\377\377\377\336\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\317\377\377\377\376\377\377\377l\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377"
+  "\243\0\0\0\0\0\0\0\0\377\377\377`\377\377\377\373\377\377\377\366\377\377"
+  "\377%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377`\377\377\377\374"
+  "\377\377\377\377\377\377\377\336\377\377\377\205\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\13\377\377\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377"
+  "\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377"
+  "\377\366\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "\33\377\377\377\371\377\377\377\360\377\377\377\33\0\0\0\0\377\377\377\320"
+  "\377\377\377\376\377\377\377_\0\0\0\0\377\377\377\377\377\377\377\377\377"
+  "\377\377U\377\377\377\375\377\377\377\277\377\377\377\33\377\377\377\366"
+  "\377\377\377\376\377\377\377m\377\377\377\213\377\377\377\377\377\377\377"
+  "\243\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\324\377\377\377\377\377\377\377\377\377\377\377\355\377\377\377\33\0\0\0"
+  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\204"
+  "\377\377\377\377\377\377\377\304\377\377\377\204\377\377\377\377\377\377"
+  "\377\260\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\214\377\377\377\377\377\377\377\355\377\377"
+  "\377\33\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\377\377\224\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\266\377\377\377\377\377\377\377\206\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\13\377\377\377\364\377\377\377\254\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\266\377\377\377\377\377"
+  "\377\377\207\377\377\377K\377\377\377\374\377\377\377\327\0\0\0\0\0\0\0\0"
+  "\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377}\377\377\377"
+  "\377\377\377\377\373\377\377\377\313\377\377\377\303\377\377\377\374\377"
+  "\377\377\377\377\377\377\252\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\224\377\377\377\377\377\377\377\377\377\377\377\351\377"
+  "\377\377\300\377\377\377\365\377\377\377\377\377\377\377\316\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\346\377\377"
+  "\377\377\377\377\377\365\377\377\377\305\377\377\377\315\377\377\377\376"
+  "\377\377\377\366\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0\0\377"
+  "\377\377}\377\377\377\376\377\377\377\377\377\377\377\325\377\377\377\321"
+  "\377\377\377\376\377\377\377\377\377\377\377\332\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\3778\377\377\377\371\377\377\377\377\377"
+  "\377\377\335\377\377\377\263\377\377\377\351\377\377\377\377\377\377\377"
+  "\304\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377S\377\377"
+  "\377\330\377\377\377\343\377\377\377\377\377\377\377\364\377\377\377\327"
+  "\377\377\377\333\377\377\377\322\377\377\377\33\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\3778\377\377\377\372\377\377\377\376\377\377\377\275"
+  "\377\377\377\307\377\377\377\376\377\377\377\377\377\377\377\324\377\377"
+  "\377y\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377"
+  "\377\377\377\377\377\377\377\377\370\377\377\377\306\377\377\377\356\377"
+  "\377\377\377\377\377\377\322\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\224\377\377\377\336\377\377\377\333\377\377\377\327\377"
+  "\377\377\377\377\377\377\366\377\377\377)\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\336\377\377\377\333"
+  "\377\377\377\327\377\377\377\377\377\377\377\366\377\377\377)\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\375"
+  "\377\377\377\252\0\0\0\0\377\377\377`\377\377\377\373\377\377\377\377\377"
+  "\377\377\242\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\355"
+  "\377\377\377\377\377\377\377\346\377\377\377\362\377\377\377\377\377\377"
+  "\377\362\377\377\377\347\377\377\377\377\377\377\377\215\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\377"
+  "\377\377\377\370\377\377\377\306\377\377\377\356\377\377\377\377\377\377"
+  "\377\322\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377u\377"
+  "\377\377\376\377\377\377\377\377\377\377\321\377\377\377\307\377\377\377"
+  "\375\377\377\377\377\377\377\377\243\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\377\377\377\377"
+  "\352\377\377\377\300\377\377\377\365\377\377\377\377\377\377\377\316\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377}\377\377\377\376"
+  "\377\377\377\377\377\377\377\325\377\377\377\321\377\377\377\376\377\377"
+  "\377\377\377\377\377\332\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377\366\377\377\377\377"
+  "\377\377\377\335\377\377\377\322\377\377\377\343\377\377\377%\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377u\377\377\377\377\377\377\377\370"
+  "\377\377\377\277\377\377\377\262\377\377\377\346\377\377\377\377\377\377"
+  "\377\231\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377"
+  "\315\377\377\377\330\377\377\377\370\377\377\377\377\377\377\377\335\377"
+  "\377\377\327\377\377\377\333\377\377\377\322\377\377\377\33\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377l\0\0"
+  "\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377\341\377\377\377\376\377\377"
+  "\377v\0\0\0\0\0\0\0\0\377\377\377!\377\377\377\371\377\377\377\366\377\377"
+  "\377)\377\377\377\377\377\377\377\377\377\377\377\313\377\377\377\377\377"
+  "\377\377\205\377\377\377\13\377\377\377\364\377\377\377\376\377\377\377Q"
+  "\377\377\377!\377\377\377\371\377\377\377\352\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377I\377\377\377\372\377\377\377\376\377\377\377v\377"
+  "\377\377\33\377\377\377\362\377\377\377\376\377\377\377}\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377\335\377\377\377\376\377\377"
+  "\377v\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\364\377\377\377\372\377"
+  "\377\3772\377\377\377\377\377\377\377\377\0\0\0\0\377\377\3775\377\377\377"
+  "\323\377\377\377\333\377\377\377\333\377\377\377\327\377\377\377\377\377"
+  "\377\377\377\377\377\377\326\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\320\377\377\377\355\377\377\377"
+  "\13\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\377\377\313\377\377\377\371\377\377\377\33\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377}\377\377"
+  "\377\313\377\377\377\257\377\377\377\13\0\0\0\0\377\377\377\223\377\377\377"
+  "\252\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\0\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\316"
+  "\377\377\377\352\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\377\377\377z\377\377\377\325\377\377\377\33\377"
+  "\377\377\13\377\377\377\314\377\377\377\267\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377!\377\377\377\373\377\377\377"
+  "\211\377\377\377!\377\377\377\374\377\377\377\200\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\205\377\377\377\370"
+  "\377\377\377\377\377\377\377\377\377\377\377\345\377\377\377\200\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\333\377"
+  "\377\377\377\377\377\377\377\377\377\377\321\0\0\0\0\377\377\377r\377\377"
+  "\377z\377\377\377%\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377\25\377\377\377\337\377\377\377\377\377\377\377\375\377\377\3778\0\0"
+  "\0\0\377\377\377U\377\377\377\365\377\377\377\256\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\255\377\377\377\275"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\314\377\377\377\376\377\377\377b\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\33\377\377\377\371\377\377\377\333\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377~\377\377\377"
+  "\347\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\361\377\377\377\227\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\312\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\322\0\0\0\0\377"
+  "\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\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\312\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\322\0\0\0\0\377"
+  "\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\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\261\377\377\377\377\377\377\377"
+  "\215\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377"
+  "\25\377\377\377\361\377\377\377\363\377\377\377E\377\377\377\375\377\377"
+  "\377\377\377\377\377V\377\377\377\324\377\377\377\366\377\377\377%\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224"
+  "\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377j\377\377"
+  "\377\375\377\377\377\361\377\377\377%\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\215\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377b\377\377\377\374\377\377\377\375\377\377"
+  "\377Q\377\377\377K\377\377\377\374\377\377\377\332\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\375\377\377\377"
+  "\377\377\377\377\374\377\377\377\376\377\377\377\377\377\377\377\375\377"
+  "\377\377s\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\312"
+  "\377\377\377\377\377\377\377\360\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\376\377\377\377\213\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\377\377"
+  "\377\377\315\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\377\377\377\215\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\333\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\321\377\377\377\377\377\377\377\315\377"
+  "\377\377q\377\377\377\221\377\377\377\363\377\377\377\377\377\377\377\364"
+  "\377\377\377)\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377G\377\377\377\330\377\377\377\343\377\377\377c\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "G\377\377\377\330\377\377\377\343\377\377\377c\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377V\377\377\377\375\377\377"
+  "\377\376\377\377\377\214\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\377\377U\377\377\377\374\377\377\377"
+  "\377\377\377\377m\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\330\377\377\377\377\377\377\377\271\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377U\377\377\377"
+  "\375\377\377\377\252\0\0\0\0\377\377\377\233\377\377\377\366\377\377\377"
+  "\377\377\377\377\377\377\377\377\376\377\377\377i\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\377\377\377\334\377\377\377\376\377\377\377U\377"
+  "\377\377!\377\377\377\371\377\377\377\363\377\377\377%\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\371\377"
+  "\377\377)\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377"
+  "\377\355\377\377\377\366\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\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377"
+  "\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377"
+  "\377\376\377\377\377i\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "K\377\377\377\374\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\375\377\377\377)\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377l\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\377\377\377K\377\377\377\374\377\377\377\333"
+  "\0\0\0\0\0\0\0\0\377\377\377\247\377\377\377\327\377\377\377\322\377\377"
+  "\377\300\377\377\377\13\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "\312\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\364\377\377\377%\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377"
+  "\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\224"
+  "\377\377\377\377\377\377\377\252\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\332\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377"
+  "\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\377\313\377\377\377\363\377\377\377\301\377\377"
+  "\377\373\377\377\377\356\377\377\377\333\377\377\377\352\377\377\377\333"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377"
+  "\377\376\377\377\377w\377\377\377\371\377\377\377\366\377\377\377!\377\377"
+  "\377\360\377\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\377\377"
+  "\377K\377\377\377\374\377\377\377\327\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\312\377\377\377\377\377\377\377\251\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\326\377\377\377"
+  "\247\377\377\377\262\377\377\377\351\377\377\377\377\377\377\377\355\377"
+  "\377\377\33\377\377\377\377\377\377\377\377\377\377\377K\377\377\377\374"
+  "\377\377\377\343\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377"
+  "\377\376\377\377\377i\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "\224\377\377\377\377\377\377\377\356\377\377\377\340\377\377\377\343\377"
+  "\377\377\376\377\377\377\377\377\377\377\304\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\365\377\377\377\377"
+  "\377\377\377\377\377\377\377\364\377\377\377\247\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
+  "\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377i\0\0"
+  "\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\321\377\377"
+  "\377\376\377\377\377i\377\377\377\33\377\377\377\365\377\377\377\355\377"
+  "\377\377\13\0\0\0\0\377\377\377\377\377\377\377\377\377\377\3778\377\377"
+  "\377\372\377\377\377\327\377\377\377c\377\377\377\377\377\377\377\377\377"
+  "\377\377\271\377\377\377\205\377\377\377\376\377\377\377i\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377l\377\377\377\377\377"
+  "\377\377\377\377\377\377\226\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\344\377\377\377\376\377"
+  "\377\377\372\377\377\377\367\377\377\377)\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377!\377\377\377\371\377"
+  "\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\376\377\377"
+  "\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377V\377\377\377\375\377\377\377\326\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\364\377\377\377\254\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\33\377"
+  "\377\377\364\377\377\377\363\377\377\377%\0\0\0\0\377\377\377\335\377\377"
+  "\377\375\377\377\377M\0\0\0\0\377\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\377"
+  "\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\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\377\377\377\177\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\205\377"
+  "\377\377\376\377\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\224\377\377\377\377\377\377\377\257\0\0\0\0\0\0\0\0\377"
+  "\377\377;\377\377\377\373\377\377\377\372\377\377\3778\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\247\377\377\377\377\377\377\377\345\377"
+  "\377\377\33\0\0\0\0\0\0\0\0\377\377\377O\377\377\377X\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\377\377\377\13\377\377\377\351\377\377\377\377\377\377"
+  "\377\252\0\0\0\0\0\0\0\0\377\377\377b\377\377\377\375\377\377\377\332\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\306\377\377\377"
+  "\377\377\377\377\252\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\344\377\377\377"
+  "\372\377\377\377)\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377%\377\377\377\374\377\377\377\326\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\232\377\377\377"
+  "\377\377\377\377\264\0\0\0\0\0\0\0\0\377\377\377\335\377\377\377\376\377"
+  "\377\377Q\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224"
+  "\377\377\377\377\377\377\377\325\377\377\377\13\0\0\0\0\377\377\377;\377"
+  "\377\377\373\377\377\377\363\377\377\377%\377\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\377\377\377\354\377\377\377\366"
+  "\377\377\377%\0\0\0\0\0\0\0\0\377\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\377\377\377\354\377\377\377\366\377\377\377"
+  "%\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377"
+  "\377\377\375\377\377\377\237\377\377\377j\377\377\377\374\377\377\377\376"
+  "\377\377\377\214\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377"
+  "\377\377\361\377\377\377\352\0\0\0\0\377\377\377\306\377\377\377\375\377"
+  "\377\377=\377\377\377\211\377\377\377\377\377\377\377\252\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\325"
+  "\377\377\377\13\0\0\0\0\377\377\377;\377\377\377\373\377\377\377\363\377"
+  "\377\377%\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\351"
+  "\377\377\377\377\377\377\377\243\0\0\0\0\0\0\0\0\377\377\377r\377\377\377"
+  "\375\377\377\377\363\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377\224\377\377\377\377\377\377\377\257\0\0\0\0\0\0\0\0\377\377"
+  "\377;\377\377\377\373\377\377\377\372\377\377\3778\377\377\377\377\377\377"
+  "\377\377\377\377\377\13\377\377\377\351\377\377\377\377\377\377\377\252\0"
+  "\0\0\0\0\0\0\0\377\377\377b\377\377\377\375\377\377\377\332\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\312\377\377\377\377"
+  "\377\377\377\372\377\377\377f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377"
+  "\333\377\377\377\13\0\0\0\0\0\0\0\0\377\377\377S\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\306\377\377"
+  "\377\376\377\377\377U\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377i\0\0\0\0"
+  "\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\204\377\377\377\377\377\377\377"
+  "\322\0\0\0\0\0\0\0\0\377\377\377\241\377\377\377\377\377\377\377\264\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\377\377\377\224\377\377\377\377\377"
+  "\377\377\266\377\377\377;\377\377\377\374\377\377\377\377\377\377\377\226"
+  "\377\377\377l\377\377\377\377\377\377\377\300\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\377\377\377u\377\377\377\376\377\377\377\361\377\377"
+  "\377\325\377\377\377\377\377\377\377\252\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377s\377\377\377\377\377\377\377\333\0\0"
+  "\0\0\0\0\0\0\377\377\377\215\377\377\377\377\377\377\377\277\0\0\0\0\377"
+  "\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\377"
+  "\377\377\314\377\377\377\377\377\377\377\333\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377E\377\377\377\217\377\377"
+  "\377\373\377\377\377\343\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377"
+  "\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\376\377"
+  "\377\377\247\377\377\377I\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377\214\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\364\377\377\377\245\377\377\377\372\377\377\377\355\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\0\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\324\377\377\377"
+  "\343\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\205\377\377\377"
+  "\271\377\377\377\376\377\377\377\303\377\377\377\262\377\377\377\377\377"
+  "\377\377\315\377\377\377l\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\220\377\377\377\341\377\377\377\377"
+  "\377\377\377\377\377\377\377\233\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\257\377\377\377)\377\377\377"
+  "\313\377\377\377\377\377\377\377\377\377\377\377\375\377\377\377\\\377\377"
+  "\377\377\377\377\377\377\377\377\377\13\377\377\377\342\377\377\377\377\377"
+  "\377\377\373\377\377\377\377\377\377\377\265\0\0\0\0\377\377\377\266\377"
+  "\377\377\377\377\377\377\215\377\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\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377"
+  "\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
+  "\360\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\261\377\377\377\377\377\377\377"
+  "\377\377\377\377\332\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377`\377\377\377\262\377\377\377\251\377\377\377\354"
+  "\377\377\377\373\377\377\377\261\377\377\377\262\377\377\377\224\0\0\0\0"
+  "\377\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\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377v\377\377\377\263\377\377\377\255\377\377\377\255\377"
+  "\377\377\255\377\377\377\255\377\377\377\263\377\377\377\224\0\0\0\0\377"
+  "\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\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\356\377\377\377\366\377\377"
+  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377"
+  "\13\377\377\377\356\377\377\377\363\371\371\377.\377\377\377\362\377\377"
+  "\377\375\377\377\377B\377\377\377\335\377\377\377\366\377\377\377%\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224"
+  "\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377U\377\377\377\373"
+  "\377\377\377\376\377\377\377s\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\205\377\377\377\271\377\377\377"
+  "\332\377\377\377\377\377\377\377\373\377\377\377r\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\377\377\377\33\377\377\377\362\377\377\377\377\377\377\377"
+  "\242\377\377\377E\377\377\377x\377\377\377\374\377\377\377\336\377\377\377"
+  "K\377\377\377\13\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377"
+  "\377\216\377\377\377]\0\0\0\0\0\0\0\0\377\377\377\251\377\377\377\377\377"
+  "\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "\312\377\377\377\377\377\377\377\356\377\377\377v\0\0\0\0\377\377\377\220"
+  "\377\377\377\374\377\377\377\363\377\377\377\33\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\324\377\377\377\376\377"
+  "\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377j\377\377\377\374\377\377\377\367\377\377\377\260\377\377\377"
+  "\342\377\377\377\377\377\377\377\376\377\377\377\224\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\3775\377\377\377\347\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\343\377\377\377\374\377\377"
+  "\377\360\377\377\377%\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377"
+  "\377\377\25\377\377\377\337\377\377\377\377\377\377\377\361\377\377\377\200"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377b\377\377\377\232\377\377\377\232\377\377\377\232\377\377\377"
+  "\232\377\377\377\232\377\377\377\232\377\377\377}\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377_\377\377\377"
+  "\345\377\377\377\377\377\377\377\361\377\377\3778\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377V\377\377\377\376\377"
+  "\377\377\344\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\377\377\377K\377\377\377\374\377\377\377\245\377\377\377l\377\377\377"
+  "\377\377\377\377\344\377\377\377v\377\377\377;\377\377\377\375\377\377\377"
+  "l\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377;\377\377\377\373\377"
+  "\377\377\376\377\377\377\301\377\377\377\271\377\377\377\374\377\377\377"
+  "\376\377\377\377v\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377\224\377\377\377\377\377\377\377\304\377\377\377e\377\377\377x\377\377"
+  "\377\300\377\377\377\376\377\377\377\367\377\377\377)\377\377\377\377\377"
+  "\377\377\377\377\377\377\13\377\377\377\361\377\377\377\367\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\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377i\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\307\377\377\377\376\377\377\377i\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\343\377"
+  "\377\377|\377\377\377\202\377\377\377\211\377\377\377\202\377\377\377\13"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377"
+  "\355\377\377\377\373\377\377\377\300\377\377\377\276\377\377\377\276\377"
+  "\377\377\302\377\377\377G\0\0\0\0\377\377\377\377\377\377\377\377\377\377"
+  "\377U\377\377\377\374\377\377\377\352\377\377\377\13\0\0\0\0\377\377\377"
+  "\307\377\377\377\374\377\377\377\377\377\377\377\372\377\377\377)\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377"
+  "\377\240\377\377\377\200\377\377\377\210\377\377\377\202\377\377\377\371"
+  "\377\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\224\377\377\377\377\377\377"
+  "\377\252\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224"
+  "\377\377\377\377\377\377\377\377\377\377\377\311\377\377\377\343\377\377"
+  "\377\377\377\377\377\225\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\313\377\377\377\366\377\377\377]\377\377\377\375\377\377"
+  "\377\377\377\377\377\211\377\377\377\354\377\377\377\333\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377"
+  "\377V\377\377\377\252\377\377\377\377\377\377\377\244\377\377\377\354\377"
+  "\377\377\334\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377U\377\377"
+  "\377\374\377\377\377\326\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\307"
+  "\377\377\377\376\377\377\377\177\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377\224\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\374\377\377\377\324\377\377\377)\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\377\377\377U\377\377\377\374\377\377\377\327\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\307\377\377\377\376\377\377\377l\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377"
+  "\377\377\365\377\377\377\357\377\377\377\377\377\377\377\377\377\377\377"
+  "\224\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\210\377\377\377\335\377\377\377\377\377\377\377"
+  "\377\377\377\377\315\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377\313\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377\13\377"
+  "\377\377\355\377\377\377\366\377\377\377)\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\377\377\377\215\377\377\377\377\377\377\377\254\377\377"
+  "\377c\377\377\377\377\377\377\377\273\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\377\377\377\13\377\377\377\361\377\377\377\340\377\377\377\277"
+  "\377\377\377\367\377\377\377\351\377\377\377\352\377\377\377\300\377\377"
+  "\377\375\377\377\377I\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\307\377\377\377\377\377\377\377\377\377\377\377\335\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377}\377\377\377\376\377\377\377\377\377\377\377\252\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\325\377\377\377\377\377\377\377\264\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\224\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\342\377\377\377\375\377\377\3778\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
+  "\364\377\377\377\254\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377I\377\377\377\340\377\377\377\240\0\0\0\0\0\0\0\0"
+  "\377\377\377}\377\377\377\341\377\377\377Z\0\0\0\0\377\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\377\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\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377Q\377\377\377\306\377\377\377"
+  "\366\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\332\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377"
+  "\376\377\377\377b\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\320\377\377\377\376"
+  "\377\377\377l\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\317\377"
+  "\377\377\376\377\377\377l\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\377\377\377\377\377\377\377\377\377\377\13\377\377\377\356\377\377\377"
+  "\372\377\377\377)\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377"
+  "\333\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\351"
+  "\377\377\377\377\377\377\377\361\377\377\377\354\377\377\377\354\377\377"
+  "\377\354\377\377\377\376\377\377\377\376\377\377\377l\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377"
+  "\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377\215\377\377\377\377\377\377\377\311\0\0\0\0\0\0\0\0"
+  "\377\377\377\335\377\377\377\376\377\377\377i\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377_\0\0\0\0"
+  "\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377)\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\13\377\377\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377"
+  "\377\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333\377"
+  "\377\377\374\377\377\377\377\377\377\377\311\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377"
+  "\377\361\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\377\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\377"
+  "\377\377\313\377\377\377\371\377\377\377%\377\377\377\224\377\377\377\377"
+  "\377\377\377\252\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224"
+  "\377\377\377\376\377\377\377_\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
+  "\355\377\377\377\366\377\377\377)\377\377\377\377\377\377\377\377\377\377"
+  "\377\13\377\377\377\356\377\377\377\372\377\377\377)\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\345\377\377\377\376\377\377\377i\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377b\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\321\377\377\377\376\377\377\377l\377\377\377\377"
+  "\377\377\377\377\377\377\377\13\377\377\377\356\377\377\377\372\377\377\377"
+  ")\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377"
+  "\377\377\377\377\205\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\333\377\377\377\377"
+  "\377\377\377\377\377\377\377\354\377\377\377\300\377\377\377\\\0\0\0\0\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\313\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377"
+  "\377i\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333\0\0\0"
+  "\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\355"
+  "\377\377\377\375\377\377\377M\377\377\377\13\377\377\377\355\377\377\377"
+  "\375\377\377\377=\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377U\377"
+  "\377\377\374\377\377\377\333\377\377\377\217\377\377\377\373\377\377\377"
+  "\361\377\377\377\312\377\377\377\241\377\377\377\377\377\377\377\215\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\253\377"
+  "\377\377\377\377\377\377\377\377\377\377\315\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\335\377\377\377"
+  "\376\377\377\377i\0\0\0\0\377\377\377\342\377\377\377\375\377\377\377Q\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\315\377\377\377\377\377\377\377\342\377\377\377\13\0\0\0\0\0\0\0"
+  "\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377V\377\377\377\375\377"
+  "\377\377\377\377\377\377\377\377\377\377\252\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377c\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377l\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\360\377\377"
+  "\377\33\377\377\377\205\377\377\377\365\377\377\377\377\377\377\377\364\377"
+  "\377\377\\\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\377\377\377\0\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "|\377\377\377\206\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\307"
+  "\377\377\377\377\377\377\377\377\377\377\377\370\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\244\0\0\0\0\377\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\377\377\377\205"
+  "\377\377\377\376\377\377\377\336\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\377\377\377\302\377\377\377\377\377\377\377\242\377\377"
+  "\377\374\377\377\377\264\377\377\377\33\377\377\377\371\377\377\377\316\377"
+  "\377\377\377\377\377\377\377\377\377\377b\377\377\377\376\377\377\377\326"
+  "\377\377\377\25\377\377\377\362\377\377\377\377\377\377\377\304\377\377\377"
+  "\372\377\377\377\360\377\377\377\33\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\317"
+  "\377\377\377\376\377\377\377_\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377"
+  "\377\361\377\377\377\334\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\377\377\377`\377\377\377\374\377\377\377\343\377"
+  "\377\377\313\377\377\377\377\377\377\377\215\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\306\377"
+  "\377\377\371\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377s\377\377\377\377\377\377\377\304\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\320\377"
+  "\377\377\375\377\377\377=\0\0\0\0\0\0\0\0\377\377\377\25\377\377\377\362"
+  "\377\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377i\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377l\377\377\377\373\377\377\377\376\377\377\377\214\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\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\377\377\377\204\377\377\377\377\377\377\377\333\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\377\377\377\224\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377m\377\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\377\377\377\33\377"
+  "\377\377\366\377\377\377\367\377\377\377)\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377\317\377\377\377\376\377\377\377e\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\330\377\377\377\371\377\377\377)\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\365\377\377\377"
+  "\363\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\377\377\377\13\377\377\377\351\377\377\377\375\377\377\377=\0\0\0\0\0\0"
+  "\0\0\377\377\377}\377\377\377\374\377\377\377\366\377\377\377%\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377U\377\377\377p\377"
+  "\377\377M\377\377\377!\377\377\377\373\377\377\377\333\0\0\0\0\377\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\377\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\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\234\377"
+  "\377\377\374\377\377\377\377\377\377\377\320\377\377\377%\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\320\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\337\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\271\377\377\377\377\377\377\377\377\377\377"
+  "\377\267\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\251\377\377\377V\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377K\377\377"
+  "\377\374\377\377\377\245\377\377\377|\377\377\377\377\377\377\377y\0\0\0"
+  "\0\377\377\377\247\377\377\377\376\377\377\377l\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\240\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\373\377\377\377\377\377\377\377\304\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377"
+  "\377\377\377\377\244\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377"
+  "\376\377\377\377l\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\334"
+  "\377\377\377\377\377\377\377\205\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\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377"
+  "\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377"
+  "\377\377\376\377\377\377i\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377K\377\377\377\374\377\377\377\327\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\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377"
+  "\377\355\377\377\377\366\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\377\377\377\25\377\377\377\362\377"
+  "\377\377\375\377\377\377=\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377"
+  "\377\371\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "\313\377\377\377\376\377\377\377b\0\0\0\0\0\0\0\0\377\377\377\13\377\377"
+  "\377\355\377\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377"
+  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\224\377\377\377\377\377"
+  "\377\377\257\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "\224\377\377\377\377\377\377\377\331\0\0\0\0\377\377\377j\377\377\377\376"
+  "\377\377\377\366\377\377\377)\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377\313\377\377\377\371\377\377\377\33\377\377\377\351\377\377\377"
+  "\371\377\377\377!\377\377\377\360\377\377\377\333\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377i\377"
+  "\377\377\33\377\377\377\365\377\377\377\365\377\377\377\361\377\377\377\333"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377K\377\377\377\374\377"
+  "\377\377\364\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\340\377\377"
+  "\377\376\377\377\377l\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "\224\377\377\377\377\377\377\377\257\0\0\0\0\377\377\377\13\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377I\377\377\377"
+  "\373\377\377\377\363\377\377\377%\0\0\0\0\0\0\0\0\377\377\377\13\377\377"
+  "\377\345\377\377\377\376\377\377\377i\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\224\377\377\377\377\377\377\377\243\0\0\0\0\377\377\377"
+  "\330\377\377\377\377\377\377\377\257\0\0\0\0\0\0\0\0\377\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\377\377\377"
+  "l\377\377\377\373\377\377\377\375\377\377\377M\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366"
+  "\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\313\377\377\377\376\377\377\377b\0\0\0\0\0\0\0\0\377\377"
+  "\377\13\377\377\377\361\377\377\377\355\377\377\377\33\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\377\377\377!\377\377\377\372\377\377\377\337"
+  "\377\377\377\257\377\377\377\376\377\377\377l\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\324\377\377\377\370\377\377\377"
+  "\360\377\377\377\323\377\377\377\255\377\377\377\375\377\377\377\333\377"
+  "\377\377\371\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\377\377\377l\377\377\377\376\377\377\377\337\377\377\377\326\377\377\377"
+  "\377\377\377\377\234\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\356\377\377\377\372\377\377"
+  "\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\377\377\377\232\377\377\377\377\377\377\377\346\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\224\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\232\377\377\377\377\377\377\377\244\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\13\377\377\377\364\377\377\377\254\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377"
+  "\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\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\215\377\377\377\376\377\377\377\376\377\377\377\313\377"
+  "\377\377\224\377\377\377\202\377\377\377\374\377\377\377\332\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\376\377"
+  "\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\324\377\377\377\376\377\377"
+  "\377i\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\314\377\377\377"
+  "\376\377\377\377b\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\377"
+  "\377\377\377\377\377\377\377\377\377\13\377\377\377\355\377\377\377\374\377"
+  "\377\377)\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\352\377"
+  "\377\377\377\377\377\377\321\377\377\377\321\377\377\377\316\377\377\377"
+  "\322\377\377\377\316\377\377\377\315\377\377\377G\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377"
+  "\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\13\377\377\377\361\377\377\377\377\377\377\377\362\377\377"
+  "\377\366\377\377\377\377\377\377\377\326\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377i\0\0"
+  "\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\13\377\377\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\13\377\377\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\374\377\377\377"
+  "\377\377\377\377\370\377\377\377\366\377\377\377\376\377\377\377\214\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\361\377\377"
+  "\377\333\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377%\377\377\377"
+  "\223\377\377\377\377\377\377\377\252\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\224\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377"
+  "\377\13\377\377\377\355\377\377\377\366\377\377\377%\377\377\377\377\377"
+  "\377\377\377\377\377\377\13\377\377\377\355\377\377\377\374\377\377\377)"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\317\377\377\377\376\377\377\377l\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\376\377"
+  "\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\324\377\377\377\376\377\377"
+  "\377i\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\355\377"
+  "\377\377\374\377\377\377)\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377"
+  "\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377"
+  "\377\377\313\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377u\377\377\377\302\377\377\377\357\377\377\377\377\377\377\377\377\377"
+  "\377\377\276\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\313\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377"
+  "\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377;\377\377\377\374\377\377"
+  "\377\333\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377"
+  "\377\240\377\377\377\377\377\377\377\266\377\377\377s\377\377\377\377\377"
+  "\377\377\315\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377"
+  "\25\377\377\377\361\377\377\377\361\377\377\377\320\377\377\377\344\377\377"
+  "\377\303\377\377\377\356\377\377\377\316\377\377\377\375\377\377\377M\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\275\377"
+  "\377\377\377\377\377\377\377\377\377\377\314\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377v\377\377\377\377"
+  "\377\377\377\321\377\377\377M\377\377\377\375\377\377\377\327\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\307\377\377\377\377\377\377\377\346\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377b\377\377\377"
+  "\237\377\377\377\374\377\377\377\336\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377"
+  "\377\376\377\377\377\263\377\377\377f\377\377\377\13\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\371\371\377.\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377B\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\377\377\377\25\377\377\377\304\377\377\377\322\377\377\377S\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\214\377\377\377\374\377"
+  "\377\377\33\377\377\377\222\377\377\377\374\377\377\377%\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\247\377\377\377\377"
+  "\377\377\377\302\377\377\377\\\377\377\3772\377\377\377\264\377\377\377\377"
+  "\377\377\377\326\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377\315\377\377\377\377\377\377\377\257\377\377\377;\377\377\377\375\377"
+  "\377\377b\377\377\377\13\377\377\377\360\377\377\377\337\377\377\377\377"
+  "\377\377\377\377\377\377\377\204\377\377\377\377\377\377\377\322\0\0\0\0"
+  "\377\377\377\33\377\377\377\356\377\377\377\377\377\377\377\377\377\377\377"
+  "\217\0\0\0\0\377\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\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\247\377\377\377\377\377"
+  "\377\377\210\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377V\377\377\377\374\377\377"
+  "\377\326\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\377\377\377\317\377\377\377\374\377\377\3778\377\377\377\13\377"
+  "\377\377\351\377\377\377\366\377\377\377\33\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\324\377\377\377\374"
+  "\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\3775\377\377\377\347\377\377\377\367\377\377"
+  "\377\232\0\0\0\0\0\0\0\0\0\0\0\0\377\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"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377_\377"
+  "\377\377\355\377\377\377\367\377\377\377}\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377"
+  "\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\261\377\377\377\377\377\377\377\257\0\0"
+  "\0\0\0\0\0\0\377\377\377\204\377\377\377\377\377\377\377\322\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\213\377\377\377\376\377\377\377U\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\375\377\377"
+  "\377\373\377\377\377s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\214\377\377\377}\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377j\377\377\377\376\377\377\377\333\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377~\377\377\377\202\377\377\377\202\377\377"
+  "\377\201\377\377\377\231\377\377\377\377\377\377\377\343\377\377\377z\377"
+  "\377\377\33\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\205\377\377"
+  "\377j\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\376\377\377\377\343"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\255\377\377"
+  "\377\377\377\377\377\264\0\0\0\0\0\0\0\0\377\377\377\25\377\377\377\356\377"
+  "\377\377\372\377\377\377)\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\327\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\356"
+  "\377\377\377\375\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\355\377"
+  "\377\377\367\377\377\377)\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\377\377\3775\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\377\377"
+  "\377\377\257\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377_\377\377\377\355\377\377\377\367\377\377\377}\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\3775\377\377\377\347\377\377\377\367\377\377\377\232\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\3772\377\377\377\327\377\377\377\377\377\377\377\375\377\377\377"
+  "z\0\0\0\0\377\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\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\3775\377\377\377\362\377\377\377\377\377\377\377"
+  "\346\377\377\377V\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377S\377\377\377\320\377\377\377"
+  "\305\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\377\377\377K\377\377\377\374\377\377\377\252\377\377\377K\377\377\377\374"
+  "\377\377\377\376\377\377\377\363\377\377\377\377\377\377\377\377\377\377"
+  "\377l\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\335\377\377\377"
+  "\376\377\377\377l\0\0\0\0\0\0\0\0\377\377\377;\377\377\377\373\377\377\377"
+  "\363\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224"
+  "\377\377\377\377\377\377\377\243\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
+  "\343\377\377\377\376\377\377\377l\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377\232\377\377\377\377\377\377\377\356\377\377\377)\0\0\0\0\0\0"
+  "\0\0\377\377\3775\377\377\377\260\377\377\377\13\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377U\0\0\0\0\0\0"
+  "\0\0\377\377\377\276\377\377\377\377\377\377\377\346\377\377\377\13\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\374\377\377\377"
+  "\326\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\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377"
+  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\312\377\377\377\377\377\377\377\321\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377%\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377i\0\0"
+  "\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\355\377\377\377\366\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377j\377\377\377\330\377\377\377%\0"
+  "\0\0\0\0\0\0\0\377\377\377\312\377\377\377\377\377\377\377\206\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377"
+  "\377\377\244\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\377\377\377\377"
+  "\277\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377"
+  "\377\355\377\377\377\366\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377"
+  "\371\377\377\377%\377\377\377]\377\377\377f\377\377\377\13\377\377\377\361"
+  "\377\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377\313\377\377\377\376\377\377\377i\0\0\0\0\377\377\377\232\377\377\377"
+  "\377\377\377\377\377\377\377\377\327\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\334\377\377\377\377\377\377\377\252\0\0\0\0\0\0"
+  "\0\0\377\377\377}\377\377\377\376\377\377\377\363\377\377\377%\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377"
+  "\252\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\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\332\377\377\377\377\377\377\377\251\0\0"
+  "\0\0\0\0\0\0\377\377\377\214\377\377\377\377\377\377\377\355\377\377\377"
+  "\13\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377"
+  "\377\377\377\252\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\375\377"
+  "\377\377Q\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\205"
+  "\377\377\377\304\377\377\377\13\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
+  "\362\377\377\377\375\377\377\377Q\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377"
+  "%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377\312\377\377\377\377\377\377\377\264\0\0\0\0\0\0\0\0\377\377\377}\377"
+  "\377\377\376\377\377\377\332\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\330\377\377\377\376\377\377\377\372\377"
+  "\377\377\360\377\377\377\33\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377\305\377\377\377\377\377\377\377\377\377\377\377\237"
+  "\377\377\377l\377\377\377\376\377\377\377\377\377\377\377\336\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\351\377\377"
+  "\377\376\377\377\377l\377\377\377K\377\377\377\374\377\377\377\372\377\377"
+  "\3772\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\13\377\377\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377;\377\377\377"
+  "\373\377\377\377\372\377\377\377=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224"
+  "\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377!\377\377"
+  "\377\372\377\377\377\347\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\364\377"
+  "\377\377\254\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377"
+  "\377\377\376\377\377\377b\0\0\0\0\0\0\0\0\377\377\377b\377\377\377\375\377"
+  "\377\377\332\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "\224\377\377\377\377\377\377\377~\0\0\0\0\0\0\0\0\377\377\377U\377\377\377"
+  "\374\377\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377\266\377\377\377\377\377\377\377\326\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\13\377\377\377e\0\0\0\0\377\377\377\377\377\377\377\377\377"
+  "\377\377\13\377\377\377\355\377\377\377\376\377\377\377v\0\0\0\0\0\0\0\0"
+  "\377\377\377s\377\377\377\376\377\377\377\332\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\317\377\377\377\377\377\377\377\251\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\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377j\377\377\377\375\377\377\377\326\377\377\377\302\377\377\377"
+  "\304\377\377\377\206\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0"
+  "\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377"
+  "\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355"
+  "\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\361\377\377\377=\377"
+  "\377\377V\377\377\377\374\377\377\377\375\377\377\377M\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\361"
+  "\377\377\377\355\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\377\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\377\377\377"
+  "\313\377\377\377\371\377\377\377%\377\377\377\223\377\377\377\377\377\377"
+  "\377\252\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377"
+  "\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377"
+  "\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\377\377\377\13"
+  "\377\377\377\355\377\377\377\376\377\377\377\215\0\0\0\0\0\0\0\0\377\377"
+  "\377V\377\377\377\374\377\377\377\367\377\377\377)\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377~\0\0\0\0\0\0"
+  "\0\0\377\377\377K\377\377\377\374\377\377\377\366\377\377\377)\377\377\377"
+  "\377\377\377\377\377\377\377\377\13\377\377\377\355\377\377\377\376\377\377"
+  "\377v\0\0\0\0\0\0\0\0\377\377\377s\377\377\377\375\377\377\377\332\0\0\0"
+  "\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\313\377\377"
+  "\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\3772\377\377\377n\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\377\377`\377\377\377\373\377\377\377\366\377\377\377)\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\317\377\377"
+  "\377\376\377\377\377v\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\314\377\377\377\376\377\377\377b\0\0\0\0"
+  "\0\0\0\0\377\377\377\254\377\377\377\377\377\377\377\332\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\366\377"
+  "\377\377\361\377\377\377\331\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\320\377\377\377\377"
+  "\377\377\377\377\377\377\377\273\377\377\377\205\377\377\377\377\377\377"
+  "\377\376\377\377\377\355\377\377\377\33\377\377\377\377\377\377\377\377\0"
+  "\0\0\0\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\336\377\377\377"
+  "\330\377\377\377\377\377\377\377\256\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\342\377\377\377\375\377"
+  "\377\377\326\377\377\377\376\377\377\377~\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\275\377\377\377\377\377\377"
+  "\377\345\377\377\377\13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\323\377\377\377"
+  "\360\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377"
+  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377\33\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\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\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\1\377\377\377\0\377"
+  "\377\377\0\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\206\377\377\377\377\377\377"
+  "\377\377\377\377\377\260\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377"
+  "\377\313\377\377\377\360\377\377\377\13\377\377\377\316\377\377\377\352\377"
+  "\377\377\13\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377\205\377\377\377\365\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\356\377\377\3778\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\377\377\377\224\377\377\377\377\377\377\377\311\0\0\0\0\377"
+  "\377\377K\377\377\377\374\377\377\377\316\377\377\377y\377\377\377\374\377"
+  "\377\377\273\377\377\377\377\377\377\377\377\377\377\377!\377\377\377\371"
+  "\377\377\377\377\377\377\377\315\377\377\377\242\377\377\377\360\377\377"
+  "\377\377\377\377\377\377\377\377\377\370\377\377\377\237\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377`\377\377\377\375\377\377\377\327\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\266\377\377\377\377\377\377\377\217\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\371\371\377.\377\377"
+  "\377M\0\0\0\0\0\0\0\0\371\371\377.\377\377\377M\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377|\377\377"
+  "\377s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\232\377\377\377\377\377\377\377\377\377"
+  "\377\377\343\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\232\377\377\377\377\377\377\377\377\377\377\377\326\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377!\377\377"
+  "\377\371\377\377\377\352\377\377\377\13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\3778\377\377\377\372\377\377"
+  "\377\377\377\377\377\275\377\377\377\253\377\377\377\374\377\377\377\376"
+  "\377\377\377s\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "r\377\377\377\314\377\377\377\304\377\377\377\332\377\377\377\377\377\377"
+  "\377\321\377\377\377\307\377\377\377\271\377\377\377\13\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\263\377\377\377\377\377\377\377\377\377"
+  "\377\377\350\377\377\377\307\377\377\377\322\377\377\377\321\377\377\377"
+  "\310\377\377\377\33\377\377\377\377\377\377\377\377\377\377\3778\377\377"
+  "\377\373\377\377\377\377\377\377\377\325\377\377\377\242\377\377\377\275"
+  "\377\377\377\371\377\377\377\377\377\377\377\272\0\0\0\0\377\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\377\377\377K\377"
+  "\377\377\374\377\377\377\333\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\377\377\3778\377\377\377\373\377\377\377\377\377\377\377\321\377\377"
+  "\377\250\377\377\377\307\377\377\377\375\377\377\377\377\377\377\377\234"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\33\377\377\377"
+  "\362\377\377\377\377\377\377\377\313\377\377\377\214\377\377\377\345\377"
+  "\377\377\377\377\377\377\322\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\376\377\377\377\326\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377\302\377\377\377\377\377\377\377\346\377\377\377\226\377\377\377\201"
+  "\377\377\377\320\377\377\377\377\377\377\377\347\377\377\377\13\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\266\377\377\377\377\377\377\377"
+  "\307\377\377\377\250\377\377\377\335\377\377\377\377\377\377\377\356\377"
+  "\377\377\33\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\377\377\232\377\377\377\377\377\377\377\377\377\377\377\326\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\377\377\232\377\377\377\377\377\377\377\377\377\377\377\343\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\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\377\377\377\207\377\377\377\374\377\377\377\266"
+  "\0\0\0\0\377\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\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\377V\377\377\377\375\377\377\377\247\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\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\306\377\377\377\377\377\377\377\376\377"
+  "\377\377l\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377"
+  "\377\13\377\377\377\355\377\377\377\352\0\0\0\0\377\377\377s\377\377\377"
+  "\314\377\377\377\315\377\377\377v\377\377\377\245\377\377\377%\377\377\377"
+  "\377\377\377\377\377\377\377\377K\377\377\377\373\377\377\377\360\377\377"
+  "\377\33\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\335\377\377\377\376\377\377\377"
+  "~\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377"
+  "\377\377\377\335\377\377\377\275\377\377\377\310\377\377\377\366\377\377"
+  "\377\377\377\377\377\346\377\377\377\33\377\377\377\377\377\377\377\377\0"
+  "\0\0\0\377\377\377\13\377\377\377\342\377\377\377\377\377\377\377\370\377"
+  "\377\377\300\377\377\377\276\377\377\377\371\377\377\377\377\377\377\377"
+  "\227\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\312\377\377\377"
+  "\377\377\377\377\325\377\377\377\303\377\377\377\361\377\377\377\377\377"
+  "\377\377\375\377\377\377f\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377K\377\377\377\374\377\377\377\362\377\377\377\316\377\377\377"
+  "\316\377\377\377\316\377\377\377\322\377\377\377\273\377\377\377\13\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\356\377\377\377"
+  "\366\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\3778\377\377\377\371\377\377\377\377\377"
+  "\377\377\352\377\377\377\271\377\377\377\321\377\377\377\375\377\377\377"
+  "\372\377\377\377)\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313"
+  "\377\377\377\376\377\377\377l\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
+  "\355\377\377\377\366\377\377\377)\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377u\377\377\377\325\377\377\377\316\377\377\377\371\377\377\377"
+  "\373\377\377\377\320\377\377\377\322\377\377\377\207\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\302\377\377\377\377\377\377\377"
+  "\365\377\377\377\266\377\377\377\324\377\377\377\377\377\377\377\375\377"
+  "\377\377=\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224"
+  "\377\377\377\377\377\377\377\252\0\0\0\0\0\0\0\0\377\377\3778\377\377\377"
+  "\372\377\377\377\376\377\377\377i\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377\13\377\377\377\356\377\377\377\376\377\377\377\320\377\377\377"
+  "\316\377\377\377\316\377\377\377\316\377\377\377\322\377\377\377V\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\371\377\377"
+  "\377%\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\361\377\377\377\333\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377"
+  "\376\377\377\377l\0\0\0\0\377\377\377\13\377\377\377\352\377\377\377\377"
+  "\377\377\377\332\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377j\377\377\377\375\377\377\377\377\377\377\377\321\377\377\377\302\377"
+  "\377\377\375\377\377\377\377\377\377\377\234\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\252\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\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377j\377\377\377\375\377\377\377\377\377\377\377\320"
+  "\377\377\377\307\377\377\377\375\377\377\377\377\377\377\377\216\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377"
+  "\377\377\377\252\0\0\0\0\0\0\0\0\377\377\377\266\377\377\377\377\377\377"
+  "\377\336\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377"
+  "\351\377\377\377\377\377\377\377\370\377\377\377\306\377\377\377\264\377"
+  "\377\377\351\377\377\377\377\377\377\377\343\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\356\377\377"
+  "\377\366\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377b\377\377\377\375\377\377\377\377\377\377\377\325"
+  "\377\377\377\307\377\377\377\374\377\377\377\377\377\377\377\227\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\232"
+  "\377\377\377\377\377\377\377\377\377\377\377\304\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377"
+  "\377\377\377\375\377\377\377_\377\377\377\33\377\377\377\365\377\377\377"
+  "\377\377\377\377\322\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377"
+  "\377\377\253\377\377\377\377\377\377\377\322\0\0\0\0\0\0\0\0\377\377\377"
+  "\275\377\377\377\377\377\377\377\315\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\356\377\377\377\366"
+  "\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\334\377\377\377\377\377\377\377\372\377\377\377\310\377"
+  "\377\377\316\377\377\377\316\377\377\377\321\377\377\377\310\377\377\377"
+  "%\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224"
+  "\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377"
+  "\317\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\364\377"
+  "\377\377\254\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\307\377"
+  "\377\377\377\377\377\377\336\377\377\377\233\377\377\377\305\377\377\377"
+  "\376\377\377\377\377\377\377\377\332\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\376\377\377\377"
+  "\307\377\377\377\255\377\377\377\370\377\377\377\377\377\377\377\272\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377!\377\377\377\366"
+  "\377\377\377\377\377\377\377\346\377\377\377\271\377\377\377\270\377\377"
+  "\377\365\377\377\377\375\377\377\377M\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\255\377\377\377\377\377\377\377\373\377\377\377\257\377"
+  "\377\377\302\377\377\377\376\377\377\377\377\377\377\377\332\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377`\377\377\377\374\377\377"
+  "\377\377\377\377\377\332\377\377\377\233\377\377\377\260\377\377\377\367"
+  "\377\377\377\316\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377U\377\377\377\374\377\377\377\333\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\215\377"
+  "\377\377\377\377\377\377\342\377\377\377\242\377\377\377\237\377\377\377"
+  "\246\377\377\377\247\377\377\377X\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\377"
+  "\377\377\13\377\377\377\356\377\377\377\366\377\377\377)\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
+  "\356\377\377\377\366\377\377\377)\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377"
+  "\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377K\377\377\377\375\377\377\377\245\0\0\0\0\0\0\0\0\377"
+  "\377\377\233\377\377\377\377\377\377\377\356\377\377\377%\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377"
+  "\377\377\376\377\377\377\302\377\377\377\262\377\377\377\322\377\377\377"
+  "\33\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\361\377\377"
+  "\377\333\0\0\0\0\377\377\377\320\377\377\377\371\377\377\377%\377\377\377"
+  "\223\377\377\377\377\377\377\377\252\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\224\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377"
+  "\377\13\377\377\377\356\377\377\377\366\377\377\377)\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377\214\377\377\377\377\377\377\377\376\377"
+  "\377\377\274\377\377\377\255\377\377\377\370\377\377\377\377\377\377\377"
+  "\265\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377"
+  "\377\377\377\377\377\377\376\377\377\377\307\377\377\377\255\377\377\377"
+  "\370\377\377\377\377\377\377\377\272\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\255\377\377\377\377\377\377\377\373\377\377\377"
+  "\257\377\377\377\302\377\377\377\376\377\377\377\377\377\377\377\332\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\313\377"
+  "\377\377\376\377\377\377l\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377\341\377\377\377\377\377\377"
+  "\377\335\377\377\377\233\377\377\377\213\377\377\377\306\377\377\377\377"
+  "\377\377\377\352\377\377\377\13\377\377\377\377\377\377\377\377\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377\377\377\241\377\377\377\377\377\377\377\365\377\377\377"
+  "\245\377\377\377\255\377\377\377\325\377\377\3772\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\377\275\377\377\377\377\377\377\377\361\377\377"
+  "\377\252\377\377\377\331\377\377\377\377\377\377\377\377\377\377\377\332"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\266\377\377\377\377\377\377\377\377\377\377\377\336\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\240\377\377"
+  "\377\377\377\377\377\377\377\377\377\207\377\377\377K\377\377\377\374\377"
+  "\377\377\377\377\377\377\315\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377U\377\377\377\374\377\377\377\372\377\377\3778\377\377\377"
+  "!\377\377\377\366\377\377\377\376\377\377\377\177\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\377\377"
+  "\377\377\377\377\377\377\352\377\377\377\13\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\267\377\377\377\377\377\377\377\377"
+  "\377\377\377\311\377\377\377\302\377\377\377\304\377\377\377\304\377\377"
+  "\377\271\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\377\377\13\377\377\377\361\377\377\377\327\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377b\377\377\377\374\377\377\377\377\377\377\377\225\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\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\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\316\377\377\377\333\0\0\0\0"
+  "\377\377\377\316\377\377\377\334\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377w\377\377\377\343\377"
+  "\377\377\375\377\377\377\201\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\377\377\377\13\377\377\377\244\377\377\377\13\0\0\0\0\0\0\0"
+  "\0\377\377\377\302\377\377\377\377\377\377\377\377\377\377\377\364\377\377"
+  "\377Z\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377~\377\377\377\370"
+  "\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377\275\377\377"
+  "\377\266\377\377\377\376\377\377\377\323\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\335\377\377\377\376\377\377\377~\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377K\377\377"
+  "\377\373\377\377\377\363\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377I\377\377"
+  "\377\357\377\377\377\377\377\377\377\364\377\377\377)\0\0\0\0\0\0\0\0\377"
+  "\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\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\376\377\377\377\377\377\377"
+  "\377\244\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\377\377\377\232\377\377\377\377\377\377\377\251\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\377\377\377l\377\377\377\367\377\377\377\377\377\377\377\377\377\377\377"
+  "\376\377\377\377\223\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\232\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\372\377\377\377"
+  ")\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\355\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\360\377\377\377\33\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377j\377\377\377\350\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\376\377\377\377\302\0\0\0\0\0\0\0\0\377\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\377\377"
+  "\377;\377\377\377\372\377\377\377\316\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377u\377\377\377\351\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\373\377\377\377\254\0\0\0\0\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377S\377\377\377"
+  "\354\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\325\377"
+  "\377\377\33\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\377\377\214\377\377\377\377\377\377\377\244\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377"
+  "\377\315\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\342\377\377\3772\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\177\377\377\377\365\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\342\377\377\3772\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\376\377"
+  "\377\377\377\377\377\377\244\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377I\377\377\377\357\377\377"
+  "\377\377\377\377\377\364\377\377\377)\0\0\0\0\0\0\0\0\377\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\377"
+  "\377\377\13\377\377\377M\0\0\0\0\377\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"
+  "\377\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\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\232\377\377\377\377\377\377\377\375"
+  "\377\377\377\\\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0"
+  "\0\0\0\377\377\377\255\377\377\377\377\377\377\377\234\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\377\377\377\377\377\377\377\377\377\377"
+  "\224\377\377\377\377\377\377\377\276\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\240\377\377\377\377\377\377\377\266\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\377\377\377\215\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\370\377\377\377\312\377\377\377%\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
+  "\316\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\376\377"
+  "\377\377\255\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "\305\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\373\377"
+  "\377\377\330\377\377\377V\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\372\377\377\377"
+  ")\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\351"
+  "\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377I\377\377\377\345"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\370\377\377"
+  "\377\241\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313"
+  "\377\377\377\375\377\377\377\\\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377"
+  "\355\377\377\377\355\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0"
+  "\0\377\377\377\224\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\336\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\316\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\373\377\377\377\213\0\0"
+  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377"
+  "\377\377\377\377\377\377\252\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\247\377"
+  "\377\377\377\377\377\377\326\377\377\377\377\377\377\377\377\0\0\0\0\377"
+  "\377\377\13\377\377\377\351\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377_\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\366\377\377\377"
+  "%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\344\377\377\377\333\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377\307\377\377\377\375\377\377"
+  "\377Q\0\0\0\0\0\0\0\0\377\377\377\204\377\377\377\377\377\377\377\327\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\206\377"
+  "\377\377\371\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377"
+  "\240\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "\215\377\377\377\377\377\377\377\244\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\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377"
+  "\206\377\377\377\370\377\377\377\377\377\377\377\377\377\377\377\376\377"
+  "\377\377\241\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377"
+  "\377\377\214\377\377\377\377\377\377\377\252\0\0\0\0\0\0\0\0\377\377\377"
+  "\33\377\377\377\356\377\377\377\376\377\377\377v\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\377\25\377\377\377\316\377\377\377\376\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\335\377\377\377)\0\0\0\0"
+  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377"
+  "\377\377\351\377\377\377\364\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\233\377\377\377\375"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\276\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377;\377\377\377\372\377\377\377\376\377\377\377|\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377u\377\377\377\375\377"
+  "\377\377\355\377\377\377\33\0\0\0\0\377\377\377\320\377\377\377\377\377\377"
+  "\377\244\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\33\377\377\377"
+  "\366\377\377\377\372\377\377\377=\0\0\0\0\0\0\0\0\377\377\377\33\377\377"
+  "\377\362\377\377\377\376\377\377\377_\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\351\377\377\377\364\377\377"
+  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377"
+  "\13\377\377\377\356\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377l\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377"
+  "\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377}\377"
+  "\377\377\377\377\377\377\277\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\364\377\377"
+  "\377\254\0\0\0\0\0\0\0\0\0\0\0\0\377\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"
+  "\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377\377\3775\377\377\377"
+  "\347\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\303\377"
+  "\377\377\362\377\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\377\377\377\224\377\377\377\377\377\377\377\345\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\307\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377I\377\377\377\345\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\373\377\377\377\260"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\310"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\326\377\377"
+  "\377\367\377\377\377\315\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\377\377\377l\377\377\377\356\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\370\377\377\377\231\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377;\377\377\377\373\377\377"
+  "\377\322\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377I\377\377\377\373\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\216\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377"
+  "\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\351\377\377"
+  "\377\355\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377\377\377\13\377\377\377\351\377\377\377\355\377\377\377"
+  "\33\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377)\0"
+  "\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377"
+  "\377\374\377\377\377\252\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\307\377\377"
+  "\377\377\377\377\377\304\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\223\377\377\377\375\377\377\377\377\377\377"
+  "\377\377\377\377\377\372\377\377\377M\377\377\377\377\377\377\377\377\377"
+  "\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\377\377\377\275\377\377"
+  "\377\371\377\377\377%\377\377\377\223\377\377\377\377\377\377\377\252\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\376\377"
+  "\377\377i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\351\377\377\377\355"
+  "\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377"
+  "\240\377\377\377\374\377\377\377\377\377\377\377\377\377\377\377\376\377"
+  "\377\377\275\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377"
+  "\377\377\224\377\377\377\377\377\377\377\352\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\307\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\377\377\377\310\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\337\377\377\377\377\377\377\377\332\0\0"
+  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\307\377"
+  "\377\377\375\377\377\377_\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377c\377\377\377\330\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\354\377"
+  "\377\377Z\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\13\377\377\377\333\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\375\377\377\377_\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377\33\377\377\377\350\377\377\377\377\377\377\377\377\377\377\377"
+  "\376\377\377\377\255\377\377\377\362\377\377\377\323\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377;\377\377\377\372"
+  "\377\377\377\376\377\377\377\206\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377b\377\377\377\374\377\377\377\372\377"
+  "\377\377I\377\377\377\13\377\377\377\355\377\377\377\377\377\377\377\243"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\345\377"
+  "\377\377\376\377\377\377\214\0\0\0\0\0\0\0\0\377\377\377j\377\377\377\374"
+  "\377\377\377\363\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\335\377\377\377\377\377\377\377\236\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377"
+  "\377\355\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\372\377\377\377)\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\360"
+  "\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371"
+  "\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377"
+  "%\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\0\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377E\377\377\377S\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\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\377\377\377Q\377\377\377n\377\377\377\13\0\0\0\0\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377b\377\377"
+  "\377e\377\377\377\33\0\0\0\0\0\0\0\0\371\371\377.\377\377\3775\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377V\377\377\377\374\377\377\377\364\377\377"
+  "\3772\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377"
+  "\377\377\13\377\377\377\343\377\377\377\377\377\377\377\215\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\371\377\377\377\334\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377\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\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377E\377\377\377X\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0"
+  "\0\0\0\377\377\377\341\377\377\377\375\377\377\377=\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\377\377\377e\377\377\377l\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377E\377\377\377X\377\377\377S\377\377\377\13\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\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\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377@\377\377\377e\377\377\377c\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\377\377\377S\377\377\377K\377\377\377I\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\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\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377)\377\377\377e\377\377\377n\377\377\377"
+  "8\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377_\377\377\377p\377\377\377I\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377E\377\377\377X\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\371"
+  "\377\377\377\334\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377`\377\377\377I\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377\33\377\377\377\362\377\377\377"
+  "\376\377\377\377\255\377\377\3775\377\377\377V\377\377\377\322\377\377\377"
+  "\255\0\0\0\0\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377)\377\377\377X\377\377\377V\377\377\377\13\0\0\0"
+  "\0\0\0\0\0\377\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\377\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\377\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\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377E\377\377\377"
+  "m\377\377\377c\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\371\371\377.\377\377\377m\377\377\377c\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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"
+  "\377\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\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377b\377\377\377c\377\377\377\13"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\320"
+  "\377\377\377\377\377\377\377\333\377\377\377\33\377\377\377E\377\377\377"
+  "\13\377\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\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377e\377\377\377e\377\377"
+  "\3778\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "e\377\377\377n\377\377\3775\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377U\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\25\377\377\377\361\377\377\377\366\377\377"
+  "\377%\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\377\377\13\377\377\377\364\377\377\377\254\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\377\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\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\377\377\377\216\377\377\377\233\377\377\377\232\377\377\377\232"
+  "\377\377\377\232\377\377\377\232\377\377\377\232\377\377\377\237\377\377"
+  "\377=\377\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\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377U\377\377\377n\377\377\3775\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\377\377E\377\377\377n\377\377\3778\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377@\377\377\377m\377\377\377c\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377@\377\377\377p\377"
+  "\377\377I\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377Q\377\377\377p\377\377\377X\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\377\377\377\324\377\377\377\376\377\377\377"
+  "|\377\377\377S\377\377\377V\377\377\377K\377\377\377\263\377\377\377\377"
+  "\377\377\377\252\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377\25\377\377\377\362\377\377\377\360\377\377\377"
+  "\33\0\0\0\0\0\0\0\0\377\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\377\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\377\377\377)\377"
+  "\377\377p\377\377\377c\0\0\0\0\0\0\0\0\377\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\377\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\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377b\377\377\377f\377\377\377"
+  "\13\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377\224\377\377\377\376\377\377\377U\377\377\377@\377\377\377e\377\377\377"
+  "8\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377@\377\377\377p\377\377\377I\377\377\377;\377\377\377"
+  "\374\377\377\377\333\0\0\0\0\377\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\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377"
+  "\377e\377\377\377e\377\377\377I\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377O\377\377"
+  "\377X\377\377\377U\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\377\377j\377\377\377n\377\377\377\33\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377"
+  "\362\377\377\377\367\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\13\377\377\377\361\377\377\377\356\377\377\377%\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\377\377\335\377\377\377\372\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\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\377\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\377\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\377\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\377\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\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\267\377\377\377"
+  "\345\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\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\377\377\377\237\377\377\377\377\377\377\377\361\377\377"
+  "\3772\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377"
+  "\331\377\377\377\377\377\377\377\304\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\3772\377\377\377\337\377\377\377\377\377\377\377\236\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377b\377"
+  "\377\377\376\377\377\377\330\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\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\377\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\377\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\377\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\377\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\377\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\377\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\377"
+  "\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\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\3772\377\377\377\337\377\377\377\377\377\377\377\236\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\377\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\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0"
+  "\377\377\3775\377\377\377\344\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\270\0\0\0\0\377\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\377\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\377\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\377\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\377\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\377\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\377"
+  "\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377"
+  "\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\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\3775\377\377\377\362\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\210\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\232\377\377\377\377\377\377"
+  "\377\370\377\377\377\364\377\377\377\372\377\377\377\243\0\0\0\0\377\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"
+  "\377\377\377\266\377\377\377\377\377\377\377\225\0\0\0\0\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\205\377\377\377\371\377\377\377\364"
+  "\377\377\377\364\377\377\377\377\377\377\377\260\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\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\377\377\377\377\377\377\377\377"
+  "\377\377\377\13\377\377\377\370\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\377m\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\345\377\377\377"
+  "\375\377\377\377f\0\0\0\0\0\0\0\0\377\377\3772\377\377\377\326\377\377\377"
+  "\377\377\377\377\245\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377"
+  "\377\377\234\377\377\377\205\377\377\377I\377\377\377\272\377\377\377\377"
+  "\377\377\377\326\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377\224\377\377\377\376\377\377\377i\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\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\377\377\377K\377\377\377\374\377\377\377\333\0\0\0\0"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\377\377\377i\377\377\377\203\377\377\377"
+  "\337\377\377\377\377\377\377\377\260\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\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\377\377\377\377\377\377\377\377\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\275\377\377\377\377\377\377\377"
+  "\377\377\377\377\373\377\377\377\243\0\0\0\0\377\377\377\377\377\377\377"
+  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377"
+  "\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377\177\377\377\377\372\377\377\377\376\377\377\377\377\377\377"
+  "\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\377\377\253\377\377"
+  "\377\340\377\377\377%\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\377\377\377\310\377\377\377\307\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\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377"
+  "\377\377\13\377\377\377\351\377\377\377\377\377\377\377\276\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377\377"
+  "\377u\377\377\377\325\377\377\377w\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\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377"
+  "\377\13\377\377\377\351\377\377\377\377\377\377\377\276\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\377\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\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377`\377\377\377\213\377\377\377\203\377\377"
+  "\3778\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377"
+  "\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377"
+  "\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\377\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\377\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\377\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\377\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\377\377\377\13\377\377\377\251\377\377\377\322\377\377\377\316"
+  "\377\377\377m\377\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\377\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\377\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\377\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\377\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\377"
+  "\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\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377"
+  "\377\377`\377\377\377\263\377\377\377\263\377\377\377\263\377\377\377\266"
+  "\377\377\377u\0\0\0\0\377\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\377\377\377G\377\377\377\317\377\377\377w\0"
+  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377i\377\377\377\266"
+  "\377\377\377\263\377\377\377\263\377\377\377\262\377\377\377_\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\377\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\377\377\377\377\377"
+  "\377\377\377\0\0\0\0\377\377\377`\377\377\377y\377\377\377y\377\377\377y"
+  "\377\377\377y\377\377\377y\377\377\377y\377\377\377x\377\377\377\33\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\377\377\377"
+  "\377\377\377\377\0\0\0\0\377\377\377\237\377\377\377\377\377\377\377\377"
+  "\377\377\377\370\377\377\377\370\377\377\377\377\377\377\377\377\377\377"
+  "\377\325\377\377\377\33\377\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\377\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\377\377\377\377\377\377\377\377\377\377\377"
+  ";\377\377\377\374\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
+  "\377\376\377\377\377z\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0\377"
+  "\377\377\233\377\377\377\377\377\377\377l\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\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\377\377\377V\377\377\377\376\377\377\377\327\0\0"
+  "\0\0\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377"
+  "\377\377\377\377\377\377\377\377\377\377\13\377\377\377\361\377\377\377\377"
+  "\377\377\377\377\377\377\377\325\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\377\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\377\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\377\377\377v\377\377\377\246\377"
+  "\377\377\266\377\377\377u\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\372\377\377\377)\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377"
+  "i\377\377\377\266\377\377\377\255\377\377\377\214\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\377\377\377s\377\377\377|\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\377"
+  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377s\377\377\377"
+  "|\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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"
+  "\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\0\0\0\0\377\377\377_\377\377\377\266\377\377\377\321\377\377\377\316\377"
+  "\377\377\271\377\377\377q\0\0\0\0\0\0\0\0\377\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\377\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\377\377\377\377\377\377"
+  "\377\377\0\0\0\0\377\377\377`\377\377\377\245\377\377\377\267\377\377\377"
+  "\247\377\377\377=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\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\377\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\377\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\377\377\377\377\377\377\377\377\0\0\0\0"
+  "\377\377\377E\377\377\377\212\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\377\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\377\377\377\13\377\377\377\211\377\377\377=\0"
+  "\0\0\0\377\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\377\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\377\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\377\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\377\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\377\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\377\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\377"
+  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377v\377\377\377\232\377\377"
+  "\377q\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\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\377\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\377\377\377"
+  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377"
+  "\377\377\363\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\377\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\377\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\377\377\377\377"
+  "\377\377\377\377",
+};
+
diff --git a/minilibx/font.xcf b/minilibx/font.xcf
new file mode 100644
index 0000000..b9c8c82
Binary files /dev/null and b/minilibx/font.xcf differ
diff --git a/minilibx/mlx.h b/minilibx/mlx.h
new file mode 100644
index 0000000..e75b4af
--- /dev/null
+++ b/minilibx/mlx.h
@@ -0,0 +1,149 @@
+/*
+** mlx.h for MinilibX in 
+** 
+** Made by Charlie Root
+** Login   <ol@staff.42.fr>
+** 
+** Started on  Mon Jul 31 16:37:50 2000 Charlie Root
+** Last update Tue Oct 01 16:23:28 2014 Olivier Crouzet
+*/
+
+/*
+**   MinilibX -  Please report bugs
+*/
+
+
+/*
+** FR msg - FR msg - FR msg
+**
+** MacOSX
+** La MinilibX utilise 2 frameworks Mac : OpenGL et AppKit
+**    qu'il faut ajouter a la compilation :
+**   -framework OpenGL -framework AppKit
+**
+** UNIX / Linux
+** La MinilibX utilise 2 librairies supplementaires qu'il
+**      est necessaire de rajouter a la compilation :
+**   -lmlx -lXext -lX11
+**
+** La MinilibX permet le chargement des images de type Xpm.
+** Notez que cette implementation est incomplete.
+**
+** Il y a des differences entre X11 et MacOS.
+** les numeros des touches ne sont pas les memes,
+** les numeros des boutons souris ne sont pas les memes.
+** Egalement l'expose est gere differemment, et sous MacOS
+** il est preferable d'entrer le plus tot possible dans mlx_loop,
+** il est normal que les fenetres n'apparaissent pas avant mlx_loop
+** (ou bien forcez avec mlx_do_sync mais c'est pas genial).
+** Sous MacOS, l'octet Alpha est pris en compte dans toutes les
+** images, et represente la transparence et non l'opacite comme
+** c'est normalement le cas.
+*/
+
+
+#ifndef MLX_H
+
+#define	MLX_H
+
+
+void	*mlx_init();
+/*
+**  needed before everything else.
+**  return (void *)0 if failed
+*/
+
+
+/*
+** Basic actions
+*/
+
+void	*mlx_new_window(void *mlx_ptr, int size_x, int size_y, char *title);
+/*
+**  return void *0 if failed
+*/
+int	mlx_clear_window(void *mlx_ptr, void *win_ptr);
+int	mlx_pixel_put(void *mlx_ptr, void *win_ptr, int x, int y, int color);
+/*
+**  origin for x & y is top left corner of the window
+**  y down is positive
+**  color is 0x00RRGGBB
+*/
+
+
+/*
+** Image stuff
+*/
+
+void	*mlx_new_image(void *mlx_ptr,int width,int height);
+/*
+**  return void *0 if failed
+*/
+char	*mlx_get_data_addr(void *img_ptr, int *bits_per_pixel,
+			   int *size_line, int *endian);
+/*
+**  endian : 0 = sever X is little endian, 1 = big endian
+**  endian : useless on macos, client and graphical framework have the same endian
+*/
+int	mlx_put_image_to_window(void *mlx_ptr, void *win_ptr, void *img_ptr,
+				int x, int y);
+unsigned int	mlx_get_color_value(void *mlx_ptr, int color);
+
+
+/*
+** dealing with Events
+*/
+
+int	mlx_mouse_hook (void *win_ptr, int (*funct_ptr)(), void *param);
+int	mlx_key_hook (void *win_ptr, int (*funct_ptr)(), void *param);
+int	mlx_expose_hook (void *win_ptr, int (*funct_ptr)(), void *param);
+
+int	mlx_loop_hook (void *mlx_ptr, int (*funct_ptr)(), void *param);
+int	mlx_loop (void *mlx_ptr);
+
+
+/*
+**  hook funct are called as follow :
+**
+**   expose_hook(void *param);
+**   key_hook(int keycode, void *param);
+**   mouse_hook(int button, int x,int y, void *param);
+**   loop_hook(void *param);
+**
+*/
+
+
+/*
+**  Usually asked...
+*/
+
+int	mlx_string_put(void *mlx_ptr, void *win_ptr, int x, int y, int color,
+		       char *string);
+void	*mlx_xpm_to_image(void *mlx_ptr, char **xpm_data,
+			  int *width, int *height);
+void	*mlx_xpm_file_to_image(void *mlx_ptr, char *filename,
+			       int *width, int *height);
+void    *mlx_png_file_to_image(void *mlx_ptr, char *file, int *width, int *height);
+
+int	mlx_destroy_window(void *mlx_ptr, void *win_ptr);
+
+int	mlx_destroy_image(void *mlx_ptr, void *img_ptr);
+
+/*
+**  generic hook system for all events, and minilibX functions that
+**    can be hooked. Some macro and defines from X11/X.h are needed here.
+*/
+
+int	mlx_hook(void *win_ptr, int x_event, int x_mask,
+                 int (*funct)(), void *param);
+
+int     mlx_mouse_hide();
+int     mlx_mouse_show();
+int     mlx_mouse_move(void *win_ptr, int x, int y);
+int     mlx_mouse_get_pos(void *win_ptr, int *x, int *y);
+
+int	mlx_do_key_autorepeatoff(void *mlx_ptr);
+int	mlx_do_key_autorepeaton(void *mlx_ptr);
+int	mlx_do_sync(void *mlx_ptr);
+
+#endif /* MLX_H */
diff --git a/minilibx/mlx_init_loop.m b/minilibx/mlx_init_loop.m
new file mode 100644
index 0000000..0377771
--- /dev/null
+++ b/minilibx/mlx_init_loop.m
@@ -0,0 +1,192 @@
+//  mlx_init_loop.m
+// By Ol
+
+#import <Cocoa/Cocoa.h>
+#import <OpenGL/gl3.h>
+#import <AppKit/NSOpenGLView.h>
+
+#include "mlx_int.h"
+#include "mlx_new_window.h"
+
+#include "font.c"
+
+
+void	do_loop_hook2(CFRunLoopTimerRef observer, void * info)
+{
+  ((mlx_ptr_t *)info)->loop_hook(((mlx_ptr_t *)info)->loop_hook_data);
+}
+
+
+void do_loop_flush(CFRunLoopObserverRef observer, CFRunLoopActivity activity, void * info)
+{
+  mlx_ptr_t	*mlx_ptr;
+  mlx_win_list_t *win;
+
+  mlx_ptr = (mlx_ptr_t *)info;
+  win = mlx_ptr->win_list;
+  while (win)
+    {
+      if (win->nb_flush > 0 && win->pixmgt)
+	{
+	  [(id)win->winid selectGLContext];
+	  [(id)win->winid mlx_gl_draw];
+	  glFlush();
+	  win->nb_flush = 0;
+	}
+      win = win->next;
+    }
+}
+
+
+
+
+void *mlx_init()
+{
+  mlx_ptr_t	*new_mlx;
+  int		bidon;
+  int		i;
+
+  if ((new_mlx = malloc(sizeof(*new_mlx))) == NULL)
+    return ((void *)0);
+  new_mlx->win_list = NULL;
+  new_mlx->img_list = NULL;
+  new_mlx->loop_hook = NULL;
+  new_mlx->loop_hook_data = NULL;
+  new_mlx->main_loop_active = 0;
+
+  new_mlx->appid = [NSApplication sharedApplication];
+
+  // super magic trick to detach app from terminal, get menubar & key input events
+  for (NSRunningApplication * app in [NSRunningApplication runningApplicationsWithBundleIdentifier:@"com.apple.finder"])
+    {
+      [app activateWithOptions:NSApplicationActivateIgnoringOtherApps];
+      break;
+    }
+  usleep(100000);
+  ProcessSerialNumber psn = { 0, kCurrentProcess };
+  (void) TransformProcessType(&psn, kProcessTransformToForegroundApplication);
+  usleep(100000);
+  [[NSRunningApplication currentApplication] activateWithOptions:NSApplicationActivateIgnoringOtherApps];
+
+  // load font
+  new_mlx->font = mlx_new_image(new_mlx, (FONT_WIDTH+2)*95, FONT_HEIGHT);
+  i = 0;
+  while (i < 4*(FONT_WIDTH+2)*95*FONT_HEIGHT)
+    {
+      new_mlx->font->buffer[i+0] = font_atlas.pixel_data[i+2];
+      new_mlx->font->buffer[i+1] = font_atlas.pixel_data[i+1];
+      new_mlx->font->buffer[i+2] = font_atlas.pixel_data[i+0];
+      ((unsigned char *)new_mlx->font->buffer)[i+3] = 0xFF-font_atlas.pixel_data[i+3];
+      i += 4;
+    }
+
+
+#ifdef	STRINGPUTX11
+  new_mlx->font->vertexes[2] = FONT_WIDTH/1.4;
+  new_mlx->font->vertexes[4] = FONT_WIDTH/1.4;
+  new_mlx->font->vertexes[5] = (-FONT_HEIGHT-1)/1.4;
+  new_mlx->font->vertexes[7] = (-FONT_HEIGHT-1)/1.4;
+#else
+  new_mlx->font->vertexes[2] = FONT_WIDTH;
+  new_mlx->font->vertexes[4] = FONT_WIDTH;
+  new_mlx->font->vertexes[5] = -FONT_HEIGHT-1;
+  new_mlx->font->vertexes[7] = -FONT_HEIGHT-1;
+#endif
+
+  return ((void *)new_mlx);
+}
+
+
+void mlx_loop(mlx_ptr_t *mlx_ptr)
+{
+  CFRunLoopObserverRef observer;
+  CFRunLoopObserverContext ocontext = {.version = 0, .info = mlx_ptr, .retain = NULL, .release = NULL, .copyDescription = NULL};
+
+  mlx_ptr->main_loop_active = 1;
+
+  observer = CFRunLoopObserverCreate(NULL, kCFRunLoopBeforeTimers, true, 0, do_loop_flush, &ocontext);
+  CFRunLoopAddObserver(CFRunLoopGetMain(), observer, kCFRunLoopCommonModes);
+
+  //  [[[MlxLoopHookObj alloc] initWithPtr:mlx_ptr] performSelector:@selector(do_loop_hook) withObject:nil afterDelay:0.0];
+
+  [NSApp run];
+}
+
+
+void mlx_pixel_put(mlx_ptr_t *mlx_ptr, mlx_win_list_t *win_ptr, int x, int y, int color)
+{
+  if (!win_ptr->pixmgt)
+    return ;
+  [(id)(win_ptr->winid) selectGLContext];
+  [(id)(win_ptr->winid) pixelPutColor:color X:x Y:y];
+  win_ptr->nb_flush ++;
+}
+
+
+void	mlx_int_loop_once()
+{
+  NSEvent *event;
+  NSDate  *thedate;
+
+  thedate = [NSDate dateWithTimeIntervalSinceNow:0.1];
+  while (42)
+    {
+      event = [NSApp nextEventMatchingMask:NSEventMaskAny
+		     untilDate:thedate
+		     inMode:NSDefaultRunLoopMode
+		     dequeue:YES];
+      if (event == nil)
+	{
+	  [thedate release];
+	  return ;
+	}
+      [NSApp sendEvent:event];
+      [NSApp updateWindows];
+    }
+}
+
+
+int     mlx_do_sync(mlx_ptr_t *mlx_ptr)
+{
+  mlx_win_list_t *win;
+
+  win = mlx_ptr->win_list;
+  while (win)
+    {
+      if (win->pixmgt)
+	{
+	  [(id)(win->winid) selectGLContext];
+	  [(id)(win->winid) mlx_gl_draw];
+	  glFlush();
+	  if (!mlx_ptr->main_loop_active)
+	    mlx_int_loop_once();
+	}
+      win = win->next;
+    }
+  return (0);
+}
+
+
+int mlx_loop_hook(mlx_ptr_t *mlx_ptr, void (*fct)(void *), void *param)
+{
+  CFRunLoopTimerContext	tcontext = {0, mlx_ptr, NULL, NULL, NULL};
+  CFRunLoopTimerRef	timer;
+
+  if (mlx_ptr->loop_hook != NULL)
+    {
+      CFRunLoopTimerInvalidate(mlx_ptr->loop_timer);
+      [(id)(mlx_ptr->loop_timer) release];
+    }
+
+  mlx_ptr->loop_hook = fct;
+  mlx_ptr->loop_hook_data = param;
+
+  if (fct)
+    {
+      timer = CFRunLoopTimerCreate(kCFAllocatorDefault, 0.0, 0.0001, 0, 0, &do_loop_hook2, &tcontext);
+      mlx_ptr->loop_timer = timer;
+      CFRunLoopAddTimer(CFRunLoopGetMain(), timer, kCFRunLoopCommonModes);
+    }
+
+  return (0);
+}
diff --git a/minilibx/mlx_int.h b/minilibx/mlx_int.h
new file mode 100644
index 0000000..a93c1c9
--- /dev/null
+++ b/minilibx/mlx_int.h
@@ -0,0 +1,102 @@
+//
+// mlx_int.h for minilibx
+//
+// ol@staff.42.fr
+//
+// include opengl needed before mlx_int.h
+//
+
+
+#define	MAX_EVENT	32
+#define MAX_PIXEL_NB	200000
+#define UNIQ_BPP	4
+
+#define FONT_WIDTH	10
+#define	FONT_HEIGHT	20
+
+
+typedef int (*func_t)();
+
+/* structs */
+
+typedef struct	glsl_info_s
+{
+  GLuint	pixel_vshader;
+  GLuint	pixel_fshader;
+  GLuint	pixel_program;
+  GLint		loc_pixel_position;
+  GLint		loc_pixel_texture;
+  GLint		loc_pixel_winhalfsize;
+
+  GLuint	image_vshader;
+  GLuint	image_fshader;
+  GLuint	image_program;
+  GLint		loc_image_position;
+  GLint		loc_image_winhalfsize;
+  GLint		loc_image_texture;
+  GLint		loc_image_pos;
+  GLint		loc_image_size;
+
+  GLuint	font_vshader;
+  GLuint	font_fshader;
+  GLuint	font_program;
+  GLint		loc_font_position;
+  GLint		loc_font_winhalfsize;
+  GLint		loc_font_texture;
+  GLint		loc_font_color;
+  GLint		loc_font_posinwin;
+  GLint		loc_font_posinatlas;
+  GLint		loc_font_atlassize;
+} glsl_info_t;
+
+
+typedef struct	mlx_img_list_s
+{
+  int			width;
+  int			height;
+  char			*buffer;
+  GLfloat		vertexes[8];
+  struct mlx_img_list_s	*next;
+} mlx_img_list_t;
+
+
+typedef struct	mlx_img_ctx_s
+{
+  GLuint		texture;
+  GLuint		vbuffer;
+  mlx_img_list_t	*img;
+  struct mlx_img_ctx_s	*next;
+} mlx_img_ctx_t;
+
+typedef struct	mlx_win_list_s
+{
+  void			*winid;
+  mlx_img_ctx_t		*img_list;
+  int			nb_flush;
+  int			pixmgt;
+  struct mlx_win_list_s	*next;
+} mlx_win_list_t;
+
+
+typedef struct		mlx_ptr_s
+{
+  void			*appid;
+  mlx_win_list_t	*win_list;
+  mlx_img_list_t	*img_list;
+  void			(*loop_hook)(void *);
+  void			*loop_hook_data;
+  void			*loop_timer;
+  mlx_img_list_t	*font;
+  int			main_loop_active;
+} mlx_ptr_t;
+
+// proto
+
+int	mlx_shaders(glsl_info_t *glsl);
+char    **mlx_int_str_to_wordtab(char *str);
+int     mlx_int_str_str(char *str,char *find,int len);
+int     mlx_int_str_str_cote(char *str,char *find,int len);
+int	mlx_destroy_image(mlx_ptr_t *mlx_ptr, mlx_img_list_t *img_ptr);
+void	*mlx_new_image();
+void    *mlx_xpm_to_image(mlx_ptr_t *xvar,char **xpm_data,int *width,int *height);
+int	mlx_do_sync(mlx_ptr_t *mlx_ptr);
diff --git a/minilibx/mlx_int_str_to_wordtab.c b/minilibx/mlx_int_str_to_wordtab.c
new file mode 100644
index 0000000..3b2ef2e
--- /dev/null
+++ b/minilibx/mlx_int_str_to_wordtab.c
@@ -0,0 +1,107 @@
+//
+// str 2 wordtab & co
+// by ol
+
+
+#include <stdlib.h>
+#include <string.h>
+
+int	mlx_int_str_str(char *str,char *find,int len)
+{
+  int	len_f;
+  int	pos;
+  char	*s;
+  char	*f;
+
+  len_f = strlen(find);
+  if (len_f>len)
+    return (-1);
+  pos = 0;
+  while (*(str+len_f-1))
+    {
+      s = str;
+      f = find;
+      while (*(f++) == *(s++))
+        if (!*f)
+          return (pos);
+      str ++;
+      pos ++;
+    }
+  return (-1);
+}
+
+
+
+int	mlx_int_str_str_cote(char *str,char *find,int len)
+{
+  int	len_f;
+  int	pos;
+  char	*s;
+  char	*f;
+  int	cote;
+
+  len_f = strlen(find);
+  if (len_f>len)
+    return (-1);
+  cote = 0;
+  pos = 0;
+  while (*(str+len_f-1))
+    {
+      if (*str=='"')
+	cote = 1-cote;
+      if (!cote)
+	{
+	  s = str;
+	  f = find;
+	  while (*(f++) == *(s++))
+	    if (!*f)
+	      return (pos);
+	}
+      str ++;
+      pos ++;
+    }
+  return (-1);
+}
+
+
+char	**mlx_int_str_to_wordtab(char *str)
+{
+  char	**tab;
+  int	pos;
+  int	nb_word;
+  int	len;
+
+  len = strlen(str);
+  nb_word = 0;
+  pos = 0;
+  while (pos<len)
+  {
+    while (*(str+pos)==' ' || *(str+pos)=='\t')
+      pos ++;
+    if (*(str+pos))
+      nb_word ++;
+    while (*(str+pos) && *(str+pos)!=' ' && *(str+pos)!='\t')
+      pos ++;
+  }
+  if (!(tab = malloc((1+nb_word)*sizeof(*tab))))
+    return ((char **)0);
+  nb_word = 0;
+  pos = 0;
+  while (pos<len)
+    {
+      while (*(str+pos)==' ' || *(str+pos)=='\t')
+	{
+	  *(str+pos) = 0;
+	  pos ++;
+	}
+      if (*(str+pos))
+	{
+	  tab[nb_word] = str+pos;
+	  nb_word ++;
+	}
+      while (*(str+pos) && *(str+pos)!=' ' && *(str+pos)!='\t')
+	pos ++;
+    }
+  tab[nb_word] = 0;
+  return (tab);
+}
diff --git a/minilibx/mlx_mouse.m b/minilibx/mlx_mouse.m
new file mode 100644
index 0000000..94ce0a9
--- /dev/null
+++ b/minilibx/mlx_mouse.m
@@ -0,0 +1,52 @@
+#include	<stdio.h>
+
+#import <Cocoa/Cocoa.h>
+#import <OpenGL/gl3.h>
+
+#include	"mlx_int.h"
+#include	"mlx_new_window.h"
+
+int	mlx_mouse_hide()
+{
+  //  CGDisplayHideCursor(kCGDirectMainDisplay);
+  [NSCursor hide];
+  return (0);
+}
+
+int	mlx_mouse_show()
+{
+  //  CGDisplayShowCursor(kCGDirectMainDisplay);
+  [NSCursor unhide];
+  return (0);
+}
+
+int	mlx_mouse_move(mlx_win_list_t *win, int x, int y)
+{
+  CGPoint	point;
+  NSRect	pos;
+  id	thewin;
+
+  thewin = [(id)(win->winid) win];
+  pos = [thewin frame];
+  //  printf("got win pos %f %f\n", pos.origin.x, pos.origin.y);
+  point.x = pos.origin.x + x;
+  point.y = NSHeight([[thewin screen] frame]) - NSHeight([(id)(win->winid) frame]) - pos.origin.y + 1 + y;
+  CGWarpMouseCursorPosition(point);
+  CGAssociateMouseAndMouseCursorPosition(true);
+  return (0);
+}
+
+
+int	mlx_mouse_get_pos(mlx_win_list_t *win, int *x, int *y)
+{
+  CGPoint	point;
+  id		thewin;
+  NSRect	pos;
+
+  thewin = [(id)(win->winid) win];
+  pos = [(id)(win->winid) frame];
+  point = [thewin mouseLocationOutsideOfEventStream];
+  *x = point.x;
+  *y = NSHeight(pos) - 1 - point.y;
+  return (0);
+}
diff --git a/minilibx/mlx_new_image.m b/minilibx/mlx_new_image.m
new file mode 100644
index 0000000..46e1df1
--- /dev/null
+++ b/minilibx/mlx_new_image.m
@@ -0,0 +1,198 @@
+// mlx_new_image
+//
+// by Ol
+//
+
+
+#import <Cocoa/Cocoa.h>
+#import <OpenGL/gl3.h>
+
+#include "mlx_int.h"
+#include "mlx_new_window.h"
+
+
+
+void    *mlx_new_image(mlx_ptr_t *mlx_ptr, int width, int height)
+{
+  mlx_img_list_t        *newimg;
+
+  //  if (mlx_ptr->win_list == NULL)
+  //    return (NULL);  // need at leat one window created to have openGL context and create texture
+  if ((newimg = malloc(sizeof(*newimg))) == NULL)
+    return ((void *)0);
+  newimg->next = mlx_ptr->img_list;
+  mlx_ptr->img_list = newimg;
+  newimg->width = width;
+  newimg->height = height;
+  newimg->vertexes[0] = 0.0;  newimg->vertexes[1] = 0.0;
+  newimg->vertexes[2] = width;  newimg->vertexes[3] = 0.0;
+  newimg->vertexes[4] = width;  newimg->vertexes[5] = -height;
+  newimg->vertexes[6] = 0.0;  newimg->vertexes[7] = -height;
+  newimg->buffer = malloc(UNIQ_BPP*width*height);
+  bzero(newimg->buffer, UNIQ_BPP*width*height);
+
+  return (newimg);
+}
+
+mlx_img_ctx_t	*add_img_to_ctx(mlx_img_list_t *img, mlx_win_list_t *win)
+{
+  mlx_img_ctx_t	*imgctx;
+
+  imgctx = win->img_list;
+  while (imgctx)
+    {
+      if (imgctx->img == img)
+	return (imgctx);
+      imgctx = imgctx->next;
+    }
+
+  imgctx = malloc(sizeof(*imgctx));
+  imgctx->img = img;
+  imgctx->next = win->img_list;
+  win->img_list = imgctx;
+
+  glGenTextures(1, &(imgctx->texture));
+  glBindTexture(GL_TEXTURE_2D, imgctx->texture);
+  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,     GL_CLAMP_TO_EDGE);
+  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,     GL_CLAMP_TO_EDGE);
+  glTexImage2D(
+	       GL_TEXTURE_2D, 0,           /* target, level of detail */
+	       GL_RGBA8,                    /* internal format */
+	       img->width, img->height, 0,           /* width, height, border */
+	       GL_BGRA, GL_UNSIGNED_BYTE,   /* external format, type */
+	       img->buffer               /* pixels */
+	       );
+
+  glGenBuffers(1, &(imgctx->vbuffer));
+  glBindBuffer(GL_ARRAY_BUFFER, imgctx->vbuffer);
+  glBufferData(GL_ARRAY_BUFFER, sizeof(img->vertexes), img->vertexes, GL_DYNAMIC_DRAW); // 4 points buff
+
+  return (imgctx);
+}
+
+
+void    mlx_put_image_to_window(mlx_ptr_t *mlx_ptr, mlx_win_list_t *win_ptr, mlx_img_list_t *img_ptr, int x, int y)
+{
+  mlx_img_ctx_t	*imgctx;
+
+  if (!win_ptr->pixmgt)
+    return ;
+
+  [(id)(win_ptr->winid) selectGLContext];
+  imgctx = add_img_to_ctx(img_ptr, win_ptr);
+
+  // update texture
+  glBindTexture(GL_TEXTURE_2D, imgctx->texture);
+  glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, img_ptr->width, img_ptr->height, 0,
+	       GL_BGRA, GL_UNSIGNED_BYTE, img_ptr->buffer);
+
+  [(id)(win_ptr->winid) mlx_gl_draw_img:img_ptr andCtx:imgctx andX:x andY:y];
+
+  win_ptr->nb_flush ++;
+}
+
+// assume here 32bpp little endian
+
+char    *mlx_get_data_addr(mlx_img_list_t *img_ptr, int *bits_per_pixel, int *size_line, int *endian)
+{
+  *bits_per_pixel = UNIQ_BPP*8;
+  *size_line = img_ptr->width*UNIQ_BPP;
+  *endian = 0; // little endian for now on mac-intel
+  return (img_ptr->buffer);
+}
+
+unsigned int    mlx_get_color_value(mlx_ptr_t *mlx_ptr, int color)
+{
+  return (color);
+}
+
+int mlx_string_put(mlx_ptr_t *mlx_ptr, mlx_win_list_t *win_ptr, int x, int y, int color, unsigned char *string)
+{
+  mlx_img_ctx_t	*imgctx;
+  int		gX;
+  int		gY;
+
+  if (!win_ptr->pixmgt)
+    return(0);
+
+#ifdef STRINGPUTX11
+  y -= (FONT_HEIGHT * 2)/3;
+#endif
+
+  [(id)(win_ptr->winid) selectGLContext];
+
+  imgctx = add_img_to_ctx(mlx_ptr->font, win_ptr);
+
+  while (*string)
+    {
+      if (*string >= 32 && *string <= 127)
+	{
+	  gX = (FONT_WIDTH+2)*(*string-32);
+	  gY = 0;
+	  //      printf("put char %c pos %d %d\n", *string, gX, gY);
+	  [(id)(win_ptr->winid) mlx_gl_draw_font:mlx_ptr->font andCtx:imgctx andX:x andY:y andColor:color glyphX:gX glyphY:gY];
+#ifdef STRINGPUTX11
+	  x += FONT_WIDTH/1.4;
+#else
+	  x += FONT_WIDTH;
+#endif
+	}
+      string ++;
+    }
+
+  win_ptr->nb_flush ++;
+  
+  return (0);
+}
+
+int     mlx_destroy_image(mlx_ptr_t *mlx_ptr, mlx_img_list_t *img_todel)
+{
+  mlx_img_ctx_t	ctx_first;
+  mlx_img_ctx_t	*ctx;
+  mlx_img_ctx_t	*ctx_to_del;
+  mlx_img_list_t img_first;
+  mlx_img_list_t *img;
+  mlx_win_list_t *win;
+
+  img_first.next = mlx_ptr->img_list;
+  img = &img_first;
+  while (img && img->next)
+    {
+      if (img->next == img_todel)
+	img->next = img->next->next;
+      img = img->next;
+    }
+  mlx_ptr->img_list = img_first.next;
+
+
+  win = mlx_ptr->win_list;
+  while (win)
+    {
+      ctx_first.next = win->img_list;
+      ctx = &ctx_first;
+      while (ctx && ctx->next)
+	{
+	  if (ctx->next->img == img_todel)
+	    {
+	      [(id)(win->winid) selectGLContext];
+	      glDeleteBuffers(1, &(ctx->next->vbuffer));
+	      glDeleteTextures(1, &(ctx->next->texture));
+	      ctx_to_del = ctx->next;
+	      ctx->next = ctx->next->next;
+	      free(ctx_to_del);
+	    }
+	  ctx = ctx->next;
+	}
+      win->img_list = ctx_first.next;
+      win = win->next;
+    }
+
+
+  free(img_todel->buffer);
+  free(img_todel);
+
+  //  printf("destroy image done.\n");
+  return (0);
+}
diff --git a/minilibx/mlx_new_window.h b/minilibx/mlx_new_window.h
new file mode 100644
index 0000000..d173e61
--- /dev/null
+++ b/minilibx/mlx_new_window.h
@@ -0,0 +1,57 @@
+//
+// mlx_int.h for minilibx
+//
+// ol@staff.42.fr
+//
+// include opengl needed before mlx_int.h
+//
+
+#import <Cocoa/Cocoa.h>
+#import "mlx_int.h"
+
+@interface NSWindowEvent : NSWindow
+{
+  func_t	event_funct[MAX_EVENT];
+  void		*(event_param[MAX_EVENT]);
+  int		keyrepeat;
+  int		keyflag;
+  int		size_x;
+  int		size_y;
+}
+- (NSWindowEvent *) initWithContentRect:(NSRect)rect styleMask:(NSUInteger)winstyle backing:(NSBackingStoreType)bck defer:(BOOL) dfr;
+- (void) setEvent:(int)event andFunc:(func_t)func andParam:(void *)param;
+- (void) setKeyRepeat:(int)mode;
+- (void) exposeNotification:(NSNotification *)note;
+- (void) closeNotification:(NSNotification *)note;
+@end
+
+
+@interface MlxWin : NSOpenGLView
+{
+  NSWindowEvent		*win;
+  NSOpenGLContext	*ctx;
+  glsl_info_t		glsl;
+  int			openglwin;
+
+  int			size_x;
+  int			size_y;
+
+  int			pixel_nb;
+  GLuint		pixel_vbuffer;
+  GLuint		pixel_texture;
+  unsigned int		*pixtexbuff;
+}
+
+- (id) initWithRect: (NSRect)rect andTitle: (NSString *)title pfaAttrs: (NSOpenGLPixelFormatAttribute *)attrs;
+- (void) selectGLContext;
+- (void) flushGLContext;
+- (void) pixelPutColor: (int)color X:(int)x Y:(int)y;
+- (void) mlx_gl_draw;
+- (void) mlx_gl_draw_img:(mlx_img_list_t *)img andCtx:(mlx_img_ctx_t *)imgctx andX:(int)x andY:(int)y;
+- (void) mlx_gl_draw_font:(mlx_img_list_t *)img andCtx:(mlx_img_ctx_t *)imgctx andX:(int)x andY:(int)y andColor:(int)color glyphX:(int)gx glyphY:(int)gy;
+- (NSOpenGLContext *) ctx;
+- (NSWindowEvent *) win;
+- (void) setEvent:(int)event andFunc:(func_t)func andParam:(void *)param;
+- (void) setKeyRepeat:(int)mode;
+- (void) ctxNeedsUpdate;
+@end
diff --git a/minilibx/mlx_new_window.m b/minilibx/mlx_new_window.m
new file mode 100644
index 0000000..6d4fea4
--- /dev/null
+++ b/minilibx/mlx_new_window.m
@@ -0,0 +1,766 @@
+//  mlx_new_window.m
+
+#import <Cocoa/Cocoa.h>
+#import <OpenGL/gl3.h>
+#import <AppKit/NSOpenGLView.h>
+
+#include <stdio.h>
+#include <math.h>
+
+#include "mlx_int.h"
+#include "mlx_new_window.h"
+
+
+NSOpenGLPixelFormatAttribute pfa_attrs[] =
+  {
+    NSOpenGLPFADepthSize, 32,
+    NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersionLegacy,
+    0
+  };
+
+static const GLfloat pixel_vertexes[8] =
+  {
+    -1.0 , -1.0,
+    1.0, -1.0,
+    1.0, 1.0,
+    -1.0, 1.0
+  };
+
+
+
+int get_mouse_button(NSEventType eventtype)
+{
+  switch (eventtype) {
+  case NSEventTypeLeftMouseDown:
+  case NSEventTypeLeftMouseUp:
+  case NSEventTypeLeftMouseDragged:
+    return 1;
+  case NSEventTypeRightMouseDown:
+  case NSEventTypeRightMouseUp:
+  case NSEventTypeRightMouseDragged:
+    return 2;
+  case NSEventTypeOtherMouseDown:
+  case NSEventTypeOtherMouseUp:
+  case NSEventTypeOtherMouseDragged:
+    return 3;
+  default:
+    return 0;
+  }
+}
+
+
+// classes for window & events
+
+
+
+
+@implementation NSWindowEvent
+
+- (NSWindowEvent *) initWithContentRect:(NSRect)rect styleMask:(NSUInteger)winstyle backing:(NSBackingStoreType)bck defer:(BOOL) dfr
+{
+  int i;
+
+  if ((self = [super initWithContentRect:rect
+		     styleMask:winstyle
+		     backing:bck
+		     defer:dfr]))
+    {
+      i = MAX_EVENT;
+      while (i--)
+	{
+	  event_funct[i] = NULL;
+	  event_param[i] = NULL;
+	}
+      keyrepeat = 0;
+      keyflag = 0;
+      size_x = rect.size.width;
+      size_y = rect.size.height;
+    }
+  return (self);
+}
+
+
+- (void) setEvent:(int)event andFunc:(func_t)func andParam:(void *)param
+{
+  event_funct[event] = func;
+  event_param[event] = param;
+  if (event == 6 || event == 32) // motion notify && high precision motion notify
+    {
+      if (func == NULL)
+	[self setAcceptsMouseMovedEvents:NO];
+      else
+	[self setAcceptsMouseMovedEvents:YES];
+    }
+}
+
+
+- (void) setKeyRepeat:(int)mode
+{
+  keyrepeat = mode;
+}
+
+- (BOOL) acceptsFirstResponder
+{
+  return (YES);
+}
+
+- (void) flagsChanged:(NSEvent *)theEvent
+{
+  unsigned int flag;
+  int the_key;
+  unsigned int val;
+
+  flag = [theEvent modifierFlags];
+  //  printf("Key flag changed: %x => %x\n", keyflag, flag);
+  //  printf("**mlx flag low part : %d  - %x\n", flag&0xFFFF, flag&0xFFFF);
+
+  if (!(val = (keyflag|flag)&(~(keyflag&flag))))
+    return ;   // no change - can happen when loosing focus on special key pressed, then re-pressed later
+  the_key = 1;
+  while (((val >> (the_key-1)) & 0x01)==0)
+    the_key ++;
+  if (flag > keyflag && event_funct[2] != NULL)
+    event_funct[2](0xFF+the_key, event_param[2]);
+  if (flag < keyflag && event_funct[3] != NULL)
+    event_funct[3](0xFF+the_key, event_param[3]);
+  /*
+  if (event_funct[2] != NULL)
+    {
+      if (!(keyflag & NSAlphaShiftKeyMask) && (flag&NSAlphaShiftKeyMask)) event_funct[2](0xFF+1, event_param[2]);
+      if (!(keyflag & NSShiftKeyMask) && (flag&NSShiftKeyMask)) event_funct[2](0xFF+2, event_param[2]);
+      if (!(keyflag & NSControlKeyMask) && (flag&NSControlKeyMask)) event_funct[2](0xFF+3, event_param[2]);
+      if (!(keyflag & NSAlternateKeyMask) && (flag&NSAlternateKeyMask)) event_funct[2](0xFF+4, event_param[2]);
+      if (!(keyflag & NSCommandKeyMask) && (flag&NSCommandKeyMask)) event_funct[2](0xFF+5, event_param[2]);
+      if (!(keyflag & NSNumericPadKeyMask) && (flag&NSNumericPadKeyMask)) event_funct[2](0xFF+6, event_param[2]);
+      if (!(keyflag & NSHelpKeyMask) && (flag&NSHelpKeyMask)) event_funct[2](0xFF+7, event_param[2]);
+      if (!(keyflag & NSFunctionKeyMask) && (flag&NSFunctionKeyMask)) event_funct[2](0xFF+8, event_param[2]);
+    }
+  if (event_funct[3] != NULL)
+    {
+      if ((keyflag & NSShiftKeyMask) && !(flag&NSShiftKeyMask)) event_funct[3](NSShiftKeyMask, event_param[3]);
+
+      if ((keyflag & NSAlphaShiftKeyMask) && !(flag&NSAlphaShiftKeyMask)) event_funct[3](0xFF+1, event_param[3]);
+      if ((keyflag & NSShiftKeyMask) && !(flag&NSShiftKeyMask)) event_funct[3](0xFF+2, event_param[3]);
+      if ((keyflag & NSControlKeyMask) && !(flag&NSControlKeyMask)) event_funct[3](0xFF+3, event_param[3]);
+      if ((keyflag & NSAlternateKeyMask) && !(flag&NSAlternateKeyMask)) event_funct[3](0xFF+4, event_param[3]);
+      if ((keyflag & NSCommandKeyMask) && !(flag&NSCommandKeyMask)) event_funct[3](0xFF+5, event_param[3]);
+      if ((keyflag & NSNumericPadKeyMask) && !(flag&NSNumericPadKeyMask)) event_funct[3](0xFF+6, event_param[3]);
+      if ((keyflag & NSHelpKeyMask) && !(flag&NSHelpKeyMask)) event_funct[3](0xFF+7, event_param[3]);
+      if ((keyflag & NSFunctionKeyMask) && !(flag&NSFunctionKeyMask)) event_funct[3](0xFF+8, event_param[3]);
+    }
+  */
+  keyflag = flag;
+}
+
+- (void) keyDown:(NSEvent *)theEvent
+{
+  if (keyrepeat==0 && [theEvent isARepeat])
+    return ;
+  //  printf("Key Down: %d\n", [theEvent keyCode]);
+  if (event_funct[2] != NULL)
+    event_funct[2]([theEvent keyCode], event_param[2]);
+  //  else [super keyDown: theEvent];
+}
+
+- (void) keyUp:(NSEvent *)theEvent
+{
+  //  printf("Key Up: %d\n", [theEvent keyCode]);
+  if (event_funct[3] != NULL)
+    event_funct[3]([theEvent keyCode], event_param[3]);
+  //  else [super keyUp: theEvent];
+
+}
+
+- (void) mouseDown:(NSEvent *)theEvent
+{
+  NSPoint thepoint;
+  int     button;
+
+  thepoint = [theEvent locationInWindow];
+  button = get_mouse_button([theEvent type]);
+  //  printf("Mouse pressed bt %d  pos: %f, %f\n", button, thepoint.x, thepoint.y);
+  if (event_funct[4] != NULL)
+    event_funct[4](button, (int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[4]);
+}
+
+- (void) rightMouseDown:(NSEvent *)theEvent
+{
+  NSPoint thepoint;
+  int     button;
+
+  thepoint = [theEvent locationInWindow];
+  button = get_mouse_button([theEvent type]);
+  //  printf("Mouse pressed bt %d  pos: %f, %f\n", button, thepoint.x, thepoint.y);
+  if (event_funct[4] != NULL)
+    event_funct[4](button, (int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[4]);
+}
+
+- (void) otherMouseDown:(NSEvent *)theEvent
+{
+  NSPoint thepoint;
+  int     button;
+
+  thepoint = [theEvent locationInWindow];
+  button = get_mouse_button([theEvent type]);
+  //  printf("Mouse pressed bt %d  pos: %f, %f\n", button, thepoint.x, thepoint.y);
+  if (event_funct[4] != NULL)
+    event_funct[4](button, (int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[4]);
+}
+
+- (void) mouseUp:(NSEvent *)theEvent
+{
+  NSPoint thepoint;
+  int     button;
+
+  thepoint = [theEvent locationInWindow];
+  button = get_mouse_button([theEvent type]);
+  //  printf("Mouse release bt %d  pos: %f, %f\n", button, thepoint.x, thepoint.y);
+  if (event_funct[5] != NULL)
+    event_funct[5](button, (int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[5]);
+}
+
+- (void) rightMouseUp:(NSEvent *)theEvent
+{
+  NSPoint thepoint;
+  int     button;
+
+  thepoint = [theEvent locationInWindow];
+  button = get_mouse_button([theEvent type]);
+  //  printf("Mouse release bt %d  pos: %f, %f\n", button, thepoint.x, thepoint.y);
+  if (event_funct[5] != NULL)
+    event_funct[5](button, (int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[5]);
+}
+
+- (void) otherMouseUp:(NSEvent *)theEvent
+{
+  NSPoint thepoint;
+  int     button;
+
+  thepoint = [theEvent locationInWindow];
+  button = get_mouse_button([theEvent type]);
+  //  printf("Mouse release bt %d  pos: %f, %f\n", button, thepoint.x, thepoint.y);
+  if (event_funct[5] != NULL)
+    event_funct[5](button, (int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[5]);
+}
+
+- (void) mouseMoved:(NSEvent *)theEvent
+{
+  NSPoint thepoint;
+
+  thepoint = [theEvent locationInWindow];
+  //  printf("Mouse moved  pos: %f, %f\n", thepoint.x, thepoint.y);
+  if (event_funct[6] != NULL)
+    event_funct[6]((int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[6]);
+}
+
+
+- (void) mouseDragged:(NSEvent *)theEvent
+{
+  NSPoint thepoint;
+
+  thepoint = [theEvent locationInWindow];
+  //  printf("Mouse moved  pos: %f, %f\n", thepoint.x, thepoint.y);
+  if (event_funct[6] != NULL)
+    event_funct[6]((int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[6]);
+}
+
+
+- (void) rightMouseDragged:(NSEvent *)theEvent
+{
+  NSPoint thepoint;
+
+  thepoint = [theEvent locationInWindow];
+  //  printf("Mouse moved  pos: %f, %f\n", thepoint.x, thepoint.y);
+  if (event_funct[6] != NULL)
+    event_funct[6]((int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[6]);
+}
+
+
+- (void) otherMouseDragged:(NSEvent *)theEvent
+{
+  NSPoint thepoint;
+
+  thepoint = [theEvent locationInWindow];
+  //  printf("Mouse moved  pos: %f, %f\n", thepoint.x, thepoint.y);
+  if (event_funct[6] != NULL)
+    event_funct[6]((int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[6]);
+}
+
+
+- (void) scrollWheel:(NSEvent *)theEvent
+{
+  NSPoint thepoint;
+  int     button;
+  float	  sens;
+
+  if (event_funct[4] == NULL)
+    return ;
+
+  button = 0;
+  thepoint = [theEvent locationInWindow];
+  sens = [theEvent deltaY];
+  if (sens > 0.2)
+    button = 4;
+  if (sens < -0.2)
+    button = 5;
+  sens = [theEvent deltaX];
+  if (sens > 0.2)
+    button = 6;
+  if (sens < -0.2)
+    button = 7;
+  if (button != 0)
+    event_funct[4](button, (int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[4]);
+}
+
+
+- (void) exposeNotification:(NSNotification *)note
+{
+  //    printf("Expose...\n");
+    if (event_funct[12] != NULL)
+      event_funct[12](event_param[12]);
+    //    printf("Expose done.\n");
+}
+
+- (void) closeNotification:(NSNotification *)note
+{
+  if (event_funct[17] != NULL)
+    event_funct[17](event_param[17]);
+}
+
+- (void) deminiaturizeNotification:(NSNotification *)note
+{
+  //  if (event_funct[??] != NULL)
+  //    event_funct[??](event_param[??]);
+  [self exposeNotification:note];
+}
+@end
+
+
+@implementation MlxWin
+
+- (id) initWithRect: (NSRect)rect andTitle: (NSString *)title pfaAttrs: (NSOpenGLPixelFormatAttribute *)attrs
+{
+  NSOpenGLPixelFormat* pixFmt = [[NSOpenGLPixelFormat alloc] initWithAttributes:attrs];
+
+  if ((self = [super initWithFrame:rect pixelFormat:pixFmt]) != nil)
+    {
+      NSUInteger windowStyle = NSWindowStyleMaskTitled | NSWindowStyleMaskClosable | NSWindowStyleMaskMiniaturizable;
+
+      win = [[NSWindowEvent alloc] initWithContentRect:rect
+				   styleMask:windowStyle
+				   backing:NSBackingStoreBuffered   // NSBackingStoreNonretained
+				   defer:NO];
+      [win setContentView:self];
+      [win setTitle:title];
+      [win setKeyRepeat:1];
+      [win makeKeyAndOrderFront:self];
+
+      //      printf("init ctx: current %p ", [NSOpenGLContext currentContext]);
+
+      //      ctx = [[NSOpenGLContext alloc] initWithFormat:pixFmt shareContext:[NSOpenGLContext currentContext]]; //other_context];
+      //      [ctx setView:self];
+      //      [ctx makeCurrentContext];
+
+      [[self openGLContext] makeCurrentContext];
+      [[self openGLContext] setView:self];
+      [self prepareOpenGL];
+
+      [self setNextKeyView:self];
+
+      //      [[NSNotificationCenter defaultCenter] addObserver:win selector:@selector(exposeNotification:) name:@"NSWindowDidExposeNotification" object:nil];
+      [[NSNotificationCenter defaultCenter] addObserver:win selector:@selector(exposeNotification:) name:@"NSWindowDidBecomeKeyNotification" object:win];
+      [[NSNotificationCenter defaultCenter] addObserver:win selector:@selector(deminiaturizeNotification:) name:@"NSWindowDidDeminiaturizeNotification" object:win];
+      [[NSNotificationCenter defaultCenter] addObserver:win selector:@selector(closeNotification:) name:@"NSWindowWillCloseNotification" object:win];
+      // [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(ctxNeedsUpdate:)
+      //				    name:NSViewGlobalFrameDidChangeNotification
+      //				    object:nil];
+
+      size_x = rect.size.width;
+      size_y = rect.size.height;
+
+      glClearColor(0, 0, 0, 0);
+      glClear(GL_COLOR_BUFFER_BIT);
+      glFlush();
+
+      //[win makeKeyAndOrderFront:nil];
+      // BOOL r = [win isKeyWindow];
+      //  if (r==YES) printf("keywindow ok\n"); else printf("keywindow KO\n");
+
+      // Window controller subclass to set title
+      // NSWindowController* windowController = [[NSWindowController alloc] initWithWindow:win];
+      // [windowController windowTitleForDocumentDisplayName:title];
+      // [windowController showWindow:nil];
+      // MlxWinController *mlxWinCont = [[MlxWinController alloc] initWin:win andTitle:title];
+
+      // after nswindowcontroller who will retake first responder
+      //      BOOL r = [win makeFirstResponder:nil];
+      //      if (r==YES) printf("responder ok\n"); else printf("responder KO\n");
+
+      [pixFmt release];
+    }
+  return (self);
+}
+
+- (int)	pixel_management
+{
+  bzero(&glsl, sizeof(glsl));   // so gldelete[shader/program] go silent on error.
+
+  glDisable(GL_DEPTH_TEST);
+  glGenBuffers(1, &pixel_vbuffer);
+  glBindBuffer(GL_ARRAY_BUFFER, pixel_vbuffer);
+  glBufferData(GL_ARRAY_BUFFER, sizeof(pixel_vertexes), pixel_vertexes, GL_DYNAMIC_DRAW); // 4 points buff
+  // pixel_ptr = glMapBuffer(GL_ARRAY_BUFFER, GL_WRITE_ONLY);
+
+  glGenTextures(1, &pixel_texture);
+  glBindTexture(GL_TEXTURE_2D, pixel_texture);
+  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,     GL_CLAMP_TO_EDGE);
+  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,     GL_CLAMP_TO_EDGE);
+  pixtexbuff = malloc(sizeof(unsigned int)*size_x*size_y);
+  pixel_nb = size_x*size_y;
+  while (pixel_nb--) pixtexbuff[pixel_nb] = 0xFF000000;
+  pixel_nb = 0;
+  glTexImage2D(
+	       GL_TEXTURE_2D, 0,           /* target, level of detail */
+	       GL_RGBA8,                    /* internal format */
+	       size_x, size_y, 0,           /* width, height, border */
+	       GL_BGRA, GL_UNSIGNED_BYTE,   /* external format, type */
+	       pixtexbuff                   /* pixels */
+	       );
+  //      printf("pix tex err? 0x%x\n", glGetError());
+
+  if (mlx_shaders(&glsl))
+    return (0);
+
+  glUseProgram(glsl.pixel_program);
+  glsl.loc_pixel_texture = glGetUniformLocation(glsl.pixel_program, "texture");
+  //glsl.loc_pixel_winhalfsize = glGetUniformLocation(glsl.pixel_program, "winhalfsize");
+  glsl.loc_pixel_position = glGetAttribLocation(glsl.pixel_program, "position");
+  //      printf("err? 0x%x\n", glGetError());
+
+  glUseProgram(glsl.image_program);
+  glsl.loc_image_texture = glGetUniformLocation(glsl.image_program, "texture");
+  glsl.loc_image_pos = glGetUniformLocation(glsl.image_program, "imagepos");
+  glsl.loc_image_size = glGetUniformLocation(glsl.image_program, "imagesize");
+  glsl.loc_image_winhalfsize = glGetUniformLocation(glsl.image_program, "winhalfsize");
+  glsl.loc_image_position = glGetAttribLocation(glsl.image_program, "position");
+  //      printf("err? 0x%x\n", glGetError());
+
+  glUseProgram(glsl.font_program);
+  glsl.loc_font_texture = glGetUniformLocation(glsl.font_program, "texture");
+  glsl.loc_font_color = glGetUniformLocation(glsl.font_program, "color");
+  glsl.loc_font_posinwin = glGetUniformLocation(glsl.font_program, "fontposinwin");
+  glsl.loc_font_posinatlas = glGetUniformLocation(glsl.font_program, "fontposinatlas");
+  glsl.loc_font_atlassize = glGetUniformLocation(glsl.font_program, "fontatlassize");
+  glsl.loc_font_winhalfsize = glGetUniformLocation(glsl.font_program, "winhalfsize");
+  glsl.loc_font_position = glGetAttribLocation(glsl.font_program, "position");
+  //      printf("err? 0x%x\n", glGetError());
+
+  glFlush();
+  return (1);
+}
+
+- (void) ctxNeedsUpdate
+{
+  // printf("Context update\n");
+  [ctx update];
+}
+
+- (void) selectGLContext
+{
+  if ([NSOpenGLContext currentContext] != [self openGLContext])
+    {
+      //      printf("ctx: %p => %p\n", [NSOpenGLContext currentContext], [self openGLContext]);
+      [[self openGLContext] makeCurrentContext];
+    }
+}
+
+- (void) flushGLContext
+{
+  [[self openGLContext] flushBuffer];
+}
+
+- (NSOpenGLContext *) ctx
+{
+  return (ctx);
+}
+
+- (NSWindowEvent *) win
+{
+  return (win);
+}
+
+
+- (void) pixelPutColor: (int)color X:(int)x Y:(int)y
+{
+  pixel_nb ++;
+
+  glBindTexture(GL_TEXTURE_2D, pixel_vbuffer);
+  glTexSubImage2D(GL_TEXTURE_2D, 0, x, y, 1, 1, GL_BGRA, GL_UNSIGNED_BYTE, (GLvoid *)(&color));
+
+  if (pixel_nb >= MAX_PIXEL_NB)
+    [self mlx_gl_draw];
+}
+
+- (void) destroyPixelManagement
+{
+  free(pixtexbuff);
+  [self selectGLContext];
+  glDeleteBuffers(1, &pixel_vbuffer);
+  glDeleteTextures(1, &pixel_texture);
+  glDeleteProgram(glsl.pixel_program);
+  glDeleteProgram(glsl.image_program);
+  glDeleteShader(glsl.pixel_vshader);
+  glDeleteShader(glsl.pixel_fshader);
+  glDeleteShader(glsl.image_vshader);
+  glDeleteShader(glsl.image_fshader);
+}
+
+
+- (void) destroyMe
+{
+  [[NSNotificationCenter defaultCenter] removeObserver:win];
+  [[NSNotificationCenter defaultCenter] removeObserver:self];
+  // [ctx release];
+  [win close];
+  [self release];
+}
+
+- (void) setEvent:(int)event andFunc:(func_t)func andParam:(void *)param
+{
+  [win setEvent:event andFunc:func andParam:param];
+}
+
+- (void) setKeyRepeat:(int)mode
+{
+  [win setKeyRepeat:mode];
+}
+
+- (void) clearWin
+{
+  glClearColor(0, 0, 0, 0);
+  glClear(GL_COLOR_BUFFER_BIT);
+}
+
+- (void) mlx_gl_draw_img:(mlx_img_list_t *)img andCtx:(mlx_img_ctx_t *)imgctx andX:(int)x andY:(int)y
+{
+
+  if (pixel_nb >0)
+    [self mlx_gl_draw];
+
+  glUseProgram(glsl.image_program);
+
+  glActiveTexture(GL_TEXTURE0);
+  glBindTexture(GL_TEXTURE_2D, imgctx->texture);
+  glUniform1i(glsl.loc_image_texture, 0);
+
+  glUniform2f(glsl.loc_image_winhalfsize, size_x/2, size_y/2);
+  glUniform2f(glsl.loc_image_pos, x, size_y - y);
+  glUniform2f(glsl.loc_image_size, img->width, -img->height);
+
+  glBindBuffer(GL_ARRAY_BUFFER, imgctx->vbuffer);
+  glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 2*sizeof(GLfloat), (void*)0);
+  glEnableVertexAttribArray(0);
+
+  glEnable(GL_BLEND);
+  glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA);  // src alpha 0xFF : keep dst
+  glBlendEquation(GL_FUNC_ADD);
+
+  glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
+  glDisableVertexAttribArray(0);
+
+}
+
+
+- (void) mlx_gl_draw_font:(mlx_img_list_t *)img andCtx:(mlx_img_ctx_t *)imgctx andX:(int)x andY:(int)y andColor:(int)color glyphX:(int)gx glyphY:(int)gy
+{
+  GLfloat color_tab[4];
+
+  if (pixel_nb >0)
+    [self mlx_gl_draw];
+
+  color_tab[0] = ((float)((color&0xFF0000)>>16))/255.0;
+  color_tab[1] = ((float)((color&0xFF00)>>8))/255.0;
+  color_tab[2] = ((float)((color&0xFF)>>0))/255.0;
+  color_tab[3] = 1.0;
+  glUseProgram(glsl.font_program);
+
+  glActiveTexture(GL_TEXTURE0);
+  glBindTexture(GL_TEXTURE_2D, imgctx->texture);
+  glUniform1i(glsl.loc_font_texture, 0);
+  glUniform4fv(glsl.loc_font_color, 1, color_tab);
+
+  glUniform2f(glsl.loc_font_winhalfsize, size_x/2, size_y/2);
+  glUniform2f(glsl.loc_font_posinwin, x, size_y - 1 - y);
+  glUniform2f(glsl.loc_font_posinatlas, gx, gy);
+  glUniform2f(glsl.loc_font_atlassize, img->width, img->height);
+
+  glBindBuffer(GL_ARRAY_BUFFER, imgctx->vbuffer);
+  glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 2*sizeof(GLfloat), (void*)0);
+  glEnableVertexAttribArray(0);
+
+  glEnable(GL_BLEND);
+  glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA);  // src alpha 0xFF : keep dst
+  glBlendEquation(GL_FUNC_ADD);
+
+  glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
+  glDisableVertexAttribArray(0);
+
+}
+
+
+- (void) mlx_gl_draw
+{
+  if (pixel_nb <= 0)
+    return ;
+
+  glUseProgram(glsl.pixel_program);
+
+  glActiveTexture(GL_TEXTURE0);
+  glBindTexture(GL_TEXTURE_2D, pixel_vbuffer);
+  glUniform1i(glsl.loc_pixel_texture, 0);
+  
+  glBindBuffer(GL_ARRAY_BUFFER, pixel_vbuffer);
+  glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 2*sizeof(GLfloat), (void*)0);
+  glEnableVertexAttribArray(0);
+
+  glEnable(GL_BLEND);
+  glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA);  // src alpha 0xFF : keep dst
+  glBlendEquation(GL_FUNC_ADD);
+
+  glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
+  glDisableVertexAttribArray(0);
+
+  pixel_nb = size_x*size_y;
+  while (pixel_nb--) pixtexbuff[pixel_nb] = 0xFF000000;
+  glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, size_x, size_y, 0, GL_BGRA, GL_UNSIGNED_BYTE, pixtexbuff);
+  pixel_nb = 0;
+  
+}
+
+@end
+
+
+// mlx API
+ 
+
+void *mlx_new_window(mlx_ptr_t *mlx_ptr, int size_x, int size_y, char *title)
+{
+  mlx_win_list_t	*newwin;
+  NSString		*str;
+
+  if ((newwin = malloc(sizeof(*newwin))) == NULL)
+    return ((void *)0);
+  newwin->img_list = NULL;
+  newwin->next = mlx_ptr->win_list;
+  newwin->nb_flush = 0;
+  newwin->pixmgt = 1;
+  mlx_ptr->win_list = newwin;
+
+  NSRect windowRect = NSMakeRect(100, 100, size_x, size_y);
+  str = [NSString stringWithCString:title encoding:NSASCIIStringEncoding];
+  newwin->winid = [[MlxWin alloc] initWithRect:windowRect andTitle:str pfaAttrs:pfa_attrs];
+  if (newwin->winid)
+    if (![(id)(newwin->winid) pixel_management])
+      {
+	[(id)(newwin->winid) destroyPixelManagement];
+	[(id)(newwin->winid) destroyMe];
+      }
+  return ((void *)newwin);
+}
+
+
+void mlx_clear_window(mlx_ptr_t *mlx_ptr, mlx_win_list_t *win_ptr)
+{
+  [(id)(win_ptr->winid) selectGLContext];
+  [(id)(win_ptr->winid) clearWin];
+  win_ptr->nb_flush ++;
+}
+
+
+void mlx_expose_hook(mlx_win_list_t *win_ptr, int (*funct_ptr)(), void *param)
+{
+  [(id)(win_ptr->winid) setEvent:12 andFunc:funct_ptr andParam:param];
+}
+
+void mlx_key_hook(mlx_win_list_t *win_ptr, int (*funct_ptr)(), void *param)
+{
+  [(id)(win_ptr->winid) setEvent:3 andFunc:funct_ptr andParam:param];
+}
+
+void mlx_mouse_hook(mlx_win_list_t *win_ptr, int (*funct_ptr)(), void *param)
+{
+  [(id)(win_ptr->winid) setEvent:4 andFunc:funct_ptr andParam:param];
+}
+
+void mlx_hook(mlx_win_list_t *win_ptr, int x_event, int x_mask, int (*funct_ptr)(), void *param)
+{
+  [(id)(win_ptr->winid) setEvent:x_event andFunc:funct_ptr andParam:param];
+}
+
+int     mlx_do_key_autorepeatoff(mlx_ptr_t *mlx_ptr)
+{
+  mlx_win_list_t *win;
+
+  win = mlx_ptr->win_list;
+  while (win)
+    {
+      [(id)(win->winid) setKeyRepeat:0];
+      win = win->next;
+    }
+  return (0);
+}
+
+int     mlx_do_key_autorepeaton(mlx_ptr_t *mlx_ptr)
+{
+  mlx_win_list_t *win;
+
+  win = mlx_ptr->win_list;
+  while (win)
+    {
+      [(id)(win->winid) setKeyRepeat:1];
+      win = win->next;
+    }
+  return (0);
+}
+
+
+int     mlx_destroy_window(mlx_ptr_t *mlx_ptr, mlx_win_list_t *win_to_del)
+{
+  mlx_win_list_t    first;
+  mlx_win_list_t    *win;
+  mlx_img_ctx_t	    *ctx;
+  mlx_img_ctx_t	    *ctx2;
+
+  first.next = mlx_ptr->win_list;
+  win = &first;
+  while (win && win->next)
+    {
+      if (win->next == win_to_del)
+	win->next = win->next->next;
+      win = win->next;
+    }
+  mlx_ptr->win_list = first.next;
+
+  if (win_to_del->pixmgt)
+    {
+      [(id)(win_to_del->winid) selectGLContext];
+      ctx = win_to_del->img_list;   // should be null anyway if no pixel management
+      while (ctx)
+	{
+	  glDeleteBuffers(1, &(ctx->vbuffer));
+	  glDeleteTextures(1, &(ctx->texture));
+	  ctx2 = ctx;
+	  ctx = ctx->next;
+	  free(ctx2);
+	}
+      [(id)(win_to_del->winid) destroyPixelManagement];
+    }
+  [(id)(win_to_del->winid) destroyMe];
+  free(win_to_del);
+
+  //  printf("destroy window done.\n");
+  mlx_do_sync(mlx_ptr);
+  return (0);
+}
diff --git a/minilibx/mlx_opengl.h b/minilibx/mlx_opengl.h
new file mode 100644
index 0000000..bb39267
--- /dev/null
+++ b/minilibx/mlx_opengl.h
@@ -0,0 +1,21 @@
+/*
+**
+** mlx_opengl.h 
+**
+** public include, use it after mlx.h
+** designed only for minilibx_macos
+**
+*/
+
+void    *mlx_new_opengl_window(void *mlx_ptr, int size_x, int size_y, char *title);
+
+/* create an opengl window. put_image & pixel_put & string_put do not work there. */
+
+int	mlx_opengl_swap_buffers(void *win_ptr);
+
+/* the created window is double buffered. Use this funct to swap buffers */
+/* this funct will call glFlush(). Don't call it. */
+
+int	mlx_opengl_window_set_context(void *win_ptr);
+
+/* in case multiple opengl windows are present, change opengl active context */
diff --git a/minilibx/mlx_opengl.m b/minilibx/mlx_opengl.m
new file mode 100644
index 0000000..554d79b
--- /dev/null
+++ b/minilibx/mlx_opengl.m
@@ -0,0 +1,57 @@
+// mlx_opengl.m
+
+#import <Cocoa/Cocoa.h>
+#import <OpenGL/gl3.h>
+#import <AppKit/NSOpenGLView.h>
+
+#include <stdio.h>
+
+#include "mlx_int.h"
+#include "mlx_new_window.h"
+
+
+
+
+
+NSOpenGLPixelFormatAttribute pfa_attrs_opengl[] =
+  {
+    NSOpenGLPFADepthSize, 32,
+    NSOpenGLPFADoubleBuffer,
+    NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion4_1Core,
+    0
+  };
+
+
+
+void	*mlx_new_opengl_window(mlx_ptr_t *mlx_ptr, int size_x, int size_y, char *title)
+{
+  mlx_win_list_t	*newwin;
+  NSString		*str;
+
+  if ((newwin = malloc(sizeof(*newwin))) == NULL)
+    return ((void *)0);
+  newwin->img_list = NULL;
+  newwin->next = mlx_ptr->win_list;
+  newwin->nb_flush = 0;
+  newwin->pixmgt = 0;
+  mlx_ptr->win_list = newwin;
+
+  NSRect windowRect = NSMakeRect(100, 100, size_x, size_y);
+  str = [NSString stringWithCString:title encoding:NSASCIIStringEncoding];
+  newwin->winid = [[MlxWin alloc] initWithRect:windowRect andTitle:str pfaAttrs:pfa_attrs_opengl];
+
+  return ((void *)newwin);
+}
+
+
+int	mlx_opengl_swap_buffers(mlx_win_list_t *win_ptr)
+{
+  [(id)(win_ptr->winid) flushGLContext];
+  return (0);
+}
+
+int	mlx_opengl_window_set_context(mlx_win_list_t *win_ptr)
+{
+  [(id)(win_ptr->winid) selectGLContext];
+  return (0);
+}
diff --git a/minilibx/mlx_png.c b/minilibx/mlx_png.c
new file mode 100644
index 0000000..ca8024d
--- /dev/null
+++ b/minilibx/mlx_png.c
@@ -0,0 +1,418 @@
+
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <sys/mman.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <err.h>
+#include <string.h>
+#include <arpa/inet.h>
+
+#include "zlib.h"
+
+#include <OpenGL/gl3.h>
+#include	"mlx_int.h"
+
+
+#define	PNG_MAGIC_SIZE	8
+unsigned char magic[PNG_MAGIC_SIZE] = {137, 80, 78, 71, 13, 10, 26, 10};
+#define PNG_HDR_SIZE	13
+
+#define	Z_CHUNK	32768
+
+#define	ERR_MAGIC_SIZE	1
+#define	ERR_MAGIC_WRONG	2
+#define	ERR_STRUCT_INCOMPLETE	3
+#define	ERR_STRUCT_HDR	4
+#define	ERR_STRUCT_END	5
+#define	ERR_STRUCT_CRC	6
+#define	ERR_STRUCT_INCIMPL 7
+#define	ERR_STRUCT_DAT	8
+#define	ERR_STRUCT_MISSCHK	9
+#define	ERR_ZLIB	10
+#define	ERR_DATA_MISMATCH	11
+#define	ERR_DATA_FILTER	12
+char *(mipng_err[]) =
+{
+  "No error",
+  "Not enough size for magic",
+  "Wrong magic",
+  "Incomplete chunk structure",
+  "Duplicate or incorrect header",
+  "Duplicate or incorrect end",
+  "Invalid CRC in chunk",
+  "Incorrect header or configuration not implemented",
+  "Non consecutive dat chunks",
+  "Missing header/dat/end chunk(s)",
+  "Zlib inflate error",
+  "Inflated data size mismatch",
+  "Unknown scanline filter"
+};
+
+typedef struct png_info_s
+{
+  unsigned int	width;
+  unsigned int	height;
+  int		depth;
+  int		color;
+  int		interlace;
+  int		bpp;
+} png_info_t;
+
+
+int	mipng_is_type(unsigned char *ptr, char *type)
+{
+  if (ptr[4] == type[0] && ptr[5] == type[1] && ptr[6] == type[2] && ptr[7] == type[3])
+    return (1);
+  return (0);
+}
+
+
+unsigned char mipng_defilter_none(unsigned char *buff, int pos, int a, int b, int c)
+{ return (buff[pos]); }
+unsigned char mipng_defilter_sub(unsigned char *buff, int pos, int a, int b, int c)
+{ return (buff[pos]+(unsigned int)a); }
+unsigned char mipng_defilter_up(unsigned char *buff, int pos, int a, int b, int c)
+{ return (buff[pos]+(unsigned int)b); }
+unsigned char mipng_defilter_average(unsigned char *buff, int pos, int a, int b, int c)
+{ return (buff[pos]+((unsigned int)a+(unsigned int)b)/2); }
+unsigned char mipng_defilter_paeth(unsigned char *buff, int pos, int a, int b, int c)
+{
+  int	p;
+  int	result;
+
+  p = a + b - c;
+  if (abs(b - c) <= abs(a - c) && abs(b - c) <= abs(a + b - c - c))
+    result = a;
+  else
+    if (abs(a - c) <= abs(a + b - c - c))
+      result = b;
+    else
+      result = c;
+ return (buff[pos]+result);
+}
+
+
+
+unsigned char (*(mipng_defilter[]))(unsigned char *buff, int pos, int a, int b, int c) =
+{
+  mipng_defilter_none,
+  mipng_defilter_sub,
+  mipng_defilter_up,
+  mipng_defilter_average,
+  mipng_defilter_paeth
+};
+
+// only work for mlx mac or img 32bpp
+int	mipng_fill_img(mlx_img_list_t *img, unsigned char *buf, png_info_t *pi)
+{
+  unsigned int	current_filter;
+  int	ipos;
+  int	bpos;
+  int	ilen;
+  int	iline;
+  int	blen;
+  unsigned char tmp;
+  unsigned char *ibuf;
+
+  ibuf = (unsigned char *)img->buffer;
+  iline = img->width * UNIQ_BPP;
+  ilen = img->width * img->height * UNIQ_BPP;
+  blen = img->width * img->height * pi->bpp + img->height;
+  ipos = 0;
+  bpos = 0;
+  while (ipos < ilen && bpos < blen)
+    {
+      if ((ipos % iline) == 0)
+	{
+	  if ((current_filter = buf[bpos++]) > 4)
+	    return (ERR_DATA_FILTER);
+	}
+      ibuf[ipos] = mipng_defilter[current_filter](buf, bpos,
+				 ipos%iline>3?ibuf[ipos-UNIQ_BPP]:0,
+				 (ipos>=iline)?ibuf[ipos-iline]:0,
+				 (ipos>=iline && ipos%iline>3)?ibuf[ipos-iline-UNIQ_BPP]:0);
+      ipos ++;
+      bpos ++;
+      if (pi->depth == 16)
+	bpos ++;
+      if (ipos % 4 == 3 && pi->color == 2)  // no alpha
+	img->buffer[ipos++] = 0xFF;
+    }
+  if (ipos != ilen || bpos != blen)
+    {
+      //      printf("fill err ipos %d vs %d, bpos %d vs %d\n", ipos, ilen, bpos, blen);
+      return (ERR_DATA_MISMATCH);
+    }
+  ipos = 0;
+  while (ipos < ilen)
+    {
+      tmp = ibuf[ipos];
+      ibuf[ipos] = ibuf[ipos+2];
+      ibuf[ipos+2] = tmp;
+      ibuf[ipos+3] = 0xFF - ibuf[ipos+3];
+      ipos += UNIQ_BPP;
+    }
+  return (0);
+}
+
+
+int	mipng_data(mlx_img_list_t *img, unsigned char *dat, png_info_t *pi)
+{
+  unsigned int	len;
+  int		b_pos;
+  unsigned char *buffer;
+  int		ret;
+  int z_ret;
+  unsigned z_have;
+  z_stream z_strm;
+  unsigned char z_out[Z_CHUNK];
+
+  b_pos = 0;
+  if (!(buffer = malloc((long long)img->width*(long long)img->height*(long long)pi->bpp + img->height)))
+    err(1, "Can't malloc");
+  z_strm.zalloc = Z_NULL;
+  z_strm.zfree = Z_NULL;
+  z_strm.opaque = Z_NULL;
+  z_strm.avail_in = 0;
+  z_strm.next_in = Z_NULL;
+  z_ret = inflateInit(&z_strm);
+  if (z_ret != Z_OK)
+    return (ERR_ZLIB);
+
+  while (mipng_is_type(dat, "IDAT"))
+    {
+      len = *((unsigned int *)dat);
+      len = ntohl(len);
+      z_strm.avail_in = len;
+      z_strm.next_in = dat + 8;
+      z_strm.avail_out = 0;
+      while (z_strm.avail_out == 0)
+	{
+	  z_strm.avail_out = Z_CHUNK;
+	  z_strm.next_out = z_out;
+	  z_ret = inflate(&z_strm, Z_NO_FLUSH);
+	  //	  printf("inflate ret %d avail_out %d\n", z_ret, z_strm.avail_out);
+	  if (z_ret != Z_OK && z_ret != Z_STREAM_END)
+	    {
+	      inflateEnd(&z_strm);
+	      return (ERR_ZLIB);
+	    }
+	  if (b_pos + Z_CHUNK - z_strm.avail_out > img->width*img->height*pi->bpp+img->height)
+	    {
+	      inflateEnd(&z_strm);
+	      return (ERR_DATA_MISMATCH);
+	    }
+	  bcopy(z_out, buffer+b_pos, Z_CHUNK - z_strm.avail_out);
+	  b_pos += Z_CHUNK - z_strm.avail_out;
+	}
+      dat += len + 4 + 4 + 4;
+    } 
+  inflateEnd(&z_strm);
+  if (b_pos != img->width*img->height*pi->bpp+img->height)
+    {
+      //      printf("pb : bpos %d vs expected %d\n", b_pos, img->width*img->height*pi->bpp+img->height);
+      return (ERR_DATA_MISMATCH);
+    }
+  if ((ret = mipng_fill_img(img, buffer, pi)))
+    return (ret);
+  return (0);
+}
+
+
+
+int	mipng_magic(unsigned char *ptr, int size)
+{
+  int	i;
+
+  if (size < PNG_MAGIC_SIZE)
+    return (ERR_MAGIC_SIZE);
+  i = 0;
+  while (i < PNG_MAGIC_SIZE)
+    if (*(ptr++) != magic[i++])
+      return (ERR_MAGIC_WRONG);
+  return (0);
+}
+
+
+unsigned long crc_table[256] = { 0, 0x77073096, 0xee0e612c, 0x990951ba, 0x76dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0xedb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x9b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x1db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x6b6b51f, 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0xf00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x86d3d2d, 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x3b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x4db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, 0xd6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0xa00ae27, 0x7d079eb1, 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x26d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x5005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0xcb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0xbdbdf21, 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d };
+
+// From http://www.w3.org/TR/PNG/#D-CRCAppendix
+int	mipng_crc(unsigned char *ptr, int len)
+{
+  unsigned int	file_crc;
+  unsigned long crc;
+  int		i;
+
+  file_crc = *((unsigned int *)(ptr+4+4+len));
+  file_crc = ntohl(file_crc);
+  
+  crc = 0xffffffffL;
+  i = 0;
+  while (i < len+4)
+    crc = crc_table[(crc ^ ptr[(i++)+4]) & 0xff] ^ (crc >> 8);
+  crc ^= 0xffffffffL;
+
+  if (file_crc != crc)
+    return (1);
+  return (0);
+}
+
+
+int	mipng_structure(unsigned char *ptr, int size, unsigned char **hdr, unsigned char **dat)
+{
+  unsigned int	len;
+  int		dat_state;
+  int		end;
+
+  dat_state = 0;
+  *hdr = NULL;
+  *dat = NULL;
+  end = 0;
+  while (size)
+    {
+      if (size >= 4) // length present
+	{
+	  len = *((unsigned int *)ptr);
+	  len = ntohl(len);
+	  if (size < 4 + 4 + 4 + len)
+	    return (ERR_STRUCT_INCOMPLETE);
+	  if (mipng_crc(ptr, len))
+	    return (ERR_STRUCT_CRC);
+	  //	  printf("found chunk len %d type %c%c%c%c\n", len, *(ptr+4), *(ptr+5), *(ptr+6), *(ptr+7));
+	  if (mipng_is_type(ptr, "IHDR"))
+	    {
+	      if (*hdr || len != PNG_HDR_SIZE)
+		return (ERR_STRUCT_HDR);
+	      *hdr = ptr;
+	    }
+	  if (mipng_is_type(ptr, "IEND"))
+	    {
+	      if (len != 0 || size != 4+4+4)
+		return (ERR_STRUCT_END);
+	      end = 1;
+	    }
+	  if (mipng_is_type(ptr, "IDAT"))
+	    {
+	      if (dat_state == 0)
+		{
+		  dat_state = 1;
+		  *dat = ptr;
+		}
+	      if (dat_state == 2)
+		return (ERR_STRUCT_DAT);
+	    }
+	  else
+	    if (dat_state == 1)
+	      dat_state = 2;
+	  size -= 4+4+4+len;
+	  ptr += 4+4+4+len;
+	}
+      else
+	return (ERR_STRUCT_INCOMPLETE);
+    }
+  if (*hdr == 0 || *dat == 0 || end == 0)
+    return (ERR_STRUCT_MISSCHK);
+  return (0);
+}
+
+
+int	mipng_verif_hdr(unsigned char *hdr, png_info_t *pi)
+{
+  unsigned int	compress;
+  unsigned int	filter;
+
+  hdr += 8;
+  pi->width = ntohl(*((unsigned long *)hdr));
+  pi->height = ntohl(*((unsigned long *)(hdr+4)));
+  pi->depth = *(hdr+8);
+  pi->color = *(hdr+9);
+  compress = *(hdr+10);
+  filter = *(hdr+11);
+  pi->interlace = *(hdr+12);
+  if (pi->width <= 0 || pi->height <= 0 || (pi->depth != 8 && pi->depth != 16)
+      || (pi->color != 2 && pi->color != 6) || compress != 0 || filter != 0 || pi->interlace != 0)
+    return (ERR_STRUCT_INCIMPL);
+  pi->bpp = pi->depth / 8;
+  if (pi->color == 2)
+    pi->bpp *= 3;
+  if (pi->color == 6)
+    pi->bpp *= 4;
+  //  printf("hdr info : %d x %d, depth %d, col type %d, comp %d, filter %d, interlace %d\nbpp is %d\n",
+  //	 pi->width, pi->height, pi->depth, pi->color, compress, filter, pi->interlace, pi->bpp);
+  return (0);
+}
+
+
+mlx_img_list_t	*mlx_int_parse_png(mlx_ptr_t *xvar, unsigned char *fptr, int size)
+{
+  int		err;
+  unsigned char *hdr;
+  unsigned char *dat;
+  png_info_t	pi;
+  mlx_img_list_t *img;
+
+  if ((err = mipng_magic(fptr, size)))
+    {
+      warnx("mlx PNG error : %s", mipng_err[err]);
+      return ((mlx_img_list_t *)0);
+    }
+  fptr += PNG_MAGIC_SIZE;
+  size -= PNG_MAGIC_SIZE;
+  if ((err = mipng_structure(fptr, size, &hdr, &dat)))
+    {
+      warnx("mlx PNG error : %s", mipng_err[err]);
+      return ((mlx_img_list_t *)0);
+    }
+  if ((err = mipng_verif_hdr(hdr, &pi)))
+    {
+      warnx("mlx PNG error : %s", mipng_err[err]);
+      return ((mlx_img_list_t *)0);
+    }
+  if (!(img = mlx_new_image(xvar, pi.width, pi.height)))
+    {
+      warnx("mlx PNG error : Can't create mlx image");
+      return ((mlx_img_list_t *)0);
+    }
+  if ((err = mipng_data(img, dat, &pi)))
+    {
+      mlx_destroy_image(xvar, img);
+      warnx("mlx PNG error : %s", mipng_err[err]);
+      return ((mlx_img_list_t *)0);
+    }
+  return (img);
+}
+
+
+
+
+void	*mlx_png_file_to_image(mlx_ptr_t *xvar, char *file, int *width, int *height)
+{
+  int			fd;
+  int			size;
+  unsigned char		*ptr;
+  mlx_img_list_t        *img;
+
+  if ((fd = open(file, O_RDONLY)) == -1 || (size = lseek(fd, 0, SEEK_END)) == -1 ||
+      (ptr = mmap(0, size, PROT_READ, MAP_PRIVATE, fd, 0)) == (void *)MAP_FAILED)
+    {
+      if (fd >= 0)
+        close(fd);
+      warnx("Can't map png file '%s'", file);
+      return ((void *)0);
+    }
+  if ((img = mlx_int_parse_png(xvar, ptr, size)))
+    {
+      *width = img->width;
+      *height = img->height;
+    }
+  else
+    {
+      *width = 0;
+      *height = 0;
+    }
+  munmap(ptr,size);
+  close(fd);
+  return (img);
+}
diff --git a/minilibx/mlx_png.h b/minilibx/mlx_png.h
new file mode 100644
index 0000000..83ef145
--- /dev/null
+++ b/minilibx/mlx_png.h
@@ -0,0 +1,4 @@
+
+
+
+void    *mlx_png_file_to_image(void *xvar, char *file, int *width, int *height);
diff --git a/minilibx/mlx_rgb.c b/minilibx/mlx_rgb.c
new file mode 100644
index 0000000..3f98717
--- /dev/null
+++ b/minilibx/mlx_rgb.c
@@ -0,0 +1,763 @@
+/*
+** This is a generated file with rgb2c.pl and rgb.txt from
+** the XFree86 distribution.
+*/
+
+
+struct s_col_name mlx_col_name[] =
+{
+ { "snow" , 0xfffafa },
+ { "ghost white" , 0xf8f8ff },
+ { "ghostwhite" , 0xf8f8ff },
+ { "white smoke" , 0xf5f5f5 },
+ { "whitesmoke" , 0xf5f5f5 },
+ { "gainsboro" , 0xdcdcdc },
+ { "floral white" , 0xfffaf0 },
+ { "floralwhite" , 0xfffaf0 },
+ { "old lace" , 0xfdf5e6 },
+ { "oldlace" , 0xfdf5e6 },
+ { "linen" , 0xfaf0e6 },
+ { "antique white" , 0xfaebd7 },
+ { "antiquewhite" , 0xfaebd7 },
+ { "papaya whip" , 0xffefd5 },
+ { "papayawhip" , 0xffefd5 },
+ { "blanched almond" , 0xffebcd },
+ { "blanchedalmond" , 0xffebcd },
+ { "bisque" , 0xffe4c4 },
+ { "peach puff" , 0xffdab9 },
+ { "peachpuff" , 0xffdab9 },
+ { "navajo white" , 0xffdead },
+ { "navajowhite" , 0xffdead },
+ { "moccasin" , 0xffe4b5 },
+ { "cornsilk" , 0xfff8dc },
+ { "ivory" , 0xfffff0 },
+ { "lemon chiffon" , 0xfffacd },
+ { "lemonchiffon" , 0xfffacd },
+ { "seashell" , 0xfff5ee },
+ { "honeydew" , 0xf0fff0 },
+ { "mint cream" , 0xf5fffa },
+ { "mintcream" , 0xf5fffa },
+ { "azure" , 0xf0ffff },
+ { "alice blue" , 0xf0f8ff },
+ { "aliceblue" , 0xf0f8ff },
+ { "lavender" , 0xe6e6fa },
+ { "lavender blush" , 0xfff0f5 },
+ { "lavenderblush" , 0xfff0f5 },
+ { "misty rose" , 0xffe4e1 },
+ { "mistyrose" , 0xffe4e1 },
+ { "white" , 0xffffff },
+ { "black" , 0x0 },
+ { "dark slate" , 0x2f4f4f },
+ { "darkslategray" , 0x2f4f4f },
+ { "dark slate" , 0x2f4f4f },
+ { "darkslategrey" , 0x2f4f4f },
+ { "dim gray" , 0x696969 },
+ { "dimgray" , 0x696969 },
+ { "dim grey" , 0x696969 },
+ { "dimgrey" , 0x696969 },
+ { "slate gray" , 0x708090 },
+ { "slategray" , 0x708090 },
+ { "slate grey" , 0x708090 },
+ { "slategrey" , 0x708090 },
+ { "light slate" , 0x778899 },
+ { "lightslategray" , 0x778899 },
+ { "light slate" , 0x778899 },
+ { "lightslategrey" , 0x778899 },
+ { "gray" , 0xbebebe },
+ { "grey" , 0xbebebe },
+ { "light grey" , 0xd3d3d3 },
+ { "lightgrey" , 0xd3d3d3 },
+ { "light gray" , 0xd3d3d3 },
+ { "lightgray" , 0xd3d3d3 },
+ { "midnight blue" , 0x191970 },
+ { "midnightblue" , 0x191970 },
+ { "navy" , 0x80 },
+ { "navy blue" , 0x80 },
+ { "navyblue" , 0x80 },
+ { "cornflower blue" , 0x6495ed },
+ { "cornflowerblue" , 0x6495ed },
+ { "dark slate" , 0x483d8b },
+ { "darkslateblue" , 0x483d8b },
+ { "slate blue" , 0x6a5acd },
+ { "slateblue" , 0x6a5acd },
+ { "medium slate" , 0x7b68ee },
+ { "mediumslateblue" , 0x7b68ee },
+ { "light slate" , 0x8470ff },
+ { "lightslateblue" , 0x8470ff },
+ { "medium blue" , 0xcd },
+ { "mediumblue" , 0xcd },
+ { "royal blue" , 0x4169e1 },
+ { "royalblue" , 0x4169e1 },
+ { "blue" , 0xff },
+ { "dodger blue" , 0x1e90ff },
+ { "dodgerblue" , 0x1e90ff },
+ { "deep sky" , 0xbfff },
+ { "deepskyblue" , 0xbfff },
+ { "sky blue" , 0x87ceeb },
+ { "skyblue" , 0x87ceeb },
+ { "light sky" , 0x87cefa },
+ { "lightskyblue" , 0x87cefa },
+ { "steel blue" , 0x4682b4 },
+ { "steelblue" , 0x4682b4 },
+ { "light steel" , 0xb0c4de },
+ { "lightsteelblue" , 0xb0c4de },
+ { "light blue" , 0xadd8e6 },
+ { "lightblue" , 0xadd8e6 },
+ { "powder blue" , 0xb0e0e6 },
+ { "powderblue" , 0xb0e0e6 },
+ { "pale turquoise" , 0xafeeee },
+ { "paleturquoise" , 0xafeeee },
+ { "dark turquoise" , 0xced1 },
+ { "darkturquoise" , 0xced1 },
+ { "medium turquoise" , 0x48d1cc },
+ { "mediumturquoise" , 0x48d1cc },
+ { "turquoise" , 0x40e0d0 },
+ { "cyan" , 0xffff },
+ { "light cyan" , 0xe0ffff },
+ { "lightcyan" , 0xe0ffff },
+ { "cadet blue" , 0x5f9ea0 },
+ { "cadetblue" , 0x5f9ea0 },
+ { "medium aquamarine" , 0x66cdaa },
+ { "mediumaquamarine" , 0x66cdaa },
+ { "aquamarine" , 0x7fffd4 },
+ { "dark green" , 0x6400 },
+ { "darkgreen" , 0x6400 },
+ { "dark olive" , 0x556b2f },
+ { "darkolivegreen" , 0x556b2f },
+ { "dark sea" , 0x8fbc8f },
+ { "darkseagreen" , 0x8fbc8f },
+ { "sea green" , 0x2e8b57 },
+ { "seagreen" , 0x2e8b57 },
+ { "medium sea" , 0x3cb371 },
+ { "mediumseagreen" , 0x3cb371 },
+ { "light sea" , 0x20b2aa },
+ { "lightseagreen" , 0x20b2aa },
+ { "pale green" , 0x98fb98 },
+ { "palegreen" , 0x98fb98 },
+ { "spring green" , 0xff7f },
+ { "springgreen" , 0xff7f },
+ { "lawn green" , 0x7cfc00 },
+ { "lawngreen" , 0x7cfc00 },
+ { "green" , 0xff00 },
+ { "chartreuse" , 0x7fff00 },
+ { "medium spring" , 0xfa9a },
+ { "mediumspringgreen" , 0xfa9a },
+ { "green yellow" , 0xadff2f },
+ { "greenyellow" , 0xadff2f },
+ { "lime green" , 0x32cd32 },
+ { "limegreen" , 0x32cd32 },
+ { "yellow green" , 0x9acd32 },
+ { "yellowgreen" , 0x9acd32 },
+ { "forest green" , 0x228b22 },
+ { "forestgreen" , 0x228b22 },
+ { "olive drab" , 0x6b8e23 },
+ { "olivedrab" , 0x6b8e23 },
+ { "dark khaki" , 0xbdb76b },
+ { "darkkhaki" , 0xbdb76b },
+ { "khaki" , 0xf0e68c },
+ { "pale goldenrod" , 0xeee8aa },
+ { "palegoldenrod" , 0xeee8aa },
+ { "light goldenrod" , 0xfafad2 },
+ { "lightgoldenrodyellow" , 0xfafad2 },
+ { "light yellow" , 0xffffe0 },
+ { "lightyellow" , 0xffffe0 },
+ { "yellow" , 0xffff00 },
+ { "gold" , 0xffd700 },
+ { "light goldenrod" , 0xeedd82 },
+ { "lightgoldenrod" , 0xeedd82 },
+ { "goldenrod" , 0xdaa520 },
+ { "dark goldenrod" , 0xb8860b },
+ { "darkgoldenrod" , 0xb8860b },
+ { "rosy brown" , 0xbc8f8f },
+ { "rosybrown" , 0xbc8f8f },
+ { "indian red" , 0xcd5c5c },
+ { "indianred" , 0xcd5c5c },
+ { "saddle brown" , 0x8b4513 },
+ { "saddlebrown" , 0x8b4513 },
+ { "sienna" , 0xa0522d },
+ { "peru" , 0xcd853f },
+ { "burlywood" , 0xdeb887 },
+ { "beige" , 0xf5f5dc },
+ { "wheat" , 0xf5deb3 },
+ { "sandy brown" , 0xf4a460 },
+ { "sandybrown" , 0xf4a460 },
+ { "tan" , 0xd2b48c },
+ { "chocolate" , 0xd2691e },
+ { "firebrick" , 0xb22222 },
+ { "brown" , 0xa52a2a },
+ { "dark salmon" , 0xe9967a },
+ { "darksalmon" , 0xe9967a },
+ { "salmon" , 0xfa8072 },
+ { "light salmon" , 0xffa07a },
+ { "lightsalmon" , 0xffa07a },
+ { "orange" , 0xffa500 },
+ { "dark orange" , 0xff8c00 },
+ { "darkorange" , 0xff8c00 },
+ { "coral" , 0xff7f50 },
+ { "light coral" , 0xf08080 },
+ { "lightcoral" , 0xf08080 },
+ { "tomato" , 0xff6347 },
+ { "orange red" , 0xff4500 },
+ { "orangered" , 0xff4500 },
+ { "red" , 0xff0000 },
+ { "hot pink" , 0xff69b4 },
+ { "hotpink" , 0xff69b4 },
+ { "deep pink" , 0xff1493 },
+ { "deeppink" , 0xff1493 },
+ { "pink" , 0xffc0cb },
+ { "light pink" , 0xffb6c1 },
+ { "lightpink" , 0xffb6c1 },
+ { "pale violet" , 0xdb7093 },
+ { "palevioletred" , 0xdb7093 },
+ { "maroon" , 0xb03060 },
+ { "medium violet" , 0xc71585 },
+ { "mediumvioletred" , 0xc71585 },
+ { "violet red" , 0xd02090 },
+ { "violetred" , 0xd02090 },
+ { "magenta" , 0xff00ff },
+ { "violet" , 0xee82ee },
+ { "plum" , 0xdda0dd },
+ { "orchid" , 0xda70d6 },
+ { "medium orchid" , 0xba55d3 },
+ { "mediumorchid" , 0xba55d3 },
+ { "dark orchid" , 0x9932cc },
+ { "darkorchid" , 0x9932cc },
+ { "dark violet" , 0x9400d3 },
+ { "darkviolet" , 0x9400d3 },
+ { "blue violet" , 0x8a2be2 },
+ { "blueviolet" , 0x8a2be2 },
+ { "purple" , 0xa020f0 },
+ { "medium purple" , 0x9370db },
+ { "mediumpurple" , 0x9370db },
+ { "thistle" , 0xd8bfd8 },
+ { "snow1" , 0xfffafa },
+ { "snow2" , 0xeee9e9 },
+ { "snow3" , 0xcdc9c9 },
+ { "snow4" , 0x8b8989 },
+ { "seashell1" , 0xfff5ee },
+ { "seashell2" , 0xeee5de },
+ { "seashell3" , 0xcdc5bf },
+ { "seashell4" , 0x8b8682 },
+ { "antiquewhite1" , 0xffefdb },
+ { "antiquewhite2" , 0xeedfcc },
+ { "antiquewhite3" , 0xcdc0b0 },
+ { "antiquewhite4" , 0x8b8378 },
+ { "bisque1" , 0xffe4c4 },
+ { "bisque2" , 0xeed5b7 },
+ { "bisque3" , 0xcdb79e },
+ { "bisque4" , 0x8b7d6b },
+ { "peachpuff1" , 0xffdab9 },
+ { "peachpuff2" , 0xeecbad },
+ { "peachpuff3" , 0xcdaf95 },
+ { "peachpuff4" , 0x8b7765 },
+ { "navajowhite1" , 0xffdead },
+ { "navajowhite2" , 0xeecfa1 },
+ { "navajowhite3" , 0xcdb38b },
+ { "navajowhite4" , 0x8b795e },
+ { "lemonchiffon1" , 0xfffacd },
+ { "lemonchiffon2" , 0xeee9bf },
+ { "lemonchiffon3" , 0xcdc9a5 },
+ { "lemonchiffon4" , 0x8b8970 },
+ { "cornsilk1" , 0xfff8dc },
+ { "cornsilk2" , 0xeee8cd },
+ { "cornsilk3" , 0xcdc8b1 },
+ { "cornsilk4" , 0x8b8878 },
+ { "ivory1" , 0xfffff0 },
+ { "ivory2" , 0xeeeee0 },
+ { "ivory3" , 0xcdcdc1 },
+ { "ivory4" , 0x8b8b83 },
+ { "honeydew1" , 0xf0fff0 },
+ { "honeydew2" , 0xe0eee0 },
+ { "honeydew3" , 0xc1cdc1 },
+ { "honeydew4" , 0x838b83 },
+ { "lavenderblush1" , 0xfff0f5 },
+ { "lavenderblush2" , 0xeee0e5 },
+ { "lavenderblush3" , 0xcdc1c5 },
+ { "lavenderblush4" , 0x8b8386 },
+ { "mistyrose1" , 0xffe4e1 },
+ { "mistyrose2" , 0xeed5d2 },
+ { "mistyrose3" , 0xcdb7b5 },
+ { "mistyrose4" , 0x8b7d7b },
+ { "azure1" , 0xf0ffff },
+ { "azure2" , 0xe0eeee },
+ { "azure3" , 0xc1cdcd },
+ { "azure4" , 0x838b8b },
+ { "slateblue1" , 0x836fff },
+ { "slateblue2" , 0x7a67ee },
+ { "slateblue3" , 0x6959cd },
+ { "slateblue4" , 0x473c8b },
+ { "royalblue1" , 0x4876ff },
+ { "royalblue2" , 0x436eee },
+ { "royalblue3" , 0x3a5fcd },
+ { "royalblue4" , 0x27408b },
+ { "blue1" , 0xff },
+ { "blue2" , 0xee },
+ { "blue3" , 0xcd },
+ { "blue4" , 0x8b },
+ { "dodgerblue1" , 0x1e90ff },
+ { "dodgerblue2" , 0x1c86ee },
+ { "dodgerblue3" , 0x1874cd },
+ { "dodgerblue4" , 0x104e8b },
+ { "steelblue1" , 0x63b8ff },
+ { "steelblue2" , 0x5cacee },
+ { "steelblue3" , 0x4f94cd },
+ { "steelblue4" , 0x36648b },
+ { "deepskyblue1" , 0xbfff },
+ { "deepskyblue2" , 0xb2ee },
+ { "deepskyblue3" , 0x9acd },
+ { "deepskyblue4" , 0x688b },
+ { "skyblue1" , 0x87ceff },
+ { "skyblue2" , 0x7ec0ee },
+ { "skyblue3" , 0x6ca6cd },
+ { "skyblue4" , 0x4a708b },
+ { "lightskyblue1" , 0xb0e2ff },
+ { "lightskyblue2" , 0xa4d3ee },
+ { "lightskyblue3" , 0x8db6cd },
+ { "lightskyblue4" , 0x607b8b },
+ { "slategray1" , 0xc6e2ff },
+ { "slategray2" , 0xb9d3ee },
+ { "slategray3" , 0x9fb6cd },
+ { "slategray4" , 0x6c7b8b },
+ { "lightsteelblue1" , 0xcae1ff },
+ { "lightsteelblue2" , 0xbcd2ee },
+ { "lightsteelblue3" , 0xa2b5cd },
+ { "lightsteelblue4" , 0x6e7b8b },
+ { "lightblue1" , 0xbfefff },
+ { "lightblue2" , 0xb2dfee },
+ { "lightblue3" , 0x9ac0cd },
+ { "lightblue4" , 0x68838b },
+ { "lightcyan1" , 0xe0ffff },
+ { "lightcyan2" , 0xd1eeee },
+ { "lightcyan3" , 0xb4cdcd },
+ { "lightcyan4" , 0x7a8b8b },
+ { "paleturquoise1" , 0xbbffff },
+ { "paleturquoise2" , 0xaeeeee },
+ { "paleturquoise3" , 0x96cdcd },
+ { "paleturquoise4" , 0x668b8b },
+ { "cadetblue1" , 0x98f5ff },
+ { "cadetblue2" , 0x8ee5ee },
+ { "cadetblue3" , 0x7ac5cd },
+ { "cadetblue4" , 0x53868b },
+ { "turquoise1" , 0xf5ff },
+ { "turquoise2" , 0xe5ee },
+ { "turquoise3" , 0xc5cd },
+ { "turquoise4" , 0x868b },
+ { "cyan1" , 0xffff },
+ { "cyan2" , 0xeeee },
+ { "cyan3" , 0xcdcd },
+ { "cyan4" , 0x8b8b },
+ { "darkslategray1" , 0x97ffff },
+ { "darkslategray2" , 0x8deeee },
+ { "darkslategray3" , 0x79cdcd },
+ { "darkslategray4" , 0x528b8b },
+ { "aquamarine1" , 0x7fffd4 },
+ { "aquamarine2" , 0x76eec6 },
+ { "aquamarine3" , 0x66cdaa },
+ { "aquamarine4" , 0x458b74 },
+ { "darkseagreen1" , 0xc1ffc1 },
+ { "darkseagreen2" , 0xb4eeb4 },
+ { "darkseagreen3" , 0x9bcd9b },
+ { "darkseagreen4" , 0x698b69 },
+ { "seagreen1" , 0x54ff9f },
+ { "seagreen2" , 0x4eee94 },
+ { "seagreen3" , 0x43cd80 },
+ { "seagreen4" , 0x2e8b57 },
+ { "palegreen1" , 0x9aff9a },
+ { "palegreen2" , 0x90ee90 },
+ { "palegreen3" , 0x7ccd7c },
+ { "palegreen4" , 0x548b54 },
+ { "springgreen1" , 0xff7f },
+ { "springgreen2" , 0xee76 },
+ { "springgreen3" , 0xcd66 },
+ { "springgreen4" , 0x8b45 },
+ { "green1" , 0xff00 },
+ { "green2" , 0xee00 },
+ { "green3" , 0xcd00 },
+ { "green4" , 0x8b00 },
+ { "chartreuse1" , 0x7fff00 },
+ { "chartreuse2" , 0x76ee00 },
+ { "chartreuse3" , 0x66cd00 },
+ { "chartreuse4" , 0x458b00 },
+ { "olivedrab1" , 0xc0ff3e },
+ { "olivedrab2" , 0xb3ee3a },
+ { "olivedrab3" , 0x9acd32 },
+ { "olivedrab4" , 0x698b22 },
+ { "darkolivegreen1" , 0xcaff70 },
+ { "darkolivegreen2" , 0xbcee68 },
+ { "darkolivegreen3" , 0xa2cd5a },
+ { "darkolivegreen4" , 0x6e8b3d },
+ { "khaki1" , 0xfff68f },
+ { "khaki2" , 0xeee685 },
+ { "khaki3" , 0xcdc673 },
+ { "khaki4" , 0x8b864e },
+ { "lightgoldenrod1" , 0xffec8b },
+ { "lightgoldenrod2" , 0xeedc82 },
+ { "lightgoldenrod3" , 0xcdbe70 },
+ { "lightgoldenrod4" , 0x8b814c },
+ { "lightyellow1" , 0xffffe0 },
+ { "lightyellow2" , 0xeeeed1 },
+ { "lightyellow3" , 0xcdcdb4 },
+ { "lightyellow4" , 0x8b8b7a },
+ { "yellow1" , 0xffff00 },
+ { "yellow2" , 0xeeee00 },
+ { "yellow3" , 0xcdcd00 },
+ { "yellow4" , 0x8b8b00 },
+ { "gold1" , 0xffd700 },
+ { "gold2" , 0xeec900 },
+ { "gold3" , 0xcdad00 },
+ { "gold4" , 0x8b7500 },
+ { "goldenrod1" , 0xffc125 },
+ { "goldenrod2" , 0xeeb422 },
+ { "goldenrod3" , 0xcd9b1d },
+ { "goldenrod4" , 0x8b6914 },
+ { "darkgoldenrod1" , 0xffb90f },
+ { "darkgoldenrod2" , 0xeead0e },
+ { "darkgoldenrod3" , 0xcd950c },
+ { "darkgoldenrod4" , 0x8b6508 },
+ { "rosybrown1" , 0xffc1c1 },
+ { "rosybrown2" , 0xeeb4b4 },
+ { "rosybrown3" , 0xcd9b9b },
+ { "rosybrown4" , 0x8b6969 },
+ { "indianred1" , 0xff6a6a },
+ { "indianred2" , 0xee6363 },
+ { "indianred3" , 0xcd5555 },
+ { "indianred4" , 0x8b3a3a },
+ { "sienna1" , 0xff8247 },
+ { "sienna2" , 0xee7942 },
+ { "sienna3" , 0xcd6839 },
+ { "sienna4" , 0x8b4726 },
+ { "burlywood1" , 0xffd39b },
+ { "burlywood2" , 0xeec591 },
+ { "burlywood3" , 0xcdaa7d },
+ { "burlywood4" , 0x8b7355 },
+ { "wheat1" , 0xffe7ba },
+ { "wheat2" , 0xeed8ae },
+ { "wheat3" , 0xcdba96 },
+ { "wheat4" , 0x8b7e66 },
+ { "tan1" , 0xffa54f },
+ { "tan2" , 0xee9a49 },
+ { "tan3" , 0xcd853f },
+ { "tan4" , 0x8b5a2b },
+ { "chocolate1" , 0xff7f24 },
+ { "chocolate2" , 0xee7621 },
+ { "chocolate3" , 0xcd661d },
+ { "chocolate4" , 0x8b4513 },
+ { "firebrick1" , 0xff3030 },
+ { "firebrick2" , 0xee2c2c },
+ { "firebrick3" , 0xcd2626 },
+ { "firebrick4" , 0x8b1a1a },
+ { "brown1" , 0xff4040 },
+ { "brown2" , 0xee3b3b },
+ { "brown3" , 0xcd3333 },
+ { "brown4" , 0x8b2323 },
+ { "salmon1" , 0xff8c69 },
+ { "salmon2" , 0xee8262 },
+ { "salmon3" , 0xcd7054 },
+ { "salmon4" , 0x8b4c39 },
+ { "lightsalmon1" , 0xffa07a },
+ { "lightsalmon2" , 0xee9572 },
+ { "lightsalmon3" , 0xcd8162 },
+ { "lightsalmon4" , 0x8b5742 },
+ { "orange1" , 0xffa500 },
+ { "orange2" , 0xee9a00 },
+ { "orange3" , 0xcd8500 },
+ { "orange4" , 0x8b5a00 },
+ { "darkorange1" , 0xff7f00 },
+ { "darkorange2" , 0xee7600 },
+ { "darkorange3" , 0xcd6600 },
+ { "darkorange4" , 0x8b4500 },
+ { "coral1" , 0xff7256 },
+ { "coral2" , 0xee6a50 },
+ { "coral3" , 0xcd5b45 },
+ { "coral4" , 0x8b3e2f },
+ { "tomato1" , 0xff6347 },
+ { "tomato2" , 0xee5c42 },
+ { "tomato3" , 0xcd4f39 },
+ { "tomato4" , 0x8b3626 },
+ { "orangered1" , 0xff4500 },
+ { "orangered2" , 0xee4000 },
+ { "orangered3" , 0xcd3700 },
+ { "orangered4" , 0x8b2500 },
+ { "red1" , 0xff0000 },
+ { "red2" , 0xee0000 },
+ { "red3" , 0xcd0000 },
+ { "red4" , 0x8b0000 },
+ { "deeppink1" , 0xff1493 },
+ { "deeppink2" , 0xee1289 },
+ { "deeppink3" , 0xcd1076 },
+ { "deeppink4" , 0x8b0a50 },
+ { "hotpink1" , 0xff6eb4 },
+ { "hotpink2" , 0xee6aa7 },
+ { "hotpink3" , 0xcd6090 },
+ { "hotpink4" , 0x8b3a62 },
+ { "pink1" , 0xffb5c5 },
+ { "pink2" , 0xeea9b8 },
+ { "pink3" , 0xcd919e },
+ { "pink4" , 0x8b636c },
+ { "lightpink1" , 0xffaeb9 },
+ { "lightpink2" , 0xeea2ad },
+ { "lightpink3" , 0xcd8c95 },
+ { "lightpink4" , 0x8b5f65 },
+ { "palevioletred1" , 0xff82ab },
+ { "palevioletred2" , 0xee799f },
+ { "palevioletred3" , 0xcd6889 },
+ { "palevioletred4" , 0x8b475d },
+ { "maroon1" , 0xff34b3 },
+ { "maroon2" , 0xee30a7 },
+ { "maroon3" , 0xcd2990 },
+ { "maroon4" , 0x8b1c62 },
+ { "violetred1" , 0xff3e96 },
+ { "violetred2" , 0xee3a8c },
+ { "violetred3" , 0xcd3278 },
+ { "violetred4" , 0x8b2252 },
+ { "magenta1" , 0xff00ff },
+ { "magenta2" , 0xee00ee },
+ { "magenta3" , 0xcd00cd },
+ { "magenta4" , 0x8b008b },
+ { "orchid1" , 0xff83fa },
+ { "orchid2" , 0xee7ae9 },
+ { "orchid3" , 0xcd69c9 },
+ { "orchid4" , 0x8b4789 },
+ { "plum1" , 0xffbbff },
+ { "plum2" , 0xeeaeee },
+ { "plum3" , 0xcd96cd },
+ { "plum4" , 0x8b668b },
+ { "mediumorchid1" , 0xe066ff },
+ { "mediumorchid2" , 0xd15fee },
+ { "mediumorchid3" , 0xb452cd },
+ { "mediumorchid4" , 0x7a378b },
+ { "darkorchid1" , 0xbf3eff },
+ { "darkorchid2" , 0xb23aee },
+ { "darkorchid3" , 0x9a32cd },
+ { "darkorchid4" , 0x68228b },
+ { "purple1" , 0x9b30ff },
+ { "purple2" , 0x912cee },
+ { "purple3" , 0x7d26cd },
+ { "purple4" , 0x551a8b },
+ { "mediumpurple1" , 0xab82ff },
+ { "mediumpurple2" , 0x9f79ee },
+ { "mediumpurple3" , 0x8968cd },
+ { "mediumpurple4" , 0x5d478b },
+ { "thistle1" , 0xffe1ff },
+ { "thistle2" , 0xeed2ee },
+ { "thistle3" , 0xcdb5cd },
+ { "thistle4" , 0x8b7b8b },
+ { "gray0" , 0x0 },
+ { "grey0" , 0x0 },
+ { "gray1" , 0x30303 },
+ { "grey1" , 0x30303 },
+ { "gray2" , 0x50505 },
+ { "grey2" , 0x50505 },
+ { "gray3" , 0x80808 },
+ { "grey3" , 0x80808 },
+ { "gray4" , 0xa0a0a },
+ { "grey4" , 0xa0a0a },
+ { "gray5" , 0xd0d0d },
+ { "grey5" , 0xd0d0d },
+ { "gray6" , 0xf0f0f },
+ { "grey6" , 0xf0f0f },
+ { "gray7" , 0x121212 },
+ { "grey7" , 0x121212 },
+ { "gray8" , 0x141414 },
+ { "grey8" , 0x141414 },
+ { "gray9" , 0x171717 },
+ { "grey9" , 0x171717 },
+ { "gray10" , 0x1a1a1a },
+ { "grey10" , 0x1a1a1a },
+ { "gray11" , 0x1c1c1c },
+ { "grey11" , 0x1c1c1c },
+ { "gray12" , 0x1f1f1f },
+ { "grey12" , 0x1f1f1f },
+ { "gray13" , 0x212121 },
+ { "grey13" , 0x212121 },
+ { "gray14" , 0x242424 },
+ { "grey14" , 0x242424 },
+ { "gray15" , 0x262626 },
+ { "grey15" , 0x262626 },
+ { "gray16" , 0x292929 },
+ { "grey16" , 0x292929 },
+ { "gray17" , 0x2b2b2b },
+ { "grey17" , 0x2b2b2b },
+ { "gray18" , 0x2e2e2e },
+ { "grey18" , 0x2e2e2e },
+ { "gray19" , 0x303030 },
+ { "grey19" , 0x303030 },
+ { "gray20" , 0x333333 },
+ { "grey20" , 0x333333 },
+ { "gray21" , 0x363636 },
+ { "grey21" , 0x363636 },
+ { "gray22" , 0x383838 },
+ { "grey22" , 0x383838 },
+ { "gray23" , 0x3b3b3b },
+ { "grey23" , 0x3b3b3b },
+ { "gray24" , 0x3d3d3d },
+ { "grey24" , 0x3d3d3d },
+ { "gray25" , 0x404040 },
+ { "grey25" , 0x404040 },
+ { "gray26" , 0x424242 },
+ { "grey26" , 0x424242 },
+ { "gray27" , 0x454545 },
+ { "grey27" , 0x454545 },
+ { "gray28" , 0x474747 },
+ { "grey28" , 0x474747 },
+ { "gray29" , 0x4a4a4a },
+ { "grey29" , 0x4a4a4a },
+ { "gray30" , 0x4d4d4d },
+ { "grey30" , 0x4d4d4d },
+ { "gray31" , 0x4f4f4f },
+ { "grey31" , 0x4f4f4f },
+ { "gray32" , 0x525252 },
+ { "grey32" , 0x525252 },
+ { "gray33" , 0x545454 },
+ { "grey33" , 0x545454 },
+ { "gray34" , 0x575757 },
+ { "grey34" , 0x575757 },
+ { "gray35" , 0x595959 },
+ { "grey35" , 0x595959 },
+ { "gray36" , 0x5c5c5c },
+ { "grey36" , 0x5c5c5c },
+ { "gray37" , 0x5e5e5e },
+ { "grey37" , 0x5e5e5e },
+ { "gray38" , 0x616161 },
+ { "grey38" , 0x616161 },
+ { "gray39" , 0x636363 },
+ { "grey39" , 0x636363 },
+ { "gray40" , 0x666666 },
+ { "grey40" , 0x666666 },
+ { "gray41" , 0x696969 },
+ { "grey41" , 0x696969 },
+ { "gray42" , 0x6b6b6b },
+ { "grey42" , 0x6b6b6b },
+ { "gray43" , 0x6e6e6e },
+ { "grey43" , 0x6e6e6e },
+ { "gray44" , 0x707070 },
+ { "grey44" , 0x707070 },
+ { "gray45" , 0x737373 },
+ { "grey45" , 0x737373 },
+ { "gray46" , 0x757575 },
+ { "grey46" , 0x757575 },
+ { "gray47" , 0x787878 },
+ { "grey47" , 0x787878 },
+ { "gray48" , 0x7a7a7a },
+ { "grey48" , 0x7a7a7a },
+ { "gray49" , 0x7d7d7d },
+ { "grey49" , 0x7d7d7d },
+ { "gray50" , 0x7f7f7f },
+ { "grey50" , 0x7f7f7f },
+ { "gray51" , 0x828282 },
+ { "grey51" , 0x828282 },
+ { "gray52" , 0x858585 },
+ { "grey52" , 0x858585 },
+ { "gray53" , 0x878787 },
+ { "grey53" , 0x878787 },
+ { "gray54" , 0x8a8a8a },
+ { "grey54" , 0x8a8a8a },
+ { "gray55" , 0x8c8c8c },
+ { "grey55" , 0x8c8c8c },
+ { "gray56" , 0x8f8f8f },
+ { "grey56" , 0x8f8f8f },
+ { "gray57" , 0x919191 },
+ { "grey57" , 0x919191 },
+ { "gray58" , 0x949494 },
+ { "grey58" , 0x949494 },
+ { "gray59" , 0x969696 },
+ { "grey59" , 0x969696 },
+ { "gray60" , 0x999999 },
+ { "grey60" , 0x999999 },
+ { "gray61" , 0x9c9c9c },
+ { "grey61" , 0x9c9c9c },
+ { "gray62" , 0x9e9e9e },
+ { "grey62" , 0x9e9e9e },
+ { "gray63" , 0xa1a1a1 },
+ { "grey63" , 0xa1a1a1 },
+ { "gray64" , 0xa3a3a3 },
+ { "grey64" , 0xa3a3a3 },
+ { "gray65" , 0xa6a6a6 },
+ { "grey65" , 0xa6a6a6 },
+ { "gray66" , 0xa8a8a8 },
+ { "grey66" , 0xa8a8a8 },
+ { "gray67" , 0xababab },
+ { "grey67" , 0xababab },
+ { "gray68" , 0xadadad },
+ { "grey68" , 0xadadad },
+ { "gray69" , 0xb0b0b0 },
+ { "grey69" , 0xb0b0b0 },
+ { "gray70" , 0xb3b3b3 },
+ { "grey70" , 0xb3b3b3 },
+ { "gray71" , 0xb5b5b5 },
+ { "grey71" , 0xb5b5b5 },
+ { "gray72" , 0xb8b8b8 },
+ { "grey72" , 0xb8b8b8 },
+ { "gray73" , 0xbababa },
+ { "grey73" , 0xbababa },
+ { "gray74" , 0xbdbdbd },
+ { "grey74" , 0xbdbdbd },
+ { "gray75" , 0xbfbfbf },
+ { "grey75" , 0xbfbfbf },
+ { "gray76" , 0xc2c2c2 },
+ { "grey76" , 0xc2c2c2 },
+ { "gray77" , 0xc4c4c4 },
+ { "grey77" , 0xc4c4c4 },
+ { "gray78" , 0xc7c7c7 },
+ { "grey78" , 0xc7c7c7 },
+ { "gray79" , 0xc9c9c9 },
+ { "grey79" , 0xc9c9c9 },
+ { "gray80" , 0xcccccc },
+ { "grey80" , 0xcccccc },
+ { "gray81" , 0xcfcfcf },
+ { "grey81" , 0xcfcfcf },
+ { "gray82" , 0xd1d1d1 },
+ { "grey82" , 0xd1d1d1 },
+ { "gray83" , 0xd4d4d4 },
+ { "grey83" , 0xd4d4d4 },
+ { "gray84" , 0xd6d6d6 },
+ { "grey84" , 0xd6d6d6 },
+ { "gray85" , 0xd9d9d9 },
+ { "grey85" , 0xd9d9d9 },
+ { "gray86" , 0xdbdbdb },
+ { "grey86" , 0xdbdbdb },
+ { "gray87" , 0xdedede },
+ { "grey87" , 0xdedede },
+ { "gray88" , 0xe0e0e0 },
+ { "grey88" , 0xe0e0e0 },
+ { "gray89" , 0xe3e3e3 },
+ { "grey89" , 0xe3e3e3 },
+ { "gray90" , 0xe5e5e5 },
+ { "grey90" , 0xe5e5e5 },
+ { "gray91" , 0xe8e8e8 },
+ { "grey91" , 0xe8e8e8 },
+ { "gray92" , 0xebebeb },
+ { "grey92" , 0xebebeb },
+ { "gray93" , 0xededed },
+ { "grey93" , 0xededed },
+ { "gray94" , 0xf0f0f0 },
+ { "grey94" , 0xf0f0f0 },
+ { "gray95" , 0xf2f2f2 },
+ { "grey95" , 0xf2f2f2 },
+ { "gray96" , 0xf5f5f5 },
+ { "grey96" , 0xf5f5f5 },
+ { "gray97" , 0xf7f7f7 },
+ { "grey97" , 0xf7f7f7 },
+ { "gray98" , 0xfafafa },
+ { "grey98" , 0xfafafa },
+ { "gray99" , 0xfcfcfc },
+ { "grey99" , 0xfcfcfc },
+ { "gray100" , 0xffffff },
+ { "grey100" , 0xffffff },
+ { "dark grey" , 0xa9a9a9 },
+ { "darkgrey" , 0xa9a9a9 },
+ { "dark gray" , 0xa9a9a9 },
+ { "darkgray" , 0xa9a9a9 },
+ { "dark blue" , 0x8b },
+ { "darkblue" , 0x8b },
+ { "dark cyan" , 0x8b8b },
+ { "darkcyan" , 0x8b8b },
+ { "dark magenta" , 0x8b008b },
+ { "darkmagenta" , 0x8b008b },
+ { "dark red" , 0x8b0000 },
+ { "darkred" , 0x8b0000 },
+ { "light green" , 0x90ee90 },
+ { "lightgreen" , 0x90ee90 },
+ { "none", -1 },
+ { 0, 0 }
+};
diff --git a/minilibx/mlx_shaders.c b/minilibx/mlx_shaders.c
new file mode 100644
index 0000000..4a58955
--- /dev/null
+++ b/minilibx/mlx_shaders.c
@@ -0,0 +1,240 @@
+//  mlx_shaders.c
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <OpenGL/gl3.h>
+#include "mlx_int.h"
+
+
+void display_log(GLuint object, void (*param_func)(), void (*getlog_func)())
+{
+  GLint log_length;
+  char *log;
+
+  param_func(object, GL_INFO_LOG_LENGTH, &log_length);
+  log = malloc(log_length);
+  getlog_func(object, log_length, NULL, log);
+  fprintf(stderr, "%s", log);
+  free(log);
+}
+
+
+int mlx_shaders_pixel(glsl_info_t *glsl)
+{
+  char  *source;
+  int	length;
+  GLint action_ok;
+
+  glsl->pixel_vshader = glCreateShader(GL_VERTEX_SHADER);
+  source = strdup("#version 110 \n"
+		  "attribute vec2 position;"
+		  "varying vec2 texcoord;"
+		  "void main()"
+		  "{"
+		  " gl_Position = vec4( position, 0.0, 1.0);"
+		  " texcoord = vec2(position[0]+1.0, 1.0 - position[1]) / 2.0;"
+		  "}");
+  length = strlen(source);
+  glShaderSource(glsl->pixel_vshader, 1, (const GLchar**)&source, &length);
+  glCompileShader(glsl->pixel_vshader);
+  free(source);
+
+  glGetShaderiv(glsl->pixel_vshader, GL_COMPILE_STATUS, &action_ok);
+  if (!action_ok) {
+    fprintf(stderr, "Failed to compile pixel vshader :\n");
+    display_log(glsl->pixel_vshader, glGetShaderiv, glGetShaderInfoLog);
+    return (1);
+  }
+
+  glsl->pixel_fshader = glCreateShader(GL_FRAGMENT_SHADER);
+  source = strdup("#version 110 \n"
+		  "uniform sampler2D texture;"
+		  "varying vec2 texcoord;"
+		  "void main()"
+		  "{"
+		  " gl_FragColor = texture2D(texture, texcoord);"
+		  "}");
+  length = strlen(source);
+  glShaderSource(glsl->pixel_fshader, 1, (const GLchar**)&source, &length);
+  glCompileShader(glsl->pixel_fshader);
+  free(source);
+
+  glGetShaderiv(glsl->pixel_fshader, GL_COMPILE_STATUS, &action_ok);
+  if (!action_ok) {
+    fprintf(stderr, "Failed to compile pixel fshader :\n");
+    display_log(glsl->pixel_fshader, glGetShaderiv, glGetShaderInfoLog);
+    return (1);
+  }
+
+  glsl->pixel_program = glCreateProgram();
+  glAttachShader(glsl->pixel_program, glsl->pixel_vshader);
+  glAttachShader(glsl->pixel_program, glsl->pixel_fshader);
+  glLinkProgram(glsl->pixel_program);
+
+  glGetProgramiv(glsl->pixel_program, GL_LINK_STATUS, &action_ok);
+  if (!action_ok) {
+    fprintf(stderr, "Failed to link pixel shader program:\n");
+    display_log(glsl->pixel_program, glGetProgramiv, glGetProgramInfoLog);
+    return (1);
+  }
+
+  glFlush();
+
+  return (0);
+}
+
+
+int mlx_shaders_image(glsl_info_t *glsl)
+{
+  char  *source;
+  int	length;
+  GLint action_ok;
+
+  glsl->image_vshader = glCreateShader(GL_VERTEX_SHADER);
+  source = strdup("#version 110 \n"
+		  "attribute vec2 position;"
+		  "uniform vec2 winhalfsize;"
+		  "uniform vec2 imagepos;"
+		  "uniform vec2 imagesize;"
+		  "varying vec2 texcoord;"
+		  "void main()"
+		  "{"
+		  " texcoord = position / imagesize;"
+		  " vec2 pos = position - winhalfsize + imagepos;"
+		  " pos = pos / winhalfsize;"
+		  " gl_Position = vec4( pos, 0.0, 1.0);"
+		  "}");
+  length = strlen(source);
+  glShaderSource(glsl->image_vshader, 1, (const GLchar**)&source, &length);
+  glCompileShader(glsl->image_vshader);
+  free(source);
+
+  glGetShaderiv(glsl->image_vshader, GL_COMPILE_STATUS, &action_ok);
+  if (!action_ok) {
+    fprintf(stderr, "Failed to compile image vshader :\n");
+    display_log(glsl->image_vshader, glGetShaderiv, glGetShaderInfoLog);
+    return (1);
+  }
+
+  glsl->image_fshader = glCreateShader(GL_FRAGMENT_SHADER);
+  source = strdup("#version 110 \n"
+		  "uniform sampler2D texture;"
+		  "varying vec2 texcoord;"
+		  "void main()"
+		  "{"
+		  " gl_FragColor = texture2D(texture, texcoord);"
+		  "}");
+  length = strlen(source);
+  glShaderSource(glsl->image_fshader, 1, (const GLchar**)&source, &length);
+  glCompileShader(glsl->image_fshader);
+  free(source);
+
+  glGetShaderiv(glsl->image_fshader, GL_COMPILE_STATUS, &action_ok);
+  if (!action_ok) {
+    fprintf(stderr, "Failed to compile image fshader :\n");
+    display_log(glsl->image_fshader, glGetShaderiv, glGetShaderInfoLog);
+    return (1);
+  }
+
+  glsl->image_program = glCreateProgram();
+  glAttachShader(glsl->image_program, glsl->image_vshader);
+  glAttachShader(glsl->image_program, glsl->image_fshader);
+  glLinkProgram(glsl->image_program);
+
+  glGetProgramiv(glsl->image_program, GL_LINK_STATUS, &action_ok);
+  if (!action_ok) {
+    fprintf(stderr, "Failed to link image shader program:\n");
+    display_log(glsl->image_program, glGetProgramiv, glGetProgramInfoLog);
+    return (1);
+  }
+
+  glFlush();
+
+  return (0);
+}
+
+
+
+
+int mlx_shaders_font(glsl_info_t *glsl)
+{
+  char  *source;
+  int	length;
+  GLint action_ok;
+
+  glsl->font_vshader = glCreateShader(GL_VERTEX_SHADER);
+  source = strdup("#version 110 \n"
+		  "attribute vec2 position;"
+		  "uniform vec2 winhalfsize;"
+		  "uniform vec2 fontposinwin;"
+		  "uniform vec2 fontposinatlas;"
+		  "uniform vec2 fontatlassize;"
+		  "varying vec2 texcoord;"
+		  "void main()"
+		  "{"
+#ifdef STRINGPUTX11
+		  " texcoord = (position * vec2(1.4, -1.4) + fontposinatlas ) / fontatlassize;"
+#else
+		  " texcoord = (position * vec2(1.0, -1.0) + fontposinatlas ) / fontatlassize;"
+#endif
+		  " vec2 pos = position - winhalfsize + fontposinwin;"
+		  " pos = pos / winhalfsize;"
+		  " gl_Position = vec4( pos, 0.0, 1.0);"
+		  "}");
+  length = strlen(source);
+  glShaderSource(glsl->font_vshader, 1, (const GLchar**)&source, &length);
+  glCompileShader(glsl->font_vshader);
+  free(source);
+
+  glGetShaderiv(glsl->font_vshader, GL_COMPILE_STATUS, &action_ok);
+  if (!action_ok) {
+    fprintf(stderr, "Failed to compile font vshader :\n");
+    display_log(glsl->font_vshader, glGetShaderiv, glGetShaderInfoLog);
+    return (1);
+  }
+
+  glsl->font_fshader = glCreateShader(GL_FRAGMENT_SHADER);
+  source = strdup("#version 110 \n"
+		  "uniform sampler2D texture;"
+		  "uniform vec4 color;"
+		  "varying vec2 texcoord;"
+		  "void main()"
+		  "{"
+		  " gl_FragColor = color * texture2D(texture, texcoord);"
+		  "}");
+  length = strlen(source);
+  glShaderSource(glsl->font_fshader, 1, (const GLchar**)&source, &length);
+  glCompileShader(glsl->font_fshader);
+  free(source);
+
+  glGetShaderiv(glsl->font_fshader, GL_COMPILE_STATUS, &action_ok);
+  if (!action_ok) {
+    fprintf(stderr, "Failed to compile font fshader :\n");
+    display_log(glsl->font_fshader, glGetShaderiv, glGetShaderInfoLog);
+    return (1);
+  }
+
+  glsl->font_program = glCreateProgram();
+  glAttachShader(glsl->font_program, glsl->font_vshader);
+  glAttachShader(glsl->font_program, glsl->font_fshader);
+  glLinkProgram(glsl->font_program);
+
+  glGetProgramiv(glsl->font_program, GL_LINK_STATUS, &action_ok);
+  if (!action_ok) {
+    fprintf(stderr, "Failed to link font shader program:\n");
+    display_log(glsl->font_program, glGetProgramiv, glGetProgramInfoLog);
+    return (1);
+  }
+
+  glFlush();
+
+  return (0);
+}
+
+
+
+int mlx_shaders(glsl_info_t *glsl)
+{
+  return (mlx_shaders_pixel(glsl) + mlx_shaders_image(glsl) + mlx_shaders_font(glsl));
+}
diff --git a/minilibx/mlx_xpm.c b/minilibx/mlx_xpm.c
new file mode 100644
index 0000000..78d8c9b
--- /dev/null
+++ b/minilibx/mlx_xpm.c
@@ -0,0 +1,338 @@
+// mlx xpm
+// by ol
+
+#include <OpenGL/gl3.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <sys/mman.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <string.h>
+#include	"mlx_int.h"
+
+typedef struct  s_xpm_col
+{
+  int           name;
+  int           col;
+} t_xpm_col;
+
+
+struct  s_col_name
+{
+  char  *name;
+  int   color;
+};
+
+//extern struct s_col_name mlx_col_name[];
+#include "mlx_rgb.c"
+
+
+#define	RETURN	{ if (colors) free(colors); if (tab) free(tab); \
+		  if (colors_direct) free(colors_direct); \
+                  if (img) mlx_destroy_image(xvar, img);   \
+                  return ((void *)0); }
+
+
+
+
+char	*mlx_int_get_line(char *ptr,int *pos,int size)
+{
+  int	pos2;
+  int	pos3;
+  int	pos4;
+
+  if ((pos2 = mlx_int_str_str(ptr+*pos,"\"",size-*pos))==-1)
+    return ((char *)0);
+  if ((pos3 = mlx_int_str_str(ptr+*pos+pos2+1,"\"",size-*pos-pos2-1))==-1)
+    return ((char *)0);
+  *(ptr+*pos+pos2) = 0;
+  *(ptr+*pos+pos2+1+pos3) = 0;
+  pos4 = *pos+pos2+1;
+  *pos += pos2+pos3+2;
+  return (ptr+pos4);
+}
+
+
+
+char	*mlx_int_static_line(char **xpm_data,int *pos,int size)
+{
+  static char	*copy = 0;
+  static int	len = 0;
+  int		len2;
+  char		*str;
+
+  str = xpm_data[(*pos)++];
+  if ((len2 = strlen(str))>len)
+    {
+      if (copy)
+	free(copy);
+      if (!(copy = malloc(len2+1)))
+	return ((char *)0);
+      len = len2;
+    }
+  /* strcpy(copy,str); */
+  strlcpy(copy, str, len2+1);
+  return (copy);
+}
+
+
+int	mlx_int_get_col_name(char *str,int size)
+{
+  int	result;
+
+  result = 0;
+  while (size--)
+    result = (result<<8)+*(str++);
+  return (result);
+}
+
+int	mlx_int_get_text_rgb(char *name, char *end)
+{
+  int	i;
+  char	buff[64];
+
+  if (*name == '#')
+    return (strtol(name+1,0,16));
+  if (end)
+    {
+      snprintf(buff, 64, "%s %s", name, end);
+      name = buff;
+    }
+  i = 0;
+  while (mlx_col_name[i].name)
+    {
+      if (!strcasecmp(mlx_col_name[i].name, name))
+	return (mlx_col_name[i].color);
+      i ++;
+    }
+  return (0);
+}
+
+
+void	mlx_int_xpm_set_pixel(mlx_img_list_t *img, char *data, int opp, int col, int x)
+{
+  /*
+  int	dec;
+
+  dec = opp;
+  while (dec--)
+    {
+      if (img->image->byte_order)
+	*(data+x*opp+dec) = col&0xFF;
+      else
+	*(data+x*opp+opp-dec-1) = col&0xFF;
+      col >>= 8;
+    }
+  */
+  // opp is 4, do it the simple way
+  *((unsigned int *)(data+4*x)) = col;
+}
+
+
+void	*mlx_int_parse_xpm(mlx_ptr_t *xvar,void *info,int info_size,char *(*f)())
+{
+  int	pos;
+  char	*line;
+  char	**tab;
+  char	*data;
+  char	*clip_data;
+  int	nc;
+  int	opp;
+  int	cpp;
+  int	col;
+  int	rgb_col;
+  int	col_name;
+  int	method;
+  int	x;
+  int	i;
+  int	j;
+  mlx_img_list_t	*img;
+  t_xpm_col	*colors;
+  int		*colors_direct;
+  int	width;
+  int	height;
+
+  colors = 0;
+  colors_direct = 0;
+  img = 0;
+  tab = 0;
+  pos = 0;
+  if (!(line = f(info,&pos,info_size)) ||
+      !(tab = mlx_int_str_to_wordtab(line)) || !(width = atoi(tab[0])) ||
+      !(height = atoi(tab[1])) || !(nc = atoi(tab[2])) ||
+      !(cpp = atoi(tab[3])) )
+    RETURN;
+  free(tab);
+  tab = 0;
+
+  method = 0;
+  if (cpp<=2)
+    {
+      method = 1;
+      if (!(colors_direct = malloc((cpp==2?65536:256)*sizeof(int))))
+	RETURN;
+    }
+  else
+    if (!(colors = malloc(nc*sizeof(*colors))))
+      RETURN;
+
+  clip_data = 0;
+
+  i = nc;
+  while (i--)
+    {
+      if (!(line = f(info,&pos,info_size)) ||
+	  !(tab = mlx_int_str_to_wordtab(line+cpp)) )
+	RETURN;
+      j = 0;
+      while (tab[j] && strcmp(tab[j++],"c"));
+
+      if (!tab[j])
+	RETURN;
+
+      rgb_col = mlx_int_get_text_rgb(tab[j], tab[j+1]);
+      /*      
+      if ((rgb_col = mlx_int_get_text_rgb(tab[j], tab[j+1]))==-1)
+	{
+	  if (!(clip_data = malloc(4*width*height)) ||   // ok, nice size ..
+	      !(clip_img = XCreateImage(xvar->display, xvar->visual,
+					1, XYPixmap, 0, clip_data,
+					width, height, 8, (width+7)/8)) )
+	    RETURN;
+	  memset(clip_data, 0xFF, 4*width*height);
+	}
+      */
+      if (method)
+	colors_direct[mlx_int_get_col_name(line,cpp)] = rgb_col;
+      //	  rgb_col>=0?mlx_get_color_value(xvar, rgb_col):rgb_col;
+      else
+	{
+	  colors[i].name = mlx_int_get_col_name(line,cpp);
+	  colors[i].col = rgb_col; // rgb_col>=0?mlx_get_color_value(xvar,rgb_col):rgb_col;
+	}
+      free(tab);
+      tab = 0;
+    }
+
+  if (!(img = mlx_new_image(xvar,width,height)))
+    RETURN;
+  //opp = img->bpp/8;
+  opp = 4;
+
+
+  i = height;
+  data = img->buffer;
+  while (i--)
+    {
+      if (!(line = f(info,&pos,info_size)))
+	RETURN;
+      x = 0;
+      while (x<width)
+	{
+	  col = 0;
+	  col_name = mlx_int_get_col_name(line+cpp*x,cpp);
+	  if (method)
+	    col = colors_direct[col_name];
+	  else
+	    {
+	      j = nc;
+	      while (j--)
+		if (colors[j].name==col_name)
+		  {
+		    col = colors[j].col;
+		    j = 0;
+		  }
+	    }
+	  //	  if (col==-1)
+	  //	    XPutPixel(clip_img, x, height-1-i, 0);
+	  //	  else
+	  if (col==-1)
+	    col = 0xFF000000;
+	  mlx_int_xpm_set_pixel(img, data, opp, col, x);
+	  x ++;
+	}
+      //      data += img->size_line;
+      data += img->width*4;
+    }
+  /*
+  if (clip_data)
+    {
+      if (!(clip_pix = XCreatePixmap(xvar->display, xvar->root,
+					   width, height, 1)) )
+	RETURN;
+      img->gc = XCreateGC(xvar->display, clip_pix, 0, &xgcv);
+      XPutImage(xvar->display, clip_pix, img->gc, clip_img,
+		0, 0, 0, 0, width, height);
+      XFreeGC(xvar->display, img->gc);
+      xgcv.clip_mask = clip_pix;
+      xgcv.function = GXcopy;
+      xgcv.plane_mask = AllPlanes;
+      img->gc = XCreateGC(xvar->display, xvar->root, GCClipMask|GCFunction|
+			  GCPlaneMask, &xgcv);
+      XSync(xvar->display, False);
+      XDestroyImage(clip_img);
+    }
+  */
+  if (colors)
+    free(colors);
+  if (colors_direct)
+    free(colors_direct);
+  return (img);
+}
+
+
+void	mlx_int_file_get_rid_comment(char *ptr, int size)
+{
+  int	com_begin;
+  int	com_end;
+
+  while ((com_begin = mlx_int_str_str_cote(ptr,"/*",size))!=-1)
+    {
+      com_end = mlx_int_str_str(ptr+com_begin+2,"*/",size-com_begin-2);
+      memset(ptr+com_begin,' ',com_end+4);
+    }
+  while ((com_begin = mlx_int_str_str_cote(ptr,"//",size))!=-1)
+    {
+      com_end = mlx_int_str_str(ptr+com_begin+2,"\n",size-com_begin-2);
+      memset(ptr+com_begin,' ',com_end+3);
+    }
+}
+
+
+void	*mlx_xpm_file_to_image(mlx_ptr_t *xvar,char *file,int *width,int *height)
+{
+  int	fd;
+  int	size;
+  char	*ptr;
+  mlx_img_list_t	*img;
+
+  if ((fd = open(file,O_RDONLY))==-1 || (size = lseek(fd,0,SEEK_END))==-1 ||
+      (ptr = mmap(0,size,PROT_WRITE|PROT_READ,MAP_PRIVATE,fd,0))==
+      (void *)MAP_FAILED)
+    {
+      if (fd>=0)
+	close(fd);
+      return ((void *)0);
+    }
+  mlx_int_file_get_rid_comment(ptr, size);
+  if ((img = mlx_int_parse_xpm(xvar,ptr,size,mlx_int_get_line)))
+    {
+      *width = img->width;
+      *height = img->height;
+    }
+  munmap(ptr,size);
+  close(fd);
+  return (img);
+}
+
+void	*mlx_xpm_to_image(mlx_ptr_t *xvar,char **xpm_data,int *width,int *height)
+{
+  mlx_img_list_t	*img;
+
+  if ((img = mlx_int_parse_xpm(xvar,xpm_data,0,mlx_int_static_line)))
+    {
+      *width = img->width;
+      *height = img->height;
+    }
+  return (img);
+}
-- 
cgit v1.2.3