From 4b99487f8a6313c0b691805634ed31c0530d3e5a Mon Sep 17 00:00:00 2001 From: archshift Date: Sun, 26 Oct 2014 18:47:14 -0700 Subject: [PATCH] Initial commit --- .gitignore | 8 ++ Makefile | 151 +++++++++++++++++++++++++++ README.md | 8 ++ data/font.bin | Bin 0 -> 32768 bytes source/costable.h | 6 ++ source/font.c | 10 ++ source/font.h | 18 ++++ source/font1.c | 261 ++++++++++++++++++++++++++++++++++++++++++++++ source/main.c | 114 ++++++++++++++++++++ source/output.h | 9 ++ source/text.c | 64 ++++++++++++ source/text.h | 9 ++ 12 files changed, 658 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 README.md create mode 100644 data/font.bin create mode 100644 source/costable.h create mode 100644 source/font.c create mode 100644 source/font.h create mode 100644 source/font1.c create mode 100644 source/main.c create mode 100644 source/output.h create mode 100644 source/text.c create mode 100644 source/text.h diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c2d763 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +build/ +*.3dsx +*.3ds +*.elf + +.DS_Store + +.swp diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..493867e --- /dev/null +++ b/Makefile @@ -0,0 +1,151 @@ +#--------------------------------------------------------------------------------- +.SUFFIXES: +#--------------------------------------------------------------------------------- + +ifeq ($(strip $(DEVKITARM)),) +$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") +endif + +ifeq ($(strip $(CTRULIB)),) +# THIS IS TEMPORARY - in the future it should be at $(DEVKITPRO)/libctru +$(error "Please set CTRULIB in your environment. export CTRULIB=libctru") +endif + +TOPDIR ?= $(CURDIR) +include $(DEVKITARM)/3ds_rules + +#--------------------------------------------------------------------------------- +# TARGET is the name of the output +# BUILD is the directory where object files & intermediate files will be placed +# SOURCES is a list of directories containing source code +# DATA is a list of directories containing data files +# INCLUDES is a list of directories containing header files +# SPECS is the directory containing the important build and link files +#--------------------------------------------------------------------------------- +export TARGET := $(shell basename $(CURDIR)) +BUILD := build +SOURCES := source +DATA := data +INCLUDES := include + + +#--------------------------------------------------------------------------------- +# options for code generation +#--------------------------------------------------------------------------------- +ARCH := -march=armv6k -mtune=mpcore + +CFLAGS := -g -Wall -O2 -mword-relocations -save-temps \ + -fomit-frame-pointer -ffast-math -mfloat-abi=softfp \ + $(ARCH) + +CFLAGS += $(INCLUDE) -DARM11 -D_3DS + +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 + +ASFLAGS := -g $(ARCH) +LDFLAGS = -specs=3dsx.specs -g $(ARCH) \ + -Wl,-Map,$(TARGET).map + +LIBS := -lctru -lm + +#--------------------------------------------------------------------------------- +# list of directories containing libraries, this must be the top level containing +# include and lib +#--------------------------------------------------------------------------------- +LIBDIRS := $(CTRULIB) + + +#--------------------------------------------------------------------------------- +# no real need to edit anything past this point unless you need to add additional +# rules for different file extensions +#--------------------------------------------------------------------------------- +ifneq ($(BUILD),$(notdir $(CURDIR))) +#--------------------------------------------------------------------------------- + +export OUTPUT := $(CURDIR)/$(TARGET) +export TOPDIR := $(CURDIR) + +export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ + $(foreach dir,$(DATA),$(CURDIR)/$(dir)) + +export DEPSDIR := $(CURDIR)/$(BUILD) + +CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) +CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) +SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) +BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) + +#--------------------------------------------------------------------------------- +# use CXX for linking C++ projects, CC for standard C +#--------------------------------------------------------------------------------- +ifeq ($(strip $(CPPFILES)),) +#--------------------------------------------------------------------------------- + export LD := $(CC) +#--------------------------------------------------------------------------------- +else +#--------------------------------------------------------------------------------- + export LD := $(CXX) +#--------------------------------------------------------------------------------- +endif +#--------------------------------------------------------------------------------- + +export OFILES := $(addsuffix .o,$(BINFILES)) \ + $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) + +export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ + $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ + -I$(CURDIR)/$(BUILD) + +export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) + +.PHONY: $(BUILD) clean all + +#--------------------------------------------------------------------------------- +all: $(BUILD) + +$(BUILD): + @[ -d $@ ] || mkdir -p $@ + @make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile + +#--------------------------------------------------------------------------------- +clean: + @echo clean ... + @rm -fr $(BUILD) $(TARGET).3dsx $(TARGET).elf + + +#--------------------------------------------------------------------------------- +else + +DEPENDS := $(OFILES:.o=.d) + +#--------------------------------------------------------------------------------- +# main targets +#--------------------------------------------------------------------------------- +$(OUTPUT).3dsx : $(OUTPUT).elf +$(OUTPUT).elf : $(OFILES) + +#--------------------------------------------------------------------------------- +# you need a rule like this for each extension you use as binary data +#--------------------------------------------------------------------------------- +%.bin.o : %.bin +#--------------------------------------------------------------------------------- + @echo $(notdir $<) + @$(bin2o) + +# not the right way to do this +#--------------------------------------------------------------------------------- +%.vsh.o : %.vsh +#--------------------------------------------------------------------------------- + @echo $(notdir $<) + @python $(AEMSTRO)/aemstro_as.py $< ../$(notdir $<).shbin + @bin2s ../$(notdir $<).shbin | arm-none-eabi-as -o $@ + @echo "extern const u8" `(echo $(notdir $<).shbin | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(notdir $<).shbin | tr . _)`.h + @echo "extern const u8" `(echo $(notdir $<).shbin | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(notdir $<).shbin | tr . _)`.h + @echo "extern const u32" `(echo $(notdir $<).shbin | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(notdir $<).shbin | tr . _)`.h + @rm ../$(notdir $<).shbin + +-include $(DEPENDS) + +#--------------------------------------------------------------------------------------- +endif +#--------------------------------------------------------------------------------------- diff --git a/README.md b/README.md new file mode 100644 index 0000000..31d8e04 --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +fs-test +======= + +A really shitty homebrew test for the SDMC filesystem. + +Adapted from smea's ftpony. + +Press A to run, press B to close. diff --git a/data/font.bin b/data/font.bin new file mode 100644 index 0000000000000000000000000000000000000000..e876dcf1a91d2c90dc1cbd90a14d188dd5aeaa24 GIT binary patch literal 32768 zcmeI1fp#4?4ntG_|3{Y>ASFr~&r92!o^)5U@smUnAP9|9$NS^QuX(<{zC`r(N9mS;F#TvVauv3vMMqiG^Db)H`@J#eSSwzuvX6OpgCzb~H+yJR?^WWUb)m+I z15@!usXy3^0~wtpX-f&G3iSm?u^w+}ExhI;r!NKh2pqn7LAuZMQ9L#-@H#4gC`_t7 zNoT!LijIi!p)c|T0;`V(jcvtUQWz5e7h%fMQt$v$CF5hKw;%u(kT~J(%dAV>R0CS4 zzkLaio$Q*^Isd}dX z9UU{()K8u6QMX<+C4rrAov#PoK7mvCXPax}ivsOif9{p1w=j>l=9N~o~`6XQ+ zFlX8YQ8jR@ndEs~U#p2l!KBI$oa&*A?xsh8q2gg{KJ&OP^@}Yi!0V4_KHy0YyoAgT zb4419`j;WIaNB|7L54UGE1SK3*Utk0MESh_K94fujgR2WCW0C-Th&iVYAAYMr4Ow< zXqC3&9ewD~ct8x?RAA0Qn{yWj^N%J`qJ)hiL*c;vM5VYFl+Z1Rv$UwsgdFBK4;IO^h& zY)VrjXkS!HLhh zi6b9R@zzSnL(erDgc+jqo%tB0ih58H2(3bkYW#GHw4am_hw57^5p=6u`VCY_V6b(E z7Ul9$CwzXGCc&{}W8JNZn2bD6tfiyYj0+HXuY(5+Ps0fyDnm1$b=iLzK={dHf?<~N z3`$)Mo?TjB*AXD6dQ~Tp(lw{i(xSBWCzLikUilvw(EVK0NmwxQ1cNz`z-OU3D$W zqd#gX&o#C-s;#(3oIf(9-->~Vphi42c7F;5_R4;Kx%ZGSyl4bZee|oor9%SakgNKd z?3@1E{BnkNZd8pmfyZe2mp&qrB%G*;#|SyUbfOz0wC3DHhvFJw7;iFWskv$;L_8k4 z4jAkO9}-fO>JkSJ3}ZD{d^VJDI;%hKE>6oAX>A({gLmIfy^{Ys(kKwmCbRin|m90Ch)l5;zB}7@|+EiUg2sj-dNiO z3LfXtcl5`DaiLrcK>8W4##jJ@mN{?3L1G=ok3Mc}`H%gh03LPps{SZZL!j=iRc)Aq z4qn}ti09K9AFSCJeiN})JW8TSg1wj=C^h;*a}(ft_sRZ{NUYcA`BMmsb*rIx5-%}M zTc7F%4i(m7JZ+>gJ{9L^T{>5O^ov~SG%genOI)oHRJ=TJ&$Le*mCyciOZTz%MZomm z8qpWK?4N7in*=ETO@B1V4lfXW{g7PEk-W2nvTq;2JgAJvhxq&!kO>MX6CnD|{??=9 z&yY|v+GX47zQt$@9(dxP-Cf;(-rDP*^$)pwyDa~h9|e2Ar}LY>r+Q*zMi(r{abUCM(~+g5ANdFadES)aFyZ;ISG|fxUjgx;h+~d`G?MMn4_9p1+lU z>9@^?9{xe|Hjiqu!1`wWW(UVo{xFU`)mI7`$urQ!lNH=bIaSn(eBAE>W3wu7yQV0 zLoo#vR{3$BuNd__t$z2jp&wqy6EA_qC&XY^l$IkceY3sn7|GZ?>z@SD-w0hl2|wml zFza`{5BS}mxc#YTzrf?Zgr4)C1FPd^!K~l)^g{OJxBEZzQd2nbz2AS!ntylet>58i zu(kHS-$uA3Yo6vW`L}-LyI`GLL%_?opY;qs4!u;b`28%#;pf?4>$e>Dc1$eE#g`V0 zBg65Gz_t;%<#m47zt6Muf8y&cKk@J5P~YU_`#R@&>K6jXyr23lc^NKl7 zJ@UY}3?%YC;Pwr!e7m15jkU{ta9-%BczMkK>euQ=05(7Rk>)C>mb;h-KUV$bFSzex zUblwpoR9t9?%({&`!Sla39lKjV)Wu`oHzV#_dcI*XTYuhMc=`<`I!VIM{D$K4Hmge z9fufCPbGG}XMQO!f`TXCI6m;V%cE>V^~NuPwSMite0#aD@%bCD_n%zs^!m2<`P94C-_vjA058LQJx_5T@=m`I zoRl|m9k>o$2d)Fxf$P9^;5u*}xDH$gt^@xA4!r+sa{Fz>^StjA`WNRjFrp{+h%ABS z04ss-f8FtI-(Q#b4f_9+Ve|{mMj$_@q5XHCs@n3zmYO}UUocL-{C(31ELb<_znwbi zAF}PYpG80UPd!A`N#xJ@QQ-7A=KD4YA|HyDvmn(V@q^%>p3m=?{>$I!N`q>yHI7?k zOQU~=Vw@iEbTgm7FK+eGuiZ)J2Vk=&r05sgGcWhXG5wwNv0EnE^@y;;;p=+bZd4rl z9`o~!O1T?;&oAe_|9KA5no#qsdiQ!1j{afCa^l>Q59#CjmvZb~2ywdwVo&>lAs0`{ zf4^D+AGChPWIAjbg-Y=gP4jdIfKI6%4wM@5}x=W{c5M@|xa%<^G#N z_NNQz?mYUj`zMFyKr(1KcK_|i^pA5p$)4l91_pO-Ub9lO-FKf*`8NJzee+8%NLRqy z)<)Rz`@E`d6I0JCIVk0BJCcuz%J2LSXY3vX&~^W*FD_Qg?=dlsnuA|_FZ^3x4O&l+ zH}S`}|Ni}dz93z`M%V-W{4oE6KVw{7*W#DwnUokZPx=N~{N~V0HoT9Mf!YuCykFnn z|3)ajX7AyD*A{aK-rg79h;#lnveZuf`hIAf>fg?8Fa^2a%GcPW=s2%|?mqhuS-s(- z#;0*)T%O74^9=aB=I80aC;VId6CJTZxfLka@=kxKA7tK$BV&C}DETt0MWGQm3O0r< zpU2mER)+ZNZC0bGy&N33^AI*R3wlKF=0D;9e`9p1@pdf7E!}h8FXd%ev3I&dAh4qOMW1J{A;z;)m{a2>b~TnDZL*MaN6b>KR19k>o$ p2d)Fxf$P9^;5u*}xDH$gt^?PB>%ev3I&dAh4qOMW1OEvJ{sh2-F +#include "font.h" + +font_s fontDefault = +{ + font1Data, + font1Desc, + 16, + (u8[]){0xFF,0xFF,0xFF} +}; diff --git a/source/font.h b/source/font.h new file mode 100644 index 0000000..59be6b1 --- /dev/null +++ b/source/font.h @@ -0,0 +1,18 @@ +#ifndef FONT_H +#define FONT_H + +typedef struct {char c; int x, y, w, h, xo, yo, xa; u8* data;}charDesc_s; +typedef struct +{ + u8* data; + charDesc_s* desc; + u8 height; + u8 color[3]; +}font_s; + +extern u8 font1Data[]; +extern charDesc_s font1Desc[]; + +extern font_s fontDefault; + +#endif diff --git a/source/font1.c b/source/font1.c new file mode 100644 index 0000000..5aaac30 --- /dev/null +++ b/source/font1.c @@ -0,0 +1,261 @@ +#include <3ds.h> +#include "font.h" +charDesc_s font1Desc[] = { + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){' ', 240, 8, 5, 3, -2, 13, 3, &font1Data[0]}, + (charDesc_s){'!', 63, 0, 5, 11, -1, 2, 3, &font1Data[15]}, + (charDesc_s){'"', 137, 9, 6, 5, -1, 2, 4, &font1Data[70]}, + (charDesc_s){'#', 30, 53, 9, 10, -1, 2, 7, &font1Data[100]}, + (charDesc_s){'$', 246, 0, 8, 13, -1, 1, 6, &font1Data[190]}, + (charDesc_s){'%', 192, 15, 12, 11, -1, 2, 10, &font1Data[294]}, + (charDesc_s){'&', 48, 29, 11, 11, -1, 2, 8, &font1Data[426]}, + (charDesc_s){'\'', 144, 9, 5, 5, -1, 2, 3, &font1Data[547]}, + (charDesc_s){'(', 78, 15, 6, 13, -1, 2, 4, &font1Data[572]}, + (charDesc_s){')', 99, 15, 5, 13, -1, 2, 4, &font1Data[650]}, + (charDesc_s){'*', 103, 9, 7, 6, -1, 2, 5, &font1Data[715]}, + (charDesc_s){'+', 28, 12, 8, 7, 0, 5, 8, &font1Data[757]}, + (charDesc_s){',', 251, 39, 4, 5, -1, 10, 3, &font1Data[813]}, + (charDesc_s){'-', 214, 9, 7, 3, -1, 7, 5, &font1Data[833]}, + (charDesc_s){'.', 234, 9, 5, 3, -1, 10, 3, &font1Data[854]}, + (charDesc_s){'/', 146, 15, 8, 12, -2, 2, 5, &font1Data[869]}, + (charDesc_s){'0', 174, 51, 8, 11, -1, 2, 6, &font1Data[965]}, + (charDesc_s){'1', 56, 0, 6, 11, -1, 2, 5, &font1Data[1053]}, + (charDesc_s){'2', 183, 51, 8, 11, -1, 2, 6, &font1Data[1119]}, + (charDesc_s){'3', 192, 51, 8, 11, -1, 2, 6, &font1Data[1207]}, + (charDesc_s){'4', 189, 27, 9, 11, -1, 2, 7, &font1Data[1295]}, + (charDesc_s){'5', 201, 51, 8, 11, -1, 2, 6, &font1Data[1394]}, + (charDesc_s){'6', 210, 51, 8, 11, -1, 2, 6, &font1Data[1482]}, + (charDesc_s){'7', 206, 39, 8, 11, -1, 2, 6, &font1Data[1570]}, + (charDesc_s){'8', 219, 51, 8, 11, -1, 2, 6, &font1Data[1658]}, + (charDesc_s){'9', 228, 51, 8, 11, -1, 2, 6, &font1Data[1746]}, + (charDesc_s){':', 232, 0, 5, 8, -1, 5, 3, &font1Data[1834]}, + (charDesc_s){';', 83, 53, 5, 10, -1, 5, 3, &font1Data[1874]}, + (charDesc_s){'<', 10, 12, 8, 7, 0, 5, 8, &font1Data[1924]}, + (charDesc_s){'=', 111, 9, 8, 5, 0, 6, 8, &font1Data[1980]}, + (charDesc_s){'>', 19, 12, 8, 7, 0, 5, 8, &font1Data[2020]}, + (charDesc_s){'?', 26, 0, 7, 11, -1, 2, 5, &font1Data[2076]}, + (charDesc_s){'@', 111, 15, 13, 12, -1, 2, 11, &font1Data[2153]}, + (charDesc_s){'A', 83, 29, 10, 11, -1, 2, 8, &font1Data[2309]}, + (charDesc_s){'B', 50, 41, 9, 11, -1, 2, 7, &font1Data[2419]}, + (charDesc_s){'C', 138, 28, 10, 11, -1, 2, 7, &font1Data[2518]}, + (charDesc_s){'D', 127, 28, 10, 11, -1, 2, 8, &font1Data[2628]}, + (charDesc_s){'E', 237, 51, 8, 11, -1, 2, 6, &font1Data[2738]}, + (charDesc_s){'F', 246, 51, 8, 11, -1, 2, 6, &font1Data[2826]}, + (charDesc_s){'G', 116, 28, 10, 11, -1, 2, 8, &font1Data[2914]}, + (charDesc_s){'H', 72, 29, 10, 11, -1, 2, 8, &font1Data[3024]}, + (charDesc_s){'I', 81, 0, 5, 11, -1, 2, 3, &font1Data[3134]}, + (charDesc_s){'J', 34, 0, 7, 11, -2, 2, 4, &font1Data[3189]}, + (charDesc_s){'K', 150, 40, 9, 11, -1, 2, 7, &font1Data[3266]}, + (charDesc_s){'L', 9, 0, 8, 11, -1, 2, 6, &font1Data[3365]}, + (charDesc_s){'M', 218, 15, 12, 11, -1, 2, 10, &font1Data[3453]}, + (charDesc_s){'N', 24, 29, 11, 11, -1, 2, 9, &font1Data[3585]}, + (charDesc_s){'O', 60, 29, 11, 11, -1, 2, 9, &font1Data[3706]}, + (charDesc_s){'P', 40, 41, 9, 11, -1, 2, 7, &font1Data[3827]}, + (charDesc_s){'Q', 125, 15, 11, 12, -1, 2, 9, &font1Data[3926]}, + (charDesc_s){'R', 209, 27, 9, 11, -1, 2, 7, &font1Data[4058]}, + (charDesc_s){'S', 170, 39, 8, 11, -1, 2, 6, &font1Data[4157]}, + (charDesc_s){'T', 239, 27, 9, 11, -1, 2, 6, &font1Data[4245]}, + (charDesc_s){'U', 94, 29, 10, 11, -1, 2, 8, &font1Data[4344]}, + (charDesc_s){'V', 105, 29, 10, 11, -1, 2, 7, &font1Data[4454]}, + (charDesc_s){'W', 164, 15, 13, 11, -1, 2, 11, &font1Data[4564]}, + (charDesc_s){'X', 30, 41, 9, 11, -1, 2, 7, &font1Data[4707]}, + (charDesc_s){'Y', 149, 28, 9, 11, -1, 2, 7, &font1Data[4806]}, + (charDesc_s){'Z', 159, 28, 9, 11, -1, 2, 7, &font1Data[4905]}, + (charDesc_s){'[', 85, 15, 6, 13, -1, 2, 4, &font1Data[5004]}, + (charDesc_s){'\\', 155, 15, 8, 12, -2, 2, 4, &font1Data[5082]}, + (charDesc_s){']', 105, 15, 5, 13, -1, 2, 4, &font1Data[5178]}, + (charDesc_s){'^', 46, 12, 8, 7, 0, 2, 8, &font1Data[5243]}, + (charDesc_s){'_', 188, 9, 9, 3, -2, 12, 5, &font1Data[5299]}, + (charDesc_s){'`', 172, 9, 5, 4, -1, 2, 3, &font1Data[5326]}, + (charDesc_s){'a', 162, 0, 8, 8, -1, 5, 6, &font1Data[5346]}, + (charDesc_s){'b', 179, 27, 9, 11, -1, 2, 7, &font1Data[5410]}, + (charDesc_s){'c', 180, 0, 8, 8, -1, 5, 5, &font1Data[5509]}, + (charDesc_s){'d', 160, 40, 9, 11, -1, 2, 7, &font1Data[5573]}, + (charDesc_s){'e', 189, 0, 8, 8, -1, 5, 6, &font1Data[5672]}, + (charDesc_s){'f', 179, 39, 8, 11, -2, 2, 4, &font1Data[5736]}, + (charDesc_s){'g', 219, 27, 9, 11, -1, 5, 7, &font1Data[5824]}, + (charDesc_s){'h', 229, 27, 9, 11, -1, 2, 7, &font1Data[5923]}, + (charDesc_s){'i', 69, 0, 5, 11, -1, 2, 3, &font1Data[6022]}, + (charDesc_s){'j', 204, 0, 7, 14, -3, 2, 3, &font1Data[6077]}, + (charDesc_s){'k', 188, 39, 8, 11, -1, 2, 6, &font1Data[6175]}, + (charDesc_s){'l', 75, 0, 5, 11, -1, 2, 3, &font1Data[6263]}, + (charDesc_s){'m', 87, 0, 12, 8, -1, 5, 10, &font1Data[6318]}, + (charDesc_s){'n', 122, 0, 9, 8, -1, 5, 7, &font1Data[6414]}, + (charDesc_s){'o', 132, 0, 9, 8, -1, 5, 7, &font1Data[6486]}, + (charDesc_s){'p', 60, 41, 9, 11, -1, 5, 7, &font1Data[6558]}, + (charDesc_s){'q', 199, 27, 9, 11, -1, 5, 7, &font1Data[6657]}, + (charDesc_s){'r', 216, 0, 7, 8, -1, 5, 4, &font1Data[6756]}, + (charDesc_s){'s', 224, 0, 7, 8, -1, 5, 5, &font1Data[6812]}, + (charDesc_s){'t', 67, 53, 7, 10, -2, 3, 4, &font1Data[6868]}, + (charDesc_s){'u', 142, 0, 9, 8, -1, 5, 7, &font1Data[6938]}, + (charDesc_s){'v', 171, 0, 8, 8, -1, 5, 6, &font1Data[7010]}, + (charDesc_s){'w', 100, 0, 11, 8, -1, 5, 8, &font1Data[7074]}, + (charDesc_s){'x', 198, 0, 8, 8, -1, 5, 5, &font1Data[7162]}, + (charDesc_s){'y', 197, 39, 8, 11, -1, 5, 6, &font1Data[7226]}, + (charDesc_s){'z', 207, 0, 8, 8, -1, 5, 5, &font1Data[7314]}, + (charDesc_s){'{', 92, 15, 6, 13, -1, 2, 4, &font1Data[7378]}, + (charDesc_s){'|', 234, 0, 5, 14, -1, 2, 3, &font1Data[7456]}, + (charDesc_s){'}', 71, 15, 6, 13, -1, 2, 4, &font1Data[7526]}, + (charDesc_s){'~', 156, 9, 8, 4, 0, 6, 8, &font1Data[7604]}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){' ', 222, 9, 5, 3, -2, 13, 3, &font1Data[7636]}, + (charDesc_s){'¡', 89, 53, 5, 10, -1, 5, 3, &font1Data[7651]}, + (charDesc_s){'¢', 40, 53, 8, 10, -1, 3, 6, &font1Data[7701]}, + (charDesc_s){'£', 169, 27, 9, 11, -1, 2, 6, &font1Data[7781]}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, + (charDesc_s){0, 0, 0, 0, 0, 0, 0, 0, NULL}, +}; +u8 font1Data[] = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x0, 0x0, 0xce, 0x0, 0x0, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0xb5, 0x0, 0x0, 0x5e, 0x0, 0x0, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x43, 0x43, 0x0, 0x0, 0xa7, 0xa7, 0xa7, 0x0, 0x0, 0xa7, 0xa7, 0xa7, 0x0, 0x0, 0x43, 0x43, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb3, 0x0, 0x0, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x80, 0x5e, 0xff, 0x13, 0x13, 0xff, 0x0, 0x0, 0x0, 0x0, 0x43, 0x5e, 0xff, 0x82, 0x9c, 0xff, 0x52, 0x43, 0x0, 0x0, 0x52, 0x43, 0xff, 0x13, 0x13, 0xff, 0x43, 0x80, 0x0, 0x0, 0x43, 0x80, 0xff, 0x9c, 0x9b, 0xff, 0x5e, 0x22, 0x0, 0x0, 0x0, 0x0, 0xff, 0x13, 0x22, 0xff, 0x5e, 0x9b, 0x0, 0x0, 0x0, 0x0, 0x5e, 0x0, 0x0, 0xb3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x0, 0x0, 0x0, 0x0, 0x13, 0x43, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf3, 0x0, 0x0, 0x0, 0x22, 0xce, 0xa7, 0xb5, 0x5e, 0x0, 0x0, 0x0, 0x43, 0xff, 0x43, 0x43, 0x43, 0xe6, 0x9c, 0x43, 0x56, 0xff, 0x43, 0x0, 0x0, 0x52, 0xff, 0x65, 0x52, 0xa9, 0xe6, 0x52, 0x52, 0x52, 0xff, 0x52, 0x0, 0x0, 0x0, 0x5e, 0xb5, 0xa7, 0xce, 0x22, 0x0, 0x0, 0x0, 0xb3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x43, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x80, 0x80, 0x13, 0x0, 0x0, 0x22, 0x0, 0x0, 0x0, 0x0, 0xe6, 0x43, 0x43, 0xce, 0x0, 0x0, 0xb5, 0x5e, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0xff, 0x0, 0x0, 0x13, 0x8c, 0x9b, 0x43, 0x0, 0xce, 0x5e, 0x5e, 0xce, 0x0, 0x0, 0x0, 0x0, 0x22, 0xa7, 0x80, 0x35, 0x5e, 0x5e, 0x13, 0x0, 0x0, 0x43, 0x9b, 0x9b, 0x43, 0x43, 0x9b, 0x5e, 0x13, 0x0, 0x0, 0x0, 0xf3, 0x22, 0x22, 0xf3, 0x0, 0x0, 0x5e, 0x9c, 0x43, 0x0, 0x0, 0xff, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x13, 0xa7, 0x0, 0x0, 0xb3, 0x80, 0x80, 0xb3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x5e, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0xc2, 0x8c, 0xc2, 0x13, 0x13, 0x5e, 0x43, 0x0, 0x0, 0x0, 0xff, 0x13, 0x0, 0x43, 0xce, 0xb5, 0x8c, 0xa7, 0x8c, 0x0, 0x0, 0xff, 0x0, 0x0, 0x5e, 0xe6, 0x44, 0x0, 0x0, 0xff, 0x0, 0x0, 0xff, 0x0, 0x5e, 0xe6, 0x22, 0xda, 0x22, 0x43, 0xff, 0x0, 0x0, 0xb3, 0x5e, 0xe6, 0x22, 0x0, 0x43, 0x9b, 0xc2, 0x5e, 0x0, 0x0, 0x5e, 0xce, 0x9c, 0x43, 0x22, 0x0, 0x0, 0x13, 0x0, 0x0, 0x0, 0xf3, 0x13, 0x43, 0x80, 0x9b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x13, 0x13, 0x0, 0x0, 0xb5, 0xb5, 0xb5, 0x0, 0x0, 0x22, 0x22, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x43, 0x43, 0x22, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5e, 0x9b, 0xb5, 0xa7, 0x80, 0x9b, 0xb5, 0x9b, 0x5e, 0x0, 0x0, 0x0, 0xa7, 0x8c, 0x22, 0x13, 0x0, 0x0, 0x0, 0x13, 0x22, 0x8c, 0xa7, 0x0, 0x0, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa7, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0xa7, 0x0, 0x0, 0x43, 0x9c, 0x80, 0x43, 0x22, 0x22, 0x22, 0x43, 0x80, 0x9c, 0x43, 0x0, 0x0, 0x0, 0x13, 0x43, 0x80, 0x9b, 0x9b, 0x9b, 0x80, 0x43, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x0, 0x8c, 0x0, 0x0, 0x0, 0xb5, 0x43, 0xda, 0x13, 0x0, 0x0, 0x26, 0xe7, 0x9c, 0x9c, 0x0, 0x0, 0x9c, 0x43, 0xce, 0x13, 0x0, 0x0, 0x13, 0x0, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x5e, 0x5e, 0xff, 0x5e, 0x5e, 0x0, 0x0, 0x5e, 0x5e, 0xff, 0x5e, 0x5e, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9b, 0x5e, 0x43, 0x0, 0x0, 0x22, 0x5e, 0xa7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x0, 0x0, 0xf3, 0x0, 0x0, 0xff, 0x0, 0x0, 0xe6, 0x0, 0x0, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5e, 0x0, 0x0, 0xce, 0x0, 0x0, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9b, 0x80, 0x43, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x80, 0xb5, 0x5e, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x5e, 0xb5, 0x80, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x43, 0xa7, 0x9b, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x8c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x5e, 0x80, 0x80, 0x8c, 0x5e, 0x22, 0x0, 0x0, 0x0, 0x8c, 0xc2, 0x5e, 0x43, 0x43, 0x5e, 0x8c, 0xce, 0x5e, 0x0, 0x0, 0xff, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0xff, 0x0, 0x0, 0xf3, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0xff, 0x0, 0x0, 0x43, 0xce, 0x8c, 0x5e, 0x5e, 0x5e, 0x8c, 0xce, 0x5e, 0x0, 0x0, 0x0, 0x22, 0x5e, 0x8c, 0x8c, 0x8c, 0x5e, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6, 0x22, 0x0, 0x0, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x65, 0xe6, 0x0, 0x0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x8c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0x5e, 0x22, 0x0, 0x0, 0x0, 0x0, 0x43, 0x0, 0x0, 0x0, 0xff, 0x5e, 0xce, 0x22, 0x0, 0x0, 0x0, 0x52, 0xb3, 0x0, 0x0, 0xff, 0x0, 0x22, 0xda, 0x13, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0xff, 0x0, 0x0, 0x43, 0xc2, 0x13, 0x0, 0x13, 0xff, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x43, 0x9c, 0xa7, 0xb5, 0x5e, 0x0, 0x0, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x13, 0x43, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x8c, 0x0, 0x0, 0x0, 0xe6, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0xf3, 0x22, 0x0, 0x43, 0xce, 0x8c, 0x22, 0x43, 0xf3, 0x0, 0x0, 0x43, 0xce, 0xa7, 0xc2, 0x13, 0x8c, 0xb5, 0xc2, 0x43, 0x0, 0x0, 0x0, 0x22, 0x43, 0x13, 0x0, 0x0, 0x13, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb3, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x80, 0x80, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x43, 0xb5, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x22, 0x80, 0x80, 0x22, 0x0, 0x0, 0x9b, 0x9b, 0xff, 0x9b, 0x9b, 0x9b, 0x9b, 0xce, 0xce, 0x0, 0x0, 0x22, 0x22, 0xff, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0x0, 0x0, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x0, 0x0, 0x0, 0x13, 0x13, 0x13, 0x0, 0x0, 0x0, 0x0, 0xf3, 0x0, 0x0, 0x0, 0xce, 0x9c, 0xb5, 0x9b, 0xb3, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0xff, 0x13, 0x22, 0x22, 0xff, 0x0, 0x0, 0xf3, 0x22, 0x0, 0x22, 0xff, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x43, 0xce, 0x80, 0xce, 0x5e, 0x0, 0x0, 0x0, 0xce, 0x0, 0x0, 0x0, 0x22, 0x43, 0x22, 0x0, 0x0, 0x0, 0x0, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x5e, 0x5e, 0x5e, 0x5e, 0x22, 0x0, 0x0, 0x0, 0x0, 0x5e, 0xce, 0x8c, 0x8c, 0xe6, 0xa9, 0x9b, 0xb3, 0x0, 0x0, 0x0, 0xff, 0x22, 0x0, 0x0, 0x22, 0xe6, 0x0, 0x5e, 0xb3, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0xff, 0x0, 0x0, 0x8c, 0xa7, 0x5e, 0x5e, 0xb3, 0xb3, 0x0, 0x0, 0xe6, 0x0, 0x0, 0x0, 0x43, 0x8c, 0x8c, 0x5e, 0x0, 0x0, 0x0, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0x0, 0x0, 0x43, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x80, 0xb5, 0x9b, 0x5e, 0x22, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x13, 0x22, 0x5e, 0xb5, 0x80, 0x22, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x43, 0x9b, 0x80, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0xb3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5e, 0x8c, 0x43, 0x0, 0x13, 0x43, 0x22, 0x0, 0x0, 0x0, 0xb3, 0xb3, 0x5e, 0xc2, 0x43, 0xb5, 0x80, 0xb5, 0x5e, 0x0, 0x0, 0xff, 0x0, 0x0, 0x13, 0xf3, 0x22, 0x0, 0x13, 0xff, 0x0, 0x0, 0xff, 0x0, 0x0, 0x13, 0xf3, 0x22, 0x0, 0x22, 0xff, 0x0, 0x0, 0xb3, 0xb3, 0x5e, 0xc2, 0x43, 0xb5, 0x80, 0xce, 0x5e, 0x0, 0x0, 0x0, 0x5e, 0x8c, 0x43, 0x0, 0x13, 0x43, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x0, 0x0, 0x0, 0x43, 0x8c, 0x8c, 0x43, 0x0, 0x0, 0x0, 0xe6, 0x0, 0x0, 0x8c, 0xc2, 0x5e, 0x5e, 0xc2, 0x8c, 0x0, 0x0, 0xff, 0x0, 0x0, 0xff, 0x13, 0x0, 0x0, 0x13, 0xff, 0x0, 0x0, 0xce, 0x5e, 0x0, 0xf3, 0x13, 0x0, 0x0, 0x22, 0xff, 0x0, 0x0, 0x13, 0xb3, 0xa7, 0x9c, 0xce, 0x8c, 0x8c, 0xce, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x43, 0x5e, 0x5e, 0x5e, 0x5e, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x5e, 0x0, 0x0, 0xce, 0x0, 0x0, 0x0, 0x0, 0xce, 0x0, 0x0, 0x13, 0x0, 0x0, 0x0, 0x0, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9b, 0x5e, 0x43, 0x0, 0x0, 0x0, 0x0, 0x43, 0x0, 0x0, 0x22, 0x5e, 0xa7, 0x0, 0x0, 0x0, 0x0, 0xda, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0xf3, 0x13, 0x0, 0x0, 0x0, 0x0, 0xce, 0x43, 0xce, 0x0, 0x0, 0x0, 0x22, 0xe6, 0x0, 0xf3, 0x13, 0x0, 0x0, 0xe6, 0x22, 0x0, 0x43, 0xce, 0x0, 0x0, 0x8c, 0x0, 0x0, 0x0, 0x8c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb3, 0x0, 0xb3, 0x0, 0x0, 0xff, 0x0, 0xff, 0x0, 0x0, 0xff, 0x0, 0xff, 0x0, 0x0, 0xff, 0x0, 0xff, 0x0, 0x0, 0xff, 0x0, 0xff, 0x0, 0x0, 0xb3, 0x0, 0xb3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0x0, 0x0, 0x0, 0x8c, 0x0, 0x0, 0xe6, 0x22, 0x0, 0x43, 0xce, 0x0, 0x0, 0x22, 0xe6, 0x0, 0xf3, 0x13, 0x0, 0x0, 0x0, 0xce, 0x43, 0xce, 0x0, 0x0, 0x0, 0x0, 0x13, 0xf3, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x0, 0x0, 0x43, 0x0, 0x0, 0x22, 0x13, 0x0, 0x0, 0x0, 0xf3, 0x0, 0x0, 0xda, 0x0, 0x0, 0x9b, 0x9c, 0x43, 0x0, 0x0, 0xff, 0x0, 0x0, 0x22, 0x0, 0x0, 0x0, 0x13, 0xc2, 0x43, 0x43, 0xf3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x80, 0xa7, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x22, 0x22, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x80, 0x9c, 0x9b, 0x9b, 0x9c, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x13, 0xc2, 0x43, 0x13, 0x0, 0x0, 0x13, 0x5e, 0xb3, 0x0, 0x0, 0x0, 0xce, 0x43, 0x22, 0x80, 0x9b, 0x80, 0x5e, 0x0, 0x8c, 0x8c, 0x0, 0x0, 0xff, 0x0, 0xe6, 0x43, 0x22, 0x43, 0x8c, 0x8c, 0x0, 0xff, 0x0, 0x0, 0xff, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0xff, 0x0, 0x0, 0xff, 0x0, 0x72, 0xb3, 0x5e, 0x43, 0x43, 0xf3, 0x0, 0xff, 0x0, 0x0, 0xff, 0x0, 0xce, 0x8c, 0x8c, 0x80, 0xa7, 0xb5, 0x0, 0xff, 0x0, 0x0, 0x5e, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x13, 0xb3, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x5e, 0x9b, 0x5e, 0x5e, 0x5e, 0x9b, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x5e, 0x8c, 0x5e, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb3, 0x43, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5e, 0xc2, 0xce, 0x8c, 0x43, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0xff, 0x8c, 0xc2, 0xc2, 0x8c, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x13, 0x43, 0x8c, 0xb6, 0xb3, 0x0, 0x0, 0x0, 0x0, 0xff, 0x13, 0x43, 0x5e, 0xa7, 0xb5, 0x8c, 0x0, 0x0, 0x0, 0x43, 0xff, 0xc2, 0xc2, 0x8c, 0x43, 0x13, 0x0, 0x0, 0x0, 0xb3, 0xc2, 0x8c, 0x43, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5e, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x0, 0x0, 0xce, 0xb5, 0xb5, 0xb5, 0xce, 0xb5, 0xb5, 0xb5, 0xce, 0x0, 0x0, 0xff, 0x22, 0x22, 0x22, 0xff, 0x22, 0x22, 0x22, 0xff, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0xff, 0x22, 0x0, 0x22, 0xe6, 0x5e, 0x13, 0x43, 0xf3, 0x0, 0x0, 0x5e, 0xce, 0x80, 0xce, 0x22, 0x8c, 0x9c, 0xc2, 0x43, 0x0, 0x0, 0x0, 0x22, 0x43, 0x22, 0x0, 0x0, 0x13, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x5e, 0x8c, 0x5e, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0xc2, 0x5e, 0x5e, 0x8c, 0xb5, 0x8c, 0x0, 0x0, 0x0, 0x8c, 0xb3, 0x13, 0x0, 0x0, 0x0, 0x13, 0xce, 0x43, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0xf3, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0xce, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xce, 0x0, 0x0, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0xe6, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xe6, 0x0, 0x0, 0xff, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0xff, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0xff, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x5e, 0xce, 0x13, 0x0, 0x0, 0x0, 0x0, 0xb3, 0x8c, 0x0, 0x0, 0x0, 0x8c, 0xb5, 0x8c, 0x5e, 0x5e, 0xa7, 0xb3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x5e, 0x5e, 0x5e, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x0, 0x0, 0xce, 0x9c, 0x9c, 0x9c, 0xce, 0x9c, 0x9c, 0x9c, 0xce, 0x0, 0x0, 0xff, 0x13, 0x13, 0x13, 0xff, 0x13, 0x13, 0x13, 0xff, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0xe6, 0x0, 0x0, 0x0, 0xf3, 0x0, 0x0, 0x5e, 0x0, 0x0, 0x0, 0x22, 0x0, 0x0, 0x0, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x0, 0x0, 0xb5, 0xb5, 0xb5, 0xb5, 0xce, 0xb5, 0xb5, 0xb5, 0xce, 0x0, 0x0, 0x22, 0x22, 0x22, 0x22, 0xff, 0x22, 0x22, 0x22, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6, 0x0, 0x0, 0x0, 0xf3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x0, 0x0, 0x0, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x5e, 0x5e, 0x5e, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0xb5, 0x8c, 0x5e, 0x8c, 0xb5, 0x5e, 0x0, 0x0, 0x0, 0x8c, 0xb3, 0x13, 0x0, 0x0, 0x0, 0x13, 0xce, 0x43, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0xf3, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x8c, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x8c, 0xa7, 0xa7, 0xa7, 0xf3, 0x0, 0x0, 0x0, 0xe6, 0x0, 0x0, 0x0, 0x43, 0x43, 0x43, 0x43, 0x0, 0x0, 0x0, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0xb5, 0xb5, 0xb5, 0xb5, 0xe6, 0xb5, 0xb5, 0xb5, 0xb5, 0x0, 0x0, 0x13, 0x13, 0x13, 0x13, 0xff, 0x13, 0x13, 0x13, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x13, 0x13, 0x13, 0xff, 0x13, 0x13, 0x13, 0x13, 0x0, 0x0, 0xb5, 0xb5, 0xb5, 0xb5, 0xe6, 0xb5, 0xb5, 0xb5, 0xb5, 0x0, 0x0, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x0, 0x0, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x0, 0x0, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xce, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf3, 0x43, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0xc2, 0xb5, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x0, 0x0, 0x0, 0x13, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x0, 0x0, 0xb5, 0xb5, 0xb5, 0xb5, 0xce, 0xb5, 0xb5, 0xb5, 0xb5, 0x0, 0x0, 0x22, 0x22, 0x22, 0x80, 0xe6, 0xa9, 0x22, 0x22, 0x22, 0x0, 0x0, 0x0, 0x0, 0x8c, 0xb3, 0x22, 0x8c, 0xb3, 0x13, 0x0, 0x0, 0x0, 0x13, 0xb3, 0x8c, 0x0, 0x0, 0x0, 0x5e, 0xc2, 0x22, 0x0, 0x0, 0xce, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0xda, 0x0, 0x0, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x0, 0x0, 0xce, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0x0, 0x0, 0xff, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xc2, 0xe6, 0xda, 0x0, 0x0, 0x13, 0x13, 0x13, 0x13, 0x35, 0x72, 0xc2, 0x8c, 0x43, 0x0, 0x0, 0x0, 0x13, 0x43, 0x80, 0xb5, 0x5e, 0x22, 0x0, 0x0, 0x0, 0x0, 0x5e, 0xc2, 0xa7, 0x43, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5e, 0xb5, 0x80, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x43, 0xa7, 0x9b, 0x5e, 0x13, 0x0, 0x0, 0x0, 0x0, 0x13, 0x13, 0x13, 0x13, 0x35, 0x9b, 0xa9, 0x80, 0x22, 0x0, 0x0, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xc2, 0xce, 0xce, 0x0, 0x0, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x0, 0x0, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xce, 0x0, 0x0, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x80, 0xda, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0xb3, 0xb3, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5e, 0xce, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0xb3, 0xb3, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5e, 0xda, 0x72, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x0, 0x0, 0xce, 0xb5, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x0, 0x0, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x5e, 0x5e, 0x5e, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0xb5, 0x8c, 0x5e, 0x8c, 0xb5, 0x8c, 0x0, 0x0, 0x0, 0x8c, 0xb3, 0x13, 0x0, 0x0, 0x0, 0x13, 0xce, 0x5e, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0xff, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0xff, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x5e, 0xce, 0x13, 0x0, 0x0, 0x0, 0x13, 0xb3, 0x8c, 0x0, 0x0, 0x0, 0x8c, 0xb5, 0x8c, 0x5e, 0x8c, 0xb5, 0x8c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x5e, 0x5e, 0x5e, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x0, 0x0, 0xb5, 0xb5, 0xb5, 0xb5, 0xce, 0xb5, 0xb5, 0xb5, 0xce, 0x0, 0x0, 0x22, 0x22, 0x22, 0x22, 0xff, 0x22, 0x22, 0x22, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf3, 0x22, 0x0, 0x13, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0xce, 0x80, 0xc2, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x43, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x5e, 0x5e, 0x5e, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0xb5, 0x8c, 0x5e, 0x8c, 0xb5, 0x8c, 0x0, 0x0, 0x0, 0x0, 0x8c, 0xb3, 0x13, 0x0, 0x0, 0x0, 0x13, 0xce, 0x5e, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0xff, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x43, 0xce, 0xb3, 0x13, 0x0, 0x0, 0x0, 0x13, 0xb3, 0x8c, 0x0, 0x0, 0xf3, 0x13, 0x8c, 0xb5, 0x8c, 0x5e, 0x8c, 0xb5, 0x8c, 0x0, 0x0, 0x0, 0xb3, 0x0, 0x0, 0x22, 0x5e, 0x5e, 0x5e, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x0, 0x0, 0x9c, 0x9c, 0x9c, 0x9c, 0xce, 0x9c, 0x9c, 0x9c, 0xce, 0x0, 0x0, 0x13, 0x13, 0x13, 0x13, 0xff, 0x13, 0x13, 0x13, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0xff, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x22, 0x8c, 0xda, 0xb3, 0x5e, 0x13, 0x43, 0xf3, 0x0, 0x0, 0x8c, 0xb5, 0x5e, 0x22, 0x0, 0xb3, 0xb5, 0xc2, 0x43, 0x0, 0x0, 0x8c, 0x13, 0x0, 0x0, 0x0, 0x0, 0x22, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x44, 0x0, 0x0, 0x0, 0x13, 0x43, 0x43, 0x0, 0x0, 0x0, 0xe6, 0x22, 0x0, 0x0, 0x13, 0xc2, 0x80, 0xc2, 0x5e, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0xce, 0x43, 0x0, 0x13, 0xff, 0x0, 0x0, 0xff, 0x0, 0x0, 0x43, 0xce, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x8c, 0xa7, 0x8c, 0xda, 0x13, 0x0, 0x0, 0x0, 0xe6, 0x0, 0x0, 0x0, 0x43, 0x5e, 0x22, 0x0, 0x0, 0x0, 0x0, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0xff, 0x0, 0x0, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0x13, 0xb3, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0x0, 0x0, 0xce, 0x8c, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xce, 0x8c, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x0, 0x0, 0x13, 0x8c, 0x9c, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0x0, 0x0, 0x0, 0x0, 0x13, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x5e, 0xa7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x5e, 0xa7, 0xb5, 0x8c, 0x43, 0x0, 0x0, 0x22, 0x5e, 0xa7, 0xb5, 0x8c, 0x43, 0x13, 0x0, 0x0, 0x0, 0x0, 0xda, 0xc2, 0x56, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x80, 0x9c, 0x80, 0x43, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x43, 0xa7, 0xb5, 0x8c, 0x43, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x5e, 0xa7, 0xb5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x22, 0x5e, 0xa7, 0x0, 0x0, 0x0, 0x0, 0x22, 0x43, 0x8c, 0xb5, 0xb5, 0x8c, 0x43, 0x0, 0x0, 0x8c, 0xa7, 0xb5, 0x80, 0x5e, 0x22, 0x13, 0x0, 0x0, 0x0, 0x0, 0xb3, 0xce, 0x8e, 0x43, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x43, 0x80, 0xb5, 0x9b, 0x5e, 0x43, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x44, 0x9c, 0xce, 0xb5, 0x0, 0x0, 0x0, 0x13, 0x43, 0x5e, 0xa7, 0xb5, 0x80, 0x5e, 0x22, 0x0, 0x0, 0xb3, 0xb5, 0xa7, 0x5e, 0x43, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0xa7, 0x9b, 0x8c, 0x43, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x5e, 0x80, 0xb5, 0x9b, 0x8c, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x22, 0x5e, 0xa7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb3, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5e, 0x0, 0x0, 0x8c, 0xb5, 0x43, 0x0, 0x0, 0x0, 0x43, 0xa7, 0xb3, 0x0, 0x0, 0x0, 0x22, 0xa7, 0xa7, 0x22, 0x8c, 0xc2, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9c, 0xce, 0xb6, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0xa7, 0xb3, 0x22, 0x8c, 0xa7, 0x43, 0x0, 0x0, 0x0, 0xb3, 0xc2, 0x43, 0x0, 0x0, 0x0, 0x43, 0xa7, 0xb3, 0x0, 0x0, 0x8c, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0xb3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0xa7, 0xc2, 0x5e, 0x0, 0x0, 0x43, 0x43, 0x43, 0x43, 0xa7, 0xa7, 0x43, 0x13, 0x0, 0x0, 0x0, 0xa7, 0xa7, 0xa7, 0xa7, 0xdb, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0xa7, 0xa7, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0xa7, 0xa7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x0, 0x0, 0xff, 0x9c, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf3, 0x0, 0x0, 0xff, 0x13, 0x8c, 0xa7, 0x22, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0xff, 0x0, 0x0, 0x43, 0xb5, 0x5e, 0x0, 0x0, 0xff, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x13, 0x8c, 0x9b, 0x22, 0xff, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x9b, 0xff, 0x0, 0x0, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x0, 0x0, 0xce, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0xce, 0x0, 0x0, 0xf3, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0xf3, 0x0, 0x0, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x43, 0x80, 0x9b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x5e, 0xb5, 0x80, 0x43, 0x0, 0x0, 0x0, 0x0, 0x13, 0x43, 0x80, 0xb5, 0x5e, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5e, 0xb5, 0x80, 0x43, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5e, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb3, 0x0, 0x0, 0xff, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0xff, 0x0, 0x0, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5e, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5e, 0x9c, 0x5e, 0x13, 0x0, 0x0, 0x0, 0x0, 0x13, 0x5e, 0x90, 0x8c, 0x0, 0x0, 0x0, 0x13, 0x5e, 0x9c, 0x5e, 0x0, 0x0, 0x5e, 0x9c, 0x5e, 0x13, 0x0, 0x0, 0x0, 0x5e, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x0, 0x0, 0xe6, 0x0, 0x0, 0xff, 0x0, 0x0, 0xff, 0x0, 0x0, 0xff, 0x0, 0x0, 0xe6, 0x0, 0x0, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5e, 0x0, 0x0, 0x5e, 0xb3, 0x0, 0x0, 0x8c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x8c, 0x5e, 0x0, 0x0, 0x13, 0x0, 0x0, 0xe6, 0x5e, 0xb3, 0x5e, 0x0, 0xce, 0x0, 0x0, 0xff, 0x0, 0x0, 0xff, 0x0, 0xff, 0x0, 0x0, 0xe6, 0x22, 0x0, 0xff, 0x0, 0xff, 0x0, 0x0, 0x9c, 0xda, 0x80, 0xf3, 0xa7, 0xb3, 0x0, 0x0, 0x43, 0x43, 0x43, 0x43, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0xc2, 0xe6, 0xb5, 0xb5, 0xe6, 0xb5, 0xb5, 0xb5, 0xb5, 0x0, 0x0, 0xda, 0x5e, 0x13, 0x13, 0x5e, 0xc1, 0x13, 0x13, 0x13, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x22, 0x0, 0x0, 0x13, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5e, 0xce, 0x8c, 0x5e, 0xc2, 0x8c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x5e, 0x5e, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x8c, 0x8c, 0x43, 0x0, 0x0, 0x0, 0x5e, 0xc2, 0x5e, 0x5e, 0xda, 0x43, 0x0, 0x0, 0xff, 0x13, 0x0, 0x0, 0x22, 0xf3, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0xe6, 0x0, 0x0, 0x0, 0x0, 0xe6, 0x0, 0x0, 0x22, 0x0, 0x0, 0x0, 0x0, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x5e, 0x5e, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0xc2, 0x5e, 0x5e, 0xce, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x13, 0x0, 0x0, 0x22, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb3, 0x5e, 0x0, 0x0, 0x43, 0xce, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9b, 0xe6, 0x9b, 0x9b, 0xda, 0xa9, 0x9b, 0x9b, 0x9b, 0x0, 0x0, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x8c, 0x8c, 0x43, 0x0, 0x0, 0x0, 0x8c, 0xc2, 0x5e, 0xff, 0xa7, 0x5e, 0x0, 0x0, 0xff, 0x13, 0x0, 0xff, 0x0, 0xff, 0x0, 0x0, 0xff, 0x0, 0x0, 0xff, 0x0, 0xff, 0x0, 0x0, 0xe6, 0x0, 0x0, 0xff, 0x8c, 0xb3, 0x0, 0x0, 0x22, 0x0, 0x0, 0x8c, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xce, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0xff, 0x9b, 0xa7, 0x43, 0x0, 0x0, 0x22, 0x22, 0x22, 0x22, 0x22, 0xff, 0x22, 0x43, 0xf3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0x0, 0x0, 0xce, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x0, 0x0, 0x0, 0x43, 0x5e, 0x5e, 0x22, 0x0, 0x0, 0x0, 0xe6, 0x0, 0x0, 0x8c, 0xc2, 0x5e, 0x5e, 0xce, 0x5e, 0x0, 0x0, 0xff, 0x0, 0x0, 0xff, 0x13, 0x0, 0x0, 0x22, 0xff, 0x0, 0x0, 0xff, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0xce, 0x8c, 0x13, 0xb3, 0x5e, 0x0, 0x0, 0x43, 0xce, 0x0, 0x0, 0x13, 0xb3, 0xb5, 0x9b, 0xe6, 0x9b, 0x9b, 0xda, 0xa9, 0x0, 0x0, 0x0, 0x0, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0xb5, 0xb5, 0xb5, 0xb5, 0xe6, 0xb5, 0xb5, 0xb5, 0xb5, 0x0, 0x0, 0x13, 0x13, 0x13, 0x13, 0x8c, 0x9b, 0x13, 0x13, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9b, 0x9b, 0x9b, 0x9b, 0xce, 0x8c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x0, 0x0, 0x22, 0x0, 0x0, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x0, 0x0, 0xce, 0x0, 0x0, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x0, 0x0, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6, 0x5e, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x0, 0x0, 0x22, 0x0, 0x0, 0x22, 0xb3, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x0, 0x0, 0xce, 0x0, 0x0, 0x0, 0x0, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x0, 0x0, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x0, 0x0, 0x9c, 0x9c, 0xa9, 0xce, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x0, 0x0, 0x13, 0x26, 0xce, 0xe6, 0x35, 0x13, 0x13, 0x13, 0x13, 0x0, 0x0, 0x22, 0xc2, 0x43, 0x22, 0xce, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6, 0x43, 0x0, 0x0, 0x22, 0xda, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x0, 0x0, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x0, 0x0, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0x9b, 0x9b, 0x9b, 0xb5, 0xda, 0xa9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x43, 0xce, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x5e, 0x5e, 0x5e, 0x5e, 0x8c, 0xce, 0x0, 0x0, 0x8c, 0x8c, 0x8c, 0x8c, 0xe6, 0x56, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0xf3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0xff, 0x0, 0x0, 0x80, 0x80, 0x80, 0xa7, 0xc2, 0xb3, 0x0, 0x0, 0x43, 0x43, 0x43, 0x43, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0xb5, 0xb5, 0xb5, 0xb5, 0xe6, 0xb5, 0x0, 0x0, 0x13, 0x13, 0x13, 0x13, 0x5e, 0xc1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0xff, 0x0, 0x0, 0x9b, 0x9b, 0x9b, 0x9b, 0xce, 0x5e, 0x0, 0x0, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x5e, 0x5e, 0x43, 0x0, 0x0, 0x0, 0x5e, 0xda, 0x5e, 0x5e, 0xda, 0x43, 0x0, 0x0, 0xff, 0x22, 0x0, 0x0, 0x22, 0xf3, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0xf3, 0x13, 0x0, 0x0, 0x13, 0xff, 0x0, 0x0, 0x43, 0xc2, 0x5e, 0x5e, 0xc2, 0x5e, 0x0, 0x0, 0x0, 0x43, 0x5e, 0x5e, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0xb5, 0xb5, 0xb5, 0xb5, 0xe6, 0xb5, 0xb5, 0xe6, 0xb5, 0x0, 0x0, 0x13, 0x13, 0x13, 0xc1, 0x5e, 0x13, 0x13, 0x5e, 0xc1, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x22, 0x0, 0x0, 0x13, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5e, 0xce, 0x8c, 0x5e, 0xc2, 0x8c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x5e, 0x5e, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x5e, 0x5e, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0xc2, 0x5e, 0x5e, 0xda, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x13, 0x0, 0x0, 0x22, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb3, 0x5e, 0x0, 0x0, 0x43, 0xce, 0x0, 0x0, 0x9b, 0x9b, 0x9b, 0x9b, 0xe6, 0x9b, 0x9b, 0xda, 0xa9, 0x0, 0x0, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0x9b, 0x9b, 0x9b, 0xb5, 0xda, 0xa9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x43, 0xce, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x26, 0x0, 0x22, 0x5e, 0x13, 0x0, 0x0, 0xf3, 0x13, 0x0, 0xe6, 0x5e, 0xce, 0x0, 0x0, 0xff, 0x0, 0x8c, 0x8c, 0x0, 0xff, 0x0, 0x0, 0xce, 0x5e, 0xf3, 0x0, 0x0, 0xf3, 0x0, 0x0, 0x13, 0x5e, 0x43, 0x0, 0x0, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x13, 0x13, 0xce, 0x13, 0x13, 0x0, 0x0, 0x8c, 0x9b, 0xb5, 0xb5, 0xb5, 0xff, 0xb5, 0xb5, 0x0, 0x0, 0xff, 0x22, 0x22, 0x22, 0x22, 0xff, 0x22, 0x22, 0x0, 0x0, 0x8c, 0x0, 0x0, 0x0, 0x0, 0x8c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0x5e, 0xce, 0x9b, 0x9b, 0x9b, 0x9b, 0x0, 0x0, 0xff, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc1, 0x5e, 0x13, 0x13, 0x13, 0x13, 0x0, 0x0, 0xb5, 0xe6, 0xb5, 0xb5, 0xb5, 0xb5, 0x0, 0x0, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x5e, 0xa7, 0x0, 0x0, 0x13, 0x43, 0x80, 0xb5, 0x8c, 0x43, 0x0, 0x0, 0xce, 0x9c, 0x43, 0x13, 0x0, 0x0, 0x0, 0x0, 0x5e, 0x9b, 0xa7, 0x43, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x80, 0x9c, 0x8c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x5e, 0xa7, 0x0, 0x0, 0x43, 0x8c, 0x9b, 0x9b, 0x5e, 0x43, 0x0, 0x0, 0xc2, 0xa9, 0x65, 0x13, 0x0, 0x0, 0x0, 0x0, 0x13, 0x43, 0x80, 0x9c, 0x80, 0x43, 0x0, 0x0, 0x0, 0x13, 0x22, 0x72, 0xce, 0xc2, 0x0, 0x0, 0x8c, 0xa9, 0x9b, 0x5e, 0x22, 0x13, 0x0, 0x0, 0x8c, 0xa9, 0x80, 0x43, 0x22, 0x0, 0x0, 0x0, 0x0, 0x13, 0x43, 0x80, 0xb5, 0xa7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb3, 0x13, 0x0, 0x0, 0x13, 0xb3, 0x0, 0x0, 0x5e, 0xb5, 0x22, 0x43, 0xb5, 0x8c, 0x0, 0x0, 0x0, 0x35, 0xe6, 0xf3, 0x22, 0x0, 0x0, 0x0, 0x43, 0xb5, 0x5e, 0x5e, 0x9b, 0x22, 0x0, 0x0, 0xc2, 0x22, 0x0, 0x0, 0x22, 0xce, 0x0, 0x0, 0x13, 0x0, 0x0, 0x0, 0x0, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x5e, 0xa7, 0x0, 0x0, 0xe6, 0x5e, 0x13, 0x13, 0x43, 0x80, 0xb5, 0x8c, 0x43, 0x0, 0x0, 0x22, 0xb3, 0xb5, 0xce, 0x8e, 0x43, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x5e, 0x9c, 0x80, 0x43, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x43, 0xa7, 0xb5, 0x8c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0x0, 0x0, 0x0, 0x0, 0x5e, 0x0, 0x0, 0xff, 0x9b, 0x22, 0x0, 0x0, 0xff, 0x0, 0x0, 0xff, 0x22, 0xce, 0x22, 0x0, 0xff, 0x0, 0x0, 0xff, 0x0, 0x22, 0xb5, 0x43, 0xff, 0x0, 0x0, 0xff, 0x0, 0x0, 0x13, 0xa7, 0xff, 0x0, 0x0, 0x8c, 0x0, 0x0, 0x0, 0x0, 0x8c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x8c, 0x80, 0x80, 0xa7, 0x5e, 0xa7, 0x80, 0x80, 0x8c, 0x43, 0x0, 0x0, 0xe7, 0x5e, 0x43, 0x43, 0x43, 0x0, 0x43, 0x43, 0x43, 0x5e, 0xe7, 0x0, 0x0, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0x0, 0x0, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0x0, 0x0, 0xb3, 0x9b, 0x9b, 0x9b, 0x80, 0x13, 0x80, 0x9b, 0x9b, 0x9b, 0xb3, 0x0, 0x0, 0x0, 0x22, 0x22, 0x22, 0x43, 0xb5, 0x43, 0x22, 0x22, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9b, 0x43, 0x0, 0x0, 0x22, 0xf3, 0x0, 0x0, 0x22, 0xe6, 0x0, 0x0, 0xe6, 0x22, 0x0, 0x0, 0xf3, 0x22, 0x0, 0x0, 0x43, 0x9b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x0, 0x0, 0xa7, 0xa7, 0xa7, 0x9b, 0x9b, 0x9b, 0x0, 0xce, 0x0, 0x0, 0x43, 0x43, 0x43, 0x22, 0x22, 0x22, 0x0, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0xb3, 0xb5, 0xb5, 0xb3, 0x0, 0x0, 0x0, 0x0, 0x0, 0xce, 0x5e, 0x13, 0x13, 0x8c, 0xb3, 0x0, 0x0, 0x0, 0x80, 0xff, 0x80, 0x80, 0x80, 0x80, 0xff, 0x80, 0x0, 0x0, 0x43, 0xff, 0x43, 0x43, 0x43, 0x43, 0xff, 0x43, 0x0, 0x0, 0x0, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x8c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0x0, 0x0, 0x0, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xa7, 0x43, 0x43, 0xff, 0x43, 0x43, 0x22, 0x0, 0x0, 0x0, 0xff, 0x43, 0xa7, 0xa7, 0xff, 0xa7, 0xa7, 0xce, 0x5e, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x22, 0xff, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x8c, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0xce, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5e, 0x0, 0x0, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x00}; diff --git a/source/main.c b/source/main.c new file mode 100644 index 0000000..a886d9a --- /dev/null +++ b/source/main.c @@ -0,0 +1,114 @@ +#include +#include +#include +#include +#include <3ds.h> + +#include "costable.h" +#include "text.h" +#include "output.h" + +char superStr[8192]; +int cnt; + +s32 pcCos(u16 v) +{ + return costable[v&0x1FF]; +} + +int countLines(char* str) +{ + if(!str)return 0; + int cnt; for(cnt=1;*str=='\n'?++cnt:*str;str++); + return cnt; +} + +void cutLine(char* str) +{ + if(!str || !*str)return; + char* str2=str; for(;*str2&&*(str2+1)&&*str2!='\n';str2++); str2++; + memmove(str,str2,strlen(str2)+1); +} + +void drawFrame() +{ + u8* bufAdr=gfxGetFramebuffer(GFX_TOP, GFX_LEFT, NULL, NULL); + + int i, j; + for(i=1;i<400;i++) + { + for(j=1;j<240;j++) + { + u32 v=(j+i*240)*3; + bufAdr[v]=(pcCos(i+cnt)+4096)/32; + bufAdr[v+1]=(pcCos(j-256+cnt)+4096)/64; + bufAdr[v+2]=(pcCos(i+128-cnt)+4096)/32; + } + } + gfxDrawText(GFX_TOP, GFX_LEFT, NULL, "ftPONY v0.0002\n", 240-fontDefault.height*1, 10); + i = countLines(superStr); + while(i>240/fontDefault.height-3){cutLine(superStr);i--;} + gfxDrawText(GFX_TOP, GFX_LEFT, NULL, superStr, 240-fontDefault.height*3, 20); + cnt++; + + gfxFlushBuffers(); + gfxSwapBuffers(); +} + +int main() +{ + srvInit(); + aptInit(); + hidInit(NULL); + irrstInit(NULL); + gfxInit(); + gfxSet3D(false); + + print("fsInit %08X\n", (unsigned int) + fsInit() + ); + + FS_archive sdmcArchive = (FS_archive) { + 0x00000009, (FS_path) { PATH_EMPTY, 1, (u8*) "" } + }; + + print("FSUSER_OpenArchive %08X\n", (unsigned int) + FSUSER_OpenArchive(NULL, &sdmcArchive) + ); + + superStr[0]=0; + + APP_STATUS status; + while((status=aptGetStatus()) != APP_EXITING) + { + if(status == APP_RUNNING) + { + drawFrame(); + + hidScanInput(); + if (hidKeysDown() & KEY_B) { + break; + } else if (hidKeysDown() & KEY_A) { + print("FSUSER_CreateDirectory %08X\n", (unsigned int) + FSUSER_CreateDirectory(NULL, sdmcArchive, FS_makePath(PATH_CHAR, "/new_dir")) + ); + } + } + else if(status == APP_SUSPENDING) + { + aptReturnToMenu(); + } + else if (status == APP_SLEEPMODE) + { + aptWaitStatusEvent(); + } + gspWaitForEvent(GSPEVENT_VBlank0, false); + } + + gfxExit(); + irrstExit(); + hidExit(); + aptExit(); + srvExit(); + return 0; +} diff --git a/source/output.h b/source/output.h new file mode 100644 index 0000000..cac8598 --- /dev/null +++ b/source/output.h @@ -0,0 +1,9 @@ +#ifndef OUTPUT_H +#define OUTPUT_H + +#define print(...) sprintf(&superStr[strlen(superStr)], __VA_ARGS__); drawFrame() + +void drawFrame(); +extern char superStr[]; + +#endif diff --git a/source/text.c b/source/text.c new file mode 100644 index 0000000..2e7e964 --- /dev/null +++ b/source/text.c @@ -0,0 +1,64 @@ +#include +#include +#include +#include <3ds.h> +#include "text.h" + +#include "font.h" + +//this code is not meant to be readable +int drawCharacter(u8* fb, font_s* f, char c, s16 x, s16 y, u16 w, u16 h) +{ + charDesc_s* cd=&f->desc[(int)c]; + if(!cd->data)return 0; + x+=cd->xo; y+=f->height-cd->yo-cd->h; + if(x<0 || x+cd->w>=w || y<-cd->h || y>=h+cd->h)return 0; + u8* charData=cd->data; + int i, j; + s16 cy=y, ch=cd->h, cyo=0; + if(y<0){cy=0;cyo=-y;ch=cd->h-cyo;} + else if(y+ch>h)ch=h-y; + fb+=(x*h+cy)*3; + const u8 r=f->color[0], g=f->color[1], b=f->color[2]; + for(i=0;iw;i++) + { + charData+=cyo; + for(j=0;j>8; + fb[1]=(fb[1]*(0xFF-v)+(g*v))>>8; + fb[2]=(fb[2]*(0xFF-v)+(r*v))>>8; + } + fb+=3; + } + charData+=(cd->h-(cyo+ch)); + fb+=(h-ch)*3; + } + return cd->xa; +} + +void drawString(u8* fb, font_s* f, char* str, s16 x, s16 y, u16 w, u16 h) +{ + if(!f || !fb || !str)return; + int k; int dx=0, dy=0; + int length=strlen(str); + for(k=0;kheight;} + } +} + +void gfxDrawText(gfxScreen_t screen, gfx3dSide_t side, font_s* f, char* str, s16 x, s16 y) +{ + if(!str)return; + if(!f)f=&fontDefault; + + u16 fbWidth, fbHeight; + u8* fbAdr=gfxGetFramebuffer(screen, side, &fbWidth, &fbHeight); + + drawString(fbAdr, f, str, y, x, fbHeight, fbWidth); +} diff --git a/source/text.h b/source/text.h new file mode 100644 index 0000000..bd31a4b --- /dev/null +++ b/source/text.h @@ -0,0 +1,9 @@ +#pragma once + +#include + +#include "font.h" + +int drawCharacter(u8* fb, font_s* f, char c, s16 x, s16 y, u16 w, u16 h); +void drawString(u8* fb, font_s* f, char* str, s16 x, s16 y, u16 w, u16 h); +void gfxDrawText(gfxScreen_t screen, gfx3dSide_t side, font_s* f, char* str, s16 x, s16 y);