summaryrefslogtreecommitdiff
path: root/libimage
diff options
context:
space:
mode:
Diffstat (limited to 'libimage')
-rw-r--r--libimage/Makefile51
-rw-r--r--libimage/error.svg2167
-rw-r--r--libimage/error.xpm454
-rw-r--r--libimage/error_small.xpm183
-rw-r--r--libimage/img1.xpm56
-rw-r--r--libimage/img2.xpm56
-rw-r--r--libimage/img3.xpm56
-rw-r--r--libimage/img4.xpm56
-rw-r--r--libimage/img5.xpm56
-rw-r--r--libimage/img6.xpm56
-rw-r--r--libimage/img7.xpm56
-rw-r--r--libimage/img8.xpm56
-rw-r--r--libimage/img9.xpm56
-rw-r--r--libimage/pnm.c512
-rw-r--r--libimage/pnm.h218
-rw-r--r--libimage/xpm.c224
-rw-r--r--libimage/xpm.h65
17 files changed, 4378 insertions, 0 deletions
diff --git a/libimage/Makefile b/libimage/Makefile
new file mode 100644
index 0000000..e46bb0c
--- /dev/null
+++ b/libimage/Makefile
@@ -0,0 +1,51 @@
+#
+# Makefile for a Video Disk Recorder plugin
+#
+# $Id$
+
+VDRDIR = ../../../..
+
+### The C++ compiler and options:
+
+CXX ?= g++
+CXXFLAGS ?= -O0 -g -Wall -Woverloaded-virtual
+
+-include $(VDRDIR)/Make.config
+
+### The directory environment:
+
+
+INCLUDES += -I$(VDRDIR)/include
+
+DEFINES += -D_GNU_SOURCE
+
+LIBS +=
+
+### The object files (add further files here):
+
+OBJS = pnm.o xpm.o
+
+### Implicit rules:
+
+%.o: %.c
+ $(CXX) $(CXXFLAGS) -c $(DEFINES) $(INCLUDES) $<
+
+# Dependencies:
+
+MAKEDEP = $(CXX) -MM -MG
+DEPFILE = .dependencies
+$(DEPFILE): Makefile
+ @$(MAKEDEP) $(DEFINES) $(INCLUDES) $(OBJS:%.o=%.c) > $@
+
+-include $(DEPFILE)
+
+### Targets:
+
+all: libimage.a
+
+libimage.a : $(OBJS)
+ $(AR) $(ARFLAGS) $@ $(OBJS)
+# $(CXX) $(CXXFLAGS) -shared $(OBJS) $(LIBS) -o $@
+
+clean:
+ @-rm -f $(OBJS) $(DEPFILE) *.a *.so *.tgz core* *~
diff --git a/libimage/error.svg b/libimage/error.svg
new file mode 100644
index 0000000..b633739
--- /dev/null
+++ b/libimage/error.svg
@@ -0,0 +1,2167 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
+<svg
+ width="704pt"
+ height="576pt"
+ viewBox="0 0 256 256"
+ style="overflow:visible;enable-background:new 0 0 256 256"
+ xml:space="preserve"
+ id="svg3469"
+ sodipodi:version="0.33"
+ sodipodi:docname="Image-Error.svg"
+ sodipodi:docbase="."
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:xml="http://www.w3.org/XML/1998/namespace"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs
+ id="defs3579">
+ <linearGradient
+ id="XMLID_1_"
+ gradientUnits="userSpaceOnUse"
+ x1="128.9995"
+ y1="11"
+ x2="128.9995"
+ y2="245.0005">
+ <stop
+ offset="0"
+ style="stop-color:#494949"
+ id="stop3476" />
+
+
+
+
+ <stop
+ offset="1"
+ style="stop-color:#000000"
+ id="stop3477" />
+
+
+
+
+ </linearGradient>
+
+
+
+
+ <linearGradient
+ id="XMLID_2_"
+ gradientUnits="userSpaceOnUse"
+ x1="29.0532"
+ y1="29.0532"
+ x2="226.9471"
+ y2="226.9471">
+ <stop
+ offset="0"
+ style="stop-color:#FFFFFF"
+ id="stop3484" />
+
+
+
+
+ <stop
+ offset="1"
+ style="stop-color:#DADADA"
+ id="stop3485" />
+
+
+
+
+ </linearGradient>
+
+
+
+
+ </defs>
+
+
+
+ <sodipodi:namedview
+ id="base">
+ <sodipodi:guide
+ orientation="horizontal"
+ position="287.129913"
+ id="guide2108" />
+
+ <sodipodi:guide
+ orientation="vertical"
+ position="29.7764359"
+ id="guide2109" />
+
+ <sodipodi:guide
+ orientation="vertical"
+ position="676.350464"
+ id="guide2110" />
+
+ <sodipodi:guide
+ orientation="horizontal"
+ position="550.864075"
+ id="guide2111" />
+
+ <sodipodi:guide
+ orientation="horizontal"
+ position="31.9033241"
+ id="guide2112" />
+
+</sodipodi:namedview>
+
+
+
+ <path
+ style="font-size:12;fill:none;"
+ d="M 222.4303 159.0556 L 118.0510 159.0556 L 118.0510 34.51719 L 222.4303 34.51719 L 222.4303 159.0556 z "
+ id="path3490" />
+
+
+
+ <g
+ id="g3491"
+ style="font-size:12;stroke:#000000;"
+ transform="matrix(0.583057,0,0,0.695663,106.1162,4.982203)">
+ <path
+ style="opacity:0.2;stroke:none;"
+ d="M72.626,58.727c-3.336,0-6.049,2.713-6.049,6.048v132.323c0,3.335,2.713,6.048,6.049,6.048h115.445 c3.335,0,6.049-2.713,6.049-6.048V64.774c0-3.335-2.714-6.048-6.049-6.048H72.626z"
+ id="path3492" />
+
+
+
+
+ <path
+ style="opacity:0.2;stroke:none;"
+ d="M71.451,56.378c-3.335,0-6.048,2.713-6.048,6.049v132.322c0,3.335,2.713,6.048,6.048,6.048h115.445 c3.335,0,6.049-2.713,6.049-6.048V62.427c0-3.336-2.714-6.049-6.049-6.049H71.451z"
+ id="path3493" />
+
+
+
+
+ <path
+ style="opacity:0.2;stroke:none;"
+ d="M69.103,55.203c-3.335,0-6.049,2.713-6.049,6.048v132.323c0,3.335,2.714,6.048,6.049,6.048h115.445 c3.335,0,6.049-2.713,6.049-6.048V61.251c0-3.335-2.714-6.048-6.049-6.048H69.103z"
+ id="path3494" />
+
+
+
+
+ <linearGradient
+ id="XMLID_3_"
+ gradientUnits="userSpaceOnUse"
+ x1="61.8799"
+ y1="125.064"
+ x2="189.4219"
+ y2="125.064">
+ <stop
+ offset="0"
+ style="stop-color:#616161"
+ id="stop3496" />
+
+
+
+
+ <stop
+ offset="1"
+ style="stop-color:#464646"
+ id="stop3497" />
+
+
+
+
+ </linearGradient>
+
+
+
+
+ <path
+ style="fill:url(#XMLID_3_);stroke:none;"
+ d="M67.928,52.854c-3.335,0-6.048,2.713-6.048,6.049v132.322c0,3.335,2.713,6.048,6.048,6.048h115.444 c3.336,0,6.05-2.713,6.05-6.048V58.903c0-3.336-2.714-6.049-6.05-6.049H67.928z"
+ id="path3501" />
+
+
+
+
+ <path
+ style="fill:#FFFFFF;stroke:none;"
+ d="M184.725,191.226c0,0.747-0.606,1.351-1.353,1.351H67.928c-0.745,0-1.351-0.604-1.351-1.351V58.903 c0-0.746,0.605-1.352,1.351-1.352h115.444c0.746,0,1.353,0.605,1.353,1.352V191.226z"
+ id="path3502" />
+
+
+
+
+ <linearGradient
+ id="XMLID_4_"
+ gradientUnits="userSpaceOnUse"
+ x1="233.4971"
+ y1="232.6162"
+ x2="51.0675"
+ y2="50.1867">
+ <stop
+ offset="0"
+ style="stop-color:#CECEDB"
+ id="stop3504" />
+
+
+
+
+ <stop
+ offset="0.691"
+ style="stop-color:#E9E9EF"
+ id="stop3505" />
+
+
+
+
+ <stop
+ offset="1"
+ style="stop-color:#FFFFFF"
+ id="stop3506" />
+
+
+
+
+ </linearGradient>
+
+
+
+
+ <path
+ style="fill:url(#XMLID_4_);stroke:none;"
+ d="M69.954,60.635c0,4.134,0,123.846,0,127.978c4.104,0,106.998,0,111.101,0c0-4.132,0-123.844,0-127.978 C176.952,60.635,74.058,60.635,69.954,60.635z"
+ id="path3512" />
+
+
+
+
+ <linearGradient
+ id="XMLID_5_"
+ gradientUnits="userSpaceOnUse"
+ x1="-654.9922"
+ y1="23.1128"
+ x2="-520.0903"
+ y2="23.1128"
+ gradientTransform="matrix(0 1 -1 0 148.7637 686.498)">
+ <stop
+ offset="0"
+ style="stop-color:#BDBDCF"
+ id="stop3514" />
+
+
+
+
+ <stop
+ offset="0.1923"
+ style="stop-color:#CCCCDA"
+ id="stop3515" />
+
+
+
+
+ <stop
+ offset="0.7201"
+ style="stop-color:#F1F1F5"
+ id="stop3516" />
+
+
+
+
+ <stop
+ offset="1"
+ style="stop-color:#FFFFFF"
+ id="stop3517" />
+
+
+
+
+ </linearGradient>
+
+
+
+
+ <path
+ style="fill:url(#XMLID_5_);stroke:none;"
+ d="M176.563,67.165c-3.289,0-98.536,0-101.823,0c0,3.266,0,85.131,0,88.396c3.287,0,98.534,0,101.823,0 C176.563,152.296,176.563,70.431,176.563,67.165z"
+ id="path3521" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M78.46,70.886c0,6.529,0,74.425,0,80.955c6.646,0,87.734,0,94.381,0c0-6.53,0-74.426,0-80.955 C166.194,70.886,85.106,70.886,78.46,70.886z"
+ id="path3522" />
+
+
+
+
+ <radialGradient
+ id="XMLID_6_"
+ cx="109.7783"
+ cy="116.7822"
+ r="66.1491"
+ fx="109.7783"
+ fy="116.7822"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ offset="0"
+ style="stop-color:#B1E1FF"
+ id="stop3524" />
+
+
+
+
+ <stop
+ offset="0.1441"
+ style="stop-color:#AEDFFF"
+ id="stop3525" />
+
+
+
+
+ <stop
+ offset="0.2661"
+ style="stop-color:#A3D9FF"
+ id="stop3526" />
+
+
+
+
+ <stop
+ offset="0.38"
+ style="stop-color:#92CFFF"
+ id="stop3527" />
+
+
+
+
+ <stop
+ offset="0.489"
+ style="stop-color:#79C1FF"
+ id="stop3528" />
+
+
+
+
+ <stop
+ offset="0.5937"
+ style="stop-color:#5AAEFF"
+ id="stop3529" />
+
+
+
+
+ <stop
+ offset="0.6011"
+ style="stop-color:#57ADFF"
+ id="stop3530" />
+
+
+
+
+ <stop
+ offset="1"
+ style="stop-color:#0035ED"
+ id="stop3531" />
+
+
+
+
+ </radialGradient>
+
+
+
+
+ <path
+ style="fill:url(#XMLID_6_);stroke:none;"
+ d="M80.94,73.367c0,4.515,0,71.477,0,75.993c4.577,0,84.844,0,89.42,0c0-4.517,0-71.479,0-75.993 C165.784,73.367,85.518,73.367,80.94,73.367z"
+ id="path3537" />
+
+
+
+
+ <linearGradient
+ id="XMLID_7_"
+ gradientUnits="userSpaceOnUse"
+ x1="100.4385"
+ y1="122.5811"
+ x2="118.1257"
+ y2="104.8938">
+ <stop
+ offset="0"
+ style="stop-color:#FFFFFF"
+ id="stop3539" />
+
+
+
+
+ <stop
+ offset="1"
+ style="stop-color:#E9E9EF"
+ id="stop3540" />
+
+
+
+
+ </linearGradient>
+
+
+
+
+ <path
+ style="fill:url(#XMLID_7_);stroke:none;"
+ d="M96.774,113.736c0,6.907,5.6,12.508,12.507,12.508s12.506-5.601,12.506-12.508 s-5.599-12.507-12.506-12.507S96.774,106.829,96.774,113.736z"
+ id="path3544" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M78.46,137.866c0,1.127,0,12.845,0,13.975c6.646,0,87.734,0,94.381,0c0-1.13,0-12.848,0-13.975 C166.194,137.866,85.106,137.866,78.46,137.866z"
+ id="path3545" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M100.665,117.415h-8.486v25.92h8.486V117.415z"
+ id="path3546" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M108.007,127.737h-8.488v15.828h8.488V127.737z"
+ id="path3547" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M118.099,144.023h-11.01v-10.78h11.01V144.023z"
+ id="path3548" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M123.374,119.938h-6.65v19.499h6.65V119.938z"
+ id="path3549" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M139.892,144.023h-17.205v-15.599h17.205V144.023z"
+ id="path3550" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M145.396,108.927h-7.34v32.116h7.34V108.927z"
+ id="path3551" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M80.708,144.023h11.699v-19.817H80.708V144.023z"
+ id="path3552" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M154.571,143.104h-11.01v-23.396h11.01V143.104z"
+ id="path3553" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M170.683,145.87h-12.664v-17.662h12.664V145.87z"
+ id="path3554" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M169.024,142.416h-7.57v-25.003h7.57V142.416z"
+ id="path3555" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M130.486,138.059h-7.569v-25.005h7.569V138.059z"
+ id="path3556" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M80.938,144.482h88.086v-7.8H80.938V144.482z"
+ id="path3557" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M94.063,121.743h2.016v-2.016h-2.016V121.743z"
+ id="path3558" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M94.063,126.23h2.016v-2.016h-2.016V126.23z"
+ id="path3559" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M94.063,135.205h2.016v-2.016h-2.016V135.205z"
+ id="path3560" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M125.874,122.173h2.015v-2.016h-2.015V122.173z"
+ id="path3561" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M125.874,131.147h2.015v-2.016h-2.015V131.147z"
+ id="path3562" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M119.207,124.662h2.016v-2.015h-2.016V124.662z"
+ id="path3563" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M119.207,129.149h2.016v-2.016h-2.016V129.149z"
+ id="path3564" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M119.207,133.638h2.016v-2.016h-2.016V133.638z"
+ id="path3565" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M102.489,132.554h2.015v-2.018h-2.015V132.554z"
+ id="path3566" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M102.489,137.038h2.015v-2.015h-2.015V137.038z"
+ id="path3567" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M82.507,128.463h2.015v-2.016h-2.015V128.463z"
+ id="path3568" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M82.507,132.95h2.015v-2.017h-2.015V132.95z"
+ id="path3569" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M149.356,128.747h2.015v-2.016h-2.015V128.747z"
+ id="path3570" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M140.674,114.493h2.015v-2.017h-2.015V114.493z"
+ id="path3571" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M140.674,118.979h2.015v-2.016h-2.015V118.979z"
+ id="path3572" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M140.674,123.468h2.015v-2.016h-2.015V123.468z"
+ id="path3573" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M140.674,127.954h2.015v-2.016h-2.015V127.954z"
+ id="path3574" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M164.085,122.089h2.016v-2.016h-2.016V122.089z"
+ id="path3575" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M164.085,131.065h2.016v-2.016h-2.016V131.065z"
+ id="path3576" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M129.602,134.712v2.016h2.016v-2.016H129.602z"
+ id="path3577" />
+
+
+
+
+ </g>
+
+
+
+ <path
+ style="font-size:12;fill:none;"
+ d="M 226.0942 146.8087 L 135.6992 209.0778 L 83.50963 101.2246 L 173.9046 38.95533 L 226.0942 146.8087 z "
+ id="path1323" />
+
+
+
+ <g
+ id="g1324"
+ style="font-size:12;stroke:#000000;"
+ transform="matrix(0.504941,-0.347832,0.291527,0.602462,63.36050,88.66474)">
+ <path
+ style="opacity:0.2;stroke:none;"
+ d="M72.626,58.727c-3.336,0-6.049,2.713-6.049,6.048v132.323c0,3.335,2.713,6.048,6.049,6.048h115.445 c3.335,0,6.049-2.713,6.049-6.048V64.774c0-3.335-2.714-6.048-6.049-6.048H72.626z"
+ id="path1325" />
+
+
+
+
+ <path
+ style="opacity:0.2;stroke:none;"
+ d="M71.451,56.378c-3.335,0-6.048,2.713-6.048,6.049v132.322c0,3.335,2.713,6.048,6.048,6.048h115.445 c3.335,0,6.049-2.713,6.049-6.048V62.427c0-3.336-2.714-6.049-6.049-6.049H71.451z"
+ id="path1326" />
+
+
+
+
+ <path
+ style="opacity:0.2;stroke:none;"
+ d="M69.103,55.203c-3.335,0-6.049,2.713-6.049,6.048v132.323c0,3.335,2.714,6.048,6.049,6.048h115.445 c3.335,0,6.049-2.713,6.049-6.048V61.251c0-3.335-2.714-6.048-6.049-6.048H69.103z"
+ id="path1327" />
+
+
+
+
+ <linearGradient
+ id="linearGradient1328"
+ gradientUnits="userSpaceOnUse"
+ x1="61.8799"
+ y1="125.064"
+ x2="189.4219"
+ y2="125.064">
+ <stop
+ offset="0"
+ style="stop-color:#616161"
+ id="stop1329" />
+
+
+
+
+ <stop
+ offset="1"
+ style="stop-color:#464646"
+ id="stop1330" />
+
+
+
+
+ </linearGradient>
+
+
+
+
+ <path
+ style="fill:url(#XMLID_3_);stroke:none;"
+ d="M67.928,52.854c-3.335,0-6.048,2.713-6.048,6.049v132.322c0,3.335,2.713,6.048,6.048,6.048h115.444 c3.336,0,6.05-2.713,6.05-6.048V58.903c0-3.336-2.714-6.049-6.05-6.049H67.928z"
+ id="path1331" />
+
+
+
+
+ <path
+ style="fill:#FFFFFF;stroke:none;"
+ d="M184.725,191.226c0,0.747-0.606,1.351-1.353,1.351H67.928c-0.745,0-1.351-0.604-1.351-1.351V58.903 c0-0.746,0.605-1.352,1.351-1.352h115.444c0.746,0,1.353,0.605,1.353,1.352V191.226z"
+ id="path1332" />
+
+
+
+
+ <linearGradient
+ id="linearGradient1333"
+ gradientUnits="userSpaceOnUse"
+ x1="233.4971"
+ y1="232.6162"
+ x2="51.0675"
+ y2="50.1867">
+ <stop
+ offset="0"
+ style="stop-color:#CECEDB"
+ id="stop1334" />
+
+
+
+
+ <stop
+ offset="0.691"
+ style="stop-color:#E9E9EF"
+ id="stop1335" />
+
+
+
+
+ <stop
+ offset="1"
+ style="stop-color:#FFFFFF"
+ id="stop1336" />
+
+
+
+
+ </linearGradient>
+
+
+
+
+ <path
+ style="fill:url(#XMLID_4_);stroke:none;"
+ d="M69.954,60.635c0,4.134,0,123.846,0,127.978c4.104,0,106.998,0,111.101,0c0-4.132,0-123.844,0-127.978 C176.952,60.635,74.058,60.635,69.954,60.635z"
+ id="path1337" />
+
+
+
+
+ <linearGradient
+ id="linearGradient1338"
+ gradientUnits="userSpaceOnUse"
+ x1="-654.9922"
+ y1="23.1128"
+ x2="-520.0903"
+ y2="23.1128"
+ gradientTransform="matrix(0 1 -1 0 148.7637 686.498)">
+ <stop
+ offset="0"
+ style="stop-color:#BDBDCF"
+ id="stop1339" />
+
+
+
+
+ <stop
+ offset="0.1923"
+ style="stop-color:#CCCCDA"
+ id="stop1340" />
+
+
+
+
+ <stop
+ offset="0.7201"
+ style="stop-color:#F1F1F5"
+ id="stop1341" />
+
+
+
+
+ <stop
+ offset="1"
+ style="stop-color:#FFFFFF"
+ id="stop1342" />
+
+
+
+
+ </linearGradient>
+
+
+
+
+ <path
+ style="fill:url(#XMLID_5_);stroke:none;"
+ d="M176.563,67.165c-3.289,0-98.536,0-101.823,0c0,3.266,0,85.131,0,88.396c3.287,0,98.534,0,101.823,0 C176.563,152.296,176.563,70.431,176.563,67.165z"
+ id="path1343" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M78.46,70.886c0,6.529,0,74.425,0,80.955c6.646,0,87.734,0,94.381,0c0-6.53,0-74.426,0-80.955 C166.194,70.886,85.106,70.886,78.46,70.886z"
+ id="path1344" />
+
+
+
+
+ <radialGradient
+ id="radialGradient1345"
+ cx="109.7783"
+ cy="116.7822"
+ r="66.1491"
+ fx="109.7783"
+ fy="116.7822"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ offset="0"
+ style="stop-color:#B1E1FF"
+ id="stop1346" />
+
+
+
+
+ <stop
+ offset="0.1441"
+ style="stop-color:#AEDFFF"
+ id="stop1347" />
+
+
+
+
+ <stop
+ offset="0.2661"
+ style="stop-color:#A3D9FF"
+ id="stop1348" />
+
+
+
+
+ <stop
+ offset="0.38"
+ style="stop-color:#92CFFF"
+ id="stop1349" />
+
+
+
+
+ <stop
+ offset="0.489"
+ style="stop-color:#79C1FF"
+ id="stop1350" />
+
+
+
+
+ <stop
+ offset="0.5937"
+ style="stop-color:#5AAEFF"
+ id="stop1351" />
+
+
+
+
+ <stop
+ offset="0.6011"
+ style="stop-color:#57ADFF"
+ id="stop1352" />
+
+
+
+
+ <stop
+ offset="1"
+ style="stop-color:#0035ED"
+ id="stop1353" />
+
+
+
+
+ </radialGradient>
+
+
+
+
+ <path
+ style="fill:url(#XMLID_6_);stroke:none;"
+ d="M80.94,73.367c0,4.515,0,71.477,0,75.993c4.577,0,84.844,0,89.42,0c0-4.517,0-71.479,0-75.993 C165.784,73.367,85.518,73.367,80.94,73.367z"
+ id="path1354" />
+
+
+
+
+ <linearGradient
+ id="linearGradient1355"
+ gradientUnits="userSpaceOnUse"
+ x1="100.4385"
+ y1="122.5811"
+ x2="118.1257"
+ y2="104.8938">
+ <stop
+ offset="0"
+ style="stop-color:#FFFFFF"
+ id="stop1356" />
+
+
+
+
+ <stop
+ offset="1"
+ style="stop-color:#E9E9EF"
+ id="stop1357" />
+
+
+
+
+ </linearGradient>
+
+
+
+
+ <path
+ style="fill:url(#XMLID_7_);stroke:none;"
+ d="M96.774,113.736c0,6.907,5.6,12.508,12.507,12.508s12.506-5.601,12.506-12.508 s-5.599-12.507-12.506-12.507S96.774,106.829,96.774,113.736z"
+ id="path1358" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M78.46,137.866c0,1.127,0,12.845,0,13.975c6.646,0,87.734,0,94.381,0c0-1.13,0-12.848,0-13.975 C166.194,137.866,85.106,137.866,78.46,137.866z"
+ id="path1359" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M100.665,117.415h-8.486v25.92h8.486V117.415z"
+ id="path1360" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M108.007,127.737h-8.488v15.828h8.488V127.737z"
+ id="path1361" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M118.099,144.023h-11.01v-10.78h11.01V144.023z"
+ id="path1362" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M123.374,119.938h-6.65v19.499h6.65V119.938z"
+ id="path1363" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M139.892,144.023h-17.205v-15.599h17.205V144.023z"
+ id="path1364" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M145.396,108.927h-7.34v32.116h7.34V108.927z"
+ id="path1365" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M80.708,144.023h11.699v-19.817H80.708V144.023z"
+ id="path1366" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M154.571,143.104h-11.01v-23.396h11.01V143.104z"
+ id="path1367" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M170.683,145.87h-12.664v-17.662h12.664V145.87z"
+ id="path1368" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M169.024,142.416h-7.57v-25.003h7.57V142.416z"
+ id="path1369" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M130.486,138.059h-7.569v-25.005h7.569V138.059z"
+ id="path1370" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M80.938,144.482h88.086v-7.8H80.938V144.482z"
+ id="path1371" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M94.063,121.743h2.016v-2.016h-2.016V121.743z"
+ id="path1372" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M94.063,126.23h2.016v-2.016h-2.016V126.23z"
+ id="path1373" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M94.063,135.205h2.016v-2.016h-2.016V135.205z"
+ id="path1374" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M125.874,122.173h2.015v-2.016h-2.015V122.173z"
+ id="path1375" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M125.874,131.147h2.015v-2.016h-2.015V131.147z"
+ id="path1376" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M119.207,124.662h2.016v-2.015h-2.016V124.662z"
+ id="path1377" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M119.207,129.149h2.016v-2.016h-2.016V129.149z"
+ id="path1378" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M119.207,133.638h2.016v-2.016h-2.016V133.638z"
+ id="path1379" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M102.489,132.554h2.015v-2.018h-2.015V132.554z"
+ id="path1380" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M102.489,137.038h2.015v-2.015h-2.015V137.038z"
+ id="path1381" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M82.507,128.463h2.015v-2.016h-2.015V128.463z"
+ id="path1382" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M82.507,132.95h2.015v-2.017h-2.015V132.95z"
+ id="path1383" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M149.356,128.747h2.015v-2.016h-2.015V128.747z"
+ id="path1384" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M140.674,114.493h2.015v-2.017h-2.015V114.493z"
+ id="path1385" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M140.674,118.979h2.015v-2.016h-2.015V118.979z"
+ id="path1386" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M140.674,123.468h2.015v-2.016h-2.015V123.468z"
+ id="path1387" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M140.674,127.954h2.015v-2.016h-2.015V127.954z"
+ id="path1388" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M164.085,122.089h2.016v-2.016h-2.016V122.089z"
+ id="path1389" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M164.085,131.065h2.016v-2.016h-2.016V131.065z"
+ id="path1390" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M129.602,134.712v2.016h2.016v-2.016H129.602z"
+ id="path1391" />
+
+
+
+
+ </g>
+
+
+
+ <path
+ style="font-size:12;fill:none;"
+ d="M 223.0736 130.8574 L 170.8839 238.7107 L 80.48895 176.4417 L 132.6785 68.58834 L 223.0736 130.8574 z "
+ id="path1392" />
+
+
+
+ <g
+ id="g1393"
+ style="font-size:12;stroke:#000000;"
+ transform="matrix(0.291527,-0.602462,0.504941,0.347832,60.33992,183.4832)">
+ <path
+ style="opacity:0.2;stroke:none;"
+ d="M72.626,58.727c-3.336,0-6.049,2.713-6.049,6.048v132.323c0,3.335,2.713,6.048,6.049,6.048h115.445 c3.335,0,6.049-2.713,6.049-6.048V64.774c0-3.335-2.714-6.048-6.049-6.048H72.626z"
+ id="path1394" />
+
+
+
+
+ <path
+ style="opacity:0.2;stroke:none;"
+ d="M71.451,56.378c-3.335,0-6.048,2.713-6.048,6.049v132.322c0,3.335,2.713,6.048,6.048,6.048h115.445 c3.335,0,6.049-2.713,6.049-6.048V62.427c0-3.336-2.714-6.049-6.049-6.049H71.451z"
+ id="path1395" />
+
+
+
+
+ <path
+ style="opacity:0.2;stroke:none;"
+ d="M69.103,55.203c-3.335,0-6.049,2.713-6.049,6.048v132.323c0,3.335,2.714,6.048,6.049,6.048h115.445 c3.335,0,6.049-2.713,6.049-6.048V61.251c0-3.335-2.714-6.048-6.049-6.048H69.103z"
+ id="path1396" />
+
+
+
+
+ <linearGradient
+ id="linearGradient1397"
+ gradientUnits="userSpaceOnUse"
+ x1="61.8799"
+ y1="125.064"
+ x2="189.4219"
+ y2="125.064">
+ <stop
+ offset="0"
+ style="stop-color:#616161"
+ id="stop1398" />
+
+
+
+
+ <stop
+ offset="1"
+ style="stop-color:#464646"
+ id="stop1399" />
+
+
+
+
+ </linearGradient>
+
+
+
+
+ <path
+ style="fill:url(#XMLID_3_);stroke:none;"
+ d="M67.928,52.854c-3.335,0-6.048,2.713-6.048,6.049v132.322c0,3.335,2.713,6.048,6.048,6.048h115.444 c3.336,0,6.05-2.713,6.05-6.048V58.903c0-3.336-2.714-6.049-6.05-6.049H67.928z"
+ id="path1400" />
+
+
+
+
+ <path
+ style="fill:#FFFFFF;stroke:none;"
+ d="M184.725,191.226c0,0.747-0.606,1.351-1.353,1.351H67.928c-0.745,0-1.351-0.604-1.351-1.351V58.903 c0-0.746,0.605-1.352,1.351-1.352h115.444c0.746,0,1.353,0.605,1.353,1.352V191.226z"
+ id="path1401" />
+
+
+
+
+ <linearGradient
+ id="linearGradient1402"
+ gradientUnits="userSpaceOnUse"
+ x1="233.4971"
+ y1="232.6162"
+ x2="51.0675"
+ y2="50.1867">
+ <stop
+ offset="0"
+ style="stop-color:#CECEDB"
+ id="stop1403" />
+
+
+
+
+ <stop
+ offset="0.691"
+ style="stop-color:#E9E9EF"
+ id="stop1404" />
+
+
+
+
+ <stop
+ offset="1"
+ style="stop-color:#FFFFFF"
+ id="stop1405" />
+
+
+
+
+ </linearGradient>
+
+
+
+
+ <path
+ style="fill:url(#XMLID_4_);stroke:none;"
+ d="M69.954,60.635c0,4.134,0,123.846,0,127.978c4.104,0,106.998,0,111.101,0c0-4.132,0-123.844,0-127.978 C176.952,60.635,74.058,60.635,69.954,60.635z"
+ id="path1406" />
+
+
+
+
+ <linearGradient
+ id="linearGradient1407"
+ gradientUnits="userSpaceOnUse"
+ x1="-654.9922"
+ y1="23.1128"
+ x2="-520.0903"
+ y2="23.1128"
+ gradientTransform="matrix(0 1 -1 0 148.7637 686.498)">
+ <stop
+ offset="0"
+ style="stop-color:#BDBDCF"
+ id="stop1408" />
+
+
+
+
+ <stop
+ offset="0.1923"
+ style="stop-color:#CCCCDA"
+ id="stop1409" />
+
+
+
+
+ <stop
+ offset="0.7201"
+ style="stop-color:#F1F1F5"
+ id="stop1410" />
+
+
+
+
+ <stop
+ offset="1"
+ style="stop-color:#FFFFFF"
+ id="stop1411" />
+
+
+
+
+ </linearGradient>
+
+
+
+
+ <path
+ style="fill:url(#XMLID_5_);stroke:none;"
+ d="M176.563,67.165c-3.289,0-98.536,0-101.823,0c0,3.266,0,85.131,0,88.396c3.287,0,98.534,0,101.823,0 C176.563,152.296,176.563,70.431,176.563,67.165z"
+ id="path1412" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M78.46,70.886c0,6.529,0,74.425,0,80.955c6.646,0,87.734,0,94.381,0c0-6.53,0-74.426,0-80.955 C166.194,70.886,85.106,70.886,78.46,70.886z"
+ id="path1413" />
+
+
+
+
+ <radialGradient
+ id="radialGradient1414"
+ cx="109.7783"
+ cy="116.7822"
+ r="66.1491"
+ fx="109.7783"
+ fy="116.7822"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ offset="0"
+ style="stop-color:#B1E1FF"
+ id="stop1415" />
+
+
+
+
+ <stop
+ offset="0.1441"
+ style="stop-color:#AEDFFF"
+ id="stop1416" />
+
+
+
+
+ <stop
+ offset="0.2661"
+ style="stop-color:#A3D9FF"
+ id="stop1417" />
+
+
+
+
+ <stop
+ offset="0.38"
+ style="stop-color:#92CFFF"
+ id="stop1418" />
+
+
+
+
+ <stop
+ offset="0.489"
+ style="stop-color:#79C1FF"
+ id="stop1419" />
+
+
+
+
+ <stop
+ offset="0.5937"
+ style="stop-color:#5AAEFF"
+ id="stop1420" />
+
+
+
+
+ <stop
+ offset="0.6011"
+ style="stop-color:#57ADFF"
+ id="stop1421" />
+
+
+
+
+ <stop
+ offset="1"
+ style="stop-color:#0035ED"
+ id="stop1422" />
+
+
+
+
+ </radialGradient>
+
+
+
+
+ <path
+ style="fill:url(#XMLID_6_);stroke:none;"
+ d="M80.94,73.367c0,4.515,0,71.477,0,75.993c4.577,0,84.844,0,89.42,0c0-4.517,0-71.479,0-75.993 C165.784,73.367,85.518,73.367,80.94,73.367z"
+ id="path1423" />
+
+
+
+
+ <linearGradient
+ id="linearGradient1424"
+ gradientUnits="userSpaceOnUse"
+ x1="100.4385"
+ y1="122.5811"
+ x2="118.1257"
+ y2="104.8938">
+ <stop
+ offset="0"
+ style="stop-color:#FFFFFF"
+ id="stop1425" />
+
+
+
+
+ <stop
+ offset="1"
+ style="stop-color:#E9E9EF"
+ id="stop1426" />
+
+
+
+
+ </linearGradient>
+
+
+
+
+ <path
+ style="fill:url(#XMLID_7_);stroke:none;"
+ d="M96.774,113.736c0,6.907,5.6,12.508,12.507,12.508s12.506-5.601,12.506-12.508 s-5.599-12.507-12.506-12.507S96.774,106.829,96.774,113.736z"
+ id="path1427" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M78.46,137.866c0,1.127,0,12.845,0,13.975c6.646,0,87.734,0,94.381,0c0-1.13,0-12.848,0-13.975 C166.194,137.866,85.106,137.866,78.46,137.866z"
+ id="path1428" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M100.665,117.415h-8.486v25.92h8.486V117.415z"
+ id="path1429" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M108.007,127.737h-8.488v15.828h8.488V127.737z"
+ id="path1430" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M118.099,144.023h-11.01v-10.78h11.01V144.023z"
+ id="path1431" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M123.374,119.938h-6.65v19.499h6.65V119.938z"
+ id="path1432" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M139.892,144.023h-17.205v-15.599h17.205V144.023z"
+ id="path1433" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M145.396,108.927h-7.34v32.116h7.34V108.927z"
+ id="path1434" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M80.708,144.023h11.699v-19.817H80.708V144.023z"
+ id="path1435" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M154.571,143.104h-11.01v-23.396h11.01V143.104z"
+ id="path1436" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M170.683,145.87h-12.664v-17.662h12.664V145.87z"
+ id="path1437" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M169.024,142.416h-7.57v-25.003h7.57V142.416z"
+ id="path1438" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M130.486,138.059h-7.569v-25.005h7.569V138.059z"
+ id="path1439" />
+
+
+
+
+ <path
+ style="stroke:none;"
+ d="M80.938,144.482h88.086v-7.8H80.938V144.482z"
+ id="path1440" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M94.063,121.743h2.016v-2.016h-2.016V121.743z"
+ id="path1441" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M94.063,126.23h2.016v-2.016h-2.016V126.23z"
+ id="path1442" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M94.063,135.205h2.016v-2.016h-2.016V135.205z"
+ id="path1443" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M125.874,122.173h2.015v-2.016h-2.015V122.173z"
+ id="path1444" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M125.874,131.147h2.015v-2.016h-2.015V131.147z"
+ id="path1445" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M119.207,124.662h2.016v-2.015h-2.016V124.662z"
+ id="path1446" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M119.207,129.149h2.016v-2.016h-2.016V129.149z"
+ id="path1447" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M119.207,133.638h2.016v-2.016h-2.016V133.638z"
+ id="path1448" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M102.489,132.554h2.015v-2.018h-2.015V132.554z"
+ id="path1449" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M102.489,137.038h2.015v-2.015h-2.015V137.038z"
+ id="path1450" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M82.507,128.463h2.015v-2.016h-2.015V128.463z"
+ id="path1451" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M82.507,132.95h2.015v-2.017h-2.015V132.95z"
+ id="path1452" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M149.356,128.747h2.015v-2.016h-2.015V128.747z"
+ id="path1453" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M140.674,114.493h2.015v-2.017h-2.015V114.493z"
+ id="path1454" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M140.674,118.979h2.015v-2.016h-2.015V118.979z"
+ id="path1455" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M140.674,123.468h2.015v-2.016h-2.015V123.468z"
+ id="path1456" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M140.674,127.954h2.015v-2.016h-2.015V127.954z"
+ id="path1457" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M164.085,122.089h2.016v-2.016h-2.016V122.089z"
+ id="path1458" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M164.085,131.065h2.016v-2.016h-2.016V131.065z"
+ id="path1459" />
+
+
+
+
+ <path
+ style="fill:#FFF030;stroke:none;"
+ d="M129.602,134.712v2.016h2.016v-2.016H129.602z"
+ id="path1460" />
+
+
+
+
+ </g>
+
+
+
+<g
+ id="g2009"
+ transform="matrix(2.357251,0,0,2.832578,34.95087,61.80306)">
+ <defs
+ id="defs232" />
+
+
+ <sodipodi:namedview
+ id="namedview2013" />
+
+
+ <g
+ id="Layer_1"
+ stroke="#000000">
+ <path
+ id="path170"
+ fill="none"
+ stroke="none"
+ d="M3.621,36.109l11.775-25.814c0.321-0.971,3.194-2.688,4.462-2.461l22.103,1.858 c-0.26-0.156-0.566-0.274-0.91-0.335L19.46,7.218c-1.269-0.226-4.141,1.491-4.462,2.461L3.224,35.494 c-0.183,0.553-0.011,1.106,0.406,1.521C3.528,36.729,3.519,36.42,3.621,36.109z" />
+
+
+ <g
+ id="Layer_2">
+ <path
+ id="path241"
+ fill="none"
+ stroke="none"
+ d="M48,48H0V0h48V48z" />
+
+
+ </g>
+
+
+ <g
+ id="g171" />
+
+
+ <linearGradient
+ id="path205_1_"
+ gradientUnits="userSpaceOnUse"
+ x1="-235.5874"
+ y1="318.7158"
+ x2="-234.9869"
+ y2="318.1155"
+ gradientTransform="matrix(0.3069 0 0 -0.3101 81.6819 119.6117)">
+ <stop
+ offset="0"
+ style="stop-color:#FFFFFF"
+ id="stop160" />
+
+
+ <stop
+ offset="0.3726"
+ style="stop-color:#FDFDFD"
+ id="stop161" />
+
+
+ <stop
+ offset="0.5069"
+ style="stop-color:#F6F6F6"
+ id="stop162" />
+
+
+ <stop
+ offset="0.6026"
+ style="stop-color:#EBEBEB"
+ id="stop163" />
+
+
+ <stop
+ offset="0.68"
+ style="stop-color:#DADADA"
+ id="stop164" />
+
+
+ <stop
+ offset="0.7463"
+ style="stop-color:#C4C4C4"
+ id="stop165" />
+
+
+ <stop
+ offset="0.805"
+ style="stop-color:#A8A8A8"
+ id="stop166" />
+
+
+ <stop
+ offset="0.8581"
+ style="stop-color:#888888"
+ id="stop167" />
+
+
+ <stop
+ offset="0.9069"
+ style="stop-color:#626262"
+ id="stop168" />
+
+
+ <stop
+ offset="0.9523"
+ style="stop-color:#373737"
+ id="stop169" />
+
+
+ <stop
+ offset="0.9926"
+ style="stop-color:#090909"
+ id="stop170" />
+
+
+ <stop
+ offset="1"
+ style="stop-color:#000000"
+ id="stop171" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </linearGradient>
+
+
+ <path
+ id="path205"
+ fill="url(#path205_1_)"
+ stroke="none"
+ d="M10.011,20.379c-0.109-0.062-0.233-0.1-0.367-0.1 c-0.421,0-0.763,0.346-0.763,0.771c0,0.115,0.027,0.223,0.072,0.321C9.106,20.878,9.509,20.498,10.011,20.379z" />
+
+
+ <path
+ id="path206"
+ opacity="0.36"
+ fill="#999999"
+ stroke="#999999"
+ stroke-width="1.5343"
+ stroke-miterlimit="1.2275"
+ d=" M6.653,25.182c0,11.198,8.983,20.275,20.064,20.275c11.082,0,20.064-9.076,20.064-20.275c0-11.198-8.982-20.275-20.064-20.275 C15.636,4.906,6.653,13.984,6.653,25.182z" />
+
+
+ <path
+ fill="#990000"
+ stroke="none"
+ d="M2.046,22.701c0,11.731,9.449,21.275,21.064,21.275c11.615,0,21.065-9.544,21.065-21.275 S34.726,1.425,23.11,1.425C11.496,1.426,2.046,10.97,2.046,22.701z"
+ id="path197" />
+
+
+ <linearGradient
+ id="path213_1_"
+ gradientUnits="userSpaceOnUse"
+ x1="-232.3296"
+ y1="353.9814"
+ x2="-137.7065"
+ y2="259.358"
+ gradientTransform="matrix(0.3069 0 0 -0.3101 81.6819 119.6117)">
+ <stop
+ offset="0"
+ style="stop-color:#FB7462"
+ id="stop199" />
+
+
+ <stop
+ offset="1"
+ style="stop-color:#FC2829"
+ id="stop200" />
+
+
+
+
+
+ </linearGradient>
+
+
+ <path
+ id="path213"
+ fill="url(#path213_1_)"
+ stroke="none"
+ d="M3.046,22.701c0,11.198,8.983,20.275,20.064,20.275 c11.082,0,20.065-9.077,20.065-20.275S34.192,2.425,23.11,2.425C12.03,2.426,3.046,11.503,3.046,22.701z" />
+
+
+ <radialGradient
+ id="path239_1_"
+ cx="-141.856"
+ cy="240.4365"
+ r="94.1356"
+ fx="-141.856"
+ fy="240.4365"
+ gradientTransform="matrix(0.3069 0 0 -0.3101 81.6819 119.6117)"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ offset="0"
+ style="stop-color:#000000"
+ id="stop206" />
+
+
+ <stop
+ offset="1"
+ style="stop-color:#FF3333"
+ id="stop207" />
+
+
+
+
+
+ </radialGradient>
+
+
+ <path
+ id="path239"
+ opacity="0.4"
+ fill="url(#path239_1_)"
+ stroke="none"
+ d="M41.881,18.448c-2.748-1.396-5.852-2.184-9.139-2.184 c-3.571,0-6.928,0.929-9.846,2.561h15.301v0.446h0.387v8.345H14.529c-1.383,2.778-2.163,5.917-2.163,9.239 c0,1.053,0.079,2.086,0.229,3.097c2.839,1.556,6.093,2.439,9.549,2.439c11.082,0,20.065-9.078,20.065-20.276 C42.21,20.864,42.097,19.638,41.881,18.448z" />
+
+
+ <g
+ id="g214">
+ <path
+ id="path215"
+ fill="#B11C1D"
+ stroke="none"
+ d="M39.549,28.201H6.989v-8.344h32.56V28.201z" />
+
+
+ <g
+ id="g216">
+ <path
+ id="path217"
+ fill="#FB9A86"
+ stroke="none"
+ d="M39.162,27.812H6.672v-8.4h32.49V27.812z" />
+
+
+ <path
+ id="path218"
+ fill="#FFFFFF"
+ stroke="none"
+ d="M39.162,27.812H7.059v-7.913h32.103V27.812z" />
+
+
+ <linearGradient
+ id="path225_1_"
+ gradientUnits="userSpaceOnUse"
+ x1="-190.8691"
+ y1="300.7178"
+ x2="-190.8691"
+ y2="330.2731"
+ gradientTransform="matrix(0.3069 0 0 -0.3101 81.6819 119.6117)">
+ <stop
+ offset="0"
+ style="stop-color:#FFFFFF"
+ id="stop218" />
+
+
+ <stop
+ offset="1"
+ style="stop-color:#CCCCCC"
+ id="stop219" />
+
+
+
+
+
+ </linearGradient>
+
+
+ <path
+ id="path225"
+ fill="url(#path225_1_)"
+ stroke="none"
+ d="M7.385,22.834c0-1.293,1.038-2.342,2.318-2.342H38.28 c0.313,0,0.61,0.063,0.882,0.177v-0.771H7.059v7.913h0.326V22.834z" />
+
+
+ </g>
+
+
+ </g>
+
+
+ <linearGradient
+ id="path232_1_"
+ gradientUnits="userSpaceOnUse"
+ x1="14.1377"
+ y1="12.6128"
+ x2="4.2627"
+ y2="2.7378">
+ <stop
+ offset="0"
+ style="stop-color:#FB7462"
+ id="stop225" />
+
+
+ <stop
+ offset="1"
+ style="stop-color:#FFFFFF"
+ id="stop226" />
+
+
+
+
+
+ </linearGradient>
+
+
+ <path
+ id="path232"
+ fill="url(#path232_1_)"
+ stroke="none"
+ d="M8.45,18.411c4.288-7.016,11.965-11.692,20.725-11.692 c2.281,0,4.488,0.318,6.582,0.911c-3.458-3.244-8.089-5.229-13.18-5.229C11.875,2.401,3.2,11.168,3.2,21.983 c0,2.837,0.598,5.53,1.671,7.965c0.094-1.738,0.369-3.429,0.802-5.052v-6.485H8.45z" />
+
+
+ </g>
+
+
+</g>
+
+</svg>
diff --git a/libimage/error.xpm b/libimage/error.xpm
new file mode 100644
index 0000000..f704a56
--- /dev/null
+++ b/libimage/error.xpm
@@ -0,0 +1,454 @@
+/* XPM */
+static char * error_xpm[] = {
+"491 386 65 1",
+" c None",
+". c #5E605D",
+"+ c #525350",
+"@ c #454744",
+"# c #717271",
+"$ c #45586D",
+"% c #8F908F",
+"& c #9C9DA7",
+"* c #CFD0DA",
+"= c #C6C6C6",
+"- c #AAAAAA",
+"; c #FBABA0",
+"> c #2F2F2C",
+", c #F5F2F6",
+"' c #FDFFFC",
+") c #985053",
+"! c #E9E7EB",
+"~ c #DDDEE8",
+"{ c #B1DFFE",
+"] c #D8D9D8",
+"^ c #0F1929",
+"/ c #000100",
+"( c #1A1B17",
+"_ c #0C2154",
+": c #266BF5",
+"< c #2F79F6",
+"[ c #3A8CFA",
+"} c #4B78D3",
+"| c #4BA1FD",
+"1 c #3D6894",
+"2 c #2E619E",
+"3 c #5A90D1",
+"4 c #135AF2",
+"5 c #084BF1",
+"6 c #003AEF",
+"7 c #62B3FF",
+"8 c #6490BD",
+"9 c #84B1DB",
+"0 c #9B0400",
+"a c #C12625",
+"b c #96292D",
+"c c #C44842",
+"d c #FC5F52",
+"e c #DC7C7A",
+"f c #FC9687",
+"g c #FB8474",
+"h c #FC705E",
+"i c #80C6FF",
+"j c #D5302D",
+"k c #215EB9",
+"l c #EF9C92",
+"m c #8FADC7",
+"n c #0A2B88",
+"o c #EA3C38",
+"p c #FC544A",
+"q c #97BEDB",
+"r c #9AD3FF",
+"s c #5B5712",
+"t c #736B15",
+"u c #49460E",
+"v c #FC4C45",
+"w c #F4E52D",
+"x c #A49A1B",
+"y c #F93D39",
+"z c #FD2B2C",
+" .......................................+..+..+.+.+.+.++.++.++.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++@+++@++@++@++@+@+@+@+@@+@@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ",
+" ..................+...+...+.+.+.++.+++.+.+.+..+.+.+.++.+.++.++.++..+.+.++.+.++.++++++++++++++++++++++++++++++++++++++@++@++@+@+@+@+@+++@++@++@+@+@+@+@+@+@+@@+@@+++@++@++@+@+@+@+@@+@@@+@@@@@@@@@@@ ",
+" ......................+...+........+...+...+.++...+.++.+.++.++.++.++++.++.++++.+++.++.+.++++++++++++++++++++++++@++@+++++++@++++++++++@+@+@++@+@+++@+@+@+@+@++@+@+@@@+@@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@ ",
+" ....#$..$..$..$+.$..$+.$..$..$+.$+.$..$..$+.$..$++$.+$.+$+.$+.$+.$++$.+$++$.+$++$++$++$++$++$++$++$++$++$++$++$++$++$++$+@$++$+@$+@$@@$+@$+@$+@$+@$+@$+@$@+@$@@$@@$@@$@@$+@$+@$+@$+@$@@$@@+@$+@$@@$@@@@@ ",
+" ......#+#............#+.............+.+.+...+.+...+.+.+..+.++.++.+.+++.+.++++.+++.+++++++++++++++++++++++++++++@++@++@++++@++@++@+++++@++@++@+@@@+@+@@@@@@$@@@@+@@+@+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ",
+" .#$.......+#+#+#+#+....+#+.+..+.+.+.+.......+....+..+.+.++.+.++.++.++.+++++++++.++++++++++++++++++++++++++++@++++++++++++@+++++@++@+@+++@+++@+++++@+@++@++@+@++@+@+@@@@@+@@+@+@@@@@@@+@@@@$@@@@@@@@@@@@@@@@ ",
+" ....#+#+#+#+.$.+.$..+$#+.$#+#$..$.#$.+$.+$+#$++$.+$.+$+.$+.$+.$+.$+.$+.$.+$.+$++$+.$++$.+$++$++$++$++$++$++$++$++$++$++$++$@+$++$@+$+@$++@+$@+$@@$@++$@+@@+@+@@$@@$@+$@@$@@$@@$@+$@@$@@@$@@@@@$@@@$@@@$@@@@ ",
+" +#+#+.$+%&************=***=*=*=**==*=**=***=*=**=**=**=**=**=**=**=*==*==**=**=**=*==*==**=**=*==**==*============================*===*-**==*===*==**==*****=**=====*==**==*;**=-=====**==-**===*==%$@@@@@@@> ",
+" ....#.##,,,,,'',,,,,,',,,,,,,,,,,,,,',,',,,,,',,',,',,'',,,'',','',',,'',''','',',,''''','''''''',',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,,,,,,,-@@@@@@@> ",
+" .#$+.++&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',''''''',,,''''''''''''',,,,,,''''',,,,,',,,+>$@@@@> ",
+" ...#.#+-'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',@@@@@$@> ",
+" ..$)...-'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',@@@@@@@> ",
+" ...$#+.-''''''',',,,,,,'',',',',',,',,',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,!,,,,,,,!,,!,,!,!,!,!,!,!,!!,!!,!!,!!,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!''''''@@@@@@@> ",
+" #......-''''',,','''''',,',',',,,'','',,',',''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,!,,!,,!,!,!,!,!!!!!!!!!!,!!!!!!!!!!,!!!!,!!!,!!!!!,!!!,~,!!!,~,!,!!,!!,!!,!!,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,'''',$>$@@@@> ",
+" ....#+.&'''''',',,,,,',',,,',',,,,,,,,,,,,,,,,,''''''''''''''''!''!''!'!'!'!'!,!,!'!'!'!,!'!'!'!,,,'!','!,!,,!,!,!,!,!!,,!!,!,!!,!,~!,!,!!!~,~~,!~~~,~~,~~,~~,~~,~,~,~,~,~,~,~,~!~~~~~~~~~~,~!!''''',+@@@@$@> ",
+" +#$....-''''''',''''',',',',',,',','''''',''',,!,!!,!!,!!!!,!!,,!',,!'!'!,!'!'!'!'!,!'!,!,!,!,!,!!!!!!!!,!,!,!,!!,!,!,~,~!,!!,~,~,~,~!,~,~,,~,~,~,,,~,~,~,~,~,~,~~,~~,~~!~!~!~!~!,,,,,,,,~!~!~!,''',,@@@@@@@> ",
+" ...#+#+-'''',,',,,,',,,,',,,',',','!!,!,,'!,!',,',,,',,',',,',,,,!,,,,!,!'!,,,!'!!,,!,,'!,!'!!'~',,'!,!,!!'~'~'~'~!'~,!,,~'~'~,,,~,,,~,!~,~,,~,~,~~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~~~~~~~~~,~,~!!''''',@@@@@@@> ",
+" ...$...-'''''',,''','',',',',,',,!',',',,,'!','~',,,,,,,,,,,!'!'!'!'!',',,,'!!'!,!'!'!!!'!!'~'~,!!!!!'~'~'~,!~'~!,!~'~,~'~,~,~,~,~,~!,~,~,~,~,~,~,~,~,~,~,~,~~,~,~,~,~,~,~,~,~!~!!!!!!,,~,~!~!~''''',>$@@@@@> ",
+" .#+#...&''''''',,',,,',,'',,,','','!,,,,,',,,,,,,',,',,'~',,,,,,',~'!~,~'!,!'!,'!,!~'~'!!'!~,,~'~''!'~~'~,~'~'~'!~'~,~'~,~'~'~,~,,~'~,~,,~,~,~,~,~,~,~,~,~,~,!~!~,~!~,~,~,~!~,~,~~,~~~~~!~,~,~!''''''@@@@@$@> ",
+" .......-''''',,'','',',',,,',',,,,,',''!',!'!',',,,'~,,',',,'~'~,',,'','!'~'~'~'!','~,!'~'~','~'!~'~,,,~'!,~'~,~'~'~,~'~'~,~,~,~,~,~,~,~,~,~,,~,~,~,~,~,~,~,~,~,~!~,~,~!~,~,~!~!,~~,!,!,~!~!!~!,'''',@@@@@@@> ",
+" ...$#+.-'''''',',,,,',',','!,,',,',,~',,'~',,,~','~'',,,~'~',,,',~'~,~'~','~',~'~,~''~'~'~'~~'~'~,~'~'~,~'~,~'~'~,~'~,~'~'~'~,,,~'~,~,~,~,~,~~,~,~,~,~,~,~!~,~,~,~,~!~,~,~!~,~,~~,!~~~~~,~!~!!!''''',@@$>@@@> ",
+" +#.....-''''',','',',',,',,','!',,,''!',''~',''~,,'~',',','~'~',,,,,',,,,~,'~''~'!'~'~,'~'~'~'!,'~'~,~'~',~'~'~~'~,~'~'~,~~,~,~,~,~,~,~,~,,~,~,~,~,~,~,~,~,~!~,~,~,~,~,~!~,~!~!,~!~,!,,~!~,~~~!,''',,@@@$@@+> ",
+" ...#+..&''''',,,,',,!~~~~~~~~~~~~~~~~~~*~~~~~~~{~~~~~{~~~{~~~~~{~~~{~~~~{]~~~~~~~~~~~~~~~~~~~~~*~~~~~~{~~{~~*~~{~~~~~~~~~~~~~{~~~~~{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*~~~~**~~~!~,!!!''''',@@@@@@@> ",
+" #+.+#..-'''''''',','~*************{*****{***{****{*****************************{********{*************************{********************{****{*************{*************************~***~,~~~!~''''',@@@@@@@> ",
+" .$#+#+.-''''',,',','~~*{***{*{******{**********************{************~*{******{**{*****{***{**{*********{********{**{*{**~***{**~*****{*********{**************{************~*****{*~~!~,~!~''''',@@@@@$@> ",
+" .)$....-'''''',,',,'~*************************~***************~**~***********************************~******~**~**************~****************{*************{*******{**{***~***********~,~!!!~''''',@$@@@@@> ",
+" ...#...&''''',',',',~~***~****~****~*~*~*~**~***~*~*{*~*~*~*~*****~*{*~****~******~**~**~**~*~*~**~***~*~****~***~**~*~*~*~****~*~**~*****~**~**~**~*{*~*~*~**~*~**~**~**~*{**{**{*~**~*~!!~~,~''''',@>@@@@@> ",
+" #...$..-'''''',',,,'~*~****~****~*************~****~**********~*{***~***~***~*~*~********~******~***~*****~****~************~*****~**~*~***~********~************~**********~***~***~**~~~!!!~~''''',@$@@@@@> ",
+" ...#+#+-''''',,,',',,**~**&^>^>^>^>^>^>^>^>^>^>^>^^>^>^>^>^>^>^>>^>^>^>^>^>^^>^^>^>^>^>^^>^>^>^^>^>^>^^>^>^>^^>^>^>^>^>^>^>^>^>^>^>^^>^>^>^>^>^>^^>^^>^>^>^>^>^^>^>^>^>^>^>^^>^>^>~**~**~,~~!!~''''',@@@@@$@> ",
+" #+.....-''','',,,,,,~~****&////////////^/////////////////////////////////////////////////////////////(/////(///////////////////////////////////(////////^////(///////////////////^****~~~,!!~,~''''',@@@@@@@> ",
+" ..#+#+.-,'''',',',',,*{***&///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////~*****~~~,~~~''''',@@@@@@@> ",
+" ...$...-''''',,,,',,~~****#//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////^**{~*~,~!~!!!'''',,$>$@@@@> ",
+" ..#.#+.-,''''',',,,,~~*~*~&///_:<:<<<<<<<<<[<[[[[[[[[[[[[[[[[}|[}[[[|[|[|}|[||}|[|}11232[|[|[}|[[[[[[[[[[[<[[<[<[<<<<<<<<:<::::::::4:44444454545555556556666666666666666666666////~****~~!~,~~~''''''@@@@@$@> ",
+" #+.+...-'''''',,',',~*****%///_<<<<<[<[[[[[[[[[[[[[[[|[|}||||[||||||||||||||||||1++++@+++1[|||[|||[|[}[[[[[}[[[[}<[[[<<<<<<<<<<:::::::::44444444455555565566666666666666666666///^**~*~*,~~~!~!,''',,@@@@@@@> ",
+" ..#$#..-,'''',',,,,,,~****&///_<<<<<[<[<[[[[[[[[[[|}[|[|[|[|||||||||||||||||||3@@@@@@@@@@+$2|}|}|[||[|[|[|[[[[[[[[<[[<[<<<<<<<:<::::::4:4:444445455555556666666666666666666666////~***~*~~,!~!!''''',@@@@@@@> ",
+" #+.....-''''',,'',,,~**~**%//(_<<[[<[<[[[[[[[[}[|[|[|[||||||[|||||||||||||||3$@@$@@@@@@@@@@@13}3}|[||[||[[|[[[[[[[[[[[<[[[<<<<<<<<:::::::4:44444445555565556666666666666666666///^*~*~*~!!~!!~!,''',,@@@@@@@> ",
+" ..#+.$.-''''',,,',,,,~****&///_[<[<[[[[[[[[[[|[|[|||||[||[|||||||||||||7||3$@@@@@@@@@@@@$@@@@22323}|||[||[|[|[[[[[[<[[[<<<<<<<<:<::<:::::4:44444454555556566666666666666666666////*~***~~~~!~!!''''',@@$>$@+> ",
+" $.+#...-''''',',,',,~**~**%//(_<[<[<[[[[[}[[|[[|[|[|[|||||||||||7||77|7|71+@+@@@@@@$@@@@@@@@@@122222}|||||[||[|[[[[[[[[[[[[[<<<<<<<:::::::4::444444445555555666666666666666666///^**~~~*!!~!!~!,''',,@@@@@@@> ",
+" .#+#+..&''''',,,,,,,,~*~**#///_[[[[[[[[[[|[|[|||[||||||||7|7|7||7|7|7|78@@@@@@@@@@@@@@@@@@@@@@$211213}|[||[||[|[|[}[[[[[[<<[<[<<<<<<:<:::::4:444445454555566666666666666666666////~***~~~~,~~!!''''',@@@@@@$> ",
+" #+#+#..-''''',',',,,~*~*~~%//(_[<[[[[[[[[[|[|[||||||||7|||7||7|777|778$@@+@$@@@$@@@@+$@@@@$>$@>12122223||||||[||[|[|[[[[[[[[[<[<<<<<<<:::::::::4444544555555566666666666666666///^*~*~*~!~~,~~!,''',,@@@@@@@> ",
+" ...+#+.-''''',,,,,,,,~****&///_[[[[[}|[||||||||||||||||77|77777|7773$@@@@@@@@@@@@@$*,,&+@@@@@@@$11112233|||||||[|[|[[}[[[[[<[<[<<<<<<<<:::::444:444445455555656666666666666666////~*~**~~~~!~!!''''',@@@@@@@> ",
+" +#$....-''''',','',,~*~~**%//(_[[[[[[[[|[[|[|||||||7|7|7|7|||777771@+@@+@@$@@+>$+-,',,,&@@@@@@>>1213112}3|||||||||[|[|[[[[[[[[<[[[<<<<<<<:::::::4:4444445555556666666666666666///^*~*~~~!!!!~~!,'''',>$@@@@@> ",
+" ...#+#+&''''',,,,',,,~*~*~%///_|[[|[||[||||||||||7|7|7|777777|738@@@@@@@@@@@@$)%,,'''',,+@@@@@@@$111211333|||||[||||[|[|[[[[[[[<<<<<<<<:<::::::4:44444545455655666666666666666////~~***~~~~~!!!''''''@@@@@$@> ",
+" #..$...-''''',',,,,,~*~~**%//(_[|[[|[|[||[||||7|7|7|7777|777778$@@@$+@$@+@@@@#!,'''''',,-$>$@@@@>$11321233||||||||[|||[|[|[[[[[[[[<[<<<<<<<:::::::4444444555555666666666666666///^**~~~~~,,~~~!,'''',@@@@@@@> ",
+" ..#)$#+-''''',',,,,,,~*~*~%///$[[|[||||||||||||77|77|77777778$@@@@@@@@@@@@@#*,'''''''''',#@@@@@@@$1111213337|7||||||[|[|[[[}[[[[<[[<<<<<<<:<::::4:4:44454455555566666666666666////~~**~~~~~!!~!''''',@@@@@@@> ",
+" .+.....-''''',,',,,,~~~*~*%///_[|[|[|[||||7|77|7|77777777731+@+@+@+@@@@$@+*,'''''''''''''*@$>$@@>>$11821233|7|7|||||||||||[|[[[[[<[[[[<<<<<<::::::4:44444445555556666666666666///^~*~~*~!!~!~!~'''',,$>$@@@@> ",
+" .......-''''',,,',,,~~~*~*&///$[[|||||||7|||77|77|77777771++@@@@@@$@@@@)&,,''''''',,''''',%@@@@@@@>111111333777|7||||||[|[|[|[[[[[[<[<<<<<<:<::::::4:4444545555556666666666666////~*~~*~~~!~,~~''''',@@@@@$@> ",
+" ..#$...-,'''''~,,,,,~~~~**%///_|||[|||||||77|77777777778++@@++@$+>)@$@%~,,'''''',~!!,'''',!+@@@@@@>$11311133||7|77||||||||[|[|[[[[[[[[[[<<<<<<<:::::4:444445455555666666666666///^~~*~~~~,~~~!~''''',@@@@@@@> ",
+" .......-''''',',,,,,,~*~~*%///$[||||||7|77|7|77|777778$@@@@@@@@@@$>@#*,''''''',!!~!!,''''',-@@$@@@@>$111111337777|7||||||||[|[|[[}[[<[<<<<<<<:<:::::4:444444555555566666666666////*~~*~~~~,~,~~''''''@@@@@@@> ",
+" #.+#...-''''''~',,,,~~~*~*%///_|||||7||77|7777777773$@@@++@$+@+@@+.*,'''''''',!!!!!~~,'''',,.@>$@@@$>111311333|7|7777|||||||||||[[[[[[[[[[<<<<:<::::::4:4444445555566666666666///^~*~~*~,~~~~!~'''',,@@@@@@@> ",
+" ...$...&''''',',',,,,~~~~~%///$[|||||7|77777777777$.++@@@@@@@@$@+-,''''''',,~!!~!~!!!!''''''*@@@@@@@@$11118133777|7|7|7|||||[|[[|[[[[[[<<[<<<<<<:<:::4:4:445454555556666666666////~~~~~*~~,~~,~''''',@@$>$@@> ",
+" +#.#...-''''''~',,,,~~*~**%///_||||7|7777|7|77778++@+@++$@+@@@+&,,''''''',!~!~,~,~!!!~,''''',%@@@@@@@>111111833777777|7|||||||||[|[[[[[[<}<[<<<<<::::::44444454555555666666666////~~*~~~,~~!~~!,''',,@@@@@@+> ",
+" .+...$.-''''',,,,,,,,~~~~~%///$|7|7|7|7|7777778+@@+$@@@@@+@$@#!,''''''',!!~!!!~!~,~~!~!''''''!+@$>@@$@$1181113377|7|7|7|7|||||[||[|[}[[[[[<<<<<<:<<::::::4:4445455556566666666////~~~~~~~~,~,~~''''',@@@@@@@> ",
+" #+#....-'''''',,',,,~~~~**%///_|||77|77777779$@++@@@@$+@+@@#*,''''''',,!~!,~~,~,~!!~,~!!''''',&@@@@@@>@$111811337777777|7||||||||[||[[[[<[[[[<<<<:<::4:::444445455555566666666///^~~*~~~,~~!~!!'''',,@@@@@@@> ",
+" 0000000000000000 .......&''''',,'~',,,~~~~~&///$77|77|777777$++@@$@+@@@@+@)-,'''''''',~!!!~~,!~!~,~!!~!!~,''''',.@@@@@@@$$11818833777777777|7||[|[|[|[|[[[[[<<<<<<<<:<:::4:4:444545555656666666////*~~~*~~~!!~~~''''',@@@@$@@> ",
+" 0000000000000000000000000000000000000 #$#+#..-''''',,',,,,~*~~~*%///$|7|77777778++@@++@+@++@@$&,'''''''',!~!,~!,~~,~,~,~~!~!!!!''''',*$@@@@@@@$11111138777777|7|7||7||||[|[|[[[[[[[[}<<<<<::::4::4444445555556666666////~~~~~~,~~!!!!,''',,@@$>@@@> ",
+" 00000000000000000000000000000000000000000000000000 .+#+...-''''''~',,,,,~~*~~%///$||77|7778@@@+$@@+@+@+@$%!'''''''',~,~!!~,~~,!~!~!~,!~,~~!~,''''''#@@@$@@@@11181883377777777|7|||||||[|[|[[[[[<<<<<<<:<:::::4:444445455556566666////~~~~~~~!!~~!~''''',@@@@@@$> ",
+" 000000000000000000000000000000000000000000000000000000000000 ..+#...-''''',,,,,,,,~~~~*%///_7777778$@+++@+@$+@@$@#!,''''''',,!!~,~,~!,~~,~,~,~~,~!!!!!!''''',!$@>@@@@@$$181118877777777|77|7|||||[|[[[[[[[[<}<<<<<<:::::4:44454555556666666////~~~*~~~~!!~!~'''',,@@@@@@@> ",
+" 00000000000000000000000000000000000000000000000000000000000000000000 .#+$...&'''''',,,,,,~~~*~~%///$|7|73$+++@+@+@@@@+@)*,,'''''''!~!!!!~!~,~~,!~!~,~,~~!~~~~!~,''''''%@@@@$>@@111818838777777777|7|||||||[|[|[[[[[<<<<<<<:<::::4:44444545555566666////~~~~~~!!~!!~~''''',@@@@@@@> ",
+" 0000000000000000000000000000000000000000000000000000000000000000000000000000 ...#...-'''''~'',,,,,~~~~*%///$7778++++@+@$@++@$+&,,''''''',!!,~,~,~,~!,~~,~,~!~**~!!,!!!~!,''''''$@@@@@@@@$1811183377777|77|777||||||[|}[[[[[[[}<<<<:<:::::4:4444455555565666////~~~~~~~!~~!~!,''',,@$@@@@+> ",
+" 000000000000000000000000000a0aabaccccccccdcacaaa0000000000000000000000000000000000 ..+#+#+-''''',,,',,,~~~~~~%///_78@@+@$@++@+@+@+&,'''''''',~!!~!!~,~,~,~~,!~!~,~*~**~~~~~,~!!''''''=@@@@@@@@$118188837777777777||7|||||[|[|[[[[<[<<<<<<:<:::4:44445454555566666////~~~~~~!~,~!~!''''',@@@@@@@> ",
+" 0000000000000000000000acccefegeefgggggggggggghghghghhghchdcaa000000000000000000000000000 #+#+...-'''''',,,,,,,~~~~*%///$$@++@++@$@++++#!,''''''',!!!,~,~,~!,~~!,~!~,~~******~~!!!~!!~,''''',#@@$@@@@@$$18118897i77777|77|7|||||||[|[[[[[[[<}<<<:<:::::::444445555555566////~~~~~~~!~~~!~,'''',>$>$@@@> ",
+" 000000000000000000abcceefegffggfggggggggghghghhghghhhhhhghhghhhhghhcjaa00000000000000000000000 ..$#+#+-,'''',,,,,,,~~~~~~%//@@+@++@++@+@+@#*,,'''''',,!,~~~!~,~,~~,~!~,~!~~**~*****~~~~!~!!~''''''~@@@@@@@$$1181813877i7777777|7|||||[||[|[[[[<[[<<<<<<:::::444:5445455656666////~~~~~~!~~!~~!''''''@@@@@@$> ",
+" 000000000000000000ceefffffffffgfgfgfgggggggggggghghghhghghhhhhhhhghhhhhghhhdcaa00000000000000000000 #......-'''''~',,,,,,~~~~~%>@+@++@$++@++@#&,,''''''',!!~!,,~,~,~!,~,~,~~~~**{****{*~~~,~!!!~!,''''',&@>$@@@@@$$11818887777777777777|||||[|[|[[[[<[<}<<<:k:::::4:44444555555556////~~~~~~~~,~~!~''''',+@@@@@@> ",
+" 0000000000000000ceefffffffffgfffgfgfgggggggggghghghghghhhhhhghhhghhhhhghhhhhghhhhdcaa0000000000000000000 ...$#+.-,'''',~',,,,~~~~*&++++@++@+@+$@+&,,''''''',~!!~,~~,~,~~,~~,~,~,~*~*****~*****~~!~~!~~!,''''',+@@@@@@@$$1818138i7i777777|7|7|7||||[|[[|[[[[<<<<<<::<:::4:44445455556666////~~~~~~~!~~,~~''''',@@@@@@@> ",
+" 000000000000000ceelfflfffffffffffgfgfgfggfgggggghgghghghhghghhhhghhghhhhhhhhghhhhghhhhhhdcaa00000000000000000 #$)....-'''''''~,,,,,~~&.@++@++$@+++@+%,,''''''',!!,~,~,,~!~!,~!,~,!~~*******~***~*~**~!!!!~!~!''''',=@@@@@@@@$$18188387i7i777777|7||||||[||[[[[[[[<}<<<:<:::::4:4445445555556////~~~~~~~,~~~!~'''',,@$@@@@@> ",
+" 00000000000000celfffflfffffffefffffgfgfgfggggggghggghgghghhhhhhhhhhhhhhghghhghhhhhhhhghhhhhhhddca00000000000000000 ....#+.-,'''',,'','!,*#++$@++$@+@+@+#*,,'''''',,!!~,!,~,~,~,~,~,~!~~~**~***~***8&~**{~*~~~,~!!~,''''',#@$>@@@@$$$81188837777777777|77|||||[|[|[[[[<[<<<<<<:::::4:4444555555656///^~~~~~~!~~,~~~''''',@>@@@$@> ",
+" 0000000000000bellflll;f;fllffffffgfgffgfggggggggggghghghghhhhghghhghhhhhhhhhhhhhhhghghhhhhghhhhhhdddaa0000000000000000 ...$...-'''''~'~,~!~#+@+@++@+@+++$+*,'''''''',!~,~,~~~,~~,~,~!~,~!~{***{*~**~&>/^*****~~,!~~!~!!''''''*@@@$@@@@$1$8118887i7i777777|7|7|||||[|[[[[[[[[[<<<<<:::::4:444445555556////~~~~~~~~~~~!~''''',@$@@@@@> ",
+" 000000000000bcl;f;f;fff;fffffffffffefgfgggfgfggggghghghghhghghhhhhhhhhghhghhghhghghhhhhhhghhhhghhhghhhhdda0000000000000000 ...#...-,'''','',~&++$++++++++@++&,,''''''',!!!,~,~,,!,~,~,~,~,~~**********m$////&**~***~!~,~~!~,''''',%@@@@@@@@$1$881888i7777777777|7|||||[|[|[[[[<<<<<<<:<:::4:4444445555656////,~!~~~,~~,~!~''''',@@@@@@@> ",
+" 00000000000bcf;;;;;f;;;fflfff;effffgfgeggefggggggghgghgghgghhhghhhhghghhghhhhhghhhhhhhhhhhhhhhhhhghhhhghhghddda000000000000000 #......-''''',,~-.++@++@$+@$@++&,'''''''',,~,~,~,~,~,~,~,~,~,~~****~**~***.//////^***~*~~!~~!!~!]'''''',+@@@@@@@.1$1818387i7i77777|77|7|||||[|[[[[[[[<}<<<:<::::::444445555565////~~~,~~~~!~~~!,'''',@@@@@@@> ",
+" 00000000000bg;;;;f;f;f;ff;ffffffffffffgfgfgggggggggggggghhghhghhhhgchhhhhhhhghchhhhghghghghghhghhhhhhghhhhhhhhhdddca00000000000000 ..$#+..-,'''',=#++@+++@+@++++#~,,'''''',!!!!~,~,~~,~,~,~,~!~~~*{********1^////////$~****~~!~!~!~~,''''',-@$@@@@@@$1$8188887i77i77777|7|7|||||[|[[[[[[<<<<<<:<:::4:444444555556///(~~~~~~,~!~!~!''''',@@@@$@@> ",
+" 00000000000ce;;;f;;;;f;ff;ff;flfffffffgfgfgfgegggggggghghgghghhhhhhhghhghhghhhghhhghhchhhhhhhhhhhghghhhhhhhhhhhghghdddja00000000000000 ..+#$..-'''']#$@+++$++++++@#*,,''''''',!,~,,~,~,~,~,~~'~~,~~****~**~**&>//////^////m*~*~**!~!!!!~~,''''',.@@@@$@@.1$81818897i7777777777||||||[||[[[[[[<}<<<<:::::4:44545455555////!~~~~~~~!~!~!,''',,$@@@@@@> ",
+" 0000000000bl;;;;;;f;ff;f;f;ffffffffeffgffgfgfgggfgggghgghghghghhghghhhhghhhcghhhhghhhghhhghhgcghhhhhhhghghghghghhhhhhhhddda0000000000000 .#+.#+.-,'!%+++++$@+@+$@++&,,'''''',,!!!~,~,~,~,~,~,~,~~,~*{********m^//////^56^///@*~**~~~~!~!~!!!''''''*@@@@@@@@$$18181387i7i77777|7|7||||||[[[[[[[<[<<<<<:<::::44:444555565////~~,~,~~~!~!~!''''',@@@@@$@> ",
+" 0000000000cl;;;;;f;;;;;;f;fflf;fffffgffegfgfgggggggggggghghghghhghhhhhghhhhghhhhghhhhhhhghhhhhhhhghghhghhhhhhhhhhhhhhghghhhddda0000000000000 #+#....-'-.++++@++++++++&,'''''''''!,~,,~,~,~,~,~,~,~,~~****~**~***#//////^n6665////&**~**~~!~!!!~~,''''',&@@@@@@@+$$1818883i77i777777|77||||||||[[[[[<}<<<<<::::::44444445556///(~~~~~!~!!~!~~,''',,@@@@@@@> ",
+" 0000000000cl;;;;;;;;;fff;f;f;fffffffffffgffgfgfgfggggggghggghghhghhhhghhhhhhhghhgdhhghhghhhhghhghhhhhhhhchhhghhhghgchghhhhhhhhhddda0000000000000 ..+#+#+%.++++++++++@+@&!,''''''',!!!!!,~,~,~,~,~,~,~,~***********$^//////n666666_///^**~~*~~~!~!~!~~''''',!@@@@@@@@$$$8181887i777777777||||||}|[[[[[[[<[<<<<:<:::4:44444545555////,~!~!~~!~!~~!''''',@@@@@@@> ",
+" 00000000bc;;;;;;;;;;f;;;f;fff;ffffffefffffgfgfggggggggggghghghghhhgchhhhghhghhhhhhghdghhdghhhhhhhhghhhghhghhhcghhhhhhhhhhhhghhghhdddda000000000000 #...$++++++@+$+$@+++#*,''''''',,,~,~,~,~,~,~,~,~,~,~***{~***~**&^//////_666666666////$~**~*~~!~!~!!!!''''',&@$@@@@@+$1$8188887i7i777|77777||||||||[[[[[<}<<<<<::::::4444455555///(~~~~,~!~!~!~~''''',>$@@@@@> ",
+" 000000000bf;;;;;;;;f;;;f;f;f;f;ff;fffffffgggfgfggggggggghghgghghghhhhhghhhhhhhhhghhhhhhhhghhhghghhghhhghhhhhghghhhhghghghghhhhhhhhghhdddda000000000000 ..$..++$++$++@++++$*,,,'''''',!!~,,,~,~,,,~,~,~,~~~*~*****~**&^//////_56666666666n////**~*~*~~!!~!~~!,''''',.@@@@$@@+1$818188i77i777777|7|||||[|[[[[[[<[<<<<<:<:::4:4444445555////~,~!~~!~~~~!~''''''@@@@@$@> ",
+" 0000000000e;;;;;;;;;;;f;f;f;ff;fffffefffgffffgfggfgfgggggghgghghgdghhghhghchghhghhhghghhghhhghhhhhhhhghhhhhghhhhhghhhhhhhhhhhghghghhhhhghdddoa00000000000 $)+++++++++++++++-,,''''''',!!,,,~,~,,~,~~'~,~,~~**{****~*~&$//////^n6666666666666^///$~*~*~~~~!!~~!~!''''''*@@@@@@@@$1$818883977i7777777|7||||||[|[[[[[<}<<<:<::::4:444454555///(!~~!~!~,~~!~~,'''',@@@@@@@> ",
+" 000000000c;;;;;;;;;;;f;;;;f;ff;fflffffffffegfggfgeggggggghgghghghhhhhhhhhhhhgdhgdhgdhhhhgdhgchhghcghhhhhghghhhhhhhhhghhhghhhhhhhhhhchghhhhhhdddj000000000000 .++++++++++++++&!,''''''',!,!!~,~,~'~~,~'~,~,~~~~****~****$^//////n666666666666666n////&*~*~~~~!~~,~~!,''''',#$@@@@@@@$18118887i777777|777|||||[|[[[[[[[<<<<<<:<::::4444455555////~~,~,~~~~!~!~''''',@@$>@@@> ",
+" 00000000bl;;;;;;;;;;;;f;f;f;f;f;fffffffeffgfgfgfggggggggggghghghghghghghhghhhghdghhhghghhghhhhhhhhhhhghhchhhhghhghhhhghhhhhhgcghhghhghhhhhghhgdddda00000000000 +++$+++$++$+++#~,'''''''',!,~,,,~,,,~'~,~,~,~~*{*********&///////n666666666666666666_///^~*~~*~~~,~~~!~~''''''!@@@@@@@@$$$8181883i7i77777|7|7|||||||[[[[[[[<<<<<::::::444444555///(,~~~~~!~~!~~~'''',,@@@$@@+> ",
+" 000000000e;;;;;;;;;;;;f;;f;f;ff;fef;fffffffgfgfegggfgggggghghggghhghhhhhhhhhhghhhghhhgdchhhhhghghhghhghhhghhhhhhhghhghhhhhghghhhhhhhhhhhghhhhhhhhhdddda00000000000 +++++++$++@+@+#*,,'''''',,!!,!'~,~,~~,~,~'~,~~~~****~*~**8^//////_666666666666666666666////#~*~*~~~!~,~,~~,''''',-@@@$@@@@$$8181883i777777777||||||[[[|[[[<[<[<<<:<:::4:444454555////~!~,!!~~~~!!~''''',@@@@@@@> ",
+" 00000000e;;;;!;;;;;;;;;;;;f;f;ff;fffffffffffgfgfggfggggggggggghhghghhghhghhghhhhhgdghhhhghghhhhhhhhghhhhhhhghghghhhhhhchghhhhhghhghhghghhhghhghhghghdppdj00000000000 +++++++++++++++-,,''''''',!,~,~,~'~'~'~'~,~~,~~*********~&@//////_n6666666666666666666666n////*~~~*~~~~!~!~!~,''''',$@@@@@@@$$$1818887i7i7777777|7||||[|[[[[[<[<<<<<::::4::44445455///(~,~~~,~!~~~~~,''',,@@@@@@@> ",
+" 00000000e;;;;;;;;;;;;;f;f;f;f;f;fffffeffffgfgfgfgfgggggggghghghghhgdgdhhhhhgdhghghhchhhghhhhhghhghhhhhghhhhhhhhhhhghghghhhhghhhhhghhhhhhhhhhhghhhhhhhhhddpda0000000000 ++++$+++++++++&,,''''''',!,!,,,~'~,~,{,~'~'~,~~*{**~*~*~q$///////n6666666666666666666666666^///$*~~*~~~~~~!!~!!''''''=@@@@@@@@$$81818887777777|77|||||||[|[[[[[<<}<:<<::::4444445455////~~,~!~~~~,~!~''''',@@@@@$@> ",
+" 00000000b;;;;;;;;;;;;;;;;;f;;f;fffff;fffeffgfefggfgggggggghgghghghghhhghghghdghhhhhhghhhghhhghhhhhhhghhhhhghhghhhgchhhhhhhghhhhhhhhhhghhhhghghhhhhhhhhhghhddpdj00000000000 ++++++++$++++@&!,'''''''',!,~,~,~'~,!,,,,,~,~~{**********#///////n566666666666666666666666666n////&*~~~~~,~~!~!!~,''''',#@@$@@@@+$$81818397i777777777|||||[|[[[[}[<<<<<:<::::::4444555///(~!~!~,!~~~!~~'''',,@$@@@@@> ",
+" 00000000e;;;*;;;;;;;;;;f;f;;ff;flf;fffffffffgfgfgfggfggggggggghghghghhhchhhhhghhhghhhhghhhhhhhhghhghhhhhgchghhhhghhhhhhhghhhhghghghhhhhhghhhhhhgchghhhghhhhhhdddda0000000000 ++++$+++++++$+#*,,'''''',,!!,!'~'~,~'~'~!~~'~~~****~*~**~&^//////_556556666666666666666666666666_///>*~~~~~~~,~!~!~!''''''!@@@@@@$@$$1818188777i77|7||7||||[|[[[[[<[<[<<<:<:::4444444455////,~,~!~~~,~~!~''''',@>@@@@@> ",
+" 0000000ae;;;;;;;;;;;;;;;;f;f;f;ff;effffffffgffgfggfgggggggghghghghghhhghghhghhcghhhhghhhhhghghcghhhhhhghhhhhhhghhhhhghghhhhghchhhhhhghghhcghghhhhghhghhhhhhghhhdpppa0000000000 +++++++++++++++=,'''''''',!,~'!~'~,~'~'~,~,'~~~***~*****~&^//////_n55556555566666666666666666666665////#~*~*~~~~~!!~!~!''''',&@@@@@@@@$$1818883i7777777|7||||[|||[[[[[<[<<<<:::::::4454545////!~!~!,~~~!~~~,'''',@$@@@@@> ",
+" 0000000b;;;*;;;;;;;;;;;;f;;f;f;f;fff;fffefffgfgfgfggegggggggghgghhhghhgdhhhhhhghhhhgdhhghhhhhhhhhhhgchghhghghhhhhghhgdhhhghhhhghhghhchhhhghhhhhhghhhhhghhghhhhhhhddpdj0000000000 ++++++$+++$++++&,,''''''',,!,,!~'~,~'{'~!!,~,~~~**~****~*m$//////^n5555555565565666666666666666666666n////*~~~~~~!!~!~!!~,''''',+@$@@@@@$$$81188377777777|7|||||[[[[[[[<[<<<<<:<::4:44444545///(~,~,~~~!~~!~!''''',@@@@@$@> ",
+" 00000000e;;;;;;;;;;;;;;f;;;f;;f;fff;ffffffffffgfgegfggggggggghggghghghhhhhghhghhhhhhhhghdghhghhghhghdghhhhhhhhhghhhhhdghghhhghhhhhhdghhghhhhghhghhhhghhhhhhhhghhhhghhpdpda000000000 +++$.+++++++++&,'''''''',,!,~'~,,~'!,!,~'~,,~~***{***~***#///////n5555555555555555566666666666666666666^///$*~~~~~~!~!!~!~!''''''-@@@@@@@@$$$$$$1$1187777|7|7|||||||[[[[<[[<<<<::::::4:445455////!~!~,!~~!~~~~''''',@@@@@@@> ",
+" 0000000be;;!;;;;;;;;;;;;;;f;f;f;ff;ffffffffgfgfegfgfgggggggghgghhghghhhghhhhhhhhhghhghhhhhhhgdhhhhhhghhhghhhghhhhhhchhhddddddddddddddddddddddddddhhhhhhgcghhgchghhhhhhhpdppa000000000 +++.++++.+++++#~,,'''''',,!,!,!,!!'~~'!!,!,~'{~~********r&^//////_444444554555555555655666666666666666666n////&~~~~~~~!~!!~!~,''''''#@@@$@@@>//////////777777|7||||[|[|[[[[<<[<<<<::::4:4444455///(~,~!~~~!~!~~~''''',@@@@@@@> ",
+" 0000000a;;;;;;;;;;;;;;;;;;f;;f;ff;effffffeffffgfggfgggfgggggghgghghghghhhhghghghgdghhdghghghhhghghghhhghhhhhdddcddddddddddddddddddddddddddddddddddddddddddhhhhhhhghhghhghdppdo0000000000 ++.++++++$++$+#*,'''''''',!',~,~'~'~~'~,~,~,!!**{*~***~*~&(//////_444454544544545555555555556666666666666666_///>~*~~~~~!!~!~!~!''''',~@@@@@@@@(/////////77777|7|7|||[|[[[[[[[<<<<<:<::::4:444545///(~!~,,,~~~!~!~,''',,$>$@@@@> ",
+" 0000000b;;;;;;;!;;;;;;;;;f;f;f;f;fff;ffffffgfgfgfgfggfggggggghghghghhchhghhhhhhhhhhhghgdhhhhhhgdhhhhhhhdhdddhdddhddddddhdhddddddddddddddddddddddddpdddpddddpddddhdhhhhhhhhhdpdpda000000000 +++++$++++++++#&,,''''''',,,!!,'~'~,~'~'~'~,,~~*******~**m$//////^n44444444444544454555555555655666666666666666////&*~~~~~~!~!~!~~,''''',%@@@@@@@@////////(7777777|||||||[|[[[<[[<<<<<:::::44444454////,~!~~~~!~~~~!''''''@@@@@$@> ",
+" 0000000c;!;;!;;;;;;;;;;f;;f;;;f;ff;fffffffffegffgfgfgggggggghggghghghhghhdghhcghhhghhhhhghhhcghhhghhdhddddhdhdhdhdddhdhddddddddddddddddddddddddppdddpdddddpddpdppdddddhdhhhghdpppoa000000000 ++.+++.++$.+++&,'''''''''!,!!'~'~,~'~,~,~'~,~~**~****~***+///////n4:4:444444444445445445455555555556666666666666n////**~~~~~~,~~~!~~,''''',$@@@@$@@>////////377777|77|||[|[|[[[[<[<<<<<::::4::444455////,~!,,,~~~!~~~'''',,@@@@@@@> ",
+" 0000000b;;;;;;;;;;;;;;;;;;f;f;fff;fff;fefffffgfgfggfggggggghgghghghhghhhghhhhghhhhhhchghhcghhhhhhdddhdhdhddddddddddddddddhddddddddddddddddddddddddpddodddppppdpdpdpdoddpdddddhhdppppa000000000 ++.+$+.++.++++&!,''''''',,,!,,!,!~'~,~','~,~'~{~*********1///////_:::4:4::4:444444444444545455555556565666666666666////#*~~~~~~~!~!~!!!''''''-@@@@@@@@////////3777|77|||||||[[}[[[[<[<<<:<::::44444455///(~,~~~,~~~!~~~''''',@@@@@@@> ",
+" 0000000g!;;;;;;;;;;;;;;;;;f;;f;f;fff;ffffffgfffgfgfgggggggggghggghghhhghhhhghhhghhhghhhhhhhhhhhdhdhcdddddhdhdhdhhdhdhdhddddddhdddddhdddddddddddodddddddpdpddddppdpdpdpdodppdpdddddppppa000000000 ++.++++$++++++#*,,''''''',,!!'!!'!''~'~'!~,~,~******~*~**&>//////_::4:::4::4:4:4:4:4444444444454455555555556666666666n////*~~~~~~!~~!~!~~,'''',,#@@@@@@@@stu///(337777|77||||||[|[<[[[<<<<<<::::::444445///(~,,,~,~~~~!~~,''',,@@@@@@@> ",
+" 0000000e;;;!;;;;;;;;;;;;;f;f;f;f;f;effffffeffggfgfgggfgggggghgghghhghghhhhghhhhhhhghhhghghhhhdhdddddhdhhddddhcddddddddddhddddddddhddddddddddddddddoddpddpddpppdpdpdppdpdpdpppdopdpppppppa000000000 ++.++$+.+++$+.#*,,''''''',,,'!~,~'~!~,~'~'~'~!~~*~*******m^//////^k::::::::::4:::4:44:4444444454454545555555655666666666^///>~~~~~~~~~~~!~!~''''''*@@@@$@@@sts////8377777|||||[|[[|[[[<[<<<<:::::444444545////!~~,~,~~!~~~!''''',@@$>$@+> ",
+" 000000be;;;;;;;!;;;;;;;;;;f;f;f;fffff;ffffffgeffgegfgggggggggggghghghhhhhhhdghhghhhhghhhdhhddddhdhhdhdhdddhdddddddddhddddddddddddddddddddddddddddddddpddddppdpddpdodpdpdpppdodpppppppdppppj000000000 ++.+++.+.++.+.+&,,''''''',,!!!!','~!','~'~,~'~~*{*****~***+//////^n:::::::::::::::::::4:::4:4444444445445455556555656666665////&~~~~~~~,~~~!~!,''''',&@@@@@@@+tu////383777|77||||||[[[[[[<[<<<<<::::::444445////,,~,~!~~~!~~~'''',,@@@@@@@> ",
+" 0000000e;;!;;;;;;;;;;;;;f;f;f;f;f;f;ffffffffffgfgggfggggggghghghghhghhghghghgdhgdghhhhhhhddhhdhddddhddddhddhddhdhdhdddhdhdhdddddcdddddddddddddddddddddddppddpdpdpddpdppdodppdpppppppdppoppdpj000000000 +.++$.++++++++&,,,'''''',,,,'!,,~~',~'~,~'~'~~~******~*r*$^//////_<<:<<<:::::::::::::::::44:4:4:4444444544554555555556566666_///(*~~~~~~~~,~!~~!''''',!@@@@@@@@@(////1337|77||||||[|[|[[[[<[<<<<:<:::44444454////,~,~,,~~~~!~~''''',@@@@@@$> ",
+" 000000b;;;;;;!;;;;;;;;;f;;;;;;f;fffffffeffefgffgffgfgggggggggghghggcghhhhhchhhghhhhghdhdddhhdhdhdhhdhdhhdhddhdddhddddddddddddhddddddddddddjdddoddoddddddpddpppddpdppdodpddpdpdppdpvpppppppppddo000000000 .+.++.+++.+.$.#!,'''''''',',!!!'!''~,!'~'~'~,~~******~***&(//////_<<:<<:<:<<<<<::<::::::::::::::4:4:444444444545455555565656665////#~~!~~~~~~!~~!~!''''',&@@@@@@@@(////818377777||||[|[[[[[[<[<<<<<::::::444445///(~,~,~!~!~~~~~,''',,@@@@@@@> ",
+" 0000000e;;;;;;;;;;;;;;;;;f;fff;ff;f;fffffffgffgfggfgggggggggghggghgdghhhghhghhhhghchdhdhhhddddhdhddcddddddhdddhdhddhdhdddhdddddddddddddddddddddddpdddjdddoddddppdpdpdpdpppdodoppppppdoppppppppdpp00000000b ++.+$.++.$+.++#*,,'''''',,!,!'!,!,~,~'~'~'~,,~{**{**~****&^//////_k<<<<<<<<<<<:<<<<:<:<:<::::::::4:::4:4:444444454555555555656666n////*~~~~~,~~!~~!~!,''''',#@@$@@@@>////138337|7||||||[|[[[[[[<<<<:<::::4:444545////,~'~'~~!~~!~~''''',@@@@@@@> ",
+" 0000000e;!;!;;;;;;;;;;;;;;f;;f;f;fef;fffffffffgfgfgggegggggghgghghghhghhhhhhhhghhhdhdhdhddhhhdhdhdhdhdhdhdddddhddddddddhdddddddddddhddddddddddpdpdddppddpdddppdpdpdodpdppppddpdpppppdppppppppppppdj00000000b .+.++.+$.+++++#-,''''''''',,'!,,,'~',,'~'~'~,!~**~******~&$//////^k<<<<<<<<<<<<<<<:<<<<<<:<:<:::::::::::4:4:444444444445555555565666^///@~~~~~~~~~!~~~~!'''',,*@@@@@@@@(///111337|77|||||[|[[[[<[[<<<<<::::4:444445////,,~,!,~~!~~!~''''',>$@@@@@> ",
+" 0000000e;;;;;;;;;;;;;;;;f;f;;f;f;fffffffffegfgfgfgfggggggggghgghghgdghhhhghghhhhdhhdhhhdcdhddhdddhdhdddhddhdhddcdddhddddcddhddddhdddddddddddddddddpdpddddpdpdppdppddppdpdpdopdppppppppppppppppoppoppo00000000b #.++.+++.++.+.$&,,''''''',,,,!,!,!~'~'~~'~'!'~~{******~*~q$///////2<<[<[<[<<<<<<<<<<<<<<<:<<<:<<:<:::::::4::4:4:4444445455555555556556n////&~!~!~~!~!!!!~~,'''',,%@@@@@@@@///1313337||7||[||[|[[[[<<<<<<:<:::4:444545////,~,,~,~~~~~!~,'''''@@@@@$@> ",
+" 000000e;;;;;;!;;;;;;;;;;;;;f;f;ff;f;ffffffffegfgfgggfgggggggghghghghghhhhhhhghchhdhhdhdhhdhdhdhdhdhddhdhddcddhdddddddhdddddddddddddddddddddddpddoddddddpddppddpdpdppdppdodddpppppppppppppppoppdpppppdj00000000b%####.$+.+.+$++%!,'''''''',,'!,!''~','~','~'~!~~**~***~***&(//////_<[<[<[<[<<[[<[<[<[<[<<<<<<<<<<<:<:<::::::::4::4:4444444444455555556666_///>~~~~~~!~!~~~~~!'''',,~+@@$@@@@>//11113377|||||[|[[[[[[[[<<k///////////^54///^,~,~,~!~!~~~~''''',@@@@@@@> ",
+" 000000c;;!;;;;;;;;;;;;;f;f;f;fff;ffffffffffffgfggfggggggggghghgghghhhhhghhhhhddhdhhdhdhddhdhdhddhdcdhddddddhddhdhdhdddddhddddddhdddddddddddddddddddpdpdpppdpdpdpdopdppdpdppppppppppdppppppppppppopvppppa00000000)####..+.++).#*,,'''''',,,,!,!'~,~'~'~'~'~,,~~******~***&^//////_}[[[<[<[<[[[<[<[<[<[<<<<[<<<<<<<<<<<:<<:<::::::4::4:444444454555555556565////#~~~,~~~!~!!!~~!'''',,&@@@@@@@$//1811333|7|||||[|}[[[<<[<<k///////////^55////,~,,,~!~~~!~~,'''',@@@@@@@> ",
+" 000000c*;;;;;;;;;;;;;;;f;;f;f;f;ff;ffffffefgffgfgfggfgggggggggghghghghhhghghhdhhhddhdhhdhdhddchddhddhddhdhdhddddddddddhdddddddddddddddddjddddddpddddpdddddpddodpdpdpdpdppdpdpppppppppppppppppppvpppvpppppa00000000+#####$+.$#-,'''''''',',,,,',,','!'~'!,~'~~**~***~**~&>//////^k[[[<[[[[[[[<[[[[<[[[<[[[<[<[<<<<<<<<<<<<:<:<:::::::::4:4444445445555555655n////*~~!~~!~!~~~~~~,'''',,+@@@@@@@@/111113337||||[|[|[[[[<[<<k///////////^45///(,,~,~,~~!~~~~'''',,$>$@@@@> ",
+" 000000b;;;;;;!;;;;;;;;;;;;f;f;f;ffffffffefgffgfgfggggggggghghghhghhhhhhhhhcdhhdhdhhhdhdhdhdhdhdhdhdhdhddhddddhdhddhdhddddhddddcddddhdddddddddddodddpdddodpdppdpdpddpppdodpdopppppppdoppoppopppppppvpppppvppj00000000######+.&,''''''''',!,!'!!!!'~!,~'~'!'~{~*{***~***q$//////^2[[[[[[[[[[[[[[[[[[[<[[[<[[<[<[<}<<}<<<<<<<<:<<:<:::::4::4:4444444445555555656^///+~~~~,~!~!~!~!~!''''',*@@@$>@@@^^$$$^1_11122122[[[[[[<[<<k///////////^54////~'~,,,~~!~~~~,'''',@@@@@$@> ",
+" 000000c;;;!;;;;;;;;;;;f;f;;f;f;f;f;fffffffffgfgfggefggggggggghgghghghhghgdhdhdhhdhdhdhdhdhhdhdhddhdhdddddhddhddhddddddddhddddddddddddddddddddddddddddodddpdpddddodpppdppdpppdpddppppppdppdppppppoppppvopvvvpoa0000000b#####%!'''''''',,!',,,!''~'~',',,,!,~~*********&.///////_}[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[<[<[<<}<<<<<<<<:<<:::::::4::4:4444544455555556n////&,~~~~!~!~!~~!~,'''',,#@@@@$@@@//////////////$[|[[[[<[<<k////www(///^55///^'~,!!!~~~~~~~''''',@@@@@@@> ",
+" 000000bl;;;;;;;;;;;;;;;;;f;f;f;ffffffffffffgfgfgfgggggggggghghghghhghhhhhhdgdhdhdhdhhdhhdhddhdhdhdhdhdhdhdhddhddddhdhdcddddddddddddddddddddddjddddpdddddpdpdpdoddppddpddppdpdppodpppppvppvpppppppppopppppvppvpoa0000000b$#%=*],'''''',,,,,!',,,,,,'~,~'~'~~****~***m&$^//////^k}}}[[[[[[[[[[[[[[[[[[[[[[[[[[[[<[[[[<[[<<<}<<<<<<<<:<:<::::::4:4:4444454455555556_///>~~~,~!~!~~!~~~~''''',~@@@@@@@@>/////////////^[[[[[<[<<<k////www(///^55////!!,~'!~~~~~~~,'''''@@@@@@@> ",
+" 000000l;;;;;;;;;;;;;;;f;;f;f;f;ff;fffffefgfffgfgfgfggggggggggghghghhghhhdhdhdhdhhdhdhcdhdhdhdddhddhddddhddddhdddcddddhdddhdddhdddddddddpddddddpdddodddpddpdpdpdppddppoppdodpppppppppppppppppppopvpppvvvpvvpvvvpp00000000)-*]]]]'''',!'',,'~'!,!'~,,,'~'~~****&#$+$++>//////^2222k}}}[|[|[|[|[|[|[|[|[[[[[[[[[[[[[[[<[[[[<[<<}<<<<<<<<:<:::::::4::4444454445555555////%~~~!~!~!~!~!~~!'''',,&@@@@@@@@////////////(_|[[[[[<[<<k///(www(///^45////,,,,~,~~!~~~~'''',,@@@@@@@> ",
+" 000000c;;!;;;;;;;;;;;;;;;f;f;f;ffffffffffffgfgfggggggggggghghghgdghhhhhchdgdhhhdhdhdhdhdhdhdhdhddhddhdddddhdddhdhdddddddddddddddddddddjdddddddddpdddddpdpdpddpdddpppddddpdpppppppppppppppdodppppppvpvpvppvppvvvovo00000000=!]!]]],',,,!,!,'!'~'!''!'~'~~**{*&@@@@@@@$@>(///_2k222223}}}|[[|[|[|[|[|[|[|[|[}[[}[[[[[[[[[<[[<[<<<}<<<<<:<:<:::::::4:4:44444545555555n////~!~~!~~~~~!~!~~,'''',,+@@@@@@@>////////////$[[[[[<[<<<k////sss////^55////,~,~'~~~~~~!~''''',@@$>$@@> ",
+" 000000c;;;;;;!;;;;;;;;;f;f;f;ff;f;ffffffffgefgfgfgfgggggghggghghghghghdhhhhhdchdhhhdhhdhdhcddhdhddgddhddhhddhdhdddhdddhddddddddhdddddddddddpdpddpdpdddddpddpppdpppdodpppppdpppdpppppppppppppppppopppvppppvvpvvppvppj0000000c=]]]]*]~',,,','~,,,'~'~'~,~~****+@@@@@@@@@+@+>^22222222222}3}||||[|[|[|[|[||[|[|[|[|[[[[[[[[[[[[[[[<<<}<:}<<:<<<::::::::4:44444544555555////.~,~~!!,~!~~!~!!'''',,*@$@@@@@@(///////////_|[[[[<[<<<k///////////^45///(~',,,,~~~~~~~,''',,@@@@@@+> ",
+" 000000bl;;;;;;;;;;;;;;f;;f;f;ff;feffffefffgfgfggfgggggggggghghghgdghhdhdhddhhhdhdhdhhdddhhddhdhdcdddcdhdddddddddddddhdddhddddddddddddddddddddddpddddppdoddpdddpdpdpdpdddodppdopppppppppppopppppppppoppopvvpvppvvvvvvvj0000000)]]]]=]=~'!'~,,''~'~'~',~{*****.$@@@$@@@@@@@@$@$_2_222222222}3}||||||||||[||[|[|[|[|[|[|[}[[[[[[[<[[[<<[<<<<<<:<:<::::4::4:4444445455555n////&,~,~~~~!~!~~~~,'''',,#@@@$@@@>///////////^|[[[[[<[<<k///////////^55////,~~,~'~~~~~~~''''',@@@@@@@> ",
+" 000000e!;;!;;;;;;;;;;;f;f;f;f;ff;ffffffgefffgfgeggggggggghgghgghghhhhdhhdgdhddgdhdhdhhdhdhddgdddhhdddhddhdhdcdhdddddddddddddhddddddddddddddpdpdddpdddddpddppdodpdpdpdoppddpppdppppppppppdpppppoppvpvvpppvpvvovvpppvvooa0000000l==]]*]]~,,'~'~,,,,,,!*~**{*~#@@@@@@@@@@@@@@@@@@$222222222222}3}|||||[||||||||||[|[|[|[|[[}[[[[[[[<[[<[<<}<<<<<<<::::::4::44444445455565_///>!~!~,~~~~~!~!~~''''',*@@>@@$@@>/////////(_[[[[[<[<<<k///////////^45////''~'~,~~!~~~~'''',,@@@@@@@> ",
+" 000000c;;;;;;;;;;;;;;f;;;f;f;ffffffffffffgfgfgfggfggggggggggdghgdghcdhhdgdhdhhddhhdhddhddhdhdddhdddhdhdddhdddddddhddhddhddddddddddddddpddddddddjddddjdddpdpdpdddodpdppddpppdppppppppppodoppppopppvpppvpvpvppvppvvvvvvvvo0000000b-==]*=*]~'~',''~'~'~*******&$@@@@@@@@@@@@@@@@@@@>$221222221223}3}|||||||||||||||||[|[|[|[|[[[}[[[[[[[<[<<<<}:<:<<:<:::::4::4444445454554////&~!~!~,!~!~!~!~,''''',&@@@@@@@@//////////^|[[[<[<<<<k///////////_55////~'~',,~~~~!!~''''',@@@@$@@> ",
+" 000000c;;;;;;;;;;;;;;;f;f;f;f;ff;ffefffffffgfgfgggggggggghghggghhgdhhdhdhdhdhdhdhdhdhhhdhhhddhddgdhddhdddhddhdhddddddddddddhdddddddddddddddddpddddpdddpddpppdpdppdpppddodppopppppppppppdppppppppvvvvvppvvvpvpvvvvvvvvpvvvj0000000b=*=]]]*]!,,,~,',~*{**~**~*#@@@@@@@@$>$@@@@@@@@@>@^$111212321223333|||||||||||||||||||[||[|[|[[[[[[[[[[[[[<<<<<<<:<::::::4::444444455555_////~!~,~~!~!~~~~~~,'''',,+@@@@@@@>////////(_[[[[[<[<<<k///////////^44///^,,,,~,~~~~~~~,''',,@@$>@@@> ",
+" 000000bl;;;;;;;;;;;;;f;;f;f;fff;fffffffegffgfgfgfgggggggggghghhgdhdhhhhhhhhhhdhhhdhhdcddhdddhdhddddhddhdddhddhddhdhdhdhdddhddddhdddddddddddjddddddddpddpdpddpdodppdpdpppdpddpdpppppppppopppppoppppppppppppvpopvvvvpvvvvpvvvj0000000)===]=*]*!'!'~~*********~&@@@$@@$>)*&+@@@@@@@@@$@@@$121121213223}33||7|||||||||||||[|||[|[|[|[|[[[[[[<[<[<<}<<<<<<<:<::::4:4:44444455555////.~!~,!~~~!~!~~~!''''',-@@@@@@@@/////////$[[[[[<[<<<k///////////_55////'~'~',~~~~~~~''''',@@@@@@$> ",
+" 000000l;;!;;;;;;;;;;;;;f;f;f;ff;ffffffffffgfgfgggggggggghgghghghghdhdhdhdhddhhdhdhdhhhdhdhddhddhdhddhdddhcddhdddddddddddddddddddddddddddddddddpdpdpddpddpdppdddpdppdodpdppppppppppppppdpppppppvvoppppvvovvpvpvppopvvvpvvvvooa0000000-==*]]=]~~'~~~*****~***&@@+>@@@@#,,,,&$>$@@@@@@@@>>>$1111211211233337|7|||||||||||||||||||[|[|}[[[[[[[[[[[<}<<<<<:<:<:::::4:44444445455n////*,~~,!,~!~!~!!~,'''',,#>$@@@@@@(uu(////^[[[[<[<<<<k///////////^45////!'!,!,~~!~~!~,''',,@@@@@@@> ",
+" 000000c;;;;;;;;;;;;;f;f;f;f;fff;fffffffffgfgfeggfggggggghgghghgdddhhhhhdhhdgdhdhdhdhddhdhhdhddhcddhddhdhdddddddhdhddhdhddddddddddddddjhpddddpdpdddddpdpdpdpddpppdpdppdpdodpppppppppppopppppppppppvpoppppppvpvvpopvvvvvvvvpvvvo0000000b===*]=]=*~**{***~***&^^@@@$@@@+~'',,,,%>@@@@@@@@@@@>>11112112121233337|77|7||7|||||||||[||[|[|[|[}[[[[[<[<<[<<<<<<<:<:::::4:44444454555^///>~,~!~~~~!~~~~~!''''''~@@@@@$@@utxs////^[[[[[<<<<<n///////////^55///(~,~'~,~~!]~!~''''',@@@@@@@> ",
+" 000000;;;;;;;;;;;;;f;;f;ff;f;ffffefffgfgfgfggfgggggggggghgghghhhhhdhdhhhhdcdhdhdhhdhdhdhddhdhdhdhddhddddhdhddhdddddddddddddddddddddddddphoddddddjddppdddodppppdppppdppdppppppppppdodpdpppppppvppppvpopvvvpvvvpvvvvvvvvvvvvvvvoo0000000%-===]=*-****~*****$//+@@@@@@@%,''',,,,*#$@@@@@@@@$@>@^$111131132123337|777|7|77||||||||||||||[||[[[[[[[[[<[<}<<<<<:<::::::4:44444454554////&~,~,,~!~~~~~!~,'''',,&@@@@@@@@ttu///(^}[[[<}}k<kk///////////^44////,'',,,~~~~~~~,''',,@$@@@@+> ",
+" 000000e;;;;;;;;;;;;f;;f;;f;fffffffffffefffgfgfggggggggghggdggdhhdhhhdgddhdgddhhdhdchdhdhdhddhdddhddhddhddddhdddddcdhddddhdddddddddddddddddddjddpdddpddppddpddpppdpdppdodpppppppppppppppppodpoppvvppppvpppvvvpovvppvvpvvvvvvvvvvva000000a-==**=*-*m***~**$///>+@@@@@$+,'''''''',,=+@@$@@@@@@@@@@$$111121131233337|777|7|77|||||||||[|[|[[|[|[[[[[[[[<<<}<<<<:<:::::::4:444454455_///(~~!~~,~~!~!~~~~''''',,@@@@@@@@usu////^}}<[<^//////////////////////(~~,!'!~~~~~~~''''',@@@@@@@> ",
+" 000000b;;;;;;;;;;;;;;;f;ff;f;f;fffffffgfgfgfgggfgggggggghggdghdhhdhdhddchhddhhdhdhdhdhdhddhddhdhddhdddhddhddddddhdhddddddddhddddddddddddddddddpdddddpdpdpdodpdpdpdodpdpdpppppppppppppopppdpopppvpppppppvvppopppvvvvpovvvvvvvvvvvyo0000000)=----m*-*****&////($@@$@@@@-'''''''''',,,&+>$@@@@@@$@>$>$111131111113333|7|77|7777|7|||||||||||[|[[[[[[[[[[[<<<<<<<<<::::::444444445555////#!,,~,~!~~~~~~!~'''',,&@@@@@$+@//////^}}[[<^/////////wxw(//////////','!,,~~~~~~~,'''',>$>$@@@> ",
+" 000000l;;!;;;;;;;;ff;f;f;f;fffffffffffffgfgggfggggggghghgghgdhhhdgdgdgdhddgdhdhhhhdhdhdhdhdhddgddhddhddddhdhdhddddddhdddddddcddddddddddddpddddddpdpdddpdpdpdpdpdppdpdpppdpppppppppppdppppppvppppopvvvvppvvpvvvvvvpvpvpvvvvovvvvvvvj0000000&--*=*-*&**&^/////@@@@@@@+#,''''''''''''',,%@@@@@@@@@@@@>>$1111313112133877777|7|77|7||||||||[||[||[|[[[[[[[[<[<<<<<<:<::::::4444444455n////*~~,~,~!~~!!~~~,''''',#@@@@@@@>/////^k}}[<^/////////www(//////////,,,~''~!~~~~~''''''@@@@@@$> ",
+" 000000c;;;;;;;;;;f;;;;f;f;ff;ffefffffegfgfgfgegggggggggghghgdhhdhddhddhdghdhdhhdhdhdhdhdcdhdhdddhddhdddhdhdddddddddddddddddddddddhjddddddddpddpdddddppddpdpdppdppdpdpppdpppppppppppppvdoppppppopppvvpppopvvvppvpvvypvvvvvvvvovvvvvvoa000000b-&&-&*&*&$(/////^@@@@@@@@*'''''!,'''''''',,~#@@@@@@@@@@$@>>$11111318111333377777|77777|7|||||||[|[|[[[[[[[[[[<[<<<<<:<:::::::4:44445445^///@,~,~,~!~!~~~!!!'''',,*@@@@@@+@(////^2}k[<^////////(www(/////////(,,'!,!~~~~~~~,'''',+@@@@@@> ",
+" 00000b;;;;;;;;;;;;;ff;ff;ff;ffffffeffgffggfeggggggggggdgghdhhhdgdhgdhhhdddhdhddhhdhdhdhdhdddhddhddhdhddddddddchdhdddddhdddddddddpddddddjddddpddpdoddpdpppdpdodpdpdodpdopppppppppppoppppdppppopppvppvpopvpvppvypvvpvvpypvyvvvvvvvvyvyo0000000)*&*-*&#>@>////2++@@$@@$%,''',,!~!,'''''''',,*$@@@@@@@@@@@$>@$11111131318333777777|7|77||7|||||||||[|[[[[[<[[<<[<<<<<:<::::::4444444545n////&!,~,,~~~~~~~~~,'''',,#@@@@@@@@////^kkk}<^/////////tst///////////,~'~',~~~~~~~''''',@@@@@@@> ",
+" 000000e;;;;;;;;;;;f;;f;;f;fffffffffgfffgffgggggggggghgggggdgdhhdcddhhdhhdgdhdgdhdhdhdhdddgdhddhddhdddddhdchdhdddddddhddddddddddddddddddddpdjdddddddpddppdpdpddpdodpdppdpppppppdppppdpppppopvppppvpvppvpvpopyppvpvvpvvvvvvvvvvvvvvyvvvva0000a0a&--&&@@>>@>/2[$@@@@@@@+,'''''!~!!!,,'''''''',,-@$@@@@@@@@@@@>$$111111111133337|7777|777|7|7|||||[|||[|[[[[[[[[[<[<<<<:<::::::::44444555_///(!~,~!,!~~!~~~~!,'''',,$>$@@@$@>///^22kk<^///////////////////////'',,,!~~~~~~~,''',,@$@@@@@> ",
+" 000000c;;;;;;;;;;f;;f;f;ffff;fffffffffgfgggfgfggggggggghhhdgdhdgdhhhdhhdhddhdhddhcdhdhdhdddddhddhdddhdhddhddddhdhddhdddddddhddddddddddddddddddddjdpdpdppddpdpppdpdpdpdodppppppppodppppodppvpvppvpvpvvpvppvvpppypovvvvvpvvvvvvvvvvvvvvvvy0000000)-&#+@>@>>$3}3@@@$>)@@-,'''',~,~~~!!,'''''''''',%@@$>@@@@@@@@@>$$11181811183333777777|77|7||||||||[|[|[|[[[[[<[<<[<<<<:<::::4:4444444554////#,~,~,!!~~~!!~~!''''',-@@@@@@@@^//^kkkkk^///////////////////////,,,,'!~~~~~~~''''',@>@@@$@> ",
+" 000000l;;;;;;;;f;;f;f;f;f;fffffffffgffgfgfggggggggghghggghdhdhdhhdhhchdhdgdhhdhhddhdhddhdhdhcdhddhdhddhdddhddddddddddddddddddddddddddddpdddpdpddpdpdpdpdodpdpdppdpdodpdpppppdppppppopdpvvpppvpvpvdoppvppvvpvopvvvvvvvovvvvvvvvvyvyvyvovvj0000000)+++$@>$833|$+@@@$@@#''''',!~!!!!!~!~,''''''''',~#@$@@@@@@@@@@@@$11118181118833377777777|777|||||||||[[|[[[}[[[[<[<<<<:<::::::4:4445445n////*~,~!!!~!!~~~~~,''',,,+@@@@@@@>//^22kkk^///////////////////////'~'!,,~~~~~~~''''',@$@@@@@> ",
+" 000000c;;;;;;;;;;f;;f;ff;fffffffeffffgfgfggfgggggggggghgdddgdhhdgdhhdhdhhdhdhdhhdhdhddgdddgdddddhddddddcdddddhddddhddddddhdddddpddddddjddppdddddddpddppdddppdpdpdodpppppppppppppppppppppppoppvvppvppvpvvvvpyppypvpypvpvvvovvyvyvvvvvvvyvvva000000b...+$133388@@@@@@@@*,''''!~,~!~!~~!~~!,'''''''''']#@@$@@$>$@@@@@@$11111811118333777|7|77|7|7||||||[||[|[[[[[[<[<[<<<<<<::::::4:44444445^///+,,,,~,~~~~~~~~!''''',*@@@@@@@@(/^k2kkk^///////////////////////',,,'!~~~~~~~''''',@@@@@@@> ",
+" 000000l;;;;;;;;;;;f;f;f;ff;fffffffegffgefgfggggggghghggdghhdgdhdhdhdgdhdhdhdhdhddgdhdddhddddhdhddhdhdhddhdhdddddhddddddddddddddddddddddddddpdppdpdpdppdppddoppdpddpdppppppppdoppppppppppppdvppopvvpvppvppyppyppvvppyvvvvvvvvvvvvvyvyvvyvyoo000000b)++&893393.)$@+@@@%'''''!,~!~!!!!!!!!~!!,''''''''',-+@@@@@@@@@@@@@@$111813181183337777777|7|77||||||||}||[[[}[[[[<[<<:<<<:::::44:445455n////&~,~,!,~~~!!~~~,'''',,#>$@@@@@@/^2n2kk^//////////////////////^,,',,,~~~~~~~,'''',@@@@@@@> ",
+" 000000b;;;;;;;;f;f;f;f;ffffffffffffgfggfggggggggggggghgdhdhdhdhhhdgdddgdhdgddhdhdhddhdhdhdgdddhddhdddddhdddddhdhddddddddddddddddddjdddpdddpdddddpdddpdpddppddppdodppppdpppppppdppopppppopvvvpppppvpvvvvopvppvpvypypvpyvvpvvvvvvvvvvyvvvvyvvoa000000b$8888933&..+@@@$@!,''''~!,~,~~~!!~!!!!!~,,'''','''',&+@@@@@$>$@@@@@$$111181811883337777777|7|7|||||[|[[[|[[[[[<[<<<<<<:<::::::4:4444455_///>~,~,!,!!~~~~~~~''''''!+@>$@@@@>^22nkk^///////////////////////'~'~',~~~~~~~''''',@@@@$@@> ",
+" 00000a;;;;;;;;f;;f;fff;f;ffeffeffffffgfgfggfggggggghghghhhhdhhdhhddgddhdhddcdgdhdhdhddhdddhdhddhddddhdddddhdddddddddddcddddddddddddddddppdddpdpddppdppdpppdpdpdpdppdppppppdppppppdpdopppvpvdopvpvpvpvppvppypypvpppvvvpovvovypyvvyvvvvyvvyvyvo0000000888&8988$.##+@@@-''''',~~!~!,,~~!!!~!~!!~!,''''''''''~&@@@@@@@>$@@@@@$$$1181811188333777777|77|7|||||||[|[[[[[[[[[<[<<<:<<:::::444444454////%~,!,!,~~~~~~~~!'''',,&@@@@@@@>^_2k_k^//////////////////////(,',',,~~~~~~~,''',,$@@@@@@> ",
+" 000000b;;;;;;;f;;f;f;f;ffffffffffgfggfggggggggggggdgghdddhdgdhdhhdgdhdhdhhhhdhdddhdhdhddhdddhddhddhcdddhdddddhdddddhdddddhddddddddddddddddpdjhpdppddpdjddppdododpdpdodppppodppoppododppppvpvpppvpvvppovvpyppvpypypypypvpvvvvvvyvvvvyvvyvyvyvvva000000)8888m8##..$#+@.,'''',!!,~,~~~,!~~~!!!!~!~~!,''''''''',~#@@@@@@@@@@@@@$$1$118181118333377777|7|||||||||[|[|[[[[[<[<[<<<<:::::::::4444445_////~!~,~,!~~~~~~~~,''''',+@@@@$@@>k_kkk////////////////////////,,~',,~~~~]~~''''',@@@@@$@> ",
+" 000000l;;;;;f;;f;f;f;ff;fffffffffgffgfgfgfggggggggghgghghhdhdgdhdhdhhdhhddhhdhdhdhdddgddchddhdddhddhdhddhdhddddddddddddddddddjdddddddpdjddddpddpddppdddpppdpdddppppppppppdppppdpdpppvppvpoppvppvpvvppppvpvvpypppvvpvvvvvvvvpyvvvyvvyvvvyvvyvyyo000000a88m88&#.#)#..@*''''',~~!~!!,~~!,,~~~!!!~!!~~!,'''''','',=$@@@@>$@@@@@@@@$11111818118333777777777|||||||||[|[[[[[[<[<<<<<<<::::4:44444555^///+,!,,!,!!~~~~~!!'''',,*@@@@@@@@(////////////////////////////'',~',~~~~~~~,''',,@@@@@@@> ",
+" 000000a;;;;;;;;f;f;ff;ffffffffffgefgfgegfgggggggghghgddddhdhdhdhhhhdhdgddhhdhhhdcdhdhdddhddhdddhddddddddhddddhddhddddddddddddddddddddpddddpdpdppdpdppdpddpdpdpppdpdpdpppppppppppvpppppodvdpvppopvpvpovvpopvvppvypypypvvyvvvvvvvvvvvvvvyvvyvyvyvva000000)3m8&###$#.#.#,''''!~,!~,~~~,,~~~!,~,~!!!~!!!!!,''''''''''-+@$@@>@@@@@@@@$$1118118181833377777|77||||[|[|[|[}[[[[[[<[<<<:<::::4:44444n44n////-,~,!,!~~~~~~~~,'''',,#@@@@@@@@////////////////////////////,,',,,~~~~~~~''''',@@@@@@@> ",
+" 000000e;;;;;f;;f;;f;f;ff;ffffeffgffgfgggggggggggggggdgdgdhhhhhdgdchdhddhhdhddhddgdddhdhdddhdhddhdhdhdhddddhdddddddddddhddddddddddddpdddpddddpddpdppdpddoddodpppdodoppppppppopppppppppppvpvpopppvpvpvppypvvvvopvpvpvvvvvpyvvyvyvvvyvvyvyyvvvyvvyoo000000a3888%####+##=''''',~~,~!!,~!~~***~!~!!~!!~!~~~!,''''''''',,%@@$@@$>$@@@@@@$$11118118118333|77|7|77|||||||[|[[[[[[<[<<<<<:<:::::::4:_/_55_///>'~,~,,,~~~~~~~]'''',,*$>$@@@@@(///////////////////////////,'~'',~~]~~~~,'''',>$@@@@@> ",
+" 000000b;;;;f;;f;f;ff;ffffffffffgffgfgfgfgggggggdgdgddhdhdhhdhdhddhdhhdhhdhdhhdhddddhhddhdhddddhddddhddddhddddhddddhdddddddddpddddddjhpdpddddpdppddpdpppddpddppdpdpdpdpppdppdppppppvppoppvpppppvpvpvvppvvpvvpvvvpyvvypvovvvvvvvyvvvvyvvyvvvyvyvyvyoa000000)3&######.#&*!'''!~,!~,~~,~!!~****~~~~,~!~!!!~!~!,''''''''''!#@@@@@@@@@@@@@@$$11181181183333777|7|7|||||[|[|[[[[[[[[<<<<<<::::4::_////n54////%,,~,!,~!~~!~~~,''''',%@@@@@@$@///////////////////////////,',!,'~~~~~~~''''''@@@@@$@> ",
+" 000000g;;;;;f;;f;f;fff;fffffffffgfgfgggggggggggggggdgdgdgdhchdgdhhdhchdhdhhdhdhhdgdddhdhdhdhdhdddddddhdddddddddddddddddddddddddddpdpdddpdpdddpdpdppdpdpppdpppdpppppppppppppppppppppppppvpvpvpvpopppvvvvvvvvvvpypvpvvvvvvvvvvyvvvyvvvyvyvvyvvvyvvyyo00000003###%###.#]]]'',,~~,~!,~,~~~***~**~~~!~!!~!~!~!~!~,''''''''''*#@@@>$@@@@@@@@$$$1181181118333777|77||||||[|[|[[[[[<[<[<<<:<<:::n///////45_////~'~,,!,~~~~!~~~,'''',,+>$@@@@@>//////////////////////////~,,',,~~~~~~~,'''',@@@@@@@> ",
+" 000000a;;;f;f;f;f;ff;ffffeffefgfgfggfgfgggggggghggdgdhdhddgdhdhdgddgdddhhdddhdhdddddhdhddhddddhdhdddhddddhddddddddcdddhddddpddddddddddpddddpdpdpddoddppddpppdpdodpdppppppppoppopppppoppvppppppvvpvovpvpvvvvvvvpvvvypvvvyvvyvvvvvvvvvyvvvyvyvvyvyvyyya000000)########-!]]]'!~,!~!~~~,~,~*******~*~~!~!!~!~!~!!~!,'''''''',,=+@@@@@@@@@@@@@$$1118118111833377|77|||||||[|[}[[[[[<[<<<<:<:k/////////n45////.~'~'!,~~~~~~~~!''''',=@@@@@@@@//////////////////////////''~','~~~~~~~''''',@@$>@@@> ",
+" 000000e;;;;f;;f;ff;f;fffffffffffgfgfgggggggggggghgdhhhhhhddgdgddgdddhhddgdgdddhhdhdhddcddhdhddcdhdcddhddddddddddddddddddddddddphjddppddpdddpdpdppddpddodppppppdpppppppppppdppdpppppppvppopypvppvpppovpvpvpvvvvpypvvvvyvvvvvvvyvyvvyvyvvyvvyvyvvyvvyyo0000000.#%#%##%]]]]]~,~~,~!,~,~~~**{~*~****~~~~!~!~!!~!~!~!!''''''''',,&@@$>$@@@@@@@@@$$1111318111333377|7|||||||[|[[[[[[[<[<<<<k^///////////45n////=!,~,,,~~~!~]!~,'''',,#@@@@@@@@/////////////////////////,,',,,~~~~~~~,''',,@@@$@@+> ",
+" 000000e;f;f;;f;ff;fffffffffffggfgfggegfgggggdghggdhhdhdhdhhdddhddhhhdhhddcdhhdddhdddgddhdddddhddddddhdddhdhcddhddddddddddpdddddpddpdddddjdpdpdpdppdpppddpdjddpdodpppppdodopppppppopvpppvppppopvpvpvpvypypvpvvypvvypyvpyvvyvvvvvvvvyvvyvvvyvvyvyyyvyyoa000000)$#####-*]]~]*~,!~,~~!~,~~******~*{***~~~!~!~!~!!~!~~~,''''''''''!%@@@@@@@@@@@@@@$11$118181133333777|||||[|[|[[[[<[<[<<<k///////tu////_54_///>,,,!,'!~~~~~~~~'''',,*@@@@$@@@(////////////////////////',,,'!~~~~~~~''''',@@@@@@@> ",
+" 000000c;;;;f;f;f;f;ffeffffffffegfgfggggggggggghghgdgdghdgdhdghhdgdhdhdhhhdddhdchddgdddddhdhdhdddhdhddddcdddddddddddddddddddddddddddddpdddddpdphoddppddodpddddopdppppppppppppppppppdppopppppppvvpvvvvpppvvpyvpppypvvpvvpvvvvvyvyvyvvyvyvyvyvyvyvvyyvyyyj000000b.##%#-==]]]]=~~,~!,~,~~~*****{*****~***~~!~!~!~!!~,~!~~,''''''''',~#@@$@@@@@@@@@@@$1111111$1123333|7|||||[||[[[[[[[<[<<<_////uxww/////n5n////&~'!,!,~~!~~~~~!'''',,&@@@@@@@@////////////////////////,,,,,,~~~~~~~'''',,@@@@@@@> ",
+" 000000ef;f;;f;ff;fffffffeffgfgfgfggfgggggggggghgddhdhddhdhhddhdhddhhdhddhhhdhdhddhddhdhddddhddhddddddhdddhddddddhdddddddjdddddjddpddjddpdpddppdpdpdpppdpdodppdppppppppppppppppppopvppvpvpopvvpppopypvopypvpvypvvpypyvyvyvvypvvvvvyvyvvvyvyvvyvyvyvvyyoya000000+####====]*==*~!!~~,~,~**~*~*&@&~~**~~**~*~~!!~!~~!!~!!~!,'''''''','*+@@@$>@@@@@@@@$$111$//11823333|7|||||[|[|[[[[[<[<<<k////uwwwt////^55_///(~,!,,'!~~~~~~~~,'''',,@@@@@@@@>///////////////////////,'~',,~~*~~~~''''',@@@@@$@> ",
+" 000000a;;;f;f;f;fff;ffffffffgfffgggfgggggggdghgghhhhhhdghdhhhhhdhhdhhdhhddhdhdddgddddhdhdhdddhddhddhdddddddddddddddddddddhddddddddpdddddpdpdpdpppdppdpdppdpdppppdppdodpppppppopppdvvppppppvpvpvvppppyvpvppyppypyvovpypvvyvvvyvvyvvyvvyvyvvyvyvyvyyvyvyyoa000000b.##--===]=**=*~,!,~~~~******^/^.q~****~*~~~~!~!!!~!~!~!~!,,''''''''',-$@@@@@@@@@@@@@$^////^111113333||||||[|[[[[[[[[<<<<_////xwx(/////n55////#~',!!,~!~~~~~~!'''',,&@@@@@@@@///////////////////////'','',~~~~~~~,''',,@$@@@@@> ",
+" 000000cf;f;f;f;ff;ffffffffgfgfggfgggggggggggghgdhdhdhdhddgdhddhdhdhdhhdhdhdhddgdddhhdhddddhdhdddddhdddhddddddddddddddddpddddddddpdddpddpddppdpdddodpdpppdpdppdodppppdppodpppdpppopvppvpopvpvpvvvvvvppvypypvpyppypvvvpvvvvvvvyvvyvyvvvyvyvyvvvyvyvyyvyvyyy000000b.##========*=*~!~~,~~*~****$/////&**~*~***~~~~~!~!~!~!!~~!!,''''',''''!%@@$>$@@@@@@@@@>////11312123333|||||||[[[[<[[[<<<<^///(s////////45n////*!,,,,,~~~~~~~~,''''',#@@$@@$@>//////////////////////,,'~'!~~~~~~~,'''',@>@@@@@> ",
+" 000000e;;;f;f;ffffffffffffgfgfgefgfggggggghggghgdgdhhhhhdhdgdhchhdhdhdhdhddgddddhddhddhdhdddddhddddddddhddddhddddddddddddddddddpdpddddddpdddodppddpdpdppdodpppppppppppppppppvppppoppppppvpvpvpypppyvpvppvpyppypvvvvyvvyvyvvvvvvvvyvvyvvvvyvyvyvyvyvyyyyooa000000).*==-==-=*=*=*,~,~~*****~&///////^&***~~~***~~~~,~~~!~!!~~~~,''''''''',~#@@@@@@@@@@@@@@(//^11113112333|||[|[|[[[[<[<[<<<k/////////////_55^///@'!'!,,!!~~~~~~~'''',,*@>@@@@+@(/////////////////////,,',',~~*~~~~''''',@$@@@@@> ",
+" 000000a;f;f;fff;ffffffeffgfgfgfggggggggggggghhgddhdhhdhdhhchdhdhddgdhdhdhdhdddhdddhdddhdddhddhdddhddhdddddddddddddddddddddddjddpddddpdpdpdpdpdpddppdpppdppdppdpppppppppppppopppoppppopvpyppvpvpppyppvvvvypvpvvpyvyvpvyvvvvvvvvyyvyvyvyvyvyvvyvvyvyvyvvvyyyj000000)%]]===-=-*=*=*~!~,~*~r~**@/////////>m~**~~~~~~~~~,~,~~!!!!!~~!,''''''''''*.@@$>@@@@@@@@@>//^18112312233}||||[|[[[[[[<[<<<^/////////////n54////&!,'!'!~~~~~~~~,'''',,&@@@@@@@@/////////////////////',,,'!~~~~~~~''''',@@@@@$@> ",
+" 00000ac;f;f;f;ff;ffffffffgfgfgfgfggggggghghggdgdgdgdhhdgddgddgdhddhdhhdcdhdhddgdhcdhddhdhddcdhdddhdddhddddhdddddhddddddddddddpdddpddpddppdpdpdjppdppddppdpppppppppdopppppppdpppppvpppvpppvpvpopyppvpypvpvpypyyppvvvvvvvyvvyvyyvvyvyvyvyvyvyyyyvyvyyyvyyvyyo0000000*]!]=-*-==*=*=*,~~******&////n///////$*~*~**~*~~~~~~!~!~~~~!~~~!,''''''''',-+@@$@@@@@@@@@+>/111111821223}3}|[|[[[[[[[<<<<k/////////////^55_///(!,!,,,,~~~~~~~~,''',,!$@@@@@@@>////////////////////,','',~~~~~~~,'''',@@@@@@@> ",
+" 000b00l;f;f;fffffffffffgfefggggggggggggggdghgdhdhddhcdgddhddhddhhhdhddhdhddhdddddddhddddddhdddddddddhddddddddddddddddjdddddddddpdddpddpdpdpdpdddppdododppopppppppppppppopppppoppvpppvpvpyppoppvpypyppypypvvpvpypyvvovvyvvvvvvyvvvvvvvvvvvvvvyyvyvyvyvvyyyyya000000-]=!*=-=&=*=*=*~~~***~**^///_66n///////#*~~*~*~*~~~~~~!!!!!!!~!~~,'''''''''',-@@@@$@@@$@@@@@>111121131213}3}||[|[[[<[[<<<:_/////////////nn/////#,,,,!'~~~~~~~~!''''',-@@@@@@@@////////////////////,',,',~~~*~~~''''',@@@@@@@> ",
+" 000000a;f;ff;f;ffffffgfffggfgffgfgggggghggghghhhhdgdhhddhhdgdhdhdhhdhhdhddgdddgdhdhdhdhdhddddhddhdhddddddddddhdddddddddddddddpddddjddpdpdppdpdppdpddpdpddpdppppppppppppdpppopppvppvvpvppppvvpypppypvpvppvpvypypyvpvvyvvvvvvyvyvyvyyyvyyvyyyyyvvyvyyvyvyyvoyyj000000c]]]*=-=--=*=***~*~****#////66666_//////^&*~*~~~~~~~~~!~!~!~!~!~!~~,''''''''',!%$>@@@@@@@$@@@>$11121131222322/2[[[[[[<[<<<</////////////////////*'!',,,~~~~~~~~,''',,,$@$@@@@@>///////////////////',,,',~~~~~~~,''',,$>$@@@@> ",
+" 000000eff;f;ffffffffeffgfffgggggggggggggghghgdhdhhdhdhdgddgddgdhdhdhddgddhddgddddhdddddhddhddddhddddhddddddhdddddddddddddjddpdddddddppphjdpddppdpdppdpdopppppppppppppopppppppppvppppopvvpyppvvvypvyvypyypypvpypvvypypvyvvypvvvvyvvvyvvyvvyvyyyvyvvyyvyvyyyyoy0000000*]]=*-*-=-*==******~*&^///n6666666_//////^-~*~*~~~~~~~~!~!!~!!~~~~~!,'''''''''']#@@@@@@@@@@@@@$$1111212122///^}[[[[[<[<<<<k////////////////////@,!,,',!~~~~~~]~''''',*@>@@$@@@(//////////////////,'',,'*~~~~*~''''''@@@@@$@> ",
+" 0000000lf;ff;fffffffffgffgggfgfggggggghghghghhdgdhdgdhhdgddhddhdhdcdhddhddddddhdhddhdhdddhddhdddddhdddddddddddddddddddddddddpdjdpdddphpppddpppdpdppdodpdppdppppppdoppdpppppppvppopyvvvyyyvyyyyyyyyyyyyyyyyyyyyyvyyvvvvvyvvvyvyvyvvyvyvyvyyvyvvyyyyyvyyyvyyvyyoa000000l]=**-*-=-==********~@///^666666666n^//////@**~~*~~~~~~~~!~!~~!!~!~~~~,''''''',,,*$@@@@@@>$@@>@>$$111121^/////$}[[[[[[<[<<<^////////////////////-',,,,,~~~~~~~~,'''',,#$@@@@@@@//////////////////','',,~~*~~~~,''',,@@@@@@@> ",
+" 000000ae;ffffffffffffgfggffggfggggggggghgghgdhdhdgddhhdhdhdhhhdhdhdhdhddgdhdhddhddhdddhddhddddhddddddddhdddddddddddddddddddddddddpdpppdpdppddpdodpdpddppppppppppppppopppppovovyyyyyyyvvyyyvyvyvyyyvypyvvyvyvvyyyvyyyyyyvyvvyvyvyyvyvyvyvyvyvyvvyvyvyyyyyvyyyyyo000000)**=*=--*-*=*-&***~*&////n66666666666n///////$*~~~~~~~~~~~!~!~~!~!~!!!!!,''''''''',&+@@@$@@@@@@@>@$111^////////2}}[<[<<[<<<k///////(u///////////(~,,','!~~~~~!~~''''''!@@@@$@@@>/////////////////,,,','~~~~~~~''''',@@@@@@@> ",
+" 00000acf;f;fe;ffffegffefgfgegggggggghghghggdhhhhddgdhdgdhhddhhdhhddgdhdddhddhddhdddhdcdddddhdddddddddddddddddddddddddddddpdppdddpdddpdpdpddpdpdpdodppppdpppdpppppppppvvovyvyvyvyvvyvyyvyvyvyyyvvyvyyyyyyyyyyyvyvyyyvyyyyyyyyyvyvvvvvvvyvyvyvyyyvvyvvyvyvyvvyyyo000000a===**-*---=**&*9***(///_66666666666666n//////^#**~~~~~~~~~~,~~!~!~~!~~~!,''''''''',,&@@@>$@@@@@@>>@^//////////^2}}}[[[<<<:<_////(tww////////////#',!,,'~~~~~~~~~'''',,&@@@@@@@@/////////////////''',',~~~*~~~,''',,@@@@@@@> ",
+" 000000effff;ffffefffffggfgggfgggggggghggdgdgddhdgdhdgddhdgdhdhhdhdhddhdhddhdcdddhdhddddhddddddhddhdcdddhddddddddjddddddpddpdddpddpdpdppddpodppdpddpdodpppppppppppopyyvyyvyvyvyvyyyvyyyyvyyyypyyyyvyvyyyyyyyyyvyyyvyyyyvyyvyyyyyyyyyyvvyvyvyvvvyyvyvzvyyyvyyvyyya000000-**=*=-*-*-***&***$////66666666666666666_//////>&~*~~~~~~~~~~,~~!~!~!!~~~~,''''''',',!#@@@@@@$@@$@@@@(////////^22k}k[<<<<<<<////uwwwx////////////~,,,,,,~~~~~~~~,''''',+@@@@@@@>////////////////,,',,,~*~~~~~''''',@@$>$@+> ",
+" 000000aff;fffffffgffgfgfgfgfgggggggghgghgggdhdgdhdhhdhdhdddhhdhdhdhdhddhddgddhhddddhdhddhddhdcddddddddddddddddddddddphoddpdddpddpdpdpddodpdpdpdppodpdppppppppdopyyvvyvyvyyyvyyyyvyvyvyvyyyvyyvyyvyyyyyvyyvyvvyyvyyyyyvyyvyyyvvyvyyvyyyyvyvvyyyyyvyyvyyvyyvyyvyyyj000000e==***-=-=-*&*&***////n6666666666666666665^//////>=*~~~~~~~~~~~~~!~!~~!!~!~~,''''''''''*#>$@@@@@@@@@@@>////////^22kk}k[[<<k_/////xwws////////////+'',,',!~~~~~~~!'''',,*@@@@@@@@(///////////////''''''~~~*~~~,''',,@@@@@@@> ",
+" 000000ae;ffffffffffgfgfggggggggggghghghgdddhhhdhhdhdhhhdgdhdhdhdhdhdhdhdhddddddhdhddddhdddhddddhdhddddddddddddddddddddddddpddddpdppdpdpdpdpppdpddpdoppdppppovyvvvyyvyyvyvyvyvyvyvyyvyvyvyvyvyyvyyyvvvyypyyyyyyyvyyyvyvyyyyyyyyyyyyyyyyyyyzvyvvvyvyyvyyyvyyvyyvyyy000000)*=*=*=&=&--***&*$////666666666666666666666n^//////$*~~~~~~~~~~,~~~!~~~!~!!~~!,'''''''','-+@@@@@@$@@@@+@>///////_22kk}k<<_////////t(//////////////-,,,,,'~~~~~~~~,'''',,#@$>$@@@@///////////////,',,',~~~~~*~''''',@@@@@@$> ",
+" 000000cff;ffffffgffgfgfgfggggggghgggghgggghddgdhhhdgdhddhdhdgdhdhdhddhddhddhhdddddhdhddddddddhdddddddddddcddddddddddpddjdddpdjhpdppdpdpdpdpdppppdpddppppvoypyvyyvyyvyyvyyvyvyvyyvyvyvyyvyvyyyvyyvyyyvyvyvyyvyvyyyvyyyyyyyvyyyyyvyyvyyyyyyyyvzyyvvzvyyvyyyyyvyyyyoa000000**==**=*-*&&*&*&(///n66666666666666666666666n///////#*~~~~~~~~~!~~!!!!~~~~!!~!!'''''''''',&@@@@@@@@@@@@@@(//////2222kk2//////////////////////////>!'!',,!~]~~~~~~'''',,~@@@@@@@@.#%&-%-==,',',','',,,~~~~~~~,''',,@@@@@@@> ",
+" 000000g;ffffffeffgfgfggfgggggggggghghgdgdddgddhdhhdddhcdhhhddhdhdhdhddhddhddddhdhdddddhddhddhddddddddddddddddddddddddddddpddddpdpdpdpddpppdpdppdodpppoyyvvyyvyvvyvyvypyyvyyvyvyvyyvyvyvyvyvyyvyvyyvyyyyyyyyyoyyyyyyyoyyyyyvyyyyyyyyvyyyyyvzvyvyzvyvzvyyvyyvyyyyyya000000&**=**---&*&**&+>//_66666666666666666666666666_//////(&~~~~~~~~~~~~~~!!~~~~~~~~~,'''''''','!%@@@@@$@@@@@@@@(////^kk22kk///////////////////////////%,,,,,'~~~~~~~~!''''',&@@@@@@@+##%-&%-=*',''',','',~~*~~~~''''',@@@@@@@> ",
+" 000000affffffffffegfgfgfggggggggghghgghghghdhhhdhchhhhdhdhdhdhdcdhddhdhdhdhhdhddddhdhdddddhdddddddddhddddddddddddddjpddpphpddpdpdpdpddppdppdppdpdppppyppyvyvyvyvyypyyyyvvvyvvyvyyyvyvyyyvyvyvyvyyvyyyvyyyvovyyyoyyvoyyvoyyoyoyvyyyyyyyyyyyyyyyyyyyyyvyvyvyyyyvyyyyj000000e==*=**&*---&=%>>//66666666666666666666666666665_//////>&~~~~~!~~~!~!~~!~~!~!~~!~~,'''''''',,*#@@@@@@@@$@@@@>(///_k_k22_///////////////////////////*',',,,~~~~~~~~,''',,,+@@$@@@@+%%%--&==!'',,',''',~~~*~~~,'''',>$@@@@@> ",
+" 000000bffefffffgfgfgggggggggggghggghgdghddhhdhhhdhdhddhhdhhdhdhdhdhdcddhddddddhdhddcdddhdddddhdddddddddddddddddddddddddddjddpdpddpdjdppdpdppjdpppoyyyvyyvvyvyvyyvyyvvvyyyvyyyvyvvyyvyvvyyyyyvyyvyyyyovyyoyyyyvyvyoyyyyyyoyyyyyyvyyyyvyyyyyyyyyyyyyyyyyyyvyyyyyvyyyy000000)*=*=**-&*&*&*>@>(n666666666666666666666666666666n^//////.*~~!~~~,~~!~!!~!~!~!~!~~~!,''''''''',*+@@@$>@@@@@@@@>//(2k2n2k///////////////////////////>!,,',,!~*~~*~~!''''',*>@@@@$@@##%-%--==,'''',,'',~~~~~~~''''''@@@@@$@> ",
+" 00000adfffffegfffffgfgfggggggggghghghghgdhdgddgdhdgdgdhdhdhhdhddgdddgdhdhdhdhdddhdddddddddhddddddddddddddddddjdddddddppdddddpddpdpddpdpppdpddppvyvvpyvvyvyvyvvvyvvyyvyvvyvvvyvyyvyvyvyvyvvvvyvyoyypyyyvoyvyvoyyoyyyyyovovyoyyoyyyyvyyyyvyvyyyyyyyyyyyyyzyyvyyyyyyyoa000000*=*=*=*--&*&#>@>(666666666666666666666666666666666n///////#~~~~~~~!~!~!~~~~~~~~!!~~!!'''''''',,,&+@@@@@@@@@$@@@>/^_2k2k_///////////////////////////&'!',,,~~~~~~~~,''',,,#@@@@@@@+#%%-%--=~,',''',',~~~*~~~,'''',@@@@@@@> ",
+" 000000effffffffggfggfgggggggghghghghgdgdhhdhdgddgddddhdgdhddhdgdddhddddhdddddhdddhddhdhdddddhddhddhddddddddddhdpddddpddddpdpddppdpppdppdppdppypypyyvyvyvyvvyyvyvyvvyvyyyvyyvyvyvvyvyvyvyyyyvyyvyoyyyyoyyyyoyyoyoyovoyyyyyyyoyoyoyyyyoyyyyyyyoyyyyyyvyyvvyyyyyvyyyyyj000000&=*==-*&=--&@>>@n56666666666666666666666666666666666n//////(%~~!~~~~!~!~!!~!~!~~!~~~~~,''''''''',,&@@@@@$@@@@@@@@^2_2_kk^///////////////////////////,,',,,!~~~~~~~~''''',~@@@@@@@@.#%&%&-==~,,,,,!,!~~~~~*~''''',@@@@@@@> ",
+" 000000aeffeffgfgfggfggeggggggggggghggdghhdhhdhdhdddgdhddhdcdhddddddhddhdhdhdhddhddhddddddddddddddddddddddddddddddpdddpdpdddpdpddppddppdpdpppyvyvyypypypyvyvvvvyvyvyyvyvyvvyvvyvvyyvyvyvyyvyoyovyyvyopyypyvoyvyyyyyyyyyoyoovoyyyyoyoyoyyyyoyyyyyyyoyyyyyyyyyyyyvyyyyyj000000e****&*-&=&#@@>$n5666666666666666666666666666666666665_//////>&!~~!~!~!~~!~!~~!~~~~~~!~~,''''''',,,~#@@@@@@@@@@@@@@_22_k2///////////////////////////.,!',,'~~~~~~~~!'''',,&@@@@@@@@##%%%%&&=~~~~~~~~~~~~~~~,''',,$>$@@@@> ",
+" 0000000ffffgffgfgfggggdghdgdhddhdhddhhddhhhdgdhhdgddhdgdhdhdhdhdgdhddhddddhddhdddhdddhddhdddddddddddddddddddddpddddjhpdddpdpdppdpdppdpdppooyypypypypyyvyvyyyyvyvyvvvyvvyvyvyyvyvvyvyvyyvyyvyvyyvoypyoyooyyyoyyovooooyyoyyyyyooyyyyyyyoyoyyyyoyyoyyyoyyyyyyyyyyyyyyyyy000000b==**-*&*&&++>>k:n6666666666666666666666666666665666666n_//////@*~!~~,~~,~!~!~~!~!~~~~~~~!,'''''''',,*.@@@@@@$@$@@@@$_2_k_///////////////////////////~,,',,,~~~~~~~~,''',,,+@@$@@+@$##&#&%&&*~~~~~~~*~*~~~~''''',@@@@@$@> ",
+" 00000ajffffffgfgfgfgghhdgdhdgdgdgdghhhdgdhddhhdhdhhhdddhdhdhdhdddddhdhdhddhddddddddddddddddddddddddddddddddddddddpddpddpdpdppdpdpddppdppyvpyvvypyvyyvvyyvvvvyyyyvyyvyyvvyyvyvyvyyvyyyyoyovoyoyoyyyoyoyyyooyvyoyoyyyyvoyyyoyoyyyoyyoyyyyyoyoyyyyyoyyyoyyyyyyyyyyyyyyyoa00000a**&**&*-&.$.+_k:k566666666666666656665655555565655656666n///////.~~~!~!~~,~!!~~~!~~~!~~~~!!,''''''',,,&+$@@@@@@@@@@@@$_2_///////////////////////////>',',',~~~~~~~~!'''',,&$>@@@@@@#$#&%&&--*~~~*~~~~~~~~~,'''',@@@@@@@> ",
+" 000000cfffgfgfggggggghhdhdgdhhdddhddhhhdhchhhdhdhddhhhdhdhdhddgdgdhdhddddhddchdhdhdhddhcdhddddhdddddddddddddpddjdddpddddppdpdpdpdjdpdjypyyvyypyyvypvvyvvyyyvyvvyvyvyvvyvyyvyvyvvyovovyoyyyyvoyyooyoyypoyyyooyoyyyyoyyooyyoyooyyyoyyooooyoyoyooyyyoyyyyyoyoyyyyyyyyyyyj000000=**&*=*-%).++:}:n:6656555555555555555556565555655556565665n///////%~~,~!~!~,~,~!~!~~!!!~~~!~!''''''''',,&@@@@@@@@@@@@@@$k_///////////////////////////-,',',,]~~*~~~~,''''',#@@@@@@@+##&#&%&m**~~~~~~~~*~~~''''''@@@@@@@> ",
+" 00000aggffefgffgefggggdghhdgdhhgdghhdhhdhhdhcdgdhhhdhhdhdhdhddddddcdddhdddhdddddddddhddddddddddddhdddddddddddpddddpdpdjhpdddjdpddppddpdppdppppdpppppppppppvpvppppppppvvvppvpvvvvpvvvppvpppvvvpvpvvvvpyvpvvyvyvvvvvvvyyyyvyyyyoyyyyyyyyyyyyyyyyoyyyyyoyyyyyyyyyyyyyzyyj000000&-*&*&*&.++.1nk<kk555556555555565555655555655555655555655655_//////>&~~~,~!~!~!!!~~~~~~~~~~!~~,'''''''',,*&@@@@@@@@@@@>@@_^///////////////////////////,',,',!~~~~*~~~'''',,*$>$@@@@@$###&%&--*~~~*~*~~~~~~,''',,@@@@@@@> ",
+" 000000gefgfgfggggggggdhdhdgddgddhddhhdgdhdgdhddhdhdhdhdhdhdddhddgdddhddhddddhddhddhdddhddddhddcdddddddddjddddddddpdddddppdpdddpppdppdppdppdpppppppppppvppppppvpvpppvpvpvvpvvpvvvvpvvvpvvvvvvvypvvvvyvvvvvvvvvyvvyyvvvvvyvvvyyvvvyvyyyyyyoyyoyyyooooyooyoyoyoyyyyyyyyyo000000e*&**-*++..$}}:}n<4565555555555555555555555555555555555556566n_//////@=~~!!!~,~~,!~~~~!~~~~~~~~~,'''''''',,*#@@@@@@@@$@@@@@///////////////////////////#,',',,~~~~~~~~!''''',%@@>$>+@@#$&%%&&-**~~~~~~*~~~~''''',@@$>$@@> ",
+" 000000agfgfgfgfgfgggggdgdgddgdhhhdgdchddhhddddgdhdhdhdhdhdhdgdhddddhdhddhdhddhdddddddddddddddddddddddddddddddpddpdddpdppddppppddppdpppdpdpppppppppppppppppppppvpvpvvpvpppppvvvvvvvvvvvvvvvvvvvvpyvvpvvyvyvvyvvyvyvvyyyvyvvyyvvyyyvyvvyvyyyyoyoooyyyozyyozozozyoyyyyyyzo000000)**&*&&>+$)&2}:}<}n55555555555455554555555555555555555555555656n^//////.*~~,~!!,~!!!~~~!!~~!!~~~~~,''''''',,,*$@$@@@@@@@@@@@>//////////////////////////~',,'',~~~~*~~~''''',~)@@@@@@++##&#&%&-*~~~~~~~~*~~,''',,@@@@@@+> ",
+" 000000aegffggfggggggggdhdhdgdgghghghghggggggghhghghgcghghedgdghgghgdgdedghghgdedgcghghhgdghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhdhhhdhhdhhhhhdhdhhhdhhhdhdhdhdhdhddhdhddddddhddddhddddddddddddddddddddddddddddddddddddpdppdddpdddpdppdpdpppopoooyozjyjyzjyooooozoyyyyyyy000000b*&**&+>@+$}}2}n}:}6555554545454454545444455454555555555555555555n///////#~!!~~~,~,!!~~~!~~~!~!~~~~!''''''',',,-@@@@@@@@$@@@@@>////////////////////////>,',,,'~~~~~~*~!''''''&@@@@@@$@$##&#&&-&~~*~*~~~~~~''''',@@@@@@@> ",
+" 000000jffgfgfggggggggghhhhhdgfeffefffffegffefffefeffffeffffeffefeffefffffefefffffffefeflffeffffffeffflfflffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffflfffflffflffffffffffffffffffffffffffffffflfffffffffffffffffflffffoooyyyoyoyozzoyoyoyyyyyoa00000a&*-*#@>>.})}8<}k}k454545454544544545445545445454545455555555556555_//////(&!,!,~!~!,!!~~!~~~~~~~~~~~,''''''''',~&@@@@@@@@@@@@@@(///////////////////////=,'',',~~~~~~~~,'''',,#>$@@@@@+###&%&&-*~~~~~~~*~~,''',,@@@@@@@> ",
+" 000000cgfgeggfggggggggdhhdgdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffflfflffflffffffflffffffffffffffffffffffffffffffffffffffffffffffffffffffffffflfflfflfffffffflfffflfffflffflffflfffflffffflffffffffflfffffflfflfffflfffyyoyjyoyozjozjzoozyyyyyza000000**&&@>@>13}32}}:}k:4545444544544444444444444544444544545455555555554_//////>&,~,~,~,~,!~~~~~~~~~~~~~~!,'''''''',,~#@@@@@@$@@@@@@>(/////////////////////(,,,',,!~*~~~*~~''''',*@@@@@@@@$#&#&%&-&~~~~*~~~*~''''',@@@@$@@> ",
+" 00000adfgfggggggggghgggdhhdhgf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;l;;l;ll;;;;l;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ljazozoyjzoyyojzoyoyyyyyya000000&**#>>@>}3232}k:}kk44445444444444444444444444454444544444445454555555n^//////@*,~,~,!!,,,!!!~!!~~~~~~~~~,''''''',,,*$@@@@@@@@@@@@@>/////////////////////#,',',,~~*~~~~~,'''',,#@@@@@@@@##%#&%&&**~~~*~~~~,''',,@@$>@@@> ",
+" 000000cfgfgfgggggggghgddhhhhgf;]!]~]~]!]~]]]]~]!]!]~]]]]!]!]!]!]!]]]]~]~]]]]]]~~]!]!]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]a0aoooooyozjyyooyoyyyyzyz00b000)*&>>>$n}238}&k}}}<5444444444444444444444444444444444445444445455555555n///////#~!~,~~,~,!!!~~~~~~~~~]~!~!,''''''''',-+@@@@@$@@@@@@@>////////////////////,',''',~~~~~~~~''''''!@@$>$@@@$##&#&%&-*~~~~~*~~''''',@@@@@@$> ",
+" 000000agggggggggggggghghhhdhhff;]]]!]!]]]]]!]!]]]]]!]]!]]]]]]]!]]]]!]]]]]!]!]!]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]']]']]]']]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]*aajoyzjzoooyjzozoyyyyyyyj000000e&$@>>$}}8}8}}}k}k}:44:444:4444:44:4:4:444:44:444444444444544444454555555n///////%~,,~!,!!,,!!!~~~~~~~!~!~~!''''''''',,&@@@@@@@@$@@@@@(//////////////////@,'',,'~~*~~*~~~'''',,&@>)@@@@@$##&%&&&-~*~*~~~~,''',,@@@@@@@> ",
+" 0000000gegfggggggghghghdhhhdhgf;!]]]]]!]!]!]]]!]!]]]!]]!]]!]!]]]!]]]!]!]]]]]]]]!!]!]!]!]!]]!]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]']]]']]]]]]]]]]]]']]]']]]']]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]']]]]]]']]']]']]']]]']]]]]]]]]]]]]]]]]a0joozjyzjyzoojyjzjzyyyyy000000)#>>@>k<}})}88}}}}}n4:44:44::4:4:4:4:4:4::4:4:44:44444444444454444445455454_//////>&,,~,,~~,!,!!~~~~~~~~~!~~~,'''''''',,~%@@@@@@@@@@@@@@(/////////////////=,'',',~~~~~~~~,''''',.@@>+@@++##&#&%&***~~*~*~''''',@@@@@@@> ",
+" 000000jgfggggggggggghgghhhhdhgl;]]!]!]]!]]]!]]]!!!'!]'!!!!!!]'!!!'!!!!!!,!,!!']!!!!!!!!!!!']'!']']']']']']']']']']']']']']']']']']']']']'']'']]'']]']']']']']']']']']']']'']'']'']'']'']'']'']'']'']''']']']']'']]']]']]']']']]'']'']'']']']!]]*aajjyjzooyjyjzzoyyoyzyyyy000000b@@>>2}k}}8}28}}}}}}:4:4::4:4:::4::4:4::4::4:4::4::::4:4444444444445454455554^//////@=,~,,,!,~!,,~~~~~~~~~~~~~~,''''''',,,~$@@@@@@$@@@@@@>////////////////(,',',',*~~*~~~~''''',*@$@@@@@@$###&%&&-*~~~~~~,''',,@$@@@@+> ",
+" 000000aggggggggghghgghhdhhhhhgf;]]!]]!]]!]]''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',!0aayzjyjzjyyjooozjyyyyzyya0000a0^@>@k}}<}388}&k}}}}4:4::4::::::::::::::::::::4::4:4:4::4:4:444444444454445455n^//////.*~,~,,,~,!,!~~]~!~~~~~~~~!,'''''',,,,*+@@@@@@@@@@@+@>//////////////.,,'''',~~~~~~~~,'''',,#@@@@@@+@##&#&#&*&~~~*~~''''',@@@@@@@> ",
+" 000000jggggggghgggdghgghdhdhhg;;!]]!]!]!]!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',0aaojoyoooozjzyjoyoyyyyyza00000a>@>k}}}}}}823}}}}}}<::::::::::::::::::::::::::::::::::4::4:4:444444444454554555n//////(#!~'~,,!,,,,!~~~~~~~~~~~~~!'''''''',,,&$@@>$@@@@@@@@@>//////////>-=*],,,'',~~~*~~~~,'''',~@$>$@@@@$##&%&&&-*~~~~~,'''',>$>$@@@> ",
+" 000000cgggggggghghgghgdhhhhdhgf;]]']]]!]''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''a0jyoyjzoooooozjyzjzyyyyya000000>>$}}}}}}2&}&}3}}}}}:::::::::::::::::::::::::::::::4:::::4:4::4:44444444445445454_//////(&!,!,~,!,,,,~!!~~~~~~~~~~~,''''''''',,%+@@@@$@@@@@@@@(//////(%&&-===!','!~*~~~*~~!''''',&@)>@@@+@#$&#%&&&=*~*~~''''''@@@@@@$> ",
+" 00000aoggggggghgghgdghgddhdhhgf;!]]!!]!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',,a0jjzyjojzyjzojzoooyyzyyza00000a>>k}}}}}}}}8283}}}}}:<:<:<:<:<:<:<<:<:<:<:<<:<:::::::::::::::4:::::4:4444444445455n_//////>=~'!,,!!,!,!~]!~~~~~~~~~~~,''''''',,,~#@$>@@@@@@@@@@>(///.&&-%---==*]~~~~~~~~~~~,'''',!$@@$@@@@+##&#%&&&*~~~~,'''',+@@@@@@> ",
+" 000000cgggghghghggdgdhhhhhhhhgf;]!]!]'''''',''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''aaaojyzjyjzjozjoozjyyyyyyj000000>2}}}}}}}}&}&}8}}}}}::<<:<:<:<<<<:<<<<:<:<:<<::<:<:::::::::::::444:4:4:4444444445555n^//////+*!'~'!,!,,,~~~~~~~~~~~~~~~,'''''',,,,=.@@@$@@@@@@@@@>@%#%%--%------**~~~*~~~~~!''''''-@@>@@$>+)##&%%&&-*~*~''''',@@@@@@@> ",
+" 00000aoggggghgghhghggghhhdhdhff;]']!]'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',0aayjyjyjyjyjoyjzooyyyzyzj000000)}}}}}}}}}8}&}&}3}3}<:<<<<<<<<:<<<<<<<<<<<<:<<<<:<<<<<:::::::::::::::4:4:4444454444555n///////#~,!,!',,,,,!~~~~~~~~~~~~~!'''''''',,,&+@>$>$@@@@@@@@.#%#%%-&%&%&&-&=*~~~*~~~~,''''',#@$>@+>$@###%%&&&*~~~,''',,@$@@@@@> ",
+" 000000cghghgghghghgdhdgdhhhhhgf;]]!]'','''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',aaazjyjzjyjzozjozjyozyyyzj000000_}}}}}}}}}38383}}3}3<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<:<:<<<<:<::::::::4::4:4:44444444/^n554_///////%,'~,!,'!,,!~~~~~~~~!~~~~~!''''''''',,&+@@@@@$@@@@@@@.%#%%%%%&%%&-&-**~~~*~*~''''',~@@+@@@@@$##&#&%&-*~~''''',@>@@@$@> ",
+" 000000dghggghghghhhghhhhdhdhhff;']!!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',a0jjyjyojzojojzojzooyyzozj0000002}}}}3}}3}}813&3}3}}}<<<<<<<}<<<<<<<<<<<<<<<<<<<<<<<<<<:<:<:<<:<::::::::4::4:4444_///_4554_//////>&'!,!,,',,,,~~~~~~~~]~~~~~,'''''''',,,#@@@@@@@@@@@@@+####&#&#&%&&&--**~~~~~!'''',,&@@@@@@@+###%%&&&-~~,'''',@$@@@@@> ",
+" 000000cggghghghgdghhhghdhhhdhgf;]']'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',aaaoozjyjyjzjyjojyjzyyyyyj000000}}}3}}}3}}88833}3}3}}<<<<}<<<[<}<[<[<}<[<[<<[<<<<<<<<<<<<<<<:<:<::::::::::4:4:44://////_555n_//////@*'!,!','!,,!~~~~~~~~~~~~~~,'''''''',,*#@@@@$@@$@@@@@+#$##&%%#&&&&-&***~~~~,'''',,+@@@@@@@$##&#&&&&*~''''',@@@@@@@> ",
+" 00000adhghgghgdghghhhhhhdhhdhff;]]!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',0ajjojyjzjyjojzyjzooyzyzzj000000)}}}}3}}3}}}&3&33}33}<}<<[<[<[<[<[<[<[<}[<[<<[<[<[<[<<<<<<<<<<<:<<<<:::::::::4:4^////////n455n///////.~,,!,!',,,,!~~~~~~~~~~~~~!,''''''',,,-$@>@@@@@@@@$@++#$##&&#%%&&&-&=*~*~!''''',&@$>$@@@+$##&%%&&-~,'''',@@@@@@@> ",
+" 000000hgggdghghhhhhhhghhhddhhgf;'']'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',a0ayjojyjyjyjyjzjzjyyyyzyz000000k}3}3}3}3}888}88}3}3}[[<[[[[<[[[[<}[<[<<[[[[[<[[<[<<[[<<<<<<<<<<<::<<::::::::::n//////////^n555n///////%~,,,,,'',,,!~~~~*~~~~~~~~!'''''''',,,&+@@@@@@@@@@@@++##$%&%#&%&&&-&**~~,''''',#@)>@@@@)$##&%&&-*,'''',@@@@$@@> ",
+"000000bddgghgdghhghghhhhdhhhdhff;]!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',aajjzjyjzjyjzjojjojyyzyozj000000)}3}3}3}3}}3&83&}3333[<[[<[[[[<[[[[[[[[[<[<[[[<[[<[[[<[[[<[<<<<<<<<<:<<::::::::////(////////_4554_//////(&',,,!,!',,,!~~~*~~~~~~~~~!'''''''',,~&+>$@@@@@@@@@@$+###&#&#%%&&-&-=~~''''',*>@$>$>@+$###%%&&-,''',,$@@@@@@> ",
+"0000000dgghghgdgdhhhhghhhdhdhdgf;']''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''a0aoojyjoozjjozjyzjzyyzyyz000000_}}3}3}3}3383888}3}3}[[[[[[[[[[[[[[[[[[[[[[[[[[[[[<[<[<[<<[[<[<<<<<<<<<<::::::_////xwt////////_555_///////>=!',',!'!,,,~~~~~~~~~~~~~~,'''''''',,~#@@@@@@@$@@@@@+$###&%&#&%&&&--*!''''''%@@@@@@@+##&&#&&-~'''',@@@@@$@> ",
+"000000adhghgdghhgcghhhhhdhdhhhgf;]!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''~aaaojzjojojyjzjojjoozyyzyo00000j)}3}3}33}3}8888933373}[[[[[[[[[[[[[[[[[[[[[}[[[[[[[[[[[[[[<<[<[<[<<<<<<<<<<::<////uwwwt/////////nn//////////+*,!',,,,,,,,~*~~~~~~~~~~~~,''''''',,,*$>$@@@@@@@@@@@+$####&%%%&&&-&=!'''',~+@@$@@@@$#$&%%%&=!'',,@@@@@@@> ",
+"0000000hgdghhhhhhhhhghghhdhhdhgf;']''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''a0jzjjyjzjojojyjyyjyyzyyzy000000)[3}33}33}83888833}33|[[[[[[[|[|[[|[|[|[[[[[[[[[[[[[[<[[[[[<[<[<[<<<<<<<<<<<:^////twww////////////////////////#!,,','!',,,!~~*~~~~~~~~~~!'''''''',,,-+>$>+@@@@@@+@@)$###&#&%%&&&-=]'''',-@)>@@@@@)##&#&&=]''',@@@@@@@> ",
+"00000b0dhghhghghhghhhhhhdhhdhhgl;'!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',0aajzjyjojzojzjzjojyyyyyzo00000b)}3}333}9}3383&8933333[[|[|[|[[[|[[|[[|[||[|[[[[[[[[[[[[[[[[[[<[<[[[<<<<<<<:k/////((xu/////////////////////////(%,,!',,',,,,~~~~~~~~~~~~~~!''''''''',,&@@$>$@@@@>$@++$###%#&%#&%&&==!'',,$@@@@@@@$##%&#%==!'',>$@@@@@> ",
+" 000000dgdghhhhhgdhghcghdhdhdhgf;]'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''aaajjyjzjojzjjjjzjyyyzyzoz0000002}33}333}333&38383333||[}|[|[||[||[||[|[|[|[|||[|[|[[|[[[[[[[[[[[<<[[<<<<<<<<_^//////////////////////////////////>%!,'!',',''!~~*~~~*~~*~~~~,'''''''',,!#@)>@@$@@@@@@@+$###&#&%#&%&==]!''*@@$>$>@@$##&#&%=='''@@@@@$@> ",
+" 00000achhhhhghhhhhhhhhhhhdhhhgf;'!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',0ajjzjjjzjjjoyjjzjjozyyzyj00000a)333}333333338&8933333|||[||[|[|||||[|||[|||[|[|[|[|[[[[[[[[[[[[[[[[<[[[<<<<<<<_///////////////////////////////////(-,,,,',,,',!~~~~~~~~~~~~~~,'''''''',,*#@@@@@@@@@@@@@+$####&#&%%%===],,#@@@@@@@+$##%%-==],,@@@@@@@> ",
+" 000000dhhghhhhghhghghhhdhhddhgf;']''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',aaajjoojjyzjzjzjjzzozyyyzo000000}}3333333333&388833337[|[||[|||[|||||[||||[|||||[|[||||[|[[[[[[[[[[[[<<[[<[<<<<<k_//////////////(////////////////////>*,,',',',,,!~~~~*~~*~~~~~!,''''''',,,*+@@@@@$>+@@@+@+##$&%#&&#--===!~+@@@@@@@+##&#&-==,,@@$>@@@> ",
+" 000000chhhhghhhhhhhhhhhhdhdhhgf;!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',0aaojzjyjjjjjjojjjjyyyzyzj0000008}333|3333338m8m939333||||||||||||||||||||||[|||||||[|[||[|||[[[[[[[[[[[<[<[<[<<<<k^///////////uwx(////////////////////@~',,,,'',,,!~~~~~~~*~~~~~!''''''',,,,&@$>@@@@@@@@@$+$#####&%&%--===&@+@@@@@+$##&%--=~,@@@$@@+> ",
+" 000000dhhgchhghghhghhhhhdhdhdgf;'!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''a0aojjjzjyjyzjzjooozyzyyyj000000}83333333333988&333939[|||||||||||||||||||||||||||[||||[||[[|[|[}[[[[[[[[[<[<<<<<<<<k//////////xwww//////////////////////#,',,','',,,~~~*~~~~*~~~~~!'''''',,,,,%@$@@@$>$@@>+@@$###&#&%----*-+>@$>+@@+##&%--==!@@@@@@@> ",
+" 000000cdhhhhhhhhhhhhghhhdhdhhgl;',''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',aajjoojjjojjjjjjjzjyyyzyzj00000j333333333333m898993739||||||||||||||7|||||||||||||||||||[|||}|[|[|[[[[[[[[[<[[<[<<<<<<_///////(wwws////////////////////////&,',',,,',,,~~~~~~~~~*~~~~,''''''',,,~)@@>)@@@+@@@@++$###%%%-&-&*&>>@@@@@+$##--%-**@@@@@@@> ",
+" 000000jhgdghghhghghhhhhhdhdhdgf;']''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',a0azjjzjzjzjojzjjjjzyzyzzj000000333333939333m8&8939393|7|77|7|77|77||77|77|7||||||||||||||[|||[|[|[|[[[[[[[[<[<[<<<<<<<<_///////tx//////////////////////////(*,',',''',,!~~*~~*~~~~~~~~,''''''',''*+$>@@@@@@@@@+@$####&-%--&-+>@>$>$@@##&----*>@@@@$@> ",
+" 00000acdhghhhhhhhhhghhhhdhdhhgf;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',0aajzjjjjjjjzjjzjzoyzyzyzj00000a3339333339338m3&893939|7|7|77|777|777|77|7|777|77||||||||||||||||[|[|[[[[[[[[[[<[<<<<<<<:k^///////////////////////////////////@]''',,,''''!~~~~~*~~*~~~~!'''''''',,,-$@@@@@@@@@@@@@$###%-%--&&>>>>>@@@+##-%-&*@>@@@@@> ",
+" 000000adgdhhgchhghhchhhdhdhdhgf;]'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''aaajjjzjzjzjjzjjjjjzyyzyz00000003333337939398m8m893939|7|7|77|7|7|7|7|7|777|7|7||77|7||||||||[|||[|[|[|[[[[[[[[[[[<<<<<<<::^////////////////////////////////////.,''',',,',,~~~~~~~~~~~*~~!'''''''''',&@@$>$@@@@@@@@@+##%%--&-#>>@>>@$@##----->@$>@@@> ",
+" 00000aahhghhhghhhghhhghdhdhdhgf;,',''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''!a0jjjjjjjjjjjjojzoozyzyzza00000a33393933739389m8m39i397777777777777777777|7777777|77|77|7||||||||||||[|[|[[[[[[[<[[[[<<<<<k///////////////////////////////////////%,',,''''''!~~*~~~*~~~*~~~,''''''',,,~)@@+>$@@@@@@@@@###%%&&&@^>>>>>>+#%%&-&>>>$@@@> ",
+" 000000ahhhhghhhhhhghhhhhdddhhgf;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''aaajyjojzjozjjzjjjzyyyzyz000000b337393939393m8mm893993777|7|77777777777777|77|7777|77|7|77||7||||||[|||[|[|[[[[[[<<[<[<<<<^////////////////////////////////////////(-',,,',',~~~~~*~~~~~~*~*~~,'''''',,''*#@@@>$>$@@+@@@+#%%%-&#>>>>>@@>##%--&>@>@@@+> ",
+" 000000ahhhhhhghhhhhhhhhdhhddhgf;!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',,0aajjzjjjjjjjjjzjjozyzyyza00000b9393393939398m8mm899397777777777777777777777777|77777777|777||||||||||[||}^}[[[[[[[[[<[<<_///////////////////////////////////////////-''',',~*~~~~~~*~~~~~~~~~~!,'''''''',,&++>)@@@@@@@@+@.#)%%&+>>^>>>>@#%%-&>>@>@@@> ",
+" 0000000dhhhhhhhghhhghhhhdddhhgf;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''aaajjjjzjjzjzjjjjzozyzyzy000000)}939393979939m8m8939987777777777777777777777777777|7|777|7|7777||||||||||^//$}[[[[[<[<[<[///////////////////////////////////////////(,'','',~~~*~~~~~~*~*~*~*~~~~!''''''''',,&+>@@@$>$@@@@++.%%%%>>>>>>>>+.#-&>>>>$@@> ",
+" 0b0000bhdghghhhhhghhghhhdhddhgl;','''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''!a0jojjjjjjjjjjjjjjzzyzyzz00000b)93939393939898mmm9939977777777777777777777777777777777777777||77|7||||||2/////1}[[[[[[[[<2//////////////////////////////////////////-','',,~~~~~*~~~~~~~~~~~~*~~*~~!'''''''',,~&@@@>)@@@@@@@@++&#+>>>^>>>>.#)&>>>>>@@> ",
+" 000000dhhhhghghhhhhhhhdhdhdhgf;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',aaajjzjjjzjjjzjzjjyyzyyzj0000002379397993i399m88m89939i77i777i77i7i777i77i77i777777777777|7777777|7|||||////////2[[[[[<[<<<_///////////////////////////////////////>,','''~~~*~~~~*~~~~~*~~~~~*~~~~~~,'''''''',,*#@@@>@@@@@@@@@+##>^>>>>>>>##%^>>>@@$> ",
+" 000000chhhhhhhhghhgchhdddhdhgf;','''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''!a0jjjazjjazjjjjjjjyzyzyzj00000a83939393999998mmm9999997i777i77i77i7i7i797i7777i7i771$377777777|7|77|7||$/////////^2[[[[[[[[<k^/////////////////////////////////////!,'',',~~~~~~~~~*~*~~~~*~*~~~*~~*~~~,''''''',,,*$@$@@@@@@@@@@+.+>>>>>>>>@+#>^>^>>@> ",
+" 000000jdhghhghhhhhhhhhhdhddhgf;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',aaajjjjjjjjjjjjjzzyzyyzya0000008939939939393m8mm8999987i7i7i7i7i7i7i7i777iii7i77i78///17777777777|77|73////////////_}[[[<[[<<<k^//////////////////////////////////#','',']~~~~~*~~~~~~~*~~~~~~*~~*~~~~~~!,''''''',',-+@@$>$@@@@@@@@>^>^>^>>>++(>>>>>@> ",
+" 000000adhhhchhhhhghhhdddhddhgl;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''!a0azjjjjjjjjzjjjjjyyzyzz000000b9793999399999m8mmm98999i7i7i7i7i7i7i7i7iii77i7i7i77^////^17777777777|7|^/////////////(_[[[[<[[<<<k/////////////////////////////////,,','',~~~*~~~~~~~~~~~~*~*~~~~~~~*~*~~~~!'''''''',,~&@@@+>$>$@@+@+@>(>>>>^@+(/(^>>>> ",
+" 000000ahhhghghghhhhhhdhddhddgf;',''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''aaajjzjjzjjjjjzajzzyyzyz000000b3939399793998mmm8m999997i7iiii7iii7i7i7i7ii7i7i7ii8///////^377777777772/////////////////2[[[<[<[<<<_//////////////////////////////-''',',~~~~~~~~*~*~*~~~~~~~*~*~*~~~~~*~*~~~,'''''''',,~#@@@)>@@@@@@@@@>(^>>>+^(>((>>^/ ",
+" 0000000dhhhhhhhhghhhdchhphdhgf;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''!a0ajjjjjazjjjjjjjyyzyzyz00000b)3999i89899999m8mmm99999ii7i7i7ii7iiiiiiii7iiiii7i7^/////////$377777777///////////////////^k[[<[<[<<<<^///////////////////////////>',,'',!~~~*~*~~~~~~~~*~~~~~~~~~~~*~*~~~~~~*~~,'''''',,,,*$@@+>$@@@@@@@+>>>(>>(/((^(>(/ ",
+" 0000000cdghghhhhhghhdddddddhgf;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',''aaajjjjzajjjjjjzjzyzzyzo000000$79398i9993999mmm8m899997iiiiiiiiiiiii7iiii7i7iiii$////////////$7777771/////////////////////^}[[<[<<<k////////////////////////////]'''','~~~~~~~~~~~~~~~~~*~*~~*~*~~~~~~*~*~~*~~~!,''''''''',-$@@@>$>+@@@@@@>^>(((^(((>(// ",
+" 00b000ddhhhghhghhhhhdhdhddhgf;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''!a0azjjjjjjjzjjjjjyzyzyzj00000088979893999998mmmmm99999iiii7ii7iii7iiiiiiiiiii7i3//////u(///////17773////////////uwt/////////_}[<[<<_///////////////////////////.,'',,'~~~~~~~~*~*~~*~~~~~~~~~~~~~*~~*~~~~*~~*~*~~!''''''''',,&+@@)>$@@@@@@@>>^>/(((^((// ",
+" 000000cdhhhhhhchghhdhdddhddgf;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',''aaaajjjjjjjjjzajzzyzyzzj00000089999999999999m8mmm99999i7iiiiiiiiiiiii7iiiiiiiii$/////(wwt///////^87^////////////xwww//////////2<[[k////////////////////////////,,'''',~~*~~*~~~~~~~~~*~*~~*~*~*~~~*~~~*~~~~~*~~*~*~!'''''''',,~&>@@@>$@@@@+@>>((/(((((/// ",
+" 000000adhhhghhghhhhddhdhphhgf;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''!a0ajjjjazjjjjjjjyyzyzyzj00000a9938i98i989999mmmmm99m99iiiiiiiiiiiiiiiiiiiiiiii8/////(xwww(////////^////////////uwwwt////////////k<^///////////////////////////-'',',,~~~~~~~~~~~~~*~~~~~~~~~~~~*~~~*~~~~*~*~~*~~~~~~~,''''''',,,~#@@@@@@@@@@@^>>^((^(//// ",
+" 000000ahdghhhhhhhhdhddddhddgf;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',''aaajjzjjjjjjjjjjzyzyzzz000000b39999999999999mmmmm99999iiiiiiiiiiiiiiiiiiiiiiii^//////xwwt///////////////////////(xx//////////////////////////////////////////(,,'''',~~~~~~~*~~*~~~~~~~~*~~~*~~~~~~~*~*~~~~~~~**~*~*~~~,'''''''',,*+@@@$>@@@@>(((/((((/// ",
+" 0000000ddhhhhghhhhdddhddhdhgf;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',0a0jajjjjjjjzjjjzzyzyyz000000)97989999999998&mmmm9qqq9iiiiiiiiiiiiiiiiiiiiiiii8^//////>t////xx(//////////////////////////////////////////////////////////////]'',,',~~~~~~~~~~~~~~~*~*~~~*~~~~*~*~*~~~~~~~*~*~~~*~~~~*~~!''''''',,,,&+@@$@@@@>>>>((^(/////",
+" 0000000cdhhghhhghhhdhjhddddgf;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''aaajjjjjz0zajjjzyzyzzyj000000299999i899999m9mmmmm99999iiiiiiiiiriiririiiiiiiiiii1(/////////uwwwu////////////////////////////////////////////////////////////+,,''''~~~*~~*~~*~~~*~~~~~~~~~~~*~~~~~~*~*~*~~~~~*~~~*~*~~**~~!'''''''',,~+@>+@@+>^>(((((/////",
+" 000000adhhhhhhhhhddhddhddhgf;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',0aajjjjjjjajjjayzyzyzza00000098999999999999mmmmmm9mqq9iririririirriiiririiririrrii$////////xwww(////////////////////////////////////////////////////////////,'''',,~~~~~~~~~~*~~~~~~~*~~~*~~~~~~*~~~~~~~~*~*~~*~*~~~*~~~**~~,''''''',,&@@@@@++(>^(/^(/////",
+" 000000adhhhghghhhdddhdddhdgf;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''a0ajjz0zajjjjjjzzzzyzz000000b99999999999m99mm&mmm999qriiiiiriririrriirirriiiriiiiii9$///////tws///(u///////////////////////////////////////////////////////%,',','~~~~~~~~~~~~~~~*~~~~~~~~~*~*~~~*~~*~*~~~~~*~~~*~~~*~*~~~**~~,'''''',&@@@@@@@>(>(((//////",
+" 0000000ddchhhhhhdhddhddddhgf;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',aa0jajjjjjjjjjjzyyzyzz000000)998999999999m9mmmmmmqqqmirirrriririirirririiriririririii9^///////////xwx(////////////////////////////////////////////////////(,,'','!~~~~~~~~~~~~*~~~*~~~*~~~~~~~*~~~*~~~~~~*~~~~*~~*~*~~~~~*~~*~!''''''!)$>$@@@@^(>((///////",
+" 000000cdhghhghhhddhjhddddhhgl;eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeea0jjjjjjjjzazazzzzyzya00000029i999999qm99q9mmm&mq9q9qiriririrrrrirririrrrririririiiiiir8/////////uwwwt////////////////////////////////////////////////////*','','~~~*~~*~~~~~~~~~~~~*~~~*~~~~~~*~~~~*~~*~~*~*~~*~~~*~*~*~*~~*~,''''''-@@@@@@@>>>^(////////",
+" 000000jddhchhhhddhdhddhdhddabaa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aa0aaajjjjjajaajayyzyzyza0000009999999m9999q9m&mmmm9mqqmririrrririrrirrrrririrrirrirrrrriiii1///////uwww////////////////////////////////////////////////////@',',''~~~~~~~~~~~~~*~*~~~~~~~~~~*~~*~~~*~~~*~~~~~~~*~~~*~~*~~~*~~*~!''''''!@@@@@@@+>((>>////////",
+" 000000ahdhhghhhhddddhdddddhjaaaaaacaaaaacaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0aaa0ajjjjjjjjjjjzyzyzzz000000b999999999qq999qmmmmmq99q9rrrriirrrrirrririrrrrrrrirriiiiririri9$///////su///(wu//////////////////////////////////////////////!''',',~~~~~~~~~*~~~~~~~*~~~~*~~~~~~~~*~~*~~~*~*~~~~~*~~*~~~*~~~*~*~''''','#@@@@$@@@^>>(/////////",
+" 0000000dhhhhgchddhdddddhdddhdhdhddphdhdpdddhddpddddhddddddddddddddddddddddvovovvoopovooopooooooooooooooooojoojooojoojojojjojjojjjjjjjjjjjjjjjjjjjjjjajjajjajajajajajaajaajaajaajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajaajajjjjj0zajjjjjzzyzyzj000000$999999q9q99mqqmmm&mmqqqqqirirrrrirrrrrrrrrrrririrrirrrrririririi9^//////////xwwx////////////////////////////////////////////#',',''~~~~~~~~~~~~~~~~~~~~*~~~*~~~~*~~~~~~*~~~~~~*~*~~~*~~*~~**~~*~,''''''*@$@@@@@@>>(^(/////////",
+" 000000jdhhhhhhdhddhdhddddddddddddddddddddddddddddpdddddddddpddddddoddodppvvvvvvvvvovvvovvvvvvopopovopoovopopooopoooodjpoopjoopjdododojdjojpjojojdjjpjojdjojdjjojjjjdjjjjojjjjjjjjjjojjjjjjjjjjjjjjjjjjjjjjjjjjajjajajjajjjjjjjajjjjjjjjjjjjjaajjjjajjjjjzzzyzzzj0000008999m99m9q9q99qmmmmmmqqqqqirrrrrrrrrrrirrrrrrrrrrrrrrirrririririiri8(///////uwwwt///////////////////////////////////////////(,''',',~~~~~~*~~~~~~~~*~~~~~~~~~~*~~~~*~*~~~~*~*~~~~~*~~*~~*~~~~*~~~'''''''.@@@@@@$>>(>(///////// ",
+" 000000addhhhhhddddddddhddddddddddddpddddddpddpdddpdddddpppddpodpppdpdpppvvyyyvyvyvvvvyvoyooovovoovooopoooooopooojpoooojpjoooojoojjjojojdoojojdjjjjojjjjjjjjjdjjjdjjadjjjjjjjjjjdjjjjjjjjjjjjjajjjjajajajajajajjajjjjajjjajajajjjaajaajajajajjajajjajajajzyzyzyz0000000m9999q99m99q9mqmm-mmmqq9qrrrrirrrirrrrrrrrrrrrrrrrrrrrrirrrririrriiii1///////uxw////////////////////////////////////////////=',',',~~~~~~~~~~~~*~~~~~*~~*~~~~~~~~~~~~~~~*~~~~~~*~~~*~~*~~*~*~~*~,''''''&@@@@$>)@>^(>////////// ",
+" 000000ahdhhghhphddhdddddddddddddddddddddddddodddddoddoddpppddpddpdppdpdpyvvvvvovyovyovypyvvovovvovooyovpooooooopooooooooopjpjojdjpojdjjjojdjjjoodjjdjdjojdjjjjdajjjjjjjdajdjjjjajjjjjjjjjcjjjjjjjcoajjjjjjjajjajjjcjjjajajajajjjjajjjjjajjjjjjjjjjjjjjjzzyzzzzy000000b99m99q9q9q9q9qqmmmm-qqqqqrrrrrrrrrrrrrrrrrrrrrrirrirrrrririrrriirrriri9$///////(///////////////////////////////////////////>,''','~~~~~~~~~~~~~~~~~~~~~~~~*~~*~~*~~~*~*~~*~*~*~~~*~~~~~*~~~*~~~~'''''',+@@@@@@@>>>(////////// ",
+" 0000000dddhhhhdhddddhddddddddddddddddddddddddddpdddpddpdddpdpdppppdpdppvvyvyvyvvvvyovyvovoovovoyovovoooopooopooojooopjpjojojpoojojojooojojojdjjjojjjjjjjjjjjjjjjdjjjjjjjjjajjjjjjjjcjjcjjjjjjcjajjjjcjajcjjjjjjajjjjjajjjjjjjjajjjjjjajjajjajjj0jjjjajazyzzozzj00000a$999999q9q9qqqqqm-mmmqqqqmrrrrrrrrrrrrrrrrrrrrrrrrrrrirrrrrrrirrriiiriiii8$/////////////////////////////////////////////////!',,'',~~~~~~~~~*~~~~~~~~~*~~~~~~~~~~~*~~~~~~~~~~~~~*~~~~**~~~*~~*~~,''''',%@@@$@@@@>^(////////// ",
+" 000000adhdhhddddddddddhdddddddddddddddddodddpdddpdppdpdpdodpdpdpppppdpovyvvvyvoyvvvooyvyvyyovovooovoopooopoooopooojoooooopjjjpoojojojpjojdjjojdaoojojdjjojdjjjjjjdjjcojjjdjcojcojjjjjjjjjjjjjjjjajjjjjjjajcjajjajajajajajjajjajaaaajjjajjajj0zjjaj0zajzzyzzzy00000008q9qm99q9q9q9m9qmmm-mqmqqqrrrrrrrrrrrrrrrrrrrrrrrrr8qrrrrrrrrriirrririiiiii8^//////////////////////////////////////////////#,''','~~~~~~~~~~~~~~~~*~~~~~*~*~~~~*~~~~*~*~*~~*~*~~~*~*~~~*~~~*~~~,''''''*@@@@@@@@^>/////////// ",
+" 0000000ddhhhdddhdhdddddddddhddddddjdddddddddodddpdpdpdpddpdpdppddodpppvyvvyvvyvvyoyvypovoovvooovovoooooooooopoooopoooooojjpoojojpjpjojojjojdjjjojjdjjjjdajjjdjjjjjjjocjjjjjjjjjjjjjjjjjjjjajjcjjjjjajjajjjjjjajajajajjajajjajjajjjjaajajjajjjajjjjjaazzyzzzyz000000b99999qq9mqq9qqqq-mmmmqqqqqrrrrrrrrrrrrrrrrrrrrrrrrq/($irrirrrrrriririrriiriir1(///////////////////////////////////////////(,''''',~~~~~~~~~~~~*~~~~~~~~~~~~~*~~~~~~~~~~~~*~~~~*~~~~~~*~~**~~*~~,''''',#@@)$@@+@/////////// ",
+" 0000000cddhhhddddddddddhddddddddddhddodddpdddddpddpdpdodpppodpdodpdppvvyvyvyvvovvvovyyovvooovvovoovpopovooooojpjojpjopjpjoojpjpjojojpjdjjojjjojjdjjjdjjjjjjjjjjjjjjjjjjjjjjjjjjjcjjjjcjajjjjjjjcjjajjajjajjajjjjjjajajajaajajjajjajjjjjajjjajajajajjjyzzozzza000000)im9q99q99qmq9qmqmm-mqqqqqqirrrrrrrrrrrrrrrrrrrrrrr>///^8{rrirrrrrririrriiiiiii8///////////////////////////////////////////-,,,,',!~~~~~~~~~~~~~~~~~~*~*~~~~~~~~~*~~~~~*~~~~*~~~~*~~~~~*~~~*~~~,''''''-@@$>@@@@^////////// ",
+" 000000addhhdhdddddddddddddddjddddpdddddpddddddpddppddpdpddpdpdpdppdpyyvvyvovyvoyyyvovvoovyvooyovooooooooooooojpojpjojojpjpjojjpjojojjojojojjdjjjjjjjjjjdjjjadjjjdjjjjjocjjjcjjjocjjjjjjjcjajjjjjjjjjajjajjcjajaajajjajjajjjaajaajaajajajajajajjjajajzyzzzyz000000b999q9mq9qqq9qqqqm-mmmmqqqqrrrrrrrrr{r{r{{r{r{r{rr{8//////^9rrrrrrirrrrrirririii^//////////////////////////////////////////>''''''!~~~~~~~~~*~~~~~~~~~~~~~*~~*~*~~~~~*~~~~~*~~~~*~~*~*~~~~*~~~~~'''''',+@@@@@$@>////////// ",
+" 0000000dddhdddddddddhddddddddddddpddpdddddoddpdpdddodppdppppppppdodvvvvyvyvvyyvvyovoovvovopoypooopoopoopoooopoooooopjpjojoodjojojdjojdjjdjjojjojjdjjdjajjdjjajjcjjjjjjjjjcojjjjjjjajjjcojjcjajajajcjjajcjjjjajjjajaajajaajajajajajjajajjjajajj0zaajzzyzyzzj000000)m9999q9q9qqqqqqqmm-m=qqqqq{rr{r{r{r{r{rr{r{r{r{rrr(////////$9rrrrrriirriiririi8///////////////////////////////////////////],'',,,~~~~~~~~~~~~~~~~*~~~~~~~~~~~~~~*~~~~~*~*~~~*~~~~~~~~*~*~~**~~,''''''%@@@@@@@@///////// ",
+" 000000adddhddddddddddddddddddddddpdddjddddpddppdppdpdppddpddpdppdpvvyvvyvovvovovvovyooyoyoooyovooooojpjpjpooojpjoojojpjpjjojdjojjdjjjojjdjjjjdjjjjjjjdjjjjjojjjadjjjjjjjjjjjajajjjjajajajjjjajjajjjjajjjaaajaajjajajajajajajjajajajjj0jajjajjaajjazzzzzzza000000&9mq9q9q9mq99mqqq-qmmmqqqqqr{rr{r{r{rrr{{r{r{r{r{{$///////////$rrrrrrrirrririr9///////////////////////////////////////////#'','''~~~~~~~~~~~~~*~~~~~~~~~~~*~~~~~~~~~*~~~~~~*~~~~*~*~*~~~~~~~~*,''''''~@+@$@+@@>////// ",
+" 0000000hdddddhddhjdhddddddddddddddpddddpddpdpdppddpdpdpppdododpvpvyvyvyvyvyvyvoyvovvvopovovopoopoopooooooooooooopjpjpjjpjojojojojjoojdjjjjdjjjjdjjdajjjjjjcjjjojajcjjcjjjajjjjjjcjjjjjjjjajajjcjajcjaajajjajajaajaajajajajajajaaajaajjjajjj0jjaajzzzjzyzz0000000399q9qmq9qqqqqqqmmm-mmqqqqqr{rrrr{r{{{rr{r{r{r{rrq/////////////^8rrrrrrirririi$///////////////////////////////////////////,,'''',~~~~~~~~~~~~~~~~~~~~~~~*~~~*~*~~~*~~~~~*~~~~*~~~~~~~~*~~*~*~~,''''',#@@@@@@@@////// ",
+" 0000000jdhddddddhdddddddddddddjddpddddpddddpdpddppppppdodpdpdppdpvvvvyvvvovyoyvovyooyyovooooooooooopooopjpjpojpjoojojoojooojdjojdjojjjojojjjdjjjjjjjjjjcojoocjjjjjojjojjjjcjjcjjjajcjaajjcjjajjjajjjjaajajajcjajajajaajajaaaajajajjjajj0ajjjajaj0yyzzyzzj000000)9q99q9q9q9mqqqqqq-mq-q*qqqr{rr{{{r{rrr{{r{r{r{r{{$///////////////>8rrrirririr9///////////////////////////////////////////-,'',,,~~~~~~~~~~!~~~~~~~~~*~~~~~~~~~~*~~~~~*~~~*~*~~~*~~*~*~~~*~~~~,''''',=@+@+@@$@(///// ",
+" 000000ahpddddddddddcdpdddddddddddpdpdddodpdpdodpdpddpddppppppvppyvyvvyvyvvyvovyvovopoovovvovopyooooooooooojpjoojpodjpjpjjpjjojojjdjojojdajjjjjdjjjdjjojjjaojjjjjajcjjajjjjajjajjjjjjajjjjjajajaajaajjjajajjjajajaajajaajjjajajajaaajajjjajjjajjzzyzzyzz000000089m99q9qqqq9qqmqmmm-mmqqqqqr{{rrr{r{{r{r{r{r{r{rrm//////////////////$9rrrrrrii>//////////////////////////////////////////>,',''',~~~~~~~~~~~~~~~~*~~~~~~~~~*~~~~~~~~~~~~~~~~~*~~~*~~~~*~~~*~*,,''''',+@@$@@@@>//// ",
+" 0000000hjhddddddddpddddddpddddpdddpdpddddppddpdpdpdodpdpdpppppppvyvyvoyvyovyvovovyyovooyooooooopooopjoojoooojpjojojojojojoojdjojjjdadjjjpjjdjajjjjjjjjocjjjjjocjjjjjocjjjjjjjcjjaajjcjajajcjjajjcjaajajajaaajjaajaajajaaaajajaajajajajajaaajaaayzzyzzyz000000bq99qq9q9mqqqqqqqq-mq-mqq*qq{r{r{{rrr{r{rr{r{r{r{{^////////////u///////$ririrr8///////////////////////////////////////////*''''',~]!~~~~~~~~~~~~~~~~~~~~~~~~~*~~~~~*~~~*~~~~~~~~*~~~~*~~~*~~~~,''''''%$@@@+@@+///// ",
+" 0000000jhddddddddddddddddddppdddjddpdpdpddpdppdppdpdpdodpppppppovvyvvvyvvoyovyvoovooypypovovooooooooopjpjooooojdjopjpjpjjpjojjodjjjjjjojjjjjjdjjdajjdajojjjjcjjjjjjajjjcjjcjjjajjcjjjajajjjaajajajajajcjajjaaajajajaajjajaajajajaajaajaajajjjazzzzyzzza000000)999qm9qq99qqqqqqmm-mmqqqqq{rr{rr{{{{~~~{!{{{{{rrm////////////uwwu///////8rrr9///////////////////////////////////////////+,,',''~~~~~~~~~~~~~~~~~~~~*~~~~~~~~~~*~~~~~*~~~*~~*~*~~*~*~~~*~~~*~,''''''!@@@@@@@$>//// ",
+" 0000000ddddhdddddddddddddddpddddddpdpddopdpdppdpdpdpdpppdppdppvyvyoyovoyvvyopovyopovjyoovjpopoopoopooopjpjpjooojojojjjpjojjdjjjjjojdjjdjocjjjjajojajjjjcjjjjocjjcjjjjjjajjjajjajjajcjajaajajajajajaajjaaajajaajaaajaaajajajaajajaajajaajaj0jajzyzzzyz000000099q99qmqqqqmqqqqq-mq-m=qqqq{r{{{{~,!'~,',,!'!!{{{{m(//////////wwww////////(8r$///////////////////////////////////////////,',',',~~~!~~~~~~~~~~~~~~~~~~~~*~~~~~~~~~*~~~~~~~~~~~~~~~~~~*~~~~~~~,''''',#+@+@$@@@///// ",
+" 0000000jhddddddddpdddjhpdddddpddddpdppddpdppdpdodododpppppvppvvvyvvyvyvyovvoyyovovypypyooooooooojojoojoooojpjpjopjoopjojojojjpjpjjjjjjjjoojjdjjjjcojjjojjjjjjjjjjjcjajjjajajjcjjajjjajcjjacjajaajajaajajaajaajaajaajaaajaaaaajaaajaaajaajajazzzyzyzza000000)89qq999qqqqqqmqqqm-q-qqqqqq{r{{,,!!!!!~!!!!~!,!!{{rr8////////(xwwu//////////^(//////////////////////////////////////////%'',','~~~~~~~~~~~~~~~~~~~~~~~*~~~~~*~*~~~~~~~~*~~*~~*~~*~*~~~~*~*~~,''''''=@+@@@@+@(//// ",
+" 0000000ddddddddddddddddjddpddpdpddpddppdodpdpddpddppdppppdppvvyvyvvyvoyvoyopoyopyjoooovovoopooopopooopjoojojoojjdjjojjdjdjojjjjpjjdjjdjjjjjadjjojjcjjjjcjjjjjjjjjjdajcjjjjajjajjajaajjajjjjcajcjajaaajjaaaaajaajaaaajaaajajaajaaajaajajaaaazyzzyzzz00000008mq99qqqq9qqqqqqqmqmmm-q=qqq{~!!!~,~,!,,!,~,,!!!!,!]{{{$////////ut//////////////////////////////////////////////////////(',''',,~!~!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*~~*~~~~~~~~~~~~~~*~*~~~~~~'''''',+@$@+@@+>//// ",
+" 0000000jhdjhdddddddddpdddddpdddpdpdpdpddpdppdppdppppppppvpppvvyvvyyvyvovvvoyovooopypoopjvoooooojooojojyojpjpjdjojoojpjjjjojdjjjjjjjjcjjdjjjjajjjjojjjjjjjjcjjcjajaajjjacjajjajacjajjaajaaajjjajaacjacjaajjaaaajaajjaaajaaaaaaaajaaajaa0jaajzzzzzyzj000000b99mq9q9qmqqqqqqqq--m-qqqqq*{~!!,!,!~,~~,~,'~'~'!!,!!~{{{q$//////////////////////////////////////////////////////////////=',''',~~~~~~!~~~~~~~~~~~~~*~~~~~~~~~~~~*~~~~~~*~~*~~*~*~~~~~~~*~*~~,''''''-@+@@@$@+^/// ",
+" 0000000dddddjdddddpddddjddddpdpddpppdpdpdodpppdpdppdppppppvvyvyvovovyyyoovvyoypyoyoooooooopjpopjpoopjpjpjojojoojpjojoojdjjjojdjdjojojjcjjojjocjjjjjjjjcjjjjjjjajajjjjjjjjcjcjjjjjcjjaaajaaaajajajjajaaaacjjaaaaaaaajaajaajajaaajaaajjjajazzyzyzzz0000000&9q99qmqq9mqqqqqqqqq-m-qqqqq~~!,~,~,~''~'~,~,~!!!,!,,,!{{{rm>///////////////////////////////////////////////////////////+','',,!~~~~~~~~~~~~~~~~~~~~~~~~~*~~~~*~~~~~~*~~~~~~~~~~~~*~*~*~~~~~,''''''!+@@+@@@@>/// ",
+" 0000000pddddhdddddddpddddpdjddpdppddpdppddpdpppppppodpppppvvvyvyvyyvvopypoypopooopoovvooooooyjyjyjojoojooojpjojojjojdjjjjojdjjjjjdaojojjjjjcojjjjcjjjjjjjcjjjcjjjajacjaajjjaaajajaaajjajajaaaajaaaaajajjaacjaaaajaaaaaaaaaaaajaajaj0jaaajzzzzyzzj000000b899q9q99qqq9qqqqqm-mqmqq=q=]!,~,,~'~,~,~,!,~',,~'~'~!,!!{{{rm////////////////((/////////wt(/////////////////////////////,'','',~~~!~~!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*~~~*~~*~~*~~*~~~~~~~*~*~,'''','#+@$@@+@@// ",
+" 0000000dddpdphjdpddddpddpddpdpdoddpppdppdodddodpdpdvdppppvyvyovypoyvyoyooyoyooyoovoooooooopjpopjopjpjpjdjojpjojdjojjoocojjjjjjjjjjjjjjdjojjjdjjjocjjjjjjocajjjjcajjjjjaajajjaaaajajcaajcajajaaajaajcaaaaaaaajaaaajaaajaajaaaaaaaajajaaazyzjzzzz0000000&9mq9q9qqqqqqqqqqqmq---qqqq*]~'~'~,,~'~'~'~'~~'!,!!,!'!,,,{{{^////////////////wwt///////twww(///////////////////////////%',,'''!~~~~~~]~~~~~~~~~~~~~~~~~~~~*~~~~~*~~~~~~~~~~~~~~~~~*~~*~~~~~,''''''*+@>)$@+@> ",
+" 0000000jhpdddddddpddpddddppddpddppddpdppddoppdpppvppppppvvoyvyoyvypoypovypopypopoovooypojoooojyojoojojjojpjjpjojjdjjooojojdjjdjjjdjjjjajjjjajadajjjcjjcjjjjjcjjjjajaajjjcjjcjjajcjjajajaaajcjacjaaaaaajaaajaaaaaaajaaaaaaaajaajaaaaaj0zzzzzyzzj000000b399q9qqmq9qqqmqqqm-mqmqqq{==!,~,~'~,~'~,~'~'~'~'~'~'~,!,!,~{8////////////////swwws//////wwwx///////////////////////////(,,'',',~~~~~~!~~!~~~~~~~~~~~~~*~~~~~~~~~~~~~~*~~~*~~~*~~~*~~~~~*~*~~'''''',.++@@>+@> ",
+" 0000000dddddpddddddddppdddpdppdpppdoddppddppppppppppppppvvyvvypyoyovypjyoyjooooooopoooopoooopjpoopjpjpoojoojojojjoojjjdjjjjjjdjjjjjjjjocjjjjajjjjjoajjjjajjjajjcjjajcaajaajajaajaajcaajaajaajaaaaajaaaaaaaaaaajaaajaajaaaaaaaj0jaaaaazyzzyzyz0000000#qq99mq99qmqqqqqqqmq-m-=q=q]~~'~'~,~'~,~'~'~,,~'~'~'!'!'!'!'*/////////////////swwx///////(tw(///////////////////////////=,'',',~~~~~!~~~~~~~~~~~~~~~~~~~~~~~~~*~~~~*~~~*~~~*~~~*~~~~*~*~~~~~,''''''-@@$@+@$+( ",
+" 0000000pdddddpddjdddddppdpdpdppddpddpppppppdpodppppppppovyvyvyyvvoyooyvoppypypoooyjopjooopjojojojojpjojpjjdjpjojojdjjjjjdjjjjjjjjdjjdajojdajjjjcjjadajajjcjjjajjacjjjjajajaajajajaajajaaaaaaaaajaaaaaacjaaaajaaaaaaaaaaajaajaajaaajazzjzzzzzj000000b39qq99qqq9qqmqqqqq-m-qmqqq=]]~'~'~'~'~'~'~'!'~'~'~,'~'~'~'~,.////u/////////////(xu/////////(///////////////////////////@,','''~!~~~~~~~~!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*~~~,,'''''!+@@@@@@@> ",
+" 0000000ddpddpddddpdpddpdpppdpdpdodpddodpdodppppdpoppppvyvyovovoypvvvyoyyoojoooopoyooypjooyoooopjooojpjjojojjdjdjjjpjojjjjdjjjdjajjjjjjjajjjjjjocjajajjajjajajajjjaajcajaajajcaacaaaajcaajaajaaaajcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayzzyzzzz0000000&q999qq9qqqqqqqmqqqmq-m-qq*=],,~'~,~'~'~'~,~'~'~,'~,!,~'~',,=////uwws///////////////////////////////////////////////////!,'',',~!~~~~~~~~~~!~~~~~~~~~~~!*~~~~~~~*~~~*~~~*~~~*~~~~*~~*~*~~~*~,''''',%@++@++++/ ",
+" 0000000jddpddppdddpdpddpdpdppdoddpppddppppppppppdpppppvyvvyvyvooyooypoopovovovoyjvojoooojpjpjyjpjoojojpjoojojjjjojjjpjjdajjdajjjjcojjjjjjcjcjjjjjjjcjjajjajcjajcjjajjaajjcajajajjcjaajacjaaaacjaaaajaaaaaaaaaaaaaaaaaaaaaaaaaaaaajzzzzzyzzj000000b3mm99qm99qqmqqqqqq--qmqqq==*~!~'~'~'~'~'~',~',,,'~'',,'~'~'!>////xwww//////////////////////////////////////////////////#','','!~~~!~!~~~~!~~~~~~~~~~~~~~~~~*~~~~~~~~~~~~~~~~~~*~~~~~~~~~*~~,''''''*@+@$@@@@> ",
+" 00000000ddpdddpdpdpdppdppdppdddppppppppdppppdpppoppppvyvoyvovyvyovvyopoyvooooooyooopoopooyjpjojojpjpojojpjojojpjjpjjjjjjojjjjdjojjadjcjjjojjjjjcjajjjcjajajjjajajajajcjaajaaaaaaaaaajaaajcajaaaaaaaajaaaaaaaaaaaaaaaaaaaaaaaaaaa0jzzyzzzzz0000000)999qqq9qq9qqqqqqqqq-m--qqq=]~'~'~'~'~,,,'~',~'~'~'~,~',,',,&/////xwws/////////////////////////////////////////////////(,'','',~!~~~~~~~~~~~!~~~~~~~~~~~~~~~~~~~~~~~~~*~~~*~~~~~~~*~~~*~~~~~'''''',#+@@+@$@@ ",
+" 0000000addpddddpdppddpddppppdpdpddodppppppppppdppppppovvyvyvovvoyyoyooopovovooopjpjyjyjojoopjpjojojjpjjojdjojjojjocojojcojjjajjjjjjjjjjjjjjjajjjjjajjjcjjaajcjacjaajaacjaajcjaaaacaaaaaaaaaaaaajaaaaacaaaaaaaaaaaaaaaaaaaaaaaaajzzyzzyzz0000000b999999qqmqqqqqqqqqmm-qmqq=]*]!!,~',,,'~'~,,,,'~',',',,'~'~',.//////ux////xt(///////////////////////////////////////////-,'',',~~~~!~~!~~~~!*~~!~~~~~~~~~~~~~~~~~~~~~~~~~*~~~*~~~*~~~*~~*~*~,''''''-@+@+@@@+^ ",
+" 0000000adpdpddppddppdppddodpdjdpdppdpppppppppvpppppvyyyoyyovyovoopoyoyooovjpoyoooyjpyjypojoojpjpjpjojpjjojjdjjdjojdjjoocjjojadjjjjjjjcjjcjjjjajcjajajjcjjaajjjjajajajajcjaaajajajcaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaazzyzzzzzz00000008999qmq99q9qqqqmqqq-mq--qqq=*]'~''~'~'~'~'~'~'~'!,~'~'!,,,'!,,-(/////////uwwwu/////////////////////////////////////////>',''',,!~~~~~~~~~~~~!~~~~~~~~~~~~~~~~~*~~*~~~~~~~~~~~~*~~~~~~~~~~~~,'''''',+@$@+@++> ",
+" 00000000ddddpdpdpddpdjddddpdpdppppdoppppdppppppppppvvvyvvyyovoyyopypopooyooyjpooopjyjpjjopjooojojojpjjojdjojjjjjjjjjjjojojjjjjjcoadaojjjjjcjjcojjjjcjjjacjaaaaajacjaaaaaajacjaaaajajaaaaaaacjaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0jajzzzzyzyz0000000b99q999qm9qq9qqqqqqm-q-qm{qq]]~'~,~'~'~',,',,'~',,'~',,','~',,,,,%////////xwww//////////////////////////////////////////!','','~~~!~~~~!~~~~~~!~~~~~~~~~~~~~~~~~~~~~~*~~*~~~*~~~~~~~*~~~*~*~,''''',%+@@+@+@+/ ",
+" 0000000adpdpddpdodpdpdopdppdpdpppdppppppoppppoppppyvyvyovyvopypyoooooopoopyoojyoopjyjpoojpjojpjpjojpjojjjjdjojdjoadjjjjjjocjjjjjajjjjcjjjoajjjcaajjajajjjajjaajajcajaajaaaaaaaaaaaaajcajaaaaaaaaaaaaaaaaaaaaaaaaaj0aa0aaaaaazzzzzzzza00000008999qq9q9qqqmqqqqqqmmmmm-qq*=*'~''~'~''~'~'~,,'~'~''~'~'~',,,',,',!$//////(xwu///((////////////////////////////////////#'',','~!~~!~~!~~~~~~!*~!~~~~~~~~~~~~~~~~~~~~~~~~~*~~~~~~~*~~~*~~~~~,''''''~@+@$@@$@> ",
+" 00000000dpdpdpdpddpppdddoddodpppdopppdppdpppddppppovoovovyyooyooyoypyoyoooopjypjooopjyjoojpjojojojojojpjojjjojjjjjjjdjjjcojjjjjjjcjjjjjcjajjajjjjjjajaajcjacjjaaajacjcjajaaacjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajzzzzzzzz0000000$9999999q9q9qqqqmqq-q--m=qqq*=~,,!,',,~'~','''~',,'~'','','~'!,,,'''~q@//////(////xwx///////////////////////////////////,,'''',~~~~~!~!~~!~~~!~~~!~~~~~~~~~~~~~~~~~~~~~~~~~~~~*~~~~~~~~~~~~~,''''''#+@+@+@+@/ ",
+" 00000000pddpdpdppdpppdpdpdpppdpppppppppoppvpoppppyvyvyvoovypypypoooooopyjoypjpjoooojpjooojooojpjojdjojojjdjjjdjjdjjjcojjjoadjjjjjjjajjjjjajjjajajaajcajajajacaajaajaaajcaajaaajcaaaaaaaaaacaaaaaacacaaaaaaaaaaaaaaaaaaaaajzzyzjzzz000000ab99q9q9mq9q9qmqqqqqq-mqmmqqqqq*'!'~'~',','~,~'~',,',',~'~,,,',',',,,'{{rm>////////swwwt/////////////////////////////////-''',',~~!~~!~~~!~~~~~~!~~~~~~~~~~~~~~~*~~*~~~~~~~~~*~~~*~~*~~~~*~*~'''''''-@+@+@+@+( ",
+" 0000000dpppddpdppdppdppdppdopppppdoppppppvdpppovyvyyoyvyooyjyooypyooooyoojyoopoyjpjypjyjpjpjjojdjjjojoojjjdjjjjjjjojjjjjjajjjcojcjjcjajcjajajcjajcojajaajajajaajaaaaaaajaaaaaaajaaaaaacaaaaaaaaaaaaaaaaaaaaaa0aaaaaaaaaazzzzzzyzj000000089999m99q9q9q9qqqqqqm-m--qqq={],!'~'~'~'~'',',',~',~',','~','~',,',,'{{{r{8///////swww/////////////////////////////////>,,'',,,~!~~~~~~~~~~~~~~~~!~~~~~~~~~~~~~~~~~~~*~~~~~~~~~~~~~~~*~~~~~!,''''',.+@+@$@@@ ",
+" 00000000pddppdpdpdpdpppppppdpppppdppppppppvppvpvvyopyvovypypoyopojpypoooypooyjpjyojojpjpjojpjojojdjdjjjojjjjdjjdjjjjjdjadjjjjjjjjjjjjajjjjcjjjjajjaaajcjaaajcajcajcaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaabaaaaaaaaaaa0aaaa0azzyzyzzzz0000000)999999q99mqmqqmqqqq-mq-qm{qqqq'',,,',,','~'~'~,,',''~,,,'',,',,'!',,'~{{{{{{$///////tu/////////////////////////////////~,'',''~~~~!~~!~~!~~~~~~~*~!~~~~~~~~~~~!~~~~~~~~~~~~~*~~~~~*~~~~~~~~,''''',&+@$+@+@+/ ",
+" 0000000appddpdpppppppppdppppppppppppppppppopppvvyyvoyovooooopoyopojyooojyjojyojpjyjpjojoojojpjjojjjojdjjojjjajjjjjjjajjajjcojjjjjjjjjjjajjaajacjajjcjjajcjaaaaajaajacjaaaaaaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajzzzzzyzza000000b8999999qm9q99qqqqqqqmmm-qq=qq*{!,',,,,,,~',','',,~','','~,,',',,,,',',{{{r{r{{r$///////////////////////////////////////+',',',~~!~~~!~!~~!~!~~~~!~~~!~~~~~~~~~~~~~~~~~~~*~~~~~~*~~~~~*~~*~~,'''''']+@+@)@$@> ",
+" 0000000jjpdppdpdpddppppppppppppppppppppppppvpvovoyyvyovypyyoooyopoyopypoopjpjyjpjojpojojpjojoojooojjjdjjjocojjjdadjjocjjjjcjjcjcajcjcjjajjcajjjaaajjaaaaajajcaaaaajaacajcaaaaaaaaaaacaaaaaaaabaaaaaaaaaaaaaaaaaaaaajzzzyzzzzj0000000)999m9q99999qq9qqmqq-m-q-mqqqqq{,'~'~','',,,,,,~''',,,~'''','~','',',''{{{{{{{r{{9>/////////////////////////////////////,',''',!~!~~!~~~!~~!~~~~~~~!~~~~~~~~~~~~~~~~~~~~~~*~~~~~~*~~~~~~~~~~,''''''#+@$@@@+@/ ",
+" 00000000ddpdppdjdpppppdpppppppppppppppopppvpvyvyvvovovooyopypoooyjoojyjpjyoojpjyjpjojpjojjpjojjjjjdjjjjojojjdajjjjjjjojjjjjjjjjjjjjjjajjcjjaaajcjaaaajaaajaajaajaaaaaaaaaaaaaaaacaaaaaaaabaaaaaaaabaabaaa0aa0aaaaaazzzzzzzzz0000000)39999999qqq9qm9qqqqmmmmmmqqqqq{r!',',,'{','~''',~'~'',',~,',,'',,',',,,{{{{{{r{r{rrm///////////////////////////////////%'','''~~~~!~~~~~!~~~!~!~~~~~~!~~~~~~~~~~~~~~*~~~~~~~~~*~~~~*~~~*~~~,''''''=++@@+$@+> ",
+" 00000000dppdppdppdpppppppppdoppppoppppppvpppvovyyvyoyovoyoooooopyoyoooyjoooyjpjyjoojojpjojojpjdojjojdjjjjjjjjjjjcjjjajjjjjjjjjjjajajajajjcjjaajjajajcjcaacaaaacaaaaaaaaaaaaaaaaaaaaabaaaaaaaaabaaaaaaaaabaaaaaaaazzyzzzyzz0000000089999999m999q9qq9qqqq-m-m=qq=qqr{{'~',,,,',',,,,'',',',,',','',',',',''~r{r{r{{r{rr{r^/////////////////////////////////>',''',,!~!~~~~!~~~~!~~~~~~~!~*!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*~~~~~~'''''',+@+++@++> ",
+" 0000000apdpdppdpppppppppppppppppdpppopvpvvvyyovyovvyovooyoypyooopopyjpopojpjyjpjojpjojpjdjjjojjojjjjjdjjdjjjojojjjjdajcjjcjcjajjcjajjajjajcjaaacaajjaajajaaaajaacaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaa0aaaaabaaba0jzzzzzzzz000000002999999q99q99q9qmqqmmmmmmmqqqqq{{r{',,'',,,',,,',',,,,',',',',,'',,'',',{{{{{{r{r{{r{$(/////////////////////////////////='',,',~~~~!~~~!~~~~~!~~~~~~~~~~~~~~~~~~~~~~~~~~*~~~~~~~~~*~~~~~~~*!,''''''-++@@+@++^ ",
+" 00000000jdppdppppppppppppppppppppopppvpppvpvyvoyvoovoyoypooojpyjyjpjyooooyjpjyjoojpjojojojojojjjpjojjjjjocjjjjadjjajjjjjjjjjcjajjjcjajaajajajjajaaaajcaaajaaaaaaaaaaacaacaacaaabaaaaabaaaaaaaaaaaabaaaaaa0aaaajzzzzzzzzj0000000)89899999999mq9qq9qqqm-q-m=qqqqq{r{{{'~'!',,,,'''~','',,'',,','',','','''{{{r{{{{{{r{r//////////////////////////////////+,,'''',!~~~!~~~~!~!~~~~~!~~~~!~~!~~~~~~~~~~~~~~~~~~~*~~~~~~~~~~*~~~!''''''!@$++$+@+> ",
+" 00000000pdpjdppdoppppdopdodopppppvpvpopppovoyyovyyoovyooypyoyjypjyojoojojyjyjpjojoojojojpjojdjjjjojjdajjojjcojajjcjjjjcjjjjjjjajjjajcjjaaajaacjcjaaaajacaacjaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaabaaaaaa0aaaaaaaaazzzyzjzzz0000000b399999999m999q99qq9qmmmm-qqqqqqq{rr{{',','',',,,',',,'',,',,'',,'',',','{{{{{r{r{r{r{$//////////////////////////////////,','',,~~~,~!~!~~!~!~!~!~~~~~~~~!~~!*~~~~~~~~~~~~~~~~~~~*~~~*~*~~~~~,'''','#+@@+@++@/ ",
+" 00000000ddppdpppppdppppppppppvpppppppvppvoyvvyovoypoooypjoopjyyoopjypoopopjoojpjpjpjoojjojjjpjjdjjjjojjjjojjjjjojocjjjjjajajcajajajajcjajcjajajacjaaajaaaaaaaacaacaaaaaaaaaaaaabaaaabaaaaaaaba0aabaabaaba0azzzyzzzyz00000000893i89999999q99qm9qqq-m-mmqq=qqq{r{{r{~'~'~,,',''~''',,','''',,'','',',''{r{{r{{{r{{rm//////////////////////////////////%''',,'!~~~~~~~~~~~~~~~!~~~~~~~!~~~~~!~~~~~~~~~~~~*~~~~~~~*~~~~~~*~~,''''''*++++@$@+> ",
+" 0000000apppppppppopppppppppppopvppvppvvvvyyvovyoyyopoooypyooopooyjojyjojoopjojjojojdjojdjojjjjjjdjjjojjjjjjjdajjjjjjjajjjjjjjajcjajajaajajaaaajaajaaaaaaaaaaaaaaaaaacabaacaaaaaaaaaaaaaaaaa0aabaaaaaaaaaazyzzzzzzz000000002399999999999qm99q9qmmmmmm-qqqqq{rrr{r{r''','',,',',,,'',',','''',','''',{{{{{{r{{r{rr>/////////////////////////////////(,,'''',~~!~!!~!~!~!~!~~~!~!~~~~~~~!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'''''',.+@+++@+> ",
+" 00000000jppppppdpppppppppppvpdpoppoppppvovoyovoypoyoypoyojyoyjpjopypjoyjojojpoojpjjjojjojjjojojjjcjjadjadjjajjajjjjcjjjcjjajajjjcjjajajcaajaaaaaacaaajcaacaaaaaaaaaaaaaaaaabaabaabaaaaabaaaaaaaabaaaaaaazzzzyzzyzz0000000)9999398999999999q9qqmmq-mmqqqqqqrr{{rr{{{,,','',,',''',,',','',','''',''{{r{r{{r{r{r{8//////////////////////////////////=,',',,!~~~~~~!~~~~~~~~~~~!~~~~~*!~~~~~~~~~~~~~~~~~~~*~~~~~~~~*~~~~~'''''',-+$+@@+++( ",
+" 00000000jppppppppppppppppoppvpppppvvvvvyyvvoyooyyoooyjpypojpyjyjojyyjpojyjojojjjoojpjojoojojdjoojojjjjjjadajjcjjcojjcjjjacjjajajaacjaajacjajcjaaajaaaaaaaaaaacaaaabaaaaabaaaaaaaaabaa0aaaabaa0aaaabaaajzozzzzzzj0000000b33939i99999m99qm9q99mm-mmmqqqqqq{rrr{{rr{{{',',','',','''','',''',','''',{{qm{r{{{r{rq(/////////////////////////////////@',''''!~~,~~,~~!~~~!~!~!~~~!~!~!~~~!~~~~~~~~~~~~~~~~~~~~~~~~~~~~*~~!''''''!++@++$@+> ",
+" 00000000jpdpppppppdopppppoppvpvppppppvovyovyypoopypyoyjoyjyopoypjojyjpjpjpjpopjoojjojjjdjjjjjjjjjjocjjjjjjjjjjjjajjjajjjocjajajajjajaaajcaaaajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaa0aazzzzzzzzzz000000008789989899999999999qqmmm-m-qqqqqqrr{rr{r{r{{{'',',',','',''','',''''''''{{{r>/$qrr{{r{$//////////////////////////////////!,'',',!~~~!~~~~,~~~~!~!~~!~~~~~~~~~~!~~~~~~~~~~~~~~~~~~~~~*~~~~~~~~,''''',%++++@+++/ ",
+" 00000000pppppppppppppopppvppppvvvvvvyyoyoyoyyoyjyjpjpyypoojojyjypjojyjojojjjojdjjojoojjjojjjdjjdajojjjjjcjjjjjjjcjjjaaajaajcjaaajaajajajajacaaacaaacaaaacaaaaaaaaabaaaaabaabaaa0baaaaabaa0aab0aaabjzyzyzzyzj00000000289397999i899999q9q9qmmmmmmqqqqqqr{rrrr{r{rr{{{'','''',',&-'','',''',','~{{{m////${r{rq//////////////////////////////////#'','',!~!~!~~!~~~!!~~~~~~~~!~~~~~~~~!*~!~~~~~~~~~~~~~~~*~~~~~~~*~~~,''''''=+@+@++@$> ",
+" 000000000oppdodopppppppvppvpopppppppvvyvvypoypypyyoyjojyoyopyjpjoopjojpjoooojjjpjoojjjdjjdjjjjjjojjcjjjjojjjcjjjjjajjajjjjajjcjajcjcaaaaaajaaaaaaaaaaaaaaaaaaabaaaabaaaaaaaaaaaaaab0aa0aabaaabaaazzzzzzzzzz00000000)39398i8989999m999m9mmmmmmmqmqqqq{rrr{r{rr{r{r{{{,''','''!//@*''''',''''{{{{r///////8{r>/////////////////////////////////(,',''',~!~~~!~~!~~~~~~~~~!~~~!~~~~~~~~!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'''''',#@++$@++@ ",
+" 000000000ppppppppoppvpppppppvovvpypoyooyoyooyjyopypoyopjpjyjoyjyjooojopjojojpjjjpjoojjjjjjjjjjjjjojojjjcjjjjajajajjcjjacjajjjaaajajaacjaaaaajaacaaaaaaaaabaaaaaaaaaaaa0aa0baaaaaaaaaaabaaaaaaaaazzzzzzjzz00000000b33979393i999999999999mmm-mmqqqmqqrrrrrrr{r{r{rr{r{~'''','.////.~''''',~{{{r{$////////($//////////////////////////////////-'',','~!~!~~~~!~!~!~~!!~~!~~~!~~!~~~~~~~!~~~~~~~~~~~~~~~~~~~~*~~~*~,''''''-+++@)@$@( ",
+" 000000000ppppppppppppypopvppppopvppyyvoyypoypyoyjopjyoyopjpoojpojopjojojpjojoojjjjjjdjojjdjdjjjjjjcjjjjjjjjjjjjjajjajajjaaaajaaajcajaaacaaacaaaaaacaaaaaaaaaaaaaaabaabaaaaaababaaaaaaa0aaa0aajzzzzyzzzz00000000b>@8398i898i899999999qmmmmmmmqqqqqrrrrrrrrrrr{r{{r{r{{{,''=///////%,',,{{r{{{q////////////////////////////////////////////@','',',~!~!~,~~!~~~!~~~~~!~!~!~~!~~~~~~!~~~~~~~~~~~~~~~~~~*~~~~~~~~,'''''',+@$@$@+@@ ",
+" 00000000appppppvpvpppppvpvvvpvvvvypoyooyyoyjyjpyyoyjoojyoooyjooojooooojjoojjpjooojjjjdjjjajjdajjojjjjjjcjjcjcjjjajjcjaajcjajcjaajaaacjajaaaaaaaaaaaabaacabaabaaaaaaaaaabaa0aaa0babaaaababaajzzozzzyzz00000000b(>>>$839i8i8999999999mmmmm-mqmqqqrirrrr{r{rr{r{rr{r{{{{{{~>////////(m{r{{{{r{>////////////////////////////////////////////!,'''',~~~!~!~~~~!~!~!~~~~~~~~~~~~~~~~~~~!~~~~~~~~~~~~~~*~~~~~~~~~~~,''''''%+++@+@+@/ ",
+" 00000000apppopppoppvppvppvpvvpvpyovyypoopyypyjyjpoyoyjyooojoooopjojoojpjjojjjjjojojjjjjojjjjjjjjjjjjjjjjjjjjajcajajjajjajaaaajaaajjaaaaaaaaacaaaaaaaaaaaaaaabaaaaaabaaaabaaaaaaa0abaaaa0ajzzzzyzzzz000000000@>@>@>@$38i8i898999q9mmmmmmmqq9qqmrrrrrrrrrrrrr{rr{rrr{r{{8///////////>9{{r{{8////(s//////////////////////////////////////#'',,,',~~!~!~~,~~~!~~~~~!~~~!~~!~~~~!~~!*~~!~~~~~~~~~~~~~~~~~~~*~~~,''''''*++++++++> ",
+" 00000000jppppopppyppyppvvvvpoppyyoyoyyooyjyopyjyjpyjpjyjypjyjjyjpjojojopjooojdjjjdjjdajjjjjdajjcjjjjjjjjjajjjjjjajcjajajajaacjaaaaaaaaacjaaaaaaaaaaaaaaaaaaaababaaaaabaaaba0aa0aaaaabaajzzzzzzyzza00000000&*#@>>>@>@198i8i999999mmmmmmm9qqmqrirrrrrrrr{rrr{r{r{r{r{{r//////////////$q{r{(////xwwu////////////////////////////////////,,''',,~~,~~!~~~,~~!~!~,~!~!~!~~!~!~~~~~~~!~*~~~~~~~~~~~~~~~~~~~~~~~'''''''#++@+$@+@ ",
+" 00000000jvpppvpppppvpvpvpvppvvvvoyypoyoypyooopypjoyjpjyjpjopjojojpjpjjjpjjjjjojjjjjjojocjjjojjjjjjcjajcjjajajjcajajaajcjcjaajcaaajcaaaaaaaaaabacaabaaabaaaaaaa0aab0aaa0aabaabaaabaa0azzzzyzzzzzj0000000bl&***#@>>@>>@1i9989999mm%mmmm9mq999rririrrrrrrrr{r{r{r{r{r{$///////////////(${$////swwwt///////////////////////////////////-''''''~~~!~!~,~~~~!~~~~~~~~~~~~~~!~~~~~~~~~~!~~~~~~~~~~~~~~~*~~~~~~,''''''-@$++@+++( ",
+" 00000000avpvpvppypppyppopyvvvyoyoyoypjyyjpyjyjypyooyjyjyojoopjojojojpjjojpjojjojojjjjojjjjjjdajjjjjjjjjajjcjjjjajajajajaajaaajaaajacaaaacaaaaaaaaaaaaaaaaaaaaaaaaaa0aaa0aaaaba0aabazozozzzzzz000000000)q**&*&-$@>@>@>$899999mmmmmmmq99qqqiirrrrirrrr{rrrrrr{rr{rrm////t/////////////(/////(xww///////////////////////////////////>,',,''!~,~~~!~~!~!~!~,~~~~!~~~!~~~~!~~~~!~~!~~~!~~~~~~~~~~~~~~~~~~~!'''''',.++@++++@ ",
+" 00000000avpoppppvppvpypvpvppvypyoyyopyoyjpoyojyjoooopjyjpjyjoyjojojojojojjjjoadadjjjjjocjajjjjjjjjjjjcajjjjajcjjcjaaaajaajcaaaaaajaaaaaaaaaaaaaaaaaaaaba0abaabaaabaabaaba0aabaaaazzzzzzzyzz00000000be**-*****=%$>>>>>>$8898mmmmmmm9qq9qirrriirrrrrrrrrr{rr{r{r{r>///twwt///////////////////uu///uwt/////////////////////////////~','',,~~~,~~!!~!~~~~~~~~!~~!~!~!~!~~~!~~~~~~!~~~~~~~~~~~~~~~~~~*~~~'''''''&+++++@$+/ ",
+" 0000000000vpvpypvpoppppypvypoyypyoyooyopyooooyjpooojoojoojojpjojojjojpjjoojdjjjjjjjjjjjojjjcjjcjajcjjjjcjjaajjajaajajcaacjajaaaaacaaaaaaaaabaaababaaaaaabaaaaaaa0aaaaa0aaba0aabazzyzzzzzzz000000000)**-**&*-*===%@@>@>@>1mm8mmmm99999qiiiirrrirrrrrrrrrrrrrr{r{8///(wwwx////////////////////////xwwx///////////////////////////.,'',''!~,~~~~~~!~~,~!~!!~!~~!~~~~~~!~~~~~~~~~~!*~~~~~~~~~~~~~~~~~~~,'''''']++@$+++@> ",
+" 0000000000oppppvvpypyvpvppvpyoyooyyyjpjyoyoooyooyjyoooyjpoojojpjpjojjojjjjjjjjjdjjdjjjjjjjjjjjjjjjjjajjjcjjaaaaajcjaajjaaaajcaaaaaaaaaaaaaaaaaaaaa0abaaaaabaabaaba0abaaaaaa0aazzzzzzzzzz000000000)****-**=**-***m#@>>@>@$#mmmmm9q9mq9rirriirrrirrrrrrrr{r{rrrr(///(xww(///////////////////////uwwws///////////////////////////,',''''~~!~~,~,~!!~~!~~~~~~~~~~~~!~!~~~!~~~~~~~~!~~~~~~~~~~~~~~~~~~~,''''',#++++@+++/ ",
+" 0000000000pvpyppppvpvvvvypyyoypyjpyyoypjypjyjooooojpjoojyjoojojjojojojpjojoojjjjjajjjjdajjjjjjajjjjajajjaajjjjaaaajaaaaaaaaaaaaaaaaaacaaaaaaaaaabaaaaaba0aa0aaaaabaaabaabaajzzozyzzzjz000000000)!]]***=-*-**-*===m#>>@+.+.8m8m99999iiiiririrrrrrrrrrrrrrrr{rrq$////(s///(wx(//////////////////(xw///////////////////////////-,'',,,!~~~,~~~~!~~~~~!~,~~,~~~!~~~~~!~~!~~~~~~!~~~~~~~~~~~~~~~*~~~~,''''''=+++++$++^ ",
+" 000000000jppypypyppypppppyoyoyyjoyjypyjypyoopjypjyjyjpjojoojoojpjojjjjjjjjjjjjjjjdajjjjjjjjjjjajcjajaajjcajcjajaacajcaaaaaaaaajbaaaaaaabaabaaaaaaaaaaaaabaab0aaabaaa0abazzzzzzzyyzj00000000a&]]*]=]]****&**=*===*m+++.+++.m999q9iiiiiiririirirrrrrrrrrr{r{rrrm>///////twww(////////////////(/////////////////////////////>,''''',~,~~~~,~!~,~,~!~~~~~~,~~~!~!~~~!~~~!~~~~~~!~~~~~~~~~~~~~~~~~!'''''',.@$@++@+@ ",
+" 000000000ovpppypvpvpypyoyopyopyypoojyojyjooyjyjyjpjojyjpjoojojjojojoojojdjojdjjjajjjjjcjjcjjcjjjjjjajajjajajacjajaajaaaaaacaaaaaabaaaaaaaaaaabababaaaa0aa0aaba0aababajzozyzzzzzzz000000000&**=]=]*=*=*=*=&*=*====-&...++>>$m99iiiriiiiirrrirrrrrrrrrrrrrrrrrrrm//////wwwx///////////////////////////////////////////////],,''',~!!~!~!~~~~!~~~~!~,!~~~~~~~~!~~~~!~~~~~~~~!~~!~~~~~~~~~~~~~*~,''''''&++++++++/ ",
+" 000000000jpvpppypypypppoyyyoyjyoyoyoyjyooooooojyjopjojyjoojpjojjojdjjjjjjjjjjjjjjjjjjjjjjjjjjjaajcjjajaaajajaaaaaaaajcaaaaaaaaaajbaaaaaaaaaaaaaaabaabaabaaaaabaa0a0jzzzzzzzzzz000000000b;=*]]*]=]]]*=****=-*-**-=-&%.+@@@>@$9iiiiiiiriiriririrrrrrrrrrrr{rrrrrr$/////tw(//////////////////////////////////////////////+,'',,,,~~,~~~~,~!~~,~!~~~~~~~!!!~!~~~~!~~~~~!~~~~~~~~~~~~~~~~~~~~~~,''''''!+++@$+++> ",
+" 0000000000ypypppppypyyooyopyopoyjpyjpooooyjooyjpojyjojjojjjpjojjjjjdjjjjjjjdjjdajjjjjjajjajjajjjjacjajaajaaacjaacjaajaaaaaaaaaaaaaabaababaaaa0aa0aaaaaaab0a0aabaazzyzzzzzzyz000000000b-!]]=!=]*=*]]]=]=****=*&=-*--&#>>>@>>^8iiiiiiiiririrrrirrrrrrrrrrrr{r{rrrr$////////////////////////////////////////////////////,'','',!!~!~,~~~~~,~~~!~!~~!~~~~~~~~!~~!~!~~~~~~~~!~~!~~~~~~~~~~~~~~'''''''#++++)@$@/ ",
+" 0000000000opyvypypyppypyoyoyoyoyjyoyoyjpjyoojyjojpjypjooojjjojoojjjojdjjjajjjjjjcjjjjajjjcjjjajajjjcjajcajjaajjaaaaaaacaaaacaaaaaaaaaaa0aaabaaaaabaab0aaaabaaaazzzzzjzyzzz000000000a=]]]]]=!=]]*]=**=*===*-*=&=&*=**-$>@>///^8iiiiiiiririirirrrrrrrrrrrrrrr{r{rr/(/////////////////////////////////////////////////%',,'''~!~!~~~~,~!~~~,~!~~~~~!~~~,~~!~!~~~~!~!~~~~*!~~~~~~~~~~~~~~~~,''''''*+++@$@++> ",
+" 0000000000jpppppypvyooyyoooypjyoooojpyjyjoooooyjojjjyjjojojdjjojojjjjjjdjjjjjjojjjjjjcjjjajcjjaajjajaajaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaabaaaabaa0aa0aabaa0aabjzyzzzzzzyz0000000000b*]*!]]!]*=]*=]]]*]*]****--=&=--**=*&@//////$9iiriiirirrrririrrirrrrrrrrrrrrr$//////////////////////////////////////////////////(,''',',!~!~,!~!~~~!~~!~!~,~,~~~,~!~~~~~~!~~~~~~!~!~~~!~~~~~~~~~~~~~!'''''',#+++++++@ ",
+" 00000000000pyvvpyppyoooypyoyoooooyjyjypjyjyjojooopjojpjoojjjojjjojjojjjjjadjajjjcjjjjjjajjjcjajaajajajcjajcaaaaaaaaaaaaabaaaaaaabaabaaab0aaaabaabaaaababaazzzzzzyzzzz0000000000b&=]]]]]]]!!=!]=]=]=]*]==-*=-=&=*=*==**%///////$iiiiiriiirirrirrrrrrrrrrrrrrrq////////////////twu////////////////////////////////*,'''',~!~!~~,~~~,~~,~~!~~~~~~!~~~~!~~!~!~~~!~!~~~~~~*~!~~~~~~~~~~~~,''''''&++$+++++( ",
+" 00000000000ypvvvyvypyoyjyjyoyoypjyoojyjoojypjojjoojyjjjojojjojjjjjjjjjjjjjjjjjjjjjjjcjjajjjjajaajaaaajaaajajcaaaacaaaaajaaaaaaaaaaaaaaaaaab0aaaaaba0aaajzyzzzyzzzzj0000000000).#%-]]]]]]]]]]**]=~=]=]*=-=-=*=*=*=*=~~~].//////^8iiiiiriririrrirrrrrrrrrrrrr$///////////////(wwwt//////////////////////////////@',,,''~,~!~!~!~,~~~!~!~~,~!~~~!~~~~~!~~~!~!~~~~~~~~~!~~~!~~~~~~~~~~,''''''!++++@+$@> ",
+" 0000000000jvypvpyjyoypypyjpyjooooyooyooojypjyjojojojojojojjojojdjjjjocjjjjjjjjajjjjjjjjaajcjajcjajaajaaajaaajaaaacaaaaaabaabaaaaaaaabaaaaa0abaaaaaaazyzzzzyzzzzj000000000b)#####%=!]]]]]]]!]*]=]=]=-=*-=-===*-*=~~!!~~=@//////^8iiiriiririrririrrrrrrrrr8////////////////twww(//////////////////////////////,,'''',~~~,~!!~!~,~~!~!~!~!~,~~~,~~~!~~~~~~~~~!~!~~~~~!~~~~~~~~~~~~~,''''',%++++++++/ ",
+" 00000000000pypyvyyooyjyoyoooyjpyjojyjpjyjjojojojoojojjojojjjjjjjjdjjjojjjjjjjjjcjjajajjjjajajjaajaacjaaaaaaaaaaaaaaaaaaaaaaaababaaa0aabaabaa0babazzzzzzzzzzzj0000000000b+########%=]!=!]]]]]]*]*===-=-*=***=*=*~!~~!~~!->//////$9iiiiririrrirriirrirrrr(/////////////////uxt//////////////////////////////#''',''~,~!~!~~~,~~~~~~,~!~~~!~~~!!!~~~!~~!~!~~~~!~~~~~~~!~~~~~~~~~~,''''''*+++$++++> ",
+" 00000000000jpypoyoyoyoooyjpyjojypyjyjojyjpjyjoojpjoojjdjojdjojjjjjjjajjjjjcjjjjjjjajjajajajaajcaajaaaaaaaaaaaaaaabacaaaaaaaaaaaaaba0aaaa0aaa0ajzyzozzyzjzzz0000000000b############-]]]]]]!]]!==-=-=*-===]=**~~~!~,~,~~~~%(//////$iiiiiriiirirrrirrirr$//////////////////////////////////////////////////(,',,'',~~~~~!,!~~~,~,~~~~~!!~~!~~~~~,~!~~!~~~!~!~~~~~~~~*~!~~~~~~~~!'''''',#++++$++@ ",
+" 00000000000yyyoyoooyoyooyoyoyjjooooojpjoyjpjjjjjojojjjjjjjjjjojjjjjjcjjjjjajaajjjaajcjjaajaajjaaacjacjaaacaaaaaaaaaabaaaaaa0abaaaba0abaabajzzzzzzzzzzzj00000000000)###############-]]]]]]]]===*-=-*]*]=]=!,,,~~!~~,!!~~~#///////1iriirririirrrirrii(////////////////(/////////////////////////////////=,''','~~,~,!~~!!!~~~~~,~!~~!~~~,~~~~~~~!~~!~~~~~~!~!~~~!~~~!~~~~~~~,''''''-++++++++^ ",
+" 000000000000yoyoyooooooooojyyjyjyjyjyjjojjoooojojjojojojjojjjjdjjjojjjjjjjjjjjcjjajjjajcajjaaajjaajaaaaaaaaaaaaaaaaaaab0abaaaaaaabaa0aaazzzyzozzzyzz00000000000b #%##%)########%-!]]]]===-====*=]*]*]!,,,,,~,~!~!,~!!*+////(/^8iiiirirriiirrrr$///////////////////(//////////////////////////////@','',',,~~~~!!~~~!~,~,~~~~~,~!~!~~~~~!~~~~~~~!~!~!~~~~~~~!~~~~~~~~~,'''''',++++++++@ ",
+" 000000000000jyooyoyooyoooyjpjyjpjyjyjyjoojojjojojjojjjjdjjjjjjjjjjjjjjcjajjajjjajaajaajjaajaaaaaaaaaaaaaaacaaabaabaaaaaaaaa0aaaaaabaazzozyzzzyzzzj00000000000b %####%###)%####%=]]======-*=]*=*]],,,,!,,!~,~!~!!!!~!->//////>9iiiiirrriiir8///////////////////////////////////////////////////~,'',',~!~,~~~~,!!~~!~~!!!~~!~!~~~,~,~~,~~!~~~~~~~!~~~~~~~~~!~~~~~~~,''''',%+$++++$@/ ",
+" 000000000000ooyoooyoyjyjyjyjoyjyjpjyjooojoojojojojojjjjjjjjjjjjjjjjjjjcjjjajjcjaajajajajcajcaaajcaaaaaaaaaaaaaaaaaaaabaabaaba0aaazozyzzzzzzzzz000000000000 %####%#########&-==-===]]]*]]]]!'!'!'!,,,,~!!!~,~,,,!&(//////$9iriiiirrri(//////////////////////////////////////////////////#,'',''~,~~~,~,~~~,~!~!~~~~,~~,~~~!~!~~!~!!~!~!~!~~~!~~!~~~~~~!~~~~~,''''''~+++$++++> ",
+" 000000000000jyjyooyjypjyoyjyjojojyjjojojojjpjjjjdjjojjojjjjjjjjjjjjjjjjajjjjjjjajajaajajaajaaaaajacaaaaaaaaaaaabaaaaaaaaa0aaaayzzyzzozzozzj000000000000b #############%%%====*]!]]]=!,,,!'~'~'~,,,,~,~!!~!~,!~#(//////$iiiiiiii1///////////////////////////////////////////////////'','',,~!~,~~~~,~!~,~!~~,~~~~~!!!~~~~~~~~~~~!~~~~~~~!~~~~~~~~!*!~~~~'''''''#++++++++ ",
+" 000000000000jvjyopyjyjpjyjyjyjpjyjyjoojojjoojjojjjojjjjjdjjjadajjjjjjjajaaajcajaajaaajaajaajaaaajbaaaaaaabaaaaaaabaaaabaajozzyzzzzzyzzzz000000000000 %#####%###%#%#%&=]]]]]]],','~'~,,',,,!,!,,~,~,~,~,,,*.///////8ririi9(///x(/////////////////////////////////////////////-,','''!~!~!~,~!~!~!~~,~~~~!~,~~~~~~~~~,~~~~~~~~!!~!~~~!~~~~~~~!~~~~'''''''-+++++$++( ",
+" 000000000000jyojyoyjyoooojyjoojjpjyjjoojjojjjojjjjojjjjjjjjajjajajajjjjjajjajajajaaaaaajacaaaaajaaaaaaaaaaaabaa0abaaajzzzyzyzozzzyz0000000000000b %##%##)%%#%#%#%%-!]]]],'''',''!~'~'!,,!!,!,~,~,!~!!,!*@//////^8iii$///twwt///////////////////////////////////////////>','',',~!!!~~~,~~!!~!~!~,~,~~!~,!!!~,~~~~~~,~~~~~~~!~~~~~!~~~~~~~!~!'''''',.+++++++@ ",
+" 00000000000000poyjyjpjoyjoojoyjojjojojojjojojjojjjjjjjjjjjjjjjjjjjcjaajjjaajajajcjajaaajaaaaaaaaaabaaaabaaa0aaaaaajzzyyzzzzzzzzzj000000000000b %###%#%#%#%####%=]]'''''''~',',~'!',,,,,,,,~~,~,~!~!,&>//////$98///(wwwx///////////////////////////////////////////!,'',',!~~~,~,~~~~~!!~,~~~~~~~~!~~~~!~!~,!!!~~!~!~~~~~!~!~~~~~~!~~~!,''''''&+$++++++/ ",
+" 0000000000000jyyojyyjpjooyjjyjoojjojojojjjjojjojjjjjjjjjjjcjjajjjjjacjajjacjajajaaaaaaaaaaaaaaaaaaaaaaaaaaaaajzzzyzzzzozyzyj00000000000000 %%#%#%%########-,''''''''',~'!,~'~'~!~,!,,,~,,,,!!!!!%(//////^////tww(///(//////////////////////////////////////.'','''~~,!~!~!~,~,~!~~!~,~!!!~~~,!!~~~~~~~~~!~!~!~!~~~!~~~~~~~~~~~~,'''''']++++++$+> ",
+" 00000000000000ypyjyjyjjjyjjyjoojojojjpjojjjjjjojjjjjjjjjjjjajjajjjajajajjaaaaajcjaaaaaaaaaaaaaabaaaaabaajjzozyzzzozyzzzzj0000000000000b %%%%%#%#%###%###..='''''''''','~'!'~','~,!,,~,~,~!,,~,~~#///////////(u////wx(////////////////////////////////////,,'',',!~~!~!~~,~~~~,~!!!~~~~~,~~~~~!~~,~~~~~~~~~~~~~!~~~~!~!~~~!~~!'''''',#++++++++/ ",
+" 000000000000000yyypjyoojyjjpjjojjjojjjjojojojjjjjjjjjjjajjjjjajajjajajaajaajaajaaaajaaaacaaaaaaaaabajjzyzyzzozyzzzzzj00000000000000b %-%-%%%%##########...#]'''''''''',~'~,'~,,'!!,!,~,,!,~,,!!,]+//////////////xwww(//////////////////////////////////-',''',~,!!~!~,~~,~,~~!~~!!~,~~~,~~!~!~~~~~,~~~~~~!~!~~~!~~~~~~~~~~~,''''''=++++$+++^ ",
+" 000000000000000jyyypyjyjojojooojjojojjjjjjjjdadjjjjjjjjjajjjjajajajajjajaaaaajcaaaaaaaaaaaaaaaaazzzyzyzzyzzzzzjzj00000000000000b %%&%%-&% %#######.......%!''''''''''!'~'~,!~'!'~'~,~,~,!!,!!!~=>///////////(xwwx//////////////////////////////////>,',',''~~~!~!~!~~~~~~,~,~,~~~,~~~~!~!~!~!!!~,~!!~!~~~~~!~~~!~~~~~~~!'''''',#+++++++@ ",
+" 0000000000000000jyvyyojyjjjojojjojjojojjjjjjjjjjjjjcjjjcjjajjajajaajaacjaaaajaaaaaaaaaaaaajozyzyzyzyzzzyzyzj000000000000000b %-%-%-%%- %####...#......-,''''''''''~'~',~'~,~'~',,~'~,!,,,,!,&(//////////(tw(//////////////////////////////////],''',,~~,!~!~,~!,~,~!~~!~~,~~~!~,~~~,~!~~~~~!~~~~~!~!~~!~!~~!~!~~~!,''''''&++$+++++/ ",
+" 00000000000000000oyyyyyyojojojjpjjjjjjjjjjajjjjjjoajjjjjcjajajajaajjajaajaaaaaaaaaajjozyzyzyzyzyzzozyzj0000000000000000b -%%-%%&% #......$......#-'''''''''','~,,!','~,~~'~'~,!,!!!,!,~%//////////////////////////////////////////////.,',',',,~~!~!~!~~!~~~!~!~,~~,~,~~~,~~~!~~~~~~~~~,~!~~~~~~~~~~~~~~~~,''''',!++++++++@ ",
+" 00000000000000000jyyypyyyoojjjjojojjjjjjjjjcjjajjajajjjjjcjjcjjaaaaaaaaaaaaajjjoyyzyyzyzyzyzyzyzzj00000000000000000b %%%-%%-%- .....#........#='''''''''',~'~!!,,,,'~'~'~!,,,!,!'!,~.////////////////////////////////////////////,'','',~~!!~,~!~,~!~,~~,~~!~~~~~!~~~,~~!!~,~~~~,~~~~~!~!~!~!~!~~~~!~,''''''%+++++$++/ ",
+" b000000000000000000jyvyyvvyvooojojjjjjjjjjjjajjjjjajajjjajjaajjaajajjoooyoyyyzyyzyzyyzyzyzzzjj00000000000000000b -%-%-%%-% $...+#$.......%]'''''''''','~'~'~~,~,~'~,!!!,!,!,!!,*@/////////////////////////////////////////%,','',!,~~!~!~!!~!~!~,~~,~!!,~!~~,~!~,~~~!~!,~!~~!~~!~!~~~~~~~~~~~~,''''',=++$+++++> ",
+" b0000000000000000000jyyyyyyvyvvyvooooojjjjjjajjjajjaajjjjjojooooyyoyyzyyyzoyzyzyzzyzyzj00000000000000000000b %%%-%%-%% .#+...#.......&!''''''''',,~'~''~'~'~'~'~'!'!,,'!,!,&>//////////////////////////////////////(''','',~~,!~!~!~~!~,~~~~!~!~~!~,~~~~~~!~,~~~~!~~~~~,~~~~!~!~!~!!~~~,'''''',#++++++++ ",
+" )000000000000000000000ayyyyyyyyyyyyyyyyyyvvyoooyyyyyyyoyyyyyyyyzyyyyyyyzyzyzyyyzza00000000000000000000b %-%-%%%-% #+#....$.......-'''''''''''~,!~'~,~,~,~,~!!,,!!',,,,~%(////////////////////////////////////*','','!!~~,~!~!,~!~!~,~~!~!~!~!~,~~,~~~!~!!~~~~,~~!~~~~~~~~~~~~~~!~,''''',-++++++$+( ",
+" b0000000000000000000000jjyyyyyyyyyyyyyyyyyzyzyyyyyyzyyyyyyyyyyyzyzzyzyzojj0000000000000000000000bb %-%%-%-%-% .$.#.#........#='''''''''''~'~'~'~'~'~'~,!'~,!,,',,,~#//////////////////////////////////@,','',,~~,~!~!~!~!~~!!~~,~~,~!~!~~!~~~,~~~~!!~~~!~~~~!~!~!~!~!~~!~~,''''''!.++$+.++> ",
+" b0000000000000000000000000ajyyyyyyzyyzyyyyyzyzyyyyyzzzyzyyzyzozjaa0000000000000000000000000b %-%%-%%-%% #+.+#$..#.....#]''''''''''~'~'~'~'~,~'~!!,,,!'!,,,,,*+////////////////////////////////,,'',''!~~!!~,~!~~!,~~,~~!~!~!~!~~,~~!~~~,~!~~~~~~!~,~~~~!~~~!~~!~~!'''''',%++.+++++/ ",
+" b0000000000000000000000000000jajjjjjzjyoyyyyyyzjjjjjaaa0a0000000000000000000000000000b %-%%-%%-%% ....#+........%!''''''''''~'~,~,~'~,~'~'!'!,!,,'!,,,->/////////////////////////////%','','~~,!~~!~!~,!~~!!~,~~,~~!!~,~~,~!~~~!~!!!!~~~~~!~!~~~~~~~~~~~~,''''''*++++++++> ",
+" )b000000000000000000000000000000000000000000000000000000000000000000000000000000b %%-%%-%%-%% ....#$#+#.....-'''''''''''~'~',~,,~,~!~!!,,,!,,,,,,,&(//////////////////////////(,,'',',,~~!,~,~!~~!!~~!~,~~~!~,~!~,~~,~~,~~,~~~~!~,~~~~~~~!~!~~!~!!~'''''',#++.$.+$+ ",
+" )b0000000000000000000000000000000000000000000000000000000000000000000000b) %-%-%%-%-%% .$.......$#...#-'''''''''''~!~'~'~'~',~'~,',,,,',',,!@/////////////////////////=,''','~~!!~~!~,~!!~~,!~~!~,~~~~~!~!~~~,~~~~~~,~~~~~~,~~,~~!~~~~~~~!,''''''-+.++++++( ",
+" %)b00000000000000000000000000000000000000000000000000000000000000b) %%%-%%%-%%%% ...$..........#='''''''''''~,~,~'~~'~,~!~!',,,,,,,,,=(//////////////////////@,''','~,~~!,~,~!~~!!~~!!~,~~,~,!!~!~~,~~~~,~!!~!!,~!~~!~~!~~~!~!!~~,''''''!#++$).++@ ",
+" %&%)bb0000000000000000000000000000000000000000000000000000bbb %-%-%%-%-%-% .#.#+.........%]'''''''''','~,{',~'~,,~!~'~',,,',,,,&/////////////////////!',,'',!~,!~~!~~,~,~~,~!~~!~!~~~~!~,!~!~~,~~~~!~~~~~!~~!~~~~~~~~~~~~'''''''%++++$+++/ ",
+" %%%%%))bbb000000000000000000000000000000000000000bbb %%%-%%-%-%%%% .+#...$#.#....%,'''''''''',,,~'~,~'~,,~'~!',,,,,,'''#//////////////////#','''',!~~,~!~,~!~!~!~!~!!~,~~,~,~!~~!~,~~~~,~~!!!,~~~~~,~!!!~!~~!~,,'''''*++.+++.+> ",
+" &&%-%%%%%%))bb000000000000000000000000b0bbb) %%-%-%%-%%%-%- ..$#..........#-'''''''''',!!~'~,~,~,~,~,~',,,',,,,,!@///////////////(,,'',,,~~,!~!~,~!~,~!~!~,~~~!~~~~~~,!~~~!~~,~~~~~~~!~!~~~~~~~~~!~~!!'''''''#+$+.++$+ ",
+" %&%-%&%%%%%&%&&% )))) %%-%-%%-%-%-%-% ......$.#.....#='''''''''''~'~'~'~,~'~,~~!,,',,,,'',*>/////////////-''',''!,~~,~,~!~!~!~!!~!~!!!~,,~,~!~~!!,~~!~~,~,~!!~~~,~~!~~~~~~!~~,''''''-.+.+++++( ",
+" %%-%&%&%%%%%&%%%- %%-%-%%%-%-%%%%% ..$#..........#]''''''''''~,~'~'~,~'~,,~!!,',,,,,',,-(//////////>,,,''',~~,~!~!~,~,~!~,~!~!~~!~~~~!~!!~~~!!~~~~~~~~~!!~~~~~~,~,!~~~~,'''''',.+++$.+.@ ",
+" -%-%%&%&%%&-%%%-%% %%%-%-%%%-%-%%%-%- ..+#+#$....#..%!'''''''''''~~,~,!,{'~,~!!!,',,','',,%/////////!,'',,'~,~!~!,~!~!~,~!~~!~,~!~!!!~,~!~,!!~~,~,~!~,~!~~!~!,~!~~~~~~!~,''''''&+.+.++++/ ",
+" %-%%-%-%%-%-%-%%-%%%- %%-%%%-%-%%-%-%-%%%-%- ..$...#........-''''''''',',~,~'!!!,~'~,~!',,,,,',,,,.//////#''''''~~~,~!~~,~,~~!~,~!~!~,~!~~!~~~,~~~,!~~~~~,~~~,!~!~~~~~!~~~,~~,'''''']+.+++.$+@ ",
+" %%-%%-%%%%%-%%-%-%%%%-%%%-%% %%-%%%-%%-%%--%%-%-%%%%%-%- +#....$..#....#=''''''''''',~!!,~,~,~,~!~',,',,'''',!>////,,,,','!,~,~!!~!~!!~,~!~!!~!~!~,~,~,~~~!!~~!!,~~~~!~~~!~~~!~~~,~~~~!'''''',#++$.++++/ ",
+" %-%--%-%-%%-%-%-%%--%%-%%-%%%-%%%-%%%-%%-%%-%-%%-%-%%%%-%%%-%--% ..#+#+.......+#]'''''''''',~,~'~,~,~,!~!!!',,,,,,','=(/-'''','~~~!~,~~'~!~~!~,~,~~!~!~~!~~~~,~~~,!~~~~~,~~~~,~!!~~~,~~!!~~~,''''''=..++.+.+> ",
+" -%%%%-%%%%-%-%%%-%-%-%%-%-%-%%--%%-%%-%%%-%-%%%-%-%-%-%%% ..$.#+#$......%!''''''''''~,~,~,~,~,!,~!!,,'''',',',=','',',!,~'~!,~~~!,~!~!~!!~!!~,~!!!!~~,~!~~!!!,~~,~,~~~~~,~!~~~~~~~,'''''',#++#++$+@ ",
+" %-%-%%%-%-%%%%%-%-%%%%-%%%%-%%-%-%-%%%-%-%-%%% ...$...#......-!''''''''''~,~'~,~,~~,~,!!,,,',,,',,'''','~~~~~,~~,~,~~,~,~~!~,~!~~!~!~!~~!~!!~~~~!~~~~!~~,~~!~~~~~~!!~'''''',&++++$)++^ ",
+" %%%%--%-%%%-%-%%-%-%%-%-%%%-%-%%% #+#.....$.....#-''''''''''',~,~,~,~,~,~!~,',''''',',,''~,!,,~!,~!~!!~!~,~,~!~~!~,~!~!~,~~,~~!!!,~~~,~~~!~!!~~~,~!~~~,''''''!++$++.+.> ",
+" %-%-%% ...$#.........#='''''''''',~,~,~,~!~,!!!~,,,',','',',!~~~~,~~'~!~,~!~!!~,~!!~~!!~~,~~,~~!~~~~!!,~~,~~~~~!!!~!~!~!!'''''''%+.+.+.++/ ",
+" .....#$.......%]'''''''''''~,~,,~,~,~!!!,,,',','',,!,~'~!!~~~,~!~!~~!~!~!~,~!~,~~,~~~,~,!!!~~~~~~~,~,~~~~~~~~~~,''''',=++.+.$++> ",
+" ........#.....%,''''''''''~,~,~,~,,~,~~,!','',',~~~!~!~,~,!~~,~,~,~,~~,~~!!~!~~~,~~~~~~~,~,~!~,~~~!~,!!~~!~!,'''''',#.+.++.++ ",
+" +#+#...$.......-'''''''''''~,~,~,~,~,!~!!!'','!,,~,~,~!~~!,~!~!~!~!~!~,~!~!~!!~~,~,~,!!~!~,~~~~,~~!~~~!~!~~,''''''-+++$+.++( ",
+" ..$#..........#='''''''''',~,~,~,~,~,~!!~,'!~~~!~,~,~,!~~,~!~,~,~,~~!~!!~,~!!~~~~~~~!~!~~!~~~~~~~!~~,~~~,''''''!..+.+.$+@ ",
+" .....#$#......#*'''''''''',~~,!~,~,~~,!~~,!,~,~!~!~~!,~,~!!~!~!~,~!~!!~~!~~,~,~,~!~!~!!,~,~,~~,~!!~~!~'''''',%$++.+.++/ ",
+" ..$...........%!''''''''''!~,~,~,~,~,~,~~,~~'~~,!'~~!~,~~,~!~!~,~!~!!!~,~~~~~~,~~,~~~~~~~!~~~~~!~!~,''''''=.+..+.+.> ",
+" .....#$+#.....-'''''''''''~,~,!~,~!~!,~~'~~,~~~~'~,~!,~!~!~!!~~!!~!~!~!!,~,~~~!~!!!,~~,~~,~!~~!~!'''''',#.++.$+++ ",
+" ..$......#.....-'''''''''',~,~!~,~,~,~,~!,~'~,~~!~,~~!~,~,~~,~!~~,~!~~~~~~!,~,~~~~!!~~!~~~,~!~!,''''''-.+#++.++^ ",
+" #...#$......#.#='''''''''',~,~,~,~!~,~~!~~~!~,~!~,~,~!!~,~!~,!~~~!!!!!,~~~~~!!!,~~~,~~!~~~!~,''''''!#+++$)..@ ",
+" ........$.....%]'''''''''',~,!~,~!~'~,~,!~!~'~!~!~!~~!~,~!~!!!!~~!~~~,~,~~~~~!!~~~,~,~~,~~'''''''%+.$..$++/ ",
+" +#$...........%!''''''''''~,~'~,~,~!~~,~,~~~!~,~!!,~!~,~!~!~!!!~!!!~~~,~!!,~~,~~~~~!~~~,''''''~+..+.+..> ",
+" ..#.#.#.......#-'''''''''',~~~,~~,~,!~!~,!!,~!!~~~,~~!~,~!~!~!~!~~,~~!~~~!!~!~,~~!~!!,'''''''#+.+.+.++ ",
+" .+.+.+#$.#....#='''''''''''~~,~'~~,~,~~,~~,~!,~!~!,~!~~!~,~!~,~!~,~~,~!~~,~!~,~~!~~,''''',-#+.+#+..( ",
+" .$#...........#]'''''''''''~~~,!~!~,~~,!~,~~,~!~~~,!~,~~!~~!~!~~!~~,~,~!~~~~!~!~,'''''',.+$.++$++ ",
+" .+#..#$....#..%!'''''''''',~~'~,~!,~!~!~,~!~!!,~~,~~,~!!!~~,~,~!~~!~!~!~,~~~!~'''''''&+#+....+/ ",
+" .+...#+.......-'''''''''''~~!~,~!~,~,~!!~,~~~,~~,~~!~!~,~~~~!~!~!~!~!~~,~~~,''''''].++.$+.+> ",
+" +#....#$.......=,'''''''''~'~!~,~,~!~~!!~,~!~!!~~,~!~!~!!,~,~!~~,~!~,~!~!!'''''''#..$).+#+ ",
+" .$.....#......#]''''''''''~,~~!~,~,!~~!~,!~!~,~~!~!!~~~~~~~,~~!~!~~,~~~,''''''=...+.$+.^ ",
+" #....+#$......%]'''''''''',,~!~,~!,~,~~!!!!~,~,~!~!!,~!,~~!!~~!!~!~!,'''''',#+.+...++ ",
+" .$#+.#..#.....&,''''''''''~,~~,~~!~,~!~~!~!~!~,~~~!~~~,~~,~,~~,~!~'''''''&+......+/ ",
+" ......$........-'''''''''',,~!,~!!~,~,~!!~,~~!~!,~!!~~,~~~!~!~!~,''''',!...+$+.+@ ",
+" ..#+#+#+#...#.#='''''''''',~~,~~!~!~,~!~~!~!~~!~!~,~~!!~!~!~!!'''''''#.+#+#+.+/ ",
+" .....$........%]''''''''''!!,~!~!!~~!!!!!~,~!~!~~,~~,~!~,~!,''''''*..+$)$.+> ",
+" .#+#..........%!''''''''',~,~,~!!,~!~!~~!~,~!~~!~~~,~~~!,'''''',#+......+ ",
+" ..+#$..$.......-'''''''''',~!~~!~~,~!!!~!~~,~!~,~~~!!!~'''''',-.+...+$+( ",
+" ...#..........#='''''''''',!~,!~!!~!!~!!~!!~~,~,~~~!,''''''!..$.+...@ ",
+" ....#.$#......#*''''''''',,~~!~,~,~~!~!~,~!~~~,~!~'''''',%.......+/ ",
+" ........$.....%!''''''''',,~!~~~,~!~,~~!~,~~!~~,''''''*.+.+$.+.> ",
+" #+#+#.........&'''''''''',!!!!~~!~~!~!~!~,~!,'''''',#.+#.)$.+ ",
+" ..$..#..#......-'''''''''',~,!!~,~!!~!~~!~~'''''''-...+...+^ ",
+" .....$........#='''''''',,,~~!~!~!~,~,~~,''''''!#.$.$...@ ",
+" .....#..#..#..%]''''''''',,~!~,~~~~!~,'''''''%+.....++/ ",
+" #...$.........%!''''''''',,~~!!!~,~,''''''*......+#> ",
+" ......$.......#-'''''''',',!~!~~!~'''''''#.+#+.$.+ ",
+" #+#..#$+#.....#=''''''''',!,~!!'''''''-#$.+....( ",
+" ..............#]''''''''',,~,'''''',....#+#++ ",
+" .+#..#$.......%!''''''''','''''''%.$).$+.+/ ",
+" .$............-,'''''''''''''']......#+@ ",
+" +#+#..#$#.....#-'''''''''''''#..$+#+.+ ",
+" ..$...........#]''''''''''=.....+$#( ",
+" +#...#$.......%]''''''',##+#+#..@ ",
+" ....#...#.....&,''','&+....+.+/ ",
+" $.+....$.......-'''=..$)$..#@ ",
+" .$#...........#%%..#+.#+.+/ ",
+" .+#.#$..#....#.....+#$.> ",
+" +...#+..............+ ",
+" ...$.#$..+#+#$..../ ",
+" ......#..$..#+#+> ",
+" +#.....#+#+..> ",
+" ..$#+....$ ",
+" ).$)++ "};
diff --git a/libimage/error_small.xpm b/libimage/error_small.xpm
new file mode 100644
index 0000000..5c61f2a
--- /dev/null
+++ b/libimage/error_small.xpm
@@ -0,0 +1,183 @@
+/* XPM */
+static char * error_small_xpm[] = {
+"150 115 65 1",
+" c None",
+". c #5F605E",
+"+ c #505352",
+"@ c #454745",
+"# c #727271",
+"$ c #7F807F",
+"% c #909192",
+"& c #C3C3C6",
+"* c #FDFFFC",
+"= c #F4F2F6",
+"- c #2E2F2D",
+"; c #E8E6EA",
+"> c #DFE0EA",
+", c #D6D7DF",
+"' c #7B9FC3",
+") c #5A7EA3",
+"! c #A8A9AD",
+"~ c #050C19",
+"{ c #081933",
+"] c #071F5B",
+"^ c #266BF5",
+"/ c #2E79F5",
+"( c #3684F5",
+"_ c #4699FC",
+": c #5589C0",
+"< c #3C5C7C",
+"[ c #2E5B9A",
+"} c #1558F0",
+"| c #003CEC",
+"1 c #000300",
+"2 c #5BAEFD",
+"3 c #002BA8",
+"4 c #5088D2",
+"5 c #272D33",
+"6 c #9B0300",
+"7 c #A93937",
+"8 c #D05D5A",
+"9 c #FC7D6D",
+"0 c #FC8E7F",
+"a c #FC6E5D",
+"b c #FB6354",
+"c c #BD2221",
+"d c #71A9DD",
+"e c #FDA99D",
+"f c #D02D2B",
+"g c #88CAFF",
+"h c #F39C93",
+"i c #F7B9AD",
+"j c #FC584D",
+"k c #8FB6D9",
+"l c #191B19",
+"m c #991E1E",
+"n c #07369F",
+"o c #312E09",
+"p c #FB4B44",
+"q c #585310",
+"r c #968E1B",
+"s c #E83935",
+"t c #92555F",
+"u c #FC413C",
+"v c #7D4153",
+"w c #872A38",
+"x c #DC2020",
+"y c #F92C2D",
+"z c #A5D7FE",
+" ",
+" ",
+" ",
+" ",
+" ",
+" .............+..+.++.++++++++++++++++++++++@+@+@@@@@@@@@@ ",
+" ..#$%$$$$$$$$$$$$$$$$$$$$$$$$$$$$#$#$#$####$#$#$#$$#$###@@ ",
+" ..&******************************************=****=****=$@- ",
+" ..&**==*=*==*======================;=;=;=;=>==>=;=;=;;=*%@- ",
+" ..&*=**=*=**=*==============;=;;;;;=>=>=>=>;;>;>;;>>>;;*%@- ",
+" ..,*============*======;=;==;=====>=;=>=>=;=;=>=>;=>=>==%@- ",
+" ..&***,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,>>=*%@- ",
+" ..&*==,&%%%%%%%%%%%%%$%%%%$%%%$'$%%%%%%%%)%%%%%%%%%,,>;*%@- ",
+" .#&**>,!~{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{]{]{]{{~,,>=*%@- ",
+" ..&*==,%{^///((_(_____:@@<[__(_(///^^^}}}|||||||||1,>>;*%@- ",
+" ..&*==,!~/((_______2:<@@@@@[[____((//^^^}}}||||||3~,,>==%@- ",
+" ..,*==,%{((____2222<@@+!;.@<<4____(((//^^}}}||||||1,>>==%@- ",
+" ..&*==,!~(____222<@@@%;**&@@<[42____((//^^}}}||||31,,>;*%@- ",
+" ..&*==,!~__2222)+@+#;*=;==#@+):22____((//^^}}|||||1>>>==%@- ",
+" .#&*==,!~__22:+@+.&**;>>;*,@5<::222___((//^}}}|||31,>>;*%@- ",
+" 6666666666 ..&*==>!~222<+++!**;;;;>;=*%@@<:222____(///^}}}|||1,>>==%@- ",
+" 66666666666666666666 ..&*=>>!~2<@++%=*=>=>=>>>>*=+-<):2222__((//^^}}||31>>>=*%@- ",
+" 6666678980009999aaabcc66666 ..,*==>!5+++$;*=;;>>>>,,>>=*&@@<)d222_2_((//^^}}||1>>>;*%@- ",
+" 666680e0000909999a9aa999afc6666 ..&*=>!+++#,**;=;=;>,>!&,;>==.@@):g2222__(//^^}}}31>>>==%@- ",
+" 6668hhhh0h0000909a9aa9aaa99a9abc666 ..&*&#++.&**;;>=>>,,&<1#,,>;*,@@<):2222___(/^^}}|}1>;>==%@- ",
+" 6668eeheh0e00009999aa9aa9aaaa9aa9abc666 ..&%+++!=*=>==>>,,,$1]3~!>>>=*$@@):g222___((/^^}}31;>>;*%@- ",
+" 6668ieeeh0e000000999a9aa9a9a9aa9aaa9aabc666 .++++%;*=;;;>;>,,%{{3||]5>>>>*=+@<)'2222__((/^^}}}1>>>==%@- ",
+" 668eieeee0h0h0009999a9a9a9aa9a9aa9a9a99aajc66 +++$,=*;;==>>,,!@13|||||~%,;>;*!@@<:dg222__(//^}}31>;>;*%@- ",
+" 66hihieehe0e00000999aaa9aa9aaa9a9aaa9aa9a9abf666 +++#&**===>=>,,k.~]|||||||3l,>>>**.@+):2222__((/^^}}1=>>==%@- ",
+" 6mieieeee0e000099999a9a9aa9a9a9a9a9aaaaaaaaa9aj666 ++..!====;;;>,,,#1]}|||||||||{#,>;;*&@@<<)222__((/^^}31>;>;*%@- ",
+" 667eieihehh0h00000999aaa9a8aaaabbbbbbbbbbbbbbbaaajc66 +.++%=**=;==>>,,%~{3}}}||||||||3~&>>;=*$@-11)222_((/^^}}l>>>==%@- ",
+" 668iieihehehh00009999a9a9aaaabbbbbbjjbbbjbjbjjjjjjjjc66 .++%;**=;==;>,,!5~n^^}}}}}}||||||]+,>>>*;++o1<22___(//^^31=;>>*%@- ",
+" 66hieihehh00000009999aa9abbababbbbbbjbjjbjjjjjjjjjjpjjf66 ++.#&**===;;>,,k+~]/^^^^^^^}}}}|||||~!>;>=*!@@1<422_((/^^^}1=>>==%@- ",
+" 68ieieeeeee0h0009999aaabaabbbbbbbbbbbbbbjbjbjjjjjjjjppjf66#.+..&**==;==>>,&#l]////////^^^^^}}}}||n5,>>,*=.@-<:22__(/[]]nl>;;>*%@- ",
+" 67iieeeeh00h00009999aaaababbbabbbbbbjjjjbjjjjjjjjjpjjjpjpf6m#.!=======>>,,#~{((((((((/////^^^}}}}||~$>;;;=&@@5<<[4((n1q~n1=>>==%@- ",
+" 6meiieeehee000090999aa8bbababbbbbbbjbbbbjjbjjjjjjjpjpjpjpjpc67&;*=====>!$+5l][4__(_((_(((////^^}}}}}31,>>>=*#@5111<_([1r1n~;;>==%@- ",
+" 6ceieeeehh0h0000999ababbaabbbbbbbbbbjjjjbjjjjjjjjjjjjpjppppps66t;,===>,&+@@@@<[[[________(((////^^}}}|].;;;;*;@@l11[((/111nl=>>;*%@- ",
+" 66hieihee0e00000999aaaaabbabbbbbbbbjbbbbjjbjjbjjjjpjpjjpjjppppp66i&;>,,k+@.!+@@@<[[442_______((//^^^}}}3~!>>>;=%@-o1{_/[111n1=;>>*%@- ",
+" 68ieeeehhe0000099aaaababbbbbbbbbbjbjbjjbbjjjjjjjsjpjppjppppppppf67!&&,$5@@>==!@@@<<)4:222_____(((//^^}}}n-;>>>*=.@@1{([{~o1]1=;>;*%@- ",
+" 6mhiieee0h0000099aaaaabaabbabbabbjbbbjbjjjjjjjjjjjjjjjjjppjppjppp66%!!5{+@%====>%@@@<<<:42222____((///^}}}~%=>;;*&@+l{(~11r111=;;>*%@- ",
+" 68eehehh0e0000999abababbbbbbajbbbbbbbbjbjjjbjjjjjjjppppppjpjpppups6m#@)[++==;>==*,#@@@<<:::222____((//^^}}n~;>>>=*#@-{[{1111~1==>>*%@- ",
+" 6ceeee0e0h000099abaaababaaaabbbbbbbjjjjjjbjjjjjjjpppjjjjjpppppppppuc6v::.@&*=>=>;=**&.@@@<)::2222___((//^^}}{#=>;;=;++{[~11111l=>>;*%@- ",
+" 68ieehe0e000099abaabababbbj8jbbbbjbbbbbjjjjjjsjjjjjpppppppppppuppuus6m'%.#*=>>;>;;;===!+@@@<)):222___((/^^}^3~&=>;;*%@@11111111==>;=%@- ",
+" 6meehehh0000999aaaaabab8abbjbbbbjbbjjjjjjjjjjjjjppjjjjppjppppppppupuuc6v##&=>=>,,,>>;==*;%@@-<<)::22___((//]1]]@;;>;*=+@51111111=>>>*%@- ",
+" 68eeh00e000009baababbbbjbbbbbbbjbjbbjjbjbjjjjjjjjppppjppppjupppupppuuu6m#%,,;;>,!,,,>;;==*,$@@@<<<:42___(/{lr1n~!>>>;*!@@1111111==>>*%@- ",
+" 6cheee0h000999aba8abaaabbbabbbjbbjbjjbjjjjjjsjjpjjjjjpppjpppuppppuuupsuc6t&&&>>,,~5!,,>>>>=**&.@@@l{::___((/1o1~nl;=>>=*#@-111111=;>;*%@- ",
+" 6che0e0000099ababababbbabbbbbjbjbjbjjbjjbjjjjjjpppppjpjppppppupupppuuuuf6w&&&,,,.{3~@&,>>>;;=*=!+@@@<<:44(((]111]{#=;>;*,@@l11111==>>*%@- ",
+" 680eh0000099aaaaabababbbbbbbjbj8jbjbbjjjjjjjjppjjpppspuuupupupupuuuuuuus66&&&&,!~3||]~.,>>>>;==*=%@@@5<{1<_(/~1o1~1,=>,=*%@-11111=;>;=%@- ",
+" 66hh000000999aaaabaabbabbbbjbbbjjjjjjjjjjjjjpjspuuuuuuuuupuuuuuupuuppuuuu66!&!&&5]|||||]1$>>>>>>==*;$@+@l1~[(({1r11{+==,>==+@l1111==>>*%@- ",
+" 6c0e0h009999bbabbabbbbbbbjabbjbjbjjjjjjjjjpspupusuppupusuusuuuuuuuuuuuuuux68&&!!~|||||||3{5!>>>>>>=*=,#@@@l{[]111111~%=>>;*!+@$!,*=;,;*%@- ",
+" 68000000999aaaaabbbabbbb8jbjbbjbjbbjjjjjssppuuuupuusuuusuuuusususuxusuuups67,!!@n|||||||||31@&>>>>>>==*&+@@-<[~1111111==>>*=#@+%!;=;>>=%@- ",
+" 6690h09aa9abaabbab8babajjbbbjbjbjjjjjjjjpppupppppuppuspuppsusuusuuuusuxusyu6m&&%+3|||||||||||]~.,;;;>>;===!@@-<{1111111@=>>>=,@@.%&>>>;*%@- ",
+" 6600009aa9aaa8aaaabaaabaabababab8jbbabbjjjjjjjjjjpjjjjjjjpjpjppppppsuuuusyuc6!!+[^|||||||}|||||]1$>;>>>>;*=;%@@@-1111111&=>;;*$++$%,,>>*%@- ",
+" 6690099b0iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii8suxusyxct.v4[}}}}}}}}}}}}|}3{l!>=>>>>==*,#@@@l111115==,;=>@@+%!,,;*%@- ",
+" 6600099b0,,,,,>,>,,>,>>>>>>>,>>>>>,,,,,>>>;;;,;,;,;;;;,;;;;;;;;,;,;;&xuxusux6t@([4/}}}}}}}}}}}}}|}n~-&=;;;;;;**&.@@-l1111%*>,=*!@@#%,,>=%@- ",
+" 660999aa0,;;*******=*==*===*=*=*************************************hssssxuf6w<(4[4^^^^^^^^^^^}}}}|}]~.,;>>>;>===!+@@-11l!;=>>==.@+$!,;*%@- ",
+" 6c0999aa0;;********************=*=**=*******************************hfususyx6w[([:(/^/^//^^^^^^^^^}}}3]1$>=>;>>;=*=%@@@+$%!!,>>=&@@<%&>=%@- ",
+" 6c9999aa0;******************************=***************************hxsxsxux6w(44)4(///////////^^^^}n1]3{l!==;>>>;==;$@@@.#%%&,==$@+$%>=%@- ",
+" 6c99a9ab0;**********************************************************ifsssuuy6w444'44/(_((((((/(//^^/1ql1]n1-&==;>>>;==&#@@@.$%!&=;@@.%&=%@- ",
+" 6c99aaab0;********************************************************==hssxxsyy6w(44':4(_(___(_((((//(n1q11111{~+&==;>>>===!++@+.%%!=!@+#%;%@- ",
+" 6ca9a9ab0**********************************************************=hfssssxs6w444'4d__________(_(((/({11lq111~1-;==>>,>===!@@@+#%!&+@.%&$@- ",
+" 669aa9ab9=**********************************************************hfxfssyxcw4'4':d_2_222_2_____(((//n~lo111~111.===>>>>==>$@@@.#!%5@#!$@- ",
+" 66a9aaab0*=*********************************************************ifsxfxux6v_dd''d2222222222_____(((({11111111111%*=,>>>>==,#5+@.%@5@%.@- ",
+" 66a9a9ab0*********************************************************=>hfsxssyfct4:d''d22222222222222{~4((]11111111111%=>>>>>>>===&v@@+#--++-- ",
+" 66aaaaab9=**********************************************************hcffssyc6)ddd'kk2gggg2g2~<222:111{4/({11111111-==>,,,>,>>>=*=!@@@@5--5- ",
+" 66c99abb0**********************************************************=hffsfyy6c'ddk'dk2g22ggg<1o~<2~11ol1{(/11111111&=,>,>>>,,,>,>==;%@@@-5ll ",
+" 6fa9abb9***********************************************************hffxfyy66:kdk'kkggggg2d1lr111111qo111{1111111+==>>,,,>>,,>>>,>==,#@@-111 ",
+" 66aaabb0*=********************************************************=hfffsyxcwddkk!kdgggggggd51qql1111111111111111==>,>>>>,>,>,,,>>>;==.@-l11 ",
+" 66a9bbbb888888888888888888888888888888888888888888888888888888888887ffxuyx6tdkdkkkkgggggzggg'51qql1111111111111$*>,>,>,,>>,,>>,,,>;*,@@-l11 ",
+" 66cabbbbbbbjbjjjjjjjjppuppspspsssssssssssfsfsffffffffffffffffffffffffffyy66'kkkk!kgzgzzzgzgggg)11r111111111111l==>>>>>,>,>,>,,,>,>==#+-l11 ",
+" 6cabbbbbjbjbbbjjjjjpupuuuspspspssssfsfssfsfsfsffsfffffffffffffffffffffyx6mdkkkk!kzgzggzz'gzgggg<1111111111111&=>>,,>,>>,>>,>>,>,=*!@@l111 ",
+" 66bbbbbbbjjjjjjjjjjppupsppspspssjsjssjfsfjffjfsfffffffffffffcffcfffffxyxcvkkkkkkkzzzzzzg11)zzgggl11111111111@==>>>>>,>,>,>,,,,,>==.@-11 ",
+" 66fbbjjbbbjjjjjjjjjpppppsuspssssfsffjfsfffsfffffbfffffffcfcffcfffcfffuy66'kkkk!kzzzzzzz+~115'zg<111111111111;=>,>>>,>>,>,>,>>>,=*%@@11 ",
+" 6cjbbjbjjbjjjjjjppuusupspssjssjspsffjfjfbfffbffffffffffcffcffcfcfcfxyx6mkkkkk!kzzz>>zz511qq15'111111111111#*>>>,>>>,>,>,>>,,,>=;+@l1 ",
+" 66fjbjbjjjjjjjjjjppupuspspssssffjfjffffffffffcffff8ffcfffcfcffcfcffyyc6)kkkk!k&z*;==;;z$~11~11~1111111111l==>>>>,>>,>,>,>,>>>=*#@@1 ",
+" 6cbjbjbjjjjjjjjppupsspssssjssjssfsfsfjffbfffcbcfffcf8cccfcfccfcfcsyx6mkkkkz!k&;;*>;*==>5l111r1lr11111111!=>>>,>>>,>>>,>,>,,;*&@@l ",
+" 66fjbjjbjjjjpjjppuupupsjsssfsfsfjfjffffffff8fcf7ffcfcff7fccfcccffyy66)kkkk!kk;=>==;===!~r151o1111111111-*=>>>>>>>>>,>,>,>>>*=.@5 ",
+" 6cjjjjjjjjjjjpppspsssssspsssjsfffsffjfffffffffffcfccffcfccccfccxyxcwkkkkk!k&;;*;=====#1ooq111111111111;=>>>>,>,>,>,>,>>,,==!@+1 ",
+" 66cbjjjjjjppjjpuupuppssssjfsfssjffjfffbcfffcffcf7ffc7fcccfccccfyy66'kkkkk&k,*;*;=*;*=*&5loqol11111111.*;>>>>>>>>>,>>>,>>>=;+@- ",
+" 66jjjjjjpjpjppsussssjssssfjsffsfffffffffffff7fff7cffcf7f7cccfyyx6vkkkkkk!kz===*>===**>z'~oo111111111==>>>>>>>,>>>>,>,,>=*$@@ ",
+" 666jjjjjjjpjpppuppsssssjfsffjffjff8fff8ff8cffcfcfccc7fccccccuyx66'dkkk&kkz>*==***=*==zzzz5~11111111!*>;>>>>>,>>,>,>>>,;*&+@l ",
+" 66cjjjjpjpjppspsspsjssspfjfsfffffffffcfffffcfcccfccccccfmcuyx66)dkkkkk!kzz>=====*=**>zz'111111111-*=;>>>,>>>>>>>,>,>>**.@@ ",
+" 66fppjjpjpppspspsssssfsssfsjffjffffffccccf7fcf7cccccc7ccsyy66vddk'kk!kzzzz****=***zkzz-111111111,=>>;>>>>>>,>,>>>,>==!+@1 ",
+" 66fjjjpjppuususssssfjffjfffffffffff8fffcff7ccf7cc7ccccfyyc6vddddkk!kkzzzzz=*+!**z%1-<111111111+*;;>>>>>>>>>>>>,>>>*;++- ",
+" 66spjppjpsususpsssssssffjfjffff8ffcf7fccffccccccccmcsyyx6m5+)ddk'kkkzzzzzz'115'zlol1111111111==>;>;>>>>>>>>,>>,>=*%+@ ",
+" 66fpjppppspssssjssfjfsfffffffffcfffffcf7cccf7cmcccxyy66m&&$@+''kkkggzzzzzlq1115lq1q11111111%*;>>;>;>>,>>>>,>>>>*&++l ",
+" 66sjpjuusppssssfssffsfjfffffffffccc7fcfc7ccccc7cuyyc6m!,&&!#+$'kggggzzzklqlq11111r1111111l==;>>>>>>>>>,>>>>,>=*#+@ ",
+" 66cppppssspssssjfssffffs8ffffcf8cffccccfmfmccfyyx667&,&,,&&!.@<gggzggzzz$lq1111111111111,*>>>>;>;>>>>>>>>>>=*!@+1 ",
+" 666ppuusssssssfsfssfsfffffcfcfcfccc7fmfcccmsyyx66w&;,,&,&!&&%5l'ggzggzgk1511qo11111111@==;;>>>>>>>>>>>,>,>*=.+- ",
+" 666sspspssssssjfjfffsfff8fffcf7ccfcccc7cfyyyx66t$#%&,,&&&,,>>$~5dggzgz51115ol11111111==>>>;>;>;>>>>>>>>>=*%+@ ",
+" 666cxsspssssfsfffjfffffffcffffccc7fmffuyyx666 #$#$!&&&,,=;>;,.1<dgz'~1111l11111111$*=>;>;>;>>>>>>>>>>>*,++- ",
+" 666fssssfssfssfffffffff7fccc8ccccfsyyx666m $$#$%!,======;=&@l<g~r111111111111l==>;>;>>>;;;>>>>>>>**#+@ ",
+" 666csssssffsffsfffffffffccccfsuyyx666m %$##$;**===;==>!-~~q1q1111111111&*;>>>;;>>>>;>>>>>>;*!++1 ",
+" 666cfssssfsffffffffcccfssuyyxx666m %%% $...%;*====;===%lllq111111111@==>;;;>>;>>;>>;>>>>*=..- ",
+" m6666ccspsspsfsffsspsuyyxc6666mt %%! ....!**===>===>$15111111111;=;>;>>;>;>>>;>>>>>=*%++1 ",
+" tm66666ccffsssssxfxc66666m7 !% ....&*=*=>=;==,.11111111#*=;;;>;>>>;>;>>;,;;*;.+5 ",
+" twm666666666666666mmw %%% ...$&**==>=>==!111111l==>;>;>>;;>>>>;>>>>=*#.@ ",
+" %twwmmmmmm7w %%%! ...%;**=;=>===#1111!*;;;;;;;;>>;>>>>;>=*&++l ",
+" %!%%% %%%!% ....!=**;=;====+1-*=>=>>;>>;>>;;>;>>>*=#+@ ",
+" %!%%%%%%%%%%%!% ....!**==>;===,>=;>>=>=>;>;;>>;>>;==!++1 ",
+" ...#&**=;;;=*==>=>>>>;;>;>>>>>>;*;.+- ",
+" ...$,**=;;;==>>=>=>;;;>>;;>;;=*$++ ",
+" ....%=**;>>;;>;>>=>>;;>>;>>=*&.+l ",
+" ....!=*==>=>=;;>;;>;;>>>>==#.@ ",
+" ...#&**=>>;;>;;>;>;;;;=*!.+1 ",
+" ...$,**=>=>=>;>;>>>;*;..- ",
+" ...%;*==>>=>;;>=>=*%.+ ",
+" ....!=*=;>>;>>>=*&..l ",
+" ...#&=*=;;;>>**#.@ ",
+" ...$&**=>;=*!..1 ",
+" ...%;*==*=..- ",
+" ....%=**%.+ ",
+" ...#!&..5 ",
+" .....@ ",
+" ..+ "};
diff --git a/libimage/img1.xpm b/libimage/img1.xpm
new file mode 100644
index 0000000..02143eb
--- /dev/null
+++ b/libimage/img1.xpm
@@ -0,0 +1,56 @@
+/* XPM */
+static char * img1_xpm[] = {
+"37 50 3 1",
+" c None",
+". c #000000",
+"+ c #FFFFFF",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ........... ",
+" .....+++++++++. ",
+" ...+++++++++++++. ",
+" .++++++++++++++.. ",
+" .++++++++++++++. ",
+" ..+++....+++++++. ",
+" ...... .+++++++. ",
+" .. .+++++++. ",
+" .+++++++. ",
+" ..++++++.. ",
+" .+++++++. ",
+" .+++++++. ",
+" .+++++++. ",
+" .+++++++. ",
+" .++++++.. ",
+" ..++++++. ",
+" .+++++++. ",
+" .+++++++. ",
+" .+++++++. ",
+" .+++++++. ",
+" ..++++++.. ",
+" .+++++++. ",
+" .+++++++. ",
+" .+++++++. ",
+" .+++++++. ",
+" .+++++++. ",
+" ..++++++.. ",
+" .+++++++. ",
+" .+++++++. ",
+" .........+++++++......... ",
+" .+++++++++++++++++++++++. ",
+" .++++++++++++++++++++++.. ",
+" .++++++++++++++++++++++. ",
+" ..++++++++++++++++++++++. ",
+" ......................... ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" "};
diff --git a/libimage/img2.xpm b/libimage/img2.xpm
new file mode 100644
index 0000000..f4046e4
--- /dev/null
+++ b/libimage/img2.xpm
@@ -0,0 +1,56 @@
+/* XPM */
+static char * img2_xpm[] = {
+"42 50 3 1",
+" c None",
+". c #000000",
+"+ c #FFFFFF",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" .......... ",
+" ......++++++++.... ",
+" ...++++++++++++++++.. ",
+" .+++++++++++++++++++.. ",
+" .++++++++++++++++++++.. ",
+" .++++.........++++++++. ",
+" .+.... ..+++++++.. ",
+" .... ..+++++++. ",
+" . .+++++++. ",
+" .+++++++. ",
+" .+++++++. ",
+" .++++++.. ",
+" ..++++++. ",
+" .++++++.. ",
+" ..+++++.. ",
+" ..++++++. ",
+" ..++++++.. ",
+" ..+++++... ",
+" ..+++++.. ",
+" ...+++++.. ",
+" ..++++++.. ",
+" ..+++++... ",
+" ...+++++.. ",
+" ..++++++.. ",
+" ..++++++.. ",
+" ..++++++.. ",
+" ...+++++... ",
+" ..++++++.. ",
+" ..+++++++. ",
+" ..++++++++............... ",
+" .+++++++++++++++++++++++. ",
+" .+++++++++++++++++++++++. ",
+" .+++++++++++++++++++++++. ",
+" ..++++++++++++++++++++++.. ",
+" .+++++++++++++++++++++++. ",
+" ......................... ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" "};
diff --git a/libimage/img3.xpm b/libimage/img3.xpm
new file mode 100644
index 0000000..c83fa64
--- /dev/null
+++ b/libimage/img3.xpm
@@ -0,0 +1,56 @@
+/* XPM */
+static char * img3_xpm[] = {
+"42 50 3 1",
+" c None",
+". c #000000",
+"+ c #FFFFFF",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ............. ",
+" ....+++++++++++.... ",
+" .+++++++++++++++++... ",
+" .+++++++++++++++++++.. ",
+" .++++++++++++++++++++. ",
+" ..++.........+++++++++.. ",
+" ..... ...++++++++. ",
+" . ..+++++++. ",
+" .+++++++. ",
+" .+++++++. ",
+" .++++++.. ",
+" .++++++. ",
+" ..+++++.. ",
+" ..+++++.. ",
+" ...+++++.. ",
+" .........+++++... ",
+" .++++++++++++.. ",
+" .++++++++++++. ",
+" .++++++++++++... ",
+" ..++++++++++++++.. ",
+" .........++++++++.. ",
+" ...+++++++.. ",
+" ..+++++++. ",
+" .+++++++. ",
+" .+++++++. ",
+" .+++++++. ",
+" .+++++++. ",
+" ..++++++.. ",
+" . .+++++++. ",
+" ... ..++++++.. ",
+" .+.... ....+++++++. ",
+" .++++..........+++++++++.. ",
+" ..+++++++++++++++++++++... ",
+" .+++++++++++++++++++++.. ",
+" ..++++++++++++++++++... ",
+" .....++++++++++..... ",
+" ............ ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" "};
diff --git a/libimage/img4.xpm b/libimage/img4.xpm
new file mode 100644
index 0000000..3be99a9
--- /dev/null
+++ b/libimage/img4.xpm
@@ -0,0 +1,56 @@
+/* XPM */
+static char * img4_xpm[] = {
+"44 50 3 1",
+" c None",
+". c #000000",
+"+ c #FFFFFF",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ........... ",
+" ..++++++++.. ",
+" ..+++++++++. ",
+" .++++++++++. ",
+" ..++++++++++. ",
+" ..+++++++++++. ",
+" ..+++++++++++.. ",
+" ..+++...++++++. ",
+" ..+++.. .++++++. ",
+" ..+++.. .++++++. ",
+" ..+++.. .++++++. ",
+" ..++++. .+++++.. ",
+" .++++.. ..+++++. ",
+" ..+++.. .++++++. ",
+" ..+++.. .++++++. ",
+" ..+++.. .++++++. ",
+" ..+++.. .+++++.. ",
+" ..+++.. ..+++++. ",
+" ..+++.. .++++++. ",
+" ..+++.. .++++++. ",
+" .++++. .++++++. ",
+" ..++++. .++++++. ",
+" .+++++............++++++...... ",
+" .+++++++++++++++++++++++++++. ",
+" .+++++++++++++++++++++++++++. ",
+" ..+++++++++++++++++++++++++++. ",
+" .++++++++++++++++++++++++++++. ",
+" .................++++++....... ",
+" .++++++. ",
+" .++++++. ",
+" .++++++. ",
+" .+++++.. ",
+" ..+++++. ",
+" .++++++. ",
+" ........ ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" "};
diff --git a/libimage/img5.xpm b/libimage/img5.xpm
new file mode 100644
index 0000000..9aa80d3
--- /dev/null
+++ b/libimage/img5.xpm
@@ -0,0 +1,56 @@
+/* XPM */
+static char * img5_xpm[] = {
+"43 50 3 1",
+" c None",
+". c #000000",
+"+ c #FFFFFF",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ....................... ",
+" .++++++++++++++++++++.. ",
+" .++++++++++++++++++++. ",
+" ..++++++++++++++++++++. ",
+" .+++++++++++++++++++++. ",
+" .+++++++++++++++++++++. ",
+" .+++++................. ",
+" .+++++. ",
+" ..++++.. ",
+" .+++++. ",
+" .+++++. ",
+" .+++++. ",
+" .+++++.......... ",
+" ..++++++++++++++... ",
+" .+++++++++++++++++... ",
+" .+++++++++++++++++++.. ",
+" .++++++++++++++++++++.. ",
+" .++..........+++++++++. ",
+" ..... ..++++++++.. ",
+" .. ..++++++++. ",
+" ..+++++++. ",
+" .+++++++. ",
+" .+++++++. ",
+" .+++++++. ",
+" .++++++.. ",
+" .++++++. ",
+" ..++++++. ",
+" . ..++++++.. ",
+" ... ..+++++++. ",
+" .+..... ...+++++++.. ",
+" .+++++.........++++++++.. ",
+" ..+++++++++++++++++++++.. ",
+" .++++++++++++++++++++... ",
+" ...++++++++++++++++... ",
+" .....+++++++++.... ",
+" ........... ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" "};
diff --git a/libimage/img6.xpm b/libimage/img6.xpm
new file mode 100644
index 0000000..e915233
--- /dev/null
+++ b/libimage/img6.xpm
@@ -0,0 +1,56 @@
+/* XPM */
+static char * img6_xpm[] = {
+"41 50 3 1",
+" c None",
+". c #000000",
+"+ c #FFFFFF",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ......... ",
+" ....+++++++.... ",
+" ...+++++++++++++... ",
+" ...++++++++++++++++. ",
+" ..++++++++++++++++++. ",
+" ..+++++++.........+++. ",
+" ..++++++... ..... ",
+" ..+++++... . ",
+" ..+++++.. ",
+" .++++++. ",
+" ..+++++.. ",
+" .++++++. ",
+" ..+++++.. ",
+" .++++++. ....... ",
+" ..++++++. ...+++++.... ",
+" .+++++++....++++++++++.. ",
+" .++++++++++++++++++++++.. ",
+" .+++++++++++++++++++++++.. ",
+" ..++++++++++......++++++++. ",
+" .+++++++++... ..+++++++.. ",
+" .++++++++.. ..+++++++. ",
+" .++++++++. .+++++++. ",
+" .+++++++.. .+++++++. ",
+" .+++++++. .+++++++. ",
+" .+++++++. .+++++++. ",
+" .+++++++. .++++++.. ",
+" .+++++++. .++++++. ",
+" ..++++++. ..++++++. ",
+" .++++++. .++++++.. ",
+" .++++++.. ..++++++. ",
+" ..++++++.. ...++++++.. ",
+" ..++++++......+++++++.. ",
+" .++++++++++++++++++.. ",
+" ..++++++++++++++++.. ",
+" ...++++++++++++... ",
+" ....++++++.... ",
+" ........ ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" "};
diff --git a/libimage/img7.xpm b/libimage/img7.xpm
new file mode 100644
index 0000000..d9ef9e5
--- /dev/null
+++ b/libimage/img7.xpm
@@ -0,0 +1,56 @@
+/* XPM */
+static char * img7_xpm[] = {
+"43 50 3 1",
+" c None",
+". c #000000",
+"+ c #FFFFFF",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ........................... ",
+" .++++++++++++++++++++++++.. ",
+" .++++++++++++++++++++++++. ",
+" .++++++++++++++++++++++++. ",
+" ..++++++++++++++++++++++++. ",
+" .++++++++++++++++++++++++.. ",
+" .................+++++++.. ",
+" .+++++++. ",
+" ..++++++.. ",
+" ..++++++.. ",
+" .+++++++. ",
+" ..++++++.. ",
+" .++++++.. ",
+" ..++++++. ",
+" ..++++++.. ",
+" .+++++++. ",
+" ..++++++.. ",
+" ..++++++.. ",
+" .+++++++. ",
+" ..++++++.. ",
+" ..++++++.. ",
+" .+++++++. ",
+" ..++++++.. ",
+" ..++++++.. ",
+" .+++++++. ",
+" ..++++++.. ",
+" ..++++++.. ",
+" .+++++++. ",
+" ..++++++.. ",
+" .++++++.. ",
+" ..++++++. ",
+" ..++++++.. ",
+" .+++++++. ",
+" ..++++++.. ",
+" .......... ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" "};
diff --git a/libimage/img8.xpm b/libimage/img8.xpm
new file mode 100644
index 0000000..3baee10
--- /dev/null
+++ b/libimage/img8.xpm
@@ -0,0 +1,56 @@
+/* XPM */
+static char * img8_xpm[] = {
+"42 50 3 1",
+" c None",
+". c #000000",
+"+ c #FFFFFF",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" .......... ",
+" .....++++++++.... ",
+" ...+++++++++++++++.. ",
+" ..++++++++++++++++++.. ",
+" ..++++++++++++++++++++.. ",
+" ..++++++++......++++++++.. ",
+" .+++++++... ..++++++++. ",
+" ..+++++++. ..+++++++. ",
+" .+++++++.. .+++++++. ",
+" .+++++++. .+++++++. ",
+" .+++++++. .++++++.. ",
+" .+++++++. ..++++++. ",
+" ..++++++.. .++++++.. ",
+" ..++++++.. ...+++++.. ",
+" ..++++++......+++++... ",
+" ...+++++++++++++... ",
+" .+++++++++++++. ",
+" ..+++++++++++++. ",
+" ...++++++++++++++.. ",
+" ...+++++......++++++.. ",
+" ..+++++... ..++++++.. ",
+" ..+++++.. ..++++++. ",
+" ..++++++. .++++++.. ",
+" .++++++.. .+++++++. ",
+" .++++++. .+++++++. ",
+" ..++++++. .+++++++. ",
+" .+++++++. .+++++++. ",
+" .+++++++. ..++++++.. ",
+" .+++++++. .+++++++. ",
+" .+++++++.. ..+++++++. ",
+" ..+++++++.. ...+++++++.. ",
+" .++++++++......++++++++.. ",
+" ..++++++++++++++++++++.. ",
+" ..++++++++++++++++++.. ",
+" ...++++++++++++++... ",
+" ....+++++++..... ",
+" ......... ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" "};
diff --git a/libimage/img9.xpm b/libimage/img9.xpm
new file mode 100644
index 0000000..31debe9
--- /dev/null
+++ b/libimage/img9.xpm
@@ -0,0 +1,56 @@
+/* XPM */
+static char * img9_xpm[] = {
+"39 50 3 1",
+" c None",
+". c #000000",
+"+ c #FFFFFF",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ........ ",
+" ....++++++.... ",
+" ...++++++++++++... ",
+" ..++++++++++++++++.. ",
+" ..++++++++++++++++++. ",
+" ..+++++++......++++++.. ",
+" ..++++++... ..++++++.. ",
+" .++++++.. ..++++++. ",
+" ..++++++. .++++++. ",
+" .++++++.. .++++++.. ",
+" .++++++. .+++++++. ",
+" ..++++++. .+++++++. ",
+" .+++++++. .+++++++. ",
+" .+++++++. .+++++++. ",
+" .+++++++. ..+++++++. ",
+" .+++++++. .++++++++. ",
+" .+++++++.. ..++++++++. ",
+" ..+++++++.. ...+++++++++. ",
+" .++++++++......++++++++++.. ",
+" ..+++++++++++++++++++++++. ",
+" ..++++++++++++++++++++++. ",
+" ..++++++++++....+++++++. ",
+" ....+++++... .++++++.. ",
+" ....... .++++++. ",
+" ..+++++.. ",
+" .++++++. ",
+" ..+++++.. ",
+" .++++++. ",
+" ..+++++.. ",
+" . ...+++++.. ",
+" .... ...++++++.. ",
+" ..++.........+++++++.. ",
+" .++++++++++++++++++.. ",
+" .++++++++++++++++... ",
+" ..+++++++++++++... ",
+" ....+++++++.... ",
+" ......... ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" "};
diff --git a/libimage/pnm.c b/libimage/pnm.c
new file mode 100644
index 0000000..3b59db9
--- /dev/null
+++ b/libimage/pnm.c
@@ -0,0 +1,512 @@
+/***************************************************************************
+ * pnm.c
+ * (C) Copyright 2004 Andreas Brachold <vdr04-at-deltab.de>
+ * based on works from Fabian E. Bustamante <fabianb-at-cs.umd.edu>
+ * Created: Thu Aug 7 2004
+ ****************************************************************************/
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+/* #include <sys/stdtypes.h> for size_t */
+#include <stdarg.h>
+#include <errno.h>
+
+#include "pnm.h"
+
+/*****************************************************************************
+Print error message and get out
+@param variable list of arguments explaining error
+@return - none*/
+void cPNM::error(char* format, ... )
+{
+ if(m_szError)
+ free(m_szError);
+ m_szError = NULL;
+
+ va_list args;
+ va_start( args, format );
+
+ (void) vasprintf( &m_szError, format, args );
+ va_end( args );
+}
+
+
+/*****************************************************************************
+Get pnm magic number (P1, P2, ...)
+@param file - source file
+@return - magic number*/
+bool cPNM::MagicNumber(FILE* f,unsigned int& nFormat)
+{
+ int ich1, ich2;
+
+ ich1 = getc( f );
+ if ( ich1 == EOF ) {
+ cPNM::error( "End of file, read error reading magic number" );
+ return false;
+ }
+ ich2 = getc( f );
+ if ( ich2 == EOF ) {
+ cPNM::error( "End of file, read error reading magic number" );
+ return false;
+ }
+ nFormat = ich1 * 256 + ich2;
+ return true;
+}
+
+/*****************************************************************************
+Get next significant character, i.e. jump over comments
+@param file - source file
+@param - Next significant character*/
+bool cPNM::getchar(FILE* f, char& nNext)
+{
+ register int ich;
+ register char ch;
+
+ ich = getc( f );
+ if ( ich == EOF )
+ {
+ cPNM::error( "End of file, read error" );
+ return false;
+ }
+ ch = (char) ich;
+
+ if ( ch == '#' ) {
+ do {
+ ich = getc( f );
+ if ( ich == EOF )
+ {
+ cPNM::error( "End of file, read error" );
+ return false;
+ }
+ ch = (char) ich;
+ } while ( ch != '\n' && ch != '\r' );
+ }
+
+ nNext = ch;
+ return true;
+}
+
+
+/*****************************************************************************
+Get next bit from file
+@param file - source file
+@param - Next bit*/
+bool cPNM::getbit(FILE* f, bit& nNext)
+{
+ register char ch;
+
+ do {
+ if(!getchar( f, ch ))
+ return false;
+ } while ( ch == ' ' || ch == '\t' || ch == '\n' || ch == '\r' );
+
+ if ( ch != '0' && ch != '1' )
+ {
+ cPNM::error( "junk in file where bits should be" );
+ return false;
+ }
+ nNext = ( ch == '1' ) ? 1 : 0;
+ return true;
+}
+
+
+/*****************************************************************************
+Get next byte from file
+@param file - source file
+@param - Next byte */
+bool cPNM::getrawbyte(FILE* f,unsigned char& nNext )
+{
+ register int iby;
+
+ iby = getc( f );
+ if ( iby == EOF )
+ {
+ cPNM::error( "End of file, read error" );
+ return false;
+ }
+ nNext = (unsigned char) iby;
+ return true;
+}
+
+
+/*****************************************************************************
+Get integer from file
+@param file - source file
+@param - Next integer */
+//bool cPNM::getint(FILE* f, unsigned int& nNext)
+template<class T> bool cPNM::getint(FILE* f, T& nNext)
+{
+ register char ch;
+ register T i;
+
+ do {
+ if(!getchar( f,ch ))
+ return false;
+ } while ( ch == ' ' || ch == '\t' || ch == '\n' || ch == '\r' );
+
+ if ( ch < '0' || ch > '9' )
+ {
+ cPNM::error( "junk in file where an integer should be" );
+ return false;
+ }
+ i = 0;
+ do {
+ i = i * 10 + ch - '0';
+ if(!getchar( f,ch ))
+ return false;
+ } while ( ch >= '0' && ch <= '9' );
+ nNext = i;
+ return true;
+}
+
+
+/*****************************************************************************
+Read Header from file
+@param FILE* f - source file
+@return bool - true successful reading*/
+bool cPNM::readHeader(FILE* f)
+{
+ if(!MagicNumber(f,m_nFormat) /* Read magic number. */
+ || !getint(f,m_nWidth) /* Read size. */
+ || !getint(f,m_nHeight))
+ return false;
+
+ /* Check magic number. */
+ switch (PNM_FORMAT_TYPE(m_nFormat)) {
+ case PPM_TYPE:
+ /* Read m_nColorDepth. */
+ if(!getint(f,m_nColorDepth))
+ return false;
+ if ( (m_nColorDepth) > PPM_MAXMAXVAL )
+ {
+ cPNM::error( "ColorDepth is too large" );
+ return false;
+ }
+ return true;
+
+ case PGM_TYPE:
+ /* Read ColorDepth. */
+ if(!getint(f,m_nColorDepth))
+ return false;
+ if ( m_nColorDepth > PGM_MAXMAXVAL )
+ {
+ cPNM::error( "ColorDepth is too large" );
+ return false;
+ }
+ return true;
+
+ case PBM_TYPE:
+ m_nColorDepth = 1; /* pbmmaxval */
+ return true;
+
+ default:
+ cPNM::error( "bad magic number - not a ppm, pgm, or pbm file" );
+ }
+
+ return false;
+
+}
+
+
+/*****************************************************************************
+Read Row from file with Black White Values
+@param FILE* f - source file
+@return bool - true successful reading*/
+bool cPNM::readpbmrow(FILE* f, bit* pBits)
+{
+ register unsigned int w;
+ register int bitshift;
+ register unsigned char item;
+ register bit* bP;
+
+ switch ( m_nFormat ) {
+ case PBM_FORMAT:
+ for ( w = 0, bP = pBits; w < m_nWidth; ++w, ++bP )
+ {
+ if(!getbit( f,*bP ))
+ return false;
+ }
+ return true;
+
+ case RPBM_FORMAT:
+ bitshift = -1;
+ item = 0;
+ for ( w = 0, bP = pBits; w < m_nWidth; ++w, ++bP ) {
+ if ( bitshift == -1 ) {
+ if(!getrawbyte( f,item ))
+ return false;
+ bitshift = 7;
+ }
+ *bP = ( item >> bitshift ) & 1;
+ --bitshift;
+ }
+ return true;
+
+ default:
+ cPNM::error( "Wrong fileformat" );
+ return false;
+ }
+} /* end cPNM::readpbmrow() */
+
+
+/*****************************************************************************
+Read Row from file with Gray Values
+@param FILE* f - source file
+@return bool - true successful reading*/
+bool cPNM::readpgmrow( FILE* f, gray* pGrays)
+{
+ register unsigned int w;
+ register gray* gP;
+ bit* pBits;
+ register bit* bP;
+
+ switch ( m_nFormat ) {
+ case PGM_FORMAT:
+ for ( w = 0, gP = pGrays; w < m_nWidth; ++w, ++gP ) {
+ if(!getint( f,*gP ))
+ return false;
+ }
+ return true;
+
+ case RPGM_FORMAT:
+ for ( w = 0, gP = pGrays; w < m_nWidth; ++w, ++gP ) {
+ if(!getrawbyte( f,*gP ))
+ return false;
+ }
+ return true;
+
+ case PBM_FORMAT:
+ case RPBM_FORMAT:
+ if(!allocrow( &pBits )
+ || !readpbmrow( f, pBits ))
+ {
+ freerow( pBits );
+ return false;
+ }
+ for ( w = 0, gP = pGrays, bP = pBits; w < m_nWidth; ++w, ++gP, ++bP )
+ *gP = ( *bP == PBM_WHITE ) ? m_nColorDepth : 0;
+ freerow( pBits );
+ return true;
+
+ default:
+ cPNM::error( "Wrong fileformat" );
+ return false;
+ }
+}
+
+
+
+/*****************************************************************************
+Read Row from file with Colored Values
+@param FILE* f - source file
+@return bool - true successful reading*/
+bool cPNM::readppmrow(FILE* f, pixel* pixelrow)
+{
+ register unsigned int w;
+ register pixel* pP;
+ register pixval r, g, b;
+ gray* pGrays;
+ register gray* gP;
+ bit* pBits;
+ register bit* bP;
+
+ switch ( m_nFormat ) {
+ case PPM_FORMAT:
+ for ( w = 0, pP = pixelrow; w < m_nWidth; ++w, ++pP ) {
+ if(!getint( f,r )
+ ||!getint( f,g )
+ ||!getint( f,b ))
+ return false;
+ PPM_ASSIGN( *pP, r, g, b );
+ }
+ return true;
+
+ case RPPM_FORMAT:
+ for ( w = 0, pP = pixelrow; w < m_nWidth; ++w, ++pP ) {
+ if(!getrawbyte( f,r )
+ ||!getrawbyte( f,g )
+ ||!getrawbyte( f,b ))
+ return false;
+ PPM_ASSIGN( *pP, r, g, b );
+ }
+ return true;
+
+ case PGM_FORMAT:
+ case RPGM_FORMAT:
+ if(!allocrow(&pGrays)
+ || !readpgmrow( f, pGrays ))
+ {
+ freerow( pGrays );
+ return false;
+ }
+ for ( w = 0, gP = pGrays, pP = pixelrow; w < m_nWidth; ++w, ++gP, ++pP ) {
+ r = *gP;
+ PPM_ASSIGN( *pP, r, r, r );
+ }
+ freerow( pGrays );
+ return true;
+
+ case PBM_FORMAT:
+ case RPBM_FORMAT:
+ if(!allocrow( &pBits )
+ || !readpbmrow( f, pBits ))
+ {
+ freerow( pBits );
+ return false;
+ }
+ for ( w = 0, bP = pBits, pP = pixelrow; w < m_nWidth; ++w, ++bP, ++pP ) {
+ r = ( *bP == PBM_WHITE ) ? m_nColorDepth : 0;
+ PPM_ASSIGN( *pP, r, r, r );
+ }
+ freerow( pBits );
+ return true;
+
+ default:
+ cPNM::error( "Wrong fileformat" );
+
+ return false;
+ }
+}
+
+
+/*****************************************************************************
+Read Row from file with any Values
+@param FILE* f - source file
+@return bool - true successful reading*/
+bool cPNM::readrow(FILE* f, xel* xelrow)
+{
+ register unsigned int w;
+ register xel* xP;
+ gray* pGrays;
+ register gray* gP;
+ bit* pBits;
+ register bit* bP;
+
+ switch ( PNM_FORMAT_TYPE(m_nFormat) ) {
+ case PPM_TYPE:
+ return readppmrow( f, (pixel*) xelrow );
+
+ case PGM_TYPE:
+ if(!allocrow(&pGrays)
+ || !readpgmrow( f, pGrays ))
+ {
+ freerow( pGrays );
+ return false;
+ }
+ for ( w = 0, xP = xelrow, gP = pGrays; w < m_nWidth; ++w, ++xP, ++gP ) {
+ PNM_ASSIGN1( *xP, *gP );
+ }
+ freerow( pGrays );
+ return true;
+
+ case PBM_TYPE:
+ if(!allocrow(&pBits)
+ || !readpbmrow( f, pBits ))
+ {
+ freerow( pBits );
+ return false;
+ }
+ for ( w = 0, xP = xelrow, bP = pBits; w < m_nWidth; ++w, ++xP, ++bP ) {
+ PNM_ASSIGN1( *xP, *bP == PBM_BLACK ? 0: PNM_MAXMAXVAL );
+ }
+ freerow( pBits );
+ return true;
+
+ default:
+ cPNM::error( "Wrong fileformat" );
+ return false;
+ }
+}
+
+
+
+
+cPNM::cPNM()
+{
+ m_nFormat = 0;
+ m_nColorDepth = 0;
+ m_nHeight = 0;
+ m_nWidth = 0;
+ m_szError = NULL;
+}
+
+cPNM::~cPNM()
+{
+ if(m_szError)
+ free(m_szError);
+}
+
+
+
+
+/*
+int main()
+{
+ cPNM pnmImage;
+ FILE *f=fopen("test.pnm", "r");
+ if(f)
+ {
+ xel* pRow = NULL;
+ register unsigned int w;
+ register unsigned int h;
+
+ if(pnmImage.readHeader(f))
+ {
+ for(h = 0;h < pnmImage.GetHeight() && h < GetHeight();++h)
+ {
+ if(!pnmImage.allocrow(&pRow)
+ ||!pnmImage.readrow(f, pRow) )
+ break;
+
+ xel* pP = pRow;
+ if(pnmImage.GetWidth() < GetWidth())
+ w = (GetWidth() - pnmImage.GetWidth()) / 2;
+ else w = 0;
+ for(;w < pnmImage.GetWidth() && w < GetWidth();++w,++pP)
+ {
+ unsigned char* pImageRGB = m_pImageRGB + (((h*GetWidth())+w)*3);
+ if(pnmImage.GetColorDepth() == 255)
+ {
+ *(pImageRGB + 0) = (unsigned char) PPM_GETR(*pP);
+ *(pImageRGB + 1) = (unsigned char) PPM_GETG(*pP);
+ *(pImageRGB + 2) = (unsigned char) PPM_GETB(*pP);
+ }
+ else if(pnmImage.GetColorDepth() == 1)
+ {
+ *(pImageRGB + 0) = (unsigned char) PPM_GETR(*pP)==0?0x00:0xFF;
+ *(pImageRGB + 1) = (unsigned char) PPM_GETG(*pP)==0?0x00:0xFF;
+ *(pImageRGB + 2) = (unsigned char) PPM_GETB(*pP)==0?0x00:0xFF;
+ }
+ else
+ {
+ *(pImageRGB + 0) = (unsigned char) (PPM_GETR(*pP)*255 / pnmImage.GetColorDepth()) & 0xFF;
+ *(pImageRGB + 1) = (unsigned char) (PPM_GETG(*pP)*255 / pnmImage.GetColorDepth()) & 0xFF;
+ *(pImageRGB + 2) = (unsigned char) (PPM_GETB(*pP)*255 / pnmImage.GetColorDepth()) & 0xFF;
+ }
+ }
+ pnmImage.freerow(pRow);
+ pRow = NULL;
+ }
+ if(pRow)
+ pnmImage.freerow((char*)pRow);
+ }
+ fclose(f);
+ }
+}
+*/
diff --git a/libimage/pnm.h b/libimage/pnm.h
new file mode 100644
index 0000000..f28e829
--- /dev/null
+++ b/libimage/pnm.h
@@ -0,0 +1,218 @@
+/***************************************************************************
+ * pnm.h
+ * (C) Copyright 2004 Andreas Brachold <vdr04-at-deltab.de>
+ * based on works from Fabian E. Bustamante <fabianb-at-cs.umd.edu>
+ * Created: Thu Aug 7 2004
+ ****************************************************************************/
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifndef _pnm_h
+#define _pnm_h
+
+/*
+ * CONFIGURE: PGM can store gray values as either bytes or shorts. For most
+ * applications, bytes will be big enough, and the memory savings can be
+ * substantial. However, if you need more than 8 bits of grayscale resolution,
+ * then define this symbol.
+ */
+//#define PGM_BIGGRAYS
+
+/*
+ * CONFIGURE: Normally, PPM handles a pixel as a struct of three grays.
+ * If grays are stored in bytes, that's 24 bits per color pixel; if
+ * grays are stored as shorts, that's 48 bits per color pixel. PPM
+ * can also be configured to pack the three grays into a single longword,
+ * 10 bits each, 30 bits per pixel.
+ *
+ * If you have configured PGM with the PGM_BIGGRAYS option, AND you don't
+ * need more than 10 bits for each color component, AND you care more about
+ * memory use than speed, then this option might be a win. Under these
+ * circumstances it will make some of the programs use 1.5 times less space,
+ * but all of the programs will run about 1.4 times slower.
+ *
+ * If you are not using PGM_BIGGRAYS, then this option is useless -- it
+ * doesn't save any space, but it still slows things down.
+ */
+/* #define PPM_PACKCOLORS */
+
+/* END CONFIGURE */
+
+
+typedef unsigned char bit;
+const bit PBM_WHITE = 0;
+const bit PBM_BLACK = 1;
+
+/* Magic constants. P1,P2,P3...P6 */
+
+const unsigned char PBM_MAGIC1 = 'P';
+const unsigned char PBM_MAGIC2 = '1';
+const unsigned char RPBM_MAGIC2 = '4';
+const unsigned short PBM_FORMAT = (PBM_MAGIC1 * 256 + PBM_MAGIC2);
+const unsigned short RPBM_FORMAT = (PBM_MAGIC1 * 256 + RPBM_MAGIC2);
+#define PBM_TYPE PBM_FORMAT
+
+const unsigned char PGM_MAGIC1 = 'P';
+const unsigned char PGM_MAGIC2 = '2';
+const unsigned char RPGM_MAGIC2 = '5';
+const unsigned short PGM_FORMAT = (PGM_MAGIC1 * 256 + PGM_MAGIC2);
+const unsigned short RPGM_FORMAT = (PGM_MAGIC1 * 256 + RPGM_MAGIC2);
+#define PGM_TYPE PGM_FORMAT
+
+const unsigned char PPM_MAGIC1 = 'P';
+const unsigned char PPM_MAGIC2 = '3';
+const unsigned char RPPM_MAGIC2 = '6';
+const unsigned short PPM_FORMAT = (PPM_MAGIC1 * 256 + PPM_MAGIC2);
+const unsigned short RPPM_FORMAT = (PPM_MAGIC1 * 256 + RPPM_MAGIC2);
+#define PPM_TYPE PPM_FORMAT
+
+#ifdef PGM_BIGGRAYS
+typedef unsigned short gray;
+#define PGM_MAXMAXVAL 65535
+#else /*PGM_BIGGRAYS*/
+typedef unsigned char gray;
+#define PGM_MAXMAXVAL 255
+#endif /*PGM_BIGGRAYS*/
+
+typedef gray pixval;
+
+#ifdef PPM_PACKCOLORS
+
+#define PPM_MAXMAXVAL 1023
+typedef unsigned long pixel;
+#define PPM_GETR(p) (((p) & 0x3ff00000) >> 20)
+#define PPM_GETG(p) (((p) & 0xffc00) >> 10)
+#define PPM_GETB(p) ((p) & 0x3ff)
+#define PPM_ASSIGN(p,red,grn,blu) (p) = ((pixel) (red) << 20) | ((pixel) (grn) << 10) | (pixel) (blu)
+
+#else /*PPM_PACKCOLORS*/
+
+#define PPM_MAXMAXVAL PGM_MAXMAXVAL
+typedef struct
+{
+ pixval r, g, b;
+} pixel;
+
+#define PPM_GETR(p) ((p).r)
+#define PPM_GETG(p) ((p).g)
+#define PPM_GETB(p) ((p).b)
+#define PPM_ASSIGN(p,red,grn,blu) do { (p).r = (red); (p).g = (grn); (p).b = (blu); } while ( 0 )
+
+#endif /*PPM_PACKCOLORS*/
+
+typedef pixel xel;
+typedef pixval xelval;
+#define PNM_MAXMAXVAL PPM_MAXMAXVAL
+#define PNM_ASSIGN1(x,v) PPM_ASSIGN(x,v,v,v)
+
+
+/* Macro for turning a format number into a type number. */
+#define PBM_FORMAT_TYPE(f) ((f) == PBM_FORMAT || (f) == RPBM_FORMAT ? PBM_TYPE : -1)
+#define PGM_FORMAT_TYPE(f) ((f) == PGM_FORMAT || (f) == RPGM_FORMAT ? PGM_TYPE : PBM_FORMAT_TYPE(f))
+#define PNM_FORMAT_TYPE(f) ((f) == PPM_FORMAT || (f) == RPPM_FORMAT ? PPM_TYPE : PGM_FORMAT_TYPE(f))
+
+
+class cPNM
+{
+ unsigned int m_nFormat;
+ unsigned int m_nColorDepth;
+ unsigned int m_nHeight;
+ unsigned int m_nWidth;
+ char* m_szError;
+protected:
+ /*****************************************************************************
+ Print error message and get out
+ @param variable list of arguments explaining error
+ @return - none*/
+ void error (char* format, ... );
+
+ /*****************************************************************************
+ Get pnm magic number (P1, P2, ...)
+ @param file - source file
+ @return - magic number*/
+ bool MagicNumber(FILE* f,unsigned int& nFormat);
+
+ /*****************************************************************************
+ Get next significant character, i.e. jump over comments
+ @param file - source file
+ @param - Next significant character*/
+ bool getchar(FILE* f,char& nNext);
+
+ /*****************************************************************************
+ Get next bit from file
+ @param file - source file
+ @param - Next bit*/
+ bool getbit(FILE* f, bit& nNext );
+
+ /*****************************************************************************
+ Get next byte from file
+ @param file - source file
+ @param - Next byte */
+ bool getrawbyte(FILE* f, unsigned char& nNext);
+
+ /*****************************************************************************
+ Get integer from file
+ @param file - source file
+ @param - Next integer */
+ //bool getint(FILE* file, unsigned int& nNext);
+ template<class T> bool getint(FILE* f, T& nNext);
+
+
+ bool readpbmrow(FILE* file, bit* bitrow);
+ bool readpgmrow(FILE* file, gray* grayrow);
+ bool readppmrow(FILE* file, pixel* pixelrow);
+
+public:
+ cPNM();
+ virtual ~cPNM();
+
+
+ bool readHeader(FILE* Infp);
+ bool readrow(FILE* file, xel* xelrow);
+ inline unsigned int GetHeight() const { return m_nHeight;}
+ inline unsigned int GetWidth() const { return m_nWidth;}
+ inline unsigned int GetColorDepth() const { return m_nColorDepth;}
+ /*****************************************************************************
+ Get an array from memory to hold 'm_nWidth' elements of size 'size'
+ @param int size - of each element
+ @return char* - Pointer to allocated array */
+ template<class T> bool allocrow(T** p)
+ {
+ *p = (T*) malloc( m_nWidth * sizeof(T) );
+ if (*p == (T*) 0 )
+ {
+ cPNM::error( "out of memory allocating a row" );
+ return false;
+ }
+ return true;
+ }
+ /*****************************************************************************
+ Free memory chunk previously assigned
+ @param char *p - pointer to memory chunk
+ @return - none */
+ template<class T> void freerow(T *p)
+ {
+ if(p != NULL)
+ free((char*)p);
+ }
+
+ const char* GetError() const { return m_szError; }
+};
+
+
+#endif /* _pnm_h */
diff --git a/libimage/xpm.c b/libimage/xpm.c
new file mode 100644
index 0000000..9572ec4
--- /dev/null
+++ b/libimage/xpm.c
@@ -0,0 +1,224 @@
+/***************************************************************************
+ * xpm.c
+ *
+ * (C) Copyright 2004 Andreas Brachold <vdr04-at-deltab.de>
+ * Created: Thu Aug 11 2004
+ *
+ ****************************************************************************/
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <vdr/tools.h>
+
+
+#include "img1.xpm"
+#include "img2.xpm"
+#include "img3.xpm"
+#include "img4.xpm"
+#include "img5.xpm"
+#include "img6.xpm"
+#include "img7.xpm"
+#include "img8.xpm"
+#include "img9.xpm"
+
+#include "error.xpm"
+#include "error_small.xpm"
+
+#include "xpm.h"
+
+cXPM gOverlay_Image_1(img1_xpm);
+cXPM gOverlay_Image_2(img2_xpm);
+cXPM gOverlay_Image_3(img3_xpm);
+cXPM gOverlay_Image_4(img4_xpm);
+cXPM gOverlay_Image_5(img5_xpm);
+cXPM gOverlay_Image_6(img6_xpm);
+cXPM gOverlay_Image_7(img7_xpm);
+cXPM gOverlay_Image_8(img8_xpm);
+cXPM gOverlay_Image_9(img9_xpm);
+
+cXPM gOverlay_Error(error_xpm);
+cXPM gOverlay_ErrorSmall(error_small_xpm);
+
+cXPM::cXPM(char* pXPM[])
+:m_Colors(NULL)
+{
+ char **p = pXPM;
+ int c;
+ if (4 != sscanf(*p, "%d %d %d %d", &m_nWidth, &m_nHeight, &m_nColors, &c)
+ || c != 1 )
+ {
+ esyslog("imageplugin: ERROR! faulty 'values' line in XPM: '%s'", *p);
+ return;
+ }
+
+ m_Colors = new colormap[m_nColors];
+
+ for (unsigned int n = 0; n < m_nColors; ++n) {
+ bool bColorNone = false;
+ const char *s = *++p;
+ if (int(strlen(s)) < c) {
+ esyslog("imageplugin: ERROR! faulty 'colors' line in XPM: '%s'", s);
+ return;
+ }
+ (m_Colors+n)->color = *s;
+ s = skipspace(s + c);
+ if (*s != 'c') {
+ esyslog("imageplugin: ERROR! unknown color key in XPM: '%c'", *s);
+ return;
+ }
+ s = skipspace(s + 1);
+ if (strcasecmp(s, "none") == 0) {
+ s = "#000000";
+ bColorNone = true;
+ }
+ if (*s != '#') {
+ esyslog("imageplugin: ERROR! unknown color code in XPM: '%c'", *s);
+ return;
+ }
+ (m_Colors+n)->rgb = strtoul(++s, NULL, 16) | (bColorNone?0xFF000000:0x00000000);
+ }
+
+ m_pXPM = p;
+ for (unsigned int l = 0; l < m_nHeight; l++) {
+ const char *s = *++p;
+ if (strlen(s) != m_nWidth * c) {
+ esyslog("imageplugin: ERROR! faulty pixel line in XPM: %d '%s'", l, s);
+ m_pXPM = NULL;
+ return;
+ }
+ }
+}
+
+cXPM::~cXPM()
+{
+ if(m_Colors)
+ delete[] m_Colors;
+}
+
+
+bool cXPM::Overlay(unsigned char* pRGBMem,unsigned int nMemWidth,unsigned int nMemHeight,unsigned int OffLeft,unsigned int OffTop) const
+{
+ if(!m_Colors || !pRGBMem || !m_pXPM)
+ return false;
+
+ char **p = m_pXPM;
+
+ for(unsigned int h = 0;
+ h < m_nHeight
+ && h+OffTop < nMemHeight;
+ ++h)
+ {
+ const char *s = *++p;
+ for(unsigned int w = 0;w < m_nWidth
+ && w+OffLeft < nMemWidth;
+ ++w,++s)
+ {
+ unsigned int rgb;
+ if(GetColor(*s,rgb))
+ {
+ unsigned char* pImageRGB = pRGBMem +
+ ((((h+OffTop)*nMemWidth)+w+OffLeft)*3);
+
+ *(pImageRGB + 0) = (unsigned char)(rgb >> 16) & 0xFF;
+ *(pImageRGB + 1) = (unsigned char)(rgb >> 8 ) & 0xFF;
+ *(pImageRGB + 2) = (unsigned char)(rgb ) & 0xFF;
+ }
+ }
+ }
+
+ return true;
+}
+
+
+
+bool cXPM::GetColor(unsigned int color,unsigned int& rgb) const
+{
+ unsigned int n = 0;
+ for(;n<m_nColors;++n)
+ {
+ if((m_Colors+n)->color == color)
+ {
+ rgb = (m_Colors+n)->rgb;
+ return (0 == (rgb & 0xFF000000)); // Check for color "none"
+ }
+ }
+ return false;
+}
+
+bool cXPM::Overlay(const char sz,unsigned char* pRGBMem,
+ unsigned int nMemWidth,unsigned int nMemHeight,
+ cXPM::ePlacement place, unsigned int nOffLeft,unsigned int nOffTop,
+ unsigned int nWidth,unsigned int nHeight)
+{
+ cXPM* p = NULL;
+ switch(sz)
+ {
+ case '1': p=&gOverlay_Image_1;break;
+ case '2': p=&gOverlay_Image_2;break;
+ case '3': p=&gOverlay_Image_3;break;
+ case '4': p=&gOverlay_Image_4;break;
+ case '5': p=&gOverlay_Image_5;break;
+ case '6': p=&gOverlay_Image_6;break;
+ case '7': p=&gOverlay_Image_7;break;
+ case '8': p=&gOverlay_Image_8;break;
+ case '9': p=&gOverlay_Image_9;break;
+ case 's': p=&gOverlay_ErrorSmall;break;
+ }
+ if(p)
+ {
+ switch(place)
+ {
+ case TopLeft:
+ return p->Overlay(pRGBMem,
+ nMemWidth,nMemHeight,
+ nOffLeft,
+ nOffTop);
+ case TopRight:
+ return p->Overlay(pRGBMem,
+ nMemWidth,nMemHeight,
+ nOffLeft+nWidth-p->m_nWidth-16,
+ nOffTop);
+ case Center:
+ return p->Overlay(pRGBMem,
+ nMemWidth,nMemHeight,
+ nOffLeft + nWidth/2 - p->m_nWidth/2,
+ nOffTop + nHeight/2 - p->m_nHeight/2);
+ case BottomLeft:
+ return p->Overlay(pRGBMem,
+ nMemWidth,nMemHeight,
+ nOffLeft,
+ nOffTop+nHeight-p->m_nHeight);
+ case BottomRight:
+ return p->Overlay(pRGBMem,
+ nMemWidth,nMemHeight,
+ nOffLeft+nWidth-p->m_nWidth-16,
+ nOffTop+nHeight-p->m_nHeight);
+ }
+ }
+
+ return false;
+}
+
+bool cXPM::Error(unsigned char* pRGBMem,unsigned int nMemWidth,unsigned int nMemHeight)
+{
+ return gOverlay_Error.Overlay(pRGBMem,
+ nMemWidth,nMemHeight,
+ (nMemWidth - gOverlay_Error.m_nWidth)/2,
+ (nMemHeight - gOverlay_Error.m_nHeight)/2);
+}
diff --git a/libimage/xpm.h b/libimage/xpm.h
new file mode 100644
index 0000000..3e9fbb5
--- /dev/null
+++ b/libimage/xpm.h
@@ -0,0 +1,65 @@
+/***************************************************************************
+ * xpm.h
+ *
+ * (C) Copyright 2004 Andreas Brachold <vdr04-at-deltab.de>
+ * Created: Thu Aug 11 2004
+ *
+ ****************************************************************************/
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+
+#ifndef _xpm_h
+#define _xpm_h
+
+class cXPM
+{
+
+ char **m_pXPM;
+ unsigned int m_nWidth;
+ unsigned int m_nHeight;
+ unsigned int m_nColors;
+
+ struct colormap
+ {
+ unsigned int color;
+ unsigned int rgb;
+ } *m_Colors;
+protected:
+ bool GetColor(unsigned int color,unsigned int& rgb) const;
+public:
+ cXPM(char* pXPM[]);
+ virtual ~cXPM();
+
+ enum ePlacement
+ {
+ TopLeft,
+ TopRight,
+ Center,
+ BottomLeft,
+ BottomRight
+ };
+
+ bool Overlay(unsigned char* pRGBMem,unsigned int nMemWidth,unsigned int nMemHeight,unsigned int OffLeft,unsigned int OffTop) const;
+ static bool Overlay(const char sz,unsigned char* pRGBMem,
+ unsigned int nMemWidth,unsigned int nMemHeight,
+ cXPM::ePlacement place, unsigned int nOffLeft,unsigned int nOffTop,
+ unsigned int nWidth,unsigned int nHeight);
+ static bool Error(unsigned char* pRGBMem,unsigned int nMemWidth,unsigned int nMemHeight);
+};
+
+#endif /* _xpm_h */