Merge remote-tracking branch 'contiki-avr/master'
diff --git a/contiki-avr/Makefile b/contiki-avr/Makefile
new file mode 100644
index 0000000..7327917
--- /dev/null
+++ b/contiki-avr/Makefile
@@ -0,0 +1,121 @@
+# Copyright (c) 2002, Adam Dunkels.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote
+# products derived from this software without specific prior
+# written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# This file is part of the Contiki desktop environment
+#
+# $Id: Makefile,v 1.9 2005/04/18 22:43:55 oliverschmidt Exp $
+#
+
+all: contiki.srec
+
+CONTIKI=../contiki
+
+include $(CONTIKI)/Makefile.common
+include Makefile.depend
+
+CC=avr-gcc
+LD=avr-ld
+AS=avr-as
+OBJCOPY=avr-objcopy
+CFLAGS=-Os -Iapps -Ictk -Ilib -Iuip -Iconf \
+ -I$(CONTIKI)/apps -I$(CONTIKI)/ctk -I$(CONTIKI)/ek \
+ -I$(CONTIKI)/lib -I$(CONTIKI)/uip \
+ -DWITH_UIP -DWITH_ASCII -DWITH_AVR \
+ -Wall -g -fpack-struct -I../uip -I. -mmcu=atmega128
+LDFLAGS=-mmcu=atmega128 -Wl,-Map=contiki.map,--cref,-Tdata,0x801100
+
+%.o: %.c
+ $(CC) $(CFLAGS) -c $< -o $(notdir $(<:.c=.o))
+
+%.o: apps/%.c
+ $(CC) $(CFLAGS) -c $< -o $(notdir $(<:.c=.o))
+
+%.o: ctk/%.c
+ $(CC) $(CFLAGS) -c $< -o $(notdir $(<:.c=.o))
+
+%.o: uip/%.c
+ $(CC) $(CFLAGS) -c $< -o $(notdir $(<:.c=.o))
+
+%.o: $(CONTIKICC65)/uip/%.c
+ $(CC) $(CFLAGS) -c $< -o $(notdir $(<:.c=.o))
+%.o: $(CONTIKI)/apps/%.c
+ $(CC) $(CFLAGS) -c $< -o $(notdir $(<:.c=.o))
+%.o: $(CONTIKI)/ctk/%.c
+ $(CC) $(CFLAGS) -c $< -o $(notdir $(<:.c=.o))
+%.o: $(CONTIKI)/ek/%.c
+ $(CC) $(CFLAGS) -c $< -o $(notdir $(<:.c=.o))
+%.o: $(CONTIKI)/lib/%.c
+ $(CC) $(CFLAGS) -c $< -o $(notdir $(<:.c=.o))
+%.o: $(CONTIKI)/uip/%.c
+ $(CC) $(CFLAGS) -c $< -o $(notdir $(<:.c=.o))
+
+%.srec:
+ $(OBJCOPY) -O srec $< $@
+
+SYSTEM=ek.o ek-service.o loader-arch.o
+CONTIKIFILES= $(SYSTEM) $(UIP) uip-fw.o uip-fw-service.o timer.o
+
+CTKVNC=ctk-vncserver.o libconio.o vnc-server.o vnc-out.o ctk-vncfont.o
+CTKTELNET=libconio.o ctk-term.o ctk-term-in.o ctk-term-out.o ctk-termtelnet.o
+
+IRC=irc.o ircc.o socket.o uipbuf.o ctk-textedit.o irc-dsc.o ircc-strings.o
+
+clean:
+ rm -f *.o *~ *core contiki contiki.srec *.lst *.map
+
+depend:
+ gcc $(CCDEPFLAGS) -MM -Iapps -Ictk -Iuip -Iconf \
+ -I$(CONTIKI)/lib -I$(CONTIKI)/ek \
+ -I$(CONTIKI)/ctk -I$(CONTIKI)/apps -I$(CONTIKI)/uip \
+ *.c */*.c $(CONTIKI)/*/*.c > Makefile.depend
+
+contiki: $(CONIKIFILES) contiki-main.o strncasecmp.o \
+ ctk.o ek.o arg.o timer.o ek-service.o \
+ uip.o uip_arch.o uip_arp.o resolv.o uiplib.o tcpip.o uip-split.o \
+ rtl8019.o rtl8019dev.o delay.o debug.o rtl8019-drv.o \
+ $(CTKVNC) program-handler.o \
+ webserver.o httpd.o httpd-cgi.o httpd-fs.o webserver-dsc.o \
+ netconf.o netconf-dsc.o \
+ $(WWW) weblinks.o weblinks-dsc.o \
+ about.o about-dsc.o \
+ processes.o processes-dsc.o calc.o calc-dsc.o
+ $(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^
+
+
+contiki.srec: contiki
+
+erase:
+ uisp -dprog=stk200 --erase -v
+
+upload: erase
+ uisp -dprog=stk200 --upload -v if=contiki.srec
+
+upload-remote: contiki.srec
+ scp contiki.srec sidewalker:/tmp
+ ssh sidewalker.sics.se "uisp -dprog=stk200 --erase -v"
+ ssh sidewalker.sics.se "uisp -dprog=stk200 --upload -v if=/tmp/contiki.srec"
+
diff --git a/contiki-avr/Makefile.depend b/contiki-avr/Makefile.depend
new file mode 100644
index 0000000..8629f89
--- /dev/null
+++ b/contiki-avr/Makefile.depend
@@ -0,0 +1,448 @@
+http-user-agent-string.o: apps/http-user-agent-string.c
+httpd-cgi.o: apps/httpd-cgi.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/tcpip.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h apps/httpd.h \
+ ../contiki/ek/contiki.h ../contiki/ek/contiki-version.h \
+ ../contiki/uip/uiplib.h ../contiki/uip/resolv.h ../contiki/lib/memb.h \
+ ../contiki/lib/timer.h ../contiki/lib/clock.h conf/clock-conf.h \
+ apps/httpd-cgi.h apps/httpd-fs.h ../contiki/lib/petsciiconv.h
+httpd-fs.o: apps/httpd-fs.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/tcpip.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h apps/httpd.h \
+ ../contiki/ek/contiki.h ../contiki/ek/contiki-version.h \
+ ../contiki/uip/uiplib.h ../contiki/uip/resolv.h ../contiki/lib/memb.h \
+ ../contiki/lib/timer.h ../contiki/lib/clock.h conf/clock-conf.h \
+ apps/httpd-fs.h apps/httpd-fsdata.h apps/httpd-fsdata.c
+httpd-fsdata.o: apps/httpd-fsdata.c
+httpd.o: apps/httpd.c ../contiki/ek/contiki.h \
+ ../contiki/ek/contiki-version.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h ../contiki/uip/tcpip.h ../contiki/uip/uiplib.h \
+ ../contiki/uip/resolv.h ../contiki/lib/memb.h ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h apps/httpd.h apps/httpd-fs.h \
+ apps/httpd-fsdata.h apps/httpd-cgi.h apps/webserver.h
+shell.o: apps/shell.c ../contiki/apps/program-handler.h \
+ ../contiki/ek/dsc.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h ../contiki/uip/tcpip.h ../contiki/uip/uip_arp.h \
+ ../contiki/uip/resolv.h ../contiki/apps/shell.h
+webclient.o: apps/webclient.c ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/uip/tcpip.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/apps/webclient.h \
+ ../contiki/apps/http-strings.h \
+ ../contiki/apps/http-user-agent-string.h ../contiki/uip/resolv.h \
+ ../contiki/uip/uiplib.h conf/www-conf.h
+weblinks-dsc.o: apps/weblinks-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h
+weblinks.o: apps/weblinks.c ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ctk/ctk-draw.h \
+ ../contiki/apps/program-handler.h ../contiki/ek/dsc.h \
+ ../contiki/apps/www.h
+webserver.o: apps/webserver.c ../contiki/ek/contiki.h \
+ ../contiki/ek/contiki-version.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h ../contiki/uip/tcpip.h ../contiki/uip/uiplib.h \
+ ../contiki/uip/resolv.h ../contiki/lib/memb.h ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h \
+ ../contiki/apps/http-strings.h ../contiki/lib/petsciiconv.h \
+ apps/webserver.h apps/httpd.h
+delay.o: uip/delay.c uip/delay.h
+rtl8019-drv.o: uip/rtl8019-drv.c ../contiki/uip/packet-service.h \
+ ../contiki/ek/ek-service.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h ../contiki/uip/tcpip.h uip/rtl8019dev.h uip/rtl8019.h \
+ uip/compiler.h ../contiki/uip/uip_arp.h
+rtl8019dev.o: uip/rtl8019dev.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/tcpip.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h uip/rtl8019dev.h \
+ uip/rtl8019.h uip/compiler.h
+uip_arch.o: uip/uip_arch.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/tcpip.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h uip/uip_arch.h
+about-dsc.o: ../contiki/apps/about-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h
+about.o: ../contiki/apps/about.c ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/ctk/ctk-draw.h \
+ ../contiki/lib/petsciiconv.h
+calc-dsc.o: ../contiki/apps/calc-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h
+calc.o: ../contiki/apps/calc.c ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h
+directory.o: ../contiki/apps/directory.c ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h ../contiki/ctk/ctk-draw.h \
+ ../contiki/lib/cfs.h ../contiki/lib/cfs-service.h \
+ ../contiki/ek/ek-service.h ../contiki/apps/program-handler.h \
+ ../contiki/ek/dsc.h
+editor-dsc.o: ../contiki/apps/editor-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h
+editor.o: ../contiki/apps/editor.c ../contiki/ek/contiki.h \
+ ../contiki/ek/contiki-version.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h ../contiki/uip/tcpip.h ../contiki/uip/uiplib.h \
+ ../contiki/uip/resolv.h ../contiki/lib/memb.h ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h \
+ ../contiki/lib/cfs.h ../contiki/lib/cfs-service.h \
+ ../contiki/ek/ek-service.h ../contiki/lib/ctk-filedialog.h
+email-dsc.o: ../contiki/apps/email-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h
+email.o: ../contiki/apps/email.c ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/apps/smtp.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/uip/uiplib.h \
+ ../contiki/lib/petsciiconv.h ../contiki/lib/ctk-textedit.h
+ftp-dsc.o: ../contiki/apps/ftp-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h
+ftp.o: ../contiki/apps/ftp.c ../contiki/apps/ftpc.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ek/contiki.h \
+ ../contiki/ek/contiki-version.h ../contiki/uip/uiplib.h \
+ ../contiki/uip/resolv.h ../contiki/lib/memb.h ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h \
+ ../contiki/lib/cfs.h ../contiki/lib/cfs-service.h \
+ ../contiki/ek/ek-service.h
+ftpc.o: ../contiki/apps/ftpc.c ../contiki/ek/contiki.h \
+ ../contiki/ek/contiki-version.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h ../contiki/uip/tcpip.h ../contiki/uip/uiplib.h \
+ ../contiki/uip/resolv.h ../contiki/lib/memb.h ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h ../contiki/apps/ftpc.h
+html-strings.o: ../contiki/apps/html-strings.c
+htmlparser.o: ../contiki/apps/htmlparser.c \
+ ../contiki/apps/htmlparser.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/tcpip.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h \
+ ../contiki/apps/html-strings.h conf/www-conf.h
+http-strings.o: ../contiki/apps/http-strings.c
+http-user-agent-string.o: ../contiki/apps/http-user-agent-string.c
+httpd-fsdata.o: ../contiki/apps/httpd-fsdata.c
+irc-dsc.o: ../contiki/apps/irc-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h
+ircc-strings.o: ../contiki/apps/ircc-strings.c
+netconf-dsc.o: ../contiki/apps/netconf-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h
+netconf.o: ../contiki/apps/netconf.c ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h ../contiki/uip/tcpip.h ../contiki/uip/uiplib.h \
+ ../contiki/uip/uip_arp.h ../contiki/uip/resolv.h ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h \
+ ../contiki/ctk/ctk-draw.h
+popc-strings.o: ../contiki/apps/popc-strings.c
+processes-dsc.o: ../contiki/apps/processes-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h
+processes.o: ../contiki/apps/processes.c ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h
+program-handler.o: ../contiki/apps/program-handler.c \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h \
+ ../contiki/lib/petsciiconv.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/ctk/ctk-draw.h \
+ ../contiki/ek/log.h conf/log-conf.h ../contiki/apps/program-handler.h \
+ ../contiki/ek/dsc.h
+shell-dsc.o: ../contiki/apps/shell-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h
+simpletelnet.o: ../contiki/apps/simpletelnet.c ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/lib/petsciiconv.h \
+ ../contiki/uip/uiplib.h ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h ../contiki/uip/tcpip.h ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h \
+ ../contiki/uip/resolv.h ../contiki/apps/telnet.h \
+ ../contiki/apps/simpletelnet.h
+smtp-strings.o: ../contiki/apps/smtp-strings.c
+smtp.o: ../contiki/apps/smtp.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/tcpip.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h ../contiki/apps/smtp.h \
+ ../contiki/apps/smtp-strings.h
+telnet-dsc.o: ../contiki/apps/telnet-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h
+telnet.o: ../contiki/apps/telnet.c ../contiki/uip/tcpip.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/apps/telnet.h
+telnetd-dsc.o: ../contiki/apps/telnetd-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h
+telnetd-gui.o: ../contiki/apps/telnetd-gui.c \
+ ../contiki/apps/program-handler.h ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h ../contiki/uip/tcpip.h ../contiki/lib/petsciiconv.h \
+ ../contiki/uip/uip_arp.h ../contiki/uip/resolv.h \
+ ../contiki/apps/telnetd.h ../contiki/ek/contiki.h \
+ ../contiki/ek/contiki-version.h ../contiki/uip/uiplib.h \
+ ../contiki/lib/memb.h ../contiki/lib/timer.h ../contiki/lib/clock.h \
+ conf/clock-conf.h ../contiki/apps/shell.h
+telnetd.o: ../contiki/apps/telnetd.c ../contiki/ek/loader.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/lib/petsciiconv.h ../contiki/uip/uip_arp.h \
+ ../contiki/uip/resolv.h ../contiki/lib/memb.h ../contiki/apps/shell.h \
+ ../contiki/apps/telnetd.h ../contiki/ek/contiki.h \
+ ../contiki/ek/contiki-version.h ../contiki/uip/uiplib.h \
+ ../contiki/lib/timer.h ../contiki/lib/clock.h conf/clock-conf.h \
+ conf/telnetd-conf.h
+vnc-dsc.o: ../contiki/apps/vnc-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h
+vnc-viewer.o: ../contiki/apps/vnc-viewer.c ../contiki/apps/vnc-draw.h \
+ uip/uip_arch.h ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h ../contiki/uip/tcpip.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/apps/vnc-viewer.h
+vnc.o: ../contiki/apps/vnc.c ../contiki/ek/contiki.h \
+ ../contiki/ek/contiki-version.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h ../contiki/uip/tcpip.h ../contiki/uip/uiplib.h \
+ ../contiki/uip/resolv.h ../contiki/lib/memb.h ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h ../contiki/lib/petsciiconv.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ctk/ctk-mouse.h \
+ ../contiki/apps/telnet.h ../contiki/apps/vnc.h \
+ ../contiki/apps/vnc-draw.h uip/uip_arch.h \
+ ../contiki/apps/vnc-viewer.h conf/vnc-conf.h
+webclient.o: ../contiki/apps/webclient.c ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/uip/tcpip.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/apps/webclient.h \
+ ../contiki/apps/http-strings.h \
+ ../contiki/apps/http-user-agent-string.h ../contiki/uip/resolv.h \
+ ../contiki/uip/uiplib.h conf/www-conf.h
+webserver-dsc.o: ../contiki/apps/webserver-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h
+www-dsc.o: ../contiki/apps/www-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h
+www.o: ../contiki/apps/www.c ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h \
+ ../contiki/apps/webclient.h ../contiki/apps/http-strings.h \
+ ../contiki/apps/http-user-agent-string.h ../contiki/uip/resolv.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/apps/htmlparser.h \
+ ../contiki/lib/petsciiconv.h ../contiki/apps/program-handler.h \
+ ../contiki/ek/dsc.h ../contiki/uip/uiplib.h conf/www-conf.h
+ctk-draw.o: ../contiki/ctk/ctk-draw.c ../contiki/ek/ek-service.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h ../contiki/ctk/ctk-draw.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ctk/ctk-draw-service.h
+ctk-term-in.o: ../contiki/ctk/ctk-term-in.c ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h ../contiki/ctk/ctk-term.h \
+ ../contiki/ctk/ctk-term-int.h ../contiki/ctk/ctk-term-ascii.h
+ctk-term-out.o: ../contiki/ctk/ctk-term-out.c \
+ ../contiki/lib/libconio.h conf/libconio-conf.h \
+ ../contiki/ctk/ctk-term-int.h
+ctk-vncfont.o: ../contiki/ctk/ctk-vncfont.c
+ctk-vncserver.o: ../contiki/ctk/ctk-vncserver.c ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h ../contiki/ctk/ctk-draw.h \
+ ../contiki/ek/contiki.h ../contiki/ek/contiki-version.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/uip/uiplib.h \
+ ../contiki/uip/resolv.h ../contiki/lib/memb.h ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h ../contiki/ctk/vnc-server.h \
+ ../contiki/ctk/vnc-out.h ../contiki/ctk/ctk-vncfont.h \
+ ../contiki/ctk/ctk-vncserver.h conf/ctk-vncserver-conf.h \
+ ../contiki/lib/libconio.h conf/libconio-conf.h
+ctk.o: ../contiki/ctk/ctk.c ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/ctk/ctk-draw.h \
+ ../contiki/ctk/ctk-mouse.h ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h
+vnc-out.o: ../contiki/ctk/vnc-out.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/tcpip.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h \
+ ../contiki/ctk/vnc-server.h ../contiki/ctk/vnc-out.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/lib/libconio.h \
+ conf/libconio-conf.h conf/ctk-vncserver-conf.h \
+ ../contiki/ctk/ctk-vncfont.h ../contiki/ctk/ctk-mouse.h
+vnc-server.o: ../contiki/ctk/vnc-server.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/tcpip.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h \
+ ../contiki/ctk/vnc-server.h ../contiki/ctk/vnc-out.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h
+arg.o: ../contiki/ek/arg.c ../contiki/ek/arg.h
+ek-service.o: ../contiki/ek/ek-service.c ../contiki/ek/ek-service.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h ../contiki/ek/log.h \
+ conf/log-conf.h
+ek.o: ../contiki/ek/ek.c ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h
+cfs-posix.o: ../contiki/lib/cfs-posix.c ../contiki/ek/contiki.h \
+ ../contiki/ek/contiki-version.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h ../contiki/uip/tcpip.h ../contiki/uip/uiplib.h \
+ ../contiki/uip/resolv.h ../contiki/lib/memb.h ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h ../contiki/lib/cfs.h \
+ ../contiki/lib/cfs-service.h ../contiki/ek/ek-service.h
+cfs.o: ../contiki/lib/cfs.c ../contiki/ek/contiki.h \
+ ../contiki/ek/contiki-version.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h ../contiki/uip/tcpip.h ../contiki/uip/uiplib.h \
+ ../contiki/uip/resolv.h ../contiki/lib/memb.h ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h ../contiki/lib/cfs.h \
+ ../contiki/lib/cfs-service.h ../contiki/ek/ek-service.h
+ctk-filedialog.o: ../contiki/lib/ctk-filedialog.c \
+ ../contiki/ek/contiki.h ../contiki/ek/contiki-version.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/tcpip.h \
+ ../contiki/uip/uiplib.h ../contiki/uip/resolv.h ../contiki/lib/memb.h \
+ ../contiki/lib/timer.h ../contiki/lib/clock.h conf/clock-conf.h \
+ ../contiki/lib/ctk-filedialog.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/lib/cfs.h \
+ ../contiki/lib/cfs-service.h ../contiki/ek/ek-service.h
+ctk-textedit.o: ../contiki/lib/ctk-textedit.c \
+ ../contiki/lib/ctk-textedit.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h
+libconio.o: ../contiki/lib/libconio.c ../contiki/lib/libconio.h \
+ conf/libconio-conf.h
+list.o: ../contiki/lib/list.c ../contiki/lib/list.h
+memb.o: ../contiki/lib/memb.c ../contiki/lib/memb.h
+petsciiconv.o: ../contiki/lib/petsciiconv.c
+strncasecmp.o: ../contiki/lib/strncasecmp.c
+timer.o: ../contiki/lib/timer.c ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h
+resolv.o: ../contiki/uip/resolv.c ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/uip/tcpip.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/resolv.h
+slipdev.o: ../contiki/uip/slipdev.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/tcpip.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h ../contiki/uip/uip-fw.h \
+ ../contiki/uip/slipdev.h
+tcpip.o: ../contiki/uip/tcpip.c ../contiki/uip/tcpip.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/ek-service.h \
+ ../contiki/uip/uip-fw.h ../contiki/lib/timer.h ../contiki/lib/clock.h \
+ conf/clock-conf.h ../contiki/uip/packet-service.h \
+ ../contiki/uip/uip-split.h
+uip-fw-service.o: ../contiki/uip/uip-fw-service.c \
+ ../contiki/uip/packet-service.h ../contiki/ek/ek-service.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/tcpip.h \
+ ../contiki/uip/uip-fw.h
+uip-fw.o: ../contiki/uip/uip-fw.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/tcpip.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h ../contiki/uip/uip_arch.h \
+ ../contiki/uip/uip-fw.h
+uip-split.o: ../contiki/uip/uip-split.c ../contiki/uip/uip-split.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/uip/uip-fw.h \
+ ../contiki/uip/uip_arch.h
+uip.o: ../contiki/uip/uip.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/tcpip.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h ../contiki/uip/uip_arch.h
+uip_arp.o: ../contiki/uip/uip_arp.c ../contiki/uip/uip_arp.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h
+uipbuf.o: ../contiki/uip/uipbuf.c ../contiki/uip/uipbuf.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h
+uiplib.o: ../contiki/uip/uiplib.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/tcpip.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h ../contiki/uip/uip_arp.h \
+ ../contiki/uip/uiplib.h
diff --git a/contiki-avr/apps/http-user-agent-string b/contiki-avr/apps/http-user-agent-string
new file mode 100644
index 0000000..f44e3a7
--- /dev/null
+++ b/contiki-avr/apps/http-user-agent-string
@@ -0,0 +1 @@
+http_user_agent_fields "Connection: close\r\nUser-Agent: Contiki/1.2-devel0 (Atmel AVR Atmega128; http://www.sics.se/~adam/contiki/)\r\n\r\n"
diff --git a/contiki-avr/apps/http-user-agent-string.c b/contiki-avr/apps/http-user-agent-string.c
new file mode 100644
index 0000000..bc8f7d3
--- /dev/null
+++ b/contiki-avr/apps/http-user-agent-string.c
@@ -0,0 +1,3 @@
+char http_user_agent_fields[111] =
+/* "Connection: close\r\nUser-Agent: Contiki/1.2-devel0 (Atmel AVR Atmega128; http://www.sics.se/~adam/contiki/)\r\n\r\n" */
+{0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, 0x55, 0x73, 0x65, 0x72, 0x2d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x3a, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x2f, 0x31, 0x2e, 0x32, 0x2d, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x30, 0x20, 0x28, 0x41, 0x74, 0x6d, 0x65, 0x6c, 0x20, 0x41, 0x56, 0x52, 0x20, 0x41, 0x74, 0x6d, 0x65, 0x67, 0x61, 0x31, 0x32, 0x38, 0x3b, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x2f, 0x29, 0xd, 0xa, 0xd, 0xa, };
diff --git a/contiki-avr/apps/http-user-agent-string.h b/contiki-avr/apps/http-user-agent-string.h
new file mode 100644
index 0000000..077b525
--- /dev/null
+++ b/contiki-avr/apps/http-user-agent-string.h
@@ -0,0 +1 @@
+extern char http_user_agent_fields[111];
diff --git a/contiki-avr/apps/httpd-cgi.c b/contiki-avr/apps/httpd-cgi.c
new file mode 100644
index 0000000..835c6b5
--- /dev/null
+++ b/contiki-avr/apps/httpd-cgi.c
@@ -0,0 +1,228 @@
+/*
+ * Copyright (c) 2001, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack.
+ *
+ * $Id: httpd-cgi.c,v 1.2 2004/08/09 22:22:47 adamdunkels Exp $
+ *
+ */
+
+/*
+ * This file includes functions that are called by the web server
+ * scripts. The functions takes no argument, and the return value is
+ * interpreted as follows. A zero means that the function did not
+ * complete and should be invoked for the next packet as well. A
+ * non-zero value indicates that the function has completed and that
+ * the web server should move along to the next script line.
+ *
+ */
+
+
+#include "uip.h"
+#include "httpd.h"
+#include "httpd-cgi.h"
+#include "httpd-fs.h"
+
+#include "petsciiconv.h"
+
+#include <stdio.h>
+#include <string.h>
+
+static u8_t file_stats(void);
+static u8_t tcp_stats(void);
+static u8_t processes(void);
+
+static u8_t d64output(void);
+
+static u8_t file_totals(void);
+
+httpd_cgifunction httpd_cgitab[] = {
+ file_stats, /* CGI function "a" */
+ tcp_stats, /* CGI function "b" */
+ processes, /* CGI function "c" */
+
+ d64output, /* CGI function "d" */
+
+ file_totals, /* CGI function "e" */
+};
+
+static const char closed[] = /* "CLOSED",*/
+{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0};
+static const char syn_rcvd[] = /* "SYN-RCVD",*/
+{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56,
+ 0x44, 0};
+static const char syn_sent[] = /* "SYN-SENT",*/
+{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e,
+ 0x54, 0};
+static const char established[] = /* "ESTABLISHED",*/
+{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48,
+ 0x45, 0x44, 0};
+static const char fin_wait_1[] = /* "FIN-WAIT-1",*/
+{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49,
+ 0x54, 0x2d, 0x31, 0};
+static const char fin_wait_2[] = /* "FIN-WAIT-2",*/
+{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49,
+ 0x54, 0x2d, 0x32, 0};
+static const char closing[] = /* "CLOSING",*/
+{0x43, 0x4c, 0x4f, 0x53, 0x49,
+ 0x4e, 0x47, 0};
+static const char time_wait[] = /* "TIME-WAIT,"*/
+{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41,
+ 0x49, 0x54, 0};
+static const char last_ack[] = /* "LAST-ACK"*/
+{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43,
+ 0x4b, 0};
+
+static const char *states[] = {
+ closed,
+ syn_rcvd,
+ syn_sent,
+ established,
+ fin_wait_1,
+ fin_wait_2,
+ closing,
+ time_wait,
+ last_ack};
+
+
+/*-----------------------------------------------------------------------------------*/
+static u8_t
+file_stats(void)
+{
+ char tmp[40];
+
+ /* We use sprintf() to print the number of file accesses to a
+ particular file (given as an argument to the function in the
+ script). We then use uip_send() to actually send the data. */
+ if(uip_acked()) {
+ return 1;
+ }
+ memcpy_P(tmp, &hs->script[4], sizeof(tmp));
+ uip_send(uip_appdata, sprintf((char *)uip_appdata, "%10lu", httpd_fs_count(tmp)));
+ return 0;
+}
+/*-----------------------------------------------------------------------------------*/
+static u8_t
+file_totals(void)
+{
+ /* We use sprintf() to print the number of file accesses to a
+ particular file (given as an argument to the function in the
+ script). We then use uip_send() to actually send the data. */
+ if(uip_acked()) {
+ return 1;
+ }
+ uip_send(uip_appdata, sprintf((char *)uip_appdata, "%10lu", httpd_fs_total()));
+ return 0;
+}
+/*-----------------------------------------------------------------------------------*/
+static u8_t
+tcp_stats(void)
+{
+ struct uip_conn *conn;
+
+ if(uip_acked()) {
+ /* If the previously sent data has been acknowledged, we move
+ forward one connection. */
+ if(++hs->count == UIP_CONNS) {
+ /* If all connections has been printed out, we are done and
+ return 1. */
+ return 1;
+ }
+ }
+
+ conn = &uip_conns[hs->count];
+ while((conn->tcpstateflags & TS_MASK) == CLOSED) {
+ if(++hs->count == UIP_CONNS) {
+ /* If all connections has been printed out, we are done and
+ return 1. */
+ return 1;
+ }
+ conn = &uip_conns[hs->count];
+ }
+
+ uip_send(uip_appdata, sprintf((char *)uip_appdata,
+ "<tr><td>%d</td><td>%u.%u.%u.%u:%u</td><td>%s</td><td>%u</td><td>%u</td><td>%c %c</td></tr>\r\n",
+ htons(conn->lport),
+ htons(conn->ripaddr[0]) >> 8,
+ htons(conn->ripaddr[0]) & 0xff,
+ htons(conn->ripaddr[1]) >> 8,
+ htons(conn->ripaddr[1]) & 0xff,
+ htons(conn->rport),
+ states[conn->tcpstateflags & TS_MASK],
+ conn->nrtx,
+ conn->timer,
+ (uip_outstanding(conn))? '*':' ',
+ (uip_stopped(conn))? '!':' '));
+
+ return 0;
+}
+/*-----------------------------------------------------------------------------------*/
+static u8_t
+processes(void)
+{
+ u8_t i;
+ struct ek_proc *p;
+ char name[40];
+
+ p = EK_PROCS();
+ for(i = 0; i < hs->count; ++i) {
+ if(p != NULL) {
+ p = p->next;
+ }
+ }
+
+ if(uip_acked()) {
+ /* If the previously sent data has been acknowledged, we move
+ forward one connection. */
+ ++hs->count;
+ if(p != NULL) {
+ p = p->next;
+ }
+ if(p == NULL) {
+ /* If all processes have been printed out, we are done and
+ return 1. */
+ return 1;
+ }
+ }
+
+ strncpy(name, p->name, 40);
+ petsciiconv_toascii(name, 40);
+ uip_send(uip_appdata,
+ sprintf((char *)uip_appdata,
+ "<tr align=\"center\"><td>%3d</td><td>%s</td><td>0x%02x</td><td>0x%04x</td><td>0x%04x</td></tr>\r\n",
+ p->id, name, p->prio,
+ p->pollhandler, p->eventhandler));
+ return 0;
+}
+/*-----------------------------------------------------------------------------------*/
+static u8_t
+d64output(void)
+{
+
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-avr/apps/httpd-cgi.h b/contiki-avr/apps/httpd-cgi.h
new file mode 100644
index 0000000..718ded7
--- /dev/null
+++ b/contiki-avr/apps/httpd-cgi.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2001, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Adam Dunkels.
+ * 4. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack.
+ *
+ * $Id: httpd-cgi.h,v 1.1 2003/07/04 10:54:51 adamdunkels Exp $
+ *
+ */
+
+#ifndef __HTTPD_CGI_H__
+#define __HTTPD_CGI_H__
+
+typedef u8_t (* httpd_cgifunction)(void);
+
+extern httpd_cgifunction httpd_cgitab[];
+
+#endif /* __HTTPD_CGI_H__ */
diff --git a/contiki-avr/apps/httpd-fs.c b/contiki-avr/apps/httpd-fs.c
new file mode 100644
index 0000000..16cf1c0
--- /dev/null
+++ b/contiki-avr/apps/httpd-fs.c
@@ -0,0 +1,152 @@
+/*
+ * Copyright (c) 2001, Swedish Institute of Computer Science.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the Swedish Institute
+ * of Computer Science and its contributors.
+ * 4. Neither the name of the Institute nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ * $Id: httpd-fs.c,v 1.2 2004/08/09 22:19:35 adamdunkels Exp $
+ */
+
+#define HTTPD_FS_STATISTICS 1
+
+#include "uip.h"
+#include "httpd.h"
+#include "httpd-fs.h"
+#include "httpd-fsdata.h"
+
+#include <avr/pgmspace.h>
+
+#include "httpd-fsdata.c"
+
+#if HTTPD_FS_STATISTICS
+static unsigned long count[HTTPD_FS_NUMFILES];
+#endif /* HTTPD_FS_STATISTICS */
+
+/*-----------------------------------------------------------------------------------*/
+static u8_t
+httpd_fs_strcmp(const char *str1, prog_char *str2p)
+{
+ char str2[40];
+ u8_t i;
+ i = 0;
+
+ memcpy_P(str2, str2p, sizeof(str2) - 1);
+ str2[39] = 0;
+ loop:
+
+ if(str2[i] == 0 ||
+ str1[i] == '\r' ||
+ str1[i] == '\n') {
+ return 0;
+ }
+
+ if(str1[i] != str2[i]) {
+ return 1;
+ }
+
+
+ ++i;
+ goto loop;
+}
+/*-----------------------------------------------------------------------------------*/
+int
+httpd_fs_open(const char *name, struct httpd_fs_file *file)
+{
+#if HTTPD_FS_STATISTICS
+ u16_t i = 0;
+#endif /* HTTPD_FS_STATISTICS */
+ struct httpd_fsdata_file_noconst *f;
+
+ for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT;
+ f != NULL;
+ f = (struct httpd_fsdata_file_noconst *)f->next) {
+
+ if(httpd_fs_strcmp(name, f->name) == 0) {
+ file->data = f->data;
+ file->len = f->len;
+#if HTTPD_FS_STATISTICS
+ ++(count[i]);
+#endif /* HTTPD_FS_STATISTICS */
+ return 1;
+ }
+#if HTTPD_FS_STATISTICS
+ ++i;
+#endif /* HTTPD_FS_STATISTICS */
+
+ }
+ return 0;
+}
+/*-----------------------------------------------------------------------------------*/
+void
+httpd_fs_init(void)
+{
+#if HTTPD_FS_STATISTICS
+ u16_t i;
+ for(i = 0; i < HTTPD_FS_NUMFILES; i++) {
+ count[i] = 0;
+ }
+#endif /* HTTPD_FS_STATISTICS */
+}
+/*-----------------------------------------------------------------------------------*/
+#if HTTPD_FS_STATISTICS
+unsigned long httpd_fs_count
+(char *name)
+{
+ struct httpd_fsdata_file_noconst *f;
+ u16_t i;
+
+ i = 0;
+ for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT;
+ f != NULL;
+ f = (struct httpd_fsdata_file_noconst *)f->next) {
+
+ if(httpd_fs_strcmp(name, f->name) == 0) {
+ return count[i];
+ }
+ ++i;
+ }
+ return 0;
+}
+static unsigned long total;
+unsigned long
+httpd_fs_total(void)
+{
+ return total;
+}
+void
+httpd_fs_inc(void)
+{
+ ++total;
+}
+#endif /* HTTPD_FS_STATISTICS */
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-avr/apps/httpd-fs.h b/contiki-avr/apps/httpd-fs.h
new file mode 100644
index 0000000..71d6428
--- /dev/null
+++ b/contiki-avr/apps/httpd-fs.h
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2001, Swedish Institute of Computer Science.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the Swedish Institute
+ * of Computer Science and its contributors.
+ * 4. Neither the name of the Institute nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ * $Id: httpd-fs.h,v 1.2 2004/09/13 23:21:03 adamdunkels Exp $
+ */
+#ifndef __HTTPD_FS_H__
+#define __HTTPD_FS_H__
+
+#include "uip.h"
+
+#define HTTPD_FS_STATISTICS 1
+
+struct httpd_fs_file {
+ prog_char *data;
+ int len;
+};
+
+/* file must be allocated by caller and will be filled in
+ by the function. */
+int httpd_fs_open(const char *name, struct httpd_fs_file *file);
+
+#if HTTPD_FS_STATISTICS
+unsigned long httpd_fs_count(char *name);
+unsigned long httpd_fs_total(void);
+void httpd_fs_inc(void);
+#endif /* HTTPD_FS_STATISTICS */
+
+void httpd_fs_init(void);
+
+#endif /* __HTTPD_FS_H__ */
diff --git a/contiki-avr/apps/httpd-fs/404.html b/contiki-avr/apps/httpd-fs/404.html
new file mode 100644
index 0000000..a17711d
--- /dev/null
+++ b/contiki-avr/apps/httpd-fs/404.html
@@ -0,0 +1,8 @@
+<html>
+ <body bgcolor="white">
+ <center>
+ <h1>404 - file not found</h1>
+ <h3>Go <a href="/">here</a> instead.</h3>
+ </center>
+ </body>
+</html>
\ No newline at end of file
diff --git a/contiki-avr/apps/httpd-fs/cgi/files b/contiki-avr/apps/httpd-fs/cgi/files
new file mode 100644
index 0000000..eb3fbf5
--- /dev/null
+++ b/contiki-avr/apps/httpd-fs/cgi/files
@@ -0,0 +1,24 @@
+i /header.html
+t <h1>File statistics</h1><br><center><b>Total numer of page loads:
+c e
+t </b></center><br><table width="100%"><tr><td><a href="/index.html">/index.html</a></td><td>
+c a /index.html
+t </td></tr> <tr><td><a href="/vnc.html">/vnc.html</a></td><td>
+c a /vnc.html
+t </td></tr> <tr><td><a href="/vncviewer.jar">/vncviewer.jar</a></td><td>
+c a /vncviewer.jar
+t </td></tr> <tr><td><a href="/cgi/files">/cgi/files</a></td><td>
+c a /cgi/files
+t </td></tr> <tr><td><a href="/cgi/tcp">/cgi/tcp</a></td><td>
+c a /cgi/tcp
+t </td></tr> <tr><td><a href="/cgi/processes">/cgi/processes</a></td><td>
+c a /cgi/processes
+t </td></tr> <tr><td><a href="/style.css">/style.css</a></td><td>
+c a /style.css
+t </td></tr> <tr><td><a href="/404.html">/404.html</a></td><td>
+c a /404.html
+t </td></tr> <tr><td><a href="/img/screenshot.png">/img/screenshot.png</a></td><td>
+c a /img/screenshot.png
+t </td></tr></table>
+i /footer.plain
+.
\ No newline at end of file
diff --git a/contiki-avr/apps/httpd-fs/cgi/processes b/contiki-avr/apps/httpd-fs/cgi/processes
new file mode 100644
index 0000000..f34c940
--- /dev/null
+++ b/contiki-avr/apps/httpd-fs/cgi/processes
@@ -0,0 +1,7 @@
+i /header.html
+t <h1>System processes</h1><br><table width="100%">
+t <tr><th>ID</th><th>Name</th><th>Priority</th><th>Poll handler</th><th>Event handler</th></th></tr>
+c c
+t </table>
+i /footer.plain
+.
\ No newline at end of file
diff --git a/contiki-avr/apps/httpd-fs/cgi/tcp b/contiki-avr/apps/httpd-fs/cgi/tcp
new file mode 100644
index 0000000..a441142
--- /dev/null
+++ b/contiki-avr/apps/httpd-fs/cgi/tcp
@@ -0,0 +1,7 @@
+i /header.html
+t <h1>Current connections</h1><br><table width="100%">
+t <tr><th>Local</th><th>Remote</th><th>State</th><th>Retransmissions</th><th>Timer</th><th>Flags</th></tr>
+c b
+t </table>
+i /footer.plain
+.
\ No newline at end of file
diff --git a/contiki-avr/apps/httpd-fs/footer.plain b/contiki-avr/apps/httpd-fs/footer.plain
new file mode 100644
index 0000000..1fd5f4f
--- /dev/null
+++ b/contiki-avr/apps/httpd-fs/footer.plain
@@ -0,0 +1,2 @@
+ </body>
+</html>
\ No newline at end of file
diff --git a/contiki-avr/apps/httpd-fs/header.html b/contiki-avr/apps/httpd-fs/header.html
new file mode 100644
index 0000000..9a4b340
--- /dev/null
+++ b/contiki-avr/apps/httpd-fs/header.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+ <head>
+ <title>Welcome to the Contiki-demo server!</title>
+ <link rel="stylesheet" type="text/css" href="/style.css">
+ </head>
+ <body bgcolor="#fffeec" text="black">
+
+ <div class="menublock">
+
+ <div class="menu">
+ <p class="border-title">Menu</p>
+ <p class="menu">
+
+ <a href="/">Front page</a><br>
+ <a href="/vnc.html">Remote display</a><br>
+ <a href="/cgi/files">File statistics</a><br>
+ <a href="/cgi/tcp">Network connections</a><br>
+ <a href="/cgi/processes">System processes</a><br>
+
+ </p>
+ </div>
+ </div>
+
+ <div class="contentblock">
+ <p class="border-title">
+ Welcome to the <a href="http://www.sics.se/~adam/contiki/">Contiki</a>
+ demo server!
+ </p>
diff --git a/contiki-avr/apps/httpd-fs/img/screenshot.png b/contiki-avr/apps/httpd-fs/img/screenshot.png
new file mode 100644
index 0000000..d895e2e
--- /dev/null
+++ b/contiki-avr/apps/httpd-fs/img/screenshot.png
Binary files differ
diff --git a/contiki-avr/apps/httpd-fs/index.html b/contiki-avr/apps/httpd-fs/index.html
new file mode 100644
index 0000000..07c56ce
--- /dev/null
+++ b/contiki-avr/apps/httpd-fs/index.html
@@ -0,0 +1,74 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+ <head>
+ <title>Welcome to the Contiki-demo server!</title>
+ <link rel="stylesheet" type="text/css" href="/style.css">
+ </head>
+ <body bgcolor="#fffeec" text="black">
+
+ <div class="menublock">
+
+ <div class="menu">
+ <p class="border-title">Menu</p>
+ <p class="menu">
+
+ <a href="/">Front page</a><br>
+ <a href="/vnc.html">Remote display</a><br>
+ <a href="/cgi/files">File statistics</a><br>
+ <a href="/cgi/tcp">Network connections</a><br>
+ <a href="/cgi/processes">System processes</a><br>
+
+ </p>
+ </div>
+ </div>
+
+ <div class="contentblock">
+ <p class="border-title">
+ Welcome to the <a href="http://www.sics.se/~adam/contiki/">Contiki</a>
+ demo server!
+ </p>
+
+ <p class="intro">
+ The web pages you are watching are served by a <a
+ href="http://www.sics.se/~adam/contiki/apps/webserver.html">web
+ server</a> running under the <a
+ href="http://www.sics.se/~adam/contiki/">Contiki operating
+ system</a> on an an <a
+ href="http://www.ethernut.de/en/">Ethernut</a> embedded
+ Ethernet board, which consists of a 14 MHz AVR Atmega128
+ microcontroller with 32 kilobytes of RAM and 128 kilobytes
+ of flash ROM, and a RealTek RTL8019AS Ethernet chip.
+ </p>
+
+ <p class="clink">
+ <a href="http://contiki-demo.sics.se"><b><tt>http://contiki-demo.sics.se/</tt></b></a>
+ </p>
+
+
+ <h2>Remote display</h2>
+ <p>
+ It it possible to remotely access the Contiki desktop of
+ this server directly from your web browser! See the <a
+ href="vnc.html">remote display</a> page.
+ </p>
+ <h2>Screenshot</h2>
+ <p>
+ This is what the virtual desktop of this server looks
+ like:
+ </p>
+ <center>
+ <img src="/img/screenshot.png" alt="Screenshot">
+ </center>
+ <h2>Memory usage</h2>
+ <p>
+ The entire Contiki AVR system uses slightly more than 20 k
+ RAM, of which 6 k is used for the virtual display 8 k for
+ the web browser. All code and these web pages are stored
+ in the microcontroller's on-chip flash ROM.
+ </p>
+ <p align="right">
+ /<a href="http://www.sics.se/%7eadam/">Adam Dunkels</a>
+ </p>
+
+ </body>
+</html>
\ No newline at end of file
diff --git a/contiki-avr/apps/httpd-fs/style.css b/contiki-avr/apps/httpd-fs/style.css
new file mode 100644
index 0000000..84abd08
--- /dev/null
+++ b/contiki-avr/apps/httpd-fs/style.css
@@ -0,0 +1,184 @@
+h1
+{
+ text-align: center;
+ font-size:14pt;
+ font-family:arial,helvetica;
+ font-weight:bold;
+ padding:10px;
+}
+
+body
+{
+
+ background-color: #fffeec;
+ color:TEXTCOLOR;
+
+ font-size:8pt;
+ font-family:arial,helvetica;
+}
+
+.menublock
+{
+ position:absolute;
+ top:10px;
+ left:0%;
+ width:14%;
+ float:left;
+
+ padding:10px;
+ margin:4px;
+
+ border: solid 1px;
+ background-color: #fffcd2;
+ text-align:left;
+
+ font-size:10pt;
+}
+
+.contentblock
+{
+ position:absolute;
+ top:10px;
+ left:17%;
+ width:52%;
+ float:left;
+
+ padding:10px;
+ margin:4px;
+ margin-bottom:30px;
+
+ border: 1px dotted;
+ background-color: white;
+
+ font-size:8pt;
+ font-family:arial,helvetica;
+
+}
+
+.newsblock
+{
+ position:absolute;
+ top:10px;
+ left:72%;
+ width:24%;
+ float:left;
+
+ padding:10px;
+ margin:4px;
+
+ border: solid 1px;
+ background-color: #fffcd2;
+ text-align:left;
+ font-size:8pt;
+
+}
+
+
+
+p.intro
+{
+ margin-left:20px;
+ margin-right:20px;
+
+ font-size:10pt;
+ font-weight:bold;
+ font-family:arial,helvetica;
+}
+
+p.clink
+{
+ font-size:12pt;
+ font-family:courier,monospace;
+ text-align:center;
+}
+
+p.related
+{
+ font-size:10pt;
+ font-family:arial,helvetica;
+ text-align:center;
+}
+
+
+
+img.right
+{
+ float:right;
+ margin:10px;
+}
+
+img.left
+{
+ float:left;
+ margin:10px;
+}
+
+p.fig
+{
+ border: solid 1px;
+
+ text-align: center;
+
+ padding: 10px;
+ margin:10px;
+
+ font-size:7pt;
+}
+
+p.rfig
+{
+ border: solid 1px;
+
+ text-align: center;
+
+ padding: 10px;
+ margin:10px;
+
+ font-size:7pt;
+
+ float:right;
+}
+
+p.lfig
+{
+ border: solid 1px;
+
+ text-align: center;
+
+ padding: 10px;
+ margin:10px;
+
+ font-size:7pt;
+
+ float:left;
+}
+
+p
+{
+ padding-left:10px;
+}
+
+p.right
+{
+ text-align:right;
+}
+
+p.border-title
+{
+ text-align:center;
+
+ font-size:14pt;
+
+ padding:0px;
+ margin:4px;
+ margin-bottom:10px;
+
+ color: TITLECOLOR;
+ background-color: #fffcba;
+ border: solid 1px;
+
+}
+
+
+
+
diff --git a/contiki-avr/apps/httpd-fs/vnc.html b/contiki-avr/apps/httpd-fs/vnc.html
new file mode 100644
index 0000000..496525c
--- /dev/null
+++ b/contiki-avr/apps/httpd-fs/vnc.html
@@ -0,0 +1,84 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+ <head>
+ <title>Welcome to the Contiki-demo server!</title>
+ <link rel="stylesheet" type="text/css" href="/style.css">
+ </head>
+ <body bgcolor="#fffeec" text="black">
+
+ <div class="menublock">
+
+ <div class="menu">
+ <p class="border-title">Menu</p>
+ <p class="menu">
+
+ <a href="/">Front page</a><br>
+ <a href="/vnc.html">Remote display</a><br>
+ <a href="/cgi/files">File statistics</a><br>
+ <a href="/cgi/tcp">Network connections</a><br>
+ <a href="/cgi/processes">System processes</a><br>
+
+ </p>
+ </div>
+ </div>
+
+ <div class="contentblock">
+ <p class="border-title">
+ Welcome to the <a href="http://www.sics.se/~adam/contiki/">Contiki</a>
+ demo server!
+ </p>
+
+ <p class="intro">
+ The Contiki VNC server lets you access the desktop from
+ the Contiki server in your web browser, from anywhere in
+ the world. Note that the device on which this is running
+ does not have any monitor or any other kind of display; in
+ fact, it does not even have a graphics chip.
+ </p>
+
+ <h3>Java client</h3>
+ <p>
+ The Java client makes it possible to access the virtual
+ Contiki display directly from the web browser. It requires
+ Java to be turned on in the browser.
+ </p>
+ <p>
+ When asked for a password, just click the "Ok" button
+ without typing in any password.
+ </p>
+ <center>
+ <b><a href="#" onClick='window.open("vncjava.html",
+ "Contiki",
+ "toolbar=no,location=no,status=yes,menubar=no,scrollbars=yes,resizable=yes");'>Click
+ here to launch in new window</a></b></center>
+ <br>
+ <center><b><a href="vncjava.html">Click here to launch in
+ this window</a></b>
+ </center>
+
+ <p>
+ The server is able to keep 8 connections up. In order to
+ avoid monopolization of the connections, each user is
+ only allowed to use the display for a short while.
+ </p>
+
+ <h3>Download VNC client</h3>
+ <p>
+ If you don't have Java installed, you can download a
+ free VNC client program from <a
+ href="http://www.realvnc.com">RealVNC</a>. Start the
+ program with <b>contiki-demo.sics.se:0</b> as the
+ display.
+ </p>
+
+ <h3>Unix/X clients</h3>
+ <p>
+ Unix/X VNC clients need the <tt>-bgr233</tt> option
+ to work. Use the following command:
+ </p>
+ <center><tt>vncviewer -bgr233 contiki-demo.sics.se:0</tt></center>
+ <p align="right">
+ /<a href="http://dunkels.com/adam/">Adam Dunkels</a>
+ </p>
+ </body>
+</html>
\ No newline at end of file
diff --git a/contiki-avr/apps/httpd-fs/vncjava.html b/contiki-avr/apps/httpd-fs/vncjava.html
new file mode 100644
index 0000000..3d6d04b
--- /dev/null
+++ b/contiki-avr/apps/httpd-fs/vncjava.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+ <head>
+ <title>Virtual Contiki Screen</title>
+ </head>
+
+ <body>
+ <center>
+ <applet code="vncviewer.class" archive="vncviewer.jar"
+ width="480" height="400">
+ <param name="PORT" value="5900">
+ Java must be enabled in your web browser for this to work.
+ </applet>
+ </center>
+ </body>
+</html>
diff --git a/contiki-avr/apps/httpd-fs/vncviewer.jar b/contiki-avr/apps/httpd-fs/vncviewer.jar
new file mode 100644
index 0000000..c1ebd81
--- /dev/null
+++ b/contiki-avr/apps/httpd-fs/vncviewer.jar
Binary files differ
diff --git a/contiki-avr/apps/httpd-fsdata.c b/contiki-avr/apps/httpd-fsdata.c
new file mode 100644
index 0000000..8c08165
--- /dev/null
+++ b/contiki-avr/apps/httpd-fsdata.c
@@ -0,0 +1,3316 @@
+static prog_char data_cgi_processes[] = {
+ /* /cgi/processes */
+ 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0,
+ 0x69, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e,
+ 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x74, 0x20, 0x3c, 0x68, 0x31,
+ 0x3e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x70, 0x72,
+ 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x3c, 0x2f, 0x68,
+ 0x31, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x74, 0x61, 0x62,
+ 0x6c, 0x65, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22,
+ 0x31, 0x30, 0x30, 0x25, 0x22, 0x3e, 0xa, 0x74, 0x20, 0x3c,
+ 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x49, 0x44, 0x3c,
+ 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x4e, 0x61,
+ 0x6d, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68,
+ 0x3e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x3c,
+ 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x50, 0x6f,
+ 0x6c, 0x6c, 0x20, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72,
+ 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x45,
+ 0x76, 0x65, 0x6e, 0x74, 0x20, 0x68, 0x61, 0x6e, 0x64, 0x6c,
+ 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x2f, 0x74,
+ 0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x63, 0x20,
+ 0x63, 0xa, 0x74, 0x20, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c,
+ 0x65, 0x3e, 0xa, 0x69, 0x20, 0x2f, 0x66, 0x6f, 0x6f, 0x74,
+ 0x65, 0x72, 0x2e, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xa, 0x2e,
+};
+
+static prog_char data_cgi_files[] = {
+ /* /cgi/files */
+ 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0,
+ 0x69, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e,
+ 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x74, 0x20, 0x3c, 0x68, 0x31,
+ 0x3e, 0x46, 0x69, 0x6c, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74,
+ 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x31,
+ 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x63, 0x65, 0x6e, 0x74,
+ 0x65, 0x72, 0x3e, 0x3c, 0x62, 0x3e, 0x54, 0x6f, 0x74, 0x61,
+ 0x6c, 0x20, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x20, 0x6f, 0x66,
+ 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x6c, 0x6f, 0x61, 0x64,
+ 0x73, 0x3a, 0xa, 0x63, 0x20, 0x65, 0xa, 0x74, 0x20, 0x3c,
+ 0x2f, 0x62, 0x3e, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65,
+ 0x72, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x74, 0x61, 0x62,
+ 0x6c, 0x65, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22,
+ 0x31, 0x30, 0x30, 0x25, 0x22, 0x3e, 0x3c, 0x74, 0x72, 0x3e,
+ 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65,
+ 0x66, 0x3d, 0x22, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e,
+ 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x2f, 0x69, 0x6e, 0x64,
+ 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x3c, 0x2f, 0x61,
+ 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e,
+ 0xa, 0x63, 0x20, 0x61, 0x20, 0x2f, 0x69, 0x6e, 0x64, 0x65,
+ 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x74, 0x20, 0x3c,
+ 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0x20,
+ 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x61,
+ 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x76, 0x6e,
+ 0x63, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x2f, 0x76,
+ 0x6e, 0x63, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x3c, 0x2f, 0x61,
+ 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e,
+ 0xa, 0x63, 0x20, 0x61, 0x20, 0x2f, 0x76, 0x6e, 0x63, 0x2e,
+ 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x74, 0x20, 0x3c, 0x2f, 0x74,
+ 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0x20, 0x3c, 0x74,
+ 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x61, 0x20, 0x68,
+ 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x76, 0x6e, 0x63, 0x76,
+ 0x69, 0x65, 0x77, 0x65, 0x72, 0x2e, 0x6a, 0x61, 0x72, 0x22,
+ 0x3e, 0x2f, 0x76, 0x6e, 0x63, 0x76, 0x69, 0x65, 0x77, 0x65,
+ 0x72, 0x2e, 0x6a, 0x61, 0x72, 0x3c, 0x2f, 0x61, 0x3e, 0x3c,
+ 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0xa, 0x63,
+ 0x20, 0x61, 0x20, 0x2f, 0x76, 0x6e, 0x63, 0x76, 0x69, 0x65,
+ 0x77, 0x65, 0x72, 0x2e, 0x6a, 0x61, 0x72, 0xa, 0x74, 0x20,
+ 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e,
+ 0x20, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c,
+ 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x63,
+ 0x67, 0x69, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x3e,
+ 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73,
+ 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c,
+ 0x74, 0x64, 0x3e, 0xa, 0x63, 0x20, 0x61, 0x20, 0x2f, 0x63,
+ 0x67, 0x69, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0xa, 0x74,
+ 0x20, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72,
+ 0x3e, 0x20, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e,
+ 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f,
+ 0x63, 0x67, 0x69, 0x2f, 0x74, 0x63, 0x70, 0x22, 0x3e, 0x2f,
+ 0x63, 0x67, 0x69, 0x2f, 0x74, 0x63, 0x70, 0x3c, 0x2f, 0x61,
+ 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e,
+ 0xa, 0x63, 0x20, 0x61, 0x20, 0x2f, 0x63, 0x67, 0x69, 0x2f,
+ 0x74, 0x63, 0x70, 0xa, 0x74, 0x20, 0x3c, 0x2f, 0x74, 0x64,
+ 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0x20, 0x3c, 0x74, 0x72,
+ 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72,
+ 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x70,
+ 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0x3e,
+ 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x70, 0x72, 0x6f, 0x63, 0x65,
+ 0x73, 0x73, 0x65, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f,
+ 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0xa, 0x63, 0x20,
+ 0x61, 0x20, 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x70, 0x72, 0x6f,
+ 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0xa, 0x74, 0x20, 0x3c,
+ 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0x20,
+ 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x61,
+ 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x73, 0x74,
+ 0x79, 0x6c, 0x65, 0x2e, 0x63, 0x73, 0x73, 0x22, 0x3e, 0x2f,
+ 0x73, 0x74, 0x79, 0x6c, 0x65, 0x2e, 0x63, 0x73, 0x73, 0x3c,
+ 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74,
+ 0x64, 0x3e, 0xa, 0x63, 0x20, 0x61, 0x20, 0x2f, 0x73, 0x74,
+ 0x79, 0x6c, 0x65, 0x2e, 0x63, 0x73, 0x73, 0xa, 0x74, 0x20,
+ 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e,
+ 0x20, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c,
+ 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x34,
+ 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x2f,
+ 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x3c, 0x2f,
+ 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64,
+ 0x3e, 0xa, 0x63, 0x20, 0x61, 0x20, 0x2f, 0x34, 0x30, 0x34,
+ 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x74, 0x20, 0x3c, 0x2f,
+ 0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0x20, 0x3c,
+ 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x61, 0x20,
+ 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x69, 0x6d, 0x67,
+ 0x2f, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f,
+ 0x74, 0x2e, 0x70, 0x6e, 0x67, 0x22, 0x3e, 0x2f, 0x69, 0x6d,
+ 0x67, 0x2f, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68,
+ 0x6f, 0x74, 0x2e, 0x70, 0x6e, 0x67, 0x3c, 0x2f, 0x61, 0x3e,
+ 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0xa,
+ 0x63, 0x20, 0x61, 0x20, 0x2f, 0x69, 0x6d, 0x67, 0x2f, 0x73,
+ 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x2e,
+ 0x70, 0x6e, 0x67, 0xa, 0x74, 0x20, 0x3c, 0x2f, 0x74, 0x64,
+ 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0x3c, 0x2f, 0x74, 0x61,
+ 0x62, 0x6c, 0x65, 0x3e, 0xa, 0x69, 0x20, 0x2f, 0x66, 0x6f,
+ 0x6f, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x6c, 0x61, 0x69, 0x6e,
+ 0xa, 0x2e, };
+
+static prog_char data_cgi_meminfo[] = {
+ /* /cgi/meminfo */
+ 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x6d, 0x65, 0x6d, 0x69, 0x6e, 0x66, 0x6f, 0,
+ 0x69, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e,
+ 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x74, 0x20, 0x74, 0x6a, 0x75,
+ 0x6e, 0x6b, 0xa, 0x69, 0x20, 0x2f, 0x66, 0x6f, 0x6f, 0x74,
+ 0x65, 0x72, 0x2e, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xa, 0x2e,
+ 0xa, };
+
+static prog_char data_cgi_tcp[] = {
+ /* /cgi/tcp */
+ 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x74, 0x63, 0x70, 0,
+ 0x69, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e,
+ 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x74, 0x20, 0x3c, 0x68, 0x31,
+ 0x3e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x63,
+ 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x3c, 0x2f, 0x68, 0x31, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0x3c,
+ 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x64, 0x74,
+ 0x68, 0x3d, 0x22, 0x31, 0x30, 0x30, 0x25, 0x22, 0x3e, 0xa,
+ 0x74, 0x20, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, 0x3e,
+ 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, 0x3e,
+ 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65,
+ 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x53,
+ 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c,
+ 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73,
+ 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f,
+ 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, 0x6d,
+ 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68,
+ 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, 0x68,
+ 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x63, 0x20, 0x62,
+ 0xa, 0x74, 0x20, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65,
+ 0x3e, 0xa, 0x69, 0x20, 0x2f, 0x66, 0x6f, 0x6f, 0x74, 0x65,
+ 0x72, 0x2e, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xa, 0x2e, };
+
+static prog_char data_img_screenshot_png[] = {
+ /* /img/screenshot.png */
+ 0x2f, 0x69, 0x6d, 0x67, 0x2f, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x70, 0x6e, 0x67, 0,
+ 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32,
+ 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x3a, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69,
+ 0x6b, 0x69, 0x2f, 0x70, 0x72, 0x65, 0x2d, 0x31, 0x2e, 0x31,
+ 0x20, 0x28, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x64,
+ 0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
+ 0x2f, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74,
+ 0x69, 0x6b, 0x69, 0x2f, 0x29, 0xd, 0xa, 0x43, 0x6f, 0x6e,
+ 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a,
+ 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67,
+ 0xd, 0xa, 0xd, 0xa, 0x89, 0x50, 0x4e, 0x47, 0xd, 0xa,
+ 0x1a, 0xa, 00, 00, 00, 0xd, 0x49, 0x48, 0x44, 0x52,
+ 00, 00, 0x1, 0xbb, 00, 00, 0x1, 0x65, 0x8, 0x3,
+ 00, 00, 00, 0x45, 0x83, 0xb6, 0x73, 00, 00, 0x3,
+ 00, 0x50, 0x4c, 0x54, 0x45, 00, 0x1, 00, 0x2, 00,
+ 0x5, 00, 0x2, 00, 0x4, 00, 0x6, 0x7, 00, 00,
+ 0x9, 0x1, 00, 0x5, 0x2, 0x7, 0x6, 0x3, 0x9, 0xd,
+ 00, 0x8, 0xa, 0x3, 0x1, 0x10, 00, 0x1, 0xb, 0x4,
+ 0x3, 0x8, 0x5, 0xa, 0x9, 0x6, 0xc, 0xd, 0x6, 0x5,
+ 0x10, 0x4, 0xc, 0xc, 0x9, 0xe, 0x12, 0x7, 0xe, 0x22,
+ 0x24, 00, 0x16, 00, 0xff, 0x22, 0x22, 0x43, 0x2a, 0x24,
+ 0x37, 0x2d, 0x25, 0x49, 0x27, 0x29, 0x45, 0x2e, 0x29, 0x3c,
+ 0x2d, 0x28, 0x46, 0x2c, 0x2a, 0x42, 0x2c, 0x2c, 0x3e, 0x2d,
+ 0x2b, 0x43, 0x2f, 0x2d, 0x3b, 0x2b, 0x2d, 0x4a, 0x31, 0x2c,
+ 0x3f, 0x30, 0x2b, 0x49, 0x2e, 0x2f, 0x41, 0x33, 0x2d, 0x41,
+ 0x31, 0x2f, 0x3c, 0x31, 0x2e, 0x47, 0x34, 0x2e, 0x42, 0x32,
+ 0x2f, 0x48, 0x34, 0x31, 0x3f, 0x34, 0x2f, 0x4d, 0x32, 0x32,
+ 0x45, 0x33, 0x31, 0x49, 0x36, 0x2e, 0x53, 0x31, 0x35, 0x42,
+ 0x34, 0x32, 0x4a, 0x31, 0x2f, 0x63, 0x38, 0x32, 0x46, 0x35,
+ 0x33, 0x4b, 0x31, 0x35, 0x4c, 0x38, 0x32, 0x51, 0x36, 0x34,
+ 0x4c, 0x3a, 0x34, 0x48, 0x37, 0x35, 0x4e, 0x36, 0x37, 0x4a,
+ 0x39, 0x34, 0x53, 0x3b, 0x35, 0x49, 0x39, 0x37, 0x45, 0x39,
+ 0x36, 0x4f, 0x38, 0x38, 0x4b, 0x38, 0x36, 0x5a, 0x3a, 0x37,
+ 0x50, 0x3b, 0x36, 0x55, 0x39, 0x39, 0x4c, 0x40, 0x34, 0x55,
+ 0x3c, 0x39, 0x47, 0x3c, 0x37, 0x56, 0x38, 0x39, 0x57, 0x3e,
+ 0x38, 0x4c, 0x3e, 0x38, 0x4d, 0x3b, 0x39, 0x52, 0x3c, 0x3e,
+ 0x3b, 0x3d, 0x3b, 0x49, 0x3c, 0x3a, 0x53, 0x3a, 0x3b, 0x58,
+ 0x3a, 0x3c, 0x59, 0x41, 0x3e, 0x4d, 0x44, 0x3e, 0x52, 0x46,
+ 0x4a, 0x57, 0x6e, 0x6d, 0x54, 0x73, 0x75, 0x72, 0x8d, 0x8d,
+ 0xa3, 0x90, 0x90, 0xa6, 0x94, 0x91, 0xa1, 0x92, 0x92, 0xa8,
+ 0x95, 0x91, 0xaf, 0x94, 0x94, 0xaa, 0x93, 0x93, 0xb5, 0x95,
+ 0x95, 0xab, 0x92, 0x96, 0xb1, 0x9c, 0x95, 0xa1, 0x99, 0x95,
+ 0xb2, 0x97, 0x97, 0xad, 0x9b, 0x98, 0xa9, 0x9a, 0x9a, 0xb0,
+ 0x9d, 0x9a, 0xab, 0x99, 0x99, 0xbc, 0xa0, 0x9a, 0xa5, 0x91,
+ 0x91, 0xff, 0x98, 0x9b, 0xb7, 0x95, 0x99, 0xce, 0x9c, 0x9c,
+ 0xb2, 0x9a, 0x9e, 0xad, 0x9f, 0x9c, 0xac, 0xa0, 0x9d, 0xae,
+ 0xa3, 0x9b, 0xb4, 0xa0, 0x9c, 0xb9, 0x9e, 0x9e, 0xb5, 0xa4,
+ 0x9e, 0xa9, 0x9c, 0x9f, 0xbb, 0xa2, 0x9f, 0xaf, 0xa0, 0xa1,
+ 0xab, 0xa2, 0x9e, 0xbb, 0xa0, 0xa0, 0xb6, 0x9e, 0xa2, 0xb1,
+ 0x9d, 0xa1, 0xbc, 0xa3, 0x9f, 0xbd, 0xa1, 0xa0, 0xc3, 0xa3,
+ 0xa4, 0xad, 0xa3, 0xa3, 0xb9, 0xa5, 0xa1, 0xbf, 0xa6, 0xa3,
+ 0xb4, 0xa0, 0xa4, 0xc0, 0xa8, 0xa4, 0xb5, 0xa7, 0xa3, 0xc1,
+ 0xa7, 0xa9, 0xa6, 0xaa, 0xa6, 0xb7, 0xa7, 0xa7, 0xbd, 0xa5,
+ 0xa8, 0xc4, 0xa9, 0xaa, 0xb4, 0xab, 0xa7, 0xc5, 0xa7, 0xaa,
+ 0xc6, 0xa8, 0xab, 0xc7, 0xb9, 0xb5, 0xa7, 0xb6, 0xb1, 0xd0,
+ 0xb8, 0xb4, 0xd2, 0xbc, 0xb3, 0xd9, 0xba, 0xb6, 0xd4, 0xbf,
+ 0xb7, 0xdd, 0xb5, 0xb6, 0xff, 0xbf, 0xba, 0xd9, 0xbc, 0xbc,
+ 0xe0, 0xc4, 0xbc, 0xd5, 0xc3, 0xbb, 0xe1, 0xc1, 0xc1, 0xd8,
+ 0xc6, 0xc2, 0xe1, 0xc6, 0xc7, 0xd1, 0xcb, 0xc3, 0xdc, 0xc8,
+ 0xc4, 0xe3, 0xc7, 0xc7, 0xde, 0xcd, 0xc5, 0xde, 0xca, 0xc6,
+ 0xe5, 0xce, 0xc6, 0xdf, 0xc9, 0xc9, 0xe0, 0xca, 0xcb, 0xd5,
+ 0xca, 0xca, 0xe1, 0xd0, 0xc8, 0xe1, 0xcb, 0xcb, 0xe2, 0xcd,
+ 0xc9, 0xe8, 0xcd, 0xcd, 0xd7, 0xcb, 0xca, 0xee, 0xd2, 0xca,
+ 0xe4, 0xd1, 0xcc, 0xeb, 0xcf, 0xce, 0xe6, 0xd2, 0xce, 0xe0,
+ 0xd4, 0xcc, 0xe6, 0xcd, 0xcc, 0xfe, 0xd5, 0xcc, 0xf3, 0xd2,
+ 0xd3, 0xdd, 0xd4, 0xcf, 0xef, 0xd5, 0xd1, 0xe3, 0xd7, 0xcf,
+ 0xe9, 0xdc, 0xda, 0xab, 0xd6, 0xd1, 0xf0, 0xd2, 0xd6, 0xe6,
+ 0xd7, 0xd2, 0xf1, 0xda, 0xd2, 0xeb, 0xd6, 0xd6, 0xee, 0xdb,
+ 0xd7, 0xf6, 0xdd, 0xd9, 0xeb, 0xe0, 0xd7, 0xf1, 0xdc, 0xdd,
+ 0xe7, 0xdb, 0xda, 0xff, 0xdb, 0xdf, 0xef, 0xde, 0xde, 0xf5,
+ 0xe2, 0xde, 0xf0, 0xe5, 0xde, 0xea, 0xe3, 0xe0, 0xe5, 0xe5,
+ 0xdd, 0xf7, 0xe3, 0xe0, 0xf2, 0xe2, 0xe2, 0xed, 0xe7, 0xe0,
+ 0xed, 0xe4, 0xe1, 0xf3, 0xe7, 0xdf, 0xf9, 0xe3, 0xe4, 0xef,
+ 0xe6, 0xe2, 0xf4, 0xea, 0xde, 0xff, 0xe8, 0xe0, 0xfa, 0xe9,
+ 0xe2, 0xee, 0xe7, 0xe4, 0xe9, 0xe4, 0xe3, 0xfb, 0xe6, 0xe2,
+ 0xff, 0xe5, 0xe6, 0xf0, 0xe8, 0xe4, 0xf6, 0xeb, 0xe4, 0xf0,
+ 0xee, 0xe4, 0xea, 0xe6, 0xe5, 0xfd, 0xe9, 0xe5, 0xf7, 0xec,
+ 0xe5, 0xf1, 0xef, 0xe3, 0xf7, 0xe7, 0xe8, 0xf2, 0xe8, 0xea,
+ 0xe7, 0xec, 0xe4, 0xfd, 0xea, 0xe6, 0xf8, 0xed, 0xe6, 0xf2,
+ 0xeb, 0xe8, 0xed, 0xe8, 0xe9, 0xf3, 0xeb, 0xe7, 0xfa, 0xee,
+ 0xe7, 0xf3, 0xe9, 0xea, 0xf4, 0xea, 0xec, 0xe9, 0xee, 0xe6,
+ 0xff, 0xe9, 0xe9, 0xff, 0xed, 0xea, 0xef, 0xef, 0xe8, 0xf5,
+ 0xe7, 0xeb, 0xfc, 0xec, 0xe9, 0xfb, 0xea, 0xeb, 0xf6, 0xea,
+ 0xea, 0xff, 0xf0, 0xe9, 0xf6, 0xed, 0xea, 0xfc, 0xec, 0xec,
+ 0xf7, 0xef, 0xec, 0xf1, 0xf2, 0xea, 0xf7, 0xef, 0xeb, 0xfd,
+ 0xed, 0xed, 0xf8, 0xf0, 0xed, 0xf2, 0xf6, 0xeb, 0xf2, 0xf0,
+ 0xec, 0xfe, 0xf3, 0xec, 0xf8, 0xee, 0xef, 0xf9, 0xf1, 0xed,
+ 0xff, 0xf4, 0xed, 0xf9, 0xef, 0xf0, 0xfa, 0xf0, 0xf1, 0xfb,
+ 0xf3, 0xef, 0xff, 0xf6, 0xef, 0xfb, 0xf7, 0xf0, 0xfc, 0xf2,
+ 0xf3, 0xfd, 0xf6, 0xf3, 0xf8, 0xf9, 0xf2, 0xff, 0xf5, 0xf5,
+ 0xff, 0xf6, 0xf6, 0xff, 0xff, 0xf5, 0xfc, 0xfd, 0xfb, 0xff,
+ 0xfe, 0xff, 0xfc, 0x6a, 0x56, 0x98, 0x6e, 00, 00, 00,
+ 0x9, 0x70, 0x48, 0x59, 0x73, 00, 00, 0xb, 0x13, 00,
+ 00, 0xb, 0x13, 0x1, 00, 0x9a, 0x9c, 0x18, 00, 00,
+ 00, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xd4, 0x7, 0x1c,
+ 0x7, 0x20, 0x1e, 0x87, 0x50, 0xcf, 0xea, 00, 00, 0x1e,
+ 0x78, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0xed, 0x9d, 0x9,
+ 0xf0, 0x2c, 0x47, 0x5d, 0xc7, 0xa9, 0x7e, 0xff, 0x54, 0x21,
+ 0xa4, 0x40, 0x7b, 0x3c, 0x30, 0x96, 0x1a, 0x15, 0x2f, 0xd4,
+ 0x10, 0x9, 0xa5, 0x18, 0xbc, 0xe2, 0x11, 0x83, 0xca, 0x4e,
+ 0xd4, 0xbf, 0x7, 0x6a, 0x40, 0xff, 0x1e, 0x29, 0x8d, 0xa0,
+ 0xf1, 00, 0xcb, 0x78, 0x4b, 0x83, 0x3a, 0x82, 0x57, 0xd4,
+ 0x60, 0x40, 0x25, 0x9a, 0xa0, 0xb2, 0x78, 0x3b, 0x9a, 0x60,
+ 0x41, 0x51, 0xcf, 0x32, 0x1a, 0xa2, 0xd1, 0x68, 0x12, 0x2a,
+ 0x2f, 0x88, 0x56, 0x99, 0x8a, 0x3c, 0x35, 0xf8, 0x2, 0x5,
+ 0x42, 0x4a, 0xdb, 0x9d, 0x3e, 0x7f, 0xdd, 0x3d, 0xb3, 0x3b,
+ 0x3d, 0x77, 0xef, 0xfe, 0xfa, 0xed, 0x9b, 0xff, 0x6c, 0xef,
+ 0x6c, 0xef, 0xec, 0x7c, 0xf6, 0xdb, 0xbf, 0xfe, 0x75, 0xf7,
+ 0xfc, 0xfa, 0x31, 0x4, 0x53, 0xaa, 0xe9, 0x31, 0xe4, 0x16,
+ 0x4c, 0x29, 0x26, 0x2e, 0xd8, 0x3d, 0x80, 0x29, 0xc1, 0x84,
+ 0xec, 0x52, 0x49, 0xb7, 0x9f, 0xfb, 0x8b, 0xb3, 0xf7, 0x3c,
+ 0xf2, 0xc6, 0x7b, 0xfe, 0xef, 0xf6, 0xfb, 0xee, 0xfa, 0x7,
+ 0xc0, 0xee, 0xca, 0x2b, 0xaf, 0x7c, 0xe0, 0x22, 0x9b, 0x1e,
+ 0xb8, 0x72, 0xe9, 0x69, 0x94, 0xab, 0xb3, 0xec, 0xaf, 0x7c,
+ 0xf6, 0x73, 0x3f, 0xf8, 0xb3, 0x9f, 0x72, 0xc9, 0x25, 0x17,
+ 0x7e, 0xe8, 0xd3, 0x9f, 0xfa, 0xe9, 0x6f, 0x15, 0x39, 0x56,
+ 0x77, 0x17, 0xd9, 0x8a, 0x34, 0xa5, 0x9f, 0x23, 0x21, 0xea,
+ 0xbf, 0x7c, 0x26, 0x72, 0x8, 0xe9, 0x73, 0xe0, 0x42, 0xd3,
+ 0xc3, 0x9f, 0xf4, 0x9a, 0x5f, 0xb9, 0xfe, 0xd5, 0x37, 0xbd,
+ 0xe6, 0x8f, 0x5e, 0xf9, 0xca, 0x9b, 0xfe, 0xd2, 0xd7, 0xdd,
+ 0x2d, 0x3f, 0x24, 0xd3, 0x45, 0xb7, 0xa4, 0xa4, 0x3b, 0x83,
+ 0x84, 0x28, 0x24, 0x62, 0x87, 0x6c, 0x61, 0xd7, 0x78, 0xe0,
+ 0xb2, 0xbf, 0xf2, 0xdf, 0x3f, 0xed, 0xa6, 0xef, 0xfa, 0x91,
+ 0xaf, 0xbf, 0xf6, 0xf3, 0xbe, 0xf2, 0xdb, 0x3e, 0xeb, 0xfa,
+ 0x73, 0x81, 0xee, 0x2c, 0xbb, 0x14, 0x75, 0xa7, 0x51, 0x68,
+ 0x2d, 0xc1, 0xbf, 0xee, 0x7f, 0xef, 0xc0, 0x44, 0xd2, 0x1d,
+ 0x97, 0xbc, 0xee, 0xf8, 0xb9, 0x2f, 0x78, 0xd1, 0x85, 0xdf,
+ 0xfb, 0xc3, 0x1f, 0xf4, 0x27, 0x6f, 0xda, 0x37, 0xdd, 0xa9,
+ 0xa, 0xb1, 0x5, 0x3b, 0x52, 0xcf, 0x6e, 0xd9, 0x5f, 0xf9,
+ 0xbd, 0x1f, 0xf9, 0xaa, 0xeb, 0xbe, 0xfb, 0x5b, 0xbf, 0xe2,
+ 0x59, 0xd7, 0x5c, 0x75, 0xc5, 0x1f, 0xbe, 0x69, 0xcf, 0x74,
+ 0x27, 0x4, 0x55, 0x83, 0x24, 0x60, 0xd7, 0x74, 0xe0, 0xc2,
+ 0xd3, 0xeb, 0x9f, 0x71, 0xe3, 0x35, 0x57, 0x5f, 0x77, 0xcd,
+ 0xc5, 0xcf, 0xbf, 0xfa, 0xd3, 0x7e, 0xfe, 0xdc, 0x9e, 0xe9,
+ 0xce, 0x28, 0x6a, 0x27, 0xbb, 0x86, 0x3, 0x17, 0xfe, 0xad,
+ 0xff, 0xf4, 0xf3, 0x7f, 0xe7, 0x23, 0x2e, 0xfe, 0xd4, 0x8f,
+ 0xfb, 0xcc, 0x6f, 0xb8, 0xe6, 0xd2, 0x5f, 0xfb, 0x9b, 0x7d,
+ 0xd3, 0x9d, 0x32, 0x65, 0x2d, 0xd8, 0xd5, 0x1f, 0xb8, 0xf0,
+ 0xf4, 0xee, 0xb, 0x5f, 0xf6, 0x3, 0xdf, 0xf4, 0x2d, 0x3f,
+ 0xfa, 0xd5, 0xdf, 0xf7, 0x13, 0x1f, 0xf2, 0x1b, 0xef, 0xd9,
+ 0x23, 0xdd, 0xe9, 0x6, 0x23, 0x1, 0xcd, 0xc7, 0x5a, 0x7b,
+ 0x57, 0x77, 0x60, 0x22, 0xba, 0x3b, 0x73, 0xf9, 0xeb, 0xae,
+ 0xbd, 0xf6, 0x6b, 0x5e, 0xf4, 0xfd, 0xcf, 0xf9, 0xf2, 0x8f,
+ 0xfd, 0xfd, 0x50, 0x77, 0xda, 0x35, 0x4f, 0x4c, 0x77, 0xa6,
+ 0xd1, 0xef, 0xba, 0x6d, 0x46, 0x56, 0x44, 0x57, 0x91, 0xd,
+ 0x7, 0x26, 0x92, 0xce, 0x5c, 0x72, 0xc3, 0x5, 0x1f, 0xf5,
+ 0xc9, 0x9f, 0xf8, 0x94, 0x4b, 0x2f, 0xfb, 0xd2, 0x1b, 0xff,
+ 0x29, 0xd0, 0x9d, 0xf5, 0xcd, 0xb1, 0x5f, 0x65, 0x79, 0xe9,
+ 0xf6, 0x67, 0xbf, 0xe2, 0xb7, 0x7e, 0xef, 0xd7, 0x7f, 0xfb,
+ 0x37, 0x6f, 0xfc, 0xd5, 0x5f, 0xf8, 0xdd, 0xbf, 0xf3, 0x74,
+ 0x87, 0x69, 0xd9, 0xe9, 0xd1, 0x3f, 0x7f, 0xeb, 0xbf, 0x9d,
+ 0xfe, 0xd7, 0x3f, 0x3b, 0xf7, 0xcf, 0xff, 0xf1, 0xae, 0xbf,
+ 0x3e, 0x87, 0x7d, 0xd1, 0xfb, 0x30, 0x8e, 0xf0, 0xcd, 0x98,
+ 0x52, 0x4c, 0x82, 0x1d, 0xa6, 0x24, 0xd3, 0x17, 0x55, 0xec,
+ 0xfe, 0x11, 0x53, 0x92, 0x9, 0xd9, 0x21, 0x3b, 0x4c, 0xc8,
+ 0xe, 0x13, 0xb2, 0x43, 0x76, 0x98, 0x90, 0x1d, 0x26, 0x64,
+ 0x87, 0xa9, 0x99, 0x1d, 0x17, 0x69, 0xbd, 0x71, 0xfc, 0xd6,
+ 0xdc, 0x49, 0xc4, 0x6e, 0x9, 0xcc, 0xc1, 0xd4, 0x3b, 0x35,
+ 0x5d, 0xec, 0xa6, 0x2b, 0xbc, 0x9d, 0xdd, 0xa6, 0xac, 0xb5,
+ 0xfb, 0xc6, 0xb5, 0x2c, 0x7e, 0xd, 0x8a, 0x5c, 0xe3, 0x55,
+ 0x1f, 0x88, 0xdd, 0x7a, 0xed, 0xc1, 0x23, 0xf0, 0x9a, 0xc7,
+ 0xb2, 0xd3, 0xea, 0x5b, 0xeb, 0x5f, 0xc5, 0x66, 0x2b, 0x7e,
+ 0x21, 0xf2, 0xd5, 0xa, 0x2c, 0x41, 0xdd, 0xd, 0xc5, 0xae,
+ 0xba, 0xd4, 0xea, 0x6a, 0xaf, 0xc5, 0x85, 0xd6, 0x57, 0x98,
+ 0x78, 0x14, 0xda, 0xb3, 0xab, 0x7e, 0xf, 0x7a, 0x2b, 0x7f,
+ 0x3, 0x52, 0x8c, 0x64, 0x2d, 0x3f, 0x5, 0xaf, 0xfa, 0x60,
+ 0xec, 0x36, 0xff, 0xcd, 0xd5, 0x6, 0x57, 0x78, 0xed, 0x51,
+ 0x88, 0x60, 0x7, 0x1e, 0x8e, 0xbd, 0x23, 0x6b, 0xb4, 0x77,
+ 0x83, 0xeb, 0x8e, 0x8, 0x99, 0x69, 0x95, 0xad, 0x61, 0xeb,
+ 0xc2, 0x52, 0x68, 0x6d, 0xef, 0x14, 0x71, 0xc5, 0xe, 0x94,
+ 0xa6, 0x7e, 0x10, 0x78, 0xd5, 0x87, 0xb4, 0x77, 0x52, 0x71,
+ 0x5c, 0xa9, 0x4c, 0x49, 0xae, 0x83, 0xee, 0x64, 0x3b, 0x53,
+ 0xfd, 0x6, 0x24, 0xa5, 0x35, 0x1, 0xbf, 0x84, 0x35, 0x41,
+ 0x76, 0x43, 0xb7, 0x33, 0xd7, 0xaa, 0x45, 0x21, 0xaf, 0xf9,
+ 0xda, 0x5c, 0xf3, 0x58, 0x7b, 0x87, 0x69, 0x79, 0xda, 0xdc,
+ 0xdd, 0xce, 0x3c, 0xd9, 0xa3, 0x44, 0xf3, 0x2a, 0x1d, 0x8b,
+ 0x44, 0x37, 0x49, 0xed, 0x46, 0xa7, 0xbc, 0x53, 0x6a, 0x28,
+ 0x87, 0xf6, 0xff, 0x5e, 0x7, 0xc1, 0x4e, 0x5e, 0x32, 0xb6,
+ 0x49, 0xc7, 0x1b, 0x70, 0x39, 0x3d, 0x9e, 0x34, 0x89, 0xcf,
+ 0xd, 0x12, 0xb2, 0x8b, 0xd1, 0x9d, 0xb8, 0x80, 0x92, 0x1d,
+ 0xcd, 0xe9, 0x6, 0x60, 0x2e, 0x24, 0xe8, 0x6d, 0x29, 0xd8,
+ 0x9a, 0x9c, 0x5e, 0xba, 0x3, 0x9f, 0x8b, 0xba, 0xeb, 0xaa,
+ 0x3b, 0x5b, 0x67, 0xca, 0x7a, 0x73, 0xc3, 0x94, 0x6, 0xdb,
+ 0x63, 0xb0, 0x35, 0x39, 0xfd, 0x74, 0x27, 0x78, 0x6d, 0x7e,
+ 0x2e, 0x39, 0xea, 0xae, 0xaf, 0xee, 0xec, 0x56, 0x3f, 0x72,
+ 0xc9, 0xd4, 0xd5, 0x20, 0xcc, 0xe9, 0xaf, 0xbb, 0xe3, 0xdc,
+ 0x2b, 0x7, 0xd9, 0xc5, 0xeb, 0xee, 0x18, 0x6c, 0x3, 0xc5,
+ 0x1d, 0x8b, 0xfd, 0xe3, 0x30, 0x7, 0x75, 0xb7, 0x4, 0xdd,
+ 0x1, 0x76, 0x9e, 0xa5, 0x93, 0x35, 0x6a, 0xae, 0xb7, 0x30,
+ 0x7, 0xed, 0xdd, 0x6c, 0xec, 0x58, 0x7d, 0x53, 0xaf, 0x4b,
+ 0x83, 0x31, 0x3e, 0x35, 0x94, 0x83, 0xec, 0x22, 0xd8, 0x2d,
+ 0x2c, 0x21, 0xbb, 0x7d, 0x67, 0xb7, 0xaa, 0x4d, 0xc8, 0x2e,
+ 0x9, 0x76, 0x12, 0xa0, 0x45, 0x69, 0x32, 0x91, 0x5d, 0x2,
+ 0xec, 0x4, 0x2f, 0xa3, 0xb7, 0x6a, 0x83, 0xec, 0x12, 0x61,
+ 0x67, 0x45, 0x67, 0xa4, 0x87, 0xec, 0x52, 0x61, 0xe7, 0x1a,
+ 0x3d, 0x95, 0x85, 0xec, 0x52, 0x68, 0xab, 0x6c, 0xc9, 0x43,
+ 0x76, 0x4b, 0x67, 0x17, 0x34, 0x32, 0xf, 0x97, 0x5d, 0x4e,
+ 0xc5, 0x86, 0xd2, 0x5c, 0x5f, 0x44, 0xb3, 0x31, 0x7f, 0x82,
+ 0xfd, 0x79, 0xdb, 0x99, 0x4d, 0x99, 0x7, 0xc7, 0x8e, 0x56,
+ 0xcf, 0x36, 0xe0, 0x72, 0x9d, 0x2b, 0x20, 0x52, 0xb0, 0xcf,
+ 0xc2, 0xfd, 0x59, 0xdb, 0x2a, 0xa1, 0xf0, 0xe, 0x5a, 0x77,
+ 0x14, 0xe8, 0x4a, 0xf4, 0x12, 0x57, 0x3, 0x7a, 0x79, 0x5,
+ 0xd6, 0x12, 0x93, 0xfb, 0xd5, 0xb, 0x42, 0xa7, 0xb9, 0xa4,
+ 0x29, 0x8e, 0x4, 0x39, 0x94, 0xa2, 0xee, 0xa6, 0xb3, 0x77,
+ 0xf5, 0xec, 0xaa, 0xd1, 0x84, 0x8a, 0x85, 0x91, 0xa3, 0xda,
+ 0x97, 0x30, 0xe5, 0xbe, 0x39, 0xd2, 0x7b, 0x75, 0x42, 0xdd,
+ 0x21, 0x3b, 0x87, 0x9d, 0x46, 0x52, 0x29, 0x88, 0x82, 0x6c,
+ 0xf5, 0x34, 0xb7, 0xfb, 0x9e, 0x42, 0x69, 0xaf, 0x7a, 0xb5,
+ 0xa3, 0xee, 0xe, 0xbb, 0x4f, 0xcc, 0xb7, 0x77, 0xa2, 0xe6,
+ 0x63, 0x50, 0x4d, 0x8e, 0xee, 0xc0, 0xbe, 0x84, 0xc7, 0xb4,
+ 0x42, 0xfb, 0xb5, 0x67, 0x3a, 0xe8, 0xce, 0x78, 0x7a, 0x7,
+ 0xcd, 0xe, 0xb6, 0x33, 0x25, 0x3b, 0x69, 0xb8, 0x6a, 0xec,
+ 0x9d, 0x92, 0xa6, 0xd2, 0x5f, 0x45, 0x99, 0x4a, 0xbb, 0x47,
+ 0xa7, 0x61, 0x57, 0xd7, 0x33, 0x8d, 0xfe, 0x5d, 0x32, 0xfd,
+ 0x99, 0x9e, 0xea, 0xa2, 0xd8, 0x39, 0xf3, 0x1b, 0xed, 0xb0,
+ 0xf3, 0x31, 0x9d, 0x70, 0x96, 0x63, 0x9f, 0x99, 0x90, 0xd4,
+ 0x69, 0x66, 0x52, 0x51, 0x61, 0x5a, 0x81, 0x39, 0xbe, 0x5e,
+ 0x80, 0x99, 0x8e, 0xe5, 0xf2, 0xc5, 0xf7, 0xab, 0x98, 0xde,
+ 0xe8, 0x28, 0x76, 0xee, 0xfc, 0x46, 0xcb, 0x2e, 0x3f, 0x5e,
+ 0x56, 0x6a, 0x98, 0x9, 0xe9, 0x5c, 0x7e, 0x61, 0xe9, 0x3c,
+ 0xff, 0x2e, 0xa7, 0xd0, 0x81, 0x60, 0x81, 0x4b, 0x61, 0x1b,
+ 0x35, 0x73, 0xb0, 0x3, 0xb2, 0x8b, 0xef, 0x13, 0x83, 0xf3,
+ 0x3d, 0x6c, 0x5b, 0xcb, 0x9b, 0xcb, 0x1, 0x66, 0x55, 0xc9,
+ 0xd9, 0x8f, 0x72, 0x86, 0x6, 0xcc, 0x19, 0x5d, 0x77, 0xd,
+ 0x33, 0x43, 0x68, 0xd0, 0xca, 0x74, 0xd8, 0x69, 0x81, 0x99,
+ 0xc6, 0x47, 0xae, 0x2d, 0x9d, 0x35, 0x69, 0xba, 0x6d, 0xc9,
+ 0x6, 0xf0, 0xec, 0xa2, 0xfb, 0xa2, 0x1d, 0xd9, 0xc5, 0xb2,
+ 0xf3, 0xe7, 0x3b, 0x51, 0x38, 0xc3, 0x4a, 0x6b, 0x10, 0xcc,
+ 0x69, 0x14, 0x48, 0xe5, 0xcc, 0x28, 0x98, 0x33, 0xbe, 0xee,
+ 0xea, 0x67, 0x64, 0x85, 0xec, 0x94, 0x4b, 00, 0xd9, 0xe5,
+ 0xc6, 0x69, 0xb7, 0x2d, 0x4c, 0xcb, 0x4e, 0xfb, 0x77, 0x43,
+ 0x78, 0x76, 0xf1, 0x63, 0x40, 0xaa, 0x1b, 0xb3, 0xaf, 0xee,
+ 0x8e, 0x8d, 0x37, 0xa4, 0x27, 0x37, 0x1e, 0x83, 0x39, 0x57,
+ 0x2a, 0x3f, 0x57, 0x38, 0xa9, 0x97, 0x33, 0x89, 0xee, 0xc2,
+ 0x99, 0x90, 0xb4, 0xc6, 0xbb, 0xf3, 0x75, 0x27, 0x7b, 0x4b,
+ 0x4c, 0xe7, 0xa6, 0xa7, 0x3b, 0xef, 0x55, 0x3a, 0x40, 0x8f,
+ 0x59, 0xdc, 0xd8, 0x2b, 0xf0, 0xec, 0x56, 0x9d, 0x75, 0x27,
+ 0x91, 0x40, 0x95, 0x99, 0xcb, 0x64, 0xe7, 0x15, 0x1f, 0xdb,
+ 0x6b, 0xe8, 0xe4, 0x2c, 0x41, 0x77, 0xb9, 0xee, 0x8d, 0xce,
+ 0x3d, 0xb, 0x18, 0xe8, 0x2e, 0xc8, 0x61, 0x50, 0x77, 0x93,
+ 0xcf, 0x79, 0xe8, 0x36, 0x5f, 0xc5, 0xd1, 0x9d, 0x60, 0x17,
+ 0xce, 0x5d, 0x74, 0xe6, 0x34, 0x1e, 0xdb, 0x76, 0xa8, 0x9b,
+ 0x33, 0xbf, 0xbd, 0x53, 0xad, 0x4a, 0x50, 0xe5, 0xd9, 0x96,
+ 0xa7, 0x6b, 0xef, 0xbc, 0x1c, 0xa, 0xc6, 0x20, 0xf2, 0xe9,
+ 0xd8, 0xf5, 0x9d, 0x6b, 0x34, 0xd4, 0xfc, 0xc6, 0x3e, 0xb3,
+ 0x1c, 0xfb, 0xcc, 0x84, 0x3c, 0xe4, 0x39, 0x7e, 0x34, 0x74,
+ 0x6e, 0xc2, 0xcb, 0x11, 0x7b, 0x81, 0xa6, 0xbb, 0xa0, 0x3b,
+ 0xfc, 0x3b, 0x4a, 0xe3, 0xda, 0x1d, 0x94, 0x36, 0xc, 0xf5,
+ 0xd1, 0x1e, 0xec, 0xb8, 0xdd, 0x65, 0x9c, 0x73, 0x76, 0x52,
+ 0xf3, 0x2a, 0x7, 0x7, 0xf2, 0xee, 0xec, 0x42, 0x4f, 0x27,
+ 0xd6, 0xf7, 0xc9, 0x47, 0x1e, 0x1e, 0x6b, 0x74, 0xaf, 0xb7,
+ 0xfa, 0x77, 0xed, 0xce, 0x5c, 0xfe, 0x9, 0xbe, 0x4b, 0xde,
+ 0x9d, 0x1d, 0x3, 0xb4, 0x36, 0xbb, 0x8c, 0x9f, 0xd4, 0xbc,
+ 0xca, 00, 0x3b, 0xd6, 0x89, 0x5d, 0xe0, 0xe9, 0x48, 0x5b,
+ 0x40, 0xa9, 0xd3, 0xb7, 0x4b, 0xbd, 0x57, 0x55, 0x3f, 0xbc,
+ 0x7f, 0x7c, 0x4e, 0x27, 0xa8, 0xd0, 0x76, 0xf9, 0x77, 0x8a,
+ 0xa6, 0x73, 0xce, 0xb9, 0x7b, 0xb6, 0xce, 0x79, 0x52, 0x5b,
+ 0x28, 0xfc, 0x2e, 0x94, 0xda, 0x5e, 0xd0, 0x16, 0xdf, 0x8b,
+ 0x32, 0x21, 0x2f, 0x2e, 0x1f, 0x9c, 0x7b, 0x22, 0x53, 0xaf,
+ 0xea, 0x6d, 0x95, 0xaf, 0x74, 0xc7, 0xb8, 0xde, 0x8f, 0x66,
+ 0x17, 0x7a, 0x3a, 0xa2, 0x47, 0x1d, 0xea, 0x88, 0xba, 0xaf,
+ 0x52, 0xdb, 0xae, 0xf6, 0x8f, 0x97, 0xfb, 0xd3, 0xb3, 0xb,
+ 0xeb, 0xcc, 0x9a, 0x73, 0x86, 0xe3, 0x5, 0xf0, 0x3c, 0x81,
+ 0x8b, 0x1, 0xbf, 0x4b, 0x1e, 0xb6, 0x51, 0xb7, 0x9e, 0x15,
+ 0x67, 0x8c, 0x6b, 0x76, 0x8e, 0xee, 0x94, 0xfa, 0xc4, 0xab,
+ 0x62, 0x2b, 0x5f, 0x95, 0x62, 0xe4, 0xe2, 0x9, 0xeb, 0xc4,
+ 0xce, 0xf1, 0x74, 0xc0, 0x8, 0x32, 0xac, 0x52, 0x55, 0x9f,
+ 0x3b, 0x50, 0x9c, 0x7a, 0x4, 0xc7, 0xe7, 0x74, 0x82, 0xaa,
+ 0x73, 0xb7, 0xee, 0x98, 0x3b, 0x4e, 0xa7, 0xfc, 0x3b, 0xea,
+ 0x2b, 0x31, 0xb4, 0x6e, 0xce, 0x77, 0xa7, 0x4e, 0x9, 0xbb,
+ 0xd9, 0x19, 0xd1, 0xb9, 0xf6, 0xce, 0x18, 0x37, 0xff, 0x55,
+ 0xc9, 0x8e, 0xb3, 0x2e, 0xf6, 0x2e, 0xaf, 0xf1, 0x74, 0x40,
+ 0x8f, 0x44, 0xf0, 0xe5, 0xf2, 0x9a, 0x5f, 0xb2, 0x7f, 0x7c,
+ 0x9e, 0xd3, 0xd9, 0xed, 0x9d, 0x7b, 0xce, 0xf5, 0x67, 0xb,
+ 0xcf, 0xd3, 0xf9, 0x29, 0x83, 0xef, 0xe2, 0x78, 0xee, 0xad,
+ 0x75, 0x27, 0xb6, 0x27, 0x81, 0xbd, 0x83, 0xaa, 0x3c, 0x1,
+ 0xbc, 0xa4, 0xee, 0xa2, 0xd9, 0xc1, 0x9a, 0x5f, 0x7b, 0x3a,
+ 0x76, 0xcc, 0x2b, 0xf8, 0x72, 0x39, 0xb0, 0x68, 0x66, 0xeb,
+ 0x1d, 0x4f, 0x27, 0xd7, 0x5d, 0x4d, 0x3b, 0xd3, 0x3d, 0x67,
+ 0x68, 0xe9, 0xec, 0x28, 0x5e, 0x83, 0xee, 0x9c, 0xef, 0x4e,
+ 0xe1, 0x8, 0x7b, 0x5b, 0x7b, 0xc7, 0xa4, 0x31, 0x3, 0xad,
+ 0x13, 0xd9, 0xce, 0x84, 0xd6, 0x50, 0x57, 0x97, 0xd6, 0xde,
+ 0xc5, 0xb2, 0xeb, 0x9a, 0xf2, 0xb9, 0xdd, 0xab, 0x39, 0xfc,
+ 0xbb, 0x16, 0xba, 0x9b, 0xd2, 0xbf, 0x4b, 0x36, 0xd5, 0xe8,
+ 0x8e, 0xfa, 0x7d, 0xd1, 0x74, 0x6a, 0xa7, 0x13, 0xd9, 0x75,
+ 0xb5, 0x77, 0x4e, 0x5f, 0x74, 0xc3, 0xfc, 0x4c, 0x64, 0xb7,
+ 0x38, 0x76, 0xb6, 0x7b, 0x79, 0xc7, 0xfc, 0xcc, 0x70, 0x1e,
+ 0xa6, 0xe4, 0x3e, 0xe9, 0xf8, 0x1d, 0xb2, 0xab, 0x61, 0x97,
+ 0xfb, 0x53, 0xfc, 0xea, 0xe6, 0x67, 0x7a, 0xa3, 0x75, 0x72,
+ 0x9a, 0xd8, 0xa4, 0xe3, 0x77, 0xc8, 0xae, 0x86, 0x1d, 0xb8,
+ 0xf4, 0xd, 0xf3, 0x33, 0x6b, 0xe6, 0x61, 0xd2, 0x9c, 0xe,
+ 0x30, 0x33, 0x13, 0xd9, 0xf5, 0xb4, 0x77, 0x6e, 0x5e, 0xdd,
+ 0xfc, 0xcc, 0x9a, 0x79, 0x98, 0xb9, 0xac, 0x2d, 0x7b, 0xce,
+ 0xcc, 0x44, 0x76, 0xbd, 0xda, 0x99, 0x21, 0xbb, 0xa6, 0xf9,
+ 0x99, 0xee, 0x3c, 0x4c, 0xe0, 0xd5, 0x22, 0xbb, 0x7d, 0xf5,
+ 0xef, 0x90, 0xdd, 0x78, 0xba, 0x3, 0xad, 0xc4, 0xe8, 0xf1,
+ 0xbb, 0x86, 0x4c, 0x4a, 0x91, 0xdd, 0x14, 0xf6, 0xce, 0x19,
+ 0xf5, 0x88, 0x1c, 0xbf, 0xab, 0x3, 0x2d, 0xc7, 0x56, 0x46,
+ 0x60, 0x37, 0xd0, 0x9c, 0x87, 0x7d, 0x6a, 0x67, 0x7a, 0xf7,
+ 0x48, 0x86, 0xe3, 0x77, 0xd4, 0x78, 0x70, 0xc6, 0xef, 0xd3,
+ 0xef, 0xd1, 0x6, 0xd3, 0xfa, 0x83, 0xe1, 0x5c, 0x97, 0x16,
+ 0xde, 0xdf, 0x44, 0xf1, 0x55, 0xf6, 0x90, 0x5d, 0x9b, 0xf1,
+ 0x3b, 0x30, 0xd2, 0x51, 0xe5, 0xe4, 0xa6, 0xef, 0xc5, 0x8e,
+ 0x2c, 0x34, 0xcd, 0x28, 0x6b, 0x51, 0xb, 0x4f, 0x14, 0x5f,
+ 0x65, 0x2f, 0x75, 0xb7, 0x7d, 0xfc, 0xce, 0x78, 0x70, 0x60,
+ 0xdc, 0xdf, 0xf6, 0x79, 0x52, 0x77, 0x3e, 00, 0x9c, 0xc9,
+ 0xd9, 0xda, 0xfb, 0x9b, 0x28, 0xbe, 0xca, 0xfe, 0xd9, 0xbb,
+ 0x56, 0xe3, 0x77, 0x30, 0x27, 0x60, 0x17, 0xce, 0x7, 0x60,
+ 0x60, 0x24, 0x9d, 0xb2, 0xe1, 0xd8, 0xf5, 0x8b, 0xaf, 0xb2,
+ 0x7f, 0xed, 0xcc, 0x9d, 0xe3, 0x77, 0xd4, 0x9d, 0x27, 0xb0,
+ 0x5d, 0x77, 0x9e, 0xbd, 0x1b, 0x94, 0x5d, 0xdf, 0xf8, 0x2a,
+ 0x7, 0xe7, 0xdf, 0x4d, 0x32, 0x9a, 0x3f, 0x4d, 0x7c, 0x95,
+ 0x6e, 0x53, 0x2f, 0xcd, 0x3a, 0x29, 0xd5, 0x4a, 0x29, 0x6b,
+ 0xf0, 0x27, 0xd8, 0x6f, 0x91, 0xca, 0x14, 0x7f, 0x34, 0x6a,
+ 0x6d, 0x17, 0xff, 0x5b, 0xd0, 0xd8, 0x76, 0x66, 0x9f, 0x38,
+ 0xf, 0xd1, 0xec, 0xc4, 0x89, 0xf2, 0x72, 0x93, 0xd6, 0x84,
+ 0x1, 0x76, 0xc, 0xb0, 0x63, 0x31, 0xe8, 0x8a, 0x72, 0x9d,
+ 0x60, 0x92, 0x57, 0x20, 0xf8, 0x16, 0x71, 0xec, 0x7a, 0xc6,
+ 0x57, 0xe9, 0xa8, 0x3b, 0x71, 0xa6, 0x8c, 0xc8, 0x7f, 0x15,
+ 0x2b, 0x42, 0x2c, 0x31, 0xb9, 0x5f, 0xbd, 0x50, 0x1d, 0x23,
+ 0xf7, 0xe5, 0xd1, 0x30, 0x87, 0x10, 0xfd, 0xad, 0x93, 0xd4,
+ 0x5d, 0xa9, 0x7e, 0xa5, 0x8c, 0xc0, 0x6f, 0x91, 0x84, 0xee,
+ 0x2c, 0x3b, 0xc2, 0xaa, 0xd3, 0x97, 0x5b, 0xad, 0x3b, 0x91,
+ 0x23, 0x65, 0x29, 0xf6, 0xcd, 0x91, 0xde, 0xab, 0x29, 0xeb,
+ 0xce, 0x5c, 0x81, 0xa1, 0x74, 0x37, 0x3e, 0x3b, 0xf0, 0xab,
+ 0xd3, 0x48, 0x88, 0x58, 0x20, 0xcc, 0x9a, 0x39, 0xf5, 0x94,
+ 0xd9, 0x7d, 0x4f, 0xa1, 0x4, 0xd6, 0xab, 0x29, 0xeb, 0x6e,
+ 0xad, 0xd1, 0xd, 0xa2, 0xbb, 0xb1, 0xfb, 0xc4, 0xa0, 0xee,
+ 0x44, 0xcd, 0xb7, 0x86, 0x6a, 0x72, 0x74, 0x7, 0xf6, 0xd5,
+ 0xf, 0x54, 0x2b, 0xd4, 0x69, 0xcf, 0xa0, 0xee, 0xba, 0xc6,
+ 0x57, 0xe9, 0xa5, 0x3b, 0xc1, 0x4e, 0x1a, 0xae, 0x1a, 0x7b,
+ 0xa7, 0x7e, 0x98, 0x4a, 0x7f, 0x15, 0x65, 0x22, 0xed, 0x1e,
+ 0xb1, 0xec, 0x8a, 0x4d, 0x4a, 0xdf, 0xde, 0xd9, 0x6f, 0xd1,
+ 0x5d, 0x77, 0x13, 0xf4, 0x45, 0xd3, 0xa0, 0x71, 0xdc, 0x27,
+ 0x95, 0x22, 0x25, 0xb9, 0x58, 0x5d, 0xfd, 0xb7, 0x88, 0x64,
+ 0xd7, 0x33, 0xbe, 0x4a, 0x37, 0x76, 0x7a, 0x2d, 0x45, 0xcf,
+ 0x1d, 00, 0x9e, 0x5d, 0xb9, 0x73, 0x1d, 0xc6, 0x66, 0x4f,
+ 0x62, 0x44, 0x9a, 0xc, 0x56, 0xa, 0x3d, 0x3e, 0x97, 0xf9,
+ 0x5f, 0xa0, 0x3, 0xbb, 0xde, 0xf1, 0x55, 0xba, 0xb1, 0xd3,
+ 0xfe, 0x1d, 0x23, 0xd, 0xec, 0x8a, 0xe6, 0xeb, 0xa0, 0xde,
+ 0xcb, 0x1a, 0xe1, 0x15, 0xe3, 0xb0, 0x3, 0xe7, 0x5c, 0xff,
+ 0xd9, 0x2d, 0x3f, 0xb7, 0xf6, 0xbb, 0x17, 0xdd, 0xd8, 0xf5,
+ 0x8b, 0xaf, 0xd2, 0x91, 0x1d, 0xa8, 0xed, 0xb5, 0x15, 0x13,
+ 0x3f, 0x67, 0x46, 0x76, 0xb3, 0x53, 0x94, 0xa5, 0xad, 0x34,
+ 0xde, 0x9f, 0xfd, 0x21, 0x8f, 0xc5, 0xce, 0xf6, 0x1b, 0x88,
+ 0xa6, 0xee, 0xda, 0xf7, 0x4c, 0xdb, 0xb2, 0xd3, 0xbf, 0x52,
+ 0x66, 0xac, 0x79, 0x37, 0x76, 0xbd, 0xe3, 0xab, 0xf4, 0x61,
+ 0xa7, 0x1a, 0x1f, 0xd6, 0xbf, 0x23, 0xac, 0xc5, 0x75, 0x30,
+ 0xdf, 0x9d, 0xf8, 0xde, 0x1f, 0x19, 0x9f, 0x9d, 0xac, 0xeb,
+ 0x18, 0xf0, 0x3d, 0xa3, 0x3f, 0x57, 0x9f, 0x3f, 0x21, 0xe1,
+ 0x7b, 0x63, 0xdb, 0x99, 0xfd, 0xe2, 0xab, 0xf4, 0xd6, 0x1d,
+ 0xd3, 0xfe, 0x1d, 0x73, 0x3d, 0xee, 0x36, 0xba, 0x83, 0xde,
+ 0x9f, 0xf5, 0x10, 0xc7, 0x64, 0x27, 0xf0, 0xa9, 0x4f, 0x22,
+ 0xe0, 0xd1, 0x81, 0x9d, 0x39, 0xff, 0xce, 0xec, 0xfa, 0xc6,
+ 0x57, 0xe9, 0xcd, 0x8e, 0x74, 0xd3, 0x9d, 0xb0, 0x77, 0xd0,
+ 0xfb, 0x9b, 0x86, 0x9d, 0xae, 0xe7, 0x7b, 0xeb, 0xe, 0x7c,
+ 0xf7, 0xee, 0xec, 0x7a, 0xc6, 0x57, 0xe9, 0x5d, 0x67, 0x3a,
+ 0xbd, 0x94, 0xd2, 0xde, 0x9, 0x7f, 0x67, 0xc7, 0x77, 0x7,
+ 0x56, 0x52, 0x79, 0x7f, 0x92, 0xdd, 0xf6, 0xf7, 0xe, 0x54,
+ 0x67, 0xae, 0x59, 0x60, 0xef, 0xda, 0x7f, 0xae, 0x53, 0xf7,
+ 0x7a, 0xef, 0x8d, 0x6b, 0xab, 0x4c, 0x3c, 0xd7, 0xa8, 0x8d,
+ 0x7f, 0xb7, 0xc3, 0x6b, 0x9b, 0xcb, 0xe3, 0x6b, 0xf8, 0x44,
+ 0xf9, 0xeb, 0x89, 0xf8, 0xdc, 0x6d, 0xe7, 0x1c, 0xc3, 0x6e,
+ 0xf2, 0x39, 0x7e, 0x54, 0x9d, 0x3e, 0xf1, 0x87, 0xee, 0x6a,
+ 0x3c, 0x26, 0x59, 0x9f, 0x30, 0x12, 0xef, 0xb3, 0x93, 0x1d,
+ 0xef, 0xe9, 0x52, 0xe6, 0x98, 0xa9, 0x3a, 0x9d, 0x26, 0x76,
+ 0x3c, 0x8c, 0xa9, 0xb2, 0x4, 0x76, 0xcc, 0x76, 0xc7, 0xd6,
+ 0x79, 0x4c, 0xba, 0x3e, 0x8c, 0xbf, 0x16, 0xbb, 0xd8, 0x74,
+ 0x29, 0x73, 0x36, 0x76, 0x41, 0x4c, 0x95, 0x45, 0xb0, 0xd3,
+ 0xf6, 0x62, 0xd, 0xb6, 0xb6, 0xd3, 0x2, 0xc8, 0xce, 0xda,
+ 0x36, 0x66, 0xcd, 0x8d, 0xb2, 0x1a, 0xfe, 0x2b, 0xb6, 0xbb,
+ 0x93, 0x81, 0xae, 0xb, 0x78, 0xe4, 0xe2, 0x64, 0xd7, 0x82,
+ 0x1d, 0x67, 0x9c, 0xeb, 0xc8, 0x2a, 0xde, 0x96, 0x83, 0xad,
+ 0xc9, 0x19, 0x5f, 0x77, 0xca, 0x3b, 0x33, 0xba, 0x83, 0xa3,
+ 0x9, 0x50, 0x76, 0x7a, 0xc, 0xc8, 0xfe, 0x73, 0x46, 0x1c,
+ 0x82, 0xad, 0x6a, 0xc3, 0xbb, 0x63, 0x13, 0x36, 0x67, 0x69,
+ 0xb2, 0x6b, 0x51, 0x67, 0xca, 0x7a, 0x13, 0xc6, 0x7f, 0x30,
+ 0xdb, 0x13, 0xb0, 0x35, 0x39, 0x13, 0xd8, 0x3b, 0xe2, 0xda,
+ 0x3b, 0x38, 0x8a, 0x7, 0xad, 0x5d, 0x23, 0xbb, 0x86, 0x87,
+ 0x2a, 0x8d, 0x10, 0x50, 0x9a, 0x1d, 0xfb, 0x5b, 0x9c, 0xec,
+ 0x76, 0xe9, 0xe, 0x86, 0xe2, 0x50, 0x1, 0x73, 0x24, 0x53,
+ 0x57, 0x83, 0x30, 0x67, 0x2a, 0x76, 0x56, 0x5f, 0xae, 0x52,
+ 0x80, 0x65, 0x52, 0xe3, 0x77, 0x60, 0xdb, 0x4e, 0x77, 0xc0,
+ 0x4, 0x82, 0xb1, 0x3f, 0x96, 0x14, 0xbb, 0x86, 0x88, 0x46,
+ 0x52, 0x5f, 0x27, 0x32, 0x6, 0x4b, 0x90, 0x33, 0x11, 0x3b,
+ 0x68, 0xd7, 0x80, 0xbd, 0x73, 0x9b, 0x9f, 0x44, 0x55, 0x76,
+ 0x60, 0xdb, 0xc6, 0xde, 0x99, 0x32, 0x6a, 0xc6, 0xfe, 0x12,
+ 0x64, 0xe7, 0x59, 0xba, 0x13, 0x10, 0x55, 0xcc, 0xcb, 0x19,
+ 0x9b, 0xdd, 00, 0xed, 0x3f, 0x16, 0xd4, 0x7f, 0x6c, 0x79,
+ 0x35, 0x62, 0x3f, 0x76, 0x4b, 0xf3, 0xef, 0x30, 0x35, 0x24,
+ 0x64, 0x87, 0xec, 0x90, 0x1d, 0xb2, 0xab, 0x61, 0xc7, 0x30,
+ 0xd5, 0xcf, 0x72, 0x47, 0x76, 0xc8, 0xe, 0xeb, 0x4c, 0xac,
+ 0x33, 0x91, 0x1d, 0xb2, 0x43, 0x76, 0xc8, 0xe, 0xd9, 0x21,
+ 0xbb, 0xb9, 0xd9, 0xcd, 0x35, 0xe7, 0x1, 0xd3, 00, 0xec,
+ 0xe0, 0x5c, 0xbf, 0xd5, 0x14, 0xf7, 0xdf, 0x21, 0x9f, 0x61,
+ 0xd9, 0xad, 0xea, 0x9f, 0x22, 0xbb, 0xc5, 0xb3, 0x5b, 0x35,
+ 0x65, 0x20, 0xbb, 0xa5, 0xb3, 0x5b, 0x35, 0xe6, 0x20, 0xbb,
+ 0x24, 0xec, 0xdd, 0x9, 0x68, 0xa2, 0x20, 0xbb, 0x54, 0xd8,
+ 0xc1, 0xe8, 0x6f, 0x2b, 0xf7, 0xf6, 0x12, 0x64, 0x87, 0x6d,
+ 0x15, 0x64, 0x37, 0x92, 0x7f, 0x37, 0x71, 0x4c, 0x2a, 0x64,
+ 0x37, 0xac, 0xee, 0x56, 0xd, 0xcf, 0x91, 0xdd, 0xf2, 0x75,
+ 0xb7, 0x72, 0xc3, 0x9e, 0xa2, 0xee, 0x90, 0x1d, 0xb2, 0xc3,
+ 0x3a, 0x13, 0xd9, 0xed, 0x6a, 0xab, 0xd4, 0xec, 0x21, 0xbb,
+ 0x44, 0x7c, 0x4, 0x5b, 0x7b, 0xee, 0xa5, 0xee, 0x4a, 0x42,
+ 0x48, 0xdd, 0xad, 0x8d, 0x84, 0x24, 0xef, 0x9b, 0xaf, 0xa0,
+ 0x9f, 0xbe, 0x67, 0xec, 0xca, 0xa, 0xcf, 0x6, 0x5c, 0x49,
+ 0x9a, 0x5e, 0xd4, 0x1c, 0xcb, 0x4, 0x75, 0xe7, 0x86, 0xf8,
+ 0xde, 0x33, 0x76, 0xa5, 0x40, 0x52, 0x21, 0xaa, 0xf0, 0x55,
+ 0x4f, 0xcc, 0x96, 0xa8, 0x17, 0x4c, 0x4e, 0x99, 0x18, 0xbb,
+ 0x95, 0x17, 0x5d, 0x65, 0xdf, 0xd8, 0x49, 0x20, 0x44, 0x54,
+ 0x8f, 0xa4, 0xac, 0x74, 0x6, 0xb7, 0x92, 0x9d, 0xda, 0x2f,
+ 0x49, 0x6a, 0xba, 0x33, 0xf5, 0xe5, 0x6a, 0x2f, 0xc7, 0x80,
+ 0x8c, 0xee, 0x36, 0x64, 0x8, 0xf7, 0x1f, 0x8a, 0x9d, 0xd0,
+ 0x60, 0x7a, 0xba, 0x33, 0x91, 0x18, 0x8d, 0xa5, 0xdb, 0x5f,
+ 0x7b, 0xb7, 0x45, 0x77, 0xe9, 0xda, 0x3b, 0x67, 0x9e, 0xca,
+ 0xfe, 0xb6, 0x33, 0xb7, 0xd8, 0xbb, 0x14, 0xfd, 0x3b, 0xa8,
+ 0xb8, 0xd5, 0xc9, 0x21, 0xcd, 0x35, 0x2a, 0xcb, 0x65, 0xf9,
+ 0x7, 0xb1, 0xec, 0x7c, 0x84, 0x7b, 0x3b, 0xc7, 0xaf, 0xc9,
+ 0xbf, 0xe3, 0xb, 0xf6, 0xef, 0xb8, 0xbd, 0xe1, 0xf5, 0x24,
+ 0x36, 0x4a, 0xc7, 0x3e, 0xb1, 0x6b, 0xf2, 0xef, 0x78, 0xb9,
+ 0x60, 0x76, 0xc, 0xb0, 0x63, 0x7, 0xcd, 0xce, 0x10, 0x94,
+ 0xf6, 0x8e, 0x8, 0x23, 0x47, 0xb4, 0xbd, 0x23, 0xda, 0xe,
+ 0x2e, 0x87, 0x1d, 0xe3, 0xf2, 0x9f, 0xbd, 0xa3, 0x5c, 0xe7,
+ 0xdb, 0x78, 0xe, 0x32, 0xee, 0x8a, 0x8c, 0xc1, 0x2, 0x73,
+ 0xf6, 0xb1, 0xad, 0x52, 0xf9, 0x1, 0xaa, 0x9d, 0x29, 0x40,
+ 0x95, 0xc0, 0xbf, 0x23, 0xf3, 0x5b, 0xc0, 0x1a, 0x76, 0x30,
+ 0xb6, 0x83, 0xd6, 0x20, 0x88, 0xa6, 0x22, 0x90, 0x8a, 0x23,
+ 0x9d, 0x9c, 0x3d, 0x6b, 0xab, 0x48, 0x3c, 0x44, 0x7b, 0x73,
+ 0x4a, 0x63, 0x44, 0x7b, 0xee, 0x3a, 0x7f, 0x41, 0x6d, 0x15,
+ 0x5, 0x8f, 0x9b, 0xb0, 0x2a, 0x27, 0x20, 0xda, 0x83, 0xca,
+ 0x67, 0xa, 0x27, 0x77, 0x73, 0xf6, 0xd0, 0xde, 0x95, 0xb2,
+ 0xb6, 0x2c, 0x6d, 0x23, 0xc5, 0xd5, 0xdd, 0xc2, 0xda, 0x99,
+ 0x5c, 0x44, 0xa3, 0xb2, 0x2a, 0xd3, 0xf0, 0x40, 0x44, 0x23,
+ 0x43, 0xd9, 0xcd, 0xd9, 0xc7, 0x76, 0x26, 0x31, 0xde, 0x1c,
+ 0x64, 0x67, 0xec, 0xdd, 0x2, 0xd9, 0xc1, 0xa8, 0x29, 0x26,
+ 0x4a, 0x95, 0x8d, 0xa6, 0x2, 0xa2, 0xb0, 0xc0, 0x9c, 0x3,
+ 0x1a, 0xbf, 0x5b, 0x8a, 0xaf, 0x87, 0xf7, 0x70, 0xa5, 0x9b,
+ 0x90, 0x1d, 0xb2, 0x43, 0x76, 0xc8, 0xe, 0xd9, 0x21, 0x3b,
+ 0x64, 0x87, 0xec, 0x90, 0x1d, 0xb2, 0x43, 0x76, 0x98, 0x92,
+ 0x64, 0x47, 0xec, 0xac, 0x11, 0x93, 0xb5, 0xfb, 0xeb, 0x65,
+ 0x9b, 0x54, 0x6c, 0xfe, 0xc8, 0x7d, 0x9d, 0x19, 0x7f, 0x99,
+ 0xa, 0x59, 0xce, 0x40, 0x29, 0xab, 0xa, 0xe4, 0xad, 0xce,
+ 0x26, 0x1b, 0x86, 0x1d, 0x6d, 0x48, 0x53, 0xb1, 0x2b, 0x39,
+ 0x71, 0x66, 0xf8, 0xb4, 0x99, 0xed, 0xb3, 0xb9, 0xe0, 0xd5,
+ 0x55, 0x2a, 0xe4, 0xf5, 0xd7, 0x1c, 0x3a, 0x5c, 0xed, 0xa2,
+ 0xd3, 0xdb, 0x1a, 0x81, 0x14, 0xe6, 0x97, 0x50, 0x6c, 0xff,
+ 0x4d, 0x14, 0x3, 0xb1, 0x53, 0xef, 0x30, 0x49, 0x3d, 0x9f,
+ 0x88, 0x5d, 0x35, 0x24, 0xc3, 0x65, 0xe7, 0xbd, 0x1a, 0x53,
+ 0x6b, 0xd1, 0xa3, 0x28, 0xaf, 0xb9, 0x52, 0x5c, 0xa6, 0x15,
+ 0x24, 0xb6, 0x95, 0x1c, 0x8b, 0x2c, 0x6b, 0xad, 0x94, 0xcd,
+ 0x65, 0x94, 0xc7, 0xab, 0x87, 0x2c, 0x41, 0x6c, 0xa3, 0x4b,
+ 0x93, 0xc0, 0x74, 0x9, 0x5c, 0x97, 0x10, 0x9e, 0x5b, 0x36,
+ 0x94, 0xee, 0x38, 0x44, 0xa6, 0x21, 0x4e, 0xcb, 0x4e, 0xcd,
+ 0xc1, 0x2b, 0xcb, 0x96, 0xb3, 0xec, 0x64, 0x9d, 0x59, 00,
+ 0x76, 0x59, 0x51, 0x3d, 0x53, 0xdb, 0xd6, 0xf5, 0xa0, 0xbc,
+ 0x8c, 0xf2, 0x78, 0xc5, 0xe, 0x96, 0x13, 0x5b, 0x9a, 0x3c,
+ 0x52, 0xbc, 0x4b, 0x61, 0x6c, 0x28, 0xad, 0xc8, 0x86, 0xd3,
+ 0x1d, 0xa5, 0x16, 0x9a, 0x7e, 0x36, 0x11, 0x3b, 0xd9, 0x73,
+ 0xf, 0x66, 0x48, 0xb6, 0xb2, 0x77, 0x12, 0x1c, 0x64, 0xa7,
+ 0x55, 0x23, 0xae, 0x52, 0x9c, 0x85, 0x92, 0xc7, 0x67, 0xe1,
+ 0x23, 0xb6, 0xb4, 0xc2, 0xaa, 0x4c, 0xdb, 0xe2, 0xcc, 0x2f,
+ 0xb3, 0x18, 0xd4, 0xde, 0x71, 0x41, 0x4c, 0x6e, 0xb8, 0xa1,
+ 0x37, 0x19, 0x3b, 0x6e, 0x6, 0x41, 0xd5, 0xd8, 0x59, 0x7b,
+ 0x7b, 0x57, 0xa7, 0xbb, 0xa8, 0x46, 0x8b, 0xaa, 0x7b, 0x39,
+ 0xaf, 0xd7, 0x48, 0x6c, 0x69, 0x42, 0x6d, 0xf2, 0xbd, 0x5c,
+ 0xeb, 0xce, 0x2f, 0x99, 0xf, 0xcd, 0x8e, 0xeb, 0xff, 0xd4,
+ 0x3c, 0x9b, 0x8e, 0x5d, 0xa9, 0xfe, 0xeb, 0xb1, 0xb3, 0x16,
+ 0x43, 0x31, 0xb0, 0x9d, 0xe9, 0xd9, 0xbb, 0xa8, 0xab, 0x2d,
+ 0xdb, 0x99, 0x19, 0xb7, 0x25, 0x78, 0xf6, 0x2e, 0x92, 0x5d,
+ 0xf5, 0x4b, 0x28, 0xb4, 0xa9, 0xe3, 0xba, 0x4, 0xc7, 0xde,
+ 0xd, 0xdd, 0xce, 0x84, 0x2d, 0x15, 0xaa, 0x9f, 0x1f, 0xa6,
+ 0x7f, 0xa7, 0xea, 0xcf, 0x62, 0xd0, 0x42, 0x8b, 0xa8, 0xc6,
+ 0x6c, 0x24, 0x3b, 0x59, 0x51, 0xca, 0x87, 0x12, 0x1f, 0x45,
+ 0xdf, 0x7c, 0xf9, 0xbe, 0x79, 0x28, 0x3b, 0x99, 0x83, 0xec,
+ 0x92, 0x60, 0xa7, 0x65, 0xe7, 0x8, 0xf, 0xd9, 0xa5, 0xc2,
+ 0x4e, 0xd6, 0x9c, 0x66, 0x7, 0xd9, 0xa5, 0xc3, 0x2e, 0xa8,
+ 0x34, 0x91, 0x5d, 0x32, 0xf6, 0xe, 0xd4, 0x99, 0x1c, 0x75,
+ 0x87, 0x75, 0x26, 0xb2, 0xc3, 0x3a, 0xf3, 0xe0, 0xd8, 0xc1,
+ 0x71, 0x9c, 0x36, 0x3e, 0x2, 0x7, 0x3e, 0x1e, 0xfa, 0x8,
+ 0xf3, 0xb2, 0x6b, 0x3f, 0xba, 0x4a, 0x9d, 0x4a, 0x93, 0x6b,
+ 0xd9, 0x21, 0xbb, 0x44, 0xd8, 0xd9, 0xee, 0x4c, 0xdb, 0x33,
+ 0x8d, 0xec, 0x12, 0x60, 0xc7, 0xfd, 0x9e, 0x95, 0x29, 0xfb,
+ 0xa2, 0x31, 0xf5, 0x65, 0xa7, 0xbb, 0x32, 0xc1, 0x78, 0x10,
+ 0xb2, 0x4b, 0x82, 0x9d, 0x19, 0xb4, 0x33, 0x63, 0xaf, 0x94,
+ 0x23, 0xbb, 0x64, 0x74, 0x37, 0xdb, 0x9c, 0x7, 0x4c, 0x3d,
+ 0x75, 0xc7, 0x7d, 0x7b, 0xc7, 0x51, 0x77, 0xa9, 0xb4, 0x33,
+ 0x67, 0x9c, 0xe3, 0x27, 0xd7, 0x64, 0x67, 0x84, 0xf8, 0x4b,
+ 0xd2, 0x13, 0xbb, 0x25, 0x30, 0x27, 0xf9, 0x64, 0xd6, 0xa0,
+ 0xdf, 0xc1, 0xce, 0x74, 0x73, 0x51, 0xb7, 0xf7, 0x84, 0xd3,
+ 0xb6, 0x69, 0x1a, 0x76, 0x1b, 0x70, 0xcc, 0x45, 0xc3, 0x24,
+ 0x4b, 0x6, 0xa0, 0xb1, 0x3, 0x63, 0x97, 0x3, 0x76, 0x39,
+ 0x60, 0x97, 0x2f, 0x8c, 0x9d, 0xe2, 0x55, 0x1, 0x23, 0x7a,
+ 0x5b, 0xe5, 0x2b, 0xdd, 0x55, 0x60, 0xc9, 0x81, 0xe9, 0x2e,
+ 0xe7, 0xf2, 0x5f, 0xc5, 0x8a, 0x73, 0x4b, 0x4c, 0xee, 0x57,
+ 0x2f, 0x50, 0xaa, 0x5e, 0xcd, 0xab, 0xbd, 0x9c, 0xc3, 0x9c,
+ 0x6a, 0x7f, 0x4a, 0x76, 0x84, 0x9, 0x46, 0x62, 0x2b, 0x75,
+ 0x27, 0xc5, 0x48, 0xc4, 0x13, 0x76, 0x90, 0xec, 0x78, 0x9e,
+ 0x57, 0xde, 0xb6, 0xd8, 0x6a, 0xdd, 0x89, 0x1c, 0x29, 0x4b,
+ 0xb1, 0x6f, 0x8e, 0xf4, 0x5e, 0x9d, 0x94, 0x1d, 0x78, 0x38,
+ 0xf6, 0x8e, 0xb0, 0x3, 0xb4, 0x77, 0x1a, 0x9, 0x98, 0x42,
+ 0xa4, 0xed, 0x1d, 0xd7, 0x35, 0xa7, 0xdc, 0xf7, 0x14, 0x6a,
+ 0x5e, 0x9d, 0xd2, 0xde, 0x29, 0xdd, 0x99, 0x2c, 0xc3, 0x4e,
+ 0x8a, 0xf0, 0xd0, 0xd8, 0x55, 0x35, 0x1f, 0x85, 0x6a, 0x72,
+ 0x74, 0x7, 0xf6, 0x25, 0x3c, 0xaa, 0x15, 0x6a, 0xcc, 0xe4,
+ 0x94, 0xed, 0x4c, 0x65, 0xef, 0x74, 0x16, 0x68, 0x67, 0x32,
+ 0x72, 0xa8, 0xec, 0x72, 0xdd, 0x73, 0xe2, 0xdb, 0x3b, 0xb1,
+ 0x9f, 0xab, 0x7c, 0x41, 0x99, 0x4b, 0xbb, 0xc7, 0x27, 0x66,
+ 0x77, 0x48, 0xa9, 0x3d, 0xbb, 0xbe, 0x69, 0x9, 0xbe, 0x79,
+ 0x8d, 0xf7, 0x27, 0xaf, 0x2, 0xd9, 0x75, 0x8d, 0xea, 0x9f,
+ 0x98, 0xe4, 0x4c, 0x9e, 0x6f, 0x3a, 0x8c, 0xb4, 0xfa, 0x80,
+ 0xfa, 0x32, 0xc7, 0xf6, 0xcd, 0x17, 0x7d, 0xdf, 0x6b, 0xb9,
+ 0x49, 0x35, 0xde, 0x9f, 0xf6, 0x1, 0x5b, 0xb3, 0xab, 0xf5,
+ 0xd, 0x8b, 0x12, 0x7e, 0x4a, 0x23, 0xbb, 0x6, 0xbf, 0x92,
+ 0xd5, 0xbe, 0x50, 0x20, 0x3b, 0xc3, 0x4e, 0x5f, 0x51, 0x6d,
+ 0xd, 0xcd, 0xd6, 0x58, 0x40, 0xe3, 0x15, 0x12, 0x9d, 0x2f,
+ 0xb7, 0xda, 0x2b, 0x94, 0xaf, 0x4a, 0x9d, 0x82, 0xf7, 0x3a,
+ 0xec, 00, 0x6f, 0xef, 0x18, 0xfd, 0x2e, 0x99, 0xbf, 0x69,
+ 0x35, 0xc1, 0x7c, 0xdb, 0x36, 0x66, 0x41, 0x99, 0xc8, 0xae,
+ 0x34, 0x57, 0xd4, 0xf1, 0xfe, 0xe4, 0x56, 0xb7, 0x42, 0xad,
+ 0xfe, 0x36, 0xfb, 0x60, 0x2b, 0xaf, 0xb6, 0xf4, 0x16, 0x7d,
+ 0xff, 0xb1, 0x91, 0x9d, 0x77, 0x8c, 0xd9, 0x97, 0xf9, 0x40,
+ 0x6b, 0xa6, 0xf1, 0xeb, 0xe4, 0x23, 0xbb, 0x80, 0x5d, 0xe5,
+ 0x41, 0xac, 0xfd, 0x87, 0xf6, 0xfe, 0xac, 0x16, 0xa0, 0x36,
+ 0x9, 0xb8, 0xb6, 0xa6, 0x5f, 0xd4, 0xbe, 0x37, 0x60, 0x47,
+ 0x54, 0x8b, 0x96, 0x38, 0xc7, 0xe8, 0x7d, 0x95, 0xcf, 0xfc,
+ 0x4a, 0x59, 0xeb, 0xe, 0xeb, 0xcc, 0x6, 0x76, 0xd0, 0xfb,
+ 0xab, 0xd3, 0x1d, 0x30, 0x42, 0x40, 0x23, 0xc, 0x78, 0x1c,
+ 0xce, 0x75, 0xae, 0xd7, 0x5d, 0xf8, 0x29, 0x90, 0x9d, 0xf1,
+ 0x3d, 0x3d, 0x43, 0xe8, 0xe7, 0x23, 0x3b, 0x97, 0x1d, 0xf4,
+ 0xfe, 0x6a, 0xed, 0xdd, 0xda, 0xb5, 0x4d, 0x6a, 0xbb, 0x66,
+ 0xa4, 0x8e, 0x9d, 0x7a, 0x6f, 0xb1, 0x49, 0x65, 0xed, 0xa7,
+ 0x10, 0xcf, 0xde, 0x41, 0xdd, 0x5, 0x4d, 0x25, 0x27, 0x1f,
+ 0x96, 0x89, 0xec, 0x9a, 0x1a, 0x91, 0xac, 0x47, 0xef, 0xa6,
+ 0x78, 0x6f, 0x29, 0x52, 0xe3, 0xa7, 0x74, 0x2a, 0xdf, 0x29,
+ 0x13, 0xd9, 0x45, 0xa7, 0xac, 0xe7, 0x1b, 0xb2, 0x5e, 0x85,
+ 0x4d, 0x3d, 0xf6, 0xba, 0x57, 0xec, 0x8a, 0xd8, 0x3b, 0x56,
+ 0x8b, 0x6d, 0xec, 0x8a, 0xc5, 0xb3, 0x93, 0x2b, 0xc8, 0xac,
+ 0x56, 0x76, 0x2d, 0x99, 0x55, 0xb2, 0x6b, 0x86, 0x66, 0xf2,
+ 0xae, 0x7c, 0x6e, 0xc2, 0x61, 0xc0, 0x48, 0x29, 0x4e, 0xbc,
+ 0x14, 0x10, 0xf9, 0x44, 0x53, 0x94, 0x31, 0x19, 0xa, 0x70,
+ 0xd7, 0xb9, 0x28, 0x32, 0x38, 0x72, 0x49, 0xec, 0xec, 0x8a,
+ 0x32, 0xa9, 0xaf, 0xe5, 0x54, 0x88, 0x30, 0x19, 0x85, 0xa,
+ 0x96, 0x51, 0x6c, 0x8b, 0x97, 0x2, 0x72, 0x34, 0x76, 0x19,
+ 0x93, 0x41, 0xf2, 0x2d, 0x4c, 0x80, 0xa9, 0x2c, 0x38, 0x72,
+ 0x59, 0xba, 0x73, 0x65, 0x97, 0x6e, 0x9d, 0x99, 0xe9, 0x90,
+ 0x28, 0x99, 0xd5, 0x91, 0x7a, 0x14, 0x6e, 0xbc, 0x14, 0xf8,
+ 0xaa, 0xd1, 0x5d, 0xc1, 0x9d, 0x38, 0x39, 0x4e, 0xe4, 0x96,
+ 0xe9, 0xac, 0x5f, 0xac, 0xee, 0x7c, 0xd9, 0x25, 0xaa, 0x3b,
+ 0x1d, 0x67, 0xcc, 0x6a, 0xc7, 0x8b, 0x56, 0x64, 0x2c, 0x5a,
+ 0x8d, 0x9a, 0x54, 0x8e, 0x8a, 0xa4, 0xe1, 0xb3, 0x5b, 0xae,
+ 0xee, 0x56, 0x7b, 0xa2, 0x3b, 0xf0, 0x1f, 0x2a, 0xab, 0x8,
+ 0xe2, 0xa5, 0x98, 0x98, 0x27, 0x19, 0xd0, 0x6c, 0x61, 0xec,
+ 0x5d, 0xc0, 0x6e, 0xc1, 0xf6, 0xae, 0x9, 0x1d, 0xce, 0xcf,
+ 0x74, 0x54, 0xb9, 0x40, 0xdd, 0x1, 0xd9, 0xd9, 0xa6, 0x66,
+ 0x2c, 0xbb, 0x6a, 00, 0x37, 0xaf, 0xfe, 0x54, 0x74, 0xaa,
+ 0xa4, 0x51, 0x89, 0x1c, 0xb5, 0x15, 0x7f, 0xe6, 0x60, 0x97,
+ 0xd5, 0x66, 0x64, 0x6e, 0x4, 0xce, 0xf9, 0x7c, 0xba, 0x1e,
+ 0xba, 0x5b, 0x41, 0x5f, 0xa1, 0xa3, 0xee, 0x36, 0xe0, 0x4,
+ 0x18, 0xcd, 0x28, 0x37, 0x32, 0xa3, 0x76, 0x9b, 0xd3, 0x85,
+ 0xb0, 0x2b, 0x40, 0x3c, 0x3d, 0x47, 0x51, 0x45, 0x72, 0xec,
+ 0x56, 0x60, 0x85, 0xec, 0xee, 0x75, 0x66, 0xc5, 0x4e, 0xab,
+ 0xcc, 0xa0, 0x83, 0xba, 0xdb, 0x64, 0xcf, 0xc8, 0xe, 0x7a,
+ 0x6a, 0xca, 0x7c, 0xc1, 0x68, 0x72, 0x4d, 0x3e, 0x5d, 0x64,
+ 0x14, 0xcd, 0x89, 0xd9, 0x35, 0xb6, 0x54, 0xe2, 0xd8, 0x49,
+ 0x60, 0x4a, 0x65, 00, 0x1e, 0x35, 0x5b, 0x9a, 0x57, 0xc7,
+ 0xcc, 0xc6, 0xe, 0xb4, 0x36, 0xb, 0x13, 0x78, 0x91, 0x3b,
+ 0x91, 00, 0x6b, 0x7c, 0xba, 0xc8, 0x28, 0x9a, 0x49, 0xb2,
+ 0x53, 0x5a, 0xa3, 0x50, 0x6d, 0x3e, 0x3b, 0x61, 0x7, 0x67,
+ 0x63, 0x7, 0xda, 0x9c, 0x90, 0x1a, 0x6c, 0x4f, 0x86, 0x3e,
+ 0x5d, 0x11, 0x19, 0x45, 0x73, 0xe2, 0xfe, 0xcc, 0x66, 0x74,
+ 0x51, 0x6d, 0x95, 0x1c, 0xe8, 0xab, 0x9e, 0x9d, 0x3c, 0x6a,
+ 0x5e, 0x76, 0x1c, 0xc4, 0xb7, 0xdc, 0xc1, 0x2e, 0x8c, 0x7b,
+ 0xb9, 0x38, 0x76, 0xab, 0x41, 0xd8, 0xe9, 0xb6, 0x25, 0xb5,
+ 0x6d, 0x4e, 0x87, 0x1a, 0x35, 0x20, 0xe7, 0x65, 0x97, 0xc1,
+ 0xb0, 0xbf, 0x5b, 0xd9, 0x41, 0x1f, 0x70, 0xf1, 0xec, 0x6a,
+ 0xf8, 0x1d, 0xb4, 0x7f, 0x37, 0x9d, 0x4f, 0xd7, 0x6b, 0xc,
+ 0xa8, 0x7f, 0xbf, 0xca, 0x92, 0xfd, 0xbb, 0x70, 0x1d, 0x84,
+ 0x6c, 0xbb, 0x2f, 0x31, 0xa7, 0x97, 0x37, 0x43, 0x9f, 0xd8,
+ 0x92, 0xfd, 0xbb, 0x70, 0x1d, 0x84, 0xed, 0xec, 0x8a, 0xac,
+ 0x48, 0x84, 0x9d, 0x57, 0x6d, 0xee, 0xa1, 0x7f, 0xa7, 0x1a,
+ 0x26, 0x70, 0x85, 0x2, 0x6e, 0x47, 0xfa, 0x8a, 0x30, 0x3f,
+ 0xcb, 0xe6, 0xe8, 0xc9, 0xec, 0x38, 0x6, 0x64, 0xf0, 0xed,
+ 0xa5, 0x7f, 0xa7, 0x62, 0x7a, 0x3, 0x4f, 0x4d, 0xc7, 0xc3,
+ 0x2f, 0x9a, 0xf2, 0xe7, 0x18, 0x41, 0xe8, 0x3b, 0xf6, 0xba,
+ 0xda, 0x4f, 0xff, 0x4e, 0xc5, 0xd2, 0xcf, 0xac, 0x6, 0x55,
+ 0x50, 0x6f, 0x6f, 0x1d, 0x84, 0xc, 0xf8, 0xe, 0x93, 0x8f,
+ 0xdc, 0x75, 0xd2, 0xdd, 0xaa, 0xd1, 0x51, 0xd8, 0xf, 0xff,
+ 0x4e, 0xad, 0x83, 00, 0x3c, 0xb5, 0x4c, 0x77, 0x68, 0x16,
+ 0xfe, 0xb8, 0x9e, 0x92, 0x1f, 0x9f, 0x61, 0xc4, 0xbc, 0xa3,
+ 0xee, 0x3c, 0xe1, 0xad, 0xf6, 0xcb, 0xbf, 0x53, 0x75, 0xa6,
+ 0xb3, 0xa8, 0x82, 0x75, 0xf0, 0xe0, 0xb8, 0x5e, 0xa6, 0x17,
+ 0x36, 0xa8, 0x1d, 0xe3, 0x5b, 0xa4, 0xee, 0x74, 0x5f, 0x74,
+ 0xa0, 0xbd, 0x7d, 0xf2, 0xef, 0xa2, 0x1b, 0x8f, 0xa0, 0x3f,
+ 0x73, 0xc9, 0xfe, 0x5d, 0xff, 0x39, 0x7e, 0xdd, 0xfc, 0xbb,
+ 0x92, 0xc8, 0x55, 0xd4, 0xb6, 0x25, 0x2, 0xb6, 0x3b, 0xe,
+ 0x6a, 0xb5, 0x9a, 0x50, 0x9b, 0x62, 0x5a, 0x97, 0x5c, 0xd6,
+ 0x2f, 0x1b, 0x26, 0xbf, 0x57, 0xbb, 0xf, 0xd8, 0xcd, 0x8e,
+ 0x9b, 0x8d, 0xf9, 0x23, 0xf7, 0xb9, 0x9f, 0xc5, 0x27, 0xf4,
+ 0xef, 0x36, 0x5f, 0xb0, 0x5a, 0x43, 0x6d, 0xfb, 0xf5, 0x6c,
+ 0xb3, 0x4c, 0x50, 0xa9, 0xaf, 0xd9, 0xe0, 0xec, 0xb6, 0x96,
+ 0xdc, 0xb4, 0x6a, 0x98, 0xfc, 0x5e, 0xcd, 0xe7, 0x19, 0xc9,
+ 0x8e, 0x1, 0x76, 0xcc, 0xe6, 0x33, 0x99, 0xc7, 0xfa, 0xb2,
+ 0xeb, 0xe6, 0xdf, 0x29, 0x2e, 0xe2, 0x8b, 0x12, 0x2f, 0xbf,
+ 0x5a, 0x5e, 0x4d, 0xad, 0x88, 0x67, 0xb6, 0x30, 0xc7, 0xfe,
+ 0xc2, 0xe5, 0x82, 0x50, 0x7a, 0x5f, 0x1d, 0x3, 0x14, 0x51,
+ 0x73, 0xbc, 0xb8, 0xb6, 0xa5, 0x5b, 0x32, 0xd1, 0x67, 0xc2,
+ 0x61, 0xce, 0xae, 0x92, 0xb9, 0xce, 0x81, 0x9f, 0x62, 0x7e,
+ 0x6f, 0xf6, 0x53, 0xca, 0xfa, 0xd2, 0xda, 0xb0, 0x63, 0x5c,
+ 0xfe, 0xab, 0xb8, 0x71, 0xe, 0xe8, 0x71, 0xab, 0x3e, 0x99,
+ 0xcf, 0x5, 0xcf, 0xcd, 0x91, 0x7c, 0x7c, 0xff, 0x4e, 0xd5,
+ 0x99, 0xc1, 0xcf, 0xb7, 0x24, 0x92, 0x9c, 0x60, 0xda, 0xb0,
+ 0xd5, 0x57, 0xa9, 0x34, 0xaa, 0x70, 0x8e, 0x1, 0x45, 0xd6,
+ 0x1d, 0x5f, 0x8a, 0xcf, 0x75, 0xca, 0x94, 0x14, 0xc4, 0xcb,
+ 0x36, 0x67, 0x7b, 0xc9, 0x6a, 0xe5, 0x3e, 0xb0, 0x7e, 0x1f,
+ 0xfc, 0x5e, 0xce, 0xa7, 0x90, 0xfa, 0xd2, 0xda, 0xb3, 0xe3,
+ 0xac, 0xe2, 0x22, 0xb7, 0x90, 0x9d, 0x7c, 0xae, 0x5f, 0x15,
+ 0x4, 0x19, 0x9b, 0xc6, 0xbf, 0x13, 0xeb, 0x4e, 0x96, 0xbc,
+ 0x96, 0x1d, 0xb1, 0xeb, 0xc1, 0xaa, 0x7, 0xf1, 0x57, 0x88,
+ 0x55, 0xbf, 0x5e, 0xa2, 0x6a, 0x3c, 0xfb, 0x28, 0x9d, 0x9a,
+ 0x30, 0x38, 0xbe, 0xf4, 0x4a, 0xd3, 0x1a, 0x2c, 0x7d, 0x5d,
+ 0x6c, 0x2d, 0x59, 0xbd, 0x5a, 0xfa, 0x9f, 0xa2, 0x30, 0xc1,
+ 0x4f, 0x29, 0xc1, 0xf1, 0xe0, 0xbb, 0xb4, 0x6a, 0xab, 0x28,
+ 0x78, 0x95, 0x9a, 0x38, 0xac, 0x18, 0xb9, 0x63, 0xe, 0xab,
+ 0x87, 0x10, 0xa5, 0x54, 0xe8, 0xd8, 0xfe, 0x9d, 0xb2, 0x77,
+ 0x65, 0x3, 0xbc, 0xb2, 0xe4, 0xbc, 0x4e, 0x1d, 0xf0, 0x2a,
+ 0xc9, 0x5f, 0x6f, 0xa8, 0xe, 0xe7, 0x53, 0x4a, 0xff, 0xf8,
+ 0x52, 0xd6, 0x63, 0xa0, 0x34, 0xf5, 0x5e, 0x95, 0x4f, 0xda,
+ 0x95, 0x6c, 0x58, 0x78, 0x67, 0xa5, 0xec, 0x9d, 0xfb, 0x29,
+ 0x3c, 0x28, 0xad, 0x75, 0x3b, 0x73, 0x43, 0x4e, 0xa9, 0x29,
+ 0xd4, 0x9d, 0xc3, 0x8e, 0x49, 0x78, 0x8c, 0x8f, 0xef, 0xdf,
+ 0xe9, 0x76, 0x66, 0x70, 0x4d, 0xb8, 0x5c, 0x4b, 0x94, 0xf0,
+ 0xc0, 0xde, 0xf9, 0x57, 0x9, 0xa8, 0xc3, 0xb1, 0x4a, 0xb0,
+ 0x2c, 0x68, 0x89, 0x88, 0x51, 0x89, 0x53, 0x9a, 0xfa, 0x14,
+ 0x75, 0xc9, 0x81, 0xfd, 0xda, 0x5a, 0x72, 0x13, 0xbb, 0x12,
+ 0xbc, 0xb9, 0x84, 0xcb, 0x69, 0xba, 0xa5, 0x45, 0xb1, 0x63,
+ 0xc2, 0xb0, 0x85, 0xf6, 0xce, 0x61, 0x27, 0x6a, 0x50, 0x1e,
+ 0xa9, 0xbb, 0x25, 0xfb, 0x77, 0xa4, 0xe4, 0xcb, 0x4a, 0xe5,
+ 0x96, 0xf6, 0xf0, 0xc1, 0xde, 0x7f, 0xb7, 0x7, 0x9, 0xd9,
+ 0x21, 0x3b, 0x64, 0x87, 0xec, 0x90, 0x1d, 0xb2, 0x43, 0x76,
+ 0xc8, 0xe, 0xd9, 0x21, 0xbb, 0xf4, 0xd9, 0xc5, 0x26, 0xe4,
+ 0xb3, 0x18, 0x76, 0xb1, 0x9, 0xd9, 0x21, 0x3b, 0x64, 0xe7,
+ 0x4e, 0x69, 0xf7, 0xa7, 0x1c, 0x21, 0xbb, 0x65, 0xb3, 0x53,
+ 0x37, 0x2e, 0xdb, 0x5b, 0x98, 0x23, 0xef, 0x59, 0x46, 0x76,
+ 0x73, 0xb2, 0x5b, 0xd9, 0xb9, 0xd1, 0x8a, 0x1e, 0xb2, 0x4b,
+ 0x84, 0x9d, 0x3f, 0x29, 0xb3, 0x9a, 0x30, 0x86, 0xec, 0x12,
+ 0x61, 0xe7, 0xdf, 0x90, 0x80, 0xec, 0x92, 0x69, 0xab, 0x6c,
+ 0xc9, 0x43, 0x76, 0x4b, 0x67, 0x17, 0x34, 0x32, 0x91, 0x5d,
+ 0x42, 0xed, 0xcc, 0xa6, 0x4c, 0x64, 0xb7, 0xf8, 0xb6, 0x4a,
+ 0x28, 0x3c, 0x64, 0x87, 0xba, 0x43, 0x76, 0x53, 0xea, 0xe,
+ 0xd9, 0x25, 0xac, 0x3b, 0xec, 0x13, 0x4b, 0x53, 0x77, 0xfe,
+ 0xbd, 0xcb, 0xc8, 0x2e, 0x21, 0xdd, 0x61, 0x5f, 0x74, 0x72,
+ 0xfd, 0x99, 0x9e, 0xea, 0x90, 0x5d, 0x7a, 0xfd, 0x2a, 0xa6,
+ 0x37, 0x1a, 0xd9, 0x25, 0xc3, 0xe, 0xc8, 0xe, 0xfb, 0xc4,
+ 0x52, 0xeb, 0x8b, 0x76, 0x64, 0x87, 0xec, 0x52, 0x6a, 0x67,
+ 0x82, 0x50, 0x1, 0xc8, 0x2e, 0xb5, 0xb6, 0x8a, 0xeb, 0xd9,
+ 0xa1, 0xbd, 0x4b, 0xc9, 0x47, 0x58, 0x79, 0xd1, 0x8d, 0x90,
+ 0x5d, 0x22, 0x6d, 0x15, 0x9c, 0x6b, 0x94, 0x2a, 0x3b, 0x9c,
+ 0xe3, 0xb7, 0x48, 0x76, 0x9c, 0xd7, 0x87, 0x59, 0x41, 0x76,
+ 0xcb, 0x67, 0xc7, 0x78, 0x4d, 0xc0, 00, 0x64, 0xb7, 0x70,
+ 0x76, 0x32, 0x4a, 0xc3, 0x9, 0x88, 0x9a, 0x62, 0x22, 0xab,
+ 00, 0x8e, 0x9c, 0x9b, 0x7c, 0x71, 0x23, 0xfa, 0x66, 0x4f,
+ 0xde, 0x93, 0x6e, 0x72, 0x90, 0xdd, 0xf4, 0xec, 0x54, 0x24,
+ 0x7, 0x27, 0x6a, 0x8a, 0x8c, 0x78, 0x3, 0x82, 0x4, 0x80,
+ 0x98, 0xf, 0x3a, 0x2e, 0x47, 0xf5, 0x3a, 0xcc, 0x41, 0x76,
+ 0x33, 0xb0, 0x93, 0x2, 0x73, 0xa2, 0xa6, 0xd8, 0x1c, 0xa3,
+ 0x3b, 0xa6, 0xf3, 0x15, 0x52, 0xce, 0xb8, 0x9b, 0x83, 0xec,
+ 0x66, 0xd1, 0x5d, 0x10, 0x35, 0x45, 0xe6, 0xc0, 0x50, 0x62,
+ 0xcc, 0xe4, 0x73, 0x60, 0xe, 0x61, 0xe, 0xb2, 0x9b, 0xc5,
+ 0xde, 0x79, 0xec, 0x54, 0xe, 0xc, 0x8a, 0xa3, 0xed, 0x20,
+ 0x90, 0x23, 0x3f, 0x71, 0x73, 0x90, 0xdd, 0xfe, 0xf9, 0x77,
+ 0x34, 0xaf, 0xd2, 0xb1, 0x48, 0x22, 0x8a, 0x91, 0xdc, 0x3d,
+ 0xa6, 0xf4, 0xd8, 0x4b, 0x79, 0x90, 0x62, 0xd8, 0x8d, 0x1d,
+ 0x76, 0x54, 0x2e, 0xb4, 0xc5, 0xcd, 0x76, 0xfb, 0x7, 0x86,
+ 0xeb, 0x2c, 0xa8, 0x52, 0xb2, 0xa4, 0xd8, 0x49, 0x30, 0xd5,
+ 0x2d, 0xc8, 0xc7, 0x1b, 0x70, 0xb9, 0x46, 0x96, 0x7, 0xec,
+ 0xc2, 0x14, 0xc1, 0x6e, 0xec, 0x85, 0xa, 0x54, 0x54, 0x76,
+ 0xb9, 0xbb, 0xfb, 0x3, 0xc3, 0x75, 0x16, 0x74, 0x31, 0x9,
+ 0xea, 0x8e, 0x9, 0x16, 0x5a, 0x72, 0xb9, 0x7e, 0x92, 0x5b,
+ 0x21, 0xf6, 0xd3, 0x5d, 0x6, 0x57, 0x1b, 0x7, 0x6b, 0x94,
+ 0xbb, 0x2b, 0xd9, 0x99, 0xd5, 0xd, 0xa, 0x98, 0xf, 0xd6,
+ 0x31, 0xaf, 0x8e, 0xd1, 0x50, 0x9c, 0xe8, 0x79, 0x59, 0x1,
+ 0x43, 0x45, 0x73, 0xb3, 0x2e, 0x9e, 0x56, 0x99, 0xf7, 0x5e,
+ 0x11, 0x82, 0xd8, 0x59, 0x2d, 0xbd, 0xc8, 0x6c, 0xb0, 0xe9,
+ 0x2, 0x88, 0xb2, 0x21, 0x46, 0xdf, 0xa2, 0x74, 0x7, 0xd8,
+ 0xe5, 0x42, 0x73, 0xe2, 0x9, 0xcd, 0xb7, 0xe9, 0x8f, 0xc6,
+ 0xc8, 0xc2, 0xae, 0x5f, 0x50, 0xb7, 0xe5, 0xdc, 0x5b, 0xdd,
+ 0xa0, 0x79, 0x1d, 0xf3, 0x3a, 0x6d, 0x14, 0x66, 0x59, 0x65,
+ 0x7b, 0xfd, 0xb, 00, 0xd6, 0x7f, 0xaf, 0x28, 0xb6, 0xe6,
+ 0x4c, 0xe0, 0xa, 0x7a, 0x29, 0xea, 0xae, 0xb2, 0x7a, 0x86,
+ 0xdd, 0xe6, 0xe9, 0x10, 0xba, 0x93, 0xeb, 0x95, 0x67, 0xbc,
+ 0xfe, 0x51, 0x64, 0x76, 0x3d, 0x6b, 0xb3, 0xac, 0x41, 0xe6,
+ 0xe6, 0x80, 0xd5, 0x96, 0xb3, 0xa6, 0xf2, 0xc3, 0xb5, 0xf0,
+ 0x2c, 0x29, 0xf7, 0xbd, 0x19, 0x5c, 0x67, 0x1, 0xae, 0x9e,
+ 0xa0, 0x35, 0x9b, 0xa5, 0x64, 0xef, 0xa4, 0xca, 0x2a, 0x33,
+ 0x47, 0x47, 0xd0, 0x9d, 0x5a, 0xd7, 0xc0, 0x21, 0x2, 0xd6,
+ 0xb0, 0xe, 0xd6, 0xa7, 0xcb, 0x9a, 0x72, 0x9a, 0xd8, 0x15,
+ 0xbc, 0xf0, 0xd9, 0x5, 0xba, 0x83, 0xec, 0xe0, 0x3a, 0xb,
+ 0x75, 0xba, 0x4b, 0xce, 0xde, 0xc9, 0x76, 0x26, 0xd4, 0xdd,
+ 0x50, 0xf6, 0x4e, 0x5e, 0x96, 0x46, 0xad, 0x1, 0xdb, 0x97,
+ 0x1, 0xb, 0x5, 0x57, 0xac, 0xdb, 0xa1, 0x3b, 0xe, 0xd6,
+ 0x1d, 0xc9, 0xfc, 0x66, 0x7, 0xf8, 0xac, 0xc, 0xb6, 0x33,
+ 0xb7, 0xd8, 0xbb, 0x34, 0xd8, 0x89, 0x28, 0x37, 0xc7, 0x2d,
+ 0xd2, 0xd8, 0xb1, 0x71, 0x6a, 0x1a, 0x86, 0x53, 0xae, 0x68,
+ 0x30, 0xfc, 0x67, 0x4d, 0xc4, 0x2e, 0x26, 0xc9, 0x20, 0xee,
+ 0x74, 0xf0, 0x35, 0x65, 0x6, 0xf0, 0xb9, 0xb2, 0x3a, 0x3b,
+ 0x58, 0x5b, 0x5a, 0x36, 0x81, 0xe7, 0xb9, 0x3c, 0x76, 0x72,
+ 0x65, 0x4, 0x11, 0x47, 0x7a, 0x70, 0xdd, 0xf5, 0xf5, 0xb9,
+ 0x8a, 0xdd, 0x5a, 0x56, 0xa5, 0x15, 0x5b, 0xf5, 0x3e, 0x3d,
+ 0xbb, 0x4e, 0x73, 0x1e, 0x68, 0x34, 0xba, 0x7c, 0x2c, 0x76,
+ 0xad, 0x7d, 0xae, 0xc2, 0xf3, 0x10, 0x8d, 0xd7, 0x6, 0xd6,
+ 0x34, 0x87, 0x5c, 0xb2, 0xa0, 0xb4, 0x2c, 0x3, 0x36, 0x74,
+ 0xac, 0x65, 0xb3, 0x47, 0x8f, 0xaf, 0x12, 0x1d, 0xff, 0x4d,
+ 0xac, 0x8c, 0x30, 0x46, 0x9d, 0xd9, 0xde, 0xe7, 0xf2, 0x8f,
+ 0x29, 0x32, 0xa8, 0x29, 0xe7, 0xc8, 0x2c, 0xe3, 0x75, 0xa5,
+ 0x15, 0xa0, 0x3d, 0x39, 0xda, 0xfa, 0x5c, 0xa3, 0xc7, 0x57,
+ 0x89, 0x66, 0x27, 0x57, 0x46, 0x18, 0x47, 0x77, 0x2d, 0x7d,
+ 0xae, 0x4c, 0xd4, 0x79, 0xa1, 0xd7, 0xe6, 0xac, 0xb3, 0xc,
+ 0x75, 0x17, 0x94, 0x6, 0xb5, 0x3c, 0xda, 0xba, 0x78, 0xa3,
+ 0xc7, 0x57, 0xe9, 0xd2, 0x56, 0xc9, 0x47, 0xb4, 0x77, 0x6d,
+ 0x7c, 0x2e, 0xcf, 0xfb, 0x6b, 0xcb, 0xae, 0xf0, 0xfb, 0xcd,
+ 0x38, 0xf4, 0x31, 0x67, 0x67, 0x17, 0x1f, 0x5f, 0x25, 0x9e,
+ 0x1d, 0x1b, 0xb5, 0x9d, 0xb9, 0xcb, 0xe7, 0xca, 0x7c, 0x7b,
+ 0xb7, 0x9d, 0x9d, 0xf5, 0xa, 0x9d, 0xd2, 0x38, 0xb0, 0x8c,
+ 0xcb, 0x60, 0xd7, 0x25, 0xbe, 0x4a, 0x7, 0x76, 0xd3, 0xc5,
+ 0x3e, 0x1d, 0xd6, 0x12, 0x2d, 0x7a, 0xdd, 0xc9, 0x2e, 0xf1,
+ 0x55, 0x16, 0xcd, 0xee, 0x70, 0xc6, 0x5e, 0x3b, 0xc5, 0x79,
+ 0x40, 0x76, 0xb, 0x61, 0xd7, 0x21, 0xbe, 0xa, 0xb2, 0x43,
+ 0xdd, 0x61, 0x1a, 0x54, 0x77, 0xc8, 0x2e, 0x61, 0xdd, 0x8d,
+ 0xd1, 0x27, 0x86, 0xec, 0xc6, 0xd7, 0x5d, 0xdb, 0xf8, 0x2a,
+ 0xc8, 0x6e, 0x81, 0xba, 0x5b, 0x21, 0xbb, 0xb4, 0xd8, 0xc5,
+ 0xc7, 0x57, 0x81, 0x63, 0xaf, 0x70, 0x7e, 0x66, 0x1f, 0x76,
+ 0x7a, 0x7d, 0x5b, 0xbb, 0x85, 0x2b, 0x53, 0x37, 0xad, 0x18,
+ 0xbe, 0x7d, 0x3e, 0xd6, 0x8e, 0xf5, 0xd3, 0x23, 0xe6, 0x72,
+ 0x85, 0xeb, 0xf0, 0x8a, 0x92, 0xe1, 0x84, 0x30, 0xb5, 0x18,
+ 0x29, 0x3c, 0x7f, 0x79, 0x86, 0xd5, 0x31, 0xfa, 0xc8, 0x9d,
+ 0xab, 0x78, 0x8f, 0x1e, 0x5f, 0x45, 0xb1, 0xb, 0xe6, 0x67,
+ 0xf6, 0x61, 0xa7, 0xd7, 0x7e, 0xb5, 0x5b, 0xb8, 0xac, 0x66,
+ 0xd3, 0x8a, 0xe1, 0xdb, 0xaf, 0xc5, 0x8e, 0xf5, 0xd3, 0xcb,
+ 0x8, 0x74, 0xa4, 0xfe, 0x3c, 0xc1, 0xa2, 0xad, 0x6a, 0xbd,
+ 0x6c, 0x70, 0xfe, 0xee, 0x49, 0x96, 0xcd, 0xb, 0x85, 0xf6,
+ 0x60, 0x17, 0x1d, 0x5f, 0x45, 0xb3, 0x3, 0x73, 0xfc, 0x7a,
+ 0xb3, 0x93, 0xdf, 0x4e, 0xae, 0x8d, 0x2a, 0xb7, 0x25, 0x1,
+ 0x6b, 0x5b, 0x8b, 0x4b, 0x5d, 0x82, 0x55, 0xce, 0x4b, 0x62,
+ 0x17, 0x52, 0x2d, 0xdd, 0x15, 0x5d, 0xe1, 0x75, 0xe6, 0x60,
+ 0x15, 0xd7, 0x60, 0x75, 0x72, 0xad, 0x23, 0xee, 0xaf, 0x75,
+ 0xae, 0xf6, 0x89, 0x59, 0x99, 0xbe, 0xf4, 0xd6, 0x50, 0x56,
+ 0x8c, 0xdc, 0xa5, 0xd3, 0x9b, 0xd8, 0x81, 0xe5, 0xce, 0x87,
+ 0xd5, 0x5d, 0x97, 0xf8, 0x2a, 0xe3, 0xb0, 0x2b, 0x55, 0xfd,
+ 0x66, 0x8, 0x96, 0x76, 0x1, 0x66, 0xb9, 0xb0, 0x7b, 0xcd,
+ 0x2a, 0xe7, 0x60, 0xe5, 0xe2, 0xc6, 0x3a, 0x13, 0xac, 0x9e,
+ 0xec, 0xae, 0x4e, 0x6e, 0xdf, 0x5b, 0xbf, 0xd5, 0xa5, 0xc2,
+ 0x33, 0x91, 0xe7, 0x69, 0x6a, 0x45, 0xf0, 0xc1, 0xba, 0xce,
+ 0x24, 0x6a, 0x1b, 0xca, 0xce, 0x2d, 0x67, 0xa0, 0x31, 0xa0,
+ 0xc8, 0xf8, 0x2a, 0xa3, 0xb0, 0x2b, 0xf5, 0x2a, 0xc6, 0x86,
+ 0x1d, 0xb8, 0x2, 0x44, 0xab, 0xd2, 0x7b, 0x28, 0x76, 0xcd,
+ 0xf3, 0x90, 0xcd, 0xfa, 0xe9, 0xce, 0x3a, 0xe3, 0xc0, 0xde,
+ 0x85, 0x2b, 0xa7, 0x83, 0x7, 0x81, 0x36, 0xcb, 0x39, 0x4f,
+ 0xa3, 0x2c, 0xe2, 0x9b, 0x4f, 0x8b, 0xca, 0x97, 0x9d, 0x5b,
+ 0xce, 0x70, 0x63, 0xaf, 0x51, 0xf1, 0x55, 0x1c, 0x76, 0x3,
+ 0xd9, 0xbb, 0x52, 0x2d, 0x1a, 0xf, 0xeb, 0x1c, 0xa0, 0x3b,
+ 0x6d, 0x5f, 0x9a, 0x74, 0xb7, 0xd5, 0x86, 0x6, 0xeb, 0x8c,
+ 0x43, 0x76, 0xc1, 0xca, 0xe9, 0x66, 0x1d, 0x73, 0xc2, 0x5d,
+ 0x60, 0x8d, 0xe7, 0x9, 0xd9, 0x95, 0xaa, 0x95, 0x55, 0x7a,
+ 0xf9, 0xc4, 0x2b, 0x67, 0x28, 0x1f, 0x21, 0x36, 0xbe, 0xa,
+ 0x64, 0x37, 0x54, 0x3b, 0x93, 0x98, 0xda, 0x6, 0xd4, 0x48,
+ 0x61, 0xeb, 0xae, 0xc9, 0xde, 0x6d, 0x6d, 0x67, 0xda, 0x66,
+ 0x42, 0xc8, 0xe, 0xae, 0x36, 0x4e, 0x94, 0xc0, 0x55, 0xd,
+ 0x40, 0x3c, 0x51, 0x91, 0x86, 0xf3, 0x74, 0x16, 0x9e, 0x57,
+ 0x22, 0xf7, 0x17, 0xa4, 0x77, 0x9f, 0xc, 0xd5, 0x56, 0xe9,
+ 0x3c, 0xd7, 0xa8, 0xcd, 0x6c, 0xcc, 0x11, 0xfd, 0xbb, 0xb2,
+ 0x24, 0xd3, 0x96, 0xd3, 0x74, 0x5c, 0x6c, 0xfe, 0x60, 0xec,
+ 0x7a, 0xcf, 0xad, 0x15, 0x73, 0x51, 0xdc, 0x7b, 0xee, 0x80,
+ 0x12, 0x6b, 0xee, 0xd1, 0x9b, 0xd5, 0xf5, 0x25, 0xe1, 0x8f,
+ 0x9f, 0xc4, 0x7b, 0x7b, 0x53, 0xf9, 0xe6, 0x55, 0x3c, 0x7,
+ 0x76, 0xd2, 0x14, 0x71, 0xc5, 0xc9, 0xe1, 0x91, 0xec, 0x34,
+ 0x40, 0x7b, 0xfb, 0x41, 0xe0, 0xf1, 0x85, 0x39, 0x33, 0xb3,
+ 0x2b, 0xed, 0xd6, 0xf5, 0xf2, 0xca, 0x5, 0xb2, 0x93, 0x91,
+ 0x37, 0x9a, 0x23, 0xae, 0x6c, 0x8b, 0xbe, 0xd2, 0xc6, 0xde,
+ 0xc9, 0xe6, 0xca, 0x71, 0x70, 0x77, 0x49, 0x53, 0xe, 0x9d,
+ 0x85, 0x57, 0xd5, 0xde, 0xb7, 0x1e, 0x1c, 0x1, 0x16, 0xb3,
+ 0xc6, 0xcb, 0x2b, 0x9, 0x59, 0x8, 0x3b, 0x2d, 0x30, 0x13,
+ 0x2, 0x40, 0x45, 0x78, 0x90, 0xcf, 0xb8, 0x7d, 0x95, 0x73,
+ 0x7e, 0x72, 0xd2, 0x2a, 0xbe, 0x8a, 0xcb, 0xe, 0xdc, 0xf5,
+ 0x13, 0xb4, 0x5e, 0x6c, 0xce, 0x7c, 0xec, 0x2a, 0x6e, 0x15,
+ 0x95, 0x1a, 0xf, 0xae, 0xde, 0xcb, 0x23, 0x25, 0x5f, 0x14,
+ 0xbb, 0x30, 0xe2, 0xa, 0x64, 0x7, 0xa2, 0xaf, 0xb4, 0x89,
+ 0xaf, 0xe2, 0xb2, 0x3, 0xc6, 0xad, 0x41, 0x77, 0x10, 0xf0,
+ 0x6c, 0xec, 0x2, 0xf, 0xae, 0x4, 0xad, 0x41, 0xe7, 0xa5,
+ 0x92, 0x2f, 0x8a, 0x9d, 0x8c, 0x62, 0x64, 0x22, 0x3f, 0x78,
+ 0xba, 0xf3, 0x5e, 0xdd, 0x19, 0x5f, 0xc5, 0x63, 0x77, 0xbc,
+ 0x9b, 0x5d, 0x3e, 0x67, 0x5b, 0x45, 0xc2, 0x93, 0x1e, 0x1c,
+ 0xf4, 0xd, 0x83, 0x9e, 0x19, 0xe3, 0xd9, 0x2d, 0xca, 0xde,
+ 0x35, 0x45, 0x3a, 0x82, 0x39, 0x27, 0x50, 0x77, 0x27, 0xdd,
+ 0xd9, 0x85, 0x75, 0xe6, 0x31, 0xc8, 0x98, 0xa3, 0xad, 0x52,
+ 0x75, 0x6e, 0x29, 0xf, 0x2e, 0xb0, 0x7a, 0x3c, 0xb4, 0x77,
+ 0xb, 0x6b, 0x67, 0x42, 0x65, 0x31, 0x1d, 0x59, 0xc5, 0xd7,
+ 0x1d, 0xe3, 0xd0, 0x1a, 0xe, 0x72, 0xff, 0x5d, 0xaf, 0x38,
+ 0xf, 0x38, 0x7e, 0x37, 0xfa, 0xbd, 0x93, 0xfe, 0x1d, 0xca,
+ 0xa1, 0xc7, 0x57, 0x49, 0x11, 0xd9, 0x2d, 0x8a, 0x9d, 0x4,
+ 0x8, 0xb8, 0x68, 0x6f, 0x2e, 0xcf, 0xdd, 0x9c, 0x1c, 0x34,
+ 0x67, 0x90, 0xdd, 0x32, 0xd8, 0xa9, 0x56, 0x88, 0xe7, 0x23,
+ 0xd0, 0xc0, 0xde, 0xc1, 0x6e, 0x16, 0x64, 0xb7, 0x1c, 0x76,
+ 0xe2, 0xde, 0xba, 0x46, 0x8f, 0x20, 0xa4, 0x89, 0xec, 0x16,
+ 0xc4, 0xe, 0x5a, 0x37, 0x63, 0x3, 0x97, 0xd4, 0xaf, 0x82,
+ 0xec, 0xb6, 0xf5, 0xab, 0x2c, 0xbb, 0x4f, 0xc, 0xd9, 0x6d,
+ 0xeb, 0xcf, 0x6c, 0xd3, 0x27, 0x86, 0x75, 0xe6, 0x12, 0x7d,
+ 0x4, 0xf4, 0xef, 0x92, 0x65, 0x17, 0x4, 0xa0, 0xa, 0xc7,
+ 0xef, 0xe8, 0xac, 0x7d, 0xd1, 0xc8, 0xae, 0xd1, 0xbf, 0x83,
+ 0x7e, 0x78, 0xc3, 0xf8, 0xdd, 0xcc, 0xfd, 0x99, 0xc8, 0xae,
+ 0xc9, 0xde, 0xe5, 0x7e, 0x7f, 0x66, 0xe8, 0x23, 0xc0, 0xe6,
+ 0xc, 0xb2, 0x5b, 0x52, 0x5b, 0x25, 0x64, 0x97, 0x87, 0x7d,
+ 0xd1, 0x9e, 0xee, 0x18, 0xa6, 0x20, 0x2d, 0x82, 0x5d, 0xee,
+ 0x8f, 0xe8, 0x85, 0xe3, 0x77, 0x48, 0x6a, 0x99, 0xec, 0x20,
+ 0x3a, 0xf4, 0xef, 0xd2, 0xaa, 0x33, 0xc3, 0x9e, 0x16, 0xf4,
+ 0xef, 0xd0, 0xbf, 0x43, 0x76, 0x63, 0xb0, 0xb, 0x7d, 0xba,
+ 0x5d, 0x73, 0x6b, 0xcb, 0xc6, 0xa9, 0xcc, 0x31, 0x5f, 0x15,
+ 0x8e, 0x74, 0x13, 0x82, 0xec, 0xa2, 0xe7, 0x67, 0xfa, 0x7d,
+ 0x98, 0xad, 0xd8, 0xd5, 0xcf, 0xe8, 0x29, 0x23, 0x27, 0xfa,
+ 0xe8, 0x79, 0x26, 0xf6, 0xd7, 0x40, 0x7a, 0x4, 0xb8, 0x3f,
+ 0xc0, 0xfe, 0x4c, 0x65, 0xf3, 0xa2, 0xd8, 0x95, 0x60, 0xf6,
+ 0x48, 0xe9, 0xdc, 0x1, 0xc7, 0xdd, 0x79, 0x92, 0xe1, 0x9d,
+ 0x71, 0xce, 0xfd, 0x8, 0xf2, 0xde, 0x28, 0x38, 0xf3, 0xa4,
+ 0x4a, 0x7a, 0xee, 0x65, 0xb9, 0x94, 0x29, 0xb3, 0x7b, 0xc5,
+ 0x8e, 0x80, 0x59, 0x5b, 0x60, 0xbf, 0x6c, 0xc8, 0x6f, 0x9a,
+ 0x5d, 0xc9, 0xc1, 0xbd, 0x75, 0xf0, 0x5e, 0xf, 0x3d, 0xf7,
+ 0xb2, 0x9c, 0x75, 0xc2, 0xde, 0x7e, 0xb2, 0x2b, 0xe1, 0xac,
+ 0xc8, 0x52, 0x5f, 0x73, 0xee, 0xdc, 0x4f, 0x7, 0xf3, 0xed,
+ 0xa4, 0x4a, 0x9d, 0xa3, 0x67, 0x57, 0xda, 0x7b, 0xaf, 0x38,
+ 0xf1, 0xed, 0x20, 0x27, 0xa9, 0xc9, 0x6e, 0x16, 0x76, 0x91,
+ 0xf6, 0x4e, 0xdf, 0x17, 0x60, 0xe7, 0x43, 0x2a, 0x1d, 0x81,
+ 0xfb, 0xe9, 0x60, 0xbe, 0x73, 0x67, 0x9c, 0x52, 0x9c, 0x9c,
+ 0x63, 0xc9, 0x6b, 0xd9, 0xe9, 0x57, 0x53, 0x93, 0xdd, 0x1c,
+ 0xec, 0x62, 0xdb, 0x99, 0xba, 0x65, 0x68, 0x5b, 0x89, 0xaa,
+ 0x81, 0x9, 0xee, 0xa7, 0x83, 0xf9, 0x70, 0x26, 0x33, 0x9c,
+ 0x69, 0x9, 0x67, 0x35, 0x43, 0x76, 0xc1, 0xd, 0x7c, 0xc8,
+ 0x2e, 0xc2, 0xbf, 0x6b, 0x73, 0xff, 0x5d, 0x72, 0xaa, 0xd8,
+ 0x1b, 0x76, 0x18, 0x1b, 0x7, 0xd9, 0x61, 0x1a, 0x98, 0xdd,
+ 0xa9, 0x53, 0xa7, 0xce, 0x3f, 0x65, 0xd2, 0x13, 0x8f, 0xce,
+ 0x43, 0x76, 0xe9, 0xb0, 0x7b, 0xdb, 0x7d, 0x6f, 0xb9, 0xe3,
+ 0x7f, 0xee, 0xbf, 0xf3, 0x5d, 0xf, 0x3d, 0xf8, 0x9e, 0xb7,
+ 0xff, 0xd5, 0xdf, 0x1e, 0x1d, 0x21, 0xbb, 0x74, 0xd8, 0xbd,
+ 0xf7, 0xd, 0x67, 0xde, 0x71, 0xcf, 0xe9, 0xb3, 0xa7, 0x6f,
+ 0x3b, 0x77, 0xeb, 0xb9, 0x3b, 0xff, 0xb, 0xd9, 0xa5, 0xc4,
+ 0xee, 0xbe, 0x3b, 0xae, 0x78, 0xd2, 0xd3, 0x9f, 0x7d, 0xc1,
+ 0x17, 0x3c, 0x7a, 0xfa, 0xdc, 0x1f, 0xdf, 0xff, 0xe, 0x64,
+ 0x97, 0x10, 0xbb, 0xf7, 0xbf, 0xfb, 0xdd, 0x97, 0xfd, 0xdc,
+ 0xcd, 0x37, 0xbf, 0xf6, 0x17, 0x2f, 0xbe, 0xf8, 0xc9, 0x5f,
+ 0xf8, 0xf0, 0x7f, 0x9f, 0x42, 0x76, 0x9, 0xe9, 0xee, 0xcc,
+ 0xe9, 0xb, 0xfe, 0xe0, 0xe5, 0x2f, 0x79, 0xe9, 0x17, 0x5f,
+ 0x7f, 0xd3, 0x2f, 0xbf, 0xea, 0x9e, 0xbb, 0x4f, 0xbd, 0x9f,
+ 0xc3, 0xe, 0xd3, 0x68, 0x69, 00, 0x76, 0xe7, 0x3f, 0x72,
+ 0xcf, 0xb3, 0x5e, 0xfb, 0x92, 0x9f, 0xfe, 0xc9, 0xf, 0xfc,
+ 0xf1, 0x6f, 0xff, 0x9e, 0x4b, 0xef, 0xba, 0xdf, 0xd5, 0x1d,
+ 0xa6, 0x45, 0xa7, 0x53, 0xf7, 0x3e, 0x7c, 0xc1, 0xd, 0x3f,
+ 0xf3, 0xb3, 0x3f, 0xf5, 0x25, 0xcf, 0x79, 0xfe, 0x73, 0x2f,
+ 0xdd, 0xe8, 0xee, 0x9, 0xc8, 0x2e, 0x99, 0xf4, 0xd8, 0xdb,
+ 0xce, 0x7e, 0xf4, 0xcd, 0x9f, 0xf2, 0x9, 0x4f, 0x7b, 0xe6,
+ 0xf3, 0xae, 0xbe, 0xea, 0xc3, 0xdf, 0x79, 0xfb, 0x11, 0xea,
+ 0x2e, 0x21, 0xdd, 0xbd, 0xef, 0xd6, 0xf7, 0x3d, 0xf9, 0x86,
+ 0x1f, 0xfc, 0xaa, 0xe7, 0xbd, 0xf0, 0xc7, 0x5e, 0xf8, 0x31,
+ 0xf, 0xbd, 0xd, 0xd9, 0xa5, 0xc4, 0xee, 0xc1, 0xd3, 0xb7,
+ 0x5e, 0xfe, 0xea, 0xaf, 0x7b, 0xf1, 0x55, 0xdf, 0xf9, 0xb5,
+ 0xdf, 0x78, 0xc5, 0xdd, 0xf, 0xa2, 0xbd, 0x4b, 0x89, 0xdd,
+ 0x3b, 0xef, 0x3f, 0xfb, 0xd4, 0x57, 0xbc, 0xf8, 0xcb, 0xae,
+ 0xfb, 0x8e, 0xab, 0x5f, 0xf0, 0x19, 0xb7, 0xfd, 0x8b, 0xdb,
+ 0xce, 0xc4, 0xb4, 0xe8, 0x74, 0xfe, 0x1b, 0xce, 0xdc, 0xf9,
+ 0xcc, 0x5f, 0xfa, 0x9c, 0xcb, 0x3f, 0xec, 0xe3, 0x2f, 0x7b,
+ 0xd2, 0x33, 0xce, 0xde, 0x89, 0xba, 0x4b, 0x49, 0x77, 0xff,
+ 0x7e, 0xe6, 0x2d, 0xf7, 0x9e, 0x7d, 0xf3, 0xe9, 0xbb, 0x1e,
+ 0xbc, 0xeb, 0xcd, 0x67, 0xef, 0xbf, 0xf7, 0xb1, 0xc8, 0x2e,
+ 0x9d, 0xf4, 0xf8, 0xd7, 0xff, 0xe7, 0xed, 0x8f, 0xde, 0x71,
+ 0xe6, 0xa1, 0xbb, 0xdf, 0xfe, 0xe0, 0x23, 0x77, 0xbe, 0xf1,
+ 0x7f, 0xab, 0xb6, 0xa, 0xa6, 0x44, 0xd2, 0xd1, 0xd1, 0x79,
+ 0xe7, 0xe9, 0x11, 0xa0, 0xf, 0x38, 0x75, 0x84, 0xec, 0x12,
+ 0x4a, 0x8f, 0x3b, 0x3a, 0x7a, 0xfc, 0xd1, 0xd1, 0x13, 0x36,
+ 0x4, 0x8f, 0x8e, 0x9e, 0x78, 0x74, 0xf4, 0xb8, 0xf3, 0xfe,
+ 0x1f, 0xa8, 0x96, 0x18, 0xbe, 0xf6, 0x39, 0xb9, 0xfe, 00,
+ 00, 00, 00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60,
+ 0x82, };
+
+static prog_char data_404_html[] = {
+ /* /404.html */
+ 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
+ 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32,
+ 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x3a, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69,
+ 0x6b, 0x69, 0x2f, 0x70, 0x72, 0x65, 0x2d, 0x31, 0x2e, 0x31,
+ 0x20, 0x28, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x64,
+ 0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
+ 0x2f, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74,
+ 0x69, 0x6b, 0x69, 0x2f, 0x29, 0xd, 0xa, 0x43, 0x6f, 0x6e,
+ 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a,
+ 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c,
+ 0xd, 0xa, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e,
+ 0xa, 0x20, 0x20, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62,
+ 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68,
+ 0x69, 0x74, 0x65, 0x22, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20,
+ 0x3c, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xa, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34,
+ 0x30, 0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20,
+ 0x6e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c,
+ 0x2f, 0x68, 0x31, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61,
+ 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e,
+ 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69,
+ 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68,
+ 0x33, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x63,
+ 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c,
+ 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68,
+ 0x74, 0x6d, 0x6c, 0x3e, };
+
+static prog_char data_footer_plain[] = {
+ /* /footer.plain */
+ 0x2f, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0,
+ 0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa,
+ 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, };
+
+static prog_char data_header_html[] = {
+ /* /header.html */
+ 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
+ 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32,
+ 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x3a, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69,
+ 0x6b, 0x69, 0x2f, 0x70, 0x72, 0x65, 0x2d, 0x31, 0x2e, 0x31,
+ 0x20, 0x28, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x64,
+ 0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
+ 0x2f, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74,
+ 0x69, 0x6b, 0x69, 0x2f, 0x29, 0xd, 0xa, 0x43, 0x6f, 0x6e,
+ 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a,
+ 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c,
+ 0xd, 0xa, 0xd, 0xa, 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54,
+ 0x59, 0x50, 0x45, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50,
+ 0x55, 0x42, 0x4c, 0x49, 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f,
+ 0x57, 0x33, 0x43, 0x2f, 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48,
+ 0x54, 0x4d, 0x4c, 0x20, 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54,
+ 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61,
+ 0x6c, 0x2f, 0x2f, 0x45, 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74,
+ 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77,
+ 0x33, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68,
+ 0x74, 0x6d, 0x6c, 0x34, 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65,
+ 0x2e, 0x64, 0x74, 0x64, 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74,
+ 0x6d, 0x6c, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61,
+ 0x64, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69,
+ 0x74, 0x6c, 0x65, 0x3e, 0x57, 0x65, 0x6c, 0x63, 0x6f, 0x6d,
+ 0x65, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43,
+ 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x2d, 0x64, 0x65, 0x6d,
+ 0x6f, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x21, 0x3c,
+ 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0xa, 0x20, 0x20,
+ 0x20, 0x20, 0x3c, 0x6c, 0x69, 0x6e, 0x6b, 0x20, 0x72, 0x65,
+ 0x6c, 0x3d, 0x22, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x73, 0x68,
+ 0x65, 0x65, 0x74, 0x22, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d,
+ 0x22, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0x22,
+ 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x73, 0x74,
+ 0x79, 0x6c, 0x65, 0x2e, 0x63, 0x73, 0x73, 0x22, 0x3e, 0x20,
+ 0x20, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64,
+ 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20,
+ 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23,
+ 0x66, 0x66, 0x66, 0x65, 0x65, 0x63, 0x22, 0x20, 0x74, 0x65,
+ 0x78, 0x74, 0x3d, 0x22, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x22,
+ 0x3e, 0xa, 0xa, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20,
+ 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, 0x6e,
+ 0x75, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x3e, 0xa, 0xa,
+ 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61,
+ 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, 0x6e, 0x75, 0x22, 0x3e,
+ 0xa, 0x20, 0x20, 0x3c, 0x70, 0x20, 0x63, 0x6c, 0x61, 0x73,
+ 0x73, 0x3d, 0x22, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2d,
+ 0x74, 0x69, 0x74, 0x6c, 0x65, 0x22, 0x3e, 0x4d, 0x65, 0x6e,
+ 0x75, 0x3c, 0x2f, 0x70, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x70,
+ 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65,
+ 0x6e, 0x75, 0x22, 0x3e, 0xa, 0x20, 0x20, 0xa, 0x20, 0x20,
+ 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f,
+ 0x22, 0x3e, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x20, 0x70, 0x61,
+ 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x62, 0x72, 0x3e,
+ 0xa, 0x20, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66,
+ 0x3d, 0x22, 0x2f, 0x76, 0x6e, 0x63, 0x2e, 0x68, 0x74, 0x6d,
+ 0x6c, 0x22, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x20,
+ 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x3c, 0x2f, 0x61,
+ 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x61,
+ 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x63, 0x67,
+ 0x69, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x3e, 0x46,
+ 0x69, 0x6c, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73,
+ 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x62,
+ 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72,
+ 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x74,
+ 0x63, 0x70, 0x22, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72,
+ 0x6b, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x62, 0x72,
+ 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65,
+ 0x66, 0x3d, 0x22, 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x70, 0x72,
+ 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0x3e, 0x53,
+ 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x70, 0x72, 0x6f, 0x63,
+ 0x65, 0x73, 0x73, 0x65, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x3c,
+ 0x62, 0x72, 0x3e, 0xa, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x70,
+ 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e,
+ 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa,
+ 0xa, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c,
+ 0x61, 0x73, 0x73, 0x3d, 0x22, 0x63, 0x6f, 0x6e, 0x74, 0x65,
+ 0x6e, 0x74, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x3e, 0xa,
+ 0x20, 0x20, 0x3c, 0x70, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73,
+ 0x3d, 0x22, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2d, 0x74,
+ 0x69, 0x74, 0x6c, 0x65, 0x22, 0x3e, 0xa, 0x20, 0x20, 0x57,
+ 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20,
+ 0x74, 0x68, 0x65, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65,
+ 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
+ 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73,
+ 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x63, 0x6f,
+ 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x2f, 0x22, 0x3e, 0x43, 0x6f,
+ 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x3c, 0x2f, 0x61, 0x3e, 0x20,
+ 0xa, 0x20, 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x20, 0x73, 0x65,
+ 0x72, 0x76, 0x65, 0x72, 0x21, 0xa, 0x20, 0x20, 0x3c, 0x2f,
+ 0x70, 0x3e, 0xa, };
+
+static prog_char data_index_html[] = {
+ /* /index.html */
+ 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
+ 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32,
+ 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x3a, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69,
+ 0x6b, 0x69, 0x2f, 0x70, 0x72, 0x65, 0x2d, 0x31, 0x2e, 0x31,
+ 0x20, 0x28, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x64,
+ 0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
+ 0x2f, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74,
+ 0x69, 0x6b, 0x69, 0x2f, 0x29, 0xd, 0xa, 0x43, 0x6f, 0x6e,
+ 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a,
+ 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c,
+ 0xd, 0xa, 0xd, 0xa, 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54,
+ 0x59, 0x50, 0x45, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50,
+ 0x55, 0x42, 0x4c, 0x49, 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f,
+ 0x57, 0x33, 0x43, 0x2f, 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48,
+ 0x54, 0x4d, 0x4c, 0x20, 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54,
+ 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61,
+ 0x6c, 0x2f, 0x2f, 0x45, 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74,
+ 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77,
+ 0x33, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68,
+ 0x74, 0x6d, 0x6c, 0x34, 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65,
+ 0x2e, 0x64, 0x74, 0x64, 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74,
+ 0x6d, 0x6c, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61,
+ 0x64, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69,
+ 0x74, 0x6c, 0x65, 0x3e, 0x57, 0x65, 0x6c, 0x63, 0x6f, 0x6d,
+ 0x65, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43,
+ 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x2d, 0x64, 0x65, 0x6d,
+ 0x6f, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x21, 0x3c,
+ 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0xa, 0x20, 0x20,
+ 0x20, 0x20, 0x3c, 0x6c, 0x69, 0x6e, 0x6b, 0x20, 0x72, 0x65,
+ 0x6c, 0x3d, 0x22, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x73, 0x68,
+ 0x65, 0x65, 0x74, 0x22, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d,
+ 0x22, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0x22,
+ 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x73, 0x74,
+ 0x79, 0x6c, 0x65, 0x2e, 0x63, 0x73, 0x73, 0x22, 0x3e, 0x20,
+ 0x20, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64,
+ 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20,
+ 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23,
+ 0x66, 0x66, 0x66, 0x65, 0x65, 0x63, 0x22, 0x20, 0x74, 0x65,
+ 0x78, 0x74, 0x3d, 0x22, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x22,
+ 0x3e, 0xa, 0xa, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20,
+ 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, 0x6e,
+ 0x75, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x3e, 0xa, 0xa,
+ 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61,
+ 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, 0x6e, 0x75, 0x22, 0x3e,
+ 0xa, 0x20, 0x20, 0x3c, 0x70, 0x20, 0x63, 0x6c, 0x61, 0x73,
+ 0x73, 0x3d, 0x22, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2d,
+ 0x74, 0x69, 0x74, 0x6c, 0x65, 0x22, 0x3e, 0x4d, 0x65, 0x6e,
+ 0x75, 0x3c, 0x2f, 0x70, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x70,
+ 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65,
+ 0x6e, 0x75, 0x22, 0x3e, 0xa, 0x20, 0x20, 0xa, 0x20, 0x20,
+ 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f,
+ 0x22, 0x3e, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x20, 0x70, 0x61,
+ 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x62, 0x72, 0x3e,
+ 0xa, 0x20, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66,
+ 0x3d, 0x22, 0x2f, 0x76, 0x6e, 0x63, 0x2e, 0x68, 0x74, 0x6d,
+ 0x6c, 0x22, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x20,
+ 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x3c, 0x2f, 0x61,
+ 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x61,
+ 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x63, 0x67,
+ 0x69, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x3e, 0x46,
+ 0x69, 0x6c, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73,
+ 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x62,
+ 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72,
+ 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x74,
+ 0x63, 0x70, 0x22, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72,
+ 0x6b, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x62, 0x72,
+ 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65,
+ 0x66, 0x3d, 0x22, 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x70, 0x72,
+ 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0x3e, 0x53,
+ 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x70, 0x72, 0x6f, 0x63,
+ 0x65, 0x73, 0x73, 0x65, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x3c,
+ 0x62, 0x72, 0x3e, 0xa, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x70,
+ 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e,
+ 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa,
+ 0xa, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c,
+ 0x61, 0x73, 0x73, 0x3d, 0x22, 0x63, 0x6f, 0x6e, 0x74, 0x65,
+ 0x6e, 0x74, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x3e, 0xa,
+ 0x20, 0x20, 0x3c, 0x70, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73,
+ 0x3d, 0x22, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2d, 0x74,
+ 0x69, 0x74, 0x6c, 0x65, 0x22, 0x3e, 0xa, 0x20, 0x20, 0x57,
+ 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20,
+ 0x74, 0x68, 0x65, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65,
+ 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
+ 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73,
+ 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x63, 0x6f,
+ 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x2f, 0x22, 0x3e, 0x43, 0x6f,
+ 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x3c, 0x2f, 0x61, 0x3e, 0x20,
+ 0xa, 0x20, 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x20, 0x73, 0x65,
+ 0x72, 0x76, 0x65, 0x72, 0x21, 0xa, 0x20, 0x20, 0x3c, 0x2f,
+ 0x70, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0xa, 0x9, 0x20, 0x20, 0x3c, 0x70, 0x20, 0x63, 0x6c, 0x61,
+ 0x73, 0x73, 0x3d, 0x22, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x22,
+ 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x54, 0x68, 0x65,
+ 0x20, 0x77, 0x65, 0x62, 0x20, 0x70, 0x61, 0x67, 0x65, 0x73,
+ 0x20, 0x79, 0x6f, 0x75, 0x20, 0x61, 0x72, 0x65, 0x20, 0x77,
+ 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x72,
+ 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x20, 0x62,
+ 0x79, 0x20, 0x61, 0x20, 0x3c, 0x61, 0xa, 0x9, 0x20, 0x20,
+ 0x20, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74,
+ 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73,
+ 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64,
+ 0x61, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69,
+ 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x77, 0x65, 0x62, 0x73,
+ 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c,
+ 0x22, 0x3e, 0x77, 0x65, 0x62, 0xa, 0x9, 0x20, 0x20, 0x20,
+ 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3c, 0x2f, 0x61,
+ 0x3e, 0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x20,
+ 0x75, 0x6e, 0x64, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20,
+ 0x3c, 0x61, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x68, 0x72,
+ 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
+ 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e,
+ 0x73, 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x63,
+ 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x2f, 0x22, 0x3e, 0x43,
+ 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x20, 0x6f, 0x70, 0x65,
+ 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0xa, 0x9, 0x20, 0x20,
+ 0x20, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x3c, 0x2f,
+ 0x61, 0x3e, 0x20, 0x6f, 0x6e, 0x20, 0x61, 0x6e, 0x20, 0x61,
+ 0x6e, 0x20, 0x3c, 0x61, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20,
+ 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70,
+ 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x74, 0x68,
+ 0x65, 0x72, 0x6e, 0x75, 0x74, 0x2e, 0x64, 0x65, 0x2f, 0x65,
+ 0x6e, 0x2f, 0x22, 0x3e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e,
+ 0x75, 0x74, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x65, 0x6d, 0x62,
+ 0x65, 0x64, 0x64, 0x65, 0x64, 0xa, 0x9, 0x20, 0x20, 0x20,
+ 0x20, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x20,
+ 0x62, 0x6f, 0x61, 0x72, 0x64, 0x2c, 0x20, 0x77, 0x68, 0x69,
+ 0x63, 0x68, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74,
+ 0x73, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, 0x31, 0x34, 0x20,
+ 0x4d, 0x48, 0x7a, 0x20, 0x41, 0x56, 0x52, 0x20, 0x41, 0x74,
+ 0x6d, 0x65, 0x67, 0x61, 0x31, 0x32, 0x38, 0xa, 0x9, 0x20,
+ 0x20, 0x20, 0x20, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x63, 0x6f,
+ 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x20, 0x77,
+ 0x69, 0x74, 0x68, 0x20, 0x33, 0x32, 0x20, 0x6b, 0x69, 0x6c,
+ 0x6f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x6f, 0x66, 0x20,
+ 0x52, 0x41, 0x4d, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x31, 0x32,
+ 0x38, 0x20, 0x6b, 0x69, 0x6c, 0x6f, 0x62, 0x79, 0x74, 0x65,
+ 0x73, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x66, 0x20,
+ 0x66, 0x6c, 0x61, 0x73, 0x68, 0x20, 0x52, 0x4f, 0x4d, 0x2c,
+ 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x20, 0x52, 0x65, 0x61,
+ 0x6c, 0x54, 0x65, 0x6b, 0x20, 0x52, 0x54, 0x4c, 0x38, 0x30,
+ 0x31, 0x39, 0x41, 0x53, 0x20, 0x45, 0x74, 0x68, 0x65, 0x72,
+ 0x6e, 0x65, 0x74, 0x20, 0x63, 0x68, 0x69, 0x70, 0x2e, 0xa,
+ 0x9, 0x20, 0x20, 0x3c, 0x2f, 0x70, 0x3e, 0xa, 0xa, 0x9,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x70, 0x20, 0x63,
+ 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x63, 0x6c, 0x69, 0x6e,
+ 0x6b, 0x22, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x3c,
+ 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74,
+ 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x69,
+ 0x6b, 0x69, 0x2d, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x73, 0x69,
+ 0x63, 0x73, 0x2e, 0x73, 0x65, 0x22, 0x3e, 0x3c, 0x62, 0x3e,
+ 0x3c, 0x74, 0x74, 0x3e, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
+ 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x2d, 0x64,
+ 0x65, 0x6d, 0x6f, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73,
+ 0x65, 0x2f, 0x3c, 0x2f, 0x74, 0x74, 0x3e, 0x3c, 0x2f, 0x62,
+ 0x3e, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x3c,
+ 0x2f, 0x70, 0x3e, 0xa, 0x9, 0x20, 0x20, 0xa, 0x9, 0x20,
+ 0x20, 0xa, 0x9, 0x20, 0x20, 0x3c, 0x68, 0x32, 0x3e, 0x52,
+ 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x20, 0x64, 0x69, 0x73, 0x70,
+ 0x6c, 0x61, 0x79, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xa, 0x9,
+ 0x20, 0x20, 0x3c, 0x70, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20,
+ 0x20, 0x49, 0x74, 0x20, 0x69, 0x74, 0x20, 0x70, 0x6f, 0x73,
+ 0x73, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x72,
+ 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x6c, 0x79, 0x20, 0x61, 0x63,
+ 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43,
+ 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x20, 0x64, 0x65, 0x73,
+ 0x6b, 0x74, 0x6f, 0x70, 0x20, 0x6f, 0x66, 0xa, 0x9, 0x20,
+ 0x20, 0x20, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x73, 0x65,
+ 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63,
+ 0x74, 0x6c, 0x79, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x79,
+ 0x6f, 0x75, 0x72, 0x20, 0x77, 0x65, 0x62, 0x20, 0x62, 0x72,
+ 0x6f, 0x77, 0x73, 0x65, 0x72, 0x21, 0x20, 0x53, 0x65, 0x65,
+ 0x20, 0x74, 0x68, 0x65, 0x20, 0x3c, 0x61, 0xa, 0x9, 0x20,
+ 0x20, 0x20, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x76,
+ 0x6e, 0x63, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x72,
+ 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x20, 0x64, 0x69, 0x73, 0x70,
+ 0x6c, 0x61, 0x79, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x70, 0x61,
+ 0x67, 0x65, 0x2e, 0xa, 0x9, 0x20, 0x20, 0x3c, 0x2f, 0x70,
+ 0x3e, 0xa, 0x9, 0x20, 0x20, 0x3c, 0x68, 0x32, 0x3e, 0x53,
+ 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x3c,
+ 0x2f, 0x68, 0x32, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x3c, 0x70,
+ 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x54, 0x68, 0x69,
+ 0x73, 0x20, 0x69, 0x73, 0x20, 0x77, 0x68, 0x61, 0x74, 0x20,
+ 0x74, 0x68, 0x65, 0x20, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61,
+ 0x6c, 0x20, 0x64, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x20,
+ 0x6f, 0x66, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x73, 0x65,
+ 0x72, 0x76, 0x65, 0x72, 0x20, 0x6c, 0x6f, 0x6f, 0x6b, 0x73,
+ 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x69, 0x6b, 0x65,
+ 0x3a, 0xa, 0x9, 0x20, 0x20, 0x3c, 0x2f, 0x70, 0x3e, 0xa,
+ 0x9, 0x20, 0x20, 0x3c, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72,
+ 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x69, 0x6d,
+ 0x67, 0x20, 0x73, 0x72, 0x63, 0x3d, 0x22, 0x2f, 0x69, 0x6d,
+ 0x67, 0x2f, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68,
+ 0x6f, 0x74, 0x2e, 0x70, 0x6e, 0x67, 0x22, 0x20, 0x61, 0x6c,
+ 0x74, 0x3d, 0x22, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73,
+ 0x68, 0x6f, 0x74, 0x22, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x3c,
+ 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xa, 0x9,
+ 0x20, 0x20, 0x3c, 0x68, 0x32, 0x3e, 0x4d, 0x65, 0x6d, 0x6f,
+ 0x72, 0x79, 0x20, 0x75, 0x73, 0x61, 0x67, 0x65, 0x3c, 0x2f,
+ 0x68, 0x32, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x3c, 0x70, 0x3e,
+ 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x54, 0x68, 0x65, 0x20,
+ 0x65, 0x6e, 0x74, 0x69, 0x72, 0x65, 0x20, 0x43, 0x6f, 0x6e,
+ 0x74, 0x69, 0x6b, 0x69, 0x20, 0x41, 0x56, 0x52, 0x20, 0x73,
+ 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x75, 0x73, 0x65, 0x73,
+ 0x20, 0x73, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x6c, 0x79, 0x20,
+ 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20,
+ 0x32, 0x30, 0x20, 0x6b, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20,
+ 0x52, 0x41, 0x4d, 0x2c, 0x20, 0x6f, 0x66, 0x20, 0x77, 0x68,
+ 0x69, 0x63, 0x68, 0x20, 0x36, 0x20, 0x6b, 0x20, 0x69, 0x73,
+ 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20,
+ 0x74, 0x68, 0x65, 0x20, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61,
+ 0x6c, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20,
+ 0x38, 0x20, 0x6b, 0x20, 0x66, 0x6f, 0x72, 0xa, 0x9, 0x20,
+ 0x20, 0x20, 0x20, 0x9, 0x20, 0x20, 0x20, 0x20, 0x74, 0x68,
+ 0x65, 0x20, 0x77, 0x65, 0x62, 0x20, 0x62, 0x72, 0x6f, 0x77,
+ 0x73, 0x65, 0x72, 0x2e, 0x20, 0x41, 0x6c, 0x6c, 0x20, 0x63,
+ 0x6f, 0x64, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68,
+ 0x65, 0x73, 0x65, 0x20, 0x77, 0x65, 0x62, 0x20, 0x70, 0x61,
+ 0x67, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x73, 0x74,
+ 0x6f, 0x72, 0x65, 0x64, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20,
+ 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x69, 0x63,
+ 0x72, 0x6f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c,
+ 0x65, 0x72, 0x27, 0x73, 0x20, 0x6f, 0x6e, 0x2d, 0x63, 0x68,
+ 0x69, 0x70, 0x20, 0x66, 0x6c, 0x61, 0x73, 0x68, 0x20, 0x52,
+ 0x4f, 0x4d, 0x2e, 0xa, 0x9, 0x20, 0x20, 0x3c, 0x2f, 0x70,
+ 0x3e, 0xa, 0x9, 0x20, 0x20, 0x3c, 0x70, 0x20, 0x61, 0x6c,
+ 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x72, 0x69, 0x67, 0x68, 0x74,
+ 0x22, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x3c,
+ 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74,
+ 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73,
+ 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x25, 0x37, 0x65,
+ 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x22, 0x3e, 0x41, 0x64, 0x61,
+ 0x6d, 0x20, 0x44, 0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73, 0x3c,
+ 0x2f, 0x61, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x3c, 0x2f, 0x70,
+ 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0xa, 0x20, 0x20, 0x3c,
+ 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68,
+ 0x74, 0x6d, 0x6c, 0x3e, };
+
+static prog_char data_vnc_html[] = {
+ /* /vnc.html */
+ 0x2f, 0x76, 0x6e, 0x63, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
+ 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32,
+ 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x3a, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69,
+ 0x6b, 0x69, 0x2f, 0x70, 0x72, 0x65, 0x2d, 0x31, 0x2e, 0x31,
+ 0x20, 0x28, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x64,
+ 0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
+ 0x2f, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74,
+ 0x69, 0x6b, 0x69, 0x2f, 0x29, 0xd, 0xa, 0x43, 0x6f, 0x6e,
+ 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a,
+ 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c,
+ 0xd, 0xa, 0xd, 0xa, 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54,
+ 0x59, 0x50, 0x45, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50,
+ 0x55, 0x42, 0x4c, 0x49, 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f,
+ 0x57, 0x33, 0x43, 0x2f, 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48,
+ 0x54, 0x4d, 0x4c, 0x20, 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54,
+ 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61,
+ 0x6c, 0x2f, 0x2f, 0x45, 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74,
+ 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77,
+ 0x33, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68,
+ 0x74, 0x6d, 0x6c, 0x34, 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65,
+ 0x2e, 0x64, 0x74, 0x64, 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74,
+ 0x6d, 0x6c, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61,
+ 0x64, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69,
+ 0x74, 0x6c, 0x65, 0x3e, 0x57, 0x65, 0x6c, 0x63, 0x6f, 0x6d,
+ 0x65, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43,
+ 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x2d, 0x64, 0x65, 0x6d,
+ 0x6f, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x21, 0x3c,
+ 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0xa, 0x20, 0x20,
+ 0x20, 0x20, 0x3c, 0x6c, 0x69, 0x6e, 0x6b, 0x20, 0x72, 0x65,
+ 0x6c, 0x3d, 0x22, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x73, 0x68,
+ 0x65, 0x65, 0x74, 0x22, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d,
+ 0x22, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0x22,
+ 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x73, 0x74,
+ 0x79, 0x6c, 0x65, 0x2e, 0x63, 0x73, 0x73, 0x22, 0x3e, 0x20,
+ 0x20, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64,
+ 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20,
+ 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23,
+ 0x66, 0x66, 0x66, 0x65, 0x65, 0x63, 0x22, 0x20, 0x74, 0x65,
+ 0x78, 0x74, 0x3d, 0x22, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x22,
+ 0x3e, 0xa, 0xa, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20,
+ 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, 0x6e,
+ 0x75, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x3e, 0xa, 0xa,
+ 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61,
+ 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, 0x6e, 0x75, 0x22, 0x3e,
+ 0xa, 0x20, 0x20, 0x3c, 0x70, 0x20, 0x63, 0x6c, 0x61, 0x73,
+ 0x73, 0x3d, 0x22, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2d,
+ 0x74, 0x69, 0x74, 0x6c, 0x65, 0x22, 0x3e, 0x4d, 0x65, 0x6e,
+ 0x75, 0x3c, 0x2f, 0x70, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x70,
+ 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65,
+ 0x6e, 0x75, 0x22, 0x3e, 0xa, 0x20, 0x20, 0xa, 0x20, 0x20,
+ 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f,
+ 0x22, 0x3e, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x20, 0x70, 0x61,
+ 0x67, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x62, 0x72, 0x3e,
+ 0xa, 0x20, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66,
+ 0x3d, 0x22, 0x2f, 0x76, 0x6e, 0x63, 0x2e, 0x68, 0x74, 0x6d,
+ 0x6c, 0x22, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x20,
+ 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x3c, 0x2f, 0x61,
+ 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x61,
+ 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x63, 0x67,
+ 0x69, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x3e, 0x46,
+ 0x69, 0x6c, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73,
+ 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x62,
+ 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72,
+ 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x74,
+ 0x63, 0x70, 0x22, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72,
+ 0x6b, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x62, 0x72,
+ 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65,
+ 0x66, 0x3d, 0x22, 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x70, 0x72,
+ 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0x3e, 0x53,
+ 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x70, 0x72, 0x6f, 0x63,
+ 0x65, 0x73, 0x73, 0x65, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x3c,
+ 0x62, 0x72, 0x3e, 0xa, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x70,
+ 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e,
+ 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa,
+ 0xa, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c,
+ 0x61, 0x73, 0x73, 0x3d, 0x22, 0x63, 0x6f, 0x6e, 0x74, 0x65,
+ 0x6e, 0x74, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x3e, 0xa,
+ 0x20, 0x20, 0x3c, 0x70, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73,
+ 0x3d, 0x22, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2d, 0x74,
+ 0x69, 0x74, 0x6c, 0x65, 0x22, 0x3e, 0xa, 0x20, 0x20, 0x57,
+ 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20,
+ 0x74, 0x68, 0x65, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65,
+ 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
+ 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73,
+ 0x65, 0x2f, 0x7e, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x63, 0x6f,
+ 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x2f, 0x22, 0x3e, 0x43, 0x6f,
+ 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x3c, 0x2f, 0x61, 0x3e, 0x20,
+ 0xa, 0x20, 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x20, 0x73, 0x65,
+ 0x72, 0x76, 0x65, 0x72, 0x21, 0xa, 0x20, 0x20, 0x3c, 0x2f,
+ 0x70, 0x3e, 0xa, 0xa, 0x9, 0x9, 0x20, 0x20, 0x3c, 0x70,
+ 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x69, 0x6e,
+ 0x74, 0x72, 0x6f, 0x22, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20,
+ 0x20, 0x54, 0x68, 0x65, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69,
+ 0x6b, 0x69, 0x20, 0x56, 0x4e, 0x43, 0x20, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x20, 0x6c, 0x65, 0x74, 0x73, 0x20, 0x79,
+ 0x6f, 0x75, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20,
+ 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x73, 0x6b, 0x74, 0x6f,
+ 0x70, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0xa, 0x9, 0x20, 0x20,
+ 0x20, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x6f, 0x6e, 0x74,
+ 0x69, 0x6b, 0x69, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
+ 0x20, 0x69, 0x6e, 0x20, 0x79, 0x6f, 0x75, 0x72, 0x20, 0x77,
+ 0x65, 0x62, 0x20, 0x62, 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72,
+ 0x2c, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x61, 0x6e, 0x79,
+ 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x69, 0x6e, 0xa, 0x9,
+ 0x20, 0x20, 0x20, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x6f,
+ 0x72, 0x6c, 0x64, 0x2e, 0x20, 0x4e, 0x6f, 0x74, 0x65, 0x20,
+ 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64,
+ 0x65, 0x76, 0x69, 0x63, 0x65, 0x20, 0x6f, 0x6e, 0x20, 0x77,
+ 0x68, 0x69, 0x63, 0x68, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20,
+ 0x69, 0x73, 0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67,
+ 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x65, 0x73,
+ 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20,
+ 0x61, 0x6e, 0x79, 0x20, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f,
+ 0x72, 0x20, 0x6f, 0x72, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x6f,
+ 0x74, 0x68, 0x65, 0x72, 0x20, 0x6b, 0x69, 0x6e, 0x64, 0x20,
+ 0x6f, 0x66, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79,
+ 0x3b, 0x20, 0x69, 0x6e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20,
+ 0x66, 0x61, 0x63, 0x74, 0x2c, 0x20, 0x69, 0x74, 0x20, 0x64,
+ 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x65, 0x76,
+ 0x65, 0x6e, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x61, 0x20,
+ 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x20, 0x63,
+ 0x68, 0x69, 0x70, 0x2e, 0xa, 0x9, 0x20, 0x20, 0x3c, 0x2f,
+ 0x70, 0x3e, 0xa, 0xa, 0x9, 0x20, 0x20, 0x3c, 0x68, 0x33,
+ 0x3e, 0x4a, 0x61, 0x76, 0x61, 0x20, 0x63, 0x6c, 0x69, 0x65,
+ 0x6e, 0x74, 0x3c, 0x2f, 0x68, 0x33, 0x3e, 0xa, 0x9, 0x20,
+ 0x20, 0x3c, 0x70, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20,
+ 0x54, 0x68, 0x65, 0x20, 0x4a, 0x61, 0x76, 0x61, 0x20, 0x63,
+ 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x6b, 0x65,
+ 0x73, 0x20, 0x69, 0x74, 0x20, 0x70, 0x6f, 0x73, 0x73, 0x69,
+ 0x62, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x63, 0x63,
+ 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x69,
+ 0x72, 0x74, 0x75, 0x61, 0x6c, 0xa, 0x9, 0x20, 0x20, 0x20,
+ 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x20, 0x64,
+ 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x64, 0x69, 0x72,
+ 0x65, 0x63, 0x74, 0x6c, 0x79, 0x20, 0x66, 0x72, 0x6f, 0x6d,
+ 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x65, 0x62, 0x20, 0x62,
+ 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72, 0x2e, 0x20, 0x49, 0x74,
+ 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0xa,
+ 0x9, 0x20, 0x20, 0x20, 0x20, 0x4a, 0x61, 0x76, 0x61, 0x20,
+ 0x74, 0x6f, 0x20, 0x62, 0x65, 0x20, 0x74, 0x75, 0x72, 0x6e,
+ 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x74,
+ 0x68, 0x65, 0x20, 0x62, 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72,
+ 0x2e, 0xa, 0x9, 0x20, 0x20, 0x3c, 0x2f, 0x70, 0x3e, 0xa,
+ 0x9, 0x20, 0x20, 0x3c, 0x70, 0x3e, 0xa, 0x9, 0x20, 0x20,
+ 0x20, 0x20, 0x57, 0x68, 0x65, 0x6e, 0x20, 0x61, 0x73, 0x6b,
+ 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x70,
+ 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x2c, 0x20, 0x6a,
+ 0x75, 0x73, 0x74, 0x20, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x20,
+ 0x74, 0x68, 0x65, 0x20, 0x22, 0x4f, 0x6b, 0x22, 0x20, 0x62,
+ 0x75, 0x74, 0x74, 0x6f, 0x6e, 0xa, 0x9, 0x20, 0x20, 0x20,
+ 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x74,
+ 0x79, 0x70, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x20, 0x61,
+ 0x6e, 0x79, 0x20, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72,
+ 0x64, 0x2e, 0xa, 0x9, 0x20, 0x20, 0x3c, 0x2f, 0x70, 0x3e,
+ 0xa, 0x9, 0x20, 0x20, 0x3c, 0x63, 0x65, 0x6e, 0x74, 0x65,
+ 0x72, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x62,
+ 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
+ 0x23, 0x22, 0x20, 0x6f, 0x6e, 0x43, 0x6c, 0x69, 0x63, 0x6b,
+ 0x3d, 0x27, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x6f,
+ 0x70, 0x65, 0x6e, 0x28, 0x22, 0x76, 0x6e, 0x63, 0x6a, 0x61,
+ 0x76, 0x61, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x2c, 0xa,
+ 0x9, 0x20, 0x20, 0x20, 0x20, 0x22, 0x43, 0x6f, 0x6e, 0x74,
+ 0x69, 0x6b, 0x69, 0x22, 0x2c, 0xa, 0x9, 0x20, 0x20, 0x20,
+ 0x20, 0x22, 0x74, 0x6f, 0x6f, 0x6c, 0x62, 0x61, 0x72, 0x3d,
+ 0x6e, 0x6f, 0x2c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x3d, 0x6e, 0x6f, 0x2c, 0x73, 0x74, 0x61, 0x74, 0x75,
+ 0x73, 0x3d, 0x79, 0x65, 0x73, 0x2c, 0x6d, 0x65, 0x6e, 0x75,
+ 0x62, 0x61, 0x72, 0x3d, 0x6e, 0x6f, 0x2c, 0x73, 0x63, 0x72,
+ 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x72, 0x73, 0x3d, 0x79, 0x65,
+ 0x73, 0x2c, 0x72, 0x65, 0x73, 0x69, 0x7a, 0x61, 0x62, 0x6c,
+ 0x65, 0x3d, 0x79, 0x65, 0x73, 0x22, 0x29, 0x3b, 0x27, 0x3e,
+ 0x43, 0x6c, 0x69, 0x63, 0x6b, 0xa, 0x9, 0x20, 0x20, 0x20,
+ 0x20, 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x6c,
+ 0x61, 0x75, 0x6e, 0x63, 0x68, 0x20, 0x69, 0x6e, 0x20, 0x6e,
+ 0x65, 0x77, 0x20, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x3c,
+ 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x62, 0x3e, 0x3c, 0x2f, 0x63,
+ 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xa, 0x9, 0x20, 0x20,
+ 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20,
+ 0x3c, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0x3c, 0x62,
+ 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
+ 0x76, 0x6e, 0x63, 0x6a, 0x61, 0x76, 0x61, 0x2e, 0x68, 0x74,
+ 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20,
+ 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x61,
+ 0x75, 0x6e, 0x63, 0x68, 0x20, 0x69, 0x6e, 0xa, 0x9, 0x20,
+ 0x20, 0x20, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x77, 0x69,
+ 0x6e, 0x64, 0x6f, 0x77, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f,
+ 0x62, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f,
+ 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xa, 0xa, 0x9,
+ 0x20, 0x20, 0x20, 0x20, 0x3c, 0x70, 0x3e, 0xa, 0x9, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73,
+ 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x61,
+ 0x62, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x6b, 0x65, 0x65,
+ 0x70, 0x20, 0x38, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x75, 0x70, 0x2e, 0x20,
+ 0x49, 0x6e, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x20, 0x74,
+ 0x6f, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61,
+ 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x6f, 0x6e, 0x6f, 0x70,
+ 0x6f, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20,
+ 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e,
+ 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2c, 0x20,
+ 0x65, 0x61, 0x63, 0x68, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20,
+ 0x69, 0x73, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77,
+ 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x20,
+ 0x74, 0x68, 0x65, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61,
+ 0x79, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x73, 0x68,
+ 0x6f, 0x72, 0x74, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x2e,
+ 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x70, 0x3e,
+ 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0xa, 0x9, 0x20, 0x20,
+ 0x20, 0x20, 0x3c, 0x68, 0x33, 0x3e, 0x44, 0x6f, 0x77, 0x6e,
+ 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x56, 0x4e, 0x43, 0x20, 0x63,
+ 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x3c, 0x2f, 0x68, 0x33, 0x3e,
+ 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x70, 0x3e, 0xa,
+ 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x66, 0x20,
+ 0x79, 0x6f, 0x75, 0x20, 0x64, 0x6f, 0x6e, 0x27, 0x74, 0x20,
+ 0x68, 0x61, 0x76, 0x65, 0x20, 0x4a, 0x61, 0x76, 0x61, 0x20,
+ 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x2c,
+ 0x20, 0x79, 0x6f, 0x75, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x64,
+ 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x61, 0xa,
+ 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x72, 0x65,
+ 0x65, 0x20, 0x56, 0x4e, 0x43, 0x20, 0x63, 0x6c, 0x69, 0x65,
+ 0x6e, 0x74, 0x20, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d,
+ 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x3c, 0x61, 0xa, 0x9,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x72, 0x65, 0x66,
+ 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77,
+ 0x77, 0x77, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x76, 0x6e, 0x63,
+ 0x2e, 0x63, 0x6f, 0x6d, 0x22, 0x3e, 0x52, 0x65, 0x61, 0x6c,
+ 0x56, 0x4e, 0x43, 0x3c, 0x2f, 0x61, 0x3e, 0x2e, 0x20, 0x53,
+ 0x74, 0x61, 0x72, 0x74, 0x20, 0x74, 0x68, 0x65, 0xa, 0x9,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70, 0x72, 0x6f, 0x67,
+ 0x72, 0x61, 0x6d, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x3c,
+ 0x62, 0x3e, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x2d,
+ 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e,
+ 0x73, 0x65, 0x3a, 0x30, 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x61,
+ 0x73, 0x20, 0x74, 0x68, 0x65, 0xa, 0x9, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79,
+ 0x2e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x70,
+ 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0xa, 0x9, 0x20, 0x20,
+ 0x20, 0x3c, 0x68, 0x33, 0x3e, 0x55, 0x6e, 0x69, 0x78, 0x2f,
+ 0x58, 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x3c,
+ 0x2f, 0x68, 0x33, 0x3e, 0xa, 0x20, 0x9, 0x20, 0x20, 0x20,
+ 0x3c, 0x70, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x55, 0x6e, 0x69, 0x78, 0x2f, 0x58, 0x20, 0x56, 0x4e, 0x43,
+ 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x6e,
+ 0x65, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x3c, 0x74,
+ 0x74, 0x3e, 0x2d, 0x62, 0x67, 0x72, 0x32, 0x33, 0x33, 0x3c,
+ 0x2f, 0x74, 0x74, 0x3e, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+ 0x6e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6f,
+ 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x20, 0x55, 0x73, 0x65,
+ 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6f, 0x6c, 0x6c, 0x6f,
+ 0x77, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x61,
+ 0x6e, 0x64, 0x3a, 0xa, 0x9, 0x20, 0x20, 0x20, 0x3c, 0x2f,
+ 0x70, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x3c, 0x63, 0x65,
+ 0x6e, 0x74, 0x65, 0x72, 0x3e, 0x3c, 0x74, 0x74, 0x3e, 0x76,
+ 0x6e, 0x63, 0x76, 0x69, 0x65, 0x77, 0x65, 0x72, 0x20, 0x2d,
+ 0x62, 0x67, 0x72, 0x32, 0x33, 0x33, 0x20, 0x63, 0x6f, 0x6e,
+ 0x74, 0x69, 0x6b, 0x69, 0x2d, 0x64, 0x65, 0x6d, 0x6f, 0x2e,
+ 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x3a, 0x30, 0x3c,
+ 0x2f, 0x74, 0x74, 0x3e, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74,
+ 0x65, 0x72, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x3c, 0x70, 0x20,
+ 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x72, 0x69, 0x67,
+ 0x68, 0x74, 0x22, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20,
+ 0x2f, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
+ 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x64, 0x75, 0x6e,
+ 0x6b, 0x65, 0x6c, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61,
+ 0x64, 0x61, 0x6d, 0x2f, 0x22, 0x3e, 0x41, 0x64, 0x61, 0x6d,
+ 0x20, 0x44, 0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73, 0x3c, 0x2f,
+ 0x61, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x3c, 0x2f, 0x70, 0x3e,
+ 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e,
+ 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, };
+
+static prog_char data_vncviewer_jar[] = {
+ /* /vncviewer.jar */
+ 0x2f, 0x76, 0x6e, 0x63, 0x76, 0x69, 0x65, 0x77, 0x65, 0x72, 0x2e, 0x6a, 0x61, 0x72, 0,
+ 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32,
+ 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x3a, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69,
+ 0x6b, 0x69, 0x2f, 0x70, 0x72, 0x65, 0x2d, 0x31, 0x2e, 0x31,
+ 0x20, 0x28, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x64,
+ 0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
+ 0x2f, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74,
+ 0x69, 0x6b, 0x69, 0x2f, 0x29, 0xd, 0xa, 0x43, 0x6f, 0x6e,
+ 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a,
+ 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, 0x61, 0x69,
+ 0x6e, 0xd, 0xa, 0xd, 0xa, 0x50, 0x4b, 0x3, 0x4, 0xa,
+ 00, 00, 00, 00, 00, 0x16, 0xa9, 0xda, 0x2c, 00,
+ 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
+ 00, 0x9, 00, 00, 00, 0x4d, 0x45, 0x54, 0x41, 0x2d,
+ 0x49, 0x4e, 0x46, 0x2f, 0x50, 0x4b, 0x3, 0x4, 0xa, 00,
+ 00, 00, 00, 00, 0x16, 0xa9, 0xda, 0x2c, 0x1e, 0xb9,
+ 0xd9, 0x17, 0x2d, 00, 00, 00, 0x2d, 00, 00, 00,
+ 0x14, 00, 00, 00, 0x4d, 0x45, 0x54, 0x41, 0x2d, 0x49,
+ 0x4e, 0x46, 0x2f, 0x4d, 0x41, 0x4e, 0x49, 0x46, 0x45, 0x53,
+ 0x54, 0x2e, 0x4d, 0x46, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65,
+ 0x73, 0x74, 0x2d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
+ 0x3a, 0x20, 0x31, 0x2e, 0x30, 0xa, 0x43, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x64, 0x2d, 0x42, 0x79, 0x3a, 0x20, 0x30, 0x2e,
+ 0x39, 0x32, 0x2d, 0x67, 0x63, 0x63, 0xa, 0xa, 00, 0x50,
+ 0x4b, 0x3, 0x4, 0xa, 00, 00, 00, 0x8, 00, 0xe3,
+ 0xa5, 0xda, 0x2c, 0x5f, 0xeb, 0x71, 0x9a, 0xd7, 0xd, 00,
+ 00, 0x8, 0x19, 00, 00, 0xf, 00, 00, 00, 0x76,
+ 0x6e, 0x63, 0x76, 0x69, 0x65, 0x77, 0x65, 0x72, 0x2e, 0x63,
+ 0x6c, 0x61, 0x73, 0x73, 0x8d, 0x57, 0xb, 0x7c, 0x5c, 0x65,
+ 0x95, 0xff, 0x9f, 0xcc, 0x24, 0xf7, 0xe6, 0xf6, 0xb6, 0x99,
+ 0x4e, 0x9b, 0xb4, 0xa1, 0x25, 0xc, 0x2d, 0xa5, 0xc9, 0xa4,
+ 0x69, 0xa4, 0x90, 0x82, 0xd, 0x6d, 0x69, 0xd2, 0xa6, 0x1d,
+ 0x48, 0x93, 0x90, 0xf4, 0x41, 0x5a, 0x1e, 0xbd, 0x99, 0xb9,
+ 0x49, 0xa6, 0x9d, 0xdc, 0x19, 0xee, 0xdc, 0x49, 0x9a, 0xf2,
+ 0x70, 0x15, 0x5d, 0x5d, 0xb5, 0x2e, 0xec, 0xaa, 0xbb, 0xc5,
+ 0x67, 0x5, 0xd, 0x50, 0x94, 0x16, 0x9a, 0x69, 0x35, 0x55,
+ 0x4, 0x56, 0x50, 0xc4, 0x15, 0x4, 0x77, 0x75, 0x57, 0x59,
+ 0x16, 0x9f, 0xab, 0xeb, 0x1b, 0xd7, 0x7d, 0x9, 0x9e, 0x73,
+ 0xef, 0xbc, 0x92, 0xe, 0xbf, 0x9f, 0xc9, 0x6f, 0xbe, 0xef,
+ 0xbb, 0xe7, 0x3b, 0xe7, 0x7c, 0xe7, 0xfd, 0x9d, 0xef, 0xd9,
+ 0xd7, 0xbf, 0xf0, 0x25, 0xf8, 0xd0, 0x42, 0xef, 0xd2, 0x30,
+ 0x89, 0x7, 0xaa, 0x71, 0x18, 0xf, 0xca, 0xf0, 0x90, 0xc6,
+ 0xc3, 0x9, 0x5, 0xf, 0x6b, 0xa8, 0xf4, 0xc0, 0x9f, 0x55,
+ 0xf0, 0x39, 0xd, 0x2a, 0x1e, 0x91, 0x8f, 0x93, 0xb2, 0x3a,
+ 0xa5, 0xe0, 0x51, 0xd, 0xba, 0xb7, 0xfd, 0x98, 0x86, 0xd3,
+ 0x98, 0x56, 0x90, 0xd5, 0x10, 0xf0, 0x20, 0x67, 0x14, 0x9c,
+ 0xd5, 0xb0, 0x8, 0x9f, 0x57, 0xf0, 0x5, 0x15, 0x33, 0x1a,
+ 0x6a, 0x71, 0x4e, 0xe0, 0x5f, 0xd4, 0xf0, 0x25, 0x3c, 0x2e,
+ 0xe8, 0x5f, 0x56, 0xf0, 0x84, 0x86, 0x65, 0x82, 0xbe, 0xc,
+ 0x4f, 0xca, 0xf0, 0x94, 0xf0, 0xfb, 0x7, 0x39, 0xfb, 0x2b,
+ 0x32, 0x3c, 0xad, 0xe0, 0x19, 0xd, 0x2b, 0xf0, 0x55, 0xd9,
+ 0xfb, 0x9a, 0xc, 0xcf, 0xa, 0xdd, 0xd7, 0x85, 0xc3, 0x73,
+ 0xb2, 0xf1, 0xd, 0x5, 0xff, 0xa8, 0xe1, 0x9b, 0x78, 0x5e,
+ 0x86, 0x17, 0x84, 0xe4, 0x5b, 0x82, 0xf5, 0xa2, 0xc, 0x2f,
+ 0x69, 0xf8, 0x36, 0xfe, 0x49, 0xc1, 0x3f, 0x2b, 0xf8, 0x8e,
+ 0x9c, 0xfb, 0x5d, 0x19, 0xfe, 0x45, 0xc3, 0x65, 0xf8, 0x57,
+ 0x59, 0x7d, 0x4f, 0x56, 0xdf, 0xaf, 0xc6, 0xcb, 0xf8, 0x37,
+ 0x5, 0xaf, 0x68, 0xb8, 0xa, 0xf, 0xa8, 0xf8, 0x77, 0x99,
+ 0x5f, 0xad, 0xe6, 0x9d, 0x1f, 0xc8, 0xea, 0x87, 0x2a, 0x7e,
+ 0x24, 0x1f, 0x3f, 0x96, 0xf, 0x66, 0xff, 0x13, 0xfc, 0x54,
+ 0xa8, 0xfe, 0x43, 0x86, 0x9f, 0xa9, 0xf8, 0xb9, 0xec, 0xfd,
+ 0xa7, 0x86, 0x5f, 0xe0, 0x97, 0xd5, 0x6c, 0xa6, 0x5f, 0x69,
+ 0xf8, 0x35, 0x7e, 0xa3, 0xe1, 0xb7, 0xf8, 0x9d, 0xc, 0xaf,
+ 0x89, 0xe9, 0x7e, 0x2f, 0xab, 0xff, 0x12, 0xbc, 0x3f, 0x68,
+ 0xf8, 0x6f, 0xfc, 0x8f, 0x20, 0xff, 0xaf, 0x8a, 0xff, 0x53,
+ 0xf1, 0xff, 0xa, 0xfe, 0xa8, 0xe2, 0x75, 0xd, 0xfd, 0x38,
+ 0xa7, 0xe2, 0xd, 0xd6, 0x8b, 0xa0, 0x12, 0x31, 0x6b, 0xaa,
+ 0x90, 0xc1, 0xa7, 0x92, 0x9f, 0xe9, 0xa8, 0x52, 0xa5, 0x2a,
+ 0x99, 0x15, 0x95, 0x54, 0x99, 0xab, 0x59, 0x4b, 0xd2, 0x58,
+ 0x3, 0x9a, 0x27, 0x9f, 0xba, 0xe0, 0xce, 0xaf, 0xa6, 0x5,
+ 0x54, 0xa3, 0x52, 0x40, 0xb8, 0x2c, 0x14, 0x48, 0x50, 0xa1,
+ 0x45, 0x2a, 0x2d, 0xd6, 0x30, 0x8a, 0x73, 0xec, 0x2b, 0xaa,
+ 0x55, 0xa9, 0x4e, 0x8, 0x97, 0xb0, 0x9b, 0x69, 0xa9, 0x46,
+ 0xf5, 0x74, 0x81, 0x4a, 0xcb, 0x58, 0x38, 0x5a, 0xae, 0xd2,
+ 0x85, 0x2a, 0x35, 0x68, 0x74, 0x11, 0x85, 0x64, 0xf3, 0x62,
+ 0x95, 0x56, 0x8, 0xc5, 0x4a, 0x85, 0x2e, 0x51, 0x68, 0x95,
+ 0x42, 0x97, 0x12, 0xfc, 0xa3, 0xc9, 0xb4, 0x43, 0x8, 0x76,
+ 0x1f, 0x34, 0xc6, 0x8d, 0xd6, 0x84, 0x61, 0x8d, 0xb4, 0xe,
+ 0x38, 0x76, 0xdc, 0x1a, 0x69, 0xe7, 0xbd, 0x54, 0xd2, 0xe6,
+ 0x3d, 0x8a, 0x10, 0x7c, 0xf6, 0xf0, 0x10, 0x41, 0xeb, 0xe6,
+ 0xa9, 0xcf, 0x4e, 0x3a, 0x49, 0xde, 0xad, 0xe6, 0xf5, 0xae,
+ 0x51, 0xdb, 0x34, 0x62, 0xb3, 0xc9, 0x3d, 0x18, 0x23, 0x28,
+ 0x23, 0x76, 0x3c, 0x36, 0x64, 0x8c, 0x10, 0x96, 0x7a, 0xdb,
+ 0xc6, 0x84, 0xd3, 0xba, 0x9d, 0x61, 0x1d, 0xc6, 0x48, 0xb7,
+ 0x31, 0x99, 0xcc, 0x38, 0x8c, 0x34, 0x6f, 0x28, 0xe3, 0x38,
+ 0x49, 0xab, 0xcf, 0xb0, 0xcc, 0x4, 0x21, 0x50, 0x44, 0x74,
+ 0x21, 0x8c, 0x10, 0x88, 0xc5, 0xd3, 0xd1, 0xa4, 0x65, 0x99,
+ 0x51, 0xa7, 0xc3, 0x45, 0x25, 0x2c, 0x2c, 0x62, 0x79, 0x20,
+ 0x46, 0x9b, 0x6f, 0x64, 0x9c, 0x51, 0xd3, 0x72, 0xe2, 0x51,
+ 0xc3, 0x49, 0xda, 0x84, 0xda, 0xee, 0x12, 0x40, 0x3c, 0x77,
+ 0x80, 0x48, 0x6d, 0x5a, 0xd1, 0x64, 0x8c, 0xf5, 0x4b, 0x13,
+ 0x2a, 0xf6, 0xb3, 0x66, 0x9a, 0xb5, 0xad, 0x8, 0x51, 0x47,
+ 0x92, 0x4e, 0x57, 0x32, 0x9a, 0xe1, 0x25, 0xed, 0x23, 0x54,
+ 0x5d, 0x1d, 0xb7, 0xe2, 0xce, 0x26, 0x56, 0xbf, 0xb1, 0x69,
+ 0xf, 0xdb, 0xa3, 0x33, 0x19, 0x33, 0x9, 0x35, 0xdd, 0x71,
+ 0xcb, 0xec, 0xc9, 0x8c, 0xd, 0x99, 0xf6, 0x2e, 0x63, 0x28,
+ 0xc1, 0x10, 0xbf, 0xa0, 0x31, 0x7a, 0x26, 0x15, 0x33, 0x1c,
+ 0xfe, 0xae, 0x6b, 0x2c, 0x55, 0xd8, 0x48, 0x8d, 0xc6, 0xa3,
+ 0xe9, 0x76, 0xe1, 0xe0, 0xb3, 0x33, 0x2c, 0x7f, 0x5d, 0x4e,
+ 0x9f, 0x2d, 0x56, 0x6c, 0x4b, 0x51, 0x48, 0xa6, 0xd3, 0xb6,
+ 0x1d, 0x8e, 0x9a, 0x29, 0x11, 0x97, 0x5, 0x58, 0x1a, 0x4b,
+ 0xba, 0xa6, 0x8e, 0x26, 0x13, 0x11, 0x66, 0x1f, 0x37, 0x12,
+ 0xf1, 0xb4, 0xab, 0xa, 0x41, 0x4f, 0x9b, 0x4e, 0x89, 0xd4,
+ 0x55, 0x46, 0xd4, 0x83, 0xaf, 0x2a, 0x39, 0x77, 0xdb, 0x38,
+ 0xf3, 0x6d, 0x2f, 0xf1, 0x4b, 0xef, 0xd0, 0x41, 0x3e, 0xb3,
+ 0xbd, 0x89, 0xf5, 0xaa, 0x4e, 0xb0, 0xd3, 0x73, 0x7a, 0xea,
+ 0x6c, 0x10, 0x7b, 0x32, 0xe5, 0x74, 0x4c, 0x3a, 0x26, 0x7f,
+ 0x2e, 0x69, 0xdc, 0xdf, 0x71, 0x7e, 0x2c, 0x88, 0xec, 0xb,
+ 0xc4, 0xad, 0x7d, 0x86, 0x6d, 0x8c, 0x99, 0x8e, 0x69, 0x33,
+ 0xea, 0xfc, 0x59, 00, 0xc2, 0xea, 0xc6, 0xf3, 0x9, 0xf7,
+ 0x35, 0x95, 0xb, 0x2c, 0x6d, 0xd8, 0x70, 0x8c, 0xc4, 0x36,
+ 0xdb, 0x76, 0x3d, 0x55, 0x86, 0x4c, 0xce, 0xd3, 0x6, 0x92,
+ 0x19, 0x3b, 0x6a, 0x76, 0xc5, 0xc5, 0xc2, 0xb, 0xc6, 0xad,
+ 0xe8, 0x78, 0xdc, 0x9c, 0x30, 0xed, 0xb5, 0x82, 0xac, 0xe3,
+ 0x6e, 0xdc, 0xa3, 0xe3, 0x7d, 0x78, 0xbf, 0x8e, 0xf, 0xe0,
+ 0xaf, 0x75, 0x1c, 0xc7, 0x3d, 0x84, 0x45, 0x65, 0x5c, 0xae,
+ 0xe3, 0xaf, 0xf0, 0x5e, 0x8e, 0xa2, 0xb9, 0xf1, 0xc9, 0x1c,
+ 0x68, 0xb5, 0x8e, 0xb7, 0xe3, 0x1d, 0x3a, 0x35, 0xa, 0x71,
+ 0x5d, 0xf9, 0x10, 0xd5, 0x71, 0x17, 0xde, 0xa9, 0x50, 0x93,
+ 0x4e, 0x61, 0x6a, 0x66, 0x39, 0x66, 0xc7, 0xa7, 0x8e, 0x77,
+ 0xe1, 0x2f, 0xf9, 0xe0, 0x2, 0xb4, 0x2b, 0x91, 0x9c, 0xc8,
+ 0x13, 0xde, 0x4d, 0x6b, 0x38, 0x58, 0xe6, 0x84, 0x2a, 0xeb,
+ 0xb5, 0xb5, 0x10, 0xd0, 0xa2, 0xc6, 0xa7, 0x75, 0xbc, 0x1b,
+ 0xef, 0x51, 0xa8, 0x45, 0xa7, 0xb5, 0xac, 0x13, 0xb5, 0xd2,
+ 0x5b, 0x8, 0xcb, 0xe6, 0xa, 0xd3, 0xc9, 0x21, 0xe1, 0xd8,
+ 0x46, 0xdc, 0x72, 0xd2, 0x3a, 0x5d, 0x86, 0x3b, 0x75, 0x5a,
+ 0x27, 0xc3, 0xe5, 0x74, 0x85, 0x8e, 0xbf, 0x17, 0x53, 0xdc,
+ 0x2b, 0x3a, 0x54, 0xb3, 0x95, 0x3a, 0xd, 0x6b, 0xdc, 0x48,
+ 0xcb, 0xe9, 0x6d, 0x3a, 0xad, 0xa7, 0x2b, 0x75, 0xba, 0x4a,
+ 0x86, 0xb7, 0xa, 0xef, 0xd, 0x32, 0xb4, 0xbb, 0xa6, 0x2a,
+ 0xda, 0xa3, 0x10, 0x73, 0xa, 0x5d, 0xad, 0xd3, 0x46, 0x41,
+ 0xd9, 0x44, 0x9b, 0x75, 0xdc, 0xcf, 0xa2, 0xd1, 0x35, 0x72,
+ 0xca, 0x16, 0xdc, 0xa9, 0x50, 0x87, 0x4e, 0x9d, 0x42, 0xd9,
+ 0x50, 0xa4, 0x8c, 0x58, 0xec, 0x77, 0x3b, 0x93, 0x72, 0xcc,
+ 0x58, 0x81, 0x9, 0xe7, 0x50, 0xbe, 0x46, 0xe8, 0xb8, 0xd,
+ 0xb7, 0xeb, 0xb8, 0x83, 0x59, 0xb0, 0x34, 0x5b, 0x75, 0xbc,
+ 0xd, 0x7f, 0xa1, 0xd3, 0x36, 0xdc, 0xa3, 0x50, 0x97, 0x4e,
+ 0xdb, 0x69, 0x47, 0xde, 0xe8, 0x25, 0x9e, 0xef, 0xc8, 0xc,
+ 0xf, 0x4b, 0x2c, 0xad, 0xea, 0xef, 0xea, 0x8, 0xa5, 0x4d,
+ 0x7b, 0xdc, 0xb4, 0x43, 0xe9, 0x4c, 0x4a, 0xa, 0x51, 0x3a,
+ 0x94, 0xca, 0xa5, 0x43, 0x88, 0xa1, 0x69, 0x3e, 0x2b, 0xa4,
+ 0x73, 0x69, 0xba, 0x56, 0xa7, 0xeb, 0x44, 0xc8, 0x8, 0x75,
+ 0x73, 0xd2, 0xae, 0xd5, 0x69, 0xa7, 0x48, 0xdb, 0xa3, 0x53,
+ 0xaf, 0xc8, 0xdf, 0x27, 0xea, 0x5c, 0x4f, 0xfd, 0x9c, 0x4e,
+ 0x3d, 0xc9, 0xd0, 0xec, 0xf8, 0x8, 0x59, 0xa6, 0x19, 0x33,
+ 0x63, 0x3a, 0xd, 0xd0, 0x2e, 0x85, 0x76, 0xeb, 0xb4, 0x87,
+ 0xf6, 0xea, 0x74, 0x3, 0xd, 0x2a, 0xb4, 0x4f, 0xa7, 0xfd,
+ 0xb4, 0x59, 0xa1, 0x1b, 0x75, 0xba, 0x89, 0xfa, 0x75, 0xba,
+ 0x99, 0x6e, 0xd1, 0xe9, 0x80, 0xf0, 0x32, 0x68, 0x48, 0xa7,
+ 0x28, 0xc5, 0x14, 0x32, 0x75, 0x1a, 0x16, 0x82, 0x11, 0xe1,
+ 0xbe, 0x7c, 0x4f, 0x4f, 0xe7, 0x5c, 0xf6, 0xe9, 0x4c, 0x34,
+ 0xea, 0x9e, 0x40, 0xa8, 0x2f, 0xb3, 0x3d, 0x6c, 0x70, 0x64,
+ 0xc7, 0xf2, 0xae, 0x88, 0x27, 0x5b, 0x23, 0xbd, 0x25, 0x56,
+ 0xc, 0xbf, 0x29, 0x45, 0xa8, 0x25, 0xe4, 0x24, 0x93, 0xa1,
+ 0x31, 0xc3, 0x9a, 0xc, 0xb1, 0xcd, 0x24, 0x69, 0x57, 0xec,
+ 0xb6, 0xe, 0x59, 0xc9, 0x9, 0x2b, 0x54, 0x86, 0xc8, 0x36,
+ 0xd3, 0x99, 0x84, 0xc3, 0xa6, 0x1a, 0xa5, 0x38, 0x1f, 0x96,
+ 0x36, 0x2d, 0xa9, 0x1a, 0xa1, 0x68, 0x22, 0xce, 0x48, 0x21,
+ 0x29, 0x5c, 0x3a, 0x1d, 0x14, 0xcd, 0xe, 0x89, 0x77, 0x3,
+ 0x5b, 0xcd, 0xf4, 0x21, 0x27, 0x99, 0xa, 0x59, 0x9c, 0xd5,
+ 0xa1, 0x78, 0x9a, 0xe9, 0x12, 0xb8, 0xbd, 0x4, 0x9e, 0x8e,
+ 0x1f, 0xc9, 0xc1, 0xc7, 0x70, 0x27, 0x17, 0xb4, 0xd0, 0x61,
+ 0x5e, 0x5a, 0xe2, 0xe2, 0x8f, 0x48, 0x18, 0x1e, 0x15, 0x57,
+ 0x24, 0x39, 0x23, 0x29, 0x45, 0xb7, 0x2a, 0x64, 0xeb, 0x94,
+ 0x26, 0xae, 0x8c, 0x5a, 0xb1, 0x88, 0xeb, 0x94, 0x91, 0xd3,
+ 0xc6, 0xe5, 0xb4, 0x62, 0x36, 0x75, 0x1b, 0x43, 0x52, 0xff,
+ 0xf5, 0x62, 0x6e, 0x88, 0x63, 0x26, 0x4, 0xc9, 0xbf, 0xa3,
+ 0x77, 0x60, 0x97, 0x8e, 0x4f, 0xe1, 0x3e, 0x9d, 0xe, 0xd3,
+ 0xa4, 0x42, 0x47, 0x74, 0xba, 0x8d, 0x36, 0x13, 0xa0, 0xd3,
+ 0xed, 0x74, 0x7, 0xdb, 0x5e, 0x10, 0x42, 0xa9, 0x7c, 0x21,
+ 0xa, 0x59, 0x49, 0x27, 0x94, 0x4e, 0x99, 0xd1, 0xf8, 0x70,
+ 0x5c, 0xec, 0xeb, 0xef, 0xeb, 0xed, 0x67, 0xff, 0xb2, 0x5c,
+ 0x6f, 0x23, 0x8e, 0xbf, 0xb7, 0xd3, 0x3b, 0x38, 0x18, 0xde,
+ 0xc, 0x5d, 0xa7, 0xbb, 0xe8, 0x9d, 0x5e, 0x22, 0x79, 0xe5,
+ 0x86, 0xef, 0x36, 0x4f, 0xc8, 0x54, 0x2a, 0x61, 0x3a, 0xad,
+ 0x5b, 0xdc, 0x29, 0xf, 0x74, 0x3, 0xb7, 0x3f, 0x63, 0x59,
+ 0xde, 0x35, 0xb0, 0xa4, 0xb4, 0x92, 0xe5, 0xc1, 0x6e, 0x2d,
+ 0xab, 0x4c, 0x3b, 0x86, 0x5d, 0x20, 0x13, 0x85, 0x39, 0xa1,
+ 0x1d, 0x4e, 0x67, 0x39, 0xa0, 0x9a, 0xab, 0xb9, 0x57, 0x33,
+ 0x38, 0xf1, 0x4b, 0x2a, 0xb8, 0x7, 0xdb, 0x69, 0x58, 0xc6,
+ 0x88, 0x69, 0xbb, 0x6c, 0xaa, 0x1a, 0x23, 0x91, 0x88, 0x2c,
+ 0x4a, 0xf9, 0x8c, 0xa5, 0x92, 0x16, 0xbb, 0x92, 0xef, 0x5b,
+ 0x36, 0xb2, 0x27, 0x88, 0xcf, 0x88, 0xb1, 0xe2, 0xe1, 0x12,
+ 0x5e, 0x5, 0xb4, 0xf6, 0xa6, 0x72, 0x40, 0x16, 0x42, 0x2e,
+ 0xeb, 0x89, 0x78, 0xcc, 0x19, 0x95, 0xfb, 0xc4, 0x8a, 0x8e,
+ 0x4a, 0x69, 0x5e, 0xc0, 0x92, 0x95, 0x54, 0x1e, 0xc2, 0x15,
+ 0x65, 0x59, 0x9e, 0x77, 0xbb, 0x97, 0xd0, 0x78, 0x57, 0x47,
+ 0x63, 0x77, 0xc1, 0xa0, 0x2e, 0x40, 0x99, 0x30, 0xe3, 0x23,
+ 0xa3, 0xce, 0x61, 0xce, 0xd8, 0xad, 0x85, 0xaf, 0x49, 0xae,
+ 0x1d, 0xe3, 0x7c, 0xcb, 0x79, 0x77, 0x68, 0x95, 0x99, 0xb3,
+ 0x6a, 0x2d, 0xa7, 0x7d, 0xd4, 0x4c, 0xa7, 0x7b, 0x92, 0xf6,
+ 0x98, 0x91, 0xc8, 0x5f, 0x89, 0xb3, 0x4a, 0x18, 0x97, 0xf4,
+ 0xe4, 0x84, 0x87, 0x5d, 0x93, 0xe2, 0x32, 0xe2, 0xc, 0x38,
+ 0x46, 0xf4, 0xd0, 0x2e, 0xdb, 0x88, 0x32, 0x44, 0x75, 0x92,
+ 0x5e, 0x6d, 0x21, 0x2c, 0x6e, 0x2c, 0x7b, 0x1d, 0x55, 0xc6,
+ 0x53, 0x46, 0xec, 0x70, 0x6e, 0x9e, 0x9c, 0x75, 0x59, 0x78,
+ 0x97, 0x26, 0x7, 0xd1, 0x84, 0x21, 0x37, 0xfc, 0xc5, 0x65,
+ 0xee, 0xaa, 0xc8, 0x1c, 0xdd, 0xdc, 0x7b, 0x72, 0x8f, 0x57,
+ 0xa1, 0x76, 0xa6, 0x47, 0x66, 0xb1, 0x1b, 0x98, 0x4c, 0x3b,
+ 0xe6, 0x18, 0x3b, 0xc8, 0x75, 0x76, 0x6d, 0x77, 0x3e, 0xf5,
+ 0xfb, 0x3c, 0xa1, 0x99, 0x72, 0xac, 0x5d, 0xec, 0x9f, 0x4a,
+ 0x71, 0x9a, 0x12, 0xd6, 0x94, 0xbb, 0x1a, 0xcf, 0x3, 0x79,
+ 0x35, 0x53, 0x7a, 0x29, 0xaf, 0x60, 0xee, 0x34, 0xe, 0x8a,
+ 0xf3, 0x96, 0x35, 0x46, 0xfe, 0xc, 0xdc, 0xb8, 0x25, 0xb8,
+ 0x8b, 0xca, 0x8, 0xc2, 0x7e, 0x71, 0x6d, 0x99, 0xe0, 0x6a,
+ 0x54, 0x33, 0x61, 0xc7, 0x1d, 0xb3, 0x54, 0x29, 0x57, 0x4b,
+ 0xe9, 0x5e, 0x6, 0xa2, 0xa3, 0xe6, 0x98, 0xe9, 0xb6, 0x48,
+ 0xdc, 0x4d, 0x55, 0xc4, 0x39, 0x4a, 0xea, 0xb, 0x7a, 0x6d,
+ 0xe5, 0x7b, 0x3e, 0x62, 0xa5, 0x32, 0x45, 0xdd, 0x96, 0xbc,
+ 0xc9, 0x96, 0xf4, 0x93, 0xcc, 0xb1, 0x2b, 0x93, 0x48, 0xb0,
+ 0x7, 0x2a, 0xb9, 0xb, 0x11, 0x5b, 0xaa, 0x29, 0x23, 0x9d,
+ 0x9e, 0x48, 0xda, 0x6c, 0x8b, 0xc5, 0xc5, 0x28, 0xdb, 0x65,
+ 0x1e, 0x76, 0xba, 0xe2, 0x66, 0x42, 0x9a, 0xcc, 0xba, 0x59,
+ 0xd0, 0xd2, 0x6c, 0x18, 0x31, 0x1d, 0x1, 0xcd, 0xb6, 0x7f,
+ 0x2e, 0x10, 0xaa, 0x12, 0xa6, 0x35, 0x22, 0xa1, 0x5e, 0x9d,
+ 0xce, 0xc, 0xa5, 0x73, 0xc0, 0x3a, 0xce, 0xae, 0xf2, 0xf1,
+ 0x61, 0x9b, 0x8e, 0x2d, 0xd1, 0xc9, 0x2c, 0x73, 0x6d, 0x92,
+ 0xca, 0xb8, 0xfb, 0x3b, 0xdc, 0x5c, 0xac, 0x48, 0xf2, 0x77,
+ 0x5d, 0x41, 0xe5, 0xde, 0x8c, 0x53, 0xaa, 0xef, 0xe2, 0x72,
+ 0x70, 0x66, 0xe9, 0x1a, 0x94, 0xa5, 0x14, 0xa5, 0x23, 0x22,
+ 0x6f, 0x95, 0x6d, 0x8e, 0x25, 0xc7, 0x4b, 0xaa, 0xc8, 0x9c,
+ 0xb4, 0xdd, 0x93, 0xf7, 0x42, 0xa7, 0x5b, 0xb9, 0x23, 0x6e,
+ 0xc7, 0xe9, 0x7a, 0x61, 0xc0, 0xf5, 0xa4, 0x7, 0x98, 0x17,
+ 0xf3, 0xea, 0x74, 0x8f, 0x21, 0x3e, 0x9, 0xc, 0x4b, 0x91,
+ 0x1b, 0x72, 0x7d, 0xbe, 0xd7, 0xcb, 0xed, 0x85, 0x25, 0xa0,
+ 0x1d, 0x6e, 0xda, 0x31, 0x5a, 0xdc, 0x9a, 0x9b, 0x5c, 0xb,
+ 0xdd, 0xa3, 0x6, 0x66, 0xb7, 0x99, 0x8d, 0xfb, 0xbd, 0xea,
+ 0x53, 0x2c, 0xdb, 0x6e, 0x93, 0xc9, 0x3b, 0x5c, 0xdd, 0x46,
+ 0xcc, 0x39, 0xcf, 0x88, 0x5c, 0xbf, 0xe9, 0x3a, 0x56, 0x34,
+ 0xdb, 0x92, 0x60, 0xbe, 0x95, 0x51, 0x6e, 0x3d, 0xa5, 0x63,
+ 0x4e, 0xb3, 0x90, 0x2c, 0xee, 0x88, 0x14, 0x98, 0x98, 0xd9,
+ 0x61, 0x8, 0x30, 0x90, 0x4f, 0x4f, 0x8b, 0x2b, 0xed, 0xee,
+ 0xfe, 0x6e, 0xa6, 0xd5, 0x4b, 0xbf, 0x3d, 0xa7, 0xee, 0x70,
+ 0x1f, 0x2c, 0x55, 0xe6, 0xad, 0x19, 0x23, 0x91, 0x9e, 0xd3,
+ 0x3e, 0x96, 0xf4, 0xb8, 0xb, 0x67, 0xf7, 0x29, 0x23, 0x52,
+ 0x69, 0x39, 0x9c, 0xec, 0xb4, 0xe9, 0x9a, 0xbb, 0x6c, 0xd7,
+ 0xc9, 0x1, 0xac, 0xf3, 0x9, 0x25, 0x3d, 0xed, 0xa5, 0x7f,
+ 0x56, 0x6, 0xca, 0xfb, 0x23, 0x9a, 0xb1, 0x6d, 0x36, 0x46,
+ 0xfe, 0x45, 0x34, 0xbb, 0xd4, 0xe4, 0xde, 0x44, 0xb8, 0x98,
+ 0x5f, 0xa7, 0x93, 0x20, 0x1c, 0xc1, 0x3c, 0x40, 0xda, 0x23,
+ 0xc8, 0x1f, 0x77, 0x48, 0xee, 0xcc, 0xfd, 0x91, 0x3b, 0x73,
+ 0x53, 0xea, 0xce, 0xdc, 0x79, 0xba, 0x33, 0xf7, 0x98, 0xee,
+ 0xcc, 0x7d, 0xa2, 0x3b, 0x73, 0x47, 0xeb, 0xce, 0xdc, 0xfe,
+ 0xba, 0xf3, 0xd1, 0x1c, 0x3d, 0x77, 0xc2, 0x3c, 0x2e, 0x60,
+ 0xfe, 0xdc, 0x1d, 0xf3, 0xf8, 0x37, 0xfc, 0xb5, 0x1e, 0x15,
+ 0xbc, 0x2, 0x82, 0xe1, 0x33, 0xa0, 0x70, 0x40, 0x3b, 0xa7,
+ 0x4d, 0xa3, 0x22, 0xec, 0x9b, 0x86, 0xef, 0x14, 0x43, 0x9,
+ 0x7f, 0x2b, 0x7b, 0xf0, 0xf3, 0x78, 0x21, 0xfc, 0x54, 0xc3,
+ 0x77, 0x6a, 0x1a, 0xb, 0x79, 0x4d, 0xf8, 0x60, 0x81, 0xc7,
+ 0x75, 0xbc, 0x2f, 0x3c, 0x56, 0x86, 0xb3, 0xf0, 0x87, 0x67,
+ 0x50, 0x39, 0x78, 0x6, 0x55, 0xd3, 0x50, 0x78, 0xa9, 0xe,
+ 0x32, 0xdf, 0xea, 0x69, 0x68, 0xe1, 0xd3, 0xd0, 0xb2, 0x98,
+ 0x57, 0x64, 0x5a, 0xc7, 0x4f, 0x64, 0xe0, 0x5a, 0x26, 0xed,
+ 0x41, 0xd, 0xfa, 0xf8, 0xd5, 0x7e, 0x3d, 0xbf, 0xea, 0xfb,
+ 0x79, 0xf7, 0x43, 0xf8, 0x70, 0x8e, 0x71, 0x3d, 0xff, 0x2a,
+ 0x84, 0xa2, 0x48, 0x56, 0xe5, 0x9e, 0xb4, 0x9b, 0xc7, 0xbf,
+ 0xcb, 0x9f, 0xcf, 0xfd, 0x67, 0x15, 0x7c, 0xc, 0x7d, 0x82,
+ 0xf, 0xd4, 0xf9, 0xec, 0xf9, 0xd3, 0x58, 0x10, 0xe6, 0x3,
+ 0x17, 0x64, 0x51, 0xc3, 0xa0, 00, 0x83, 0x16, 0x4e, 0xb3,
+ 0x86, 0xa7, 0x11, 0x9c, 0xc1, 0xa2, 0x41, 0x9f, 0xcf, 0x77,
+ 0x6, 0x8b, 0xbd, 0xbd, 0xda, 0xc1, 0x60, 0xdd, 0x19, 0x2c,
+ 0x99, 0xc6, 0x52, 0xde, 0x5d, 0x9a, 0x45, 0xbd, 0x20, 0x79,
+ 0xcb, 0xb, 0xf6, 0xce, 0x60, 0x19, 0x93, 0x2e, 0xef, 0x6e,
+ 0x66, 0x73, 0x5c, 0xd8, 0x1c, 0x8, 0x4e, 0xa3, 0x41, 0xb8,
+ 0xa, 0x4a, 0x73, 0x16, 0x17, 0xc9, 0x11, 0x41, 0xc1, 0x63,
+ 0xb5, 0x43, 0xfc, 0xbb, 0x78, 0x6, 0x2b, 0x44, 0xdd, 0x95,
+ 0x3b, 0x9b, 0x6b, 0xa6, 0x71, 0x89, 0xc, 0xab, 0x4, 0x7f,
+ 0x8d, 0x8b, 0xbc, 0x26, 0x87, 0x79, 0xa9, 0xc7, 0x7d, 0x35,
+ 0x7f, 0x37, 0x4e, 0x21, 0xb0, 0x93, 0xe7, 0xb0, 0x6c, 0x32,
+ 0xd2, 0x9a, 0x53, 0xac, 0xd0, 0x4, 0x4e, 0xe2, 0x31, 0x34,
+ 0xe5, 0xd4, 0x1d, 0x76, 0x6d, 0x70, 0x13, 0x87, 0xc3, 0xcd,
+ 0x58, 0x84, 0x3, 0x68, 0x80, 0x81, 0x56, 0xc, 0xe1, 0x6a,
+ 0x44, 0xd1, 0x89, 0x18, 0x7a, 0x61, 0x61, 0x2f, 0x92, 0xb8,
+ 0x11, 0x29, 0x86, 0xde, 0xca, 0x5f, 0x36, 0x73, 0xc8, 0x70,
+ 0xe8, 0x4c, 0x70, 0xb8, 0x4c, 0x72, 0x40, 0x1c, 0x61, 0xf7,
+ 0xdf, 0xc6, 0x66, 0xba, 0x9d, 0x1b, 0xb0, 0x3b, 0xf8, 0x1d,
+ 0x74, 0x17, 0x3e, 0xcd, 0xe1, 0xf2, 0x30, 0x87, 0xc8, 0x63,
+ 0xbc, 0x73, 0x96, 0x83, 0xe2, 0xcb, 0x6c, 0x48, 0xc8, 0x2b,
+ 0x81, 0x6d, 0xcd, 0xe6, 0xac, 0x78, 0x96, 0xcd, 0x59, 0xcd,
+ 0x66, 0x7d, 0xb9, 0x8c, 0xfe, 0x45, 0xcd, 0x9a, 0x3, 0xb1,
+ 0x69, 0xb4, 0x34, 0x7, 0xd6, 0x4d, 0x63, 0x6d, 0xce, 0x2a,
+ 0x4a, 0xde, 0x2a, 0x4a, 0x5e, 0x57, 0xdf, 0xc6, 0x29, 0x3a,
+ 0x2a, 0x80, 0x9e, 0x96, 0x27, 0x3d, 0x78, 0xeb, 0x14, 0x2a,
+ 0x37, 0xf8, 0x5b, 0x9e, 0x9a, 0x82, 0xb6, 0xa1, 0xb2, 0xe5,
+ 0xa9, 0xfa, 0xca, 0xc7, 0xd9, 0xb, 0x97, 0xd, 0xf2, 0xe6,
+ 0x3a, 0xfe, 0x5d, 0xce, 0xe6, 0xbb, 0x62, 0x1a, 0x6d, 0xbc,
+ 0x6c, 0xcb, 0x62, 0xfd, 0xa3, 0xb8, 0x72, 0x6, 0x57, 0xb1,
+ 0xc, 0x6f, 0xd, 0x6e, 0xc8, 0xa2, 0x5d, 0xa0, 0xa7, 0x71,
+ 0x75, 0x16, 0x1b, 0x83, 0x9b, 0xa, 0x9f, 0x9b, 0xf9, 0x33,
+ 0x8b, 0x6b, 0xb2, 0xd8, 0xe2, 0x11, 0x75, 0x78, 0x53, 0xe7,
+ 0x9, 0x89, 0x78, 0x5a, 0x9c, 0x8f, 0x20, 0xfe, 0x2d, 0xcb,
+ 0xad, 0x1b, 0x99, 0x6d, 0x70, 0x2b, 0x13, 0xf8, 0x37, 0x4e,
+ 0xe1, 0x57, 0x81, 0xc0, 0x39, 0x75, 0x83, 0xdf, 0xe3, 0xb5,
+ 0xad, 0xde, 0x9f, 0x45, 0x97, 0x8, 0x7a, 0x1a, 0xdb, 0xb3,
+ 0xd8, 0xb1, 0xa1, 0xb2, 0xbe, 0x32, 0x8b, 0x48, 0x40, 0xbd,
+ 0x1f, 0xf3, 0xeb, 0x2b, 0x7d, 0x1, 0x35, 0x8b, 0x6b, 0x73,
+ 0xb0, 0x7b, 0x31, 0xdf, 0x53, 0xe8, 0xba, 0x29, 0x9c, 0x8,
+ 0xa8, 0xcc, 0xa3, 0x8a, 0x31, 0xdc, 0xad, 0xfa, 0x2a, 0x5f,
+ 0x16, 0xdd, 0xee, 0x72, 0xbd, 0x32, 0x5, 0xbd, 0xbe, 0xaa,
+ 0x56, 0xf1, 0xed, 0xe2, 0x47, 0x62, 0xad, 0x12, 0x50, 0x8f,
+ 0xbf, 0xf1, 0x3b, 0xef, 0xac, 0x9d, 0x72, 0x56, 0x4f, 0xee,
+ 0xdc, 0x2c, 0x7a, 0xd7, 0xab, 0xb5, 0xea, 0x43, 0x6e, 0x9a,
+ 0x6e, 0x85, 0xf7, 0x57, 0x91, 0x93, 0xb9, 0x91, 0x7f, 0x1b,
+ 0x44, 0xe6, 0xbe, 0x9c, 0xcc, 0xed, 0xf2, 0x71, 0xbd, 0xa7,
+ 0xb1, 0x27, 0x41, 0xd3, 0xc, 0xfa, 0x7, 0x83, 0x3, 0x67,
+ 0xb0, 0xeb, 0x71, 0x59, 0xe5, 0x8d, 0xb6, 0x9b, 0xad, 0x54,
+ 0xab, 0x7a, 0x6, 0x92, 0xbd, 0xe5, 0xc7, 0x5e, 0xcf, 0xe4,
+ 0xfc, 0xb3, 0xe7, 0x14, 0xf3, 0xef, 0xe1, 0x44, 0xba, 0x1,
+ 0x6f, 0xe1, 0xf9, 0x16, 0xfe, 0xcf, 0xa7, 0xd8, 0xb3, 0x58,
+ 0xc7, 0xe3, 0xbd, 0x50, 0x39, 0x62, 0xe6, 0xe3, 0xa3, 0x1c,
+ 0x77, 0x1f, 0xc3, 0x52, 0x7c, 0x9c, 0x93, 0xfe, 0x13, 0x58,
+ 0x89, 0x4f, 0x72, 0x6c, 0x1e, 0x47, 0x1b, 0xf7, 0xdb, 0x9b,
+ 0x70, 0x1f, 0x3a, 0xf0, 0x20, 0xcb, 0x7b, 0x2, 0xdb, 0xf1,
+ 0x59, 0xe6, 0xf2, 0x8, 0x73, 0x3b, 0xc9, 0x9c, 0x1e, 0xe5,
+ 0xb8, 0x3d, 0xcd, 0x91, 0x97, 0xe5, 0x52, 0x75, 0x96, 0xa1,
+ 0x33, 0xbc, 0xfa, 0x22, 0xbe, 0xc3, 0x91, 0xf6, 0xa, 0x9e,
+ 0xc0, 0xab, 0x78, 0x12, 0x3f, 0xc2, 0x57, 0xf0, 0x73, 0x3c,
+ 0x8d, 0x3f, 0xe0, 0xab, 0xe4, 0xc3, 0xd7, 0x68, 0x9, 0xbe,
+ 0x4e, 0x17, 0xe1, 0x39, 0xba, 0x14, 0xdf, 0xa0, 0x26, 0x3c,
+ 0x4f, 0xad, 0x78, 0x81, 0x9f, 0x9a, 0x2f, 0xd2, 0x76, 0xbc,
+ 0xc4, 0xf, 0xb6, 0x17, 0x69, 0x2f, 0xbe, 0x47, 0x51, 0xbc,
+ 0xcc, 0x4f, 0x87, 0x57, 0xe8, 0xfd, 0x78, 0x95, 0x3e, 0x88,
+ 0x1f, 0xd0, 0x87, 0xf1, 0x43, 0x3a, 0x86, 0x1f, 0xd3, 0x71,
+ 0xfc, 0x84, 0x1e, 0xc0, 0x4f, 0xe9, 0x4, 0x7e, 0x46, 0xd3,
+ 0xf8, 0x5, 0xbd, 0x80, 0x13, 0xf4, 0x6d, 0xbc, 0x46, 0xdf,
+ 0xc7, 0xef, 0x71, 0x8c, 0x35, 0x91, 0xe2, 0xd4, 0xef, 0x6a,
+ 0x94, 0x8b, 0x70, 0x8e, 0x75, 0x9f, 0x1b, 0x11, 0xa3, 0x62,
+ 0xc8, 0xbd, 0x85, 0xd0, 0xb9, 0xc1, 0x9b, 0x6, 0x4b, 0xc2,
+ 0x6e, 0x5f, 0x21, 0xce, 0xf6, 0xf3, 0xca, 0x8b, 0xb3, 0x92,
+ 0xed, 0x1b, 0xb, 0xdb, 0x37, 0x49, 0x54, 0xde, 0x5c, 0xf8,
+ 0xbc, 0xa5, 0x18, 0x95, 0x59, 0x1c, 0x28, 0x96, 0xaf, 0x6,
+ 0x28, 0x3c, 0xfe, 0x91, 0x6d, 0xfb, 0x6, 0x6a, 0x88, 0xfb,
+ 0x2, 0xd6, 0xbe, 0x8d, 0xfc, 0x88, 0x92, 0x82, 0x11, 0x52,
+ 0x67, 0xc9, 0xfb, 0x91, 0x42, 0x81, 0xfd, 0x18, 0xd7, 0x4a,
+ 0x89, 0x6, 0x43, 0xa, 0xb3, 0xc1, 0x27, 0x54, 0x84, 0x7,
+ 0x4f, 0xc3, 0xd8, 0xe7, 0x3f, 0xc0, 0x9f, 0xfe, 0xde, 0x39,
+ 00, 0xdf, 0x5c, 0x40, 0xa5, 00, 0xda, 0x9e, 0xc6, 0x72,
+ 0x4f, 0xb6, 0xa1, 0x63, 0x6e, 0x89, 0x6b, 0x73, 0xb1, 0x18,
+ 0x29, 0x8b, 0xe8, 0x14, 0xd4, 0x6e, 0x4e, 0xde, 0xf0, 0x29,
+ 0xd7, 0x2c, 0x37, 0x60, 0x7f, 0xa1, 00, 0xad, 0x60, 0x51,
+ 0x25, 0x8d, 0x2a, 0xa9, 0x96, 0x85, 0xad, 0xc3, 0x6a, 0x76,
+ 0xd5, 0x55, 0xb4, 0x14, 0x11, 0xaa, 0xc7, 0x7e, 0x5a, 0x8e,
+ 0x3, 0xd4, 0xc0, 0xb7, 0xd6, 0x47, 0x59, 0x44, 0x4f, 0xd4,
+ 0xbb, 0xb9, 0x78, 0xc8, 0x6d, 0xd1, 0xd7, 0x7c, 0x1a, 0x31,
+ 0x29, 0x75, 0x9f, 0x41, 0x97, 0x58, 0xd9, 0xf4, 0x4c, 0x31,
+ 0xec, 0x99, 0x78, 0x24, 0xcc, 0x9e, 0x6a, 0x9b, 0xc1, 0xe8,
+ 0x60, 0x30, 0x7e, 0x6, 0x7, 0x7b, 0xc2, 0x6e, 0x5d, 0xe,
+ 0x34, 0x4, 0x1a, 0x72, 0x95, 0xb9, 0xa5, 0xa4, 0x5a, 0xf2,
+ 0xbd, 0x71, 0xc8, 0xf7, 0x70, 0xc1, 0x84, 0x6b, 0xe5, 0x6e,
+ 0xa4, 0x4d, 0x98, 0x47, 0xd7, 0x60, 0x11, 0x6d, 0xc3, 0x12,
+ 0xea, 0x42, 0x3, 0x7, 0xca, 0x4a, 0xda, 0x81, 0x16, 0x8a,
+ 0x60, 0x23, 0x5d, 0x8b, 0x4e, 0x7e, 0xf3, 0x6f, 0xa7, 0x6e,
+ 0xf4, 0xf0, 0xd3, 0x95, 0xb8, 0xc4, 0xe5, 0xa5, 0x5b, 0xc9,
+ 0x66, 0x94, 0x9b, 0x42, 0x9, 0xfb, 0xf9, 0x86, 0xf3, 0x17,
+ 0x99, 0x6a, 0x62, 0x5f, 0x7e, 0x74, 0x56, 0xf2, 0x9b, 0x92,
+ 0x38, 0xd6, 0xcf, 0x27, 0xf0, 0x95, 0x23, 0x38, 0xc2, 0x4,
+ 0xb7, 0xf1, 0xd7, 0x27, 0x38, 0x2d, 0x3c, 0x82, 0xdd, 0xec,
+ 0x2a, 0xb9, 0xd8, 0x9a, 0xa4, 0x26, 0xf4, 0xac, 0xf1, 0x71,
+ 0x65, 0x8f, 0xb4, 0x48, 0x3d, 0x90, 0xc5, 0x7a, 0xff, 0x14,
+ 0xe6, 0xb5, 0xd4, 0xfa, 0xb9, 0x1a, 0xf8, 0xa9, 0xd6, 0x2f,
+ 0xd5, 0xe0, 0xb5, 0x62, 0x6c, 0x5c, 0xc0, 0xa6, 0x3, 0xbd,
+ 0x97, 0x59, 0xbe, 0xf, 0x1, 0x3a, 0x8a, 0x7a, 0xfa, 00,
+ 0x2b, 0x76, 0x14, 0x8d, 0xf4, 0x21, 0xc6, 0x38, 0x5e, 0x88,
+ 0x6, 0x87, 0xd, 0x2c, 0xd1, 0x70, 0x4d, 0x38, 0x1c, 0x4c,
+ 0x30, 0xeb, 0xb1, 0x69, 0xb7, 0x76, 0xae, 0x7b, 0x86, 0x6f,
+ 0x21, 0x36, 0x99, 0x95, 0x45, 0x32, 0x7, 0x9, 0xa6, 0xb2,
+ 0xb8, 0xf5, 0x18, 0xaa, 0xc3, 0x41, 0x9b, 0x6f, 0x97, 0x70,
+ 0x30, 0xcd, 0x25, 0x67, 0xac, 0x3b, 0xdc, 0x7c, 0x16, 0xce,
+ 0x34, 0x2e, 0x2f, 0x9e, 0xec, 0x39, 0xf9, 0x93, 0x6c, 0xd2,
+ 0xe3, 0x8, 0xd2, 0xa7, 0x70, 0x21, 0xdd, 0x87, 0x26, 0xba,
+ 0x1f, 0xad, 0x9c, 0x57, 0x57, 0xd2, 0x83, 0xd8, 0x4c, 0xf,
+ 0x31, 0x26, 0xbf, 0xb0, 0xb, 0x17, 0xbe, 0xcf, 0x75, 0xf2,
+ 0xea, 0x30, 0x7, 0x4d, 0xa6, 0xa7, 0xe5, 0x19, 0x34, 0x2c,
+ 0x3f, 0x86, 0xb, 0xc2, 0xb9, 0xb4, 0x60, 0x60, 0x7b, 0x70,
+ 0x3c, 0x9f, 0x2f, 0x6b, 0x5a, 0x4e, 0xce, 0xee, 0x24, 0xe8,
+ 0x73, 0xa8, 0xa2, 0x47, 0xb0, 0x80, 0x4e, 0x62, 0x15, 0x3d,
+ 0xca, 0x3b, 0xf7, 0xf3, 0x95, 0xe4, 0x31, 0x8e, 0xe7, 0x6e,
+ 0xf2, 0x36, 0xe, 0x99, 0xe6, 0x5c, 0xc4, 0x48, 0x94, 0x34,
+ 0x73, 0x90, 0xec, 0x3c, 0x2f, 0x48, 0xa, 0x57, 0xea, 0x59,
+ 0x4c, 0x70, 0x8c, 0xcc, 0xd5, 0xe7, 0x39, 0x28, 0xf4, 0x4d,
+ 0xd6, 0xe9, 0x79, 0x2c, 0xa6, 0x6f, 0xe1, 0x12, 0x7a, 0x11,
+ 0x61, 0x7a, 0x9, 0x6b, 0xb9, 0x36, 0x5c, 0x41, 0xdf, 0x65,
+ 0xcc, 0xcf, 0xb8, 0x35, 0x76, 0xea, 0x4f, 0x50, 0x4b, 0x3,
+ 0x4, 0xa, 00, 00, 00, 0x8, 00, 0x16, 0xa9, 0xda,
+ 0x2c, 0xc9, 0xa0, 0xa1, 0x6c, 0x47, 0xf, 00, 00, 0x1f,
+ 0x1e, 00, 00, 0xe, 00, 00, 00, 0x72, 0x66, 0x62,
+ 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6c, 0x61, 0x73,
+ 0x73, 0x85, 0x57, 0xb, 0x7c, 0x54, 0xd5, 0x99, 0xff, 0xce,
+ 0x9d, 0xc7, 0xbd, 0x99, 0xdc, 0x90, 0x9b, 0x81, 0x49, 0x8,
+ 0x33, 0x81, 0x41, 0x4, 0xc2, 0x4c, 0x2, 0xd1, 0x20, 0xef,
+ 0x67, 0x22, 0x81, 0x48, 0x1e, 0x98, 0x4, 0x10, 0xf0, 0xc1,
+ 0x24, 0x73, 0x93, 0xc, 0x24, 0x33, 0x71, 0x66, 0x92, 0x40,
+ 0x5b, 0xa1, 0xf, 0xd9, 0x3e, 0x5c, 0xbb, 0x4b, 0x95, 0x5a,
+ 0xac, 0x94, 0xa0, 0x54, 0xdc, 0x15, 0x6d, 0xed, 0x92, 0x60,
+ 0x85, 0xea, 0x5a, 0x6b, 0x45, 0x57, 0xdd, 0x76, 0xeb, 0x76,
+ 0x77, 0xbb, 0xdb, 0x56, 0xd7, 0xdd, 0xfa, 0xd6, 0xee, 0x5a,
+ 0xbb, 0x8f, 0x3e, 0xe8, 0xff, 0xbb, 0xf7, 0xce, 0xdc, 0x99,
+ 0x21, 0xb4, 0xf3, 0xfb, 0xcd, 0xf7, 0x3a, 0xdf, 0xf9, 0xce,
+ 0xf9, 0x1e, 0xe7, 0x3b, 0xe7, 0xbe, 0xf0, 0xfb, 0x27, 0x9e,
+ 0x24, 0x7, 0xd5, 0x8a, 0x66, 0xf, 0x45, 0xe9, 0xa5, 0x22,
+ 0xea, 0xa1, 0x97, 0x19, 0xfc, 0x3d, 0x83, 0x1f, 0x30, 0xf8,
+ 0x21, 0x83, 0x7f, 0x60, 0xf0, 0x23, 0x99, 0x5e, 0xf1, 0x90,
+ 0x42, 0xff, 0xc8, 0xcc, 0x8f, 0x65, 0xfa, 0x27, 0x99, 0xfe,
+ 0x99, 0xf9, 0x7f, 0xf1, 0x90, 0x4a, 0x3f, 0xf1, 0x50, 0x31,
+ 0xfd, 0x2b, 0x8f, 0xfc, 0x1b, 0xcb, 0x7e, 0xca, 0xd4, 0xcf,
+ 0x98, 0xfa, 0xb9, 0x4c, 0xaf, 0x7a, 0xe8, 0x35, 0xfa, 0x77,
+ 0x56, 0x78, 0x5d, 0xa6, 0xff, 0x90, 0xe9, 0x3f, 0x3d, 0x34,
+ 0x9d, 0x5e, 0x52, 0xe8, 0x17, 0x8c, 0xdf, 0x50, 0xe8, 0x4d,
+ 0xc6, 0x6f, 0x29, 0xf4, 0x36, 0xe3, 0x77, 0x3c, 0x54, 0x41,
+ 0xef, 0xf2, 0xf4, 0xf7, 0x18, 0xbc, 0xaf, 0xd0, 0x7, 0x1e,
+ 0x9a, 0x4f, 0xbf, 0xf4, 0xd0, 0x7f, 0xd1, 0x7f, 0xb3, 0x8d,
+ 0xf, 0x65, 0xfa, 0x15, 0x4b, 0x3e, 0x52, 0xe8, 0xd7, 0x2c,
+ 0xfc, 0x1f, 0x16, 0xfe, 0x2f, 0xeb, 0xfe, 0x1f, 0x83, 0xff,
+ 0x67, 0xf6, 0x37, 0x4c, 0xfd, 0x96, 0xc1, 0xef, 0x18, 0xfc,
+ 0x9e, 0xc1, 0x45, 00, 0x41, 0xc, 0x4, 0x3, 0x89, 0x81,
+ 0x83, 0x81, 0x93, 0x81, 0xb, 0xd3, 0x84, 0x9b, 0x29, 0xd9,
+ 0x23, 0x14, 0x51, 0xc4, 0xac, 0x87, 0xd9, 0x62, 0x6, 0x2a,
+ 0x83, 0x12, 0x6, 0x53, 0x18, 0x94, 0x32, 0xd0, 0x14, 0x51,
+ 0xa6, 0x8, 0xaf, 0x22, 0xa6, 0x2a, 0x62, 0x9a, 0x22, 0x7c,
+ 0x2c, 0x2b, 0x67, 0x50, 0x51, 0x24, 0xa6, 0x8b, 0x4a, 0x6,
+ 0x33, 0x98, 0xf5, 0x7b, 00, 0x2, 0xcc, 0x56, 0x31, 0x98,
+ 0x89, 0x3d, 0x8b, 0x59, 0x4c, 0x5, 0x1d, 0x44, 0x17, 0xb7,
+ 0x30, 0xb8, 0x9e, 0x41, 0x7, 0x83, 0x4e, 0x6, 0x5d, 0xc,
+ 0x14, 0x6, 0x45, 0xc, 0x4a, 0x18, 0xf8, 0x19, 0x5c, 0x64,
+ 0x40, 0x6c, 0x6f, 0x36, 0x5b, 0xbe, 0x82, 0xd9, 0xd7, 0x19,
+ 0xbc, 0xc6, 0xe0, 0xd, 0x6, 0x6f, 0xc9, 0x62, 0x8e, 0x2c,
+ 0xae, 0x14, 0xe4, 0x19, 0xd1, 0x93, 0xa9, 0x58, 0x22, 0xde,
+ 0x9a, 0xea, 0x13, 0xe4, 0x6d, 0xd9, 0x13, 0x19, 0x89, 0x2c,
+ 0x1a, 0x88, 0xc4, 0xfb, 0x16, 0x75, 0xa6, 0x93, 0xb1, 0x78,
+ 0xdf, 0x4a, 0x41, 0x25, 0x8d, 0x89, 0x78, 0x2a, 0x1d, 0x89,
+ 0xa7, 0xb7, 0x45, 0x6, 0x86, 0x75, 0xcc, 00, 0x1f, 0x6f,
+ 0x8a, 0xc4, 0x6, 0xf4, 0xa8, 0x20, 0xd1, 0xc, 0x6b, 0x44,
+ 0x82, 0xdc, 0x6d, 0x89, 0xf5, 0xc3, 0xe9, 0x7e, 0xe6, 0x84,
+ 0x20, 0x79, 0x5b, 0xbc, 0x27, 0xc3, 0x4a, 0x88, 0xa6, 0xc5,
+ 0xb6, 0x6f, 0x86, 0x39, 0x8b, 0xce, 0x58, 0x98, 0x62, 0xf1,
+ 0x5d, 0x89, 0x44, 0x6b, 0x24, 0xbe, 0x5f, 0x50, 0x59, 0x53,
+ 0x32, 0x32, 0xa8, 0x77, 0xf, 0xf7, 0xf6, 0xea, 0xc9, 0xad,
+ 0x43, 0xd1, 0x48, 0x1a, 0x6b, 0x4e, 0xed, 0xd4, 0xd3, 0x8d,
+ 0x89, 0x81, 0xc4, 0x70, 0xb2, 0x35, 0x32, 0xb4, 0x21, 0x8e,
+ 0xad, 0xe9, 0x29, 0x41, 0xce, 0x6, 0x7d, 0x60, 00, 0x16,
+ 0x3b, 0xf5, 0x24, 0xbc, 0x68, 0x1c, 0x4e, 0x77, 0xe9, 0xfb,
+ 0xd2, 0xbc, 0xa4, 0x3, 0x66, 0x31, 0x63, 0x4b, 0x6c, 0x9f,
+ 0x3e, 0xd0, 0x94, 0x48, 0xe, 0x46, 0xd2, 0x30, 0xd1, 0x14,
+ 0xdb, 0x77, 0xa9, 0x9, 0x15, 0x6a, 0x1b, 0xe2, 0x3d, 0x89,
+ 0x28, 0x7c, 0x5, 0x3b, 0xfd, 0x92, 0xb5, 0x3b, 0xf4, 0x5b,
+ 0x87, 0xf5, 0x14, 0xe6, 0x2b, 0x9b, 0xf5, 0xfd, 0x1b, 0x46,
+ 0xf4, 0xb8, 0xb1, 0x80, 0x13, 0x33, 0xb7, 0x24, 0x62, 0xf1,
+ 0xb4, 0x9e, 0xcc, 0xca, 0x5c, 0x1c, 0xaa, 0x81, 0x18, 0xb8,
+ 0x9c, 0x9d, 0xb8, 0x5, 0x15, 0x67, 0xec, 0x77, 0x44, 0x46,
+ 0x5, 0x69, 0x19, 0xae, 0x31, 0x31, 0xb4, 0xbf, 0x43, 0xef,
+ 0x49, 0xe7, 0x2a, 0x74, 0x6c, 0x80, 0xd, 0x5b, 0xc1, 0xe0,
+ 0x4b, 0x33, 0xfc, 0x26, 0x98, 0x44, 0xc8, 0xe0, 0x76, 0x7f,
+ 0x82, 0x37, 0xe4, 0x1c, 0x4a, 0x24, 0x19, 0xa5, 0x12, 0x3d,
+ 0x7b, 0x11, 0x35, 0x33, 0x75, 0x71, 0x3d, 0xbd, 0xa8, 0x13,
+ 0x2, 0x3d, 0x8d, 0xcc, 0x49, 0x31, 0xb8, 0x54, 0x69, 0xe,
+ 0xc4, 0x12, 0x8b, 0xae, 0x8d, 0xa4, 0x23, 0xcd, 0xf1, 0xa1,
+ 0xe1, 0x34, 0x52, 0xab, 0x47, 0x6, 0x59, 0x21, 0x1, 0x85,
+ 0xf2, 0xac, 0x42, 0xfb, 0x70, 0x3a, 0x77, 0x54, 0x8b, 0xc5,
+ 0xdb, 0x38, 0x78, 0x3, 0x5b, 0x92, 0x89, 0x74, 0xa2, 0x27,
+ 0x81, 0x50, 0x8b, 0x9d, 0xf8, 0x8f, 0x60, 0xcb, 0x2d, 0x23,
+ 0xf1, 0x9e, 0x91, 0x98, 0x3e, 0xaa, 0x27, 0xa1, 0x58, 0x9c,
+ 0x32, 0x12, 0xd0, 0x1a, 0xd9, 0x93, 0x48, 0xda, 0x5c, 0x2c,
+ 0x6e, 0x70, 0x51, 0x3d, 0xb5, 0x37, 0x9d, 0x18, 0x6a, 0x43,
+ 0x5c, 0x61, 0xb2, 0xd7, 0x8e, 0xef, 0xf6, 0x58, 0x34, 0xdd,
+ 0x8f, 0x8d, 0xe7, 0x88, 0x36, 0xe9, 0xb1, 0xbe, 0x7e, 0xf8,
+ 0xa4, 0x76, 0xc7, 0xd2, 0xa9, 0x2d, 0x7a, 0xd2, 0x48, 0xa0,
+ 0x20, 0x57, 0x54, 0x1f, 0x62, 0xd5, 0xa2, 0xee, 0x58, 0xdf,
+ 0x86, 0x78, 0x34, 0x16, 0x89, 0xa3, 0xa, 0xd3, 0xc9, 0x61,
+ 0xdd, 0xcc, 0x27, 0x8a, 0x2f, 0xa9, 0x47, 0x5b, 0x23, 0xfb,
+ 0x90, 0xa4, 0xbe, 0xa4, 0xae, 0xc7, 0xd, 0x52, 0xee, 0x46,
+ 0xb5, 0x9a, 0x42, 0x8c, 0x76, 0xf6, 0xc7, 0x7a, 0x61, 0xd8,
+ 0x63, 0x8c, 0x5b, 0x4c, 0x11, 0x6b, 0x58, 0xb4, 0x3a, 0x6c,
+ 0x64, 0xbb, 0x8d, 0x33, 0x82, 0x98, 0x14, 0xf, 0x5b, 0xc9,
+ 0xef, 0x49, 0xdf, 0x90, 0xc7, 0xed, 0xc8, 0xe3, 0xb6, 0xe7,
+ 0x71, 0x9b, 0x70, 0x80, 0x6c, 0x2e, 0x93, 0x36, 0xd8, 0xee,
+ 0xb1, 0x52, 0xdd, 0x99, 0xec, 0xb9, 0x21, 0x9f, 0x85, 0x39,
+ 0x45, 0xe7, 0x2, 0x6a, 0x18, 0xee, 0x45, 0x3a, 0x76, 0x35,
+ 0xc0, 0x60, 0x86, 0x6f, 0xd1, 0xe1, 0x66, 0xf1, 0x90, 0x59,
+ 0x65, 0xad, 0x91, 0x14, 0x92, 0xac, 0x26, 0x6, 0xa2, 0xad,
+ 0xb0, 0xda, 0x1b, 0xc3, 0xa1, 0x85, 0xdb, 0xab, 0x62, 0xf1,
+ 0x58, 0x7a, 0x8d, 0xa0, 0xd9, 0xd5, 0x97, 0x1e, 0xdc, 0xe6,
+ 0x9c, 0x14, 0x2d, 0xd8, 0x86, 0x3a, 0x69, 0x4c, 0x44, 0x91,
+ 0x81, 0xd2, 0x96, 0x58, 0x5c, 0x6f, 0x1b, 0x1e, 0xec, 0xd6,
+ 0x93, 0x5d, 0x91, 0x6e, 0x2e, 0x27, 0xcf, 0x86, 0x7d, 0x3d,
+ 0x88, 0x2f, 0x7a, 00, 0x4c, 0xba, 0x7a, 0x6, 0x12, 0x29,
+ 0x8, 0x1d, 0xd5, 0x3c, 0x67, 0xa, 0x2a, 0x21, 0xba, 0x2d,
+ 0xa7, 0x41, 0x94, 0x8e, 0x26, 0x63, 0x69, 0x3d, 0x57, 0x62,
+ 0xa8, 0xf0, 0xf9, 0xed, 0xec, 0xe9, 0xd7, 0x7, 0xcd, 0x99,
+ 0xcd, 0x19, 0x45, 0xf3, 0x38, 0x34, 0x63, 0x93, 0x96, 0xa2,
+ 0x79, 0x52, 0x4d, 0x81, 0xcf, 0x16, 0xb4, 0xea, 0xa9, 0x54,
+ 0xa4, 0x4f, 0xef, 0xda, 0x3f, 0xa4, 0x5b, 0xf2, 0x49, 0x7a,
+ 0x40, 0x60, 0x52, 0xb9, 0x11, 0xf8, 0x28, 0x6a, 0x40, 0xe5,
+ 0x61, 0xfb, 0x50, 0x55, 0x19, 0x1b, 0xf8, 0x23, 0xc7, 0xb9,
+ 0xba, 0x19, 0xbf, 0x9d, 0xec, 0xe5, 0x54, 0x43, 0xb5, 0xb0,
+ 0x5f, 0x94, 0x40, 0x61, 0xe7, 0xce, 0x66, 0xe3, 0xc7, 0x5a,
+ 0x65, 0x19, 0xad, 0x9c, 0x76, 0xe1, 0xae, 0xde, 0x95, 0x3b,
+ 0x98, 0xdb, 0x11, 0x60, 0xd6, 0x4a, 0x4a, 0x64, 0x34, 0xbd,
+ 0xc8, 0x10, 0x19, 0x69, 0x28, 0x31, 0x34, 0x33, 0xbd, 0x4,
+ 0x1, 0xaf, 0x36, 0x37, 0x51, 0x6e, 0xc8, 0x33, 0xc9, 0xcd,
+ 0x8c, 0x73, 0x93, 0xab, 0x36, 0x56, 0xf0, 0x74, 0xa2, 0xd2,
+ 0x7b, 0xf4, 0x26, 0xa3, 0x3, 0x94, 0x24, 0x7b, 0xbb, 0x8d,
+ 0x43, 0xb9, 0x90, 0x57, 0x50, 0xe9, 0x51, 0x3a, 0xa3, 0xd2,
+ 0x17, 0xe9, 0x2f, 0x54, 0xfa, 0x2b, 0xfa, 0x6b, 0x95, 0x4e,
+ 0x53, 0x4c, 0xa5, 0xbf, 0xa4, 0xc3, 0x2a, 0xfd, 0x19, 0xf5,
+ 0xaa, 0xf4, 0x59, 0x8a, 0x21, 0x21, 0x5, 0xed, 0x1, 0x93,
+ 0xc4, 0x5c, 0x95, 0x3e, 0x47, 0x9f, 0x17, 0x54, 0x71, 0x99,
+ 0xe, 0x21, 0xc8, 0x9f, 0x19, 0x69, 0x30, 0x62, 0xa8, 0x47,
+ 0x73, 0x46, 0x55, 0x31, 0x4f, 0xcc, 0x67, 0x33, 0xd5, 0xc,
+ 0x16, 0xa8, 0xf4, 0x5, 0xba, 0x43, 0x15, 0x21, 0x11, 0x56,
+ 0xe9, 0xcf, 0xe9, 0x4e, 0x95, 0xfe, 0x86, 0xce, 0x20, 0x8,
+ 0x76, 0x5d, 0x66, 0xcb, 0x4c, 0x16, 0x35, 0xaa, 0xa8, 0xc5,
+ 0x96, 0xc5, 0x42, 0xb1, 0x28, 0xa3, 0x82, 0x35, 0x9a, 0xdb,
+ 0xb3, 0x2a, 0x88, 0x47, 0x61, 0x41, 0x9b, 0x3b, 0x40, 0xc0,
+ 0x36, 0xa1, 0xfb, 0x5, 0x55, 0x51, 0x27, 0xae, 0x42, 0x2,
+ 0x82, 0xdc, 0x4, 0xd, 0xee, 0x6a, 0x54, 0x4e, 0x30, 0x96,
+ 0xa, 0xc6, 0x13, 0xe9, 0x60, 0x24, 0x1e, 0xec, 0x68, 0x6a,
+ 0x8, 0x9a, 0x8d, 0x48, 0x15, 0xf5, 0x62, 0x31, 0x6f, 0xf1,
+ 0x1a, 0x95, 0xbe, 0xc4, 0x91, 0xb9, 0x8b, 0xe3, 0xa1, 0xb2,
+ 0x42, 0x5d, 0x5d, 0xfd, 0x42, 0xfc, 0x3d, 0xaa, 0x58, 0x22,
+ 0x96, 0xca, 0x62, 0x99, 0x2a, 0x96, 0x8b, 0x45, 0xaa, 0x58,
+ 0x41, 0x8f, 0xa3, 0x55, 0x15, 0x6e, 0x80, 0x4d, 0xa0, 0xd9,
+ 0x2d, 0xdc, 0x1a, 0xdf, 0x1b, 0x4f, 0x8c, 0xc6, 0x83, 0x11,
+ 0x14, 0x3d, 0x52, 0x14, 0xeb, 0x89, 0xf0, 0x8e, 0x83, 0x29,
+ 0xa3, 0xfe, 0x83, 0xbd, 0xc9, 0xc4, 0x60, 0xce, 0xe2, 0xd8,
+ 0xda, 0x72, 0x7a, 0x41, 0x15, 0xab, 0xe8, 0x71, 0x95, 0x8e,
+ 0xf0, 0xea, 0x5f, 0x6, 0x10, 0xab, 0x99, 0xbd, 0x87, 0xd9,
+ 0xaf, 0x30, 0x38, 0xca, 0xa9, 0xbb, 0x97, 0xc1, 0x57, 0x99,
+ 0xbd, 0x8f, 0xc1, 0x31, 0x6, 0x5f, 0x63, 0x70, 0x9c, 0xc1,
+ 0x18, 0x4f, 0x5b, 0x23, 0xd6, 0xaa, 0x74, 0x37, 0xf5, 0xca,
+ 0x62, 0x1d, 0x18, 0xd8, 0x10, 0xeb, 0x45, 0x83, 0x4a, 0x27,
+ 0x58, 0xe1, 0x7e, 0x6, 0xf, 0x30, 0x38, 0xc9, 0xe0, 0xeb,
+ 0xc, 0x1e, 0x64, 0x4f, 0xab, 0x73, 0xe, 0x41, 0xd0, 0xec,
+ 0x4f, 0xc1, 0x24, 0xce, 0x8, 0x3c, 0x1b, 0xd0, 0x83, 0xe9,
+ 0x44, 0x22, 0x38, 0x10, 0x49, 0xf6, 0xe9, 0x2b, 0x82, 0x68,
+ 0xed, 0xe8, 0x96, 0xae, 0x60, 0x24, 0x1d, 0xac, 0x6, 0x5d,
+ 0x83, 0x3f, 0xb2, 0x7a, 0x8a, 0xd, 0x3d, 0x44, 0x31, 0x59,
+ 0x34, 0xaa, 0xe2, 0x5a, 0xde, 0xc5, 0x6, 0x96, 0x3c, 0xcc,
+ 0xe0, 0x79, 0x76, 0xcd, 0xcb, 0xb2, 0x26, 0x6, 0xcb, 0xc5,
+ 0x46, 0x55, 0x6c, 0xe2, 0x81, 0xe7, 0xe8, 0x82, 0x4a, 0x8f,
+ 0xf0, 0xea, 0x4a, 0xa6, 0x54, 0xf3, 0x22, 0xda, 0xde, 0xbd,
+ 0xc7, 0x38, 0xa5, 0xe5, 0x93, 0x35, 0x2e, 0xa3, 0xf3, 0xf4,
+ 0xe9, 0xe9, 0xbc, 0x4a, 0xac, 0xa8, 0x5e, 0x90, 0xbd, 0xa7,
+ 0xf2, 0x2f, 0xb1, 0xca, 0xea, 0x49, 0x7, 0xc, 0x33, 0xd3,
+ 0x27, 0x1f, 0xe3, 0xa1, 0x52, 0xac, 0x90, 0x7b, 0xe1, 0xb1,
+ 0xf2, 0x82, 0xcb, 0x5d, 0x85, 0x39, 0x65, 0xdc, 0xd5, 0x9f,
+ 0x4c, 0x8c, 0x9a, 0x9d, 0xb3, 0x74, 0x8, 0x1b, 0x86, 0x52,
+ 0xa4, 0x67, 0x6f, 0x57, 0x32, 0xd2, 0x3, 0x49, 0x91, 0xd1,
+ 0xa3, 0x86, 0x7, 0x6, 0xf6, 0xf3, 0xc9, 0xde, 0xd5, 0xc0,
+ 0xb, 0xb9, 0x23, 0x43, 0x43, 0x7a, 0x1c, 0x2f, 0x9d, 0x9a,
+ 0x49, 0x9c, 0x5d, 0x70, 0x89, 0xc8, 0xac, 0x73, 0xac, 0xe9,
+ 0xc7, 0xc1, 0xbf, 0xfc, 0xa8, 0x92, 0x4e, 0x98, 0x12, 0x41,
+ 0xd3, 0xaa, 0x2f, 0xd5, 0x83, 0x86, 0x6f, 0xb2, 0xe5, 0xb6,
+ 0xf1, 0x1d, 0xa9, 0xa7, 0x1b, 0xf6, 0xa7, 0xf9, 0xf5, 0xc3,
+ 0x4d, 0x70, 0x57, 0x83, 0x11, 0xa9, 0x69, 0x93, 0x79, 0xe,
+ 0x27, 0x8c, 0xb6, 0x84, 0xdb, 0x94, 0x1d, 0x6b, 0xe6, 0x86,
+ 0x85, 0x9e, 0x67, 0xce, 0x28, 0x63, 0xd1, 0xd6, 0x78, 0x2a,
+ 0xd6, 0x17, 0xe7, 0xfb, 0xd5, 0x78, 0x8c, 0x68, 0xb9, 0x32,
+ 0x5e, 0x4, 0xfd, 0x8b, 0x45, 0x56, 0x34, 0x70, 0x31, 0x54,
+ 0x66, 0xd6, 0x41, 0x27, 0x4b, 0xf3, 0x55, 0x90, 0xb3, 0x98,
+ 0xc2, 0xaa, 0xe6, 0x2c, 0xdc, 0x22, 0xb8, 0xb, 0xa7, 0xe4,
+ 0x37, 0x50, 0x7e, 0xd1, 0xc0, 0x54, 0xd1, 0xa0, 0x7d, 0x5,
+ 0xa, 0x4, 0x5a, 0xe6, 0x1d, 0x19, 0x5b, 0x72, 0xec, 0xd5,
+ 0xf7, 0x53, 0x10, 0x8f, 0xf8, 0x28, 0x9e, 0x5e, 0xcb, 0xf1,
+ 0x95, 0xa0, 0x53, 0x2f, 0xde, 0xa6, 0x7d, 0xfc, 0xa, 0xa5,
+ 0x39, 0xe0, 0xfb, 0x29, 0x96, 0xe5, 0xf7, 0x80, 0xdf, 0x9b,
+ 0xc3, 0xf, 0x80, 0x1f, 0xcc, 0xe1, 0xe3, 0xe0, 0x13, 0x5,
+ 0xfa, 0x43, 0x5, 0xfa, 0xb7, 0x16, 0xe8, 0x27, 0xb, 0xf4,
+ 0x53, 0x5, 0xfa, 0xe9, 0x2, 0xfd, 0xe1, 0x1c, 0x7e, 0x4,
+ 0xfc, 0x68, 0xc1, 0xfc, 0x7d, 0x5, 0xf3, 0xf7, 0x17, 0xcc,
+ 0xff, 0x58, 0xc1, 0xfc, 0x8f, 0xe7, 0xf0, 0x9f, 00, 0x7f,
+ 0x5b, 0xe, 0x7f, 00, 0xfc, 0xc1, 0x1c, 0xfe, 0x93, 0xe0,
+ 0x3f, 0x55, 0xb0, 0xde, 0xa7, 0xb, 0xd6, 0xfb, 0x4c, 0xc1,
+ 0x7a, 0xb7, 0x17, 0xd8, 0x3f, 0x94, 0x67, 0x9f, 0xf8, 0xbe,
+ 0xe1, 0xcf, 0x1, 0xbe, 0x72, 0xc, 0x8c, 0xeb, 0xc5, 0xc0,
+ 0xb8, 0x1a, 0xc, 0x8c, 0x8b, 0xc1, 0xc0, 0xb8, 0xab, 0xc,
+ 0x8c, 0x4b, 0xca, 0xc0, 0x5f, 0xb2, 0xf4, 0xef, 0xb2, 0xf0,
+ 0xdd, 0x96, 0x9d, 0x23, 0x16, 0xff, 0x65, 0xb, 0xdf, 0x63,
+ 0xe1, 0xaf, 0x58, 0xf8, 0xa8, 0x65, 0xe7, 0x5e, 0xb, 0x7f,
+ 0xd5, 0x92, 0xdf, 0x67, 0xe1, 0x63, 0x16, 0xfe, 0x9a, 0x85,
+ 0x8f, 0x5b, 0x78, 0xcc, 0xc2, 0x27, 0x2c, 0x7c, 0xbf, 0x85,
+ 0x1f, 0xb0, 0xf0, 0x49, 0xb, 0x7f, 0xdd, 0xc2, 0xf, 0x5a,
+ 0xf8, 0x94, 0x85, 0x1f, 0xb2, 0x30, 0xae, 0x5b, 0x3, 0x3f,
+ 0x6c, 0xf1, 0xa7, 0x2d, 0xfc, 0x88, 0x81, 0xbd, 0xf8, 0x3f,
+ 0x4a, 0xdf, 0x40, 0x6c, 0xbe, 0x69, 0xac, 0x29, 0x93, 0x13,
+ 0x78, 0x77, 0xe8, 0x2c, 0x89, 0x90, 0x63, 0x9c, 0xa4, 0x90,
+ 0xb6, 0xe9, 0xbc, 0x32, 0x4e, 0xe, 0x66, 0x9c, 0xa1, 0xda,
+ 0x71, 0x72, 0x85, 0xc2, 0xe3, 0xe4, 0xe, 0x5, 0xc6, 0x49,
+ 0xe, 0x9d, 0x23, 0x65, 0x47, 0xe8, 0xc, 0xb8, 0x33, 0x24,
+ 0x9f, 0xa5, 0xa2, 0x71, 0xf2, 0x40, 0x54, 0xbc, 0xe3, 0x1c,
+ 0xa9, 0x2c, 0xf6, 0x4c, 0x50, 0x49, 0xd9, 0x3a, 0x3a, 0x4b,
+ 0x53, 0xce, 0x52, 0xe9, 0x38, 0x69, 0x21, 0x53, 0x56, 0x36,
+ 0x4e, 0xde, 0xc7, 0x88, 0xbf, 0xc7, 0x18, 0x2e, 0xc4, 0x27,
+ 0x2e, 0xd1, 0x66, 0xac, 0xda, 0x48, 0x45, 0xe2, 0x8, 0x95,
+ 0x89, 0xe3, 0x54, 0x4e, 0x2d, 0xe4, 0xa7, 0x56, 0x9c, 0x92,
+ 0x36, 0x9a, 0x4b, 0xed, 0xb4, 0x8c, 0xb6, 0x50, 0x17, 0x75,
+ 0xd0, 0x2d, 0xd4, 0x49, 0xdf, 0x82, 0xb6, 0x13, 0x73, 0x2b,
+ 0x80, 0x71, 0x7b, 0x83, 0xe2, 0x7d, 0x2f, 0x3, 0x96, 0x80,
+ 0x35, 0x73, 0x89, 0xa9, 0xa7, 0x48, 0x69, 0x9, 0x4f, 0x90,
+ 0xef, 0x31, 0xc8, 0x9, 0x3e, 0x79, 0x68, 0x9a, 0xb5, 0xde,
+ 0x14, 0xe2, 0x4f, 0x9e, 0x1b, 0x20, 0xd9, 0x49, 0xa5, 0x74,
+ 0x23, 0xe8, 0x71, 0x58, 0x31, 0xbc, 0x17, 0x1b, 0x61, 0x19,
+ 0x56, 0x44, 0x85, 0xa6, 0x9e, 0x57, 0x5a, 0x60, 0x4a, 0x83,
+ 0x8d, 0xf2, 0xb0, 0xa3, 0x5e, 0xeb, 0x18, 0xa3, 0x23, 0x61,
+ 0x67, 0xbd, 0xd6, 0x34, 0x46, 0x77, 0x86, 0x5d, 0xf5, 0x5a,
+ 0xc3, 0x18, 0x1d, 0xa, 0xbb, 0xeb, 0xb5, 0xe0, 0x18, 0xdd,
+ 0x16, 0x96, 0xeb, 0xb5, 0xba, 0x13, 0x34, 0xcc, 0x78, 0xf9,
+ 0x3, 0x34, 0x18, 0x56, 0xc, 0x5e, 0x67, 0xc, 0xfe, 0xa6,
+ 0xb0, 0xe6, 0x36, 0x4, 0x5d, 0x6, 0x1, 0xc9, 0xe6, 0xb0,
+ 0x6, 0xd5, 0x85, 0x63, 0xd4, 0x10, 0xd6, 0x4c, 0xdd, 0xe5,
+ 0x6, 0x81, 0xa1, 0xba, 0xb0, 0x56, 0x64, 0x48, 0xe6, 0x1b,
+ 0x4, 0x24, 0x33, 0xc3, 0x9a, 0xc7, 0x90, 0xf8, 0xc, 0x2,
+ 0x12, 0x35, 0xac, 0x15, 0xd7, 0x6b, 0x9e, 0xe3, 0x74, 0xf5,
+ 0x39, 0xaa, 0x40, 0xac, 0xa7, 0xef, 0x38, 0x4b, 0x95, 0xde,
+ 0x19, 0x13, 0xe4, 0xe7, 0x54, 00, 0x79, 0x3, 0x26, 0x2d,
+ 0x4f, 0x50, 0x95, 0x77, 0x26, 0xe8, 0x9, 0x9a, 0x75, 0x96,
+ 0x82, 0x4f, 0x85, 0x8c, 0x9d, 0x46, 0xb5, 0x68, 0xbf, 0xb1,
+ 0xc5, 0xa8, 0xe6, 0xe9, 0xdf, 0x6d, 0x6e, 0x2e, 0xba, 0x7b,
+ 0x9c, 0x66, 0x87, 0xcc, 0xdd, 0x18, 0xe3, 0xc6, 0x2e, 0x2c,
+ 0x5, 0x8f, 0xa5, 0x70, 0x85, 0x9d, 0xb4, 0x99, 0x8, 0x29,
+ 0xa1, 0xfc, 0x5d, 0x68, 0x56, 0x25, 0x38, 0x94, 0xa7, 0xd0,
+ 0x74, 0x7e, 0x8c, 0xc6, 0xf1, 0x11, 0xd, 0x8b, 0x72, 0x1c,
+ 0xf2, 0xdc, 0x24, 0x4d, 0x64, 0xc2, 0x4b, 0xab, 0xa0, 0xcf,
+ 0x49, 0x9a, 0x6e, 0x84, 0xd7, 0x3b, 0xc7, 0xa1, 0xa9, 0x61,
+ 0xc7, 0x4, 0x5d, 0x89, 0xad, 0x7a, 0x11, 0xe8, 0xb9, 0xb6,
+ 0x7d, 0xaf, 0x51, 0x84, 0x7, 0xa0, 0x7f, 0x10, 0x49, 0xfa,
+ 0x24, 0xec, 0x7c, 0x2a, 0xcf, 0xe6, 0x59, 0x7a, 0xdc, 0xb2,
+ 0x79, 0x2f, 0xb9, 0xd, 0xdd, 0x5e, 0xce, 0xd6, 0x4, 0xcd,
+ 0x5b, 0xe5, 0x37, 0x8b, 0xbd, 0x81, 0xcc, 0x1f, 0xaf, 0xe7,
+ 0xc7, 0x7f, 0x1d, 0xff, 0x2d, 0x9d, 0xd5, 0x81, 0xf3, 0x4a,
+ 0x1b, 0xd3, 0xb5, 0xc8, 0xae, 0x19, 0xc3, 0xf9, 0x3b, 0x6a,
+ 0x1d, 0x67, 0xa9, 0x9a, 0xa3, 0xe4, 0x3f, 0x9d, 0x1b, 0xd6,
+ 0x5, 0x8, 0x1f, 0xe2, 0x57, 0x65, 0x85, 0x30, 0xbb, 0xc3,
+ 0x2b, 0x48, 0x1, 0xfc, 0x3c, 0xe0, 0x1d, 0x74, 0x25, 0x5a,
+ 0x45, 0xd, 0xe, 0x77, 0x1d, 0x5a, 0xc5, 0x32, 0x34, 0x8b,
+ 0x66, 0xb4, 0x84, 0xcd, 0x38, 0xfe, 0xb9, 0x3b, 0xfe, 0x76,
+ 0x36, 0xa, 0x73, 0x81, 0xb9, 0x28, 0x8b, 0xd8, 0x6d, 0xb8,
+ 0x1f, 0xb2, 0xdd, 0xf6, 0x18, 0xdb, 0x45, 0xed, 0xe2, 0xc4,
+ 0xe6, 0x4e, 0x7e, 0x22, 0x5b, 0xa1, 0x35, 0x8, 0x9, 0xbb,
+ 0x7b, 0x21, 0x64, 0xfa, 0x82, 0xa3, 0x58, 0x63, 0x93, 0xb5,
+ 0x16, 0xb9, 0x70, 0x9c, 0x16, 0xd9, 0x64, 0x5d, 0x86, 0x3c,
+ 0x4a, 0xb2, 0xf3, 0x14, 0x39, 0x71, 0x90, 0xaf, 0xba, 0x54,
+ 0x74, 0xb5, 0x6d, 0xa6, 0xde, 0x26, 0x17, 0xdb, 0xe4, 0x35,
+ 0xb6, 0xc5, 0x25, 0x36, 0xb9, 0xd4, 0x26, 0x97, 0xb9, 0xed,
+ 0x43, 0xb3, 0x7c, 0xfb, 0x64, 0xb1, 0xe, 0x65, 0x3, 0x3d,
+ 0x4e, 0x2b, 0x42, 0x4e, 0x74, 0x17, 0xdb, 0xf7, 0xe, 0x9c,
+ 0x50, 0x42, 0x5a, 0x8b, 0x11, 0xaa, 0x72, 0x78, 0x3c, 0x9b,
+ 0xce, 0x21, 0xa8, 0xe7, 0x69, 0x2d, 0x7d, 0x7, 0x63, 0x4f,
+ 0xd2, 0x4d, 0xf4, 0x14, 0x8a, 0xed, 0x6f, 0x71, 0x5b, 0x3d,
+ 0x8d, 0xc2, 0xf8, 0x2e, 0x42, 0xff, 0xc, 0x3a, 0xf0, 0xf7,
+ 0x10, 0xe6, 0x67, 0xd1, 0x21, 0xbf, 0x8f, 0x2e, 0xf7, 0x1c,
+ 0x3a, 0xda, 0x5, 0x9c, 0xe6, 0xe7, 0x31, 0xfa, 0x77, 0xe0,
+ 0x5e, 0xcc, 0x8b, 0xe1, 0xb9, 0x6c, 0xc9, 0x4, 0x21, 0xe1,
+ 0x4, 0x28, 0xe6, 0x16, 0x57, 0x9e, 0xce, 0xee, 0xc1, 0x6d,
+ 0xc8, 0x5f, 0xc9, 0x9b, 0x77, 0x3e, 0x9b, 0xb8, 0xc5, 0x56,
+ 0xe2, 0xa6, 0x99, 0xf3, 0x56, 0x6d, 0xb7, 0x63, 0xb3, 0xda,
+ 0xf6, 0xc3, 0xec, 0x2f, 0x3f, 0x47, 0xe, 0x5f, 0xa5, 0xa9,
+ 0xf4, 0x5a, 0x9e, 0xad, 0xef, 0x64, 0x6d, 0xfd, 0xc8, 0x90,
+ 0xa1, 0xd7, 0xdb, 0x36, 0xd6, 0xd8, 0xe4, 0x5a, 0x9b, 0x5c,
+ 0x67, 0x93, 0xeb, 0x2d, 0x72, 0xde, 0x38, 0x35, 0x80, 0x5a,
+ 0x83, 0xff, 0xba, 0xdd, 00, 0x35, 0xf, 0xd0, 0x54, 0xa0,
+ 0xb5, 0xf8, 0xaf, 0x67, 0xbe, 0xf6, 0x24, 0x5d, 0x97, 0x5b,
+ 0xc2, 0x8d, 0x66, 0x37, 0x58, 0xc7, 0xdd, 0xe0, 0x5a, 0x93,
+ 0x5e, 0xcf, 0xf4, 0x6, 0x93, 0x5e, 0xc3, 0x74, 0x93, 0x49,
+ 0xaf, 0x65, 0x7a, 0xa3, 0xdd, 0x31, 0x6c, 0xb7, 0xcc, 0x7a,
+ 0x7f, 0x13, 0xe9, 0x79, 0xb, 0xe9, 0x79, 0x1b, 0xe9, 0x79,
+ 0x7, 0xe9, 0x79, 0x97, 0x96, 0xd2, 0xfb, 0xb4, 0x9d, 0x7e,
+ 0x89, 0xcb, 0xeb, 0x57, 0x79, 0xae, 0x3e, 0x99, 0x75, 0x75,
+ 0xa9, 0x15, 0xb6, 0xa, 0xdb, 0x93, 0x4d, 0x36, 0xd9, 0x5c,
+ 0x18, 0xb9, 0xdf, 0x60, 0x89, 0xdf, 0x62, 0x89, 0xdf, 0xe5,
+ 0x99, 0x7b, 0xa, 0x99, 0x37, 0xcd, 0xbd, 0x4, 0x19, 0x37,
+ 0x9f, 0x43, 0x9a, 0xe7, 0xbc, 0xb2, 0xc2, 0x5d, 0xe9, 0x76,
+ 0xb8, 0xbb, 0x2a, 0xdd, 0x4e, 0x9f, 0x2b, 0x53, 0xca, 0xe0,
+ 0x5c, 0x7e, 0x4d, 0xf9, 0x58, 0x19, 0x5d, 0x3c, 0x70, 0x18,
+ 0x8c, 0xdb, 0x9f, 0xa1, 0xe4, 0x40, 0x8e, 0x58, 0x9, 0x64,
+ 0x28, 0xcd, 0x5d, 0x95, 0x23, 0xd7, 0xe4, 0xaa, 0x2c, 0xa9,
+ 0xf8, 0x9c, 0xb9, 0x23, 0x45, 0x3e, 0xa7, 0x49, 0xf3, 0xc9,
+ 0xad, 0x74, 0xe7, 0x75, 0xac, 0x25, 0xe8, 0x83, 0x84, 0xde,
+ 0xe7, 0x16, 0xd3, 0xa9, 0x58, 0x54, 0x52, 0xa5, 0x98, 0x41,
+ 0xf3, 0x84, 0x9f, 0xea, 0x44, 0x80, 0x56, 0x8b, 0x2a, 0xda,
+ 0x28, 0x66, 0xd2, 0x56, 0x31, 0x8b, 0x76, 0x8b, 0x20, 0x25,
+ 0xc4, 0x6c, 0xfa, 0xb8, 0x98, 0x43, 0xb7, 0x8b, 0x2b, 0xf3,
+ 0x9c, 0x7c, 0x1a, 0x85, 0x6b, 0x3a, 0x79, 0x11, 0x32, 0x95,
+ 0x5b, 0x81, 0x36, 0xd, 0x4e, 0x16, 0x57, 0x16, 0x3b, 0xe0,
+ 0x56, 0xb1, 0xec, 0xc7, 0x36, 0x8a, 0x95, 00, 0x43, 0x6c,
+ 0xda, 0x76, 0xb8, 0x58, 0x93, 0x7d, 0xce, 0x5c, 0x56, 0xf1,
+ 0xb9, 0xec, 0x8d, 0x17, 0x63, 0xe3, 0xae, 0x2c, 0xed, 0xf1,
+ 0xb9, 0x73, 0x87, 0x8a, 0x7d, 0xee, 0x2c, 0xad, 0xfa, 0xe4,
+ 0xdc, 0xa1, 0x12, 0x9f, 0x9c, 0xa5, 0xa7, 0xf8, 0x14, 0x3,
+ 0x97, 0xfa, 0x8a, 0xc, 0xac, 0xf9, 0x3c, 0x56, 0x18, 0x8a,
+ 0xf3, 0xc2, 0xd0, 0x44, 0x65, 0x20, 0xaf, 0x42, 0x18, 0xea,
+ 0x11, 0x86, 0xc5, 0xb8, 0xcd, 0xaf, 0xa1, 0xa, 0xb1, 0x84,
+ 0xe6, 0x8a, 0xa5, 0xb4, 0x58, 0x2c, 0xa3, 0x46, 0x7c, 0x69,
+ 0xb6, 0xe3, 0xdb, 0xf5, 0x66, 0xb1, 0x92, 0xf6, 0xe0, 0x83,
+ 0x73, 0x3f, 0xbe, 0x32, 0xf, 0xe1, 0x2b, 0xf1, 0x4e, 0xb1,
+ 0x96, 0x8e, 0x88, 0x75, 0x74, 0x4c, 0x34, 0xd0, 0x83, 0xa2,
+ 0x31, 0x2f, 0x2c, 0xcf, 0xe0, 0x94, 0x9b, 0x61, 0x79, 0x11,
+ 0x32, 0x17, 0xf0, 0xe7, 0x64, 0x39, 0xd0, 0xbf, 0x1b, 0x8d,
+ 0xa5, 0xd6, 0xe1, 0xea, 0xaa, 0x75, 0xd9, 0x69, 0xad, 0x75,
+ 0x5b, 0x59, 0x75, 0x2c, 0x41, 0x2c, 0xb6, 0xd6, 0xca, 0x88,
+ 0xb, 0xae, 0x30, 0x9f, 0x73, 0xa1, 0x36, 0x3d, 0xa3, 0xa2,
+ 0xd8, 0x32, 0x2d, 0x23, 0xd3, 0xdc, 0xb6, 0x30, 0x6b, 0x4b,
+ 0xb3, 0x67, 0x9b, 0x92, 0xdb, 0x9d, 0xc2, 0xe7, 0xc, 0x9c,
+ 0xb8, 0xf8, 0x30, 0x3b, 0x5e, 0x9b, 0xe7, 0xf7, 0xd5, 0x9c,
+ 0x2e, 0x11, 0x23, 0x45, 0xec, 0x25, 0x55, 0xe0, 0x55, 0x2a,
+ 0x6, 0x69, 0xb6, 0x48, 0xd0, 0x7c, 0x31, 0x44, 0x2b, 0xc5,
+ 0xad, 0xf0, 0x39, 0x49, 0x51, 0x91, 0xa2, 0x11, 0xc8, 0xe,
+ 0x8a, 0x11, 0xfa, 0xac, 0x18, 0xcd, 0xf3, 0xf1, 0x59, 0x74,
+ 0x30, 0xb3, 0xc3, 0xdf, 0xd, 0xf, 0x71, 0xe, 0x44, 0x50,
+ 0x43, 0x3b, 0x6d, 0xd, 0x9f, 0xa1, 0xeb, 0xca, 0xc4, 0x47,
+ 0x63, 0x54, 0xcd, 0xed, 0xd2, 0x9, 0x76, 0xb3, 0xa6, 0x1c,
+ 0x38, 0x8a, 0xde, 0xe5, 0xb2, 0x58, 0x19, 0xdc, 0x8c, 0x90,
+ 0xc, 0xee, 0x14, 0x6e, 0x51, 0x43, 0xfd, 0xd7, 0x63, 0x18,
+ 0xe7, 0xe7, 0x5a, 0x78, 0x7, 0xeb, 0x7f, 0x78, 0x60, 0x9c,
+ 0x36, 0x33, 0xdf, 0x12, 0xe2, 0x9, 0x13, 0xc4, 0x56, 0xdb,
+ 0xee, 0x23, 0x25, 0xc, 0x59, 0x1b, 0xe8, 0x76, 0x8b, 0x6e,
+ 0x87, 0x5f, 0x8e, 0x10, 0xe6, 0xb4, 0xec, 0x74, 0xe2, 0xbe,
+ 0x6f, 0x51, 0xba, 0xa, 0x4, 0x60, 0x9d, 0x87, 0xb, 0x85,
+ 0x6c, 0x2c, 0x1b, 0xb4, 0x49, 0xc6, 0x2e, 0x37, 0xd0, 0xfe,
+ 0x47, 0x26, 0xb5, 0x67, 0x7, 0x9c, 0xf7, 0xb2, 0x2f, 0xd8,
+ 0x33, 0xc7, 0x9c, 0x15, 0x1d, 00, 0x2d, 0x13, 0xb4, 0xc5,
+ 0x8e, 0x7d, 0x37, 0xde, 0xf8, 0x24, 0x4e, 0x92, 0x4b, 0x3c,
+ 0x48, 0xa5, 0xe2, 0x14, 0x4d, 0x13, 0xf, 0xd1, 0x4c, 0x71,
+ 0x9a, 0xe6, 0x88, 0x47, 0xa9, 0x46, 0x7c, 0xb, 0x75, 0x87,
+ 0x26, 0x27, 0xc6, 0x51, 0x7b, 0x8f, 0x53, 0x9b, 0x78, 0x82,
+ 0x3a, 0xc5, 0x79, 0xda, 0x25, 0x9e, 0xa4, 0x3e, 0xf1, 0x14,
+ 0xa5, 0xc4, 0xd3, 0x38, 0x86, 0xdf, 0xa5, 0xa3, 0xe2, 0x19,
+ 0x1a, 0x17, 0xdf, 0xa3, 0x97, 0xc5, 0xb3, 0xf4, 0xb6, 0xf8,
+ 0xbe, 0x70, 0x88, 0x17, 0x85, 0x47, 0xbc, 0x24, 0x4a, 0xc5,
+ 0xf, 0xc4, 0x2c, 0xf1, 0xc3, 0xbc, 0x5c, 0x3d, 0x97, 0xcd,
+ 0xd5, 0xf3, 0x90, 0xe1, 0x36, 0x16, 0xb5, 0xd8, 0xf2, 0xf5,
+ 0xab, 0x1d, 0x6b, 0xcc, 0xf0, 0x1f, 0x3e, 0x4e, 0x25, 0x26,
+ 0x75, 0xd7, 0x18, 0xb9, 0x9c, 0x96, 0xf4, 0xae, 0xac, 0xf4,
+ 0xee, 0x31, 0xba, 0x3e, 0x60, 0xbc, 0x52, 0x5a, 0x88, 0x1c,
+ 0x6f, 0xe2, 0xff, 0x81, 0xf1, 0xe, 0x36, 0xf8, 0xec, 0x7f,
+ 0x85, 0x71, 0x9a, 0xf8, 0xd6, 0xc1, 0xc3, 0xc5, 0xdb, 0xb1,
+ 0xfa, 0x14, 0x1d, 0xf3, 0x76, 0x2, 0xde, 0xe3, 0xed, 0x2,
+ 0x3c, 0xec, 0xdd, 0xa, 0x78, 0x87, 0x77, 0x1b, 0xe0, 0xa1,
+ 0xc7, 0x2, 0x5a, 0xf0, 0x7e, 0xba, 0x99, 0x93, 0xeb, 0x42,
+ 0x35, 0x78, 0x6f, 0x97, 0x76, 0x7, 0xb4, 0x83, 0x63, 0x34,
+ 0xa0, 0xdd, 0x82, 0xe1, 0xde, 0xc0, 0xc3, 0xbc, 0xd6, 0x5a,
+ 0xc3, 0x3, 0x32, 0xda, 0x78, 0x88, 0x9f, 0x1f, 0xf8, 0xd7,
+ 0x19, 0x6f, 0xe, 0x6e, 0x5e, 0xe6, 0x23, 0x69, 0x95, 0x77,
+ 0x3b, 0x26, 0x78, 0xbd, 0x37, 00, 0xaa, 0xde, 0x1d, 0x80,
+ 0x6e, 0xef, 0x4e, 0xc0, 0x39, 0x81, 0x32, 0x81, 0xcf, 0x8f,
+ 0x52, 0xc3, 0x6a, 0xb9, 0x77, 0x17, 0x44, 0x5a, 0xc0, 0x7b,
+ 0xe3, 0x9, 0x2a, 0xa, 0x78, 0x77, 0x9d, 0x24, 0xe7, 0x63,
+ 0x79, 0xd5, 0x15, 0xa, 0xe0, 0xb5, 0x74, 0x53, 0xd5, 0x9f,
+ 0x4e, 0xdc, 0x17, 0x70, 0xab, 0x90, 0xf8, 0x29, 0x12, 0xf7,
+ 0x33, 0x92, 0xc5, 0xab, 0xe4, 0x17, 0xaf, 0x51, 0x95, 0x78,
+ 0x9d, 0xae, 0x12, 0x6f, 0xa3, 0x4f, 0xbe, 0x43, 0xbd, 0xe2,
+ 0x5d, 0x1a, 0x10, 0xef, 0x51, 0x52, 0xbc, 0x4f, 0xfb, 0xc4,
+ 0x7, 0x74, 00, 0xaf, 0xa3, 0x83, 0x92, 0x4a, 0x87, 0xa4,
+ 0x12, 0xfa, 0xa2, 0x34, 0x85, 0xe, 0x4b, 0xa5, 0x74, 0x8f,
+ 0xa4, 0xd1, 0x31, 0xc9, 0x4b, 0x17, 0xa4, 0xa9, 0xf4, 0xb2,
+ 0x34, 0x8d, 0x5e, 0x91, 0x7c, 0xf4, 0x13, 0xa9, 0x9c, 0x5e,
+ 0x95, 0x66, 0xd0, 0x1b, 0xd2, 0x4c, 0x7a, 0x4f, 0x9a, 0x45,
+ 0x1f, 0x4a, 0xf3, 0xe9, 0xa2, 0x54, 0x8d, 0x2f, 0x84, 0x1a,
+ 0xe1, 0x92, 0x16, 0x8a, 0x12, 0xa9, 0x4e, 0x4c, 0x95, 0x96,
+ 0x88, 0xa, 0x69, 0xa9, 0x8, 0x48, 0x2b, 0x44, 0x8d, 0xb4,
+ 0xb2, 0x20, 0xc1, 0x17, 0xac, 0x86, 0xf3, 0xb, 0xf3, 0x30,
+ 0xd2, 0xa3, 0x5, 0x25, 0x2a, 0x17, 0xd6, 0x6c, 0x20, 0xdb,
+ 0x7d, 0xb, 0x6, 0xfe, 0xb4, 0xc0, 0x9f, 0x6d, 0x4d, 0x97,
+ 0xc, 0x68, 0x97, 0x1b, 0xb8, 0xcc, 0xc9, 0xb1, 0x6e, 0x3a,
+ 0x3b, 0xc2, 0xf3, 0x38, 0xcd, 0xd2, 0x6, 0x2a, 0x93, 0x9a,
+ 0x28, 0x24, 0x6d, 0xa4, 0x95, 0xd2, 0x26, 0x6a, 0x91, 0x9a,
+ 0x49, 0x97, 0xae, 0x43, 0x34, 0x37, 0x23, 0x7a, 0x2d, 0xf4,
+ 0x88, 0xd4, 0x9a, 0xe7, 0xfd, 0xf3, 0xf4, 0x82, 0xe5, 0xfd,
+ 0xb7, 0xcd, 0xcf, 0x21, 0xba, 0xcd, 0xef, 0x3a, 0x80, 0x95,
+ 0x6e, 0x76, 0x1d, 0x38, 0x8e, 0xc7, 0x8f, 0xf7, 0x16, 0x3f,
+ 0x57, 0x99, 0xe9, 0x2e, 0x12, 0xed, 0x77, 0x1a, 0x83, 0x4e,
+ 0x73, 0x70, 0x37, 0xd8, 0xdc, 0x41, 0xd9, 0x18, 0x94, 0xcd,
+ 0xc1, 0x88, 0x5f, 0xce, 0x1b, 0x44, 0x2b, 0xe3, 0x51, 0xa0,
+ 0xe3, 0xe4, 0xb, 0x79, 0xbb, 0xfd, 0x46, 0x6f, 0xcb, 0x8e,
+ 0x87, 0xfc, 0xe3, 0x74, 0xb3, 0xed, 0x4c, 0x88, 0x6b, 0x55,
+ 0xda, 0x41, 0xaa, 0xb4, 0x93, 0xaa, 0xa4, 0x1b, 0x69, 0x81,
+ 0x74, 0x13, 0xad, 0x90, 0x6e, 0xa1, 0x26, 0x69, 0x37, 0x6d,
+ 0x97, 0xba, 0xe1, 0x54, 0xf, 0x8d, 0x4a, 0x3a, 0x7d, 0x42,
+ 0xea, 0xcd, 0x71, 0x48, 0xe0, 0x2d, 0xc8, 0x9f, 0x1, 0x2f,
+ 0xfe, 0x1, 0x50, 0x4b, 0x3, 0x4, 0xa, 00, 00, 00,
+ 0x8, 00, 0x55, 0x58, 0xda, 0x2c, 0x7a, 0x44, 0x1b, 0x63,
+ 0x14, 0x5, 00, 00, 0xb8, 0x8, 00, 00, 0x19, 00,
+ 00, 00, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69,
+ 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x6e, 0x65,
+ 0x6c, 0x2e, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x7d, 0x55, 0x4d,
+ 0x74, 0x13, 0x55, 0x14, 0xfe, 0x5e, 0x93, 0x74, 0x92, 0xe9,
+ 0x10, 0x42, 0x28, 0xfd, 0xe1, 0xcf, 0x42, 0x29, 0xa4, 0x69,
+ 0x68, 0x51, 0xea, 0x1f, 0x41, 0xa0, 0xd, 0x2d, 0x94, 0x6,
+ 0x5a, 0x6c, 0x5, 0x83, 0x80, 0x4e, 0x93, 0x69, 0x32, 0x6d,
+ 0x98, 0x29, 0x93, 0x49, 0x4b, 0x15, 0xc5, 0x1f, 0xfc, 0x41,
+ 0x14, 0x7f, 0xf0, 0x9f, 0x8d, 0x1b, 0x5c, 0x71, 0x3c, 0x47,
+ 0xf, 0x49, 0xce, 0xb1, 0x1e, 0x77, 0x6e, 0x5c, 0xb8, 0x71,
+ 0xe3, 0xc2, 0x8d, 0x5b, 0xb7, 0x6e, 0x3d, 0x1e, 0xef, 0x9d,
+ 0x49, 0xdb, 0xb4, 0xf4, 0x98, 0x73, 0xf2, 0xe6, 0xbd, 0x7b,
+ 0xef, 0x77, 0xef, 0x7d, 0xf7, 0xbb, 0xef, 0xbd, 0x5f, 0xfe,
+ 0xfd, 0xe1, 0x27, 0x78, 0xb0, 0x17, 0x77, 0x64, 0xec, 0x43,
+ 0x9f, 0x84, 0x7e, 0x3f, 0x12, 0x32, 0xea, 0x70, 0x34, 0x80,
+ 0x1e, 0xc, 0x48, 0x18, 0xf4, 0xe3, 0x98, 0x8c, 0x7a, 0x1c,
+ 0x97, 0x31, 0x84, 0x13, 0x7e, 0xc, 0xb3, 0x3c, 0x29, 0xe1,
+ 0xa4, 0xc, 0x5, 0xa7, 0x78, 0x31, 0x12, 0xc0, 0x28, 0x4e,
+ 0xb3, 0xfa, 0x69, 0x9e, 0x8d, 0xc9, 0x18, 0xc7, 0x33, 0xac,
+ 0x3d, 0x23, 0xe1, 0xac, 0x1f, 0xcf, 0xca, 0x68, 0x44, 0x8a,
+ 0xd, 0xcf, 0xf9, 0xf1, 0x1c, 0x7f, 0xcf, 0xfb, 0x71, 0x41,
+ 0xc2, 0x45, 0x19, 0x5b, 0x38, 0xe0, 0xf3, 0x32, 0xb6, 0xa1,
+ 0x4f, 0xc6, 0xb, 0x50, 0x3, 0x34, 0x9b, 0x60, 0x71, 0x9a,
+ 0x97, 0x19, 0x5e, 0x6a, 0x3c, 0x4c, 0x4a, 0xc8, 0xca, 0xe8,
+ 0x40, 0x8e, 0x17, 0x3a, 0xf, 0x53, 0x1c, 0x6e, 0x3a, 0x80,
+ 0x3c, 0x2e, 0xc9, 0x30, 0x60, 0xfa, 0x31, 0xc3, 0x49, 0x5f,
+ 0xe6, 0xb0, 0x97, 0x25, 0x58, 0x12, 0xa, 0x2, 0x3e, 0x5b,
+ 0xb7, 0xf3, 0x9a, 0x40, 0x28, 0x39, 0xa5, 0xce, 0xaa, 0x3d,
+ 0xea, 0x9c, 0xdd, 0x93, 0x54, 0x27, 0xb4, 0x7c, 0x9c, 0x54,
+ 0x96, 0x66, 0x5b, 0xf3, 0x2, 0xf5, 0x33, 0x96, 0x79, 0x69,
+ 0xc6, 0x16, 0xf0, 0xcf, 0xa8, 0x85, 0xc2, 0x9c, 0x69, 0x65,
+ 0x4, 0x1a, 0x97, 0xcd, 0xc7, 0xb5, 0x2b, 0xf6, 0xa0, 0xae,
+ 0xe5, 0x33, 0x4, 0xa9, 0x33, 0xa7, 0x5, 0x36, 0x2c, 0xeb,
+ 0xfa, 0x8b, 0xb6, 0x6d, 0x1a, 0xa4, 0xa8, 0x3f, 0xa8, 0x1b,
+ 0xba, 0x7d, 0x48, 0xc0, 0x13, 0xe9, 0x3c, 0x23, 0xe0, 0x4d,
+ 0x98, 0x19, 0xa, 0xba, 0x3e, 0xa9, 0x1b, 0xda, 0xa9, 0xe2,
+ 0xa5, 0x9, 0xcd, 0x1a, 0x57, 0x27, 0x38, 0x8d, 0x7a, 0x35,
+ 0x6d, 0xeb, 0xa6, 0x21, 0xd0, 0x11, 0x59, 0xf6, 0x32, 0x30,
+ 0xab, 0x19, 0x76, 0xdc, 0x5d, 0xe7, 0x55, 0x23, 0xdb, 0x33,
+ 0x32, 0x31, 0xa5, 0xa5, 0xed, 0x78, 0xe7, 0x39, 0x1, 0x79,
+ 0xcc, 0x2c, 0x5a, 0x69, 0x6d, 0x50, 0x67, 0x74, 0x8b, 0x5a,
+ 0xb4, 0x73, 0x64, 0xab, 0xa7, 0x55, 0xf6, 0x32, 0xaa, 0x1a,
+ 0x5a, 0xbe, 0x9b, 0x61, 0xa, 0x9e, 0xc4, 0x1, 0x81, 0xe0,
+ 0xca, 0x3d, 0xa, 0x84, 0xcf, 0x9c, 0x4a, 0xb4, 0xf5, 0xad,
+ 00, 0xb1, 0xa9, 0xad, 0xe0, 0x61, 0x3c, 0x22, 0xb0, 0x6e,
+ 0xc9, 0x7e, 0xd0, 0x34, 0xa8, 00, 0x81, 0xe3, 0x5a, 0x7e,
+ 0x56, 0x63, 0x4b, 0xb6, 0x2a, 0x4a, 0x98, 0x55, 0x30, 0x87,
+ 0x2b, 0xa4, 0x18, 0xad, 0x56, 0xe6, 0x80, 0x82, 0x5e, 0x46,
+ 0x86, 0x1f, 0x2c, 0xf, 0x43, 0xe6, 0x15, 0x3c, 0x8a, 0xc7,
+ 0x24, 0xbc, 0xa8, 0xe0, 0x25, 0x5c, 0x55, 0xf0, 0x32, 0x5e,
+ 0x51, 0x70, 0xd, 0x57, 0x25, 0xbc, 0xaa, 0xe0, 0x35, 0x5e,
+ 0xbc, 0x8e, 0x37, 0xa8, 0x2e, 0xab, 0xa, 0x48, 0x85, 0x1d,
+ 0x19, 0x66, 0xfc, 0x75, 0x5, 0x8f, 0xe3, 0x9, 0x1, 0x62,
+ 0x70, 0x3f, 0x87, 0x91, 0x12, 0xb4, 0x7b, 0x5d, 0xb3, 0x4,
+ 0x9a, 0x96, 0x20, 0xc7, 0x2c, 0x3d, 0xd3, 0xaf, 0x66, 0x93,
+ 0xea, 0xbc, 0x59, 0xa4, 0x9c, 0xb7, 0xac, 0x56, 0x24, 0x4c,
+ 0xa3, 0x60, 0x5b, 0xaa, 0x6e, 0xd8, 0x5, 0x9, 0x6f, 0x2a,
+ 0x78, 0xb, 0x6f, 0x2b, 0x78, 0x7, 0x37, 0x14, 0xbc, 0x8b,
+ 0x9b, 0xa, 0xde, 0xc3, 0xfb, 0xa, 0x6e, 0xf1, 0xf2, 0x3,
+ 0xdc, 0xa8, 0x4d, 0x65, 0xc8, 0x28, 0x68, 0x76, 0x81, 0xb3,
+ 0xf8, 0x50, 0xc1, 0x47, 0xf8, 0x58, 0xc1, 0x6d, 0xb6, 0xfa,
+ 0x4, 0x7, 0x24, 0x7c, 0xaa, 0xe0, 0x33, 0x7c, 0x2e, 0xe1,
+ 0xb, 0x5, 0x5f, 0x72, 0xa1, 0x37, 0x8c, 0x99, 0x96, 0x35,
+ 0xdf, 0xdd, 0x36, 0x6e, 0xcd, 0xb7, 0xa9, 0x59, 0x8a, 0xd5,
+ 0xad, 0xe0, 0x2b, 0x5c, 0x17, 0xd8, 0xb8, 0x6, 0x43, 0xb5,
+ 0xbc, 0x54, 0x5, 0x4d, 0x91, 0x1a, 0xb6, 0xc7, 0x6c, 0x4b,
+ 0x37, 0xb2, 0xf1, 0x21, 0x6e, 0x9c, 0xe6, 0xb5, 0x14, 0x8e,
+ 0x66, 0xb9, 0xe2, 0x9, 0xea, 0x56, 0xd3, 0xd0, 0x98, 0x30,
+ 0x89, 0x52, 0x76, 0xa9, 0xb, 0xd7, 0xf4, 0x13, 0x4b, 0xe2,
+ 0x4e, 0x1b, 0x46, 0x1c, 0x68, 0xb0, 0x6, 0x9a, 0x37, 0xa9,
+ 0x98, 0xbe, 0x89, 0xbc, 0x9a, 0x9e, 0x5e, 0x71, 0x28, 0x1c,
+ 0xd, 0x35, 0xf2, 0x3a, 0xc7, 0xa3, 0xa5, 0x65, 0x2d, 0xb3,
+ 0x68, 0xd0, 0x41, 0xd8, 0x18, 0x59, 0x6d, 0xc3, 0x1e, 0x7d,
+ 0x73, 0x39, 0xdd, 0xd6, 0x6a, 0x59, 0xe1, 0x36, 0xa8, 0x49,
+ 0x8c, 0xdd, 0xf4, 0x53, 0x8c, 0x45, 0x37, 0x21, 0x5a, 0xf,
+ 0xa4, 0x73, 0x66, 0x22, 0xa7, 0x5a, 0x74, 0x4, 0x98, 0x51,
+ 0x6f, 0x24, 0xc1, 0xae, 0x36, 0xad, 0xb1, 0xe3, 0xd5, 0xfb,
+ 0x35, 0x6c, 0x2a, 0x31, 0x63, 0x2, 0xe4, 0x66, 0x89, 0xf8,
+ 0x48, 0xed, 0x91, 0x66, 0xd9, 0x49, 0xd5, 0x50, 0xb3, 0x9a,
+ 0x9b, 0x61, 0x20, 0x4b, 0xdd, 0x30, 0xa7, 0x67, 0xec, 0x9c,
+ 0x80, 0x18, 0xa2, 0x1a, 0x10, 0xb2, 0xa6, 0x33, 0x4, 0x7a,
+ 0x57, 0x6c, 0xac, 0x9a, 0x78, 0x3c, 0xf9, 0x3f, 0xdd, 0xe4,
+ 0xf8, 0xf5, 0xa8, 0x19, 0xda, 0x4e, 0x74, 0x4d, 0x70, 0xe7,
+ 0x5a, 0x42, 0xda, 0xe8, 0xa4, 0x9e, 0x27, 0xce, 0x7d, 0xfa,
+ 0x8c, 0x9a, 0xa1, 0xeb, 0x46, 0x8a, 0xc, 0xd, 0xb9, 0x94,
+ 0xd6, 0xeb, 0x4e, 0xcb, 0xad, 0xb8, 0x51, 0xdc, 0x2e, 0x8c,
+ 0x57, 0xcd, 0xe9, 0xe8, 0x29, 0x96, 0x76, 0xb9, 0xa8, 0x15,
+ 0x88, 0x94, 0x74, 0xb1, 0x50, 0xcb, 0xa5, 0x73, 0x6b, 0x90,
+ 0x13, 0x5b, 0xb5, 0xb2, 0x1a, 0x77, 0xc0, 0x83, 0x17, 0x8,
+ 0xd5, 0x7d, 0xb5, 0x8c, 00, 0x86, 0x69, 0xeb, 0x93, 0xf3,
+ 0x6e, 0xf3, 0x30, 0x6d, 0x68, 0xa3, 0xfb, 0x78, 0x1f, 00,
+ 0x1f, 0xfd, 0xe9, 0x5e, 00, 0xff, 0xf6, 0x57, 0xbf, 0xbd,
+ 0xd5, 0x2f, 0x1d, 0x6b, 0xe7, 0x4b, 0xc7, 0x93, 0x46, 0xf,
+ 0x4, 0xdf, 0x38, 0x34, 0xc6, 0x1, 0xf1, 0x7, 0x24, 0x92,
+ 0x40, 0x1c, 0x8c, 0x56, 0x20, 0xa2, 0xb, 0xa8, 0x4b, 0x85,
+ 0x3d, 0xde, 0xa, 0xbc, 0x25, 0xf8, 0xa2, 0xf7, 0xe1, 0x5b,
+ 0x40, 0x7d, 0x2a, 0x2c, 0x79, 0x43, 0xe1, 0xa, 0xfc, 0x65,
+ 0x4, 0x5c, 0x3, 0xd9, 0x35, 0x68, 0xa0, 0x95, 0x92, 0xa,
+ 0xc9, 0x15, 0xac, 0x2b, 0x21, 0x48, 0xd6, 0xc1, 0xef, 0xb1,
+ 0xbe, 0x8c, 0x90, 0x3b, 0xdb, 0x50, 0x46, 0x98, 0x67, 0xa1,
+ 0x68, 0x19, 0x1b, 0xc9, 0xb2, 0x31, 0x15, 0xde, 0x54, 0x41,
+ 0x53, 0x9, 0xcd, 0xae, 0x93, 0x16, 0xd7, 0x49, 0x2b, 0xd9,
+ 0xb4, 0x3a, 0x51, 0x36, 0x7b, 0x43, 0x21, 0x37, 0xca, 0x2,
+ 0xb6, 0xa4, 0x2a, 0xd8, 0x9a, 0x5c, 0xc0, 0x36, 0xfa, 0x6e,
+ 0x3f, 0x19, 0xed, 0x2a, 0xe3, 0xa1, 0x98, 0xa7, 0x84, 0xb6,
+ 0x2e, 0xce, 0x29, 0x56, 0xc6, 0x8e, 0x28, 0x4f, 0xca, 0xd8,
+ 0x79, 0x36, 0xe6, 0x2b, 0xa1, 0x9d, 0xc5, 0xad, 0x8b, 0xe2,
+ 0x56, 0x47, 0x4c, 0xd6, 0xed, 0x31, 0x6f, 0x15, 0xd2, 0xb0,
+ 0xa8, 0x6b, 0x60, 0x1d, 0x4b, 0x82, 0x8b, 0x92, 0xa0, 0x63,
+ 0x1d, 0x92, 0x4b, 0xd8, 0xe5, 0x44, 0x60, 0x4c, 0x7b, 0x6c,
+ 0x1, 0x1d, 0x29, 0x4f, 0xa8, 0xd1, 0xe3, 0xa9, 0x60, 0x77,
+ 0x9, 0x7b, 0x62, 0xa1, 0x48, 0x9, 0x11, 0xc6, 0x35, 0x2f,
+ 0xe2, 0x9a, 0x19, 0xe7, 0xe2, 0x3b, 0xbf, 0xa3, 0xaa, 0xa,
+ 0x1c, 0xa4, 0xf1, 0x16, 0xda, 0x69, 0xdc, 0x5, 0x2f, 0x76,
+ 0x23, 0x8c, 0x3d, 0xf4, 0xe4, 0x75, 0x12, 0x1b, 0x5d, 0x38,
+ 0x82, 0x18, 0x4e, 0xd0, 0x23, 0x3d, 0x8e, 0x6e, 0x5c, 0x20,
+ 0xbe, 0xa6, 0x88, 0x99, 0x2b, 0xa4, 0xb9, 0x49, 0xcc, 0xdc,
+ 0x26, 0x5e, 0xee, 0x10, 0x23, 0x5f, 0x13, 0x1f, 0x77, 0xc9,
+ 0xcb, 0xb7, 0x78, 0xa, 0x15, 0x1c, 0xc6, 0x8f, 0x84, 0xfa,
+ 0x19, 0x7d, 0xf8, 0x15, 0x9, 0xfc, 0x86, 0xa3, 0xf8, 0x1d,
+ 0x3, 0xf8, 0x13, 0x83, 0xf8, 0xb, 0xc7, 0xf1, 0x37, 0xbd,
+ 0x9e, 0xff, 0x60, 0x58, 0xd4, 0x21, 0x29, 0xe8, 0x29, 0x17,
+ 0xf4, 0x92, 0x8b, 0xad, 0x18, 0x11, 0x3b, 0x31, 0x2a, 0xba,
+ 0x70, 0x5a, 0xf4, 0x62, 0x4c, 0xc4, 0x29, 0xda, 0xe, 0xf2,
+ 0x75, 0xc8, 0x65, 0x1a, 0xfd, 0xf4, 0xbe, 0x12, 0xd3, 0xd8,
+ 0xde, 0x75, 0x1f, 0xce, 0xce, 0xef, 0x22, 0x58, 0x9d, 0x36,
+ 0x7f, 0x43, 0xd4, 0x96, 0xd1, 0xe5, 0xbd, 0xe7, 0xb9, 0xb7,
+ 0xb4, 0x97, 0x30, 0xed, 0x2, 0x38, 0x8f, 0x26, 0xca, 0x78,
+ 0x33, 0x2e, 0x62, 0x2b, 0x3d, 0xe9, 0x82, 0x72, 0xae, 0x76,
+ 0xe, 0xcd, 0xea, 0x68, 0x6, 0x22, 0x97, 0x6a, 0x1e, 0xa6,
+ 0xba, 0xec, 0x65, 0xa7, 0xe1, 0x96, 0x32, 0xba, 0x97, 0xb,
+ 0x12, 0x74, 0x42, 0xe6, 0x10, 0x80, 0x4e, 0xe, 0xa7, 0x48,
+ 0x7a, 0x98, 0xd6, 0x75, 0x38, 0xf2, 0x1f, 0x50, 0x4b, 0x3,
+ 0x4, 0xa, 00, 00, 00, 0x8, 00, 0x55, 0x58, 0xda,
+ 0x2c, 0xe7, 0x52, 0x7f, 0x83, 0x46, 0xb, 00, 00, 0xe7,
+ 0x14, 00, 00, 0xf, 00, 00, 00, 0x76, 0x6e, 0x63,
+ 0x43, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x2e, 0x63, 0x6c, 0x61,
+ 0x73, 0x73, 0x9d, 0x57, 0x79, 0x7c, 0x54, 0xf5, 0x11, 0xff,
+ 0xce, 0xdb, 0x4d, 0xde, 0xee, 0xe6, 0x5, 0x92, 0xc0, 0x62,
+ 0x62, 0x2, 0x4, 0x45, 0x5d, 0x2, 0x8, 0x42, 0x5, 0x91,
+ 0xc3, 0x92, 0x10, 0x60, 0x2b, 0xc1, 0x48, 0x82, 0x18, 0x50,
+ 0xcb, 0xb2, 0xfb, 0x92, 0x2c, 0xec, 0xe5, 0xdb, 0xdd, 0x84,
+ 0x58, 0xb5, 0x45, 0x53, 0xad, 0xe2, 0x51, 0x6f, 0xc1, 0x13,
+ 0xf, 0xd6, 0x8a, 0x17, 0x96, 0x6c, 0x54, 0x44, 0xad, 0xb6,
+ 0x5a, 0xad, 0x3d, 0xbc, 0xad, 0xb5, 0xf6, 0xb2, 0xb6, 0xf6,
+ 0xd0, 0x6a, 0x45, 0x5b, 0x5b, 0xa4, 0x33, 0xef, 0xbd, 0x64,
+ 0x77, 0x93, 0xe0, 0x1f, 0xcd, 0x27, 0x6f, 0xe6, 0xf7, 0x9b,
+ 0xdf, 0xfc, 0xe6, 0xfa, 0xcd, 0x6f, 0xe6, 0xb7, 0x2f, 0x7c,
+ 0xf1, 0xd8, 0x13, 0x70, 0x60, 0x3a, 0x4d, 0xf3, 0xa0, 0x15,
+ 0xe7, 0xbb, 0xd1, 0x82, 0x6f, 0xba, 0xf1, 0x2d, 0x6c, 0x91,
+ 0xd1, 0x16, 0x15, 0x17, 0x78, 0x50, 0x84, 0xb, 0x65, 0xd2,
+ 0xeb, 0xc1, 0xb7, 0x71, 0x91, 0x8a, 0x8b, 0x65, 0xf2, 0x1d,
+ 0xf, 0x2e, 0xc1, 0xa5, 0x1e, 0xb8, 0xb1, 0xd5, 0xcd, 0xe4,
+ 0xcb, 0x4, 0x5c, 0x2e, 0xb, 0x57, 0xa8, 0xb8, 0xd2, 0x83,
+ 0x32, 0x7c, 0x57, 0x26, 0x57, 0x79, 0x70, 0x35, 0xae, 0x91,
+ 0xd1, 0xb5, 0x32, 0xba, 0x4e, 0x46, 0xd7, 0x7b, 0x70, 0x3,
+ 0x6e, 0x94, 0xd1, 0x36, 0x15, 0xdb, 0x3d, 0xa8, 0xc2, 0x4d,
+ 0x1e, 0xdc, 0x8c, 0x5b, 0x44, 0xfa, 0xad, 0xc2, 0x65, 0xae,
+ 0xdd, 0x26, 0xe0, 0x76, 0xa1, 0xed, 0x10, 0x70, 0x87, 0x80,
+ 0x3b, 0x45, 0xc9, 0x5d, 0xc2, 0x7c, 0xb7, 0x8a, 0x9d, 0x32,
+ 0xc9, 0x8, 0xb8, 0x47, 0xc0, 0xf7, 0x4, 0xdc, 0xeb, 0xe1,
+ 0x4d, 0xbb, 0x84, 0xf5, 0x3e, 0x99, 0xde, 0x2f, 0xe0, 0x1,
+ 0xe1, 0x7f, 0x50, 0x46, 0xf, 0x79, 0xb0, 0x1b, 0xf, 0x7b,
+ 0xf0, 0x7d, 0xec, 0x11, 0x5a, 0x9f, 0x80, 0xac, 0x80, 0x7e,
+ 0x59, 0x78, 0x44, 0xc5, 0xa3, 0x2a, 0x1e, 0xf3, 0x60, 0x2e,
+ 0xce, 0x77, 0x61, 0xaf, 0xe0, 0xc7, 0x5, 0xec, 0x13, 0xf0,
+ 0x84, 0x7, 0x73, 0xf0, 0xa4, 0x8, 0x79, 0xca, 0x85, 0x1f,
+ 0xb8, 0xf1, 0x34, 0x9e, 0xf1, 0xe0, 0x87, 0xf8, 0x91, 0xa8,
+ 0x7a, 0xd6, 0x85, 0xe7, 0x44, 0xc0, 0x8f, 0xc5, 0xeb, 0xe7,
+ 0x45, 0xde, 0xb, 0x62, 0xfb, 0x4f, 0x64, 0xf4, 0xa2, 0x8c,
+ 0x7e, 0x2a, 0xa3, 0x9f, 0xc9, 0xe6, 0x9f, 0xbb, 0xf1, 0xb,
+ 0xbc, 0x24, 0xd1, 0x7d, 0x59, 0x1c, 0x7d, 0x45, 0xb6, 0xbf,
+ 0x2a, 0xe0, 0x35, 0x15, 0xaf, 0x7b, 0xf0, 0x6, 0xde, 0x54,
+ 0xf1, 0x4b, 0x15, 0x6f, 0x11, 0xa8, 0x8b, 0x50, 0xb2, 0xa2,
+ 0x2b, 0x16, 0xec, 0xa, 0xeb, 0xdd, 0xba, 0x31, 0x9f, 0xe0,
+ 0x30, 0xda, 0x37, 0x10, 0x3c, 0x2b, 0x18, 0x35, 0x1b, 0xf1,
+ 0x54, 0x9c, 0x49, 0x4a, 0x30, 0x4a, 0xa8, 0x5e, 0xb1, 0x31,
+ 0xd0, 0x15, 0x98, 0x11, 0xe8, 0x4e, 0xcd, 0x8, 0x47, 0x3,
+ 0x1d, 0xfa, 0x8c, 0x86, 0x78, 0x24, 0x6e, 0x34, 0xc5, 0x43,
+ 0x7a, 0x84, 0x59, 0x8a, 0x83, 0x32, 0x4b, 0x12, 0xca, 0xd7,
+ 0xe5, 0xf8, 0x4c, 0xe, 0x5e, 0x1c, 0x65, 0x4, 0xba, 0x9b,
+ 0xc3, 0x9b, 0xf5, 0x48, 0xd2, 0x2f, 0x3b, 0x9, 0x65, 0x39,
+ 0x1e, 0x93, 0xc2, 0x3c, 0xce, 0x40, 0x34, 0x9c, 0x14, 0x2d,
+ 0x81, 0x18, 0x8b, 0x4f, 0xe9, 0xa1, 0x26, 0x3d, 0x1a, 0x37,
+ 0x7a, 0xcc, 0xe5, 0x96, 0x78, 0xda, 0x8, 0xa, 0x53, 0x71,
+ 0xc2, 0x94, 0xc2, 0x16, 0xad, 0xab, 0x67, 0x90, 0xec, 0x20,
+ 0x8c, 0xc9, 0x89, 0x5a, 0x66, 0x4, 0x12, 0x9d, 0xe1, 0x60,
+ 0x52, 0x9c, 0x48, 0x76, 0xcc, 0x62, 0x27, 0x12, 0x81, 0x70,
+ 0x2c, 0x65, 0xeb, 0x74, 0x24, 0xc2, 0xcc, 0xee, 0x64, 0xc8,
+ 0x2b, 0xa3, 0x63, 0xba, 0x1e, 0x6a, 0x8d, 0xaf, 0xd2, 0x93,
+ 0x7a, 0xaa, 0x21, 0x12, 0x4e, 0x70, 0x20, 0xd6, 0xb2, 0xf8,
+ 0x5, 0xe1, 0x58, 0x38, 0xb5, 0x88, 0xd, 0xf6, 0xe5, 0x85,
+ 0x64, 0xca, 0x69, 0xbc, 0xad, 0x81, 0xfd, 0xe4, 0x6d, 0x2b,
+ 0xc2, 0x31, 0x7d, 0x65, 0x3a, 0xba, 0x41, 0x37, 0x5a, 0x3,
+ 0x1b, 0x22, 0x4c, 0xf1, 0x34, 0x6e, 0xe, 0xea, 0x89, 0x54,
+ 0x38, 0x1e, 0x63, 0xab, 0x4a, 0x13, 0x86, 0xde, 0xae, 0x1b,
+ 0x86, 0x1e, 0x6a, 0x9, 0x9f, 0xc3, 0x8b, 0xe3, 0x7c, 0x53,
+ 0x72, 0xd6, 0x2d, 0x9, 0x47, 0xf5, 0x58, 0x92, 0x19, 0xd9,
+ 0xbc, 0x92, 0x28, 0x2b, 0x8a, 0xa6, 0xa3, 0x16, 0x5b, 0x71,
+ 0x3a, 0x11, 0x62, 0x8f, 0x85, 0x7f, 0x4, 0x67, 0x44, 0x7d,
+ 0x91, 0xe9, 0x8, 0xc1, 0x9b, 0x30, 0xe2, 0x41, 0x3d, 0x99,
+ 0x5c, 0x19, 0x37, 0xa2, 0x81, 0x88, 0x79, 0x3c, 0x1c, 0x77,
+ 0xf6, 0xcd, 0x27, 0x5c, 0x25, 0x21, 0x8e, 0xf3, 0x2a, 0xfe,
+ 0xd7, 0x83, 0xcc, 0xab, 0xfa, 0xfc, 0xfc, 0x67, 0xd2, 0x3b,
+ 0x3, 0xb1, 0x50, 0x44, 0x6f, 0xec, 0xd2, 0x45, 0xc6, 0x98,
+ 0x3c, 0x25, 0x26, 0x69, 0xfe, 0x14, 0x76, 0xdd, 0x63, 0xc5,
+ 0x78, 0x69, 0x58, 0x9c, 0x1a, 0xc5, 0xce, 0x37, 0x4, 0x62,
+ 0x5d, 0x81, 0xe4, 0xb1, 0xc2, 0xaa, 0x61, 0x13, 0xba, 0x35,
+ 0xac, 0xc6, 0x69, 0x2a, 0x7e, 0xa5, 0x61, 0xd, 0x4e, 0x27,
+ 0x4c, 0x1c, 0x92, 0xc, 0x4b, 0xc2, 0x6, 0x6b, 0xcd, 0xa5,
+ 0x84, 0xec, 0xe9, 0xd1, 0xd0, 0x86, 0xb5, 0x2a, 0xde, 0xd6,
+ 0xf0, 0x6b, 0xbc, 0xc3, 0x62, 0xb, 0x13, 0x43, 0xc3, 0x3a,
+ 0x9c, 0xa1, 0xe2, 0x37, 0x1a, 0x7e, 0x8b, 0xdf, 0x9, 0xff,
+ 0xef, 0x35, 0xfc, 0x1, 0xef, 0x6a, 0xf8, 0xa3, 0x80, 00,
+ 0x38, 0xb, 0xab, 0xe, 0x99, 0xc, 0xc2, 0xff, 0x9e, 0x86,
+ 0xaf, 0x63, 0xbd, 0x8a, 0x3f, 0x69, 0xf8, 0x33, 0xde, 0xd7,
+ 0x70, 0x26, 0xce, 0x92, 0xd1, 0x5f, 0x34, 0xb4, 0xe3, 0x2c,
+ 0x15, 0x7f, 0xd5, 0xf0, 0x37, 0xfc, 0x5d, 0x43, 0x7, 0x42,
+ 0x84, 0x8a, 0xe1, 0xe7, 0x20, 0x22, 0x3e, 0x50, 0xf1, 0xa1,
+ 0x86, 0x7f, 0xe0, 0x23, 0xd, 0x1f, 0xe3, 0x9f, 0x1a, 0x82,
+ 0x8, 0x69, 0x8, 0x63, 0xa3, 0x86, 0x4f, 0xb0, 0x5f, 0xc3,
+ 0xa7, 0xe2, 0xf7, 0x67, 0x2, 0xfe, 0x25, 0x36, 0xfd, 0x1b,
+ 0x3d, 0x9c, 0xa1, 0xa6, 0xa4, 0x48, 0x20, 0xd6, 0x31, 0x63,
+ 0x65, 0xbc, 0x25, 0x1d, 0xec, 0x6c, 0xd2, 0x53, 0x9d, 0xf1,
+ 0x50, 0xa3, 0x61, 0x88, 0x4b, 0x9f, 0xb, 0xdf, 0x7f, 0x4,
+ 0xfc, 0x57, 0xc0, 0x1, 0x1, 0x9b, 0x25, 0x12, 0x5f, 0x88,
+ 0x94, 0x83, 0x3c, 0x25, 0x8, 0x20, 0x52, 0x34, 0x72, 0x90,
+ 0x53, 0xa5, 0x22, 0x8d, 0x8a, 0xb1, 0x5f, 0x25, 0x55, 0x23,
+ 0x17, 0xeb, 0x24, 0x37, 0x3e, 0xd0, 0xc8, 0x43, 0x25, 0x1a,
+ 0x69, 0xbc, 0x8f, 0x4a, 0xb1, 0x9f, 0xcf, 0xcc, 0xd4, 0x19,
+ 0x8e, 0xcf, 0xf0, 0x9f, 0x32, 0x98, 0x6f, 0x9c, 0x2e, 0x39,
+ 0x4b, 0x5a, 0x52, 0x46, 0x38, 0xd6, 0x51, 0x9f, 0x6e, 0xe7,
+ 0xf4, 0xe3, 0xc3, 0x59, 0x1d, 0xdb, 0x14, 0x8b, 0x77, 0xc7,
+ 0x6a, 0x57, 0x2d, 0xad, 0xaf, 0x95, 0x73, 0x61, 0x96, 0x88,
+ 0x5e, 0xab, 0xc7, 0x82, 0xf1, 0x10, 0xb3, 0xd5, 0x6a, 0x34,
+ 0x8a, 0x46, 0xb, 0x28, 0xd3, 0xa8, 0x9c, 0x2a, 0x38, 0x10,
+ 0x34, 0x46, 0xa3, 0xb1, 0x78, 0x97, 0xe0, 0xe3, 0x73, 0x3f,
+ 0x26, 0x55, 0x6b, 0x65, 0x4c, 0x6d, 0x8b, 0x6e, 0x1e, 0x69,
+ 0xda, 0x68, 0xa, 0x24, 0x1a, 0x63, 0xac, 0x43, 0x4f, 0xd6,
+ 0x46, 0x39, 0xff, 0xf8, 0x18, 0x54, 0xf2, 0x6a, 0x34, 0x8e,
+ 0xe, 0x53, 0xa9, 0x52, 0xa3, 0x2a, 0x3a, 0x5c, 0xa3, 0x6a,
+ 0xaa, 0xe0, 0x13, 0xcb, 0x57, 0x6d, 0xb3, 0xd6, 0xa6, 0x7a,
+ 0x12, 0x3a, 0x2b, 0xad, 0xa1, 0xf1, 0x1a, 0x4d, 0x10, 0xa7,
+ 0x26, 0xca, 0xb9, 0xe8, 0x1c, 0x6b, 0xaa, 0x95, 0xd8, 0x74,
+ 0xca, 0x68, 0x12, 0x7, 0x88, 0x8e, 0xc0, 0x46, 0x95, 0x8e,
+ 0xd4, 0x68, 0xb2, 0xc4, 0xe8, 0x28, 0x3e, 0x7, 0x3a, 0x5a,
+ 0xc8, 0xc7, 0x90, 0x4f, 0xa3, 0x29, 0xe4, 0x1b, 0x88, 0x84,
+ 0xe9, 0xf3, 0x60, 0x24, 0x54, 0xaa, 0xd3, 0x68, 0x2a, 0xba,
+ 0x9, 0xee, 0xc1, 0xc4, 0xe5, 0xbb, 0x9a, 0xcb, 0x36, 0x9b,
+ 0xe2, 0x1e, 0xbc, 0xd3, 0x4, 0xd7, 0x40, 0x79, 0x63, 0x91,
+ 0xdd, 0x46, 0x38, 0xa5, 0xb3, 0xab, 0x66, 0x89, 0x5a, 0x2a,
+ 0x57, 0x8b, 0xaf, 0x49, 0x29, 0x5f, 0x9f, 0xb5, 0x6b, 0xfd,
+ 0xfe, 0x81, 0x4b, 0x54, 0x75, 0xc8, 0xea, 0xc7, 0x17, 0xb8,
+ 0x43, 0x4f, 0xad, 0x5a, 0xc6, 0x15, 0xc9, 0xe9, 0xf3, 0x4f,
+ 0xf1, 0x5b, 0x88, 0xb7, 0x94, 0xb5, 0x1b, 0x81, 0xa8, 0xbe,
+ 0xc1, 0x3c, 0x94, 0x35, 0xe1, 0x50, 0xaa, 0x93, 0xab, 0xc,
+ 0xaf, 0x96, 0xe7, 0x91, 0x97, 0xeb, 0xe1, 0x8e, 0x4e, 0xd6,
+ 0x76, 0x4, 0x6b, 0xfb, 0x92, 0xfa, 0xba, 0xae, 0x5e, 0xe4,
+ 0x55, 0xe4, 0xdd, 0x9f, 0x68, 0x22, 0x1e, 0x33, 0xaf, 0x73,
+ 0x49, 0xd0, 0xd0, 0xf9, 0x86, 0xd8, 0x45, 0x6e, 0xa6, 0x6f,
+ 0xa8, 0x14, 0x73, 0x81, 0x3d, 0xd, 0xa5, 0x83, 0x52, 0xcb,
+ 0x86, 0x17, 0xde, 0xb1, 0xac, 0x7a, 0x4, 0xf2, 0xa8, 0x42,
+ 0xa, 0x2b, 0x62, 0x27, 0x7, 0x8a, 0x12, 0x57, 0xa2, 0xfc,
+ 0xd2, 0x96, 0x57, 0x78, 0x8b, 0x7c, 0x56, 0xb8, 0xca, 0x87,
+ 0x2d, 0x72, 0xfc, 0xa5, 0x3e, 0xd9, 0xd2, 0x66, 0xfb, 0x86,
+ 0xaa, 0x1c, 0x1e, 00, 0x93, 0x7e, 0xca, 0x86, 0xa4, 0x6e,
+ 0x74, 0x89, 0xe9, 0x5c, 0xa5, 0xc6, 0x9b, 0x47, 0xb5, 0x34,
+ 0x17, 0xbf, 0xd5, 0x66, 0xe5, 0x5c, 0xa5, 0x9f, 0x9d, 0xd6,
+ 0x93, 0x1c, 0xc, 0x97, 0x59, 0xf3, 0xd6, 0x8a, 0x1, 0x5e,
+ 0xe, 0x4b, 0xa8, 0xc5, 0xdc, 0xda, 0x64, 0xa5, 0x61, 0x2b,
+ 0x67, 0xa1, 0x59, 0x2a, 0xfd, 0xf6, 0xea, 0x30, 0x39, 0x84,
+ 0x9a, 0x11, 0xe9, 0x52, 0x50, 0x97, 0x87, 0x38, 0x6b, 0x2a,
+ 0xd2, 0x83, 0xf3, 0x46, 0xfb, 0x32, 0x71, 0xa1, 0x1d, 0xec,
+ 0x21, 0x25, 0xb9, 0xe5, 0xd3, 0xb, 0x66, 0x6d, 0x5, 0xb3,
+ 0x35, 0x5, 0xb3, 0xe5, 0x4, 0x4d, 0xb4, 0x36, 0xc4, 0x13,
+ 0x3d, 0x56, 0xe5, 0xd6, 0x82, 0xf6, 0xb0, 0xc5, 0x8, 0x9e,
+ 0x5e, 0x38, 0x65, 0x41, 0x2e, 0x99, 0x2e, 0xe6, 0x1d, 0x1c,
+ 0x50, 0x5f, 0x2e, 0x3f, 0x15, 0xe9, 0x9e, 0x55, 0x2b, 0x6,
+ 0xa, 0xc5, 0x92, 0x40, 0x2a, 0xe0, 0x8f, 0x25, 0xd2, 0x29,
+ 0xae, 0xc, 0x7a, 0x20, 0xca, 0x27, 0x73, 0xd8, 0x21, 0x96,
+ 0xd8, 0x1, 0x51, 0xef, 0x97, 0x64, 0xaa, 0x1a, 0xe0, 0xe1,
+ 0x3e, 0x90, 0xd2, 0x8d, 0x2, 0x2e, 0xa7, 0x70, 0xb1, 0xce,
+ 0x94, 0x11, 0x88, 0x25, 0x23, 0x66, 0xb4, 0x5c, 0x49, 0xab,
+ 0x3e, 0x18, 0x85, 0x5d, 0xc5, 0x6a, 0xfb, 0x62, 0x94, 0xab,
+ 0x3d, 0x1c, 0x89, 0x58, 0x4e, 0x95, 0xcb, 0xf6, 0xd5, 0x5c,
+ 0x78, 0x3b, 0x62, 0xdc, 0x1e, 0x3b, 0xe3, 0x6, 0xd3, 0x8a,
+ 0x3, 0x89, 0x84, 0x1e, 0x63, 0xa1, 0xd3, 0xec, 0xdd, 0x79,
+ 0xb5, 0x6c, 0x20, 0x55, 0x87, 0x95, 0x37, 0x76, 0xa5, 0xda,
+ 0xe7, 0xff, 0x92, 0x55, 0x57, 0x2a, 0x6e, 0x51, 0x24, 0xb7,
+ 0x87, 0xf3, 0xcd, 0x97, 0xe4, 0x1d, 0x41, 0x1d, 0x9b, 0xab,
+ 0x59, 0xa7, 0xb2, 0x52, 0x2c, 0xe6, 0x68, 0x96, 0xe5, 0x31,
+ 0xf5, 0x24, 0x53, 0x3a, 0x7, 0xc1, 0x11, 0x4f, 0x4b, 0x1b,
+ 0x1e, 0xc, 0x73, 0x33, 0xef, 0xcd, 0x85, 0x78, 0xcc, 0x8,
+ 0x64, 0x69, 0xde, 0x86, 0xd9, 0xbc, 0x9d, 0xbe, 0x6, 0xf3,
+ 0x66, 0xe4, 0x12, 0xb3, 0x21, 0x9d, 0x6a, 0xd5, 0x37, 0xf3,
+ 0x92, 0xdb, 0x4c, 0xbb, 0x74, 0x24, 0xd2, 0x23, 0x7d, 0x7b,
+ 0x5d, 0xbd, 0x75, 0xa4, 0xee, 0x98, 0x6e, 0x3f, 0x9b, 0xe4,
+ 0x7d, 0x65, 0x5e, 0x73, 0x39, 0x7e, 0x4e, 0x35, 0xbb, 0xc3,
+ 0x87, 0xc2, 0xc9, 0x44, 0x3c, 0x29, 0xef, 0xa9, 0x70, 0x6c,
+ 0xe8, 0x93, 0x20, 0x77, 0x7f, 0xed, 0xbe, 0xaf, 0x84, 0x39,
+ 0xd0, 0xae, 0x8e, 0x78, 0x6a, 0x69, 0x3c, 0x98, 0x4e, 0x9a,
+ 0x49, 0x67, 0xde, 0x1a, 0x7b, 0x5a, 0x6e, 0x5e, 0xad, 0xe6,
+ 0x38, 0x9b, 0xaa, 0x1b, 0x87, 0x7e, 0x2a, 0xb0, 0x59, 0xa5,
+ 0x26, 0xe7, 0xc9, 0x7a, 0xcf, 00, 0x57, 0x2e, 0x4c, 0xad,
+ 0x9d, 0x46, 0xbc, 0xdb, 0x7a, 0x18, 0x8d, 0x4e, 0x58, 0x31,
+ 0x8, 0x4, 0x37, 0xb5, 0x1a, 0x81, 0xa0, 0x8e, 0x5a, 0x7e,
+ 0xa1, 0xb6, 0x2, 0x28, 0xe5, 0x8f, 0x9f, 0x12, 0x90, 0x3f,
+ 0x7e, 0x4a, 0x98, 0x98, 0x9f, 0x9, 0x26, 0xe6, 0x7, 0x81,
+ 0x89, 0xb9, 0x93, 0x9b, 0x98, 0xdb, 0xbb, 0x89, 0xf9, 0x31,
+ 0x60, 0x62, 0x6e, 0xcf, 0x26, 0xd6, 0x6d, 0xdc, 0x6e, 0xf3,
+ 0x75, 0xd8, 0xf3, 0x4e, 0x1b, 0x73, 0x7, 0x67, 0xe8, 0xe2,
+ 0x6f, 0x13, 0x22, 0x50, 0x10, 0x5, 0xe8, 0x48, 0x94, 0xf0,
+ 0xcf, 0xf, 0xe0, 0x95, 0xba, 0x7e, 0x50, 0xdd, 0xd4, 0x3e,
+ 0x28, 0x75, 0x75, 0x7b, 0xa0, 0xec, 0x81, 0xa3, 0xf, 0xce,
+ 0xba, 0xbd, 0x28, 0x6a, 0x2b, 0x73, 0x95, 0xa9, 0x65, 0x27,
+ 0x94, 0xe3, 0xa9, 0x7e, 0x14, 0xf7, 0x41, 0xe5, 0x55, 0x27,
+ 0x93, 0x5c, 0xe, 0x27, 0x93, 0xd5, 0x62, 0x47, 0x71, 0x59,
+ 0x71, 0x16, 0xae, 0xba, 0x72, 0xc2, 0x3e, 0xb8, 0xfb, 0xe0,
+ 0x71, 0x2c, 0xcc, 0xa0, 0x9a, 0x99, 0x3c, 0x35, 0x7b, 0xe1,
+ 0x6e, 0xe3, 0x81, 0x5a, 0x93, 0x45, 0x49, 0x3f, 0xb4, 0x96,
+ 0x5e, 0x85, 0x6a, 0x98, 0x6d, 0xc7, 0xc1, 0x77, 0x45, 0x85,
+ 0x73, 0xf, 0x4a, 0x2d, 0x34, 0xaa, 0xf3, 0x71, 0x57, 0x1f,
+ 0x46, 0xb3, 0xb2, 0xb2, 0xb6, 0xc2, 0x5, 0xd9, 0xcd, 0xdf,
+ 0xe8, 0x7e, 0x94, 0xf7, 0xa1, 0xa2, 0x4e, 0xb6, 0x55, 0x64,
+ 0x31, 0xa6, 0xf, 0x63, 0x4d, 0x23, 0xb, 0x99, 0xb3, 0xf0,
+ 0xf6, 0x61, 0x9c, 0x2c, 0x8c, 0xcb, 0xe2, 0xb0, 0x3e, 0x54,
+ 0xee, 0x66, 0xb7, 0x8, 0x31, 0x86, 0x8b, 0x30, 0x9a, 0xe1,
+ 0x54, 0x38, 0x31, 0x8d, 0x7f, 0x31, 0x4d, 0xc7, 0x58, 0xcc,
+ 0x80, 0xf, 0xc7, 0x31, 0x7d, 0x36, 0x96, 0xe3, 0x78, 0x34,
+ 0xf1, 0xcf, 0x8b, 0xd, 0x8c, 0x23, 0x98, 0x87, 0x2d, 0x98,
+ 0x8f, 0x3b, 0xb0, 0x10, 0xf, 0xe0, 0x24, 0x3c, 0x87, 0xc5,
+ 0x78, 0x19, 0xf5, 0x88, 0xf3, 0x6e, 0x27, 0xcb, 0x9a, 0xc3,
+ 0x5f, 0x2, 0x67, 0x33, 0xe4, 0xd0, 0xe1, 0x58, 0x93, 0x6,
+ 0x8c, 0xdb, 0x8b, 0xaa, 0x21, 0x86, 0xf7, 0xe3, 0xf0, 0x87,
+ 0x6, 0xb5, 0x17, 0x9b, 0x5c, 0x8d, 0xc, 0x8d, 0xff, 0x73,
+ 0xaf, 0x9f, 0x61, 0x12, 0x29, 0x7b, 0x6f, 0x15, 0x7f, 0x8a,
+ 0x70, 0xec, 0x1e, 0xc2, 0xd6, 0xc4, 0x30, 0x3d, 0xc8, 0x36,
+ 0x85, 0x7f, 0x38, 0xa, 0x5b, 0xe9, 0x54, 0x9, 0x89, 0xc3,
+ 0x51, 0x97, 0x45, 0xf5, 0x9a, 0xdc, 0x16, 0x8f, 0xb9, 0xd8,
+ 0xc, 0xd, 0xa7, 0x32, 0xa5, 0xb, 0xdd, 0x56, 0x42, 0x38,
+ 0xe, 0x72, 0x82, 0x94, 0x30, 0x1e, 0x2d, 0xe6, 0xf0, 0xae,
+ 0x2, 0xdb, 0x1c, 0x59, 0xd4, 0xd4, 0xb1, 0xa0, 0xf1, 0x7d,
+ 0x98, 0x50, 0xc7, 0x19, 0x32, 0x31, 0x3, 0x93, 0x23, 0x8b,
+ 0xda, 0x5, 0xd5, 0xf7, 0x4a, 0x8e, 0x29, 0xcf, 0xc0, 0xfa,
+ 0x93, 0xa4, 0x9a, 0xc8, 0xf3, 0x3b, 0xf9, 0xbb, 0x9f, 0xbf,
+ 0x47, 0x2c, 0xbe, 0x49, 0x9c, 0x1f, 0xca, 0x6a, 0x6b, 0x7c,
+ 0x4, 0xa3, 0x89, 0xdb, 0xb0, 0xc4, 0x12, 0x7e, 0xe4, 0x36,
+ 0x9c, 0xc8, 0xa3, 0x9, 0x43, 0x75, 0x66, 0x31, 0x99, 0x47,
+ 0x95, 0x23, 0x90, 0x33, 0x70, 0xae, 0x34, 0xad, 0xb0, 0x5,
+ 0x88, 0x1, 0xf4, 0xa6, 0xad, 0x5f, 0xbc, 0x3b, 0x9c, 0xbf,
+ 0x85, 0xfc, 0xdd, 0x60, 0x27, 0xdc, 0xd1, 0x16, 0x3a, 0xc6,
+ 0x42, 0x3e, 0xb, 0x4d, 0xc9, 0xa2, 0x2e, 0x43, 0x4f, 0x5a,
+ 0x26, 0x49, 0xac, 0x2a, 0x2d, 0xfa, 0x34, 0xb, 0x4d, 0x2f,
+ 0x64, 0x2e, 0x10, 0x34, 0x2d, 0x54, 0x20, 0x70, 0x7a, 0x28,
+ 0x8b, 0x63, 0xc5, 0x85, 0xbc, 0x80, 0x67, 0x48, 0xb7, 0x16,
+ 0x67, 0x64, 0x31, 0x73, 0xd1, 0xe0, 0xf0, 0xb8, 0x39, 0x4e,
+ 0x9b, 0x31, 0xcf, 0xac, 0x2c, 0x66, 0xd9, 0x44, 0x8f, 0xd7,
+ 0x39, 0x2b, 0x8b, 0xd9, 0xf9, 0xe1, 0xc8, 0x59, 0xfb, 0x95,
+ 0x9c, 0x8d, 0x85, 0x3b, 0x2b, 0xb, 0x76, 0x56, 0x8e, 0xb0,
+ 0xd3, 0x31, 0xc7, 0x93, 0xc1, 0xb9, 0x79, 0x56, 0x14, 0xd,
+ 0x8e, 0x8f, 0x9f, 0x53, 0x9c, 0x37, 0x56, 0xf3, 0xc6, 0xae,
+ 0xbc, 0xb1, 0x7b, 0xd0, 0xc0, 0xa2, 0x1, 0x3, 0xbd, 0xc5,
+ 0x5e, 0xd5, 0xeb, 0xf2, 0xba, 0x73, 0x86, 0xe5, 0x16, 0x2b,
+ 0xf3, 0x16, 0x7b, 0x3d, 0xe4, 0xf5, 0x8c, 0xdf, 0x71, 0xb0,
+ 0x37, 0xcf, 0xf1, 0x94, 0x6d, 0x7f, 0x2a, 0xe7, 0xc0, 0x50,
+ 0x72, 0x6, 0x93, 0xf7, 0x62, 0x4e, 0xdb, 0x5e, 0xcc, 0x6d,
+ 0xeb, 0xc7, 0x9, 0x15, 0xf3, 0xb2, 0x66, 0x96, 0xc8, 0x71,
+ 0x67, 0x31, 0x3f, 0x8b, 0x5, 0xfd, 0x58, 0xf8, 0xa4, 0x54,
+ 0x16, 0x8b, 0xb8, 0x68, 0xc7, 0x81, 0x9d, 0x23, 0x25, 0x2e,
+ 0x1f, 0x6d, 0x4d, 0xe6, 0xc0, 0x1a, 0x91, 0x54, 0x71, 0x92,
+ 0x6c, 0x79, 0x18, 0x5f, 0x2d, 0x53, 0xb3, 0x58, 0x9c, 0x39,
+ 0x50, 0x6f, 0x9d, 0x7c, 0xfd, 0xca, 0xcc, 0x81, 0xb9, 0xf9,
+ 0x9a, 0x1a, 0x58, 0x53, 0x75, 0x4e, 0x7, 0x5f, 0x92, 0x14,
+ 0x17, 0x86, 0xbb, 0x71, 0x94, 0x7d, 0x81, 0x5e, 0xe7, 0x82,
+ 0x1, 0xae, 0xd0, 0x95, 0x5c, 0x97, 0x6b, 0xb9, 0x26, 0x1f,
+ 0xc5, 0xf5, 0xd7, 0xc7, 0xb5, 0x77, 0x26, 0xd7, 0xdb, 0x66,
+ 0xae, 0xb4, 0x6b, 0xb8, 0x9c, 0x9c, 0xc1, 0x57, 0x2a, 0xc8,
+ 0xe5, 0x23, 0xc5, 0x57, 0x7f, 0x2b, 0x5f, 0xe1, 0xbb, 0x79,
+ 0xb4, 0x93, 0x2f, 0xdb, 0x2e, 0xf4, 0xe0, 0x45, 0x9c, 0xcb,
+ 0xbf, 0xc4, 0xce, 0xc7, 0x87, 0x5c, 0x72, 0x3e, 0xc5, 0x5,
+ 0x34, 0x17, 0x97, 0xd1, 0x52, 0x5c, 0x41, 0x7e, 0x5c, 0x4d,
+ 0xad, 0xb8, 0x86, 0xd6, 0xe3, 0x3a, 0x4a, 0xe3, 0x7a, 0xba,
+ 0x10, 0x37, 0xd0, 0x76, 0xdc, 0x48, 0xf, 0x62, 0x1b, 0xed,
+ 0xc3, 0x76, 0x7a, 0x15, 0x37, 0xd1, 0x5b, 0xb8, 0x99, 0xde,
+ 0xc3, 0x2d, 0xf4, 0x31, 0x6e, 0xa5, 0x2f, 0x70, 0x9b, 0xe2,
+ 0xc1, 0xed, 0xca, 0x38, 0xec, 0x50, 0x26, 0xe3, 0xe, 0x65,
+ 0x36, 0xee, 0x54, 0x16, 0xe3, 0x2e, 0xa5, 0x19, 0x37, 0x29,
+ 0x6d, 0xd8, 0xa9, 0x24, 0x90, 0x51, 0x2e, 0xc6, 0x3d, 0xca,
+ 0xa5, 0x34, 0x4d, 0xd9, 0x85, 0x88, 0xf2, 0x28, 0xcd, 0x54,
+ 0x5e, 0xa2, 0x59, 0xca, 0xab, 0x74, 0xbc, 0xf2, 0xe, 0x9d,
+ 0xa0, 0xbc, 0x47, 0xf3, 0x94, 0xf7, 0x69, 0x81, 0xf2, 0x11,
+ 0x2d, 0x52, 0x3e, 0xa1, 0xc5, 0x79, 0xc5, 0xe, 0xf2, 0x1b,
+ 0xcd, 0xee, 0x13, 0xcb, 0xb8, 0x9a, 0xa8, 0x4c, 0x79, 0xa3,
+ 0x66, 0x4e, 0x51, 0x6, 0x93, 0xec, 0x94, 0x90, 0xe2, 0xec,
+ 0xb5, 0x73, 0xa8, 0xb4, 0xb3, 0x7a, 0xfd, 0xf8, 0x2c, 0x96,
+ 0xf4, 0x16, 0x91, 0xb7, 0xa8, 0xc6, 0xeb, 0x5c, 0xbf, 0xe3,
+ 0xe0, 0xdb, 0x52, 0xb0, 0xab, 0x6b, 0xc6, 0x7b, 0x39, 0xbe,
+ 0x8d, 0x72, 0xec, 0xf6, 0xd8, 0xbc, 0xd0, 0x83, 0x63, 0xa7,
+ 0x59, 0x47, 0x66, 0x9f, 0x58, 0x2c, 0xb7, 0x74, 0x42, 0x16,
+ 0x4b, 0xfb, 0xb0, 0x2c, 0x8f, 0x79, 0xb9, 0x90, 0x2b, 0x4d,
+ 0xb2, 0x3f, 0x6f, 0xdf, 0x72, 0x3b, 0x8d, 0xc6, 0xda, 0x17,
+ 0xcd, 0x4e, 0x9f, 0xbc, 0xe9, 0xb2, 0x67, 0xcd, 0xeb, 0xcc,
+ 0x12, 0xbf, 0x26, 0x22, 0x96, 0x49, 0xcd, 0x22, 0x4b, 0x76,
+ 0xa5, 0x4d, 0xf3, 0x73, 0x9b, 0x10, 0x9a, 0x7f, 0x37, 0x3b,
+ 0x3c, 0x8f, 0xdb, 0x6f, 0xdb, 0xe0, 0xf1, 0x9e, 0x6, 0x2f,
+ 0xbb, 0xdd, 0x86, 0x62, 0x5a, 0x8b, 0x49, 0x8c, 0xa7, 0xd3,
+ 0x99, 0x98, 0xc7, 0x87, 0xd2, 0x48, 0x1, 0x9c, 0x4a, 0x1b,
+ 0xd0, 0x46, 0x21, 0xb4, 0x93, 0xe, 0x83, 0xda, 0x71, 0x1e,
+ 0x75, 0xe0, 0x12, 0xda, 0xc8, 0x87, 0xb4, 0x9, 0x19, 0x8a,
+ 0xe2, 0x1, 0x8a, 0xa1, 0x8f, 0xe2, 0xd8, 0x47, 0x9, 0x3c,
+ 0x4d, 0x67, 0xe3, 0x79, 0x32, 0xf0, 0x12, 0x25, 0xf1, 0x3a,
+ 0x1f, 0x68, 0x7e, 0x2f, 0x39, 0x7, 0xdf, 0xb0, 0x8b, 0xf5,
+ 0x6b, 0x1c, 0x66, 0xa9, 0x98, 0x97, 0x4b, 0x2c, 0x9f, 0xc5,
+ 0xc5, 0x56, 0x48, 0x4f, 0xde, 0x86, 0xf3, 0xa6, 0xee, 0xc1,
+ 0x8a, 0x5d, 0x66, 0x45, 0x8b, 0x58, 0xcd, 0x9b, 0xae, 0x62,
+ 0xcc, 0xd, 0x9d, 0xae, 0xb6, 0xf1, 0x35, 0x36, 0xbe, 0xd6,
+ 0xc6, 0xfb, 0x19, 0x9f, 0xcc, 0xf8, 0x53, 0x1b, 0x7f, 0x66,
+ 0xe3, 0xcf, 0x5, 0x5b, 0xcd, 0xbd, 0x69, 0x1b, 0x37, 0xd6,
+ 0x2c, 0x56, 0x8a, 0x9a, 0xa9, 0x59, 0x9c, 0x92, 0x41, 0x89,
+ 0x3d, 0x6c, 0xce, 0xc0, 0xd5, 0x34, 0x2d, 0x8b, 0x55, 0xce,
+ 0xfb, 0x1c, 0xf7, 0xb1, 0x71, 0xe5, 0x9c, 0x9d, 0xbd, 0x66,
+ 0x8b, 0x88, 0x99, 0x6d, 0x8b, 0x5b, 0x3, 0xf5, 0xa2, 0x9c,
+ 0x2e, 0xc2, 0x7a, 0xda, 0x8a, 0x8d, 0x74, 0x19, 0x62, 0x74,
+ 0x5, 0xba, 0xe8, 0x4a, 0xf4, 0xb0, 0x1, 0x5b, 0xe8, 0x3a,
+ 0xf4, 0xd2, 0x8d, 0x1c, 0x8c, 0xed, 0xd8, 0x4a, 0x37, 0xf3,
+ 0xae, 0x73, 0xcd, 0x52, 0x7c, 0xde, 0xff, 00, 0x50, 0x4b,
+ 0x3, 0x4, 0xa, 00, 00, 00, 0x8, 00, 0x55, 0x58,
+ 0xda, 0x2c, 0xb6, 0xdd, 0x6b, 0x3d, 0x5, 0x3, 00, 00,
+ 0xbf, 0x5, 00, 00, 0x1f, 00, 00, 00, 0x61, 0x6e,
+ 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x6d, 0x6f,
+ 0x72, 0x79, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x2e, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x95,
+ 0x54, 0x5b, 0x4f, 0x13, 0x41, 0x18, 0x3d, 0xd3, 0x6e, 0xaf,
+ 0x6c, 0xab, 0xa2, 0xa8, 0xb5, 0x5c, 0x4, 0x15, 0xcb, 0x96,
+ 0xb6, 0xca, 0xc5, 0xfb, 0x15, 0x10, 0xad, 0x82, 0x1a, 0x24,
+ 0xc6, 0xc8, 0x8b, 0x4b, 0x3b, 0x96, 0x25, 0xed, 0x2e, 0x6c,
+ 0xb7, 0xa2, 0x7f, 0x48, 0x5f, 0x7c, 0xc1, 0x58, 0xd, 0x3e,
+ 0xf8, 0xe8, 0x83, 0x3f, 0xca, 0x78, 0x66, 0x5b, 0x5a, 0x83,
+ 0x48, 0x62, 0x93, 0x39, 0xdf, 0xec, 0xcc, 0x77, 0x39, 0xdf,
+ 0xf9, 0x26, 0xfd, 0xf9, 0xeb, 0xdb, 0x77, 0x4, 0x91, 0xc3,
+ 0x6c, 0x1c, 0x49, 0x64, 0x62, 0x48, 0x60, 0x4c, 0x81, 0xa1,
+ 0x20, 0xab, 0x60, 0x5c, 0x41, 0xae, 0x7, 0x79, 0x14, 0x14,
+ 0x5c, 0x50, 0x70, 0x51, 0xc1, 0x84, 0x82, 0xc9, 0x38, 0x6f,
+ 0xa7, 0x22, 0x98, 0x8e, 0xe0, 0x52, 0x4, 0x97, 0x5, 0x42,
+ 0x5b, 0x56, 0xd9, 0x5b, 0x13, 0x10, 0x45, 0x81, 0xf0, 0x9a,
+ 0xb4, 0x2a, 0x6b, 0x9e, 0x40, 0xa0, 0x54, 0x13, 0x48, 0x2f,
+ 0xac, 0x9b, 0x6f, 0xcc, 0x82, 0xb9, 0xe5, 0x15, 0xac, 0x9a,
+ 0x59, 0x91, 0x85, 0x59, 0xa7, 0xea, 0xb8, 0x8b, 0x4e, 0x59,
+ 0x56, 0xaf, 0xd3, 0x77, 0xc3, 0x7a, 0x2b, 0xab, 0x75, 0xfa,
+ 0xae, 0xcc, 0x10, 0xac, 0x92, 0xc0, 0xe0, 0xde, 0x80, 0xa2,
+ 0xc2, 0x59, 0xc7, 0xae, 0x37, 0x6a, 0xd2, 0x55, 0x31, 0x37,
+ 0x2c, 0xdb, 0xf2, 0x6e, 0x9, 0x8c, 0x64, 0x8a, 0xc5, 0x3,
+ 0xb2, 0xaf, 0xcc, 0x8c, 0x3d, 0x17, 0xd0, 0x66, 0xf9, 0x21,
+ 0x70, 0x68, 0xc1, 0xb2, 0xe5, 0xe3, 0x46, 0x6d, 0x55, 0xba,
+ 0xcb, 0xe6, 0x6a, 0x95, 0x27, 0x3d, 0x66, 0xb9, 0xbc, 0x9b,
+ 0x55, 0x60, 0x38, 0x73, 0x70, 0x59, 0x95, 0x2a, 0x6e, 0xd5,
+ 0xff, 0x23, 0xe0, 0xa5, 0x40, 0xd2, 0x95, 0x35, 0xe7, 0x8d,
+ 0xec, 0x6, 0xd, 0xb8, 0x72, 0xb3, 0x21, 0xeb, 0xde, 0xb2,
+ 0xb3, 0x31, 0xe7, 0x6c, 0xd9, 0xb, 0xf2, 0xb5, 0xb7, 0xa4,
+ 0xb4, 0x5a, 0x92, 0x75, 0x69, 0x97, 0xc9, 0xb2, 0xee, 0x99,
+ 0xae, 0xf7, 0xd4, 0x75, 0xca, 0x8d, 0x92, 0x67, 0x39, 0xb6,
+ 0x40, 0xcc, 0x96, 0x5b, 0x4f, 0xdb, 0x1a, 0x45, 0xd8, 0x6f,
+ 0xb1, 0xe8, 0x33, 0x79, 0xe6, 0x34, 0xdc, 0x92, 0x9c, 0xb7,
+ 0x54, 0x23, 0x83, 0xa6, 0x4d, 0x2, 0x9e, 0x2c, 0x2f, 0xb2,
+ 0x9a, 0xfb, 0xce, 0xa7, 0xd1, 0xba, 0xcf, 0x2b, 0x86, 0x3a,
+ 0x52, 0xb8, 0xa2, 0xe3, 0x30, 0x8e, 0xe8, 0xe8, 0x55, 0x70,
+ 0x14, 0xc7, 0x74, 0xf4, 0xe1, 0xb8, 0x8e, 0x13, 0x38, 0x19,
+ 0xc1, 0x55, 0x1d, 0xd7, 0x70, 0x5d, 0xc7, 0xd, 0xdc, 0xd4,
+ 0x71, 0xb, 0xb7, 0x75, 0xdc, 0x51, 0x9f, 0x77, 0x31, 0xa3,
+ 0x63, 00, 0x83, 0x2, 0xa9, 0x7f, 0xe6, 0x17, 0x38, 0xec,
+ 0x6b, 0x50, 0x35, 0xed, 0x4a, 0xe1, 0xc9, 0xea, 0xba, 0x2c,
+ 0x71, 0xea, 0xfd, 0xfb, 0xc9, 0xd2, 0x6a, 0x49, 0x49, 0x10,
+ 0xcc, 0xa8, 0x6, 0xf6, 0x75, 0xea, 0xea, 0x94, 0xb0, 0x5a,
+ 0xdf, 0xb5, 0x8d, 0xaa, 0xf4, 0x58, 0x46, 0xcb, 0xf8, 0x6d,
+ 0x27, 0xea, 0xd2, 0x9b, 0xb3, 0x6a, 0xd2, 0xae, 0x53, 0x1b,
+ 0xa, 0x12, 0xca, 0x14, 0x3b, 0xe7, 0xdd, 0xc1, 0x53, 0x91,
+ 0xbf, 0x66, 0xf3, 0xc7, 0xb3, 0x50, 0x1, 0x51, 0x6, 0x3c,
+ 0xb0, 0x6c, 0x8f, 0x39, 0x62, 0xdc, 0xee, 0xa, 0x3c, 0xea,
+ 0xb, 0x7c, 0xe0, 0x93, 0x52, 0x5, 0x71, 0x9a, 0xaf, 0x3f,
+ 0x9, 0x8e, 0xb, 0x21, 0x40, 0x29, 0xb, 0xf5, 0xeb, 0x6d,
+ 0x5b, 0xea, 0xeb, 0x5b, 0x4a, 0xec, 0x5b, 0xaa, 0x4c, 0x8c,
+ 0x70, 0xa5, 0x70, 0x8a, 0x51, 0x69, 0xee, 0xe6, 0x11, 0xf0,
+ 0x63, 0x4f, 0x19, 0x5f, 0x21, 0x8c, 0x74, 0x13, 0x1, 0xa3,
+ 0xbf, 0x89, 0xa0, 0x91, 0x6b, 0x42, 0x33, 0x52, 0x5a, 0x13,
+ 0xa1, 0x6d, 0xde, 0x52, 0x27, 0xe5, 0x83, 0x30, 0x71, 0x18,
+ 0x1a, 0x46, 0x10, 0xc3, 0x19, 0x56, 0x3e, 0xcb, 0x1a, 0xe7,
+ 0x98, 0x6d, 0x94, 0x1e, 0x1c, 0x51, 0x3b, 0xe7, 0x27, 0xde,
+ 0x6, 0x68, 0x5d, 0xe3, 0x33, 0xc2, 0xd9, 0xf7, 0xd0, 0xb6,
+ 0xd5, 0xe6, 0x7, 0x12, 0xca, 0x68, 0x3b, 0x88, 0x4, 0x60,
+ 0x64, 0x9b, 0x8, 0xab, 0x4f, 0xae, 00, 0x57, 0x70, 0x7,
+ 0xd1, 0x20, 0xda, 0x7, 0x74, 0x89, 0x5, 0xd0, 0x76, 0x8e,
+ 0xb7, 0x76, 0xc1, 0xe0, 0xae, 0xa7, 0x72, 0xe0, 0xa, 0xf9,
+ 0x7, 0x3b, 0xe8, 0x89, 0xf9, 0xf7, 0x21, 0x3f, 0x6d, 0x97,
+ 0x6b, 0x1e, 0x3d, 0xc4, 0x31, 0x44, 0x61, 0x90, 0xcd, 0x38,
+ 0xb5, 0xc9, 0x91, 0xff, 0x5, 0xc, 0xe1, 0x22, 0x71, 0x2,
+ 0x37, 0x31, 0x89, 0xfb, 0x98, 0x42, 0x5, 0xd3, 0xd8, 0xc4,
+ 0x25, 0x46, 0xd, 0x51, 0xcd, 0x16, 0xff, 0x51, 0xb2, 0x57,
+ 0xfc, 0x93, 0x6d, 0xfe, 0x11, 0xed, 0x3, 0xb4, 0xe0, 0xc7,
+ 0x4e, 0xee, 0x30, 0x2d, 0x70, 0x95, 0x38, 0xdc, 0xe9, 0x39,
+ 0xbf, 0x27, 0x26, 0x6a, 0x8, 0x76, 0xd8, 0xe5, 0x93, 0xe4,
+ 0xbf, 0x1c, 0x58, 0x35, 0xca, 0x97, 0x9d, 0xc0, 0x6d, 0x9e,
+ 0x8e, 0x74, 0x62, 0x53, 0x5c, 0x2a, 0x56, 0x6c, 0xef, 0x29,
+ 0x31, 0x43, 0x3c, 0xd3, 0x71, 0x1b, 0x69, 0x97, 0x8, 0x1b,
+ 0xd9, 0x2f, 0xd0, 0xbb, 0xbe, 0x71, 0xff, 0xf4, 0x1e, 0xc7,
+ 0x38, 0x4f, 0x7b, 0x96, 0x3, 0x69, 0xf9, 0xbf, 0x60, 0xe3,
+ 0x6a, 0xb4, 0x53, 0x2d, 0xf5, 0xb, 0xca, 0xa4, 0xfb, 0x7,
+ 0xfa, 0xb4, 0x5d, 0x5, 0x95, 0x80, 0xfd, 0x6b, 0xe9, 0x57,
+ 0x7, 0xa, 0xd9, 0xcb, 0x71, 0x3, 0x45, 0x3e, 0x9b, 0x87,
+ 0x94, 0xf3, 0x11, 0x65, 0x5b, 0xe4, 0xcd, 0xa8, 0x4f, 0xf9,
+ 0xfc, 0x6f, 0x50, 0x4b, 0x1, 0x2, 0xa, 00, 0xa, 00,
+ 00, 00, 00, 00, 0x16, 0xa9, 0xda, 0x2c, 00, 00,
+ 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
+ 0x9, 00, 00, 00, 00, 00, 00, 00, 00, 00,
+ 00, 00, 00, 00, 00, 00, 00, 00, 0x4d, 0x45,
+ 0x54, 0x41, 0x2d, 0x49, 0x4e, 0x46, 0x2f, 0x50, 0x4b, 0x1,
+ 0x2, 0xa, 00, 0xa, 00, 00, 00, 00, 00, 0x16,
+ 0xa9, 0xda, 0x2c, 0x1e, 0xb9, 0xd9, 0x17, 0x2d, 00, 00,
+ 00, 0x2d, 00, 00, 00, 0x14, 00, 00, 00, 00,
+ 00, 00, 00, 00, 00, 00, 00, 00, 00, 0x27,
+ 00, 00, 00, 0x4d, 0x45, 0x54, 0x41, 0x2d, 0x49, 0x4e,
+ 0x46, 0x2f, 0x4d, 0x41, 0x4e, 0x49, 0x46, 0x45, 0x53, 0x54,
+ 0x2e, 0x4d, 0x46, 0x50, 0x4b, 0x1, 0x2, 0xa, 00, 0xa,
+ 00, 00, 00, 0x8, 00, 0xe3, 0xa5, 0xda, 0x2c, 0x5f,
+ 0xeb, 0x71, 0x9a, 0xd7, 0xd, 00, 00, 0x8, 0x19, 00,
+ 00, 0xf, 00, 00, 00, 00, 00, 00, 00, 00,
+ 00, 00, 00, 00, 00, 0x86, 00, 00, 00, 0x76,
+ 0x6e, 0x63, 0x76, 0x69, 0x65, 0x77, 0x65, 0x72, 0x2e, 0x63,
+ 0x6c, 0x61, 0x73, 0x73, 0x50, 0x4b, 0x1, 0x2, 0xa, 00,
+ 0xa, 00, 00, 00, 0x8, 00, 0x16, 0xa9, 0xda, 0x2c,
+ 0xc9, 0xa0, 0xa1, 0x6c, 0x47, 0xf, 00, 00, 0x1f, 0x1e,
+ 00, 00, 0xe, 00, 00, 00, 00, 00, 00, 00,
+ 00, 00, 00, 00, 00, 00, 0x8a, 0xe, 00, 00,
+ 0x72, 0x66, 0x62, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63,
+ 0x6c, 0x61, 0x73, 0x73, 0x50, 0x4b, 0x1, 0x2, 0xa, 00,
+ 0xa, 00, 00, 00, 0x8, 00, 0x55, 0x58, 0xda, 0x2c,
+ 0x7a, 0x44, 0x1b, 0x63, 0x14, 0x5, 00, 00, 0xb8, 0x8,
+ 00, 00, 0x19, 00, 00, 00, 00, 00, 00, 00,
+ 00, 00, 00, 00, 00, 00, 0xfd, 0x1d, 00, 00,
+ 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x6e, 0x65, 0x6c, 0x2e,
+ 0x63, 0x6c, 0x61, 0x73, 0x73, 0x50, 0x4b, 0x1, 0x2, 0xa,
+ 00, 0xa, 00, 00, 00, 0x8, 00, 0x55, 0x58, 0xda,
+ 0x2c, 0xe7, 0x52, 0x7f, 0x83, 0x46, 0xb, 00, 00, 0xe7,
+ 0x14, 00, 00, 0xf, 00, 00, 00, 00, 00, 00,
+ 00, 00, 00, 00, 00, 00, 00, 0x48, 0x23, 00,
+ 00, 0x76, 0x6e, 0x63, 0x43, 0x61, 0x6e, 0x76, 0x61, 0x73,
+ 0x2e, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x50, 0x4b, 0x1, 0x2,
+ 0xa, 00, 0xa, 00, 00, 00, 0x8, 00, 0x55, 0x58,
+ 0xda, 0x2c, 0xb6, 0xdd, 0x6b, 0x3d, 0x5, 0x3, 00, 00,
+ 0xbf, 0x5, 00, 00, 0x1f, 00, 00, 00, 00, 00,
+ 00, 00, 00, 00, 00, 00, 00, 00, 0xbb, 0x2e,
+ 00, 00, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64,
+ 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x49, 0x6d, 0x61, 0x67,
+ 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x63, 0x6c,
+ 0x61, 0x73, 0x73, 0x50, 0x4b, 0x5, 0x6, 00, 00, 00,
+ 00, 0x7, 00, 0x7, 00, 0xc3, 0x1, 00, 00, 0xfd,
+ 0x31, 00, 00, 00, 00, };
+
+static prog_char data_vncjava_html[] = {
+ /* /vncjava.html */
+ 0x2f, 0x76, 0x6e, 0x63, 0x6a, 0x61, 0x76, 0x61, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
+ 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32,
+ 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x3a, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69,
+ 0x6b, 0x69, 0x2f, 0x70, 0x72, 0x65, 0x2d, 0x31, 0x2e, 0x31,
+ 0x20, 0x28, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x64,
+ 0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
+ 0x2f, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74,
+ 0x69, 0x6b, 0x69, 0x2f, 0x29, 0xd, 0xa, 0x43, 0x6f, 0x6e,
+ 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a,
+ 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c,
+ 0xd, 0xa, 0xd, 0xa, 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54,
+ 0x59, 0x50, 0x45, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50,
+ 0x55, 0x42, 0x4c, 0x49, 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f,
+ 0x57, 0x33, 0x43, 0x2f, 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48,
+ 0x54, 0x4d, 0x4c, 0x20, 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54,
+ 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61,
+ 0x6c, 0x2f, 0x2f, 0x45, 0x4e, 0x22, 0x3e, 0xa, 0x3c, 0x68,
+ 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65,
+ 0x61, 0x64, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74,
+ 0x69, 0x74, 0x6c, 0x65, 0x3e, 0x56, 0x69, 0x72, 0x74, 0x75,
+ 0x61, 0x6c, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69,
+ 0x20, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x3c, 0x2f, 0x74,
+ 0x69, 0x74, 0x6c, 0x65, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x2f,
+ 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0xa, 0x20, 0x20, 0x3c,
+ 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20,
+ 0x3c, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xa, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x61, 0x70, 0x70, 0x6c,
+ 0x65, 0x74, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x3d, 0x22, 0x76,
+ 0x6e, 0x63, 0x76, 0x69, 0x65, 0x77, 0x65, 0x72, 0x2e, 0x63,
+ 0x6c, 0x61, 0x73, 0x73, 0x22, 0x20, 0x61, 0x72, 0x63, 0x68,
+ 0x69, 0x76, 0x65, 0x3d, 0x22, 0x76, 0x6e, 0x63, 0x76, 0x69,
+ 0x65, 0x77, 0x65, 0x72, 0x2e, 0x6a, 0x61, 0x72, 0x22, 0xa,
+ 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x64,
+ 0x74, 0x68, 0x3d, 0x22, 0x34, 0x38, 0x30, 0x22, 0x20, 0x68,
+ 0x65, 0x69, 0x67, 0x68, 0x74, 0x3d, 0x22, 0x34, 0x30, 0x30,
+ 0x22, 0x3e, 0xa, 0x9, 0x3c, 0x70, 0x61, 0x72, 0x61, 0x6d,
+ 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x50, 0x4f, 0x52,
+ 0x54, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, 0x22,
+ 0x35, 0x39, 0x30, 0x30, 0x22, 0x3e, 0xa, 0x9, 0x20, 0x20,
+ 0x4a, 0x61, 0x76, 0x61, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20,
+ 0x62, 0x65, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64,
+ 0x20, 0x69, 0x6e, 0x20, 0x79, 0x6f, 0x75, 0x72, 0x20, 0x77,
+ 0x65, 0x62, 0x20, 0x62, 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72,
+ 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20,
+ 0x74, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0xa, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x61, 0x70, 0x70,
+ 0x6c, 0x65, 0x74, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c,
+ 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xa, 0x20,
+ 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c,
+ 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, };
+
+static prog_char data_style_css[] = {
+ /* /style.css */
+ 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x2e, 0x63, 0x73, 0x73, 0,
+ 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32,
+ 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x3a, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69,
+ 0x6b, 0x69, 0x2f, 0x70, 0x72, 0x65, 0x2d, 0x31, 0x2e, 0x31,
+ 0x20, 0x28, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x64,
+ 0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
+ 0x2f, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74,
+ 0x69, 0x6b, 0x69, 0x2f, 0x29, 0xd, 0xa, 0x43, 0x6f, 0x6e,
+ 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a,
+ 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0xd,
+ 0xa, 0xd, 0xa, 0x68, 0x31, 0x20, 0xa, 0x7b, 0xa, 0x20,
+ 0x20, 0x74, 0x65, 0x78, 0x74, 0x2d, 0x61, 0x6c, 0x69, 0x67,
+ 0x6e, 0x3a, 0x20, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3b,
+ 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69,
+ 0x7a, 0x65, 0x3a, 0x31, 0x34, 0x70, 0x74, 0x3b, 0xa, 0x20,
+ 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x66, 0x61, 0x6d, 0x69,
+ 0x6c, 0x79, 0x3a, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x2c, 0x68,
+ 0x65, 0x6c, 0x76, 0x65, 0x74, 0x69, 0x63, 0x61, 0x3b, 0xa,
+ 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x77, 0x65, 0x69,
+ 0x67, 0x68, 0x74, 0x3a, 0x62, 0x6f, 0x6c, 0x64, 0x3b, 0xa,
+ 0x20, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x3a,
+ 0x31, 0x30, 0x70, 0x78, 0x3b, 0x20, 0xa, 0x7d, 0xa, 0xa,
+ 0x62, 0x6f, 0x64, 0x79, 0xa, 0x7b, 0xa, 0xa, 0x20, 0x20,
+ 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64,
+ 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x20, 0x23, 0x66,
+ 0x66, 0x66, 0x65, 0x65, 0x63, 0x3b, 0xa, 0x20, 0x20, 0x63,
+ 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x54, 0x45, 0x58, 0x54, 0x43,
+ 0x4f, 0x4c, 0x4f, 0x52, 0x3b, 0xa, 0xa, 0x20, 0x20, 0x66,
+ 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x38,
+ 0x70, 0x74, 0x3b, 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74,
+ 0x2d, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x3a, 0x61, 0x72,
+ 0x69, 0x61, 0x6c, 0x2c, 0x68, 0x65, 0x6c, 0x76, 0x65, 0x74,
+ 0x69, 0x63, 0x61, 0x3b, 0xa, 0x7d, 0xa, 0xa, 0x2e, 0x6d,
+ 0x65, 0x6e, 0x75, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0xa, 0x7b,
+ 0xa, 0x20, 0x20, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f,
+ 0x6e, 0x3a, 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65,
+ 0x3b, 0xa, 0x20, 0x20, 0x74, 0x6f, 0x70, 0x3a, 0x31, 0x30,
+ 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20, 0x6c, 0x65, 0x66, 0x74,
+ 0x3a, 0x30, 0x25, 0x3b, 0xa, 0x20, 0x20, 0x77, 0x69, 0x64,
+ 0x74, 0x68, 0x3a, 0x31, 0x34, 0x25, 0x3b, 0xa, 0x20, 0x20,
+ 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x6c, 0x65, 0x66, 0x74,
+ 0x3b, 0xa, 0xa, 0x20, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69,
+ 0x6e, 0x67, 0x3a, 0x31, 0x30, 0x70, 0x78, 0x3b, 0xa, 0x20,
+ 0x20, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x3a, 0x34, 0x70,
+ 0x78, 0x3b, 0xa, 0x9, 0xa, 0x20, 0x20, 0x62, 0x6f, 0x72,
+ 0x64, 0x65, 0x72, 0x3a, 0x20, 0x73, 0x6f, 0x6c, 0x69, 0x64,
+ 0x20, 0x31, 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20, 0x62, 0x61,
+ 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63,
+ 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x20, 0x23, 0x66, 0x66, 0x66,
+ 0x63, 0x64, 0x32, 0x3b, 0xa, 0x20, 0x20, 0x74, 0x65, 0x78,
+ 0x74, 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a, 0x6c, 0x65,
+ 0x66, 0x74, 0x3b, 0xa, 0x20, 0x20, 0xa, 0x20, 0x20, 0x66,
+ 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x31,
+ 0x30, 0x70, 0x74, 0x3b, 0xa, 0x7d, 0xa, 0xa, 0x2e, 0x63,
+ 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x62, 0x6c, 0x6f, 0x63,
+ 0x6b, 0xa, 0x7b, 0x20, 0x20, 0xa, 0x20, 0x20, 0x70, 0x6f,
+ 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x61, 0x62, 0x73,
+ 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x3b, 0xa, 0x20, 0x20, 0x74,
+ 0x6f, 0x70, 0x3a, 0x31, 0x30, 0x70, 0x78, 0x3b, 0xa, 0x20,
+ 0x20, 0x6c, 0x65, 0x66, 0x74, 0x3a, 0x31, 0x37, 0x25, 0x3b,
+ 0xa, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x35,
+ 0x32, 0x25, 0x3b, 0xa, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61,
+ 0x74, 0x3a, 0x6c, 0x65, 0x66, 0x74, 0x3b, 0xa, 0xa, 0x20,
+ 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x31,
+ 0x30, 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20, 0x6d, 0x61, 0x72,
+ 0x67, 0x69, 0x6e, 0x3a, 0x34, 0x70, 0x78, 0x3b, 0xa, 0x20,
+ 0x20, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x2d, 0x62, 0x6f,
+ 0x74, 0x74, 0x6f, 0x6d, 0x3a, 0x33, 0x30, 0x70, 0x78, 0x3b,
+ 0xa, 0xa, 0x20, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72,
+ 0x3a, 0x20, 0x31, 0x70, 0x78, 0x20, 0x64, 0x6f, 0x74, 0x74,
+ 0x65, 0x64, 0x3b, 0xa, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6b,
+ 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63, 0x6f, 0x6c,
+ 0x6f, 0x72, 0x3a, 0x20, 0x77, 0x68, 0x69, 0x74, 0x65, 0x3b,
+ 0xa, 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73,
+ 0x69, 0x7a, 0x65, 0x3a, 0x38, 0x70, 0x74, 0x3b, 0xa, 0x20,
+ 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x66, 0x61, 0x6d, 0x69,
+ 0x6c, 0x79, 0x3a, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x2c, 0x68,
+ 0x65, 0x6c, 0x76, 0x65, 0x74, 0x69, 0x63, 0x61, 0x3b, 0x20,
+ 0x20, 0xa, 0xa, 0x7d, 0xa, 0xa, 0x2e, 0x6e, 0x65, 0x77,
+ 0x73, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0xa, 0x7b, 0xa, 0x20,
+ 0x20, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3a,
+ 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x3b, 0xa,
+ 0x20, 0x20, 0x74, 0x6f, 0x70, 0x3a, 0x31, 0x30, 0x70, 0x78,
+ 0x3b, 0xa, 0x20, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x3a, 0x37,
+ 0x32, 0x25, 0x3b, 0xa, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74,
+ 0x68, 0x3a, 0x32, 0x34, 0x25, 0x3b, 0xa, 0x20, 0x20, 0x66,
+ 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x6c, 0x65, 0x66, 0x74, 0x3b,
+ 0xa, 0xa, 0x20, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e,
+ 0x67, 0x3a, 0x31, 0x30, 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20,
+ 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x3a, 0x34, 0x70, 0x78,
+ 0x3b, 0xa, 0xa, 0x20, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65,
+ 0x72, 0x3a, 0x20, 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x20, 0x31,
+ 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6b,
+ 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63, 0x6f, 0x6c,
+ 0x6f, 0x72, 0x3a, 0x20, 0x23, 0x66, 0x66, 0x66, 0x63, 0x64,
+ 0x32, 0x3b, 0xa, 0x20, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2d,
+ 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a, 0x6c, 0x65, 0x66, 0x74,
+ 0x3b, 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73,
+ 0x69, 0x7a, 0x65, 0x3a, 0x38, 0x70, 0x74, 0x3b, 0xa, 0xa,
+ 0x7d, 0xa, 0xa, 0xa, 0xa, 0x70, 0x2e, 0x69, 0x6e, 0x74,
+ 0x72, 0x6f, 0xa, 0x7b, 0xa, 0x20, 0x20, 0x6d, 0x61, 0x72,
+ 0x67, 0x69, 0x6e, 0x2d, 0x6c, 0x65, 0x66, 0x74, 0x3a, 0x32,
+ 0x30, 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20, 0x6d, 0x61, 0x72,
+ 0x67, 0x69, 0x6e, 0x2d, 0x72, 0x69, 0x67, 0x68, 0x74, 0x3a,
+ 0x32, 0x30, 0x70, 0x78, 0x3b, 0xa, 0xa, 0x20, 0x20, 0x66,
+ 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x31,
+ 0x30, 0x70, 0x74, 0x3b, 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e,
+ 0x74, 0x2d, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3a, 0x62,
+ 0x6f, 0x6c, 0x64, 0x3b, 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e,
+ 0x74, 0x2d, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x3a, 0x61,
+ 0x72, 0x69, 0x61, 0x6c, 0x2c, 0x68, 0x65, 0x6c, 0x76, 0x65,
+ 0x74, 0x69, 0x63, 0x61, 0x3b, 0x20, 0x20, 0xa, 0x7d, 0xa,
+ 0xa, 0x70, 0x2e, 0x63, 0x6c, 0x69, 0x6e, 0x6b, 0xa, 0x7b,
+ 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69,
+ 0x7a, 0x65, 0x3a, 0x31, 0x32, 0x70, 0x74, 0x3b, 0xa, 0x20,
+ 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x66, 0x61, 0x6d, 0x69,
+ 0x6c, 0x79, 0x3a, 0x63, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72,
+ 0x2c, 0x6d, 0x6f, 0x6e, 0x6f, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x3b, 0x20, 0x20, 0xa, 0x20, 0x20, 0x74, 0x65, 0x78, 0x74,
+ 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a, 0x63, 0x65, 0x6e,
+ 0x74, 0x65, 0x72, 0x3b, 0xa, 0x7d, 0xa, 0xa, 0x70, 0x2e,
+ 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0xa, 0x7b, 0xa,
+ 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a,
+ 0x65, 0x3a, 0x31, 0x30, 0x70, 0x74, 0x3b, 0xa, 0x20, 0x20,
+ 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x66, 0x61, 0x6d, 0x69, 0x6c,
+ 0x79, 0x3a, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x2c, 0x68, 0x65,
+ 0x6c, 0x76, 0x65, 0x74, 0x69, 0x63, 0x61, 0x3b, 0x20, 0x20,
+ 0xa, 0x20, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2d, 0x61, 0x6c,
+ 0x69, 0x67, 0x6e, 0x3a, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72,
+ 0x3b, 0xa, 0x7d, 0xa, 0xa, 0xa, 0xa, 0x69, 0x6d, 0x67,
+ 0x2e, 0x72, 0x69, 0x67, 0x68, 0x74, 0xa, 0x7b, 0xa, 0x20,
+ 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x72, 0x69, 0x67,
+ 0x68, 0x74, 0x3b, 0xa, 0x20, 0x20, 0x6d, 0x61, 0x72, 0x67,
+ 0x69, 0x6e, 0x3a, 0x31, 0x30, 0x70, 0x78, 0x3b, 0xa, 0x7d,
+ 0xa, 0xa, 0x69, 0x6d, 0x67, 0x2e, 0x6c, 0x65, 0x66, 0x74,
+ 0xa, 0x7b, 0xa, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
+ 0x3a, 0x6c, 0x65, 0x66, 0x74, 0x3b, 0xa, 0x20, 0x20, 0x6d,
+ 0x61, 0x72, 0x67, 0x69, 0x6e, 0x3a, 0x31, 0x30, 0x70, 0x78,
+ 0x3b, 0xa, 0x7d, 0xa, 0xa, 0x70, 0x2e, 0x66, 0x69, 0x67,
+ 0xa, 0x7b, 0xa, 0x20, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65,
+ 0x72, 0x3a, 0x20, 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x20, 0x31,
+ 0x70, 0x78, 0x3b, 0x20, 0xa, 0xa, 0x20, 0x20, 0x74, 0x65,
+ 0x78, 0x74, 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a, 0x20,
+ 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3b, 0xa, 0xa, 0x20,
+ 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x20,
+ 0x31, 0x30, 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20, 0x6d, 0x61,
+ 0x72, 0x67, 0x69, 0x6e, 0x3a, 0x31, 0x30, 0x70, 0x78, 0x3b,
+ 0xa, 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73,
+ 0x69, 0x7a, 0x65, 0x3a, 0x37, 0x70, 0x74, 0x3b, 0xa, 0x7d,
+ 0xa, 0xa, 0x70, 0x2e, 0x72, 0x66, 0x69, 0x67, 0xa, 0x7b,
+ 0xa, 0x20, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3a,
+ 0x20, 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x20, 0x31, 0x70, 0x78,
+ 0x3b, 0x20, 0xa, 0xa, 0x20, 0x20, 0x74, 0x65, 0x78, 0x74,
+ 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a, 0x20, 0x63, 0x65,
+ 0x6e, 0x74, 0x65, 0x72, 0x3b, 0xa, 0xa, 0x20, 0x20, 0x70,
+ 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x20, 0x31, 0x30,
+ 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20, 0x6d, 0x61, 0x72, 0x67,
+ 0x69, 0x6e, 0x3a, 0x31, 0x30, 0x70, 0x78, 0x3b, 0xa, 0xa,
+ 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a,
+ 0x65, 0x3a, 0x37, 0x70, 0x74, 0x3b, 0xa, 0xa, 0x20, 0x20,
+ 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x72, 0x69, 0x67, 0x68,
+ 0x74, 0x3b, 0xa, 0x7d, 0xa, 0xa, 0x70, 0x2e, 0x6c, 0x66,
+ 0x69, 0x67, 0xa, 0x7b, 0xa, 0x20, 0x20, 0x62, 0x6f, 0x72,
+ 0x64, 0x65, 0x72, 0x3a, 0x20, 0x73, 0x6f, 0x6c, 0x69, 0x64,
+ 0x20, 0x31, 0x70, 0x78, 0x3b, 0x20, 0xa, 0xa, 0x20, 0x20,
+ 0x74, 0x65, 0x78, 0x74, 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e,
+ 0x3a, 0x20, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3b, 0xa,
+ 0xa, 0x20, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67,
+ 0x3a, 0x20, 0x31, 0x30, 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20,
+ 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x3a, 0x31, 0x30, 0x70,
+ 0x78, 0x3b, 0xa, 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74,
+ 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x37, 0x70, 0x74, 0x3b,
+ 0xa, 0xa, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3a,
+ 0x6c, 0x65, 0x66, 0x74, 0x3b, 0xa, 0x7d, 0xa, 0xa, 0x70,
+ 0xa, 0x7b, 0xa, 0x20, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69,
+ 0x6e, 0x67, 0x2d, 0x6c, 0x65, 0x66, 0x74, 0x3a, 0x31, 0x30,
+ 0x70, 0x78, 0x3b, 0xa, 0x7d, 0xa, 0xa, 0x70, 0x2e, 0x72,
+ 0x69, 0x67, 0x68, 0x74, 0xa, 0x7b, 0xa, 0x20, 0x20, 0x74,
+ 0x65, 0x78, 0x74, 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a,
+ 0x72, 0x69, 0x67, 0x68, 0x74, 0x3b, 0x20, 0xa, 0x7d, 0xa,
+ 0xa, 0x70, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2d,
+ 0x74, 0x69, 0x74, 0x6c, 0x65, 0xa, 0x7b, 0xa, 0x20, 0x20,
+ 0x74, 0x65, 0x78, 0x74, 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e,
+ 0x3a, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3b, 0xa, 0xa,
+ 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a,
+ 0x65, 0x3a, 0x31, 0x34, 0x70, 0x74, 0x3b, 0xa, 0xa, 0x20,
+ 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x30,
+ 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20, 0x6d, 0x61, 0x72, 0x67,
+ 0x69, 0x6e, 0x3a, 0x34, 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20,
+ 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x2d, 0x62, 0x6f, 0x74,
+ 0x74, 0x6f, 0x6d, 0x3a, 0x31, 0x30, 0x70, 0x78, 0x3b, 0xa,
+ 0xa, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x20,
+ 0x54, 0x49, 0x54, 0x4c, 0x45, 0x43, 0x4f, 0x4c, 0x4f, 0x52,
+ 0x3b, 0xa, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72,
+ 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72,
+ 0x3a, 0x20, 0x23, 0x66, 0x66, 0x66, 0x63, 0x62, 0x61, 0x3b,
+ 0xa, 0x20, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3a,
+ 0x20, 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x20, 0x31, 0x70, 0x78,
+ 0x3b, 0xa, 0xa, 0x7d, 0x20, 0xa, 0xa, 0xa, 0xa, 0xa,
+};
+
+struct httpd_fsdata_file file_cgi_processes[] = {{NULL, data_cgi_processes, data_cgi_processes + 15, sizeof(data_cgi_processes) - 15}};
+
+struct httpd_fsdata_file file_cgi_files[] = {{file_cgi_processes, data_cgi_files, data_cgi_files + 11, sizeof(data_cgi_files) - 11}};
+
+struct httpd_fsdata_file file_cgi_meminfo[] = {{file_cgi_files, data_cgi_meminfo, data_cgi_meminfo + 13, sizeof(data_cgi_meminfo) - 13}};
+
+struct httpd_fsdata_file file_cgi_tcp[] = {{file_cgi_meminfo, data_cgi_tcp, data_cgi_tcp + 9, sizeof(data_cgi_tcp) - 9}};
+
+struct httpd_fsdata_file file_img_screenshot_png[] = {{file_cgi_tcp, data_img_screenshot_png, data_img_screenshot_png + 20, sizeof(data_img_screenshot_png) - 20}};
+
+struct httpd_fsdata_file file_404_html[] = {{file_img_screenshot_png, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}};
+
+struct httpd_fsdata_file file_footer_plain[] = {{file_404_html, data_footer_plain, data_footer_plain + 14, sizeof(data_footer_plain) - 14}};
+
+struct httpd_fsdata_file file_header_html[] = {{file_footer_plain, data_header_html, data_header_html + 13, sizeof(data_header_html) - 13}};
+
+struct httpd_fsdata_file file_index_html[] = {{file_header_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}};
+
+struct httpd_fsdata_file file_vnc_html[] = {{file_index_html, data_vnc_html, data_vnc_html + 10, sizeof(data_vnc_html) - 10}};
+
+struct httpd_fsdata_file file_vncviewer_jar[] = {{file_vnc_html, data_vncviewer_jar, data_vncviewer_jar + 15, sizeof(data_vncviewer_jar) - 15}};
+
+struct httpd_fsdata_file file_vncjava_html[] = {{file_vncviewer_jar, data_vncjava_html, data_vncjava_html + 14, sizeof(data_vncjava_html) - 14}};
+
+struct httpd_fsdata_file file_style_css[] = {{file_vncjava_html, data_style_css, data_style_css + 11, sizeof(data_style_css) - 11}};
+
+#define HTTPD_FS_ROOT file_style_css
+
+#define HTTPD_FS_NUMFILES 13
\ No newline at end of file
diff --git a/contiki-avr/apps/httpd-fsdata.h b/contiki-avr/apps/httpd-fsdata.h
new file mode 100644
index 0000000..61b43ef
--- /dev/null
+++ b/contiki-avr/apps/httpd-fsdata.h
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2001, Swedish Institute of Computer Science.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the Swedish Institute
+ * of Computer Science and its contributors.
+ * 4. Neither the name of the Institute nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ * $Id: httpd-fsdata.h,v 1.1 2003/07/04 10:54:51 adamdunkels Exp $
+ */
+#ifndef __HTTPD_FSDATA_H__
+#define __HTTPD_FSDATA_H__
+
+#include "uipopt.h"
+
+#include <avr/pgmspace.h>
+
+struct httpd_fsdata_file {
+ struct httpd_fsdata_file *next;
+ prog_char *name;
+ prog_char *data;
+ int len;
+};
+
+struct httpd_fsdata_file_noconst {
+ struct httpd_fsdata_file *next;
+ prog_char *name;
+ prog_char *data;
+ int len;
+};
+
+#endif /* __HTTPD_FSDATA_H__ */
diff --git a/contiki-avr/apps/httpd.c b/contiki-avr/apps/httpd.c
new file mode 100644
index 0000000..61d1094
--- /dev/null
+++ b/contiki-avr/apps/httpd.c
@@ -0,0 +1,389 @@
+/*
+ * Copyright (c) 2001, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Adam Dunkels.
+ * 4. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack.
+ *
+ * $Id: httpd.c,v 1.3 2004/08/09 22:25:06 adamdunkels Exp $
+ *
+ */
+
+
+#include "contiki.h"
+#include "httpd.h"
+#include "httpd-fs.h"
+#include "httpd-fsdata.h"
+#include "httpd-cgi.h"
+
+#include "webserver.h"
+
+#include <avr/pgmspace.h>
+
+/* The HTTP server states: */
+#define HTTP_DEALLOCATED 0
+#define HTTP_NOGET 1
+#define HTTP_FILE 2
+#define HTTP_TEXT 3
+#define HTTP_FUNC 4
+#define HTTP_END 5
+
+#ifdef DEBUG
+#include <stdio.h>
+#define PRINT(x) printf("%s", x)
+#define PRINTLN(x) printf("%s\n", x)
+#else /* DEBUG */
+#define PRINT(x)
+#define PRINTLN(x)
+#endif /* DEBUG */
+
+struct httpd_state *hs;
+
+extern const struct httpd_fsdata_file file_index_html;
+extern const struct httpd_fsdata_file file_404_html;
+
+static void next_scriptline(void);
+static void next_scriptstate(void);
+
+#define ISO_G 0x47
+#define ISO_E 0x45
+#define ISO_T 0x54
+#define ISO_slash 0x2f
+#define ISO_c 0x63
+#define ISO_g 0x67
+#define ISO_i 0x69
+#define ISO_space 0x20
+#define ISO_nl 0x0a
+#define ISO_cr 0x0d
+#define ISO_a 0x61
+#define ISO_t 0x74
+#define ISO_hash 0x23
+#define ISO_period 0x2e
+
+#define HTTPD_CONF_NUMCONNS UIP_CONNS
+static struct httpd_state conns[HTTPD_CONF_NUMCONNS];
+static u8_t i;
+
+static char tmp[40];
+/*-----------------------------------------------------------------------------------*/
+static struct httpd_state *
+alloc_state(void)
+{
+
+ for(i = 0; i < HTTPD_CONF_NUMCONNS; ++i) {
+ if(conns[i].state == HTTP_DEALLOCATED) {
+ return &conns[i];
+ }
+ }
+
+ /* We are overloaded! XXX: we'll just kick all other connections! */
+ for(i = 0; i < HTTPD_CONF_NUMCONNS; ++i) {
+ conns[i].state = HTTP_DEALLOCATED;
+ }
+
+ return NULL;
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+dealloc_state(struct httpd_state *s)
+{
+ s->state = HTTP_DEALLOCATED;
+}
+/*-----------------------------------------------------------------------------------*/
+void
+httpd_init(void)
+{
+ httpd_fs_init();
+
+ /* Listen to port 80. */
+ tcp_listen(HTONS(80));
+
+ for(i = 0; i < HTTPD_CONF_NUMCONNS; ++i) {
+ conns[i].state = HTTP_DEALLOCATED;
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+void
+httpd_appcall(void *state)
+{
+ struct httpd_fs_file fsfile;
+ u8_t i;
+ char c;
+
+ hs = (struct httpd_state *)(state);
+
+ /* We use the uip_ test functions to deduce why we were
+ called. If uip_connected() is non-zero, we were called
+ because a remote host has connected to us. If
+ uip_newdata() is non-zero, we were called because the
+ remote host has sent us new data, and if uip_acked() is
+ non-zero, the remote host has acknowledged the data we
+ previously sent to it. */
+ if(uip_connected()) {
+
+ /* Since we've just been connected, the state pointer should be
+ NULL and we need to allocate a new state object. If we have run
+ out of memory for state objects, we'll have to abort the
+ connection and return. */
+ if(hs == NULL) {
+ hs = alloc_state();
+ if(hs == NULL) {
+ uip_close();
+ return;
+ }
+ tcp_markconn(uip_conn, (void *)hs);
+ }
+ /* Since we have just been connected with the remote host, we
+ reset the state for this connection. The ->count variable
+ contains the amount of data that is yet to be sent to the
+ remote host, and the ->state is set to HTTP_NOGET to signal
+ that we haven't received any HTTP GET request for this
+ connection yet. */
+ hs->state = HTTP_NOGET;
+ hs->count = 0;
+ hs->poll = 0;
+ } else if(uip_closed() || uip_aborted()) {
+ if(hs != NULL) {
+ dealloc_state(hs);
+ }
+ return;
+ } else if(uip_poll()) {
+ /* If we are polled ten times, we abort the connection. This is
+ because we don't want connections lingering indefinately in
+ the system. */
+ if(hs != NULL) {
+ if(hs->state == HTTP_DEALLOCATED) {
+ uip_abort();
+ } else if(hs->poll++ >= 100) {
+ uip_abort();
+ dealloc_state(hs);
+ }
+ }
+ return;
+ }
+
+
+ if(uip_newdata() && hs->state == HTTP_NOGET) {
+ hs->poll = 0;
+ /* This is the first data we receive, and it should contain a
+ GET. */
+
+ /* Check for GET. */
+ if(uip_appdata[0] != ISO_G ||
+ uip_appdata[1] != ISO_E ||
+ uip_appdata[2] != ISO_T ||
+ uip_appdata[3] != ISO_space) {
+ /* If it isn't a GET, we abort the connection. */
+ uip_abort();
+ dealloc_state(hs);
+ return;
+ }
+
+ /* Find the file we are looking for. */
+ for(i = 4; i < 40; ++i) {
+ if(uip_appdata[i] == ISO_space ||
+ uip_appdata[i] == ISO_cr ||
+ uip_appdata[i] == ISO_nl) {
+ uip_appdata[i] = 0;
+ break;
+ }
+ }
+
+ PRINT("request for file ");
+ PRINTLN(&uip_appdata[4]);
+ webserver_log_file(uip_conn->ripaddr, &uip_appdata[4]);
+ /* Check for a request for "/". */
+ if(uip_appdata[4] == ISO_slash &&
+ uip_appdata[5] == 0) {
+ memcpy_P(tmp, file_index_html.name, sizeof(tmp));
+ httpd_fs_open((const char *)tmp, &fsfile);
+ } else {
+ if(!httpd_fs_open((const char *)&uip_appdata[4], &fsfile)) {
+ PRINTLN("couldn't open file");
+ memcpy_P(tmp, file_404_html.name, sizeof(tmp));
+ httpd_fs_open((const char *)tmp, &fsfile);
+ }
+ }
+ httpd_fs_inc();
+
+ if(uip_appdata[4] == ISO_slash &&
+ uip_appdata[5] == ISO_c &&
+ uip_appdata[6] == ISO_g &&
+ uip_appdata[7] == ISO_i &&
+ uip_appdata[8] == ISO_slash) {
+ /* If the request is for a file that starts with "/cgi/", we
+ prepare for invoking a script. */
+ hs->script = fsfile.data;
+ next_scriptstate();
+ } else {
+ hs->script = NULL;
+ /* The web server is now no longer in the HTTP_NOGET state, but
+ in the HTTP_FILE state since is has now got the GET from
+ the client and will start transmitting the file. */
+ hs->state = HTTP_FILE;
+
+ /* Point the file pointers in the connection state to point to
+ the first byte of the file. */
+ hs->dataptr = fsfile.data;
+ hs->count = fsfile.len;
+ }
+ }
+
+
+ if(hs->state != HTTP_FUNC) {
+ /* Check if the client (remote end) has acknowledged any data that
+ we've previously sent. If so, we move the file pointer further
+ into the file and send back more data. If we are out of data to
+ send, we close the connection. */
+ if(uip_acked()) {
+ hs->poll = 0;
+ if(hs->count >= uip_mss()) {
+ hs->count -= uip_mss();
+ hs->dataptr += uip_mss();
+ } else {
+ hs->count = 0;
+ }
+
+ if(hs->count == 0) {
+ if(hs->script != NULL) {
+ next_scriptline();
+ next_scriptstate();
+ } else {
+ uip_close();
+ dealloc_state(hs);
+ }
+ }
+ }
+ }
+
+ if(hs->state == HTTP_FUNC) {
+ /* Call the CGI function. */
+ memcpy_P(&c, &hs->script[2], 1);
+ if(httpd_cgitab[c - ISO_a]()) {
+ /* If the function returns non-zero, we jump to the next line
+ in the script. */
+ next_scriptline();
+ next_scriptstate();
+ }
+ }
+
+ if(hs->state != HTTP_FUNC && !uip_poll()) {
+ hs->poll = 0;
+ /* Send a piece of data, but not more than the MSS of the
+ connection. */
+ memcpy_P(uip_appdata, hs->dataptr, uip_mss());
+ uip_send(uip_appdata,
+ hs->count > uip_mss()? uip_mss(): hs->count);
+ }
+
+ /* Finally, return to uIP. Our outgoing packet will soon be on its
+ way... */
+}
+/*-----------------------------------------------------------------------------------*/
+/* next_scriptline():
+ *
+ * Reads the script until it finds a newline. */
+static void
+next_scriptline(void)
+{
+ char c;
+ /* Loop until we find a newline character. */
+ do {
+ ++(hs->script);
+ memcpy_P(&c, hs->script, 1);
+ } while(c != ISO_nl);
+
+ /* Eat up the newline as well. */
+ ++(hs->script);
+}
+/*-----------------------------------------------------------------------------------*/
+/* next_sciptstate:
+ *
+ * Reads one line of script and decides what to do next.
+ */
+static void
+next_scriptstate(void)
+{
+ struct httpd_fs_file fsfile;
+ u8_t i;
+ char c;
+
+ again:
+ memcpy_P(&c, hs->script, 1);
+ switch(c) {
+ case ISO_t:
+ /* Send a text string. */
+ hs->state = HTTP_TEXT;
+ hs->dataptr = hs->script + 2;
+
+ /* Calculate length of string. */
+ i = 0;
+ do {
+ memcpy_P(&c, &hs->dataptr[i], 1);
+ ++i;
+ } while(c != ISO_nl);
+ hs->count = i;
+ break;
+ case ISO_c:
+ /* Call a function. */
+ hs->state = HTTP_FUNC;
+ hs->dataptr = NULL;
+ hs->count = 0;
+ /* uip_reset_acked();*/
+ uip_flags &= ~UIP_ACKDATA;
+ break;
+ case ISO_i:
+ /* Include a file. */
+ hs->state = HTTP_FILE;
+ memcpy_P(tmp, &hs->script[2], sizeof(tmp));
+ if(!httpd_fs_open(tmp, &fsfile)) {
+ uip_abort();
+ dealloc_state(hs);
+ }
+ hs->dataptr = fsfile.data;
+ hs->count = fsfile.len;
+ break;
+ case ISO_hash:
+ /* Comment line. */
+ next_scriptline();
+ goto again;
+ break;
+ case ISO_period:
+ /* End of script. */
+ hs->state = HTTP_END;
+ uip_close();
+ dealloc_state(hs);
+ break;
+ default:
+ uip_abort();
+ dealloc_state(hs);
+ break;
+ }
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-avr/apps/httpd.h b/contiki-avr/apps/httpd.h
new file mode 100644
index 0000000..9f4c94f
--- /dev/null
+++ b/contiki-avr/apps/httpd.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2001, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Adam Dunkels.
+ * 4. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack.
+ *
+ * $Id: httpd.h,v 1.2 2004/08/09 22:25:19 adamdunkels Exp $
+ *
+ */
+
+#ifndef __HTTPD_H__
+#define __HTTPD_H__
+
+#include "contiki.h"
+#include <avr/pgmspace.h>
+
+void httpd_init(void);
+void httpd_appcall(void *state);
+
+struct httpd_state {
+ u8_t state;
+ u16_t count;
+ u8_t poll;
+ prog_char *dataptr;
+ prog_char *script;
+};
+
+extern struct httpd_state *hs;
+#endif /* __HTTPD_H__ */
diff --git a/contiki-avr/apps/makefsdata b/contiki-avr/apps/makefsdata
new file mode 100755
index 0000000..eee8989
--- /dev/null
+++ b/contiki-avr/apps/makefsdata
@@ -0,0 +1,92 @@
+#!/usr/bin/perl
+
+open(OUTPUT, "> httpd-fsdata.c");
+
+chdir("httpd-fs");
+open(FILES, "find . -type f |");
+
+
+while($file = <FILES>) {
+
+ # Do not include files in CVS directories nor backup files.
+ if($file =~ /(CVS|~)/) {
+ next;
+ }
+
+ chop($file);
+
+ open(HEADER, "> /tmp/header") || die $!;
+ print(HEADER "HTTP/1.0 200 OK\r\n");
+ print(HEADER "Server: Contiki/pre-1.1 (http://dunkels.com/adam/contiki/)\r\n");
+ if($file =~ /\.html$/) {
+ print(HEADER "Content-type: text/html\r\n");
+ } elsif($file =~ /\.gif$/) {
+ print(HEADER "Content-type: image/gif\r\n");
+ } elsif($file =~ /\.png$/) {
+ print(HEADER "Content-type: image/png\r\n");
+ } elsif($file =~ /\.jpg$/) {
+ print(HEADER "Content-type: image/jpeg\r\n");
+ } elsif($file =~ /\.css$/) {
+ print(HEADER "Content-type: text/css\r\n");
+ } else {
+ print(HEADER "Content-type: text/plain\r\n");
+ }
+ print(HEADER "\r\n");
+ close(HEADER);
+
+ unless($file =~ /\.plain$/ || $file =~ /cgi/) {
+ system("cat /tmp/header $file > /tmp/file");
+ } else {
+ system("cp $file /tmp/file");
+ }
+
+ open(FILE, "/tmp/file");
+ unlink("/tmp/file");
+ unlink("/tmp/header");
+
+ $file =~ s/\.//;
+ $fvar = $file;
+ $fvar =~ s-/-_-g;
+ $fvar =~ s-\.-_-g;
+ print(OUTPUT "static prog_char data".$fvar."[] = {\n");
+ print(OUTPUT "\t/* $file */\n\t");
+ for($j = 0; $j < length($file); $j++) {
+ printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1)));
+ }
+ printf(OUTPUT "0,\n");
+
+
+ $i = 0;
+ while(read(FILE, $data, 1)) {
+ if($i == 0) {
+ print(OUTPUT "\t");
+ }
+ printf(OUTPUT "%#02x, ", unpack("C", $data));
+ $i++;
+ if($i == 10) {
+ print(OUTPUT "\n");
+ $i = 0;
+ }
+ }
+ print(OUTPUT "};\n\n");
+ close(FILE);
+ push(@fvars, $fvar);
+ push(@files, $file);
+}
+
+for($i = 0; $i < @fvars; $i++) {
+ $file = $files[$i];
+ $fvar = $fvars[$i];
+
+ if($i == 0) {
+ $prevfile = "NULL";
+ } else {
+ $prevfile = "file" . $fvars[$i - 1];
+ }
+ print(OUTPUT "struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, ");
+ print(OUTPUT "data$fvar + ". (length($file) + 1) .", ");
+ print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n");
+}
+
+print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n");
+print(OUTPUT "#define HTTPD_FS_NUMFILES $i");
diff --git a/contiki-avr/apps/makestrings b/contiki-avr/apps/makestrings
new file mode 100755
index 0000000..e6e8470
--- /dev/null
+++ b/contiki-avr/apps/makestrings
@@ -0,0 +1,39 @@
+#!/usr/bin/perl
+
+
+sub stringify {
+ my $name = shift(@_);
+ open(OUTPUTC, "> $name.c");
+ open(OUTPUTH, "> $name.h");
+
+ open(FILE, "$name");
+
+ while(<FILE>) {
+ if(/(.+) "(.+)"/) {
+ $var = $1;
+ $data = $2;
+
+ $datan = $data;
+ $datan =~ s/\\r/\r/g;
+ $datan =~ s/\\n/\n/g;
+ $datan =~ s/\\0/\0/g;
+
+ printf(OUTPUTC "char $var\[%d] = \n", length($datan) + 1);
+ printf(OUTPUTC "/* \"$data\" */\n");
+ printf(OUTPUTC "{");
+ for($j = 0; $j < length($datan); $j++) {
+ printf(OUTPUTC "%#02x, ", unpack("C", substr($datan, $j, 1)));
+ }
+ printf(OUTPUTC "};\n");
+
+ printf(OUTPUTH "extern char $var\[%d];\n", length($datan) + 1);
+
+ }
+ }
+ close(OUTPUTC);
+ close(OUTPUTH);
+}
+stringify("http-user-agent-string");
+
+exit 0;
+
diff --git a/contiki-avr/apps/shell.c b/contiki-avr/apps/shell.c
new file mode 100644
index 0000000..8869650
--- /dev/null
+++ b/contiki-avr/apps/shell.c
@@ -0,0 +1,216 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the Contiki desktop OS.
+ *
+ * $Id: shell.c,v 1.1 2004/07/04 20:17:38 adamdunkels Exp $
+ *
+ */
+
+#include "program-handler.h"
+#include "loader.h"
+#include "uip.h"
+#include "uip_arp.h"
+#include "resolv.h"
+
+#include "shell.h"
+
+#include <string.h>
+
+
+struct ptentry {
+ char c;
+ void (* pfunc)(char *str);
+};
+
+extern char *shell_prompt_text;
+
+/*-----------------------------------------------------------------------------------*/
+static void
+parse(register char *str, struct ptentry *t)
+{
+ register struct ptentry *p;
+ char *sstr;
+
+ sstr = str;
+
+ /* Loop over the parse table entries in t in order to find one that
+ matches the first character in str. */
+ for(p = t; p->c != 0; ++p) {
+ if(*str == p->c) {
+ /* Skip rest of the characters up to the first space. */
+ while(*str != ' ') {
+ ++str;
+ }
+
+ /* Skip all spaces.*/
+ while(*str == ' ') {
+ ++str;
+ }
+
+ /* Call parse table entry function and return. */
+ p->pfunc(str);
+ return;
+ }
+ }
+
+ /* Did not find matching entry in parse table. We just call the
+ default handler supplied by the caller and return. */
+ p->pfunc(str);
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+inttostr(register char *str, unsigned int i)
+{
+ str[0] = '0' + i / 100;
+ if(str[0] == '0') {
+ str[0] = ' ';
+ }
+ str[1] = '0' + (i / 10) % 10;
+ if(str[1] == '0') {
+ str[1] = ' ';
+ }
+ str[2] = '0' + i % 10;
+ str[3] = ' ';
+ str[4] = 0;
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+processes(char *str)
+{
+ static char idstr[5];
+ struct ek_proc *p;
+
+ shell_output("Processes:", "");
+ /* Step through each possible process ID and see if there is a
+ matching process. */
+ for(p = EK_PROCS(); p != NULL; p = p->next) {
+ inttostr(idstr, p->id);
+ shell_output(idstr, p->name);
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+static char *
+nullterminate(char *str)
+{
+ char *nt;
+
+ /* Nullterminate string. Start with finding newline character. */
+ for(nt = str; *nt != '\r' &&
+ *nt != '\n'; ++nt);
+
+ /* Replace newline with a null char. */
+ *nt = 0;
+
+ /* Remove trailing spaces. */
+ while(nt > str && *(nt - 1) == ' ') {
+ *(nt - 1) = 0;
+ --nt;
+ }
+
+ /* Return pointer to null char. */
+ return nt;
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+killproc(char *str)
+{
+ char procnum, j, c;
+ char procstr[5];
+
+ nullterminate(str);
+
+ procnum = 0;
+
+ for(j = 0; j < 4; ++j) {
+ c = str[(int)j];
+ if(c >= '0' && c <= '9') {
+ procnum = procnum * 10 + (str[(int)j] - '0');
+ } else {
+ break;
+ }
+ }
+ if(procnum != 0) {
+ inttostr(procstr, procnum);
+ shell_output("Killing process ", procstr);
+ ek_post(procnum, EK_EVENT_REQUEST_EXIT, NULL);
+ } else {
+ shell_output("Could not parse process number", "");
+ }
+
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+help(char *str)
+{
+ shell_output("Available commands:", "");
+ shell_output("ps - show processes", "");
+ shell_output("kill - kill process", "");
+ shell_output("quit - quit shell", "");
+ shell_output("? - show this help", "");
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+none(char *str)
+{
+}
+/*-----------------------------------------------------------------------------------*/
+static struct ptentry configparsetab[] =
+ {{'k', killproc},
+ {'p', processes},
+ {'q', shell_quit},
+ {'?', help},
+
+ /* Default action */
+ {0, none}};
+/*-----------------------------------------------------------------------------------*/
+void
+shell_start(void)
+{
+ shell_output("Contiki command shell", "");
+ shell_output("Type '?' for help", "");
+ shell_prompt(shell_prompt_text);
+}
+/*-----------------------------------------------------------------------------------*/
+void
+shell_input(char *cmd)
+{
+ parse(cmd, configparsetab);
+ shell_prompt(shell_prompt_text);
+}
+/*-----------------------------------------------------------------------------------*/
+void
+shell_idle(void)
+{
+}
+/*-----------------------------------------------------------------------------------*/
+void
+shell_init(void)
+{
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-avr/apps/webclient.c b/contiki-avr/apps/webclient.c
new file mode 100644
index 0000000..a6cd445
--- /dev/null
+++ b/contiki-avr/apps/webclient.c
@@ -0,0 +1,456 @@
+/*
+ * Copyright (c) 2002, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the "contiki" web browser.
+ *
+ * $Id: webclient.c,v 1.5 2004/08/09 22:25:36 adamdunkels Exp $
+ *
+ */
+
+#include "ek.h"
+#include "tcpip.h"
+#include "uip.h"
+#include "webclient.h"
+#include "resolv.h"
+#include "uiplib.h"
+
+#include "www-conf.h"
+
+#include <string.h>
+
+#define WEBCLIENT_TIMEOUT 100
+
+#define WEBCLIENT_STATE_STATUSLINE 0
+#define WEBCLIENT_STATE_HEADERS 1
+#define WEBCLIENT_STATE_DATA 2
+#define WEBCLIENT_STATE_CLOSE 3
+
+#define HTTPFLAG_NONE 0
+#define HTTPFLAG_OK 1
+#define HTTPFLAG_MOVED 2
+#define HTTPFLAG_ERROR 3
+
+
+#define ISO_nl 0x0a
+#define ISO_cr 0x0d
+#define ISO_space 0x20
+
+struct webclient_state {
+ u8_t timer;
+ u8_t state;
+ u8_t httpflag;
+
+ u16_t port;
+ char host[40];
+ char file[WWW_CONF_MAX_URLLEN];
+ u16_t getrequestptr;
+ u16_t getrequestleft;
+
+ char httpheaderline[200];
+ u16_t httpheaderlineptr;
+
+ char mimetype[32];
+};
+
+static struct webclient_state s;
+
+/*-----------------------------------------------------------------------------------*/
+char *
+webclient_mimetype(void)
+{
+ return s.mimetype;
+}
+/*-----------------------------------------------------------------------------------*/
+char *
+webclient_filename(void)
+{
+ return s.file;
+}
+/*-----------------------------------------------------------------------------------*/
+char *
+webclient_hostname(void)
+{
+ return s.host;
+}
+/*-----------------------------------------------------------------------------------*/
+unsigned short
+webclient_port(void)
+{
+ return s.port;
+}
+/*-----------------------------------------------------------------------------------*/
+void
+webclient_init(void)
+{
+
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+init_connection(void)
+{
+ s.state = WEBCLIENT_STATE_STATUSLINE;
+
+ s.getrequestleft = sizeof(http_get) - 1 + 1 +
+ sizeof(http_10) - 1 +
+ sizeof(http_crnl) - 1 +
+ sizeof(http_host) - 1 +
+ sizeof(http_crnl) - 1 +
+ strlen(http_user_agent_fields) +
+ strlen(s.file) + strlen(s.host);
+ s.getrequestptr = 0;
+
+ s.httpheaderlineptr = 0;
+}
+/*-----------------------------------------------------------------------------------*/
+void
+webclient_close(void)
+{
+ s.state = WEBCLIENT_STATE_CLOSE;
+}
+/*-----------------------------------------------------------------------------------*/
+unsigned char
+webclient_get(char *host, u16_t port, char *file)
+{
+ struct uip_conn *conn;
+ u16_t *ipaddr;
+ static u16_t addr[2];
+
+ /* First check if the host is an IP address. */
+ ipaddr = &addr[0];
+ if(uiplib_ipaddrconv(host, (unsigned char *)addr) == 0) {
+ ipaddr = resolv_lookup(host);
+
+ if(ipaddr == NULL) {
+ return 0;
+ }
+ }
+
+ /* XXX: here we check so that the server does not try to access any
+ hosts on the SICS networks. */
+ if(!(ipaddr[0] == HTONS((193 << 8) | 10) &&
+ ipaddr[1] == HTONS((64 << 8) | 99)) &&
+ (ipaddr[0] == HTONS((193 << 8) | 10) &&
+ ((htons(ipaddr[1]) >> 8) == 66 ||
+ (htons(ipaddr[1]) >> 8) == 67))) {
+ return 0;
+ } else {
+ conn = tcp_connect(ipaddr, htons(port), NULL);
+ }
+
+ if(conn == NULL) {
+ return 0;
+ }
+
+ s.port = port;
+ strncpy(s.file, file, sizeof(s.file));
+ strncpy(s.host, host, sizeof(s.host));
+
+ init_connection();
+ return 1;
+}
+/*-----------------------------------------------------------------------------------*/
+static unsigned char * CC_FASTCALL
+copy_string(unsigned char *dest,
+ const unsigned char *src, unsigned char len)
+{
+ return strcpy(dest, src) + len;
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+senddata(void)
+{
+ u16_t len;
+ char *getrequest;
+ char *cptr;
+
+ if(s.getrequestleft > 0) {
+ cptr = getrequest = (char *)uip_appdata;
+
+ cptr = copy_string(cptr, http_get, sizeof(http_get) - 1);
+ cptr = copy_string(cptr, s.file, strlen(s.file));
+ *cptr++ = ISO_space;
+ cptr = copy_string(cptr, http_10, sizeof(http_10) - 1);
+
+ cptr = copy_string(cptr, http_crnl, sizeof(http_crnl) - 1);
+
+ cptr = copy_string(cptr, http_host, sizeof(http_host) - 1);
+ cptr = copy_string(cptr, s.host, strlen(s.host));
+ cptr = copy_string(cptr, http_crnl, sizeof(http_crnl) - 1);
+
+ cptr = copy_string(cptr, http_user_agent_fields,
+ strlen(http_user_agent_fields));
+
+ len = s.getrequestleft > uip_mss()?
+ uip_mss():
+ s.getrequestleft;
+ uip_send(&(getrequest[s.getrequestptr]), len);
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+acked(void)
+{
+ u16_t len;
+
+ if(s.getrequestleft > 0) {
+ len = s.getrequestleft > uip_mss()?
+ uip_mss():
+ s.getrequestleft;
+ s.getrequestleft -= len;
+ s.getrequestptr += len;
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+static u16_t
+parse_statusline(u16_t len)
+{
+ char *cptr;
+
+ while(len > 0 && s.httpheaderlineptr < sizeof(s.httpheaderline)) {
+ s.httpheaderline[s.httpheaderlineptr] = *uip_appdata;
+ ++uip_appdata;
+ --len;
+ if(s.httpheaderline[s.httpheaderlineptr] == ISO_nl) {
+
+ if((strncmp(s.httpheaderline, http_10,
+ sizeof(http_10) - 1) == 0) ||
+ (strncmp(s.httpheaderline, http_11,
+ sizeof(http_11) - 1) == 0)) {
+ cptr = &(s.httpheaderline[9]);
+ s.httpflag = HTTPFLAG_NONE;
+ if(strncmp(cptr, http_200, sizeof(http_200) - 1) == 0) {
+ /* 200 OK */
+ s.httpflag = HTTPFLAG_OK;
+ } else if(strncmp(cptr, http_301, sizeof(http_301) - 1) == 0 ||
+ strncmp(cptr, http_302, sizeof(http_302) - 1) == 0) {
+ /* 301 Moved permanently or 302 Found. Location: header line
+ will contain thw new location. */
+ s.httpflag = HTTPFLAG_MOVED;
+ } else {
+ s.httpheaderline[s.httpheaderlineptr - 1] = 0;
+ }
+ } else {
+ uip_abort();
+ webclient_aborted();
+ return 0;
+ }
+
+ /* We're done parsing the status line, so we reset the pointer
+ and start parsing the HTTP headers.*/
+ s.httpheaderlineptr = 0;
+ s.state = WEBCLIENT_STATE_HEADERS;
+ break;
+ } else {
+ ++s.httpheaderlineptr;
+ }
+ }
+ return len;
+}
+/*-----------------------------------------------------------------------------------*/
+static char
+casecmp(char *str1, const char *str2, char len)
+{
+ static char c;
+
+ while(len > 0) {
+ c = *str1;
+ /* Force lower-case characters. */
+ if(c & 0x40) {
+ c |= 0x20;
+ }
+ if(*str2 != c) {
+ return 1;
+ }
+ ++str1;
+ ++str2;
+ --len;
+ }
+ return 0;
+}
+/*-----------------------------------------------------------------------------------*/
+static u16_t
+parse_headers(u16_t len)
+{
+ char *cptr;
+ static unsigned char i;
+
+ while(len > 0 && s.httpheaderlineptr < sizeof(s.httpheaderline)) {
+ s.httpheaderline[s.httpheaderlineptr] = *uip_appdata;
+ ++uip_appdata;
+ --len;
+ if(s.httpheaderline[s.httpheaderlineptr] == ISO_nl) {
+ /* We have an entire HTTP header line in s.httpheaderline, so
+ we parse it. */
+ if(s.httpheaderline[0] == ISO_cr) {
+ /* This was the last header line (i.e., and empty "\r\n"), so
+ we are done with the headers and proceed with the actual
+ data. */
+ s.state = WEBCLIENT_STATE_DATA;
+ return len;
+ }
+
+ s.httpheaderline[s.httpheaderlineptr - 1] = 0;
+ /* Check for specific HTTP header fields. */
+ if(casecmp(s.httpheaderline, http_content_type,
+ sizeof(http_content_type) - 1) == 0) {
+ /* Found Content-type field. */
+ cptr = strchr(s.httpheaderline, ';');
+ if(cptr != NULL) {
+ *cptr = 0;
+ }
+ strncpy(s.mimetype, s.httpheaderline +
+ sizeof(http_content_type) - 1, sizeof(s.mimetype));
+ } else if(casecmp(s.httpheaderline, http_location,
+ sizeof(http_location) - 1) == 0) {
+ cptr = s.httpheaderline +
+ sizeof(http_location) - 1;
+
+ if(strncmp(cptr, http_http, 7) == 0) {
+ cptr += 7;
+ for(i = 0; i < s.httpheaderlineptr - 7; ++i) {
+ if(*cptr == 0 ||
+ *cptr == '/' ||
+ *cptr == ' ' ||
+ *cptr == ':') {
+ s.host[i] = 0;
+ break;
+ }
+ s.host[i] = *cptr;
+ ++cptr;
+ }
+ }
+ strncpy(s.file, cptr, sizeof(s.file));
+ /* s.file[s.httpheaderlineptr - i] = 0;*/
+ }
+
+
+ /* We're done parsing, so we reset the pointer and start the
+ next line. */
+ s.httpheaderlineptr = 0;
+ } else {
+ ++s.httpheaderlineptr;
+ }
+ }
+ return len;
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+newdata(void)
+{
+ u16_t len;
+
+ len = uip_datalen();
+
+ if(s.state == WEBCLIENT_STATE_STATUSLINE) {
+ len = parse_statusline(len);
+ }
+
+ if(s.state == WEBCLIENT_STATE_HEADERS && len > 0) {
+ len = parse_headers(len);
+ }
+
+ if(len > 0 && s.state == WEBCLIENT_STATE_DATA &&
+ s.httpflag != HTTPFLAG_MOVED) {
+ webclient_datahandler((char *)uip_appdata, len);
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+void
+webclient_appcall(void *state)
+{
+ if(uip_connected()) {
+ s.timer = 0;
+ s.state = WEBCLIENT_STATE_STATUSLINE;
+ senddata();
+ webclient_connected();
+ tcp_markconn(uip_conn, &s);
+ return;
+ }
+
+ if(uip_timedout()) {
+ webclient_timedout();
+ }
+
+ if(state == NULL) {
+ uip_abort();
+ return;
+ }
+
+ if(s.state == WEBCLIENT_STATE_CLOSE) {
+ webclient_closed();
+ uip_abort();
+ return;
+ }
+
+ if(uip_aborted()) {
+ webclient_aborted();
+ }
+
+
+ if(uip_acked()) {
+ s.timer = 0;
+ acked();
+ }
+ if(uip_newdata()) {
+ s.timer = 0;
+ newdata();
+ }
+ if(uip_rexmit() ||
+ uip_newdata() ||
+ uip_acked()) {
+ senddata();
+ } else if(uip_poll()) {
+ ++s.timer;
+ if(s.timer == WEBCLIENT_TIMEOUT) {
+ webclient_timedout();
+ uip_abort();
+ return;
+ }
+ /* senddata();*/
+ }
+
+ if(uip_closed()) {
+ tcp_markconn(uip_conn, NULL);
+ if(s.httpflag != HTTPFLAG_MOVED) {
+ /* Send NULL data to signal EOF. */
+ webclient_datahandler(NULL, 0);
+ } else {
+ /* conn = uip_connect(uip_conn->ripaddr, s.port);
+ if(conn != NULL) {
+ dispatcher_markconn(conn, NULL);
+ init_connection();
+ }*/
+ if(resolv_lookup(s.host) == NULL) {
+ resolv_query(s.host);
+ }
+ webclient_get(s.host, s.port, s.file);
+ }
+ }
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-avr/apps/weblinks-dsc.c b/contiki-avr/apps/weblinks-dsc.c
new file mode 100644
index 0000000..9a99440
--- /dev/null
+++ b/contiki-avr/apps/weblinks-dsc.c
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the Contiki desktop environment
+ *
+ * $Id: weblinks-dsc.c,v 1.3 2005/03/18 00:50:50 oliverschmidt Exp $
+ *
+ */
+
+#include "dsc.h"
+
+extern struct ctk_icon weblinks_icon;
+/*-----------------------------------------------------------------------------------*/
+DSC(weblinks_dsc,
+ "Web links",
+ "weblinks.prg",
+ weblinks_init,
+ &weblinks_icon);
+/*-----------------------------------------------------------------------------------*/
+#if CTK_CONF_ICON_BITMAPS
+static unsigned char weblinksicon_bitmap[3*3*8] = {
+ 0x00, 0x79, 0x43, 0x73, 0x47, 0x77, 0x47, 0x6f,
+ 0x00, 0xfe, 0xfe, 0xfc, 0xfc, 0xfc, 0xf8, 0xfb,
+ 0x00, 0x16, 0x02, 0x00, 0x02, 0x00, 0x00, 0xc2,
+
+ 0x48, 0x4c, 0x5f, 0x5f, 0x1f, 0x3f, 0x3f, 0x03,
+ 0x79, 0xf0, 0xf0, 0xf0, 0xe0, 0xe0, 0xfe, 0xfc,
+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+
+ 0x77, 0x47, 0x70, 0x43, 0x79, 0x41, 0x7c, 0x00,
+ 0xfc, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xf7, 0x00,
+ 0x00, 0x80, 0x00, 0x00, 0x00, 0x84, 0xf0, 0x00
+};
+#endif /* CTK_CONF_ICON_BITMAPS */
+
+#if CTK_CONF_ICON_TEXTMAPS
+static char weblinksicon_textmap[9] = {
+ '+', '-', '+',
+ '|', 'o', '|',
+ '+', '-', '+'
+};
+#endif /* CTK_CONF_ICON_TEXTMAPS */
+
+#if CTK_CONF_ICONS
+static struct ctk_icon weblinks_icon =
+ {CTK_ICON("Web links", weblinksicon_bitmap, weblinksicon_textmap)};
+#endif /* CTK_CONF_ICONS */
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-avr/apps/weblinks-dsc.h b/contiki-avr/apps/weblinks-dsc.h
new file mode 100644
index 0000000..c3075a1
--- /dev/null
+++ b/contiki-avr/apps/weblinks-dsc.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the Contiki desktop environment
+ *
+ * $Id: weblinks-dsc.h,v 1.1 2003/07/04 10:54:51 adamdunkels Exp $
+ *
+ */
+#ifndef __WEBLINKS_DSC_H__
+#define __WEBLINKS_DSC_H__
+
+#include "dsc.h"
+
+DSC_HEADER(weblinks_dsc);
+
+#endif /* __WEBLINKS_DSC_H__ */
diff --git a/contiki-avr/apps/weblinks.c b/contiki-avr/apps/weblinks.c
new file mode 100644
index 0000000..d588295
--- /dev/null
+++ b/contiki-avr/apps/weblinks.c
@@ -0,0 +1,159 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the Contiki desktop environment
+ *
+ * $Id: weblinks.c,v 1.3 2004/07/04 20:17:38 adamdunkels Exp $
+ *
+ */
+
+
+#include "ctk.h"
+#include "ctk-draw.h"
+#include "ek.h"
+#include "loader.h"
+
+#include "program-handler.h"
+
+#include "www.h"
+
+#include <string.h>
+
+#define WIDTH 45
+#define HEIGHT 16
+
+#define LINK(name, descr, url) \
+ {CTK_HYPERLINK(1, 0, sizeof(name) - 1, name, url)}, \
+ {CTK_LABEL(1, 20, sizeof(descr) - 1, 1, descr)}
+struct link {
+ struct ctk_hyperlink hyperlink;
+ struct ctk_label description;
+};
+
+static struct link links[] =
+ {
+ {LINK("Contiki",
+ "The Contiki web site",
+ "http://dunkels.com/adam/contiki/index-text.html")},
+ {LINK("Contiki AVR",
+ "The server software",
+ "http://dunkels.com/adam/contiki/ports/avr-text.html")},
+ {LINK("Ethernut",
+ "The server hardware",
+ "http://www.ethernut.de/en/")},
+ {LINK("cc65",
+ "The 6502 C cross compiler",
+ "http://www.cc65.org/")},
+ {LINK("Google",
+ "Google",
+ "http://www.google.com/")},
+ {LINK("OSNews",
+ "Exploring the future of computing",
+ "http://www.osnews.com/")},
+ {LINK("Slashdot",
+ "News for nerds, stuff that matters",
+ "http://slashdot.org/")},
+ };
+
+#define NUMLINKS 7
+
+static struct ctk_window window;
+static struct ctk_label hintslabel1 =
+ {CTK_LABEL(1, 1, 39, 1, "Open the web browser in the background,")};
+static struct ctk_label hintslabel2 =
+ {CTK_LABEL(1, 2, 24, 1, "then click on the links.")};
+
+
+/*static DISPATCHER_SIGHANDLER(weblinks_sighandler, s, data);
+static struct dispatcher_proc p =
+ {DISPATCHER_PROC("Web links", NULL, weblinks_sighandler, NULL)};
+ static ek_id_t id;*/
+EK_EVENTHANDLER(eventhandler, ev, data);
+EK_PROCESS(p, "Web links", EK_PRIO_NORMAL,
+ eventhandler, NULL, NULL);
+static ek_id_t id = EK_ID_NONE;
+
+/*-----------------------------------------------------------------------------------*/
+LOADER_INIT_FUNC(weblinks_init, arg)
+{
+ arg_free(arg);
+
+ if(id == EK_ID_NONE) {
+ id = ek_start(&p);
+ } else {
+ ctk_window_open(&window);
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+quit(void)
+{
+ ctk_window_close(&window);
+ ek_exit();
+ id = EK_ID_NONE;
+ LOADER_UNLOAD();
+}
+/*-----------------------------------------------------------------------------------*/
+EK_EVENTHANDLER(eventhandler, ev, data)
+{
+ unsigned char y, i;
+ EK_EVENTHANDLER_ARGS(ev, data);
+
+ if(ev == EK_EVENT_INIT) {
+
+ ctk_window_new(&window, WIDTH, HEIGHT, "Web links");
+
+ CTK_WIDGET_ADD(&window, &hintslabel1);
+ CTK_WIDGET_ADD(&window, &hintslabel2);
+
+ y = 4;
+ for(i = 0; i < NUMLINKS; ++i) {
+
+ CTK_WIDGET_SET_XPOS(&(links[i].hyperlink), 1);
+ CTK_WIDGET_SET_YPOS(&(links[i].hyperlink), y);
+ CTK_WIDGET_ADD(&window, &(links[i].hyperlink));
+
+ CTK_WIDGET_SET_XPOS(&(links[i].description),
+ strlen(links[i].hyperlink.text) + 2);
+ CTK_WIDGET_SET_YPOS(&(links[i].description), y);
+ CTK_WIDGET_ADD(&window, &(links[i].description));
+
+ ++y;
+
+ }
+
+ ctk_window_open(&window);
+
+ } else if(ev == EK_EVENT_REQUEST_EXIT ||
+ (ev == ctk_signal_window_close &&
+ data == (ek_data_t)&window)) {
+ quit();
+ }
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-avr/apps/webserver.c b/contiki-avr/apps/webserver.c
new file mode 100644
index 0000000..a12efa0
--- /dev/null
+++ b/contiki-avr/apps/webserver.c
@@ -0,0 +1,123 @@
+/*
+ * Copyright (c) 2002, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the Contiki desktop environment for the C64.
+ *
+ * $Id: webserver.c,v 1.4 2004/09/13 23:21:36 adamdunkels Exp $
+ *
+ */
+
+
+#include "contiki.h"
+#include "ctk.h"
+#include "http-strings.h"
+
+#include "petsciiconv.h"
+
+#include "loader.h"
+
+#include "webserver.h"
+#include "httpd.h"
+
+#include <string.h>
+#include <stdio.h>
+
+/* The main window. */
+static struct ctk_window mainwindow;
+
+static struct ctk_label message =
+ {CTK_LABEL(0, 0, 15, 1, "Latest requests")};
+
+
+EK_EVENTHANDLER(eventhandler, ev, data);
+EK_PROCESS(p, "Web server", EK_PRIO_NORMAL,
+ eventhandler, NULL, NULL);
+static ek_id_t id = EK_ID_NONE;
+
+
+#define LOG_WIDTH 30
+#define LOG_HEIGHT 20
+static char log[LOG_WIDTH*LOG_HEIGHT];
+
+static struct ctk_label loglabel =
+{CTK_LABEL(0, 1, LOG_WIDTH, LOG_HEIGHT, log)};
+/*-----------------------------------------------------------------------------------*/
+LOADER_INIT_FUNC(webserver_init, arg)
+{
+ arg_free(arg);
+ if(id == EK_ID_NONE) {
+ id = ek_start(&p);
+ } else {
+ ctk_window_open(&mainwindow);
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+EK_EVENTHANDLER(eventhandler, ev, data)
+{
+ if(ev == EK_EVENT_INIT) {
+ ctk_window_new(&mainwindow, LOG_WIDTH, LOG_HEIGHT+1, "Web server");
+
+
+ CTK_WIDGET_ADD(&mainwindow, &message);
+ CTK_WIDGET_ADD(&mainwindow, &loglabel);
+
+ /* Attach listeners to signals. */
+ /* dispatcher_listen(ctk_signal_button_activate);*/
+
+ httpd_init();
+
+ ctk_window_open(&mainwindow);
+ } else if(ev == tcpip_event) {
+ httpd_appcall(data);
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+void
+webserver_log_file(u16_t *requester, char *file)
+{
+ int size;
+
+ /* Scroll previous entries upwards */
+ memcpy(log, &log[LOG_WIDTH], LOG_WIDTH * (LOG_HEIGHT - 1));
+
+ /* Print out IP address of requesting host. */
+ size = sprintf(&log[LOG_WIDTH * (LOG_HEIGHT - 1)],
+ "%d.%d.%d.%d: ",
+ htons(requester[0]) >> 8,
+ htons(requester[0]) & 0xff,
+ htons(requester[1]) >> 8,
+ htons(requester[1]) & 0xff);
+
+ /* Copy filename into last line. */
+ strncpy(&log[LOG_WIDTH * (LOG_HEIGHT - 1) + size], file, LOG_WIDTH - size);
+
+ /* Update log display. */
+ CTK_WIDGET_REDRAW(&loglabel);
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-avr/apps/webserver.h b/contiki-avr/apps/webserver.h
new file mode 100644
index 0000000..3ef6c22
--- /dev/null
+++ b/contiki-avr/apps/webserver.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2002, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * 3. All advertising materials mentioning features or use of this
+ * software must display the following acknowledgement:
+ * This product includes software developed by Adam Dunkels.
+ * 4. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the Contiki desktop environment for the C64.
+ *
+ * $Id: webserver.h,v 1.2 2003/08/25 12:42:41 adamdunkels Exp $
+ *
+ */
+#ifndef __WEBSERVER_H__
+#define __WEBSERVER_H__
+
+void webserver_init(char *arg);
+
+void webserver_log_file(u16_t *requester, char *filename);
+
+#endif /* __WEBSERVER_H__ */
diff --git a/contiki-avr/conf/cc-conf.h b/contiki-avr/conf/cc-conf.h
new file mode 100644
index 0000000..089a09b
--- /dev/null
+++ b/contiki-avr/conf/cc-conf.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * 3. All advertising materials mentioning features or use of this
+ * software must display the following acknowledgement:
+ * This product includes software developed by Adam Dunkels.
+ * 4. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the Contiki desktop OS
+ *
+ * $Id: cc-conf.h,v 1.1 2003/07/04 10:54:52 adamdunkels Exp $
+ *
+ */
+#ifndef __CC_CONF_H__
+#define __CC_CONF_H__
+
+#define CC_CONF_REGISTER_ARGS 1
+#define CC_CONF_FUNCTION_POINTER_ARGS 1
+
+#endif /* __CC_CONF_H__ */
+
diff --git a/contiki-avr/conf/clock-conf.h b/contiki-avr/conf/clock-conf.h
new file mode 100644
index 0000000..0f054a6
--- /dev/null
+++ b/contiki-avr/conf/clock-conf.h
@@ -0,0 +1,15 @@
+#ifndef __CLOCK_CONF_H__
+#define __CLOCK_CONF_H__
+
+typedef unsigned short clock_time_t;
+#define CLOCK_CONF_SECOND 500
+
+void clock_delay(unsigned int us2);
+
+void clock_wait(int ms10);
+
+void clock_set_seconds(unsigned long s);
+unsigned long clock_seconds(void);
+
+
+#endif /* __CLOCK_CONF_H__ */
diff --git a/contiki-avr/conf/ctk-conf.h b/contiki-avr/conf/ctk-conf.h
new file mode 100644
index 0000000..508af2b
--- /dev/null
+++ b/contiki-avr/conf/ctk-conf.h
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2002, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * 3. All advertising materials mentioning features or use of this
+ * software must display the following acknowledgement:
+ * This product includes software developed by Adam Dunkels.
+ * 4. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the "ctk" console GUI toolkit for cc65
+ *
+ * $Id: ctk-conf.h,v 1.4 2004/08/09 22:29:44 adamdunkels Exp $
+ *
+ */
+
+#ifndef __CTK_CONF_H__
+#define __CTK_CONF_H__
+
+/*
+ * This file is used for setting various compile time settings for the
+ * CTK GUI toolkit.
+*/
+
+/* Defines which key that is to be used for activating the menus */
+#define CTK_CONF_MENU_KEY CH_F1
+
+/* Defines which key that is to be used for switching the frontmost
+ window. */
+#define CTK_CONF_WINDOWSWITCH_KEY CH_ESC
+
+/* Defines which key that is to be used for switching to the next
+ widget. */
+#define CTK_CONF_WIDGETDOWN_KEY CH_TAB
+
+/* Defines which key that is to be used for switching to the prevoius
+ widget. */
+#define CTK_CONF_WIDGETUP_KEY 1
+
+/* Toggles support for icons. */
+#define CTK_CONF_ICONS 1 /* 107 bytes */
+
+/* Toggles support for icon bitmaps. */
+#define CTK_CONF_ICON_BITMAPS 1
+
+/* Toggles support for icon textmaps. */
+#define CTK_CONF_ICON_TEXTMAPS 1
+
+/* Toggles support for movable windows. */
+#define CTK_CONF_WINDOWMOVE 1 /* 333 bytes */
+
+/* Toggles support for closable windows. */
+#define CTK_CONF_WINDOWCLOSE 1 /* 14 bytes */
+
+/* Toggles support for menus. */
+#define CTK_CONF_MENUS 1 /* 1384 bytes */
+
+/* Toggles mouse support (must have support functions in the
+architecture specific files to work). */
+#define CTK_CONF_MOUSE_SUPPORT 1
+
+/* Defines the default width of a menu. */
+#define CTK_CONF_MENUWIDTH 16
+/* The maximum number of menu items in each menu. */
+#define CTK_CONF_MAXMENUITEMS 10
+
+#endif /* __CTK_CONF_H__ */
diff --git a/contiki-avr/conf/ctk-term-conf.h b/contiki-avr/conf/ctk-term-conf.h
new file mode 100644
index 0000000..747e975
--- /dev/null
+++ b/contiki-avr/conf/ctk-term-conf.h
@@ -0,0 +1,20 @@
+#ifndef __CTK_TERM_CONF_H__
+#define __CTK_TERM_CONF_H__
+
+/* Maximum number of clients to the telnet server */
+#define CTK_TERM_CONF_MAX_TELNET_CLIENTS 3
+
+/* Telnet server port */
+#define CTK_TERM_CONF_TELNET_PORT 23
+
+/* Serial server output buffer size */
+#define CTK_TERM_CONF_SERIAL_BUFFER_SIZE 300
+
+/* Maximum number of clients to the terminal module.
+ Should be set to CTK_TERM_CONF_MAX_TELNET_CLIENTS or
+ CTK_TERM_CONF_MAX_TELNET_CLIENTS+1 if the serial server is used too
+*/
+#define CTK_TERM_CONF_MAX_CLIENTS (CTK_TERM_CONF_MAX_TELNET_CLIENTS+1)
+
+#endif /* __CTK_TERM_CONF_H__ */
+
diff --git a/contiki-avr/conf/ctk-vncserver-conf.h b/contiki-avr/conf/ctk-vncserver-conf.h
new file mode 100644
index 0000000..f495975
--- /dev/null
+++ b/contiki-avr/conf/ctk-vncserver-conf.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * 3. All advertising materials mentioning features or use of this
+ * software must display the following acknowledgement:
+ * This product includes software developed by Adam Dunkels.
+ * 4. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the Contiki desktop OS
+ *
+ * $Id: ctk-vncserver-conf.h,v 1.2 2004/07/04 20:17:38 adamdunkels Exp $
+ *
+ */
+#ifndef __CTK_VNCSERVER_CONF_H__
+#define __CTK_VNCSERVER_CONF_H__
+
+#define CTK_VNCSERVER_CONF_NUMCONNS 8
+
+#define CTK_VNCSERVER_CONF_MAX_ICONS 8
+
+#endif /* __CTK_VNCSERVER_CONF_H__ */
+
diff --git a/contiki-avr/conf/ek-conf.h b/contiki-avr/conf/ek-conf.h
new file mode 100644
index 0000000..93affa9
--- /dev/null
+++ b/contiki-avr/conf/ek-conf.h
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2002, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the Contiki operating system.
+ *
+ * $Id: ek-conf.h,v 1.2 2004/07/04 20:17:38 adamdunkels Exp $
+ *
+ */
+
+
+#ifndef __EK_CONF_H__
+#define __EK_CONF_H__
+
+/*#include <time.h>*/
+
+typedef void *ek_data_t;
+
+typedef unsigned char ek_event_t;
+typedef unsigned char ek_id_t;
+
+/* ek_ticks_t: should be defined to be the largest type that fits the
+ highest timeout value used by the system. For example, if all
+ timeouts are between 1 and 150, the ek_ticks_t can be typedef'd as
+ "unsigned char", but if the maximum timeout is over 256, "unsigned
+ short" is a better choise. */
+typedef unsigned short ek_ticks_t;
+
+/* ek_clock_t: should be defined to be the native clock ticks type
+ used by the underlying system. (Look for time_t or similar.) */
+typedef unsigned long ek_clock_t;
+
+typedef unsigned char ek_num_events_t;
+
+#define EK_CONF_MAXPROCS 16
+#define EK_CONF_NUMEVENTS 16
+
+
+#ifndef NULL
+#define NULL (void *)0
+#endif /* NULL */
+
+
+#endif /* __EK_CONF_H__ */
diff --git a/contiki-avr/conf/irc-conf.h b/contiki-avr/conf/irc-conf.h
new file mode 100644
index 0000000..c9c0e23
--- /dev/null
+++ b/contiki-avr/conf/irc-conf.h
@@ -0,0 +1,4 @@
+#ifndef __IRC_CONF_H__
+#define __IRC_CONF_H__
+
+#endif /* __IRC_CONF_H__ */
diff --git a/contiki-avr/conf/libconio-conf.h b/contiki-avr/conf/libconio-conf.h
new file mode 100644
index 0000000..427fb27
--- /dev/null
+++ b/contiki-avr/conf/libconio-conf.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * 3. All advertising materials mentioning features or use of this
+ * software must display the following acknowledgement:
+ * This product includes software developed by Adam Dunkels.
+ * 4. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the Contiki desktop OS
+ *
+ * $Id: libconio-conf.h,v 1.1 2003/07/04 10:54:52 adamdunkels Exp $
+ *
+ */
+#ifndef __LIBCONIO_CONF_H__
+#define __LIBCONIO_CONF_H__
+
+#define LIBCONIO_CONF_SCREEN_WIDTH 70
+#define LIBCONIO_CONF_SCREEN_HEIGHT 40
+
+#endif /* __LIBCONIO_CONF_H__ */
+
diff --git a/contiki-avr/conf/log-conf.h b/contiki-avr/conf/log-conf.h
new file mode 100644
index 0000000..9ff4810
--- /dev/null
+++ b/contiki-avr/conf/log-conf.h
@@ -0,0 +1,6 @@
+#ifndef __LOG_CONF_H__
+#define __LOG_CONF_H__
+
+#define LOG_CONF_ENABLED 0
+
+#endif /* __LOG_CONF__H__ */
diff --git a/contiki-avr/conf/program-handler-conf.h b/contiki-avr/conf/program-handler-conf.h
new file mode 100644
index 0000000..1f9c743
--- /dev/null
+++ b/contiki-avr/conf/program-handler-conf.h
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2004, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the Institute nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file is part of the Contiki operating system.
+ *
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ * $Id: program-handler-conf.h,v 1.1 2005/02/15 14:56:37 oliverschmidt Exp $
+ */
+#ifndef __PROGRAM_HANDLER_CONF_H__
+#define __PROGRAM_HANDLER_CONF_H__
+
+#define PROGRAM_HANDLER_CONF_MAX_NUMDSCS 10
+
+#endif /* __PROGRAM_HANDLER_CONF_H__ */
diff --git a/contiki-avr/conf/telnetd-conf.h b/contiki-avr/conf/telnetd-conf.h
new file mode 100644
index 0000000..6c0ba6f
--- /dev/null
+++ b/contiki-avr/conf/telnetd-conf.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the Contiki Destop OS
+ *
+ * $Id: telnetd-conf.h,v 1.2 2004/08/09 22:29:31 adamdunkels Exp $
+ *
+ */
+#ifndef __TELNETD_CONF_H__
+
+#define TELNETD_CONF_LINELEN 32
+#define TELNETD_CONF_NUMLINES 16
+
+#endif /* __TELNETD_CONF_H__ */
+
+
+
+
+
+
+
+
diff --git a/contiki-avr/conf/uip-conf.h b/contiki-avr/conf/uip-conf.h
new file mode 100644
index 0000000..26566ad
--- /dev/null
+++ b/contiki-avr/conf/uip-conf.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the Contiki Destop OS
+ *
+ * $Id: uip-conf.h,v 1.2 2004/08/09 22:28:01 adamdunkels Exp $
+ *
+ */
+#ifndef __UIP_CONF_H__
+
+#define UIP_CONF_MAX_CONNECTIONS 40
+#define UIP_CONF_MAX_LISTENPORTS 40
+#define UIP_CONF_BUFFER_SIZE 1500
+
+#define UIP_CONF_TCP_SPLIT 1
+
+#endif /* __UIP_CONF_H__ */
diff --git a/contiki-avr/conf/vnc-conf.h b/contiki-avr/conf/vnc-conf.h
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/contiki-avr/conf/vnc-conf.h
@@ -0,0 +1 @@
+
diff --git a/contiki-avr/conf/www-conf.h b/contiki-avr/conf/www-conf.h
new file mode 100644
index 0000000..38dc9c8
--- /dev/null
+++ b/contiki-avr/conf/www-conf.h
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2002, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * 3. All advertising materials mentioning features or use of this
+ * software must display the following acknowledgement:
+ * This product includes software developed by Adam Dunkels.
+ * 4. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the Contiki desktop environment
+ *
+ * $Id: www-conf.h,v 1.4 2004/08/09 22:28:40 adamdunkels Exp $
+ *
+ */
+#ifndef __WWW_CONF_H__
+#define __WWW_CONF_H__
+
+/* The size of the HTML viewing area. */
+#define WWW_CONF_WEBPAGE_WIDTH 46
+#define WWW_CONF_WEBPAGE_HEIGHT 25
+
+/* The size of the "Back" history. */
+#define WWW_CONF_HISTORY_SIZE 8
+
+/* Defines the maximum length of an URL */
+#define WWW_CONF_MAX_URLLEN 160
+
+/* The maxiumum number of widgets (i.e., hyperlinks, form elements) on
+ a page. */
+#define WWW_CONF_MAX_NUMPAGEWIDGETS 30
+
+/* Turns <center> support on or off; must be on for forms to work. */
+#define WWW_CONF_RENDERSTATE 1
+
+/* Toggles support for HTML forms. */
+#define WWW_CONF_FORMS 1
+
+/* Maximum lengths for various HTML form parameters. */
+#define WWW_CONF_MAX_FORMACTIONLEN 80
+#define WWW_CONF_MAX_FORMNAMELEN 40
+#define WWW_CONF_MAX_INPUTNAMELEN 40
+#define WWW_CONF_MAX_INPUTVALUELEN 40
+
+#define WWW_CONF_PAGEVIEW 1
+#endif /* __WWW_CONF_H__ */
diff --git a/contiki-avr/contiki-main.c b/contiki-avr/contiki-main.c
new file mode 100644
index 0000000..f1c81f9
--- /dev/null
+++ b/contiki-avr/contiki-main.c
@@ -0,0 +1,241 @@
+/*
+ * Copyright (c) 2002, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the Contiki desktop environment
+ *
+ * $Id: contiki-main.c,v 1.6 2004/09/13 23:23:16 adamdunkels Exp $
+ *
+ */
+
+#include "ctk.h"
+#include "ctk-draw.h"
+#include "ctk-vncserver.h"
+#include "ctk-termtelnet.h"
+#include "ek.h"
+
+#include "uiplib.h"
+#include "uip.h"
+#include "uip_arp.h"
+#include "rtl8019-drv.h"
+#include "resolv.h"
+
+#include "clock.h"
+
+#include "webserver.h"
+#include "program-handler.h"
+#include "about-dsc.h"
+#include "irc-dsc.h"
+#include "netconf-dsc.h"
+#include "processes-dsc.h"
+#include "calc-dsc.h"
+#include "www-dsc.h"
+#include "webserver-dsc.h"
+/*#include "directory-dsc.h"*/
+#include "weblinks-dsc.h"
+
+#include "telnetd-dsc.h"
+
+#include "debug.h"
+#include "uip.h"
+#include "uip_arp.h"
+#include "compiler.h"
+#include "rtl8019dev.h"
+
+
+#include "avr/pgmspace.h"
+
+
+static const struct uip_eth_addr ethaddr = {{0x00,0x06,0x98,0x01,0x02,0x29}};
+
+
+static u16_t addr[2];
+
+/*-----------------------------------------------------------------------------------*/
+static void setup_xram(void) __attribute__ ((naked)) \
+ __attribute__ ((section (".init1")));
+
+static void
+setup_xram(void)
+{
+ outp(BV(SRE) | BV(SRW), MCUCR);
+}
+/*-----------------------------------------------------------------------------------*/
+static unsigned short count;
+
+static void init_timer(void)
+{
+ /* timer overflows every 32.8ms (with 8MHz clock) */
+ /* timer0 prescale 1/1024 (5) */
+ outp(5, TCCR0);
+
+ /* interrupt on overflow */
+ sbi(TIMSK, TOIE0);
+
+ count = 0;
+}
+
+SIGNAL(SIG_OVERFLOW0)
+{
+ ++count;
+}
+
+clock_time_t
+clock_time(void)
+{
+ return count;
+}
+/*-----------------------------------------------------------------------------------*/
+int
+main(int argc, char **argv)
+{
+
+ /* Setup stack pointer so that it does not interfere with the rest
+ of the RAM. */
+ /* asm("ldi r28,lo8(0x00807fff)");
+ asm("ldi r29,hi8(0x00807fff)");
+ asm("out 0x3e, r29");
+ asm("out 0x3d, r28");*/
+
+ /* Fiddle with RS232 settings of the AVR: */
+ /* Enable transmit. */
+ UCSR0B = _BV(TXEN);
+ /* Set baud rate (23 =~ 38400) */
+ UBRR0H = 0;
+ UBRR0L = 23;
+ UDR0 = '\n';
+
+
+ outp(BV(SRE) | BV(SRW), MCUCR);
+
+
+ /* end RS232 fiddling. */
+
+ init_timer();
+ sei();
+
+ ek_init();
+
+ uip_init();
+ tcpip_init(NULL);
+
+ resolv_init(NULL);
+
+
+ debug_print8(1);
+
+
+ uip_setethaddr(ethaddr);
+
+
+
+#if 1
+ uip_ipaddr(addr, 193,10,67,152);
+ uip_sethostaddr(addr);
+
+ uip_ipaddr(addr, 193,10,64,1);
+ uip_setdraddr(addr);
+
+ uip_ipaddr(addr, 255,255,252,0);
+ uip_setnetmask(addr);
+
+ uip_ipaddr(addr, 193,10,66,195);
+ resolv_conf(addr);
+
+#else
+
+ uip_ipaddr(addr, 192,168,27,2);
+ uip_sethostaddr(addr);
+
+ uip_ipaddr(addr, 192,168,27,1);
+ uip_setdraddr(addr);
+
+ uip_ipaddr(addr, 255,255,255,0);
+ uip_setnetmask(addr);
+
+ uip_ipaddr(addr, 195,54,122,204);
+ resolv_conf(addr);
+#endif
+
+
+
+ ctk_init();
+
+ rtl8019_drv_init();
+
+ ctk_vncserver_init(NULL);
+ /* ctk_termtelnet_init(NULL);*/
+
+ program_handler_init();
+
+ webserver_init(NULL);
+
+ /* program_handler_add(&netconf_dsc, "Network config", 1);*/
+
+
+ /*program_handler_add(&irc_dsc, "IRC client", 1);*/
+
+
+
+ program_handler_add(&calc_dsc, "Calculator", 0);
+ program_handler_add(&weblinks_dsc, "Web links", 1);
+
+ program_handler_add(&www_dsc, "Web browser", 1);
+ program_handler_add(&webserver_dsc, "Web server", 1);
+ program_handler_add(&processes_dsc, "Processes", 1);
+ program_handler_add(&about_dsc, "About", 1);
+
+
+
+
+
+ debug_print8(64);
+
+ while(1) {
+ ek_run();
+ }
+
+
+ return 0;
+
+ argv = argv;
+ argc = argc;
+}
+/*-----------------------------------------------------------------------------------*/
+char *shell_prompt_text = "contiki-ethernut> ";
+
+unsigned char
+uip_fw_forward(void)
+{
+ return 0;
+}
+void
+uip_fw_periodic(void)
+{
+
+}
diff --git a/contiki-avr/ctk/ctk-arch.h b/contiki-avr/ctk/ctk-arch.h
new file mode 100644
index 0000000..5ec7759
--- /dev/null
+++ b/contiki-avr/ctk/ctk-arch.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2002, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * 3. All advertising materials mentioning features or use of this
+ * software must display the following acknowledgement:
+ * This product includes software developed by Adam Dunkels.
+ * 4. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the "ctk" console GUI toolkit for cc65
+ *
+ * $Id: ctk-arch.h,v 1.2 2004/06/06 06:36:27 adamdunkels Exp $
+ *
+ */
+#ifndef __CTK_ARCH_H__
+#define __CTK_ARCH_H__
+
+
+#include "ctk-vncarch.h"
+
+#define ctk_arch_isprint(x) isprint(x)
+
+#endif /* __CTK_ARCH_H__ */
diff --git a/contiki-avr/lib/lc.h b/contiki-avr/lib/lc.h
new file mode 100644
index 0000000..7231892
--- /dev/null
+++ b/contiki-avr/lib/lc.h
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2004, Swedish Institute of Computer Science.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the Institute nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file is part of the Contiki operating system.
+ *
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ * $Id: lc.h,v 1.1 2004/09/13 10:33:46 adamdunkels Exp $
+ */
+
+#ifndef __LC_H__
+#define __LC_H__
+
+typedef void * lc_t;
+
+#define LC_CONCAT2(s1, s2) s1##s2
+#define LC_CONCAT(s1, s2) LC_CONCAT2(s1, s2)
+
+#define LC_SET(s) \
+ do { \
+ LC_CONCAT(LC_LABEL, __LINE__): \
+ (s) = &&LC_CONCAT(LC_LABEL, __LINE__); \
+ } while(0)
+
+#define LC_RESUME(s) \
+ do { \
+ if(s != NULL) { \
+ goto *s; \
+ } \
+ } while(0)
+
+#define LC_END(s)
+
+#define LC_INIT(s) s = NULL
+
+#endif /* __LC_H__ */
diff --git a/contiki-avr/uip/compiler.h b/contiki-avr/uip/compiler.h
new file mode 100644
index 0000000..b1f4918
--- /dev/null
+++ b/contiki-avr/uip/compiler.h
@@ -0,0 +1,40 @@
+#ifndef __COMPILER_H__
+#define __COMPILER_H__
+
+#ifdef __IMAGECRAFT__
+
+
+// choose your AVR device here
+#include <iom161.h>
+
+#include <macros.h>
+
+#define outp(val, reg) (reg = val)
+#define inp(reg) (reg)
+
+#define cli() CLI()
+#define sei() SEI()
+#define cbi(reg, bit) (reg &= ~BIT(bit))
+#define sbi(reg, bit) (reg |= BIT(bit))
+
+#define SIGNAL(x) void x(void)
+
+#define nop() NOP()
+
+
+#else /* --- GCC --- */
+#ifndef __AVR_ATmega128__
+#define __AVR_ATmega128__
+#endif
+#include <avr/signal.h>
+#include <avr/interrupt.h>
+#include <avr/io.h>
+
+#define nop() asm volatile("nop\n\t"::);
+
+#endif /* Compiler Used */
+
+
+
+#endif /* __COMPILER_H__ */
+
diff --git a/contiki-avr/uip/debug.c b/contiki-avr/uip/debug.c
new file mode 100644
index 0000000..fdd25a3
--- /dev/null
+++ b/contiki-avr/uip/debug.c
@@ -0,0 +1,72 @@
+
+#include "compiler.h"
+#include "delay.h"
+
+#include "avr/pgmspace.h"
+
+/*-----------------------------------------------------------------------------------*/
+static void
+delay(void)
+{
+ unsigned char i;
+ for(i = 0; i < 1; ++i) {
+ Delay_10ms(1);
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+static char buffer[40];
+static prog_char hextab[] =
+ {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
+/*-----------------------------------------------------------------------------------*/
+static void
+print_buffer(unsigned char len)
+{
+ unsigned char i;
+
+ for(i = 0; i < len; ++i) {
+ delay();
+ UDR0 = buffer[i];
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+void
+debug_print8(unsigned char v)
+{
+ buffer[0] = v / 100 + '0';
+ buffer[1] = (v / 10) % 10 + '0';
+ buffer[2] = v % 10 + '0';
+ buffer[3] = ' ';
+ buffer[4] = PRG_RDB(hextab + (v >> 4));
+ buffer[5] = PRG_RDB(hextab + (v & 0x0f));
+ buffer[6] = '\n';
+ print_buffer(7);
+}
+/*-----------------------------------------------------------------------------------*/
+void
+debug_print16(unsigned short v)
+{
+ buffer[0] = v / 10000 + '0';
+ buffer[1] = (v / 1000) % 10 + '0';
+ buffer[2] = (v / 100) % 10 + '0';
+ buffer[3] = (v / 10) % 10 + '0';
+ buffer[4] = v % 10 + '0';
+ buffer[5] = ' ';
+ buffer[6] = PRG_RDB(hextab + ((v & 0xf000) >> 12));
+ buffer[7] = PRG_RDB(hextab + ((v & 0x0f00) >> 8));
+ buffer[8] = PRG_RDB(hextab + ((v & 0xf0) >> 4));
+ buffer[9] = PRG_RDB(hextab + (v & 0x0f));
+ buffer[10] = '\n';
+ print_buffer(11);
+}
+/*-----------------------------------------------------------------------------------*/
+void
+debug_print(prog_char *str)
+{
+ unsigned char i;
+
+ for(i = 0; PRG_RDB(str + i) != 0; ++i) {
+ buffer[i] = PRG_RDB(str + i);
+ }
+ print_buffer(i);
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-avr/uip/debug.h b/contiki-avr/uip/debug.h
new file mode 100644
index 0000000..ec38942
--- /dev/null
+++ b/contiki-avr/uip/debug.h
@@ -0,0 +1,20 @@
+#ifndef __DEBUG_H__
+#define __DEBUG_H__
+
+#if 0
+#define debug_print(x)
+#define debug_print8(x)
+
+#else
+
+#include "avr/pgmspace.h"
+
+void debug_print(char *str);
+
+void debug_print8(unsigned char v);
+void debug_print16(unsigned short v);
+#endif
+
+
+
+#endif /* __DEBUG_H__ */
diff --git a/contiki-avr/uip/delay.c b/contiki-avr/uip/delay.c
new file mode 100644
index 0000000..01cc3e4
--- /dev/null
+++ b/contiki-avr/uip/delay.c
@@ -0,0 +1,29 @@
+#include "delay.h"
+
+//----------------------------------------------------------------------------
+// Wait for a specific time in 100 uSec
+// (15 + t*( ((K_DELAY_100us-1)*6)+5 ))
+//----------------------------------------------------------------------------
+void Delay_100us(unsigned char t) {
+ unsigned int i;
+ if (t==0) return;
+ while (t--) for(i=0;i<K_DELAY_100us; i++);
+}
+//----------------------------------------------------------------------------
+// Wait for a specific time in 1 mSec
+// (15 + t*( ((K_DELAY_1ms-1)*6)+5 ))
+//----------------------------------------------------------------------------
+void Delay_1ms(unsigned char t) {
+ unsigned int i;
+ if (t==0) return;
+ while (t--) for(i=0;i<K_DELAY_1ms; i++);
+}
+//----------------------------------------------------------------------------
+// Wait for a specific time in 10 mSec
+// (15 + t*( ((K_DELAY_10ms-1)*6)+5 ))
+//----------------------------------------------------------------------------
+void Delay_10ms(unsigned char t) {
+ unsigned int i;
+ if (t==0) return;
+ while (t--) for(i=0;i<K_DELAY_10ms; i++);
+}
diff --git a/contiki-avr/uip/delay.h b/contiki-avr/uip/delay.h
new file mode 100644
index 0000000..6e44906
--- /dev/null
+++ b/contiki-avr/uip/delay.h
@@ -0,0 +1,9 @@
+#define F_CPU 15000000
+
+#define K_DELAY_100us F_CPU/61349
+#define K_DELAY_1ms F_CPU/6013
+#define K_DELAY_10ms F_CPU/600
+
+void Delay_100us(unsigned char t);
+void Delay_1ms(unsigned char t);
+void Delay_10ms(unsigned char t);
diff --git a/contiki-avr/uip/rtl8019-drv.c b/contiki-avr/uip/rtl8019-drv.c
new file mode 100644
index 0000000..b309db2
--- /dev/null
+++ b/contiki-avr/uip/rtl8019-drv.c
@@ -0,0 +1,114 @@
+/*-----------------------------------------------------------------------------------*/
+/*
+ * Copyright (c) 2001-2004, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack.
+ *
+ * $Id: rtl8019-drv.c,v 1.4 2004/08/09 22:23:29 adamdunkels Exp $
+ *
+ */
+
+#include "packet-service.h"
+
+#include "rtl8019dev.h"
+
+#include "uip_arp.h"
+
+static void output(u8_t *hdr, u16_t hdrlen, u8_t *data, u16_t datalen);
+
+static const struct packet_service_state state =
+ {
+ PACKET_SERVICE_VERSION,
+ output
+ };
+
+EK_EVENTHANDLER(eventhandler, ev, data);
+EK_POLLHANDLER(pollhandler);
+EK_PROCESS(proc, PACKET_SERVICE_NAME ": RTL8019as", EK_PRIO_HIGH,
+ eventhandler, pollhandler, (void *)&state);
+
+/*---------------------------------------------------------------------------*/
+LOADER_INIT_FUNC(rtl8019_drv_init, arg)
+{
+ arg_free(arg);
+ ek_service_start(PACKET_SERVICE_NAME, &proc);
+}
+/*---------------------------------------------------------------------------*/
+static void
+output(u8_t *hdr, u16_t hdrlen, u8_t *data, u16_t datalen)
+{
+ uip_arp_out();
+ RTL8019dev_send();
+}
+/*---------------------------------------------------------------------------*/
+EK_EVENTHANDLER(eventhandler, ev, data)
+{
+ switch(ev) {
+ case EK_EVENT_INIT:
+ case EK_EVENT_REPLACE:
+ RTL8019dev_init();
+ break;
+ case EK_EVENT_REQUEST_REPLACE:
+ ek_replace((struct ek_proc *)data, NULL);
+ LOADER_UNLOAD();
+ break;
+ case EK_EVENT_REQUEST_EXIT:
+ /* ek_exit();
+ LOADER_UNLOAD();*/
+ break;
+ default:
+ break;
+ }
+}
+/*---------------------------------------------------------------------------*/
+EK_POLLHANDLER(pollhandler)
+{
+#define BUF ((struct uip_eth_hdr *)&uip_buf[0])
+
+ /* Poll Ethernet device to see if there is a frame avaliable. */
+ uip_len = RTL8019dev_poll();
+ if(uip_len > 0) {
+ /* A frame was avaliable (and is now read into the uip_buf), so
+ we process it. */
+ if(BUF->type == HTONS(UIP_ETHTYPE_IP)) {
+ uip_arp_ipin();
+ uip_len -= sizeof(struct uip_eth_hdr);
+ tcpip_input();
+ } else if(BUF->type == HTONS(UIP_ETHTYPE_ARP)) {
+ uip_arp_arpin();
+ /* If the above function invocation resulted in data that
+ should be sent out on the network, the global variable
+ uip_len is set to a value > 0. */
+ if(uip_len > 0) {
+ RTL8019dev_send();
+ }
+ }
+ }
+
+}
+/*---------------------------------------------------------------------------*/
diff --git a/contiki-avr/uip/rtl8019-drv.h b/contiki-avr/uip/rtl8019-drv.h
new file mode 100644
index 0000000..7687098
--- /dev/null
+++ b/contiki-avr/uip/rtl8019-drv.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2001, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Adam Dunkels.
+ * 4. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack.
+ *
+ * $Id: rtl8019-drv.h,v 1.1 2003/07/04 10:54:52 adamdunkels Exp $
+ *
+ */
+#ifndef __RTL8019_DRV_H__
+#define __RTL8019_DRV_H__
+
+void rtl8019_drv_init(void);
+
+#endif /* __RTL8019_DRV_H__ */
diff --git a/contiki-avr/uip/rtl8019.c b/contiki-avr/uip/rtl8019.c
new file mode 100644
index 0000000..651efaa
--- /dev/null
+++ b/contiki-avr/uip/rtl8019.c
@@ -0,0 +1,931 @@
+#include "rtl8019.h"
+#include "delay.h"
+#include "debug.h"
+#include "avr/pgmspace.h"
+#include "rtlregs.h"
+
+
+/*****************************************************************************
+* Module Name: Realtek 8019AS Driver
+*
+* Created By: Louis Beaudoin (www.embedded-creations.com)
+*
+* Original Release: September 21, 2002
+*
+* Module Description:
+* Provides functions to initialize the Realtek 8019AS, and send and retreive
+* packets
+*
+* November 15, 2002 - Louis Beaudoin
+* processRTL8019Interrupt() - bit mask mistake fixed
+*
+* September 30, 2002 - Louis Beaudoin
+* Receive functions modified to handle errors encountered when receiving a
+* fast data stream. Functions now manually retreive data instead of
+* using the send packet command. Interface improved by checking for
+* overruns and data in the buffer internally.
+* Corrected the overrun function - overrun flag was not reset after overrun
+* Added support for the Imagecraft Compiler
+* Added support to communicate with the NIC using general I/O ports
+*
+*****************************************************************************/
+
+
+/*****************************************************************************
+* writeRTL( RTL_ADDRESS, RTL_DATA )
+* Args: 1. unsigned char RTL_ADDRESS - register offset of RTL register
+* 2. unsigned char RTL_DATA - data to write to register
+* Created By: Louis Beaudoin
+* Date: September 21, 2002
+* Description: Writes byte to RTL8019 register.
+*
+* Notes - If using the External SRAM Interface, performs a write to
+* address MEMORY_MAPPED_RTL8019_OFFSET + (RTL_ADDRESS<<8)
+* The address is sent in the non-multiplxed upper address port so
+* no latch is required.
+*
+* If using general I/O ports, the data port is left in the input
+* state with pullups enabled
+*
+*****************************************************************************/
+#if MEMORY_MAPPED_NIC == 1
+/*#define writeRTL(RTL_ADDRESS,RTL_DATA) do{ *(volatile unsigned char *) \
+ (MEMORY_MAPPED_RTL8019_OFFSET \
+ + (((unsigned char)(RTL_ADDRESS)) << 8)) = \
+ (unsigned char)(RTL_DATA); } while(0)*/
+#define writeRTL nic_write
+#else
+
+
+void writeRTL(unsigned char address, unsigned char data)
+{
+ // put the address and data in the port registers - data port is output
+ outp( address, RTL8019_ADDRESS_PORT );
+ outp( 0xFF, RTL8019_DATA_DDR );
+ outp( data, RTL8019_DATA_PORT );
+
+ // toggle write pin
+ RTL8019_CLEAR_WRITE;
+ RTL8019_SET_WRITE;
+
+ // set data port back to input with pullups enabled
+ outp( 0x00, RTL8019_DATA_DDR );
+ outp( 0xFF, RTL8019_DATA_PORT );
+}
+
+
+
+#endif
+
+/*****************************************************************************
+* readRTL(RTL_ADDRESS)
+* Args: unsigned char RTL_ADDRESS - register offset of RTL register
+* Created By: Louis Beaudoin
+* Date: September 21, 2002
+* Description: Reads byte from RTL8019 register
+*
+* Notes - If using the External SRAM Interface, performs a read from
+* address MEMORY_MAPPED_RTL8019_OFFSET + (RTL_ADDRESS<<8)
+* The address is sent in the non-multiplxed upper address port so
+* no latch is required.
+*
+* If using general I/O ports, the data port is assumed to already be
+* an input, and is left as an input port when done
+*
+*****************************************************************************/
+#if MEMORY_MAPPED_NIC == 1
+/*#define readRTL(RTL_ADDRESS) (*(volatile unsigned char *) \
+ (MEMORY_MAPPED_RTL8019_OFFSET \
+ + (((unsigned char)(RTL_ADDRESS)) << 8)) )*/
+#define readRTL nic_read
+#else
+
+unsigned char readRTL(unsigned char address)
+{
+ unsigned char byte;
+
+ // drive the read address
+ outp( address, RTL8019_ADDRESS_PORT );
+
+ //nop();
+
+ // assert read
+ RTL8019_CLEAR_READ;
+ nop();
+
+ // read in the data
+ byte = inp( RTL8019_DATA_PIN );
+
+ // negate read
+ RTL8019_SET_READ;
+
+ return byte;
+}
+
+#endif
+
+
+
+/*****************************************************************************
+* RTL8019setupPorts(void);
+*
+* Created By: Louis Beaudoin
+* Date: September 21, 2002
+* Description: Sets up the ports used for communication with the RTL8019 NIC
+* (data bus, address bus, read, write, and reset)
+*****************************************************************************/
+void RTL8019setupPorts(void)
+{
+volatile unsigned char *base = (unsigned char *)0x8300;
+
+#if MEMORY_MAPPED_NIC == 1
+ // enable external SRAM interface - no wait states
+ outp(inp(MCUCR) | (1<<SRE), MCUCR);
+
+#else
+
+ // make the address port output
+ outp( 0xFF, RTL8019_ADDRESS_DDR );
+
+ // make the data port input with pull-ups
+ outp( 0xFF, RTL8019_DATA_PORT );
+
+ // make the control port read and write pins outputs and asserted
+ //outp( inp(RTL8019_CONTROL_DDR) | (1<<RTL8019_CONTROL_READPIN) |
+ // (1<<RTL8019_CONTROL_WRITEPIN), RTL8019_CONTROL_DDR );
+ sbi( RTL8019_CONTROL_DDR, RTL8019_CONTROL_READPIN );
+ sbi( RTL8019_CONTROL_DDR, RTL8019_CONTROL_WRITEPIN );
+
+ //outp( inp(RTL8019_CONTROL_PORT) | (1<<RTL8019_CONTROL_READPIN) |
+ // (1<<RTL8019_CONTROL_WRITEPIN), RTL8019_CONTROL_PORT );
+ sbi( RTL8019_CONTROL_PORT, RTL8019_CONTROL_READPIN );
+ sbi( RTL8019_CONTROL_PORT, RTL8019_CONTROL_WRITEPIN );
+
+#endif
+
+ // enable output pin for Resetting the RTL8019
+ sbi( RTL8019_RESET_DDR, RTL8019_RESET_PIN );
+
+
+
+
+
+}
+
+
+
+/*****************************************************************************
+* HARD_RESET_RTL8019()
+*
+* Created By: Louis Beaudoin
+* Date: September 21, 2002
+* Description: Simply toggles the pin that resets the NIC
+*****************************************************************************/
+/*#define HARD_RESET_RTL8019() do{ sbi(RTL8019_RESET_PORT, RTL8019_RESET_PIN); \
+ Delay_10ms(1); \
+ cbi(RTL8019_RESET_PORT, RTL8019_RESET_PIN);} \
+ while(0)*/
+
+
+
+/*****************************************************************************
+* overrun(void);
+*
+* Created By: Louis Beaudoin
+* Date: September 21, 2002
+* Description: "Canned" receive buffer overrun function originally from
+* a National Semiconductor appnote
+* Notes: This function must be called before retreiving packets from
+* the NIC if there is a buffer overrun
+*****************************************************************************/
+void overrun(void);
+
+
+
+
+//******************************************************************
+//* REALTEK CONTROL REGISTER OFFSETS
+//* All offsets in Page 0 unless otherwise specified
+//* All functions accessing CR must leave CR in page 0 upon exit
+//******************************************************************
+#define CR 0x00
+#define PSTART 0x01
+#define PAR0 0x01 // Page 1
+#define CR9346 0x01 // Page 3
+#define PSTOP 0x02
+#define BNRY 0x03
+#define TSR 0x04
+#define TPSR 0x04
+#define TBCR0 0x05
+#define NCR 0x05
+#define TBCR1 0x06
+#define ISR 0x07
+#define CURR 0x07 // Page 1
+#define RSAR0 0x08
+#define CRDA0 0x08
+#define RSAR1 0x09
+#define CRDA1 0x09
+#define RBCR0 0x0A
+#define RBCR1 0x0B
+#define RSR 0x0C
+#define RCR 0x0C
+#define TCR 0x0D
+#define CNTR0 0x0D
+#define DCR 0x0E
+#define CNTR1 0x0E
+#define IMR 0x0F
+#define CNTR2 0x0F
+#define RDMAPORT 0x10
+#define RSTPORT 0x18
+
+
+/*****************************************************************************
+*
+* RTL ISR Register Bits
+*
+*****************************************************************************/
+#define ISR_RST 7
+#define ISR_OVW 4
+#define ISR_PRX 0
+#define ISR_RDC 6
+#define ISR_PTX 1
+
+
+/*****************************************************************************
+*
+* RTL Register Initialization Values
+*
+*****************************************************************************/
+// RCR : accept broadcast packets and packets destined to this MAC
+// drop short frames and receive errors
+#define RCR_INIT 0x04
+
+// TCR : default transmit operation - CRC is generated
+#define TCR_INIT 0x00
+
+// DCR : allows send packet to be used for packet retreival
+// FIFO threshold: 8-bits (works)
+// 8-bit transfer mode
+#define DCR_INIT 0x58
+
+// IMR : interrupt enabled for receive and overrun events
+#define IMR_INIT 0x11
+
+// buffer boundaries - transmit has 6 256-byte pages
+// receive has 26 256-byte pages
+// entire available packet buffer space is allocated
+#define TXSTART_INIT 0x40
+#define RXSTART_INIT 0x46
+#define RXSTOP_INIT 0x60
+
+
+
+void RTL8019beginPacketSend(unsigned int packetLength)
+{
+
+ volatile unsigned char *base = (unsigned char *)0x8300;
+ unsigned int sendPacketLength;
+ sendPacketLength = (packetLength>=ETHERNET_MIN_PACKET_LENGTH) ?
+ packetLength : ETHERNET_MIN_PACKET_LENGTH ;
+
+ //start the NIC
+ writeRTL(CR,0x22);
+
+ // still transmitting a packet - wait for it to finish
+ while( readRTL(CR) & 0x04 );
+
+ //load beginning page for transmit buffer
+ writeRTL(TPSR,TXSTART_INIT);
+
+ //set start address for remote DMA operation
+ writeRTL(RSAR0,0x00);
+ writeRTL(RSAR1,0x40);
+
+ //clear the packet stored interrupt
+ writeRTL(ISR,(1<<ISR_PTX));
+
+ //load data byte count for remote DMA
+ writeRTL(RBCR0, (unsigned char)(packetLength));
+ writeRTL(RBCR1, (unsigned char)(packetLength>>8));
+
+ writeRTL(TBCR0, (unsigned char)(sendPacketLength));
+ writeRTL(TBCR1, (unsigned char)((sendPacketLength)>>8));
+
+ //do remote write operation
+ writeRTL(CR,0x12);
+}
+
+
+
+void RTL8019sendPacketData(unsigned char * localBuffer, unsigned int length)
+{
+ unsigned int i;
+ volatile unsigned char *base = (unsigned char *)0x8300;
+ for(i=0;i<length;i++)
+ writeRTL(RDMAPORT, localBuffer[i]);
+}
+
+
+
+void RTL8019endPacketSend(void)
+{
+ volatile unsigned char *base = (unsigned char *)0x8300;
+ //send the contents of the transmit buffer onto the network
+ writeRTL(CR,0x24);
+
+ // clear the remote DMA interrupt
+ writeRTL(ISR, (1<<ISR_RDC));
+}
+
+
+
+
+// pointers to locations in the RTL8019 receive buffer
+static unsigned char nextPage;
+static unsigned int currentRetreiveAddress;
+
+// location of items in the RTL8019's page header
+#define enetpacketstatus 0x00
+#define nextblock_ptr 0x01
+#define enetpacketLenL 0x02
+#define enetpacketLenH 0x03
+
+
+
+unsigned int RTL8019beginPacketRetreive(void)
+{
+ volatile unsigned char *base = (unsigned char *)0x8300;
+ unsigned char i;
+ unsigned char bnry;
+
+ unsigned char pageheader[4];
+ unsigned int rxlen;
+
+ // check for and handle an overflow
+ processRTL8019Interrupt();
+
+ // read CURR from page 1
+ writeRTL(CR,0x62);
+ i = readRTL(CURR);
+
+ // return to page 0
+ writeRTL(CR,0x22);
+
+ // read the boundary register - pointing to the beginning of the packet
+ bnry = readRTL(BNRY) ;
+
+ /* debug_print(PSTR("bnry: "));
+ debug_print8(bnry);*/
+
+ /* debug_print(PSTR("RXSTOP_INIT: "));
+ debug_print8(RXSTOP_INIT);
+ debug_print(PSTR("RXSTART_INIT: "));
+ debug_print8(RXSTART_INIT);*/
+ // return if there is no packet in the buffer
+ if( bnry == i ) {
+ return 0;
+ }
+
+
+ // clear the packet received interrupt flag
+ writeRTL(ISR, (1<<ISR_PRX));
+
+
+ // the boundary pointer is invalid, reset the contents of the buffer and exit
+ if( (bnry >= RXSTOP_INIT) || (bnry < RXSTART_INIT) )
+ {
+ writeRTL(BNRY, RXSTART_INIT);
+ writeRTL(CR, 0x62);
+ writeRTL(CURR, RXSTART_INIT);
+ writeRTL(CR, 0x22);
+ return 0;
+ }
+
+ // initiate DMA to transfer the RTL8019 packet header
+ writeRTL(RBCR0, 4);
+ writeRTL(RBCR1, 0);
+ writeRTL(RSAR0, 0);
+ writeRTL(RSAR1, bnry);
+ writeRTL(CR, 0x0A);
+ /* debug_print(PSTR("Page header: "));*/
+
+ for(i=0;i<4;i++) {
+ pageheader[i] = readRTL(RDMAPORT);
+ /* debug_print8(pageheader[i]);*/
+ }
+
+ // end the DMA operation
+ writeRTL(CR, 0x22);
+ for(i = 0; i <= 20; i++) {
+ if(readRTL(ISR) & 1<<6) {
+ break;
+ }
+ }
+ writeRTL(ISR, 1<<6);
+
+
+
+ rxlen = (pageheader[enetpacketLenH]<<8) + pageheader[enetpacketLenL];
+ nextPage = pageheader[nextblock_ptr] ;
+
+ currentRetreiveAddress = (bnry<<8) + 4;
+
+ /* debug_print(PSTR("nextPage: "));
+ debug_print8(nextPage);*/
+
+ // if the nextPage pointer is invalid, the packet is not ready yet - exit
+ if( (nextPage >= RXSTOP_INIT) || (nextPage < RXSTART_INIT) ) {
+ /* UDR0 = '0';*/
+ return 0;
+ }
+
+ return rxlen-4;
+}
+
+
+void RTL8019retreivePacketData(unsigned char * localBuffer, unsigned int length)
+{
+ unsigned int i;
+ volatile unsigned char *base = (unsigned char *)0x8300;
+ // initiate DMA to transfer the data
+ writeRTL(RBCR0, (unsigned char)length);
+ writeRTL(RBCR1, (unsigned char)(length>>8));
+ writeRTL(RSAR0, (unsigned char)currentRetreiveAddress);
+ writeRTL(RSAR1, (unsigned char)(currentRetreiveAddress>>8));
+ writeRTL(CR, 0x0A);
+ for(i=0;i<length;i++)
+ localBuffer[i] = readRTL(RDMAPORT);
+
+ // end the DMA operation
+ writeRTL(CR, 0x22);
+ for(i = 0; i <= 20; i++)
+ if(readRTL(ISR) & 1<<6)
+ break;
+ writeRTL(ISR, 1<<6);
+
+ currentRetreiveAddress += length;
+ if( currentRetreiveAddress >= 0x6000 )
+ currentRetreiveAddress = currentRetreiveAddress - (0x6000-0x4600) ;
+}
+
+
+
+void RTL8019endPacketRetreive(void)
+{
+ volatile unsigned char *base = (unsigned char *)0x8300;
+ unsigned char i;
+
+ // end the DMA operation
+ writeRTL(CR, 0x22);
+ for(i = 0; i <= 20; i++)
+ if(readRTL(ISR) & 1<<6)
+ break;
+ writeRTL(ISR, 1<<6);
+
+ // set the boundary register to point to the start of the next packet
+ writeRTL(BNRY, nextPage);
+}
+
+
+void overrun(void)
+{
+ volatile unsigned char *base = (unsigned char *)0x8300;
+ unsigned char data_L, resend;
+
+ data_L = readRTL(CR);
+ writeRTL(CR, 0x21);
+ Delay_1ms(2);
+ writeRTL(RBCR0, 0x00);
+ writeRTL(RBCR1, 0x00);
+ if(!(data_L & 0x04))
+ resend = 0;
+ else if(data_L & 0x04)
+ {
+ data_L = readRTL(ISR);
+ if((data_L & 0x02) || (data_L & 0x08))
+ resend = 0;
+ else
+ resend = 1;
+ }
+
+ writeRTL(TCR, 0x02);
+ writeRTL(CR, 0x22);
+ writeRTL(BNRY, RXSTART_INIT);
+ writeRTL(CR, 0x62);
+ writeRTL(CURR, RXSTART_INIT);
+ writeRTL(CR, 0x22);
+ writeRTL(ISR, 0x10);
+ writeRTL(TCR, TCR_INIT);
+
+ writeRTL(ISR, 0xFF);
+}
+
+
+
+
+/*!
+ * \brief Size of a single ring buffer page.
+ */
+#define NIC_PAGE_SIZE 0x100
+
+/*!
+ * \brief First ring buffer page address.
+ */
+#define NIC_START_PAGE 0x40
+
+/*!
+ * \brief Last ring buffer page address plus 1.
+ */
+#define NIC_STOP_PAGE 0x60
+
+/*!
+ * \brief Number of pages in a single transmit buffer.
+ *
+ * This should be at least the MTU size.
+ */
+#define NIC_TX_PAGES 6
+
+/*!
+ * \brief Number of transmit buffers.
+ */
+#define NIC_TX_BUFFERS 2
+
+/*!
+ * \brief Controller memory layout:
+ *
+ * 0x4000 - 0x4bff 3k bytes transmit buffer
+ * 0x4c00 - 0x5fff 5k bytes receive buffer
+ */
+#define NIC_FIRST_TX_PAGE NIC_START_PAGE
+#define NIC_FIRST_RX_PAGE (NIC_FIRST_TX_PAGE + NIC_TX_PAGES * NIC_TX_BUFFERS)
+
+/*!
+ * \brief Standard sizing information
+ */
+#define TX_PAGES 12 /* Allow for 2 back-to-back frames */
+
+static unsigned char mac[6] = {0x00,0x06,0x98,0x01,0x02,0x29};
+void Delay(long nops)
+{
+ volatile long i;
+
+ for(i = 0; i < nops; i++)
+#ifdef __IMAGECRAFT__
+ asm("nop\n");
+#else
+ asm volatile("nop\n\t"::);
+#endif
+}
+
+static int NicReset(void)
+{
+volatile unsigned char *base = (unsigned char *)0x8300;
+ unsigned char i;
+ unsigned char j;
+
+ for(j = 0; j < 20; j++) {
+ debug_print(PSTR("SW-Reset..."));
+ i = nic_read(NIC_RESET);
+ Delay(500);
+ nic_write(NIC_RESET, i);
+ for(i = 0; i < 20; i++) {
+ Delay(5000);
+
+ /*
+ * ID detection added for version 1.1 boards.
+ */
+ if((nic_read(NIC_PG0_ISR) & NIC_ISR_RST) != 0 &&
+ nic_read(NIC_PG0_RBCR0) == 0x50 &&
+ nic_read(NIC_PG0_RBCR1) == 0x70) {
+ debug_print(PSTR("OK\r\n"));
+ return 0;
+ }
+ }
+ debug_print(PSTR("failed\r\n\x07"));
+
+ /*
+ * Toggle the hardware reset line. Since Ethernut version 1.3 the
+ * hardware reset pin of the nic is no longer connected to bit 4
+ * on port E, but wired to the board reset line.
+ */
+ if(j == 10) {
+ debug_print(PSTR("Ethernut 1.1 HW-Reset\r\n"));
+ sbi(DDRE, 4);
+ sbi(PORTE, 4);
+ Delay(100000);
+ cbi(PORTE, 4);
+ Delay(250000);
+ }
+ }
+ return -1;
+}
+
+void initRTL8019(void)
+{
+ unsigned char i, rb;
+ volatile unsigned char *base = (unsigned char *)0x8300;
+
+ RTL8019setupPorts();
+
+ /*#define nic_write writeRTL
+ #define nic_read readRTL*/
+ /*
+ * Disable NIC interrupts.
+ */
+ cbi(EIMSK, INT5);
+
+ /* if(NicReset(base))
+ return -1;*/
+#if 0
+ /*
+ * Mask all interrupts and clear any interrupt status flag to set the
+ * INT pin back to low.
+ */
+ nic_write(NIC_PG0_IMR, 0);
+ nic_write(NIC_PG0_ISR, 0xff);
+
+ /*
+ * During reset the nic loaded its initial configuration from an
+ * external eeprom. On the ethernut board we do not have any
+ * configuration eeprom, but simply tied the eeprom data line to
+ * high level. So we have to clear some bits in the configuration
+ * register. Switch to register page 3.
+ */
+ nic_write(NIC_CR, NIC_CR_STP | NIC_CR_RD2 | NIC_CR_PS0 | NIC_CR_PS1);
+
+ /*
+ * The nic configuration registers are write protected unless both
+ * EEM bits are set to 1.
+ */
+ nic_write(NIC_PG3_EECR, NIC_EECR_EEM0 | NIC_EECR_EEM1);
+
+ /*
+ * Disable sleep and power down.
+ */
+ nic_write(NIC_PG3_CONFIG3, 0);
+
+ /*
+ * Network media had been set to 10Base2 by the virtual EEPROM and
+ * will be set now to auto detect. This will initiate a link test.
+ * We don't force 10BaseT, because this would disable the link test.
+ */
+ nic_write(NIC_PG3_CONFIG2, NIC_CONFIG2_BSELB);
+
+ /*
+ * Reenable write protection of the nic configuration registers
+ * and wait for link test to complete.
+ */
+ nic_write(NIC_PG3_EECR, 0);
+ /* NutSleep(WAIT500);*/
+ Delay_10ms(50);
+
+ /*
+ * Switch to register page 0 and set data configuration register
+ * to byte-wide DMA transfers, normal operation (no loopback),
+ * send command not executed and 8 byte fifo threshold.
+ */
+ nic_write(NIC_CR, NIC_CR_STP | NIC_CR_RD2);
+ nic_write(NIC_PG0_DCR, NIC_DCR_LS | NIC_DCR_FT1);
+
+ /*
+ * Clear remote dma byte count register.
+ */
+ nic_write(NIC_PG0_RBCR0, 0);
+ nic_write(NIC_PG0_RBCR1, 0);
+
+ /*
+ * Temporarily set receiver to monitor mode and transmitter to
+ * internal loopback mode. Incoming packets will not be stored
+ * in the nic ring buffer and no data will be send to the network.
+ */
+ nic_write(NIC_PG0_RCR, NIC_RCR_MON);
+ nic_write(NIC_PG0_TCR, NIC_TCR_LB0);
+
+ /*
+ * Configure the nic's ring buffer page layout.
+ * NIC_PG0_BNRY: Last page read.
+ * NIC_PG0_PSTART: First page of receiver buffer.
+ * NIC_PG0_PSTOP: Last page of receiver buffer.
+ */
+ nic_write(NIC_PG0_TPSR, NIC_FIRST_TX_PAGE);
+ nic_write(NIC_PG0_BNRY, NIC_STOP_PAGE - 1);
+ nic_write(NIC_PG0_PSTART, NIC_FIRST_RX_PAGE);
+ nic_write(NIC_PG0_PSTOP, NIC_STOP_PAGE);
+
+ /*
+ * Once again clear interrupt status register.
+ */
+ nic_write(NIC_PG0_ISR, 0xff);
+
+ /*
+ * Switch to register page 1 and copy our MAC address into the nic.
+ * We are still in stop mode.
+ */
+ nic_write(NIC_CR, NIC_CR_STP | NIC_CR_RD2 | NIC_CR_PS0);
+ for(i = 0; i < 6; i++)
+ nic_write(NIC_PG1_PAR0 + i, mac[i]);
+
+ /*
+ * Clear multicast filter bits to disable all packets.
+ */
+ for(i = 0; i < 8; i++)
+ nic_write(NIC_PG1_MAR0 + i, 0);
+
+ /*
+ * Set current page pointer to one page after the boundary pointer.
+ */
+ nic_write(NIC_PG1_CURR, NIC_START_PAGE + TX_PAGES);
+
+ /*
+ * Switch back to register page 0, remaining in stop mode.
+ */
+ nic_write(NIC_CR, NIC_CR_STP | NIC_CR_RD2);
+
+ /*
+ * Take receiver out of monitor mode and enable it for accepting
+ * broadcasts.
+ */
+ nic_write(NIC_PG0_RCR, NIC_RCR_AB);
+
+ /*
+ * Clear all interrupt status flags and enable interrupts.
+ */
+ nic_write(NIC_PG0_ISR, 0xff);
+ nic_write(NIC_PG0_IMR, NIC_IMR_PRXE | NIC_IMR_PTXE | NIC_IMR_RXEE |
+ NIC_IMR_TXEE | NIC_IMR_OVWE);
+
+ /*
+ * Fire up the nic by clearing the stop bit and setting the start bit.
+ * To activate the local receive dma we must also take the nic out of
+ * the local loopback mode.
+ */
+ nic_write(NIC_CR, NIC_CR_STA | NIC_CR_RD2);
+ nic_write(NIC_PG0_TCR, 0);
+
+ /* NutSleep(WAIT500);*/
+ Delay_10ms(50);
+
+
+#endif /* 0 */
+
+ NicReset();
+
+ debug_print(PSTR("Init controller..."));
+ nic_write(NIC_PG0_IMR, 0);
+ nic_write(NIC_PG0_ISR, 0xff);
+ nic_write(NIC_CR, NIC_CR_STP | NIC_CR_RD2 | NIC_CR_PS0 | NIC_CR_PS1);
+ nic_write(NIC_PG3_EECR, NIC_EECR_EEM0 | NIC_EECR_EEM1);
+ nic_write(NIC_PG3_CONFIG3, 0);
+ nic_write(NIC_PG3_CONFIG2, NIC_CONFIG2_BSELB);
+ nic_write(NIC_PG3_EECR, 0);
+ /* Delay(50000);*/
+ Delay_10ms(200);
+ nic_write(NIC_CR, NIC_CR_STP | NIC_CR_RD2);
+ nic_write(NIC_PG0_DCR, NIC_DCR_LS | NIC_DCR_FT1);
+ nic_write(NIC_PG0_RBCR0, 0);
+ nic_write(NIC_PG0_RBCR1, 0);
+ nic_write(NIC_PG0_RCR, NIC_RCR_MON);
+ nic_write(NIC_PG0_TCR, NIC_TCR_LB0);
+ nic_write(NIC_PG0_TPSR, NIC_FIRST_TX_PAGE);
+ nic_write(NIC_PG0_BNRY, NIC_STOP_PAGE - 1);
+ nic_write(NIC_PG0_PSTART, NIC_FIRST_RX_PAGE);
+ nic_write(NIC_PG0_PSTOP, NIC_STOP_PAGE);
+ nic_write(NIC_PG0_ISR, 0xff);
+ nic_write(NIC_CR, NIC_CR_STP | NIC_CR_RD2 | NIC_CR_PS0);
+ for(i = 0; i < 6; i++)
+ nic_write(NIC_PG1_PAR0 + i, mac[i]);
+ for(i = 0; i < 8; i++)
+ nic_write(NIC_PG1_MAR0 + i, 0);
+ nic_write(NIC_PG1_CURR, NIC_START_PAGE + TX_PAGES);
+ nic_write(NIC_CR, NIC_CR_STP | NIC_CR_RD2);
+ nic_write(NIC_PG0_RCR, NIC_RCR_AB);
+ nic_write(NIC_PG0_ISR, 0xff);
+ nic_write(NIC_PG0_IMR, 0);
+ nic_write(NIC_CR, NIC_CR_STA | NIC_CR_RD2);
+ nic_write(NIC_PG0_TCR, 0);
+ /* Delay(1000000)*/
+ Delay_10ms(200);
+
+
+ nic_write(NIC_CR, NIC_CR_STA | NIC_CR_RD2 | NIC_CR_PS0 | NIC_CR_PS1);
+ rb = nic_read(NIC_PG3_CONFIG0);
+ debug_print8(rb);
+ switch(rb & 0xC0) {
+ case 0x00:
+ debug_print(PSTR("RTL8019AS "));
+ if(rb & 0x08)
+ debug_print(PSTR("jumper mode: "));
+ if(rb & 0x20)
+ debug_print(PSTR("AUI "));
+ if(rb & 0x10)
+ debug_print(PSTR("PNP "));
+ break;
+ case 0xC0:
+ debug_print(PSTR("RTL8019 "));
+ if(rb & 0x08)
+ debug_print(PSTR("jumper mode: "));
+ break;
+ default:
+ debug_print(PSTR("Unknown chip "));
+ debug_print8(rb);
+ break;
+ }
+ if(rb & 0x04)
+ debug_print(PSTR("BNC\x07 "));
+ if(rb & 0x03)
+ debug_print(PSTR("Failed\x07 "));
+
+ /* rb = nic_read(NIC_PG3_CONFIG1);
+ debug_print8(rb);*/
+ /* NutPrintFormat(0, "IRQ%u ", (rb >> 4) & 7);*/
+ /* debug_print("IRQ ");
+ debug_print8((rb >> 4) & 7);*/
+
+ rb = nic_read(NIC_PG3_CONFIG2);
+ debug_print8(rb);
+ switch(rb & 0xC0) {
+ case 0x00:
+ debug_print(PSTR("Auto "));
+ break;
+ case 0x40:
+ debug_print(PSTR("10BaseT "));
+ break;
+ case 0x80:
+ debug_print(PSTR("10Base5 "));
+ break;
+ case 0xC0:
+ debug_print(PSTR("10Base2 "));
+ break;
+ }
+
+
+ return;
+
+ /* HARD_RESET_RTL8019();*/
+
+ // do soft reset
+ writeRTL( ISR, readRTL(ISR) ) ;
+ Delay_10ms(5);
+
+ writeRTL(CR,0x21); // stop the NIC, abort DMA, page 0
+ Delay_1ms(2); // make sure nothing is coming in or going out
+ writeRTL(DCR, DCR_INIT); // 0x58
+ writeRTL(RBCR0,0x00);
+ writeRTL(RBCR1,0x00);
+ writeRTL(RCR,0x04);
+ writeRTL(TPSR, TXSTART_INIT);
+ writeRTL(TCR,0x02);
+ writeRTL(PSTART, RXSTART_INIT);
+ writeRTL(BNRY, RXSTART_INIT);
+ writeRTL(PSTOP, RXSTOP_INIT);
+ writeRTL(CR, 0x61);
+ Delay_1ms(2);
+ writeRTL(CURR, RXSTART_INIT);
+
+ writeRTL(PAR0+0, MYMAC_0);
+ writeRTL(PAR0+1, MYMAC_1);
+ writeRTL(PAR0+2, MYMAC_2);
+ writeRTL(PAR0+3, MYMAC_3);
+ writeRTL(PAR0+4, MYMAC_4);
+ writeRTL(PAR0+5, MYMAC_5);
+
+ writeRTL(CR,0x21);
+ writeRTL(DCR, DCR_INIT);
+ writeRTL(CR,0x22);
+ writeRTL(ISR,0xFF);
+ writeRTL(IMR, IMR_INIT);
+ writeRTL(TCR, TCR_INIT);
+
+ writeRTL(CR, 0x22); // start the NIC
+}
+
+
+void processRTL8019Interrupt(void)
+{
+ volatile unsigned char *base = (unsigned char *)0x8300;
+ unsigned char byte = readRTL(ISR);
+
+ if( byte & (1<<ISR_OVW) )
+ overrun();
+
+}
+
+/*
+ unsigned char RTL8019ReceiveEmpty(void)
+ {
+ unsigned char temp;
+
+ // read CURR from page 1
+ writeRTL(CR,0x62);
+ temp = readRTL(CURR);
+
+ // return to page 0
+ writeRTL(CR,0x22);
+
+ return ( readRTL(BNRY) == temp );
+
+ }*/
+
+
+
+
diff --git a/contiki-avr/uip/rtl8019.h b/contiki-avr/uip/rtl8019.h
new file mode 100644
index 0000000..240beff
--- /dev/null
+++ b/contiki-avr/uip/rtl8019.h
@@ -0,0 +1,265 @@
+#ifndef __RTL8019_H__
+#define __RTL8019_H__
+
+/*****************************************************************************
+* Module Name: Realtek 8019AS Driver
+*
+* Created By: Louis Beaudoin (www.embedded-creations.com)
+*
+* Original Release: September 21, 2002
+*
+* Module Description:
+* Provides functions to initialize the Realtek 8019AS, and send and retreive
+* packets
+*
+* September 30, 2002 - Louis Beaudoin
+* Receive functions modified to handle errors encountered when receiving a
+* fast data stream. Functions now manually retreive data instead of
+* using the send packet command. Interface improved by checking for
+* overruns and data in the buffer internally.
+* Corrected the overrun function - overrun flag was not reset after overrun
+* Added support for the Imagecraft Compiler
+* Added support to communicate with the NIC using general I/O ports
+*
+*****************************************************************************/
+
+/*#include "delay.h"*/
+
+#include "compiler.h"
+
+
+/*****************************************************************************
+* RTL8019beginPacketSend(unsigned int packetLength)
+* Args: unsigned int - length of the Ethernet frame (see note)
+* Created By: Louis Beaudoin
+* Date: September 21, 2002
+* Description: Sets up the NIC to send a packet
+* Notes: The NIC will not send packets less than 60 bytes long (the min
+* Ethernet frame length. The transmit length is automatically
+* increased to 60 bytes if packetLength is < 60
+*****************************************************************************/
+void RTL8019beginPacketSend(unsigned int packetLength);
+
+
+/*****************************************************************************
+* RTL8019sendPacketData(unsigned char * localBuffer, unsigned int length)
+* Args: 1. unsigned char * localBuffer - Pointer to the beginning of
+* the buffer to load into the NIC
+* 2. unsigned char length - number of bytes to copy to
+* the NIC
+* Created By: Louis Beaudoin
+* Date: September 21, 2002
+* Description: Loads length # of bytes from a local buffer to the transmit
+* packet buffer
+* Notes: RTL8019beginPacketSend() must be called before sending
+* any data.
+* Several calls to RTL8019retreivePacketData() may be made to
+* copy packet data from different buffers
+*****************************************************************************/
+void RTL8019sendPacketData(unsigned char * localBuffer, unsigned int length);
+
+
+/*****************************************************************************
+* RTL8019endPacketSend()
+* Created By: Louis Beaudoin
+* Date: September 21, 2002
+* Description: Ends a packet send operation and instructs the NIC to transmit
+* the frame over the network
+*****************************************************************************/
+void RTL8019endPacketSend(void);
+
+
+/*****************************************************************************
+* initRTL8019(void);
+*
+* Created By: Louis Beaudoin
+* Date: September 21, 2002
+* Description: Sets up the RTL8019 NIC hardware interface, and initializes
+* the buffers and configuration of the NIC
+*****************************************************************************/
+void initRTL8019(void);
+
+
+/*****************************************************************************
+* processRTL8019Interrupt(void);
+*
+* Created By: Louis Beaudoin
+* Date: September 21, 2002
+* Description: Reads the NIC's ISR register looking for a receive buffer
+* overrun - which is then handled.
+* Notes: The function does not need to be called in response to an
+* interrupt. The function can be polled and the NIC's INT
+* line not used. This function should be called before
+* attempting to retreive a packet from the NIC
+*****************************************************************************/
+void processRTL8019Interrupt(void);
+
+
+/*****************************************************************************
+* unsigned char RTL8019ReceiveEmpty(void);
+*
+* Returns: non-zero (true) if buffer is empty, zero if data in buffer
+* Created By: Louis Beaudoin
+* Date: September 21, 2002
+* Description: Compares the BNRY and CURR receive buffer pointers to see if
+* there is a packet in the receive buffer
+* ** Removed as of version 0.60.1 **
+*****************************************************************************/
+//unsigned char RTL8019ReceiveEmpty(void);
+
+
+/*****************************************************************************
+* unsigned int RTL8019beginPacketRetreive()
+* Returns: unsigned int - length of the Ethernet frame (see note)
+* Created By: Louis Beaudoin
+* Date: September 21, 2002
+* Description: Sets up the NIC to retreive a packet
+* Notes: The size returned is the size of all the data in the Ethernet
+* frame minus the Ethernet checksum. This may include unused
+* trailer bytes appended if data is less than the minimum
+* Ethernet frame length (60 bytes). A size of zero indicates
+* there are no packets available.
+* A call to RTL8019beginPacketRetreive() must be followed by a
+* call to RTL8019endPacketRetreive() regardless if data is
+* retreived, unless 0 is returned.
+*****************************************************************************/
+unsigned int RTL8019beginPacketRetreive(void);
+
+
+/*****************************************************************************
+* RTL8019retreivePacketData(unsigned char * localBuffer, unsigned int length)
+* Args: 1. unsigned char * localBuffer - Pointer to the beginning of
+* the buffer to store the ethernet frame.
+* 2. unsigned char length - number of bytes to copy to
+* localBuffer
+* Created By: Louis Beaudoin
+* Date: September 21, 2002
+* Description: Loads length # of bytes from the receive packet buffer to
+* a local buffer
+* Notes: RTL8019beginPacketRetreive() must be called before retreiving
+* any data.
+* Several calls to RTL8019retreivePacketData() may be made to
+* copy packet data to different buffers
+*****************************************************************************/
+void RTL8019retreivePacketData(unsigned char * localBuffer,
+ unsigned int length);
+
+/*****************************************************************************
+* RTL8019endPacketRetreive()
+* Created By: Louis Beaudoin
+* Date: September 21, 2002
+* Description: Ends a packet retreive operation begun by calling
+* RTL8019beginPacketRetreive(). The NIC buffer space used by
+* the retreived packet is freed
+* Notes: A packet may be removed from the buffer without being read
+* by calling RTL8019endPacketRetreive() after
+* RTL8019beginPacketRetreive().
+*****************************************************************************/
+void RTL8019endPacketRetreive(void);
+
+
+/*****************************************************************************
+*
+* AVR hardware setup
+*
+* External SRAM Interface:
+* The five NIC address lines are taken from A8-A12 (uses the
+* non-multiplexed address port so no latch is required)
+*
+* General I/O Interface:
+* Two full ports are required for the address and data buses. Two pins
+* from another port are used to control the read and write lines
+*
+* One output pin is required for hard resetting the NIC
+*
+*****************************************************************************/
+
+// set to 1 to use the External SRAM Interface - 0 for General I/O
+#define MEMORY_MAPPED_NIC 1
+
+#if MEMORY_MAPPED_NIC /*** NIC Interface through External SRAM Interface ****/
+
+// NIC is mapped from address 0x8000 - 0x9F00
+#define MEMORY_MAPPED_RTL8019_OFFSET 0x8300
+
+#else /************ NIC Interface through General I/O *******************/
+
+// RTL8019 address port
+#define RTL8019_ADDRESS_PORT PORTC
+#define RTL8019_ADDRESS_DDR DDRC
+
+// RTL8019 data port
+#define RTL8019_DATA_PORT PORTA
+#define RTL8019_DATA_DDR DDRA
+#define RTL8019_DATA_PIN PINA
+
+// RTL8019 control port
+#define RTL8019_CONTROL_PORT PORTD
+#define RTL8019_CONTROL_DDR DDRD
+#define RTL8019_CONTROL_READPIN PD7
+#define RTL8019_CONTROL_WRITEPIN PD6
+
+
+// macros to control the read and write pins
+#define RTL8019_CLEAR_READ cbi(RTL8019_CONTROL_PORT,\
+ RTL8019_CONTROL_READPIN)
+#define RTL8019_SET_READ sbi(RTL8019_CONTROL_PORT,\
+ RTL8019_CONTROL_READPIN)
+#define RTL8019_CLEAR_WRITE cbi(RTL8019_CONTROL_PORT,\
+ RTL8019_CONTROL_WRITEPIN)
+#define RTL8019_SET_WRITE sbi(RTL8019_CONTROL_PORT,\
+ RTL8019_CONTROL_WRITEPIN)
+
+#endif /** NIC Interface **/
+
+
+
+// RTL RESET - Port B pin 0
+#define RTL8019_RESET_PORT PORTE
+#define RTL8019_RESET_DDR DDRE
+#define RTL8019_RESET_PIN PORTE0
+
+
+
+
+
+/*****************************************************************************
+*
+* Ethernet constants
+*
+*****************************************************************************/
+#define ETHERNET_MIN_PACKET_LENGTH 0x3C
+#define ETHERNET_HEADER_LENGTH 0x0E
+
+
+
+/*****************************************************************************
+*
+* MAC address assigned to the RTL8019
+*
+*****************************************************************************/
+/*#define MYMAC_0 '0'
+#define MYMAC_1 'F'
+#define MYMAC_2 'F'
+#define MYMAC_3 'I'
+#define MYMAC_4 'C'
+#define MYMAC_5 'E'*/
+
+#define MYMAC_0 0x00
+#define MYMAC_1 0x06
+#define MYMAC_2 0x98
+#define MYMAC_3 0x01
+#define MYMAC_4 0x02
+#define MYMAC_5 0x26
+
+
+
+
+
+
+
+
+
+
+
+#endif /* __RTL8019_H__ */
diff --git a/contiki-avr/uip/rtl8019as-drv.c b/contiki-avr/uip/rtl8019as-drv.c
new file mode 100644
index 0000000..5db3159
--- /dev/null
+++ b/contiki-avr/uip/rtl8019as-drv.c
@@ -0,0 +1,160 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Adam Dunkels.
+ * 4. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack.
+ *
+ * $Id: rtl8019as-drv.c,v 1.1 2003/07/04 10:54:52 adamdunkels Exp $
+ *
+ */
+
+
+/* uip_main.c: initialization code and main event loop. */
+
+#define NULL (void *)0
+
+
+
+#include "uip.h"
+#include "uip_arp.h"
+#include "uip-signal.h"
+#include "loader.h"
+#include "rtl8019dev.h"
+
+#include "dispatcher.h"
+#include "ek.h"
+
+#include "debug.h"
+
+#define BUF ((struct uip_eth_hdr *)&uip_buf[0])
+
+static u8_t i, arptimer;
+static u16_t start, current;
+
+static void rtl8019_drv_idle(void);
+static DISPATCHER_SIGHANDLER(rtl8019_drv_sighandler, s, data);
+static struct dispatcher_proc p =
+ {DISPATCHER_PROC("TCP/IP/RTL8019 driver", rtl8019_drv_idle,
+ rtl8019_drv_sighandler, NULL)};
+ek_id_t id = EK_ID_NONE;
+
+
+/*-----------------------------------------------------------------------------------*/
+static void
+timer(void)
+{
+ for(i = 0; i < UIP_CONNS; ++i) {
+ uip_periodic(i);
+ if(uip_len > 0) {
+ uip_arp_out();
+ rtl8019as_send();
+ }
+ }
+
+ for(i = 0; i < UIP_UDP_CONNS; i++) {
+ uip_udp_periodic(i);
+ /* If the above function invocation resulted in data that
+ should be sent out on the network, the global variable
+ uip_len is set to a value > 0. */
+ if(uip_len > 0) {
+ uip_arp_out();
+ rtl8019as_send();
+ }
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+rtl8019_drv_idle(void)
+{
+ /* Poll Ethernet device to see if there is a frame avaliable. */
+ uip_len = rtl8019as_poll();
+ if(uip_len > 0) {
+ /* A frame was avaliable (and is now read into the uip_buf), so
+ we process it. */
+ if(BUF->type == htons(UIP_ETHTYPE_IP)) {
+ /* debug_print16(uip_len);*/
+ uip_arp_ipin();
+ uip_len -= sizeof(struct uip_eth_hdr);
+ uip_input();
+ /* If the above function invocation resulted in data that
+ should be sent out on the network, the global variable
+ uip_len is set to a value > 0. */
+ if(uip_len > 0) {
+ /* debug_print(PSTR("Sending packet\n"));*/
+ uip_arp_out();
+ rtl8019as_send();
+ }
+ } else if(BUF->type == htons(UIP_ETHTYPE_ARP)) {
+ uip_arp_arpin();
+ /* If the above function invocation resulted in data that
+ should be sent out on the network, the global variable
+ uip_len is set to a value > 0. */
+ if(uip_len > 0) {
+ rtl8019as_send();
+ }
+ }
+ }
+ /* Check the clock so see if we should call the periodic uIP
+ processing. */
+ current = ek_clock();
+
+ if((current - start) >= CLK_TCK/2 ||
+ (current - start) < 0) {
+ timer();
+ start = current;
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+LOADER_INIT_FUNC(rtl8019_drv_init)
+{
+ if(id == EK_ID_NONE) {
+ id = dispatcher_start(&p);
+
+ arptimer = 0;
+ start = ek_clock();
+
+ rtl8019as_init();
+
+ dispatcher_listen(uip_signal_uninstall);
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+static
+DISPATCHER_SIGHANDLER(rtl8019_drv_sighandler, s, data)
+{
+ DISPATCHER_SIGHANDLER_ARGS(s, data);
+
+ if(s == uip_signal_uninstall) {
+ dispatcher_exit(&p);
+ id = EK_ID_NONE;
+ LOADER_UNLOAD();
+ }
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-avr/uip/rtl8019dev.c b/contiki-avr/uip/rtl8019dev.c
new file mode 100644
index 0000000..3ca828b
--- /dev/null
+++ b/contiki-avr/uip/rtl8019dev.c
@@ -0,0 +1,77 @@
+#include "uip.h"
+#include "rtl8019dev.h"
+
+/*****************************************************************************
+* Module Name: Realtek 8019AS Driver Interface for uIP-AVR Port
+*
+* Created By: Louis Beaudoin (www.embedded-creations.com)
+*
+* Original Release: September 21, 2002
+*
+* Module Description:
+* Provides three functions to interface with the Realtek 8019AS driver
+* These functions can be called directly from the main uIP control loop
+* to send packets from uip_buf and uip_appbuf, and store incoming packets to
+* uip_buf
+*
+* September 30, 2002 - Louis Beaudoin
+* Modifications required to handle the packet receive function changes in
+* rtl8019.c. There is no longer a need to poll for an empty buffer or
+* an overflow.
+* Added support for the Imagecraft Compiler
+*
+*****************************************************************************/
+
+
+#define IP_TCP_HEADER_LENGTH 40
+#define TOTAL_HEADER_LENGTH (IP_TCP_HEADER_LENGTH+ETHERNET_HEADER_LENGTH)
+
+
+
+void RTL8019dev_init(void)
+{
+ initRTL8019();
+}
+
+
+void RTL8019dev_send(void)
+{
+ RTL8019beginPacketSend(uip_len);
+
+ // send packet, using data in uip_appdata if over the IP+TCP header size
+ if( uip_len <= TOTAL_HEADER_LENGTH ) {
+ RTL8019sendPacketData(uip_buf, uip_len);
+ } else {
+ uip_len -= TOTAL_HEADER_LENGTH;
+ RTL8019sendPacketData(uip_buf, TOTAL_HEADER_LENGTH);
+ RTL8019sendPacketData((unsigned char *)uip_appdata, uip_len);
+ }
+
+ RTL8019endPacketSend();
+}
+
+
+
+unsigned int RTL8019dev_poll(void)
+{
+ unsigned int packetLength;
+
+ packetLength = RTL8019beginPacketRetreive();
+
+ // if there's no packet or an error - exit without ending the operation
+ if( !packetLength )
+ return 0;
+
+ // drop anything too big for the buffer
+ if( packetLength > UIP_BUFSIZE )
+ {
+ RTL8019endPacketRetreive();
+ return 0;
+ }
+
+ // copy the packet data into the uIP packet buffer
+ RTL8019retreivePacketData( uip_buf, packetLength );
+ RTL8019endPacketRetreive();
+
+ return packetLength;
+}
diff --git a/contiki-avr/uip/rtl8019dev.h b/contiki-avr/uip/rtl8019dev.h
new file mode 100644
index 0000000..677614d
--- /dev/null
+++ b/contiki-avr/uip/rtl8019dev.h
@@ -0,0 +1,60 @@
+#ifndef __RTL8019DEV_H__
+#define __RTL8019DEV_H__
+
+/*****************************************************************************
+* Module Name: Realtek 8019AS Driver Interface for uIP-AVR Port
+*
+* Created By: Louis Beaudoin (www.embedded-creations.com)
+*
+* Original Release: September 21, 2002
+*
+* Module Description:
+* Provides three functions to interface with the Realtek 8019AS driver
+* These functions can be called directly from the main uIP control loop
+* to send packets from uip_buf and uip_appbuf, and store incoming packets to
+* uip_buf
+*
+* September 30, 2002 - Louis Beaudoin
+* Modifications required to handle the packet receive function changes in
+* rtl8019.c. There is no longer a need to poll for an empty buffer or
+* an overflow.
+* Added support for the Imagecraft Compiler
+*
+*****************************************************************************/
+
+#include "uip.h"
+#include "rtl8019.h"
+
+/*****************************************************************************
+* RTL8019dev_init()
+* Created By: Louis Beaudoin
+* Date: September 21, 2002
+* Description: Power-up initialization of the RTL8019
+*****************************************************************************/
+void RTL8019dev_init(void);
+
+
+/*****************************************************************************
+* RTL8019dev_send()
+* Created By: Louis Beaudoin
+* Date: September 21, 2002
+* Description: Sends the packet contained in uip_buf and uip_appdata over
+* the network
+*****************************************************************************/
+void RTL8019dev_send(void);
+
+
+/*****************************************************************************
+* unsigned char/int RTL8019dev_poll()
+* Returns: Length of the packet retreived, or zero if no packet retreived
+* Created By: Louis Beaudoin
+* Date: September 21, 2002
+* Description: Polls the RTL8019 looking for an overflow condition or a new
+* packet in the receive buffer. If a new packet exists and
+* will fit in uip_buf, it is retreived, and the length is
+* returned. A packet bigger than the buffer is discarded
+*****************************************************************************/
+unsigned int RTL8019dev_poll(void);
+
+
+#endif /* __RTL8019DEV_H__ */
diff --git a/contiki-avr/uip/rtlregs.h b/contiki-avr/uip/rtlregs.h
new file mode 100644
index 0000000..fcaaebd
--- /dev/null
+++ b/contiki-avr/uip/rtlregs.h
@@ -0,0 +1,345 @@
+#ifndef _DEV_RTLREGS_H_
+#define _DEV_RTLREGS_H_
+
+/*
+ * Copyright (C) 2001-2002 by egnite Software GmbH. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this
+ * software must display the following acknowledgement:
+ *
+ * This product includes software developed by egnite Software GmbH
+ * and its contributors.
+ *
+ * THIS SOFTWARE IS PROVIDED BY EGNITE SOFTWARE GMBH AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL EGNITE
+ * SOFTWARE GMBH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+ * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * For additional information see http://www.ethernut.de/
+ *
+ * -
+ * Portions Copyright (C) 2000 David J. Hudson <dave@humbug.demon.co.uk>
+ *
+ * This file 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.
+ *
+ * You can redistribute this file and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software Foundation;
+ * either version 2 of the License, or (at your discretion) any later version.
+ * See the accompanying file "copying-gpl.txt" for more details.
+ *
+ * As a special exception to the GPL, permission is granted for additional
+ * uses of the text contained in this file. See the accompanying file
+ * "copying-liquorice.txt" for details.
+ * -
+ * Portions Copyright (c) 1983, 1993 by
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * $Log: rtlregs.h,v $
+ * Revision 1.1 2003/07/04 10:54:52 adamdunkels
+ * First version of the AVR port
+ *
+ * Revision 1.1 2003/02/05 20:49:07 adam
+ * *** empty log message ***
+ *
+ * Revision 1.6 2002/10/29 15:27:36 harald
+ * *** empty log message ***
+ *
+ * Revision 1.5 2002/06/26 17:29:08 harald
+ * First pre-release with 2.4 stack
+ *
+ */
+
+/*!
+ * \brief Realtek 8019AS register definitions.
+ */
+/*@{*/
+
+/*
+ * Register offset applicable to all register pages.
+ */
+#define NIC_CR 0x00 /*!< \brief Command register */
+#define NIC_IOPORT 0x10 /*!< \brief I/O data port */
+#define NIC_RESET 0x1f /*!< \brief Reset port */
+
+/*
+ * Page 0 register offsets.
+ */
+#define NIC_PG0_CLDA0 0x01 /*!< \brief Current local DMA address 0 */
+#define NIC_PG0_PSTART 0x01 /*!< \brief Page start register */
+#define NIC_PG0_CLDA1 0x02 /*!< \brief Current local DMA address 1 */
+#define NIC_PG0_PSTOP 0x02 /*!< \brief Page stop register */
+#define NIC_PG0_BNRY 0x03 /*!< \brief Boundary pointer */
+#define NIC_PG0_TSR 0x04 /*!< \brief Transmit status register */
+#define NIC_PG0_TPSR 0x04 /*!< \brief Transmit page start address */
+#define NIC_PG0_NCR 0x05 /*!< \brief Number of collisions register */
+#define NIC_PG0_TBCR0 0x05 /*!< \brief Transmit byte count register 0 */
+#define NIC_PG0_FIFO 0x06 /*!< \brief FIFO */
+#define NIC_PG0_TBCR1 0x06 /*!< \brief Transmit byte count register 1 */
+#define NIC_PG0_ISR 0x07 /*!< \brief Interrupt status register */
+#define NIC_PG0_CRDA0 0x08 /*!< \brief Current remote DMA address 0 */
+#define NIC_PG0_RSAR0 0x08 /*!< \brief Remote start address register 0
+ Low byte address to read from the buffer. */
+#define NIC_PG0_CRDA1 0x09 /*!< \brief Current remote DMA address 1 */
+#define NIC_PG0_RSAR1 0x09 /*!< \brief Remote start address register 1
+ High byte address to read from the buffer. */
+#define NIC_PG0_RBCR0 0x0a /*!< \brief Remote byte count register 0
+ Low byte of the number of bytes to read
+ from the buffer. */
+#define NIC_PG0_RBCR1 0x0b /*!< \brief Remote byte count register 1
+ High byte of the number of bytes to read
+ from the buffer. */
+#define NIC_PG0_RSR 0x0c /*!< \brief Receive status register */
+#define NIC_PG0_RCR 0x0c /*!< \brief Receive configuration register */
+#define NIC_PG0_CNTR0 0x0d /*!< \brief Tally counter 0 (frame alignment errors) */
+#define NIC_PG0_TCR 0x0d /*!< \brief Transmit configuration register */
+#define NIC_PG0_CNTR1 0x0e /*!< \brief Tally counter 1 (CRC errors) */
+#define NIC_PG0_DCR 0x0e /*!< \brief Data configuration register */
+#define NIC_PG0_CNTR2 0x0f /*!< \brief Tally counter 2 (Missed packet errors) */
+#define NIC_PG0_IMR 0x0f /*!< \brief Interrupt mask register */
+
+/*
+ * Page 1 register offsets.
+ */
+#define NIC_PG1_PAR0 0x01 /*!< \brief Physical address register 0 */
+#define NIC_PG1_PAR1 0x02 /*!< \brief Physical address register 1 */
+#define NIC_PG1_PAR2 0x03 /*!< \brief Physical address register 2 */
+#define NIC_PG1_PAR3 0x04 /*!< \brief Physical address register 3 */
+#define NIC_PG1_PAR4 0x05 /*!< \brief Physical address register 4 */
+#define NIC_PG1_PAR5 0x06 /*!< \brief Physical address register 5 */
+#define NIC_PG1_CURR 0x07 /*!< \brief Current page register
+ The next incoming packet will be stored
+ at this page address. */
+#define NIC_PG1_MAR0 0x08 /*!< \brief Multicast address register 0 */
+#define NIC_PG1_MAR1 0x09 /*!< \brief Multicast address register 1 */
+#define NIC_PG1_MAR2 0x0a /*!< \brief Multicast address register 2 */
+#define NIC_PG1_MAR3 0x0b /*!< \brief Multicast address register 3 */
+#define NIC_PG1_MAR4 0x0c /*!< \brief Multicast address register 4 */
+#define NIC_PG1_MAR5 0x0d /*!< \brief Multicast address register 5 */
+#define NIC_PG1_MAR6 0x0e /*!< \brief Multicast address register 6 */
+#define NIC_PG1_MAR7 0x0f /*!< \brief Multicast address register 7 */
+
+/*
+ * Page 2 register offsets.
+ */
+#define NIC_PG2_PSTART 0x01 /*!< \brief Page start register */
+#define NIC_PG2_CLDA0 0x01 /*!< \brief Current local DMA address 0 */
+#define NIC_PG2_PSTOP 0x02 /*!< \brief Page stop register */
+#define NIC_PG2_CLDA1 0x02 /*!< \brief Current local DMA address 1 */
+#define NIC_PG2_RNP 0x03 /*!< \brief Remote next packet pointer */
+#define NIC_PG2_TSPR 0x04 /*!< \brief Transmit page start register */
+#define NIC_PG2_LNP 0x05 /*!< \brief Local next packet pointer */
+#define NIC_PG2_ACU 0x06 /*!< \brief Address counter (upper) */
+#define NIC_PG2_ACL 0x07 /*!< \brief Address counter (lower) */
+#define NIC_PG2_RCR 0x0c /*!< \brief Receive configuration register */
+#define NIC_PG2_TCR 0x0d /*!< \brief Transmit configuration register */
+#define NIC_PG2_DCR 0x0e /*!< \brief Data configuration register */
+#define NIC_PG2_IMR 0x0f /*!< \brief Interrupt mask register */
+
+/*
+ * Page 3 register offsets.
+ */
+#define NIC_PG3_EECR 0x01 /*!< \brief EEPROM command register */
+#define NIC_PG3_BPAGE 0x02 /*!< \brief Boot-ROM page register */
+#define NIC_PG3_CONFIG0 0x03 /*!< \brief Configuration register 0 (r/o) */
+#define NIC_PG3_CONFIG1 0x04 /*!< \brief Configuration register 1 */
+#define NIC_PG3_CONFIG2 0x05 /*!< \brief Configuration register 2 */
+#define NIC_PG3_CONFIG3 0x06 /*!< \brief Configuration register 3 */
+#define NIC_PG3_CSNSAV 0x08 /*!< \brief CSN save register (r/o) */
+#define NIC_PG3_HLTCLK 0x09 /*!< \brief Halt clock */
+#define NIC_PG3_INTR 0x0b /*!< \brief Interrupt pins (r/o) */
+
+/*
+ * Command register bits.
+ */
+#define NIC_CR_STP 0x01 /*!< \brief Stop */
+#define NIC_CR_STA 0x02 /*!< \brief Start */
+#define NIC_CR_TXP 0x04 /*!< \brief Transmit packet */
+#define NIC_CR_RD0 0x08 /*!< \brief Remote DMA command bit 0 */
+#define NIC_CR_RD1 0x10 /*!< \brief Remote DMA command bit 1 */
+#define NIC_CR_RD2 0x20 /*!< \brief Remote DMA command bit 2 */
+#define NIC_CR_PS0 0x40 /*!< \brief Page select bit 0 */
+#define NIC_CR_PS1 0x80 /*!< \brief Page select bit 1 */
+
+/*
+ * Interrupt status register bits.
+ */
+#define NIC_ISR_PRX 0x01 /*!< \brief Packet received */
+#define NIC_ISR_PTX 0x02 /*!< \brief Packet transmitted */
+#define NIC_ISR_RXE 0x04 /*!< \brief Receive error */
+#define NIC_ISR_TXE 0x08 /*!< \brief Transmit error */
+#define NIC_ISR_OVW 0x10 /*!< \brief Overwrite warning */
+#define NIC_ISR_CNT 0x20 /*!< \brief Counter overflow */
+#define NIC_ISR_RDC 0x40 /*!< \brief Remote DMA complete */
+#define NIC_ISR_RST 0x80 /*!< \brief Reset status */
+
+/*
+ * Interrupt mask register bits.
+ */
+#define NIC_IMR_PRXE 0x01 /*!< \brief Packet received interrupt enable */
+#define NIC_IMR_PTXE 0x02 /*!< \brief Packet transmitted interrupt enable */
+#define NIC_IMR_RXEE 0x04 /*!< \brief Receive error interrupt enable */
+#define NIC_IMR_TXEE 0x08 /*!< \brief Transmit error interrupt enable */
+#define NIC_IMR_OVWE 0x10 /*!< \brief Overwrite warning interrupt enable */
+#define NIC_IMR_CNTE 0x20 /*!< \brief Counter overflow interrupt enable */
+#define NIC_IMR_RCDE 0x40 /*!< \brief Remote DMA complete interrupt enable */
+
+/*
+ * Data configuration register bits.
+ */
+#define NIC_DCR_WTS 0x01 /*!< \brief Word transfer select */
+#define NIC_DCR_BOS 0x02 /*!< \brief Byte order select */
+#define NIC_DCR_LAS 0x04 /*!< \brief Long address select */
+#define NIC_DCR_LS 0x08 /*!< \brief Loopback select */
+#define NIC_DCR_AR 0x10 /*!< \brief Auto-initialize remote */
+#define NIC_DCR_FT0 0x20 /*!< \brief FIFO threshold select bit 0 */
+#define NIC_DCR_FT1 0x40 /*!< \brief FIFO threshold select bit 1 */
+
+/*
+ * Transmit configuration register bits.
+ */
+#define NIC_TCR_CRC 0x01 /*!< \brief Inhibit CRC */
+#define NIC_TCR_LB0 0x02 /*!< \brief Encoded loopback control bit 0 */
+#define NIC_TCR_LB1 0x04 /*!< \brief Encoded loopback control bit 1 */
+#define NIC_TCR_ATD 0x08 /*!< \brief Auto transmit disable */
+#define NIC_TCR_OFST 0x10 /*!< \brief Collision offset enable */
+
+/*
+ * Transmit status register bits.
+ */
+#define NIC_TSR_PTX 0x01 /*!< \brief Packet transmitted */
+#define NIC_TSR_COL 0x04 /*!< \brief Transmit collided */
+#define NIC_TSR_ABT 0x08 /*!< \brief Transmit aborted */
+#define NIC_TSR_CRS 0x10 /*!< \brief Carrier sense lost */
+#define NIC_TSR_FU 0x20 /*!< \brief FIFO underrun */
+#define NIC_TSR_CDH 0x40 /*!< \brief CD heartbeat */
+#define NIC_TSR_OWC 0x80 /*!< \brief Out of window collision */
+
+/*
+ * Receive configuration register bits.
+ */
+#define NIC_RCR_SEP 0x01 /*!< \brief Save errored packets */
+#define NIC_RCR_AR 0x02 /*!< \brief Accept runt packets */
+#define NIC_RCR_AB 0x04 /*!< \brief Accept broadcast */
+#define NIC_RCR_AM 0x08 /*!< \brief Accept multicast */
+#define NIC_RCR_PRO 0x10 /*!< \brief Promiscuous physical */
+#define NIC_RCR_MON 0x20 /*!< \brief Monitor mode */
+
+/*
+ * Receive status register bits.
+ */
+#define NIC_RSR_PRX 0x01 /*!< \brief Packet received intact */
+#define NIC_RSR_CRC 0x02 /*!< \brief CRC error */
+#define NIC_RSR_FAE 0x04 /*!< \brief Frame alignment error */
+#define NIC_RSR_FO 0x08 /*!< \brief FIFO overrun */
+#define NIC_RSR_MPA 0x10 /*!< \brief Missed packet */
+#define NIC_RSR_PHY 0x20 /*!< \brief Physical/multicast address */
+#define NIC_RSR_DIS 0x40 /*!< \brief Receiver disabled */
+#define NIC_RSR_DFR 0x80 /*!< \brief Deferring */
+
+/*
+ * EEPROM command register bits.
+ */
+#define NIC_EECR_EEM1 0x80 /*!< \brief EEPROM Operating Mode */
+#define NIC_EECR_EEM0 0x40 /*!< \brief EEPROM Operating Mode
+ - 0 0 Normal operation
+ - 0 1 Auto-load
+ - 1 0 9346 programming
+ - 1 1 Config register write enab */
+#define NIC_EECR_EECS 0x08 /*!< \brief EEPROM Chip Select */
+#define NIC_EECR_EESK 0x04 /*!< \brief EEPROM Clock */
+#define NIC_EECR_EEDI 0x02 /*!< \brief EEPROM Data In */
+#define NIC_EECR_EEDO 0x01 /*!< \brief EEPROM Data Out */
+
+/*
+ * Configuration register 2 bits.
+ */
+#define NIC_CONFIG2_PL1 0x80 /*!< \brief Network media type */
+#define NIC_CONFIG2_PL0 0x40 /*!< \brief Network media type
+ - 0 0 TP/CX auto-detect
+ - 0 1 10baseT
+ - 1 0 10base5
+ - 1 1 10base2 */
+#define NIC_CONFIG2_BSELB 0x20 /*!< \brief BROM disable */
+#define NIC_CONFIG2_BS4 0x10 /*!< \brief BROM size/base */
+#define NIC_CONFIG2_BS3 0x08
+#define NIC_CONFIG2_BS2 0x04
+#define NIC_CONFIG2_BS1 0x02
+#define NIC_CONFIG2_BS0 0x01
+
+/*
+ * Configuration register 3 bits
+ */
+#define NIC_CONFIG3_PNP 0x80 /*!< \brief PnP Mode */
+#define NIC_CONFIG3_FUDUP 0x40 /*!< \brief Full duplex */
+#define NIC_CONFIG3_LEDS1 0x20 /*!< \brief LED1/2 pin configuration
+ - 0 LED1 == LED_RX, LED2 == LED_TX
+ - 1 LED1 == LED_CRS, LED2 == MCSB */
+#define NIC_CONFIG3_LEDS0 0x10 /*!< \brief LED0 pin configration
+ - 0 LED0 pin == LED_COL
+ - 1 LED0 pin == LED_LINK */
+#define NIC_CONFIG3_SLEEP 0x04 /*!< \brief Sleep mode */
+#define NIC_CONFIG3_PWRDN 0x02 /*!< \brief Power Down */
+#define NIC_CONFIG3_ACTIVEB 0x01 /*!< \brief inverse of bit 0 in PnP Act Reg */
+
+/*@}*/
+
+/*!
+ * \brief Read byte from controller register.
+ */
+#define nic_read(reg) *(base + (reg))
+
+/*!
+ * \brief Write byte to controller register.
+ */
+#define nic_write(reg, data) *(base + (reg)) = data
+
+#endif
diff --git a/contiki-avr/uip/uip_arch.c b/contiki-avr/uip/uip_arch.c
new file mode 100644
index 0000000..9a0ce7d
--- /dev/null
+++ b/contiki-avr/uip/uip_arch.c
@@ -0,0 +1,174 @@
+/*
+ * Copyright (c) 2001, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Adam Dunkels.
+ * 4. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack.
+ *
+ * $Id: uip_arch.c,v 1.3 2005/02/24 22:04:19 oliverschmidt Exp $
+ *
+ */
+
+
+#include "uip.h"
+#include "uip_arch.h"
+
+#define BUF ((uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN])
+#define IP_PROTO_TCP 6
+
+/*-----------------------------------------------------------------------------------*/
+void
+uip_add_rcv_nxt(u16_t n)
+{
+ uip_conn->rcv_nxt[3] += (n & 0xff);
+ uip_conn->rcv_nxt[2] += (n >> 8);
+
+ if(uip_conn->rcv_nxt[2] < (n >> 8)) {
+ ++uip_conn->rcv_nxt[1];
+ if(uip_conn->rcv_nxt[1] == 0) {
+ ++uip_conn->rcv_nxt[0];
+ }
+ }
+
+
+ if(uip_conn->rcv_nxt[3] < (n & 0xff)) {
+ ++uip_conn->rcv_nxt[2];
+ if(uip_conn->rcv_nxt[2] == 0) {
+ ++uip_conn->rcv_nxt[1];
+ if(uip_conn->rcv_nxt[1] == 0) {
+ ++uip_conn->rcv_nxt[0];
+ }
+ }
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+void
+uip_add32(u8_t *op32, u16_t op16)
+{
+
+ uip_acc32[3] = op32[3] + (op16 & 0xff);
+ uip_acc32[2] = op32[2] + (op16 >> 8);
+ uip_acc32[1] = op32[1];
+ uip_acc32[0] = op32[0];
+
+ if(uip_acc32[2] < (op16 >> 8)) {
+ ++uip_acc32[1];
+ if(uip_acc32[1] == 0) {
+ ++uip_acc32[0];
+ }
+ }
+
+
+ if(uip_acc32[3] < (op16 & 0xff)) {
+ ++uip_acc32[2];
+ if(uip_acc32[2] == 0) {
+ ++uip_acc32[1];
+ if(uip_acc32[1] == 0) {
+ ++uip_acc32[0];
+ }
+ }
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+
+static u16_t
+chksum(u16_t *sdata, u16_t len)
+{
+ u16_t acc;
+ for(acc = 0; len > 1; len -= 2) {
+ acc += *sdata;
+ if(acc < *sdata) {
+ /* Overflow, so we add the carry to acc (i.e., increase by
+ one). */
+ ++acc;
+ }
+ ++sdata;
+ }
+
+ /* add up any odd byte */
+ if(len == 1) {
+ acc += htons(((u16_t)(*(u8_t *)sdata)) << 8);
+ if(acc < htons(((u16_t)(*(u8_t *)sdata)) << 8)) {
+ ++acc;
+ }
+ }
+
+ return acc;
+}
+/*-----------------------------------------------------------------------------------*/
+u16_t
+uip_ipchksum(void)
+{
+ return chksum((u16_t *)&uip_buf[UIP_LLH_LEN], UIP_IPH_LEN);
+}
+/*-----------------------------------------------------------------------------------*/
+u16_t
+uip_tcpchksum(void)
+{
+ u16_t hsum, sum;
+
+
+ /* Compute the checksum of the TCP header. */
+ hsum = uip_chksum((u16_t *)&uip_buf[UIP_LLH_LEN + UIP_IPH_LEN], UIP_TCPH_LEN);
+
+ /* Compute the checksum of the data in the TCP packet and add it to
+ the TCP header checksum. */
+ sum = uip_chksum((u16_t *)uip_appdata,
+ (u16_t)(((((u16_t)(BUF->len[0]) << 8) + BUF->len[1]) -
+ UIP_IPTCPH_LEN)));
+
+ if((sum += hsum) < hsum) {
+ ++sum;
+ }
+
+ if((sum += BUF->srcipaddr[0]) < BUF->srcipaddr[0]) {
+ ++sum;
+ }
+ if((sum += BUF->srcipaddr[1]) < BUF->srcipaddr[1]) {
+ ++sum;
+ }
+ if((sum += BUF->destipaddr[0]) < BUF->destipaddr[0]) {
+ ++sum;
+ }
+ if((sum += BUF->destipaddr[1]) < BUF->destipaddr[1]) {
+ ++sum;
+ }
+ if((sum += (u16_t)htons((u16_t)IP_PROTO_TCP)) < (u16_t)htons((u16_t)IP_PROTO_TCP)) {
+ ++sum;
+ }
+
+ hsum = (u16_t)HTONS((((u16_t)(BUF->len[0]) << 8) + BUF->len[1]) - UIP_IPH_LEN);
+
+ if((sum += hsum) < hsum) {
+ ++sum;
+ }
+
+ return sum;
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-avr/uip/uip_arch.h b/contiki-avr/uip/uip_arch.h
new file mode 100644
index 0000000..1d393c5
--- /dev/null
+++ b/contiki-avr/uip/uip_arch.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2001, Adam Dunkels.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Adam Dunkels.
+ * 4. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This file is part of the uIP TCP/IP stack.
+ *
+ * $Id: uip_arch.h,v 1.2 2005/01/26 23:36:23 oliverschmidt Exp $
+ *
+ */
+
+#ifndef __UIP_ARCH_H__
+#define __UIP_ARCH_H__
+
+#include "uip.h"
+
+void uip_add_rcv_nxt(u16_t n);
+void uip_add32(u8_t *op32, u16_t op16);
+u16_t uip_ipchksum(void);
+u16_t uip_tcpchksum(void);
+
+#endif /* __UIP_ARCH_H__ */