Index: uspace/Makefile
===================================================================
--- uspace/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -33,42 +33,45 @@
 
 DIRS = \
+	app/bdsh \
+	app/edit \
+	app/getterm \
+	app/init \
+	app/klog \
+	app/mkfat \
+	app/redir \
+	app/tester \
+	app/tetris \
+	app/trace \
+	srv/clip \
+	srv/devmap \
+	srv/loader \
+	srv/ns \
+	srv/vfs \
 	srv/bd/ata_bd \
 	srv/bd/file_bd \
 	srv/bd/gxe_bd \
 	srv/bd/rd \
-	srv/ns \
-	srv/loader \
-	srv/fb \
-	srv/kbd \
-	srv/console \
+	srv/bd/part/mbr_part \
 	srv/fs/fat \
 	srv/fs/tmpfs \
 	srv/fs/devfs \
-	srv/vfs \
-	srv/devmap \
-	srv/part/mbr_part \
-	srv/clip \
-	app/edit \
-	app/tetris \
-	app/tester \
-	app/trace \
-	app/klog \
-	app/init \
-	app/getterm \
-	app/redir \
-	app/bdsh
+	srv/hid/console \
+	srv/hid/c_mouse \
+	srv/hid/fb \
+	srv/hid/kbd \
+	srv/hw/char/i8042
 
 ifeq ($(UARCH),amd64)
-	DIRS += srv/pci
+	DIRS += srv/hw/bus/pci
 endif
 
 ifeq ($(UARCH),ia32)
-	DIRS += srv/pci
+	DIRS += srv/hw/bus/pci
 endif
 
 ifeq ($(UARCH),sparc64)
 	DIRS += \
-		srv/cir/fhc \
-		srv/cir/obio
+		srv/hw/cir/fhc \
+		srv/hw/cir/obio
 endif
 
@@ -96,9 +99,9 @@
 
 $(BUILDS): $(LIBC_BUILD) $(LIBS_BUILD)
-	$(MAKE) -C $(basename $@) all
+	$(MAKE) -C $(basename $@) all PRECHECK=$(PRECHECK)
 
 $(LIBS_BUILD): $(LIBC_BUILD)
-	$(MAKE) -C $(basename $@) all
+	$(MAKE) -C $(basename $@) all PRECHECK=$(PRECHECK)
 
 $(LIBC_BUILD):
-	$(MAKE) -C $(basename $@) all
+	$(MAKE) -C $(basename $@) all PRECHECK=$(PRECHECK)
Index: uspace/app/bdsh/Makefile
===================================================================
--- uspace/app/bdsh/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/app/bdsh/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -34,7 +34,7 @@
 all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
 
 clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
 	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/app/bdsh/Makefile.build
===================================================================
--- uspace/app/bdsh/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/app/bdsh/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -42,4 +42,5 @@
 	cmds/modules/help/help.c \
 	cmds/modules/mkdir/mkdir.c \
+	cmds/modules/mkfile/mkfile.c \
 	cmds/modules/rm/rm.c \
 	cmds/modules/bdd/bdd.c \
@@ -79,4 +80,7 @@
 %.o: %.c $(DEPEND)
 	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
 
 $(DEPEND):
Index: uspace/app/bdsh/Makefile.common
===================================================================
--- uspace/app/bdsh/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/app/bdsh/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -38,3 +38,4 @@
 DEPEND = Makefile.depend
 DEPEND_PREV = $(DEPEND).prev
+JOB = bdsh.job
 OUTPUT = bdsh
Index: uspace/app/bdsh/cmds/modules/mkfile/entry.h
===================================================================
--- uspace/app/bdsh/cmds/modules/mkfile/entry.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/app/bdsh/cmds/modules/mkfile/entry.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,9 @@
+#ifndef MKFILE_ENTRY_H
+#define MKFILE_ENTRY_H
+
+/* Entry points for the mkfile command */
+extern int cmd_mkfile(char **);
+extern void help_cmd_mkfile(unsigned int);
+
+#endif /* MKFILE_ENTRY_H */
+
Index: uspace/app/bdsh/cmds/modules/mkfile/mkfile.c
===================================================================
--- uspace/app/bdsh/cmds/modules/mkfile/mkfile.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/app/bdsh/cmds/modules/mkfile/mkfile.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,186 @@
+/*
+ * Copyright (c) 2009 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <dirent.h>
+#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <macros.h>
+#include <getopt.h>
+#include <stdarg.h>
+#include <string.h>
+#include <ctype.h>
+
+#include "config.h"
+#include "errors.h"
+#include "util.h"
+#include "entry.h"
+#include "mkfile.h"
+#include "cmds.h"
+
+/** Number of bytes to write at a time */
+#define BUFFER_SIZE 16384
+
+static char *cmdname = "mkfile";
+
+static struct option const long_options[] = {
+	{"size", required_argument, 0, 's'},
+	{"help", no_argument, 0, 'h'},
+	{0, 0, 0, 0}
+};
+
+void help_cmd_mkfile(unsigned int level)
+{
+	if (level == HELP_SHORT) {
+		printf("`%s' creates a new zero-filled file\n", cmdname);
+	} else {
+		help_cmd_mkfile(HELP_SHORT);
+		printf(
+		"Usage:  %s [options] <path>\n"
+		"Options:\n"
+		"  -h, --help       A short option summary\n"
+		"  -s, --size sz    Size of the file\n"
+		"\n"
+		"Size is a number followed by 'k', 'm' or 'g' for kB, MB, GB.\n"
+		"E.g. 100k, 2m, 1g.\n",
+		cmdname);
+	}
+
+	return;
+}
+
+/** Parse size specification.
+ *
+ * Size specification is in the form <decimal_number><unit> where
+ * <unit> is 'k', 'm' or 'g' for kB, MB, GB.
+ *
+ * @param str	String containing the size specification.
+ * @return	Non-negative size in bytes on success, -1 on failure.
+ */
+static ssize_t read_size(const char *str)
+{
+	ssize_t number, unit;
+	char *ep;
+
+	number = strtol(str, &ep, 10);
+	if (ep[0] == '\0')
+		return number;
+
+	if (ep[1] != '\0')
+		    return -1;
+
+	switch (tolower(ep[0])) {
+	case 'k': unit = 1024; break;
+	case 'm': unit = 1024*1024; break;
+	case 'g': unit = 1024*1024*1024; break;
+	default: return -1;
+	}
+
+	return number * unit;
+}
+
+int cmd_mkfile(char **argv)
+{
+	unsigned int argc;
+	int c, opt_ind;
+	int fd;
+	ssize_t file_size;
+	ssize_t total_written;
+	ssize_t to_write, rc;
+	char *file_name;
+	void *buffer;
+
+	file_size = 0;
+
+	argc = cli_count_args(argv);
+
+	for (c = 0, optind = 0, opt_ind = 0; c != -1;) {
+		c = getopt_long(argc, argv, "pvhVfm:", long_options, &opt_ind);
+		switch (c) {
+		case 'h':
+			help_cmd_mkfile(HELP_LONG);
+			return CMD_SUCCESS;
+		case 's':
+			file_size = read_size(optarg);
+			if (file_size < 0) {
+				printf("%s: Invalid file size specification.\n",
+				    cmdname);
+				return CMD_FAILURE;
+			}
+			break;
+		}
+	}
+
+	argc -= optind;
+
+	if (argc != 1) {
+		printf("%s: incorrect number of arguments. Try `%s --help'\n",
+			cmdname, cmdname);
+		return CMD_FAILURE;
+	}
+
+	file_name = argv[optind];
+
+	fd = open(file_name, O_CREAT | O_EXCL | O_WRONLY, 0666);
+	if (fd < 0) {
+		printf("%s: failed to create file %s.\n", cmdname, file_name);
+		return CMD_FAILURE;
+	}
+
+	buffer = calloc(BUFFER_SIZE, 1);
+	if (buffer == NULL) {
+		printf("%s: Error, out of memory.\n", cmdname);
+		return CMD_FAILURE;
+	}
+
+	total_written = 0;
+	while (total_written < file_size) {
+		to_write = min(file_size - total_written, BUFFER_SIZE);
+		rc = write(fd, buffer, to_write);
+		if (rc <= 0) {
+			printf("%s: Error writing file (%d).\n", cmdname, rc);
+			close(fd);
+			return CMD_FAILURE;
+		}
+		total_written += rc;
+	}
+
+	rc = close(fd);
+	if (rc != 0) {
+		printf("%s: Error writing file (%d).\n", cmdname, rc);
+		return CMD_FAILURE;
+	}
+
+	free(buffer);
+
+	return CMD_SUCCESS;
+}
Index: uspace/app/bdsh/cmds/modules/mkfile/mkfile.h
===================================================================
--- uspace/app/bdsh/cmds/modules/mkfile/mkfile.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/app/bdsh/cmds/modules/mkfile/mkfile.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,8 @@
+#ifndef MKFILE_H
+#define MKFILE_H
+
+/* Prototypes for the mkfile command, excluding entry points */
+
+
+#endif /* MKFILE_H */
+
Index: uspace/app/bdsh/cmds/modules/mkfile/mkfile_def.h
===================================================================
--- uspace/app/bdsh/cmds/modules/mkfile/mkfile_def.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/app/bdsh/cmds/modules/mkfile/mkfile_def.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,8 @@
+{
+	"mkfile",
+	"Create new file",
+	&cmd_mkfile,
+	&help_cmd_mkfile,
+},
+
+
Index: uspace/app/bdsh/cmds/modules/modules.h
===================================================================
--- uspace/app/bdsh/cmds/modules/modules.h	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/app/bdsh/cmds/modules/modules.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -20,4 +20,5 @@
 #include "help/entry.h"
 #include "mkdir/entry.h"
+#include "mkfile/entry.h"
 #include "rm/entry.h"
 #include "bdd/entry.h"
@@ -39,4 +40,5 @@
 #include "help/help_def.h"
 #include "mkdir/mkdir_def.h"
+#include "mkfile/mkfile_def.h"
 #include "rm/rm_def.h"
 #include "bdd/bdd_def.h"
Index: uspace/app/edit/Makefile
===================================================================
--- uspace/app/edit/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/app/edit/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -34,7 +34,7 @@
 all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
 
 clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
 	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/app/edit/Makefile.build
===================================================================
--- uspace/app/edit/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/app/edit/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -57,4 +57,7 @@
 %.o: %.c $(DEPEND)
 	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
 
 $(DEPEND):
Index: uspace/app/edit/Makefile.common
===================================================================
--- uspace/app/edit/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/app/edit/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -37,3 +37,4 @@
 DEPEND = Makefile.depend
 DEPEND_PREV = $(DEPEND).prev
+JOB = edit.job
 OUTPUT = edit
Index: uspace/app/edit/edit.c
===================================================================
--- uspace/app/edit/edit.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/app/edit/edit.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -98,4 +98,5 @@
 static bool done;
 static pane_t pane;
+static bool cursor_visible;
 
 static int scr_rows, scr_columns;
@@ -108,4 +109,8 @@
 /** Maximum filename length that can be entered. */
 #define INFNAME_MAX_LEN 128
+
+static void cursor_show(void);
+static void cursor_hide(void);
+static void cursor_setvis(bool visible);
 
 static void key_handle_unmod(console_event_t const *ev);
@@ -199,4 +204,7 @@
 
 	/* Initial display */
+	cursor_visible = true;
+
+	cursor_hide();
 	console_clear(con);
 	pane_text_display();
@@ -205,5 +213,5 @@
 		status_display("File not found. Starting empty file.");
 	pane_caret_display();
-
+	cursor_show();
 
 	done = false;
@@ -230,4 +238,6 @@
 		/* Redraw as necessary. */
 
+		cursor_hide();
+
 		if (pane.rflags & REDRAW_TEXT)
 			pane_text_display();
@@ -238,4 +248,6 @@
 		if (pane.rflags & REDRAW_CARET)
 			pane_caret_display();
+
+		cursor_show();
 	}
 
@@ -243,4 +255,22 @@
 
 	return 0;
+}
+
+static void cursor_show(void)
+{
+	cursor_setvis(true);
+}
+
+static void cursor_hide(void)
+{
+	cursor_setvis(false);
+}
+
+static void cursor_setvis(bool visible)
+{
+	if (cursor_visible != visible) {
+		console_cursor_visibility(con, visible);
+		cursor_visible = visible;
+	}
 }
 
Index: uspace/app/getterm/Makefile
===================================================================
--- uspace/app/getterm/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/app/getterm/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -34,7 +34,7 @@
 all: $(LIBC_PREFIX)/../../../version $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
 
 clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
 	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/app/getterm/Makefile.build
===================================================================
--- uspace/app/getterm/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/app/getterm/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -60,4 +60,7 @@
 %.o: %.c $(DEPEND)
 	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
 
 $(DEPEND):
Index: uspace/app/getterm/Makefile.common
===================================================================
--- uspace/app/getterm/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/app/getterm/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -37,3 +37,4 @@
 DEPEND = Makefile.depend
 DEPEND_PREV = $(DEPEND).prev
+JOB = getterm.job
 OUTPUT = getterm
Index: uspace/app/init/Makefile
===================================================================
--- uspace/app/init/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/app/init/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -34,7 +34,7 @@
 all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
 
 clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
 	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/app/init/Makefile.build
===================================================================
--- uspace/app/init/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/app/init/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -56,4 +56,7 @@
 %.o: %.c $(DEPEND)
 	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
 
 $(DEPEND):
Index: uspace/app/init/Makefile.common
===================================================================
--- uspace/app/init/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/app/init/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -37,3 +37,4 @@
 DEPEND = Makefile.depend
 DEPEND_PREV = $(DEPEND).prev
+JOB = init.job
 OUTPUT = init
Index: uspace/app/init/init.c
===================================================================
--- uspace/app/init/init.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/app/init/init.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -265,4 +265,6 @@
 	spawn("/srv/fhc");
 	spawn("/srv/obio");
+	srv_start("/srv/i8042");
+	srv_start("/srv/c_mouse");
 
 	spawn("/srv/fb");
Index: uspace/app/klog/Makefile
===================================================================
--- uspace/app/klog/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/app/klog/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -34,7 +34,7 @@
 all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
 
 clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
 	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/app/klog/Makefile.build
===================================================================
--- uspace/app/klog/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/app/klog/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -56,4 +56,7 @@
 %.o: %.c $(DEPEND)
 	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
 
 $(DEPEND):
Index: uspace/app/klog/Makefile.common
===================================================================
--- uspace/app/klog/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/app/klog/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -37,3 +37,4 @@
 DEPEND = Makefile.depend
 DEPEND_PREV = $(DEPEND).prev
+JOB = klog.job
 OUTPUT = klog
Index: uspace/app/mkfat/Makefile
===================================================================
--- uspace/app/mkfat/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/app/mkfat/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,40 @@
+#
+# Copyright (c) 2005 Martin Decky
+# Copyright (c) 2007 Jakub Jermar
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+include Makefile.common
+
+.PHONY: all clean
+
+all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
+	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
+
+clean:
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
+	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/app/mkfat/Makefile.build
===================================================================
--- uspace/app/mkfat/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/app/mkfat/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,66 @@
+#
+# Copyright (c) 2005 Martin Decky
+# Copyright (c) 2007 Jakub Jermar
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+## Setup toolchain
+#
+
+include Makefile.common
+include $(LIBC_PREFIX)/Makefile.toolchain
+
+CFLAGS += -I$(LIBBLOCK_PREFIX)
+
+## Sources
+#
+
+SOURCES = \
+	mkfat.c
+
+OBJECTS := $(addsuffix .o,$(basename $(SOURCES)))
+
+.PHONY: all
+
+all: $(OUTPUT) $(OUTPUT).disasm
+
+-include $(DEPEND)
+
+$(OUTPUT).disasm: $(OUTPUT)
+	$(OBJDUMP) -d $< > $@
+
+$(OUTPUT): $(OBJECTS) $(LIBS)
+	$(LD) -T $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
+
+%.o: %.c $(DEPEND)
+	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
+
+$(DEPEND):
+	makedepend -f - -- $(DEPEND_DEFS) $(CFLAGS) -- $(SOURCES) > $@ 2> /dev/null
+	-[ -f $(DEPEND_PREV) ] && diff -q $(DEPEND_PREV) $@ && mv -f $(DEPEND_PREV) $@
Index: uspace/app/mkfat/Makefile.common
===================================================================
--- uspace/app/mkfat/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/app/mkfat/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,40 @@
+#
+# Copyright (c) 2005 Martin Decky
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+
+## Common names
+#
+
+LIBC_PREFIX = ../../lib/libc
+SOFTINT_PREFIX = ../../lib/softint
+LIBBLOCK_PREFIX = ../../lib/libblock
+LIBS = $(LIBBLOCK_PREFIX)/libblock.a $(LIBC_PREFIX)/libc.a
+
+DEPEND = Makefile.depend
+DEPEND_PREV = $(DEPEND).prev
+OUTPUT = mkfat
Index: uspace/app/mkfat/fat.h
===================================================================
--- uspace/app/mkfat/fat.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/app/mkfat/fat.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,118 @@
+/*
+ * Copyright (c) 2008 Jakub Jermar
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup fs
+ * @{
+ */
+
+#ifndef FAT_FAT_H_
+#define FAT_FAT_H_
+
+#include <sys/types.h>
+
+#define BS_BLOCK		0
+#define BS_SIZE			512
+
+#define DIRENT_SIZE		32
+
+typedef struct fat_bs {
+	uint8_t		ji[3];		/**< Jump instruction. */
+	uint8_t		oem_name[8];
+	/* BIOS Parameter Block */
+	uint16_t	bps;		/**< Bytes per sector. */
+	uint8_t		spc;		/**< Sectors per cluster. */
+	uint16_t	rscnt;		/**< Reserved sector count. */
+	uint8_t		fatcnt;		/**< Number of FATs. */
+	uint16_t	root_ent_max;	/**< Maximum number of root directory
+					     entries. */
+	uint16_t	totsec16;	/**< Total sectors. 16-bit version. */
+	uint8_t		mdesc;		/**< Media descriptor. */
+	uint16_t	sec_per_fat;	/**< Sectors per FAT12/FAT16. */
+	uint16_t	sec_per_track;	/**< Sectors per track. */
+	uint16_t	headcnt;	/**< Number of heads. */
+	uint32_t	hidden_sec;	/**< Hidden sectors. */
+	uint32_t	totsec32;	/**< Total sectors. 32-bit version. */
+
+	union {
+		struct {
+			/* FAT12/FAT16 only: Extended BIOS Parameter Block */
+			/** Physical drive number. */
+			uint8_t		pdn;
+			uint8_t		reserved;
+			/** Extended boot signature. */
+			uint8_t		ebs;
+			/** Serial number. */
+			uint32_t	id;
+			/** Volume label. */
+			uint8_t		label[11];
+			/** FAT type. */
+			uint8_t		type[8];
+			/** Boot code. */
+			uint8_t		boot_code[448];
+			/** Boot sector signature. */
+			uint16_t	signature;
+		} __attribute__ ((packed));
+		struct fat32 {
+			/* FAT32 only */
+			/** Sectors per FAT. */
+			uint32_t	sectors_per_fat;
+			/** FAT flags. */
+			uint16_t	flags;
+			/** Version. */
+			uint16_t	version;
+			/** Cluster number of root directory. */
+			uint32_t	root_cluster;
+			/** Sector number of file system information sector. */
+			uint16_t	fsinfo_sec;
+			/** Sector number of boot sector copy. */
+			uint16_t	bscopy_sec;
+			uint8_t		reserved1[12];
+			/** Physical drive number. */
+			uint8_t		pdn;
+			uint8_t		reserved2;
+			/** Extended boot signature. */
+			uint8_t		ebs;
+			/** Serial number. */
+			uint32_t	id;
+			/** Volume label. */
+			uint8_t		label[11];
+			/** FAT type. */
+			uint8_t		type[8];
+			/** Boot code. */
+			uint8_t		boot_code[420];
+			/** Signature. */
+			uint16_t	signature;
+		} __attribute__ ((packed));
+	};
+} __attribute__ ((packed)) fat_bs_t;
+
+#endif
+
+/**
+ * @}
+ */
Index: uspace/app/mkfat/mkfat.c
===================================================================
--- uspace/app/mkfat/mkfat.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/app/mkfat/mkfat.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,347 @@
+/*
+ * Copyright (c) 2010 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup fs
+ * @{
+ */
+
+/**
+ * @file	mkfat.c
+ * @brief	Tool for creating new FAT file systems.
+ *
+ * Currently we can only create 16-bit FAT.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <libblock.h>
+#include <mem.h>
+#include <devmap.h>
+#include <byteorder.h>
+#include <errno.h>
+#include "fat.h"
+
+#define NAME	"mkfat"
+
+/** Divide and round up. */
+#define div_round_up(a, b) (((a) + (b) - 1) / (b))
+
+/** Predefined file-system parameters */
+enum {
+	sector_size		= 512,
+	sectors_per_cluster	= 8,
+	fat_count		= 2,
+	reserved_clusters	= 2,
+	media_descriptor	= 0xF8 /**< fixed disk */
+};
+
+/** Configurable file-system parameters */
+typedef struct fat_cfg {
+	uint32_t total_sectors;
+	uint16_t root_ent_max;
+	uint16_t addt_res_sectors;
+} fat_cfg_t;
+
+/** Derived file-system parameters */
+typedef struct fat_params {
+	struct fat_cfg cfg;
+	uint16_t reserved_sectors;
+	uint16_t rootdir_sectors;
+	uint32_t fat_sectors;
+	uint16_t total_clusters;
+} fat_params_t;
+
+static void syntax_print(void);
+
+static int fat_params_compute(struct fat_cfg const *cfg,
+    struct fat_params *par);
+static int fat_blocks_write(struct fat_params const *par,
+    dev_handle_t handle);
+static void fat_bootsec_create(struct fat_params const *par, struct fat_bs *bs);
+
+int main(int argc, char **argv)
+{
+	struct fat_params par;
+	struct fat_cfg cfg;
+
+	int rc;
+	char *dev_path;
+	dev_handle_t handle;
+	size_t block_size;
+	char *endptr;
+	bn_t dev_nblocks;
+
+	cfg.total_sectors = 0;
+	cfg.addt_res_sectors = 0;
+	cfg.root_ent_max = 128;
+
+	if (argc < 2) {
+		printf(NAME ": Error, argument missing.\n");
+		syntax_print();
+		return 1;
+	}
+
+	--argc; ++argv;
+
+	if (str_cmp(*argv, "--size") == 0) {
+		--argc; ++argv;
+		if (*argv == NULL) {
+			printf(NAME ": Error, argument missing.\n");
+			syntax_print();
+			return 1;
+		}
+
+		cfg.total_sectors = strtol(*argv, &endptr, 10);
+		if (*endptr != '\0') {
+			printf(NAME ": Error, invalid argument.\n");
+			syntax_print();
+			return 1;
+		}
+
+		--argc; ++argv;
+	}
+
+	if (argc != 1) {
+		printf(NAME ": Error, unexpected argument.\n");
+		syntax_print();
+		return 1;
+	}
+
+	dev_path = *argv;
+
+	rc = devmap_device_get_handle(dev_path, &handle, 0);
+	if (rc != EOK) {
+		printf(NAME ": Error resolving device `%s'.\n", dev_path);
+		return 2;
+	}
+
+	rc = block_init(handle, 2048);
+	if (rc != EOK)  {
+		printf(NAME ": Error initializing libblock.\n");
+		return 2;
+	}
+
+	rc = block_get_bsize(handle, &block_size);
+	if (rc != EOK) {
+		printf(NAME ": Error determining device block size.\n");
+		return 2;
+	}
+
+	rc = block_get_nblocks(handle, &dev_nblocks);
+	if (rc != EOK) {
+		printf(NAME ": Warning, failed to obtain block device size.\n");
+	} else {
+		printf(NAME ": Block device has %llu blocks.\n", dev_nblocks);
+		cfg.total_sectors = dev_nblocks;
+	}
+
+	if (block_size != 512) {
+		printf(NAME ": Error. Device block size is not 512 bytes.\n");
+		return 2;
+	}
+
+	if (cfg.total_sectors == 0) {
+		printf(NAME ": Error. You must specify filesystem size.\n");
+		return 1;
+	}
+
+	printf(NAME ": Creating FAT filesystem on device %s.\n", dev_path);
+
+	rc = fat_params_compute(&cfg, &par);
+	if (rc != EOK) {
+		printf(NAME ": Invalid file-system parameters.\n");
+		return 2;
+	}
+
+	rc = fat_blocks_write(&par, handle);
+	if (rc != EOK) {
+		printf(NAME ": Error writing device.\n");
+		return 2;
+	}
+
+	block_fini(handle);
+	printf("Success.\n");
+
+	return 0;
+}
+
+static void syntax_print(void)
+{
+	printf("syntax: mkfat [--size <num_blocks>] <device_name>\n");
+}
+
+/** Derive sizes of different filesystem structures.
+ *
+ * This function concentrates all the different computations of FAT
+ * file system params.
+ */
+static int fat_params_compute(struct fat_cfg const *cfg, struct fat_params *par)
+{
+	uint32_t fat_bytes;
+	uint32_t non_data_sectors_lb;
+
+	/*
+         * Make a conservative guess on the FAT size needed for the file
+         * system. The optimum could be potentially smaller since we
+         * do not subtract size of the FAT itself when computing the
+         * size of the data region.
+         */
+
+	par->reserved_sectors = 1 + cfg->addt_res_sectors;
+	par->rootdir_sectors = div_round_up(cfg->root_ent_max * DIRENT_SIZE,
+	    sector_size);
+	non_data_sectors_lb = par->reserved_sectors + par->rootdir_sectors;
+
+	par->total_clusters = div_round_up(cfg->total_sectors - non_data_sectors_lb,
+	    sectors_per_cluster);
+
+	fat_bytes = (par->total_clusters + 2) * 2;
+	par->fat_sectors = div_round_up(fat_bytes, sector_size);
+
+	par->cfg = *cfg;
+
+	return EOK;
+}
+
+/** Create file system with the given parameters. */
+static int fat_blocks_write(struct fat_params const *par, dev_handle_t handle)
+{
+	bn_t addr;
+	uint8_t *buffer;
+	int i;
+	uint32_t j;
+	int rc;
+	struct fat_bs bs;
+
+	fat_bootsec_create(par, &bs);
+
+	rc = block_write_direct(handle, BS_BLOCK, 1, &bs);
+	if (rc != EOK)
+		return EIO;
+
+	addr = BS_BLOCK + 1;
+
+	buffer = calloc(sector_size, 1);
+	if (buffer == NULL)
+		return ENOMEM;
+
+	/* Reserved sectors */
+	for (i = 0; i < par->reserved_sectors - 1; ++i) {
+		rc = block_write_direct(handle, addr, 1, buffer);
+		if (rc != EOK)
+			return EIO;
+
+		++addr;
+	}
+
+	/* File allocation tables */
+	for (i = 0; i < fat_count; ++i) {
+		printf("Writing allocation table %d.\n", i + 1);
+
+		for (j = 0; j < par->fat_sectors; ++j) {
+			memset(buffer, 0, sector_size);
+			if (j == 0) {
+				buffer[0] = media_descriptor;
+				buffer[1] = 0xFF;
+				buffer[2] = 0xFF;
+				buffer[3] = 0xFF;
+			}
+
+			rc = block_write_direct(handle, addr, 1, buffer);
+			if (rc != EOK)
+				return EIO;
+
+			++addr;
+		}
+	}
+
+	printf("Writing root directory.\n");
+
+	memset(buffer, 0, sector_size);
+
+	/* Root directory */
+	for (i = 0; i < par->rootdir_sectors; ++i) {
+		rc = block_write_direct(handle, addr, 1, buffer);
+		if (rc != EOK)
+			return EIO;
+
+		++addr;
+	}
+
+	free(buffer);
+
+	return EOK;
+}
+
+/** Construct boot sector with the given parameters. */
+static void fat_bootsec_create(struct fat_params const *par, struct fat_bs *bs)
+{
+	memset(bs, 0, sizeof(*bs));
+
+	bs->ji[0] = 0xEB;
+	bs->ji[1] = 0x3C;
+	bs->ji[2] = 0x90;
+
+	memcpy(bs->oem_name, "HELENOS ", 8);
+
+	/* BIOS Parameter Block */
+	bs->bps = host2uint16_t_le(sector_size);
+	bs->spc = sectors_per_cluster;
+	bs->rscnt = host2uint16_t_le(par->reserved_sectors);
+	bs->fatcnt = fat_count;
+	bs->root_ent_max = host2uint16_t_le(par->cfg.root_ent_max);
+
+	if (par->cfg.total_sectors < 0x10000)
+		bs->totsec16 = host2uint16_t_le(par->cfg.total_sectors);
+	else
+		bs->totsec16 = host2uint16_t_le(0);
+
+	bs->mdesc = media_descriptor;
+	bs->sec_per_fat = host2uint16_t_le(par->fat_sectors);
+	bs->sec_per_track = host2uint16_t_le(63);
+	bs->headcnt = host2uint16_t_le(6);
+	bs->hidden_sec = host2uint32_t_le(0);
+
+	if (par->cfg.total_sectors >= 0x10000)
+		bs->totsec32 = host2uint32_t_le(par->cfg.total_sectors);
+	else
+		bs->totsec32 = host2uint32_t_le(0);
+
+	/* Extended BPB */
+	bs->pdn = 0x80;
+	bs->ebs = 0x29;
+	bs->id = host2uint32_t_be(0x12345678);
+
+	memcpy(bs->label, "HELENOS_NEW", 11);
+	memcpy(bs->type, "FAT16   ", 8);
+	bs->signature = host2uint16_t_be(0x55AA);
+}
+
+/**
+ * @}
+ */
Index: uspace/app/redir/Makefile
===================================================================
--- uspace/app/redir/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/app/redir/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -34,7 +34,7 @@
 all: $(LIBC_PREFIX)/../../../version $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
 
 clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
 	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/app/redir/Makefile.build
===================================================================
--- uspace/app/redir/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/app/redir/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -56,4 +56,7 @@
 %.o: %.c $(DEPEND)
 	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
 
 $(DEPEND):
Index: uspace/app/redir/Makefile.common
===================================================================
--- uspace/app/redir/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/app/redir/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -37,3 +37,4 @@
 DEPEND = Makefile.depend
 DEPEND_PREV = $(DEPEND).prev
+JOB = redir.job
 OUTPUT = redir
Index: uspace/app/tester/Makefile
===================================================================
--- uspace/app/tester/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/app/tester/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -34,7 +34,7 @@
 all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
 
 clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
 	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/app/tester/Makefile.build
===================================================================
--- uspace/app/tester/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/app/tester/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -73,4 +73,7 @@
 %.o: %.c $(DEPEND)
 	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
 
 $(DEPEND):
Index: uspace/app/tester/Makefile.common
===================================================================
--- uspace/app/tester/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/app/tester/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -37,3 +37,4 @@
 DEPEND = Makefile.depend
 DEPEND_PREV = $(DEPEND).prev
+JOB = tester.job
 OUTPUT = tester
Index: uspace/app/tetris/Makefile
===================================================================
--- uspace/app/tetris/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/app/tetris/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -34,7 +34,7 @@
 all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
 
 clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
 	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/app/tetris/Makefile.build
===================================================================
--- uspace/app/tetris/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/app/tetris/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -60,4 +60,7 @@
 %.o: %.c $(DEPEND)
 	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
 
 $(DEPEND):
Index: uspace/app/tetris/Makefile.common
===================================================================
--- uspace/app/tetris/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/app/tetris/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -37,3 +37,4 @@
 DEPEND = Makefile.depend
 DEPEND_PREV = $(DEPEND).prev
+JOB = tetris.job
 OUTPUT = tetris
Index: uspace/app/trace/Makefile
===================================================================
--- uspace/app/trace/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/app/trace/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -34,7 +34,7 @@
 all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
 
 clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
 	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/app/trace/Makefile.build
===================================================================
--- uspace/app/trace/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/app/trace/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -61,4 +61,7 @@
 %.o: %.c $(DEPEND)
 	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
 
 $(DEPEND):
Index: uspace/app/trace/Makefile.common
===================================================================
--- uspace/app/trace/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/app/trace/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -37,3 +37,4 @@
 DEPEND = Makefile.depend
 DEPEND_PREV = $(DEPEND).prev
+JOB = trace.job
 OUTPUT = trace
Index: uspace/lib/libblock/Makefile
===================================================================
--- uspace/lib/libblock/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/lib/libblock/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -34,7 +34,7 @@
 all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBC_PREFIX)/libc.a
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
 
 clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(LIBBLOCK)
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(LIBBLOCK)
 	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/lib/libblock/Makefile.build
===================================================================
--- uspace/lib/libblock/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/lib/libblock/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -53,4 +53,7 @@
 %.o: %.c $(DEPEND)
 	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
 
 $(DEPEND):
Index: uspace/lib/libblock/Makefile.common
===================================================================
--- uspace/lib/libblock/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/lib/libblock/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -34,3 +34,4 @@
 DEPEND = Makefile.depend
 DEPEND_PREV = $(DEPEND).prev
+JOB = libblock.job
 LIBBLOCK = libblock.a
Index: uspace/lib/libblock/libblock.c
===================================================================
--- uspace/lib/libblock/libblock.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/lib/libblock/libblock.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -87,4 +87,5 @@
 static int write_blocks(devcon_t *devcon, bn_t ba, size_t cnt);
 static int get_block_size(int dev_phone, size_t *bsize);
+static int get_num_blocks(int dev_phone, bn_t *nblocks);
 
 static devcon_t *devcon_search(dev_handle_t dev_handle)
@@ -714,5 +715,5 @@
 
 	memcpy(devcon->comm_area, data, devcon->pblock_size * cnt);
-	rc = read_blocks(devcon, ba, cnt);
+	rc = write_blocks(devcon, ba, cnt);
 
 	fibril_mutex_unlock(&devcon->comm_area_lock);
@@ -736,4 +737,21 @@
 	
 	return get_block_size(devcon->dev_phone, bsize);
+}
+
+/** Get number of blocks on device.
+ *
+ * @param dev_handle	Device handle of the block device.
+ * @param nblocks	Output number of blocks.
+ *
+ * @return		EOK on success or negative error code on failure.
+ */
+int block_get_nblocks(dev_handle_t dev_handle, bn_t *nblocks)
+{
+	devcon_t *devcon;
+
+	devcon = devcon_search(dev_handle);
+	assert(devcon);
+	
+	return get_num_blocks(devcon->dev_phone, nblocks);
 }
 
@@ -789,4 +807,18 @@
 }
 
+/** Get total number of blocks on block device. */
+static int get_num_blocks(int dev_phone, bn_t *nblocks)
+{
+	ipcarg_t nb_l, nb_h;
+	int rc;
+
+	rc = async_req_0_2(dev_phone, BD_GET_NUM_BLOCKS, &nb_l, &nb_h);
+	if (rc == EOK) {
+		*nblocks = (bn_t) MERGE_LOUP32(nb_l, nb_h);
+	}
+
+	return rc;
+}
+
 /** @}
  */
Index: uspace/lib/libblock/libblock.h
===================================================================
--- uspace/lib/libblock/libblock.h	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/lib/libblock/libblock.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -60,6 +60,4 @@
 #define BLOCK_FLAGS_NOREAD	1
 
-typedef uint64_t bn_t;	/**< Block number type. */
-
 typedef struct block {
 	/** Mutex protecting the reference count. */
@@ -110,4 +108,5 @@
 
 extern int block_get_bsize(dev_handle_t, size_t *);
+extern int block_get_nblocks(dev_handle_t, bn_t *);
 extern int block_read_direct(dev_handle_t, bn_t, size_t, void *);
 extern int block_write_direct(dev_handle_t, bn_t, size_t, const void *);
Index: uspace/lib/libc/Makefile
===================================================================
--- uspace/lib/libc/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/lib/libc/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -33,7 +33,7 @@
 all: ../../../Makefile.config ../../../config.h ../../../config.defs
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
 
 clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(INCLUDE_KERNEL) $(INCLUDE_ARCH) $(INCLUDE_LIBARCH) $(LIBC) arch/*/_link.ld
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(INCLUDE_KERNEL) $(INCLUDE_ARCH) $(INCLUDE_LIBARCH) $(LIBC) arch/*/_link.ld
 	find generic/ arch/*/ -name '*.o' -follow -exec rm \{\} \;
Index: uspace/lib/libc/Makefile.build
===================================================================
--- uspace/lib/libc/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/lib/libc/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -112,10 +112,19 @@
 %.o: %.S $(DEPEND)
 	$(CC) $(DEFS) $(AFLAGS) $(CFLAGS) -D__ASM__ -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ as asm/preproc $(DEFS) $(AFLAGS) $(CFLAGS) -D__ASM__
+endif
 
 %.o: %.s $(DEPEND)
 	$(AS) $(AFLAGS) $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ as asm $(AFLAGS)
+endif
 
 %.o: %.c $(DEPEND)
 	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
 
 $(DEPEND): $(INCLUDE_KERNEL) $(INCLUDE_ARCH) $(INCLUDE_LIBARCH)
Index: uspace/lib/libc/Makefile.common
===================================================================
--- uspace/lib/libc/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/lib/libc/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -33,4 +33,5 @@
 DEPEND = Makefile.depend
 DEPEND_PREV = $(DEPEND).prev
+JOB = libc.job
 LIBC = libc.a
 INCLUDE_KERNEL = include/kernel
Index: uspace/lib/libc/Makefile.toolchain
===================================================================
--- uspace/lib/libc/Makefile.toolchain	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/lib/libc/Makefile.toolchain	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -78,4 +78,6 @@
 #
 
+JOBFILE = $(LIBC_PREFIX)/../../../tools/jobfile.py
+
 ifeq ($(COMPILER),gcc_cross)
 	CC = $(TOOLCHAIN_DIR)/$(TARGET)-gcc
Index: uspace/lib/libc/generic/io/io.c
===================================================================
--- uspace/lib/libc/generic/io/io.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/lib/libc/generic/io/io.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -554,4 +554,15 @@
 }
 
+int ftell(FILE *stream)
+{
+	off_t rc = lseek(stream->fd, 0, SEEK_CUR);
+	if (rc == (off_t) (-1)) {
+		/* errno has been set by lseek. */
+		return -1;
+	}
+
+	return rc;
+}
+
 void rewind(FILE *stream)
 {
@@ -584,4 +595,10 @@
 }
 
+void clearerr(FILE *stream)
+{
+	stream->eof = false;
+	stream->error = false;
+}
+
 int fphone(FILE *stream)
 {
Index: uspace/lib/libc/include/ipc/bd.h
===================================================================
--- uspace/lib/libc/include/ipc/bd.h	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/lib/libc/include/ipc/bd.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -40,4 +40,5 @@
 typedef enum {
 	BD_GET_BLOCK_SIZE = IPC_FIRST_USER_METHOD,
+	BD_GET_NUM_BLOCKS,
 	BD_READ_BLOCKS,
 	BD_WRITE_BLOCKS
Index: uspace/lib/libc/include/ipc/char.h
===================================================================
--- uspace/lib/libc/include/ipc/char.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/lib/libc/include/ipc/char.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2009 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup libcipc
+ * @{
+ */
+/** @file
+ * @brief Character device interface.
+ */ 
+
+#ifndef LIBC_IPC_CHAR_H_
+#define LIBC_IPC_CHAR_H_
+
+#include <ipc/ipc.h>
+
+typedef enum {
+	CHAR_WRITE_BYTE = IPC_FIRST_USER_METHOD
+} char_request_t;
+
+
+typedef enum {
+	CHAR_NOTIF_BYTE = IPC_FIRST_USER_METHOD
+} char_notif_t;
+
+#endif
+
+/** @}
+ */
Index: uspace/lib/libc/include/ipc/mouse.h
===================================================================
--- uspace/lib/libc/include/ipc/mouse.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/lib/libc/include/ipc/mouse.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2009 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup mouse
+ * @brief
+ * @{
+ */
+/** @file
+ */
+
+#ifndef LIBC_IPC_MOUSE_H_
+#define LIBC_IPC_MOUSE_H_
+
+#include <ipc/ipc.h>
+
+typedef enum {
+	MEVENT_BUTTON = IPC_FIRST_USER_METHOD,
+	MEVENT_MOVE
+} mouse_notif_t;
+
+#endif
+
+/**
+ * @}
+ */
Index: uspace/lib/libc/include/sys/types.h
===================================================================
--- uspace/lib/libc/include/sys/types.h	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/lib/libc/include/sys/types.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -40,4 +40,5 @@
 typedef long off_t;
 typedef int mode_t;
+typedef uint64_t bn_t;	/**< Block number type. */
 
 typedef int32_t wchar_t;
Index: uspace/lib/libfs/Makefile
===================================================================
--- uspace/lib/libfs/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/lib/libfs/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -34,7 +34,7 @@
 all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBC_PREFIX)/libc.a
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
 
 clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(LIBFS)
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(LIBFS)
 	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/lib/libfs/Makefile.build
===================================================================
--- uspace/lib/libfs/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/lib/libfs/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -53,4 +53,7 @@
 %.o: %.c $(DEPEND)
 	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
 
 $(DEPEND):
Index: uspace/lib/libfs/Makefile.common
===================================================================
--- uspace/lib/libfs/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/lib/libfs/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -34,3 +34,4 @@
 DEPEND = Makefile.depend
 DEPEND_PREV = $(DEPEND).prev
+JOB = libfs.job
 LIBFS = libfs.a
Index: uspace/lib/softfloat/Makefile
===================================================================
--- uspace/lib/softfloat/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/lib/softfloat/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -34,7 +34,7 @@
 all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBC_PREFIX)/libc.a
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
 
 clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(LIBSOFTFLOAT)
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(LIBSOFTFLOAT)
 	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/lib/softfloat/Makefile.build
===================================================================
--- uspace/lib/softfloat/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/lib/softfloat/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -63,4 +63,7 @@
 %.o: %.c $(DEPEND)
 	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
 
 $(DEPEND):
Index: uspace/lib/softfloat/Makefile.common
===================================================================
--- uspace/lib/softfloat/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/lib/softfloat/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -34,3 +34,4 @@
 DEPEND = Makefile.depend
 DEPEND_PREV = $(DEPEND).prev
+JOB = softfloat.job
 LIBSOFTFLOAT = libsoftfloat.a
Index: uspace/lib/softint/Makefile
===================================================================
--- uspace/lib/softint/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/lib/softint/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -34,7 +34,7 @@
 all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBC_PREFIX)/libc.a
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
 
 clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(LIBSOFTINT)
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(LIBSOFTINT)
 	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/lib/softint/Makefile.build
===================================================================
--- uspace/lib/softint/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/lib/softint/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -56,4 +56,7 @@
 %.o: %.c $(DEPEND)
 	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
 
 $(DEPEND):
Index: uspace/lib/softint/Makefile.common
===================================================================
--- uspace/lib/softint/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/lib/softint/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -34,3 +34,4 @@
 DEPEND = Makefile.depend
 DEPEND_PREV = $(DEPEND).prev
+JOB = softint.job
 LIBSOFTINT = libsoftint.a
Index: uspace/srv/bd/ata_bd/Makefile
===================================================================
--- uspace/srv/bd/ata_bd/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/bd/ata_bd/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -34,7 +34,7 @@
 all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
 
 clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
 	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/srv/bd/ata_bd/Makefile.build
===================================================================
--- uspace/srv/bd/ata_bd/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/bd/ata_bd/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -56,4 +56,7 @@
 %.o: %.c $(DEPEND)
 	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
 
 $(DEPEND):
Index: uspace/srv/bd/ata_bd/Makefile.common
===================================================================
--- uspace/srv/bd/ata_bd/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/bd/ata_bd/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -37,3 +37,4 @@
 DEPEND = Makefile.depend
 DEPEND_PREV = $(DEPEND).prev
+JOB = ata_bd.job
 OUTPUT = ata_bd
Index: uspace/srv/bd/ata_bd/ata_bd.c
===================================================================
--- uspace/srv/bd/ata_bd/ata_bd.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/bd/ata_bd/ata_bd.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -296,4 +296,8 @@
 			ipc_answer_1(callid, EOK, block_size);
 			continue;
+		case BD_GET_NUM_BLOCKS:
+			ipc_answer_2(callid, EOK, LOWER32(disk[disk_id].blocks),
+			    UPPER32(disk[disk_id].blocks));
+			continue;
 		default:
 			retval = EINVAL;
Index: uspace/srv/bd/file_bd/Makefile
===================================================================
--- uspace/srv/bd/file_bd/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/bd/file_bd/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -34,7 +34,7 @@
 all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
 
 clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
 	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/srv/bd/file_bd/Makefile.build
===================================================================
--- uspace/srv/bd/file_bd/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/bd/file_bd/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -56,4 +56,7 @@
 %.o: %.c $(DEPEND)
 	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
 
 $(DEPEND):
Index: uspace/srv/bd/file_bd/Makefile.common
===================================================================
--- uspace/srv/bd/file_bd/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/bd/file_bd/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -37,3 +37,4 @@
 DEPEND = Makefile.depend
 DEPEND_PREV = $(DEPEND).prev
+JOB = file_bd.job
 OUTPUT = file_bd
Index: uspace/srv/bd/file_bd/file_bd.c
===================================================================
--- uspace/srv/bd/file_bd/file_bd.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/bd/file_bd/file_bd.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -56,4 +56,5 @@
 
 static const size_t block_size = 512;
+static bn_t num_blocks;
 static FILE *img;
 
@@ -99,4 +100,5 @@
 {
 	int rc;
+	long img_size;
 
 	rc = devmap_driver_register(NAME, file_bd_connection);
@@ -109,4 +111,17 @@
 	if (img == NULL)
 		return EINVAL;
+
+	if (fseek(img, 0, SEEK_END) != 0) {
+		fclose(img);
+		return EIO;
+	}
+
+	img_size = ftell(img);
+	if (img_size < 0) {
+		fclose(img);
+		return EIO;
+	}
+
+	num_blocks = img_size / block_size;
 
 	fibril_mutex_initialize(&dev_lock);
@@ -174,4 +189,8 @@
 			ipc_answer_1(callid, EOK, block_size);
 			continue;
+		case BD_GET_NUM_BLOCKS:
+			ipc_answer_2(callid, EOK, LOWER32(num_blocks),
+			    UPPER32(num_blocks));
+			continue;
 		default:
 			retval = EINVAL;
@@ -186,8 +205,15 @@
 {
 	size_t n_rd;
+	int rc;
 
 	fibril_mutex_lock(&dev_lock);
 
-	fseek(img, ba * block_size, SEEK_SET);
+	clearerr(img);
+	rc = fseek(img, ba * block_size, SEEK_SET);
+	if (rc < 0) {
+		fibril_mutex_unlock(&dev_lock);
+		return EIO;
+	}
+
 	n_rd = fread(buf, block_size, cnt, img);
 
@@ -209,13 +235,25 @@
 {
 	size_t n_wr;
+	int rc;
 
 	fibril_mutex_lock(&dev_lock);
 
-	fseek(img, ba * block_size, SEEK_SET);
-	n_wr = fread(buf, block_size, cnt, img);
+	clearerr(img);
+	rc = fseek(img, ba * block_size, SEEK_SET);
+	if (rc < 0) {
+		fibril_mutex_unlock(&dev_lock);
+		return EIO;
+	}
+
+	n_wr = fwrite(buf, block_size, cnt, img);
 
 	if (ferror(img) || n_wr < cnt) {
 		fibril_mutex_unlock(&dev_lock);
 		return EIO;	/* Write error */
+	}
+
+	if (fflush(img) != 0) {
+		fibril_mutex_unlock(&dev_lock);
+		return EIO;
 	}
 
Index: uspace/srv/bd/gxe_bd/Makefile
===================================================================
--- uspace/srv/bd/gxe_bd/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/bd/gxe_bd/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -34,7 +34,7 @@
 all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
 
 clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
 	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/srv/bd/gxe_bd/Makefile.build
===================================================================
--- uspace/srv/bd/gxe_bd/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/bd/gxe_bd/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -56,4 +56,7 @@
 %.o: %.c $(DEPEND)
 	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
 
 $(DEPEND):
Index: uspace/srv/bd/gxe_bd/Makefile.common
===================================================================
--- uspace/srv/bd/gxe_bd/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/bd/gxe_bd/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -37,3 +37,4 @@
 DEPEND = Makefile.depend
 DEPEND_PREV = $(DEPEND).prev
+JOB = gxe_bd.job
 OUTPUT = gxe_bd
Index: uspace/srv/bd/gxe_bd/gxe_bd.c
===================================================================
--- uspace/srv/bd/gxe_bd/gxe_bd.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/bd/gxe_bd/gxe_bd.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -234,4 +234,7 @@
 			ipc_answer_1(callid, EOK, block_size);
 			continue;
+		case BD_GET_NUM_BLOCKS:
+			retval = ENOTSUP;
+			break;
 		default:
 			retval = EINVAL;
Index: uspace/srv/bd/part/mbr_part/Makefile
===================================================================
--- uspace/srv/bd/part/mbr_part/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/bd/part/mbr_part/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,40 @@
+#
+# Copyright (c) 2005 Martin Decky
+# Copyright (c) 2007 Jakub Jermar
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+include Makefile.common
+
+.PHONY: all clean
+
+all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
+	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
+
+clean:
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
+	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/srv/bd/part/mbr_part/Makefile.build
===================================================================
--- uspace/srv/bd/part/mbr_part/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/bd/part/mbr_part/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,66 @@
+#
+# Copyright (c) 2005 Martin Decky
+# Copyright (c) 2007 Jakub Jermar
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+## Setup toolchain
+#
+
+include Makefile.common
+include $(LIBC_PREFIX)/Makefile.toolchain
+
+CFLAGS += -I$(LIBBLOCK_PREFIX)
+
+## Sources
+#
+
+SOURCES = \
+	mbr_part.c
+
+OBJECTS := $(addsuffix .o,$(basename $(SOURCES)))
+
+.PHONY: all
+
+all: $(OUTPUT) $(OUTPUT).disasm
+
+-include $(DEPEND)
+
+$(OUTPUT).disasm: $(OUTPUT)
+	$(OBJDUMP) -d $< > $@
+
+$(OUTPUT): $(OBJECTS) $(LIBS)
+	$(LD) -T $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
+
+%.o: %.c $(DEPEND)
+	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
+
+$(DEPEND):
+	makedepend -f - -- $(DEPEND_DEFS) $(CFLAGS) -- $(SOURCES) > $@ 2> /dev/null
+	-[ -f $(DEPEND_PREV) ] && diff -q $(DEPEND_PREV) $@ && mv -f $(DEPEND_PREV) $@
Index: uspace/srv/bd/part/mbr_part/Makefile.common
===================================================================
--- uspace/srv/bd/part/mbr_part/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/bd/part/mbr_part/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,41 @@
+#
+# Copyright (c) 2005 Martin Decky
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+
+## Common names
+#
+
+LIBC_PREFIX = ../../../../lib/libc
+SOFTINT_PREFIX = ../../../../lib/softint
+LIBBLOCK_PREFIX = ../../../../lib/libblock
+LIBS = $(LIBBLOCK_PREFIX)/libblock.a $(LIBC_PREFIX)/libc.a
+
+DEPEND = Makefile.depend
+DEPEND_PREV = $(DEPEND).prev
+JOB = mbr_part.job
+OUTPUT = mbr_part
Index: uspace/srv/bd/part/mbr_part/mbr_part.c
===================================================================
--- uspace/srv/bd/part/mbr_part/mbr_part.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/bd/part/mbr_part/mbr_part.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,511 @@
+/*
+ * Copyright (c) 2009 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup bd
+ * @{
+ */
+
+/**
+ * @file
+ * @brief PC MBR partition driver
+ *
+ * Handles the PC MBR partitioning scheme. Uses a block device
+ * and provides one for each partition.
+ *
+ * Limitations:
+ * 
+ * Only works with boot records using LBA. CHS-only records are not
+ * supported.
+ *
+ * Referemces:
+ *	
+ * The source of MBR structures for this driver have been the following
+ * Wikipedia articles:
+ *	- http://en.wikipedia.org/wiki/Master_Boot_Record
+ *	- http://en.wikipedia.org/wiki/Extended_boot_record
+ *
+ * The fact that the extended partition has type 0x05 is pure observation.
+ * (TODO: can it have any other type number?)
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <ipc/ipc.h>
+#include <ipc/bd.h>
+#include <async.h>
+#include <as.h>
+#include <fibril_synch.h>
+#include <devmap.h>
+#include <sys/types.h>
+#include <libblock.h>
+#include <devmap.h>
+#include <errno.h>
+#include <bool.h>
+#include <byteorder.h>
+#include <assert.h>
+#include <macros.h>
+#include <task.h>
+
+#define NAME "mbr_part"
+
+enum {
+	/** Number of primary partition records */
+	N_PRIMARY	= 4,
+
+	/** Boot record signature */
+	BR_SIGNATURE	= 0xAA55
+};
+
+enum ptype {
+	/** Unused partition entry */
+	PT_UNUSED	= 0x00,
+	/** Extended partition */
+	PT_EXTENDED	= 0x05,
+};
+
+/** Partition */
+typedef struct part {
+	/** Primary partition entry is in use */
+	bool present;
+	/** Address of first block */
+	bn_t start_addr;
+	/** Number of blocks */
+	bn_t length;
+	/** Device representing the partition (outbound device) */
+	dev_handle_t dev;
+	/** Points to next partition structure. */
+	struct part *next;
+} part_t;
+
+/** Structure of a partition table entry */
+typedef struct {
+	uint8_t status;
+	/** CHS of fist block in partition */
+	uint8_t first_chs[3];
+	/** Partition type */
+	uint8_t ptype;
+	/** CHS of last block in partition */
+	uint8_t last_chs[3];
+	/** LBA of first block in partition */
+	uint32_t first_lba;
+	/** Number of blocks in partition */
+	uint32_t length;
+} __attribute__((packed)) pt_entry_t;
+
+/** Structure of a boot-record block */
+typedef struct {
+	/* Area for boot code */
+	uint8_t code_area[440];
+
+	/* Optional media ID */
+	uint32_t media_id;
+
+	uint16_t pad0;
+
+	/** Partition table entries */
+	pt_entry_t pte[N_PRIMARY];
+
+	/** Boot record block signature (@c BR_SIGNATURE) */
+	uint16_t signature;
+} __attribute__((packed)) br_block_t;
+
+
+static size_t block_size;
+
+/** Partitioned device (inbound device) */
+static dev_handle_t indev_handle;
+
+/** List of partitions. This structure is an empty head. */
+static part_t plist_head;
+
+static int mbr_init(const char *dev_name);
+static int mbr_part_read(void);
+static part_t *mbr_part_new(void);
+static void mbr_pte_to_part(uint32_t base, const pt_entry_t *pte, part_t *part);
+static void mbr_connection(ipc_callid_t iid, ipc_call_t *icall);
+static int mbr_bd_read(part_t *p, uint64_t ba, size_t cnt, void *buf);
+static int mbr_bd_write(part_t *p, uint64_t ba, size_t cnt, const void *buf);
+static int mbr_bsa_translate(part_t *p, uint64_t ba, size_t cnt, uint64_t *gba);
+
+int main(int argc, char **argv)
+{
+	printf(NAME ": PC MBR partition driver\n");
+
+	if (argc != 2) {
+		printf("Expected one argument (device name).\n");
+		return -1;
+	}
+
+	if (mbr_init(argv[1]) != EOK)
+		return -1;
+
+	printf(NAME ": Accepting connections\n");
+	task_retval(0);
+	async_manager();
+
+	/* Not reached */
+	return 0;
+}
+
+static int mbr_init(const char *dev_name)
+{
+	int rc;
+	int i;
+	char *name;
+	dev_handle_t dev;
+	uint64_t size_mb;
+	part_t *part;
+
+	rc = devmap_device_get_handle(dev_name, &indev_handle, 0);
+	if (rc != EOK) {
+		printf(NAME ": could not resolve device `%s'.\n", dev_name);
+		return rc;
+	}
+
+	rc = block_init(indev_handle, 2048);
+	if (rc != EOK)  {
+		printf(NAME ": could not init libblock.\n");
+		return rc;
+	}
+
+	/* Determine and verify block size. */
+
+	rc = block_get_bsize(indev_handle, &block_size);
+	if (rc != EOK) {
+		printf(NAME ": error getting block size.\n");
+		return rc;
+	}
+
+	if (block_size < 512 || (block_size % 512) != 0) {
+		printf(NAME ": invalid block size %d.\n");
+		return ENOTSUP;
+	}
+
+	/* Read in partition records. */
+	rc = mbr_part_read();
+	if (rc != EOK)
+		return rc;
+
+	/* Register the driver with device mapper. */
+	rc = devmap_driver_register(NAME, mbr_connection);
+	if (rc != EOK) {
+		printf(NAME ": Unable to register driver.\n");
+		return rc;
+	}
+
+	/*
+	 * Create partition devices.
+	 */
+	i = 0;
+	part = plist_head.next;
+
+	while (part != NULL) {
+		/* Skip absent partitions. */
+		if (!part->present) {
+			part = part->next;
+			++i;
+			continue;
+		}
+
+		asprintf(&name, "%sp%d", dev_name, i);
+		if (name == NULL)
+			return ENOMEM;
+
+		rc = devmap_device_register(name, &dev);
+		if (rc != EOK) {
+			devmap_hangup_phone(DEVMAP_DRIVER);
+			printf(NAME ": Unable to register device %s.\n", name);
+			return rc;
+		}
+
+		size_mb = (part->length * block_size + 1024 * 1024 - 1)
+		    / (1024 * 1024);
+		printf(NAME ": Registered device %s: %llu blocks %llu MB.\n",
+		    name, part->length, size_mb);
+
+		part->dev = dev;
+		free(name);
+
+		part = part->next;
+		++i;
+	}
+
+	return EOK;
+}
+
+/** Read in partition records. */
+static int mbr_part_read(void)
+{
+	int i, rc;
+	br_block_t *brb;
+	uint16_t sgn;
+	uint32_t ba;
+	part_t *ext_part, cp;
+	uint32_t base;
+	part_t *prev, *p;
+
+	brb = malloc(sizeof(br_block_t));
+	if (brb == NULL) {
+		printf(NAME ": Failed allocating memory.\n");
+		return ENOMEM;	
+	}
+
+	/*
+	 * Read primary partition entries.
+	 */
+
+	rc = block_read_direct(indev_handle, 0, 1, brb);
+	if (rc != EOK) {
+		printf(NAME ": Failed reading MBR block.\n");
+		return rc;
+	}
+
+	sgn = uint16_t_le2host(brb->signature);
+	if (sgn != BR_SIGNATURE) {
+		printf(NAME ": Invalid boot record signature 0x%04X.\n", sgn);
+		return EINVAL;
+	}
+
+	ext_part = NULL;
+	plist_head.next = NULL;
+	prev = &plist_head;
+
+	for (i = 0; i < N_PRIMARY; ++i) {
+		p = mbr_part_new();
+		if (p == NULL)
+			return ENOMEM;
+
+		mbr_pte_to_part(0, &brb->pte[i], p);
+		prev->next = p;
+		prev = p;
+
+		if (brb->pte[i].ptype == PT_EXTENDED) {
+			p->present = false;
+			ext_part = p;
+		}
+	}
+
+	if (ext_part == NULL)
+		return EOK;
+
+	printf("Extended partition found.\n");
+
+	/*
+	 * Read extended partition entries.
+	 */
+
+	cp.start_addr = ext_part->start_addr;
+	cp.length = ext_part->length;
+	base = ext_part->start_addr;
+
+	do {
+		/*
+		 * Addressing in the EBR chain is relative to the beginning
+		 * of the extended partition.
+		 */
+		ba = cp.start_addr;
+		rc = block_read_direct(indev_handle, ba, 1, brb);
+		if (rc != EOK) {
+			printf(NAME ": Failed reading EBR block at %u.\n", ba);
+			return rc;
+		}
+
+		sgn = uint16_t_le2host(brb->signature);
+		if (sgn != BR_SIGNATURE) {
+			printf(NAME ": Invalid boot record signature 0x%04X "
+			    " in EBR at %u.\n", sgn, ba);
+			return EINVAL;
+		}
+
+		p = mbr_part_new();
+		if (p == NULL)
+			return ENOMEM;
+
+		/* First PTE is the logical partition itself. */
+		mbr_pte_to_part(base, &brb->pte[0], p);
+		prev->next = p;
+		prev = p;
+
+		/* Second PTE describes next chain element. */
+		mbr_pte_to_part(base, &brb->pte[1], &cp);
+	} while (cp.present);
+
+	return EOK;
+}
+
+/** Allocate a new @c part_t structure. */
+static part_t *mbr_part_new(void)
+{
+	return malloc(sizeof(part_t));
+}
+
+/** Parse partition table entry. */
+static void mbr_pte_to_part(uint32_t base, const pt_entry_t *pte, part_t *part)
+{
+	uint32_t sa, len;
+
+	sa = uint32_t_le2host(pte->first_lba);
+	len = uint32_t_le2host(pte->length);
+
+	part->start_addr = base + sa;
+	part->length     = len;
+
+	part->present = (pte->ptype != PT_UNUSED) ? true : false;
+
+	part->dev = 0;
+	part->next = NULL;
+}
+
+static void mbr_connection(ipc_callid_t iid, ipc_call_t *icall)
+{
+	size_t comm_size;
+	void *fs_va = NULL;
+	ipc_callid_t callid;
+	ipc_call_t call;
+	ipcarg_t method;
+	dev_handle_t dh;
+	int flags;
+	int retval;
+	uint64_t ba;
+	size_t cnt;
+	part_t *part;
+
+	/* Get the device handle. */
+	dh = IPC_GET_ARG1(*icall);
+
+	/* 
+	 * Determine which partition device is the client connecting to.
+	 * A linear search is not terribly fast, but we only do this
+	 * once for each connection.
+	 */
+	part = plist_head.next;
+	while (part != NULL && part->dev != dh)
+		part = part->next;
+
+	if (part == NULL) {
+		ipc_answer_0(iid, EINVAL);
+		return;
+	}
+
+	assert(part->present == true);
+
+	/* Answer the IPC_M_CONNECT_ME_TO call. */
+	ipc_answer_0(iid, EOK);
+
+	if (!async_share_out_receive(&callid, &comm_size, &flags)) {
+		ipc_answer_0(callid, EHANGUP);
+		return;
+	}
+
+	fs_va = as_get_mappable_page(comm_size);
+	if (fs_va == NULL) {
+		ipc_answer_0(callid, EHANGUP);
+		return;
+	}
+
+	(void) async_share_out_finalize(callid, fs_va);
+
+	while (1) {
+		callid = async_get_call(&call);
+		method = IPC_GET_METHOD(call);
+		switch (method) {
+		case IPC_M_PHONE_HUNGUP:
+			/* The other side has hung up. */
+			ipc_answer_0(callid, EOK);
+			return;
+		case BD_READ_BLOCKS:
+			ba = MERGE_LOUP32(IPC_GET_ARG1(call),
+			    IPC_GET_ARG2(call));
+			cnt = IPC_GET_ARG3(call);
+			if (cnt * block_size > comm_size) {
+				retval = ELIMIT;
+				break;
+			}
+			retval = mbr_bd_read(part, ba, cnt, fs_va);
+			break;
+		case BD_WRITE_BLOCKS:
+			ba = MERGE_LOUP32(IPC_GET_ARG1(call),
+			    IPC_GET_ARG2(call));
+			cnt = IPC_GET_ARG3(call);
+			if (cnt * block_size > comm_size) {
+				retval = ELIMIT;
+				break;
+			}
+			retval = mbr_bd_write(part, ba, cnt, fs_va);
+			break;
+		case BD_GET_BLOCK_SIZE:
+			ipc_answer_1(callid, EOK, block_size);
+			continue;
+		case BD_GET_NUM_BLOCKS:
+			ipc_answer_2(callid, EOK, LOWER32(part->length),
+			    UPPER32(part->length));
+			continue;
+		default:
+			retval = EINVAL;
+			break;
+		}
+		ipc_answer_0(callid, retval);
+	}
+}
+
+/** Read blocks from partition. */
+static int mbr_bd_read(part_t *p, uint64_t ba, size_t cnt, void *buf)
+{
+	uint64_t gba;
+
+	if (mbr_bsa_translate(p, ba, cnt, &gba) != EOK)
+		return ELIMIT;
+
+	return block_read_direct(indev_handle, gba, cnt, buf);
+}
+
+/** Write blocks to partition. */
+static int mbr_bd_write(part_t *p, uint64_t ba, size_t cnt, const void *buf)
+{
+	uint64_t gba;
+
+	if (mbr_bsa_translate(p, ba, cnt, &gba) != EOK)
+		return ELIMIT;
+
+	return block_write_direct(indev_handle, gba, cnt, buf);
+}
+
+/** Translate block segment address with range checking. */
+static int mbr_bsa_translate(part_t *p, uint64_t ba, size_t cnt, uint64_t *gba)
+{
+	if (ba + cnt > p->length)
+		return ELIMIT;
+
+	*gba = p->start_addr + ba;
+	return EOK;
+}
+
+/**
+ * @}
+ */
Index: uspace/srv/bd/rd/Makefile
===================================================================
--- uspace/srv/bd/rd/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/bd/rd/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -34,7 +34,7 @@
 all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
 
 clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
 	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/srv/bd/rd/Makefile.build
===================================================================
--- uspace/srv/bd/rd/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/bd/rd/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -56,4 +56,7 @@
 %.o: %.c $(DEPEND)
 	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
 
 $(DEPEND):
Index: uspace/srv/bd/rd/Makefile.common
===================================================================
--- uspace/srv/bd/rd/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/bd/rd/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -37,3 +37,4 @@
 DEPEND = Makefile.depend
 DEPEND_PREV = $(DEPEND).prev
+JOB = rd.job
 OUTPUT = rd
Index: uspace/srv/bd/rd/rd.c
===================================================================
--- uspace/srv/bd/rd/rd.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/bd/rd/rd.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -153,4 +153,8 @@
 			ipc_answer_1(callid, EOK, block_size);
 			continue;
+		case BD_GET_NUM_BLOCKS:
+			ipc_answer_2(callid, EOK, LOWER32(rd_size / block_size),
+			    UPPER32(rd_size / block_size));
+			continue;
 		default:
 			/*
Index: uspace/srv/cir/fhc/Makefile
===================================================================
--- uspace/srv/cir/fhc/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,40 +1,0 @@
-#
-# Copyright (c) 2005 Martin Decky
-# Copyright (c) 2007 Jakub Jermar
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# - Redistributions of source code must retain the above copyright
-#   notice, this list of conditions and the following disclaimer.
-# - 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.
-# - 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.
-#
-
-include Makefile.common
-
-.PHONY: all clean
-
-all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
-	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
-
-clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
-	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/srv/cir/fhc/Makefile.build
===================================================================
--- uspace/srv/cir/fhc/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,61 +1,0 @@
-#
-# Copyright (c) 2005 Martin Decky
-# Copyright (c) 2007 Jakub Jermar
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# - Redistributions of source code must retain the above copyright
-#   notice, this list of conditions and the following disclaimer.
-# - 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.
-# - 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.
-#
-
-## Setup toolchain
-#
-
-include Makefile.common
-include $(LIBC_PREFIX)/Makefile.toolchain
-
-## Sources
-#
-
-SOURCES = \
-	fhc.c
-
-OBJECTS := $(addsuffix .o,$(basename $(SOURCES)))
-
-.PHONY: all
-
-all: $(OUTPUT) $(OUTPUT).disasm
-
--include $(DEPEND)
-
-$(OUTPUT).disasm: $(OUTPUT)
-	$(OBJDUMP) -d $< > $@
-
-$(OUTPUT): $(OBJECTS) $(LIBS)
-	$(LD) -T $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
-
-%.o: %.c $(DEPEND)
-	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
-
-$(DEPEND):
-	makedepend -f - -- $(DEPEND_DEFS) $(CFLAGS) -- $(SOURCES) > $@ 2> /dev/null
-	-[ -f $(DEPEND_PREV) ] && diff -q $(DEPEND_PREV) $@ && mv -f $(DEPEND_PREV) $@
Index: uspace/srv/cir/fhc/Makefile.common
===================================================================
--- uspace/srv/cir/fhc/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,39 +1,0 @@
-#
-# Copyright (c) 2005 Martin Decky
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# - Redistributions of source code must retain the above copyright
-#   notice, this list of conditions and the following disclaimer.
-# - 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.
-# - 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.
-#
-
-
-## Common names
-#
-
-LIBC_PREFIX = ../../../lib/libc
-SOFTINT_PREFIX = ../../../lib/softint
-LIBS = $(LIBC_PREFIX)/libc.a
-
-DEPEND = Makefile.depend
-DEPEND_PREV = $(DEPEND).prev
-OUTPUT = fhc
Index: uspace/srv/cir/fhc/fhc.c
===================================================================
--- uspace/srv/cir/fhc/fhc.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,157 +1,0 @@
-/*
- * Copyright (c) 2009 Jakub Jermar
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup fhc
- * @{
- */ 
-
-/**
- * @file	fhc.c
- * @brief	FHC bus controller driver.
- */
-
-#include <ipc/ipc.h>
-#include <ipc/services.h>
-#include <ipc/bus.h>
-#include <ipc/ns.h>
-#include <sysinfo.h>
-#include <as.h>
-#include <ddi.h>
-#include <align.h>
-#include <bool.h>
-#include <errno.h>
-#include <async.h>
-#include <align.h>
-#include <async.h>
-#include <stdio.h>
-#include <ipc/devmap.h>
-
-#define NAME "fhc"
-
-#define FHC_UART_INR	0x39	
-
-#define FHC_UART_IMAP	0x0
-#define FHC_UART_ICLR	0x4
-
-static void *fhc_uart_phys;
-static volatile uint32_t *fhc_uart_virt;
-static size_t fhc_uart_size;
-
-/** Handle one connection to fhc.
- *
- * @param iid		Hash of the request that opened the connection.
- * @param icall		Call data of the request that opened the connection.
- */
-static void fhc_connection(ipc_callid_t iid, ipc_call_t *icall)
-{
-	ipc_callid_t callid;
-	ipc_call_t call;
-
-	/*
-	 * Answer the first IPC_M_CONNECT_ME_TO call.
-	 */
-	ipc_answer_0(iid, EOK);
-
-	while (1) {
-		int inr;
-	
-		callid = async_get_call(&call);
-		switch (IPC_GET_METHOD(call)) {
-		case BUS_CLEAR_INTERRUPT:
-			inr = IPC_GET_ARG1(call);
-			switch (inr) {
-			case FHC_UART_INR:
-				fhc_uart_virt[FHC_UART_ICLR] = 0;
-				ipc_answer_0(callid, EOK);
-				break;
-			default:
-				ipc_answer_0(callid, ENOTSUP);
-				break;
-			}
-			break;
-		default:
-			ipc_answer_0(callid, EINVAL);
-			break;
-		}
-	}
-}
-
-/** Initialize the FHC driver.
- *
- * So far, the driver heavily depends on information provided by the kernel via
- * sysinfo. In the future, there should be a standalone FHC driver.
- */
-static bool fhc_init(void)
-{
-	ipcarg_t phonead;
-
-	fhc_uart_size = sysinfo_value("fhc.uart.size");
-	fhc_uart_phys = (void *) sysinfo_value("fhc.uart.physical");
-	
-	if (!fhc_uart_size) {
-		printf(NAME ": no FHC UART registers found\n");
-		return false;
-	}
-
-	fhc_uart_virt = as_get_mappable_page(fhc_uart_size);
-	
-	int flags = AS_AREA_READ | AS_AREA_WRITE;
-	int retval = physmem_map(fhc_uart_phys, (void *) fhc_uart_virt,
-	    ALIGN_UP(fhc_uart_size, PAGE_SIZE) >> PAGE_WIDTH, flags);
-	
-	if (retval < 0) {
-		printf(NAME ": Error mapping FHC UART registers\n");
-		return false;
-	}
-	
-	printf(NAME ": FHC UART registers at %p, %d bytes\n", fhc_uart_phys,
-	    fhc_uart_size);
-
-	async_set_client_connection(fhc_connection);
-	ipc_connect_to_me(PHONE_NS, SERVICE_FHC, 0, 0, &phonead);
-	
-	return true;
-}
-
-int main(int argc, char **argv)
-{
-	printf(NAME ": HelenOS FHC bus controller driver\n");
-	
-	if (!fhc_init())
-		return -1;
-	
-	printf(NAME ": Accepting connections\n");
-	async_manager();
-
-	/* Never reached */
-	return 0;
-}
-
-/**
- * @}
- */ 
Index: uspace/srv/cir/obio/Makefile
===================================================================
--- uspace/srv/cir/obio/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,40 +1,0 @@
-#
-# Copyright (c) 2005 Martin Decky
-# Copyright (c) 2007 Jakub Jermar
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# - Redistributions of source code must retain the above copyright
-#   notice, this list of conditions and the following disclaimer.
-# - 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.
-# - 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.
-#
-
-include Makefile.common
-
-.PHONY: all clean
-
-all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
-	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
-
-clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
-	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/srv/cir/obio/Makefile.build
===================================================================
--- uspace/srv/cir/obio/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,61 +1,0 @@
-#
-# Copyright (c) 2005 Martin Decky
-# Copyright (c) 2007 Jakub Jermar
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# - Redistributions of source code must retain the above copyright
-#   notice, this list of conditions and the following disclaimer.
-# - 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.
-# - 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.
-#
-
-## Setup toolchain
-#
-
-include Makefile.common
-include $(LIBC_PREFIX)/Makefile.toolchain
-
-## Sources
-#
-
-SOURCES = \
-	obio.c
-
-OBJECTS := $(addsuffix .o,$(basename $(SOURCES)))
-
-.PHONY: all
-
-all: $(OUTPUT) $(OUTPUT).disasm
-
--include $(DEPEND)
-
-$(OUTPUT).disasm: $(OUTPUT)
-	$(OBJDUMP) -d $< > $@
-
-$(OUTPUT): $(OBJECTS) $(LIBS)
-	$(LD) -T $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
-
-%.o: %.c $(DEPEND)
-	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
-
-$(DEPEND):
-	makedepend -f - -- $(DEPEND_DEFS) $(CFLAGS) -- $(SOURCES) > $@ 2> /dev/null
-	-[ -f $(DEPEND_PREV) ] && diff -q $(DEPEND_PREV) $@ && mv -f $(DEPEND_PREV) $@
Index: uspace/srv/cir/obio/Makefile.common
===================================================================
--- uspace/srv/cir/obio/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,39 +1,0 @@
-#
-# Copyright (c) 2005 Martin Decky
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# - Redistributions of source code must retain the above copyright
-#   notice, this list of conditions and the following disclaimer.
-# - 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.
-# - 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.
-#
-
-
-## Common names
-#
-
-LIBC_PREFIX = ../../../lib/libc
-SOFTINT_PREFIX = ../../../lib/softint
-LIBS = $(LIBC_PREFIX)/libc.a
-
-DEPEND = Makefile.depend
-DEPEND_PREV = $(DEPEND).prev
-OUTPUT = obio
Index: uspace/srv/cir/obio/obio.c
===================================================================
--- uspace/srv/cir/obio/obio.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,158 +1,0 @@
-/*
- * Copyright (c) 2009 Jakub Jermar
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup obio 
- * @{
- */ 
-
-/**
- * @file	obio.c
- * @brief	OBIO driver.
- *
- * OBIO is a short for on-board I/O. On UltraSPARC IIi and systems with U2P,
- * there is a piece of the root PCI bus controller address space, which
- * contains interrupt mapping and clear registers for all on-board devices.
- * Although UltraSPARC IIi and U2P are different in general, these registers can
- * be found at the same addresses.
- */
-
-#include <ipc/ipc.h>
-#include <ipc/services.h>
-#include <ipc/bus.h>
-#include <ipc/ns.h>
-#include <sysinfo.h>
-#include <as.h>
-#include <ddi.h>
-#include <align.h>
-#include <bool.h>
-#include <errno.h>
-#include <async.h>
-#include <align.h>
-#include <async.h>
-#include <stdio.h>
-#include <ipc/devmap.h>
-
-#define NAME "obio"
-
-#define OBIO_SIZE	0x1898	
-
-#define OBIO_IMR_BASE	0x200
-#define OBIO_IMR(ino)	(OBIO_IMR_BASE + ((ino) & INO_MASK))
-
-#define OBIO_CIR_BASE	0x300
-#define OBIO_CIR(ino)	(OBIO_CIR_BASE + ((ino) & INO_MASK))
-
-#define INO_MASK	0x1f
-
-static void *base_phys;
-static volatile uint64_t *base_virt;
-
-/** Handle one connection to obio.
- *
- * @param iid		Hash of the request that opened the connection.
- * @param icall		Call data of the request that opened the connection.
- */
-static void obio_connection(ipc_callid_t iid, ipc_call_t *icall)
-{
-	ipc_callid_t callid;
-	ipc_call_t call;
-
-	/*
-	 * Answer the first IPC_M_CONNECT_ME_TO call.
-	 */
-	ipc_answer_0(iid, EOK);
-
-	while (1) {
-		int inr;
-	
-		callid = async_get_call(&call);
-		switch (IPC_GET_METHOD(call)) {
-		case BUS_CLEAR_INTERRUPT:
-			inr = IPC_GET_ARG1(call);
-			base_virt[OBIO_CIR(inr & INO_MASK)] = 0;
-			ipc_answer_0(callid, EOK);
-			break;
-		default:
-			ipc_answer_0(callid, EINVAL);
-			break;
-		}
-	}
-}
-
-/** Initialize the OBIO driver.
- *
- * So far, the driver heavily depends on information provided by the kernel via
- * sysinfo. In the future, there should be a standalone OBIO driver.
- */
-static bool obio_init(void)
-{
-	ipcarg_t phonead;
-
-	base_phys = (void *) sysinfo_value("obio.base.physical");
-	
-	if (!base_phys) {
-		printf(NAME ": no OBIO registers found\n");
-		return false;
-	}
-
-	base_virt = as_get_mappable_page(OBIO_SIZE);
-	
-	int flags = AS_AREA_READ | AS_AREA_WRITE;
-	int retval = physmem_map(base_phys, (void *) base_virt,
-	    ALIGN_UP(OBIO_SIZE, PAGE_SIZE) >> PAGE_WIDTH, flags);
-	
-	if (retval < 0) {
-		printf(NAME ": Error mapping OBIO registers\n");
-		return false;
-	}
-	
-	printf(NAME ": OBIO registers with base at %p\n", base_phys);
-
-	async_set_client_connection(obio_connection);
-	ipc_connect_to_me(PHONE_NS, SERVICE_OBIO, 0, 0, &phonead);
-	
-	return true;
-}
-
-int main(int argc, char **argv)
-{
-	printf(NAME ": HelenOS OBIO driver\n");
-	
-	if (!obio_init())
-		return -1;
-	
-	printf(NAME ": Accepting connections\n");
-	async_manager();
-
-	/* Never reached */
-	return 0;
-}
-
-/**
- * @}
- */ 
Index: uspace/srv/clip/Makefile
===================================================================
--- uspace/srv/clip/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/clip/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -33,7 +33,7 @@
 all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
 
 clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
 	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/srv/clip/Makefile.build
===================================================================
--- uspace/srv/clip/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/clip/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -57,4 +57,7 @@
 %.o: %.c $(DEPEND)
 	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
 
 $(DEPEND):
Index: uspace/srv/clip/Makefile.common
===================================================================
--- uspace/srv/clip/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/clip/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -37,3 +37,4 @@
 DEPEND = Makefile.depend
 DEPEND_PREV = $(DEPEND).prev
+JOB = clip.job
 OUTPUT = clip
Index: uspace/srv/console/Makefile
===================================================================
--- uspace/srv/console/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,40 +1,0 @@
-#
-# Copyright (c) 2005 Martin Decky
-# Copyright (c) 2007 Jakub Jermar
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# - Redistributions of source code must retain the above copyright
-#   notice, this list of conditions and the following disclaimer.
-# - 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.
-# - 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.
-#
-
-include Makefile.common
-
-.PHONY: all clean
-
-all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
-	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
-
-clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
-	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/srv/console/Makefile.build
===================================================================
--- uspace/srv/console/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,79 +1,0 @@
-#
-# Copyright (c) 2005 Martin Decky
-# Copyright (c) 2007 Jakub Jermar
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# - Redistributions of source code must retain the above copyright
-#   notice, this list of conditions and the following disclaimer.
-# - 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.
-# - 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.
-#
-
-## Setup toolchain
-#
-
-include Makefile.common
-include $(LIBC_PREFIX)/Makefile.toolchain
-
-## Sources
-#
-
-SOURCES = \
-	console.c \
-	screenbuffer.c \
-	keybuffer.c \
-	gcons.c
-
-IMAGES = \
-	gfx/helenos.ppm \
-	gfx/nameic.ppm \
-	gfx/cons_selected.ppm \
-	gfx/cons_idle.ppm \
-	gfx/cons_has_data.ppm \
-	gfx/cons_kernel.ppm \
-	gfx/anim_1.ppm \
-	gfx/anim_2.ppm \
-	gfx/anim_3.ppm \
-	gfx/anim_4.ppm
-
-OBJECTS := $(addsuffix .o,$(basename $(SOURCES))) $(addsuffix .o,$(basename $(IMAGES)))
-
-.PHONY: all
-
-all: $(OUTPUT) $(OUTPUT).disasm
-
--include $(DEPEND)
-
-$(OUTPUT).disasm: $(OUTPUT)
-	$(OBJDUMP) -d $< > $@
-
-$(OUTPUT): $(OBJECTS) $(LIBS)
-	$(LD) -T $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
-
-%.o: %.c $(DEPEND)
-	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
-
-%.o: %.ppm
-	$(OBJCOPY) -I binary -O $(BFD_NAME) -B $(BFD_ARCH) $< $@
-
-$(DEPEND):
-	makedepend -f - -- $(DEPEND_DEFS) $(CFLAGS) -- $(SOURCES) > $@ 2> /dev/null
-	-[ -f $(DEPEND_PREV) ] && diff -q $(DEPEND_PREV) $@ && mv -f $(DEPEND_PREV) $@
Index: uspace/srv/console/Makefile.common
===================================================================
--- uspace/srv/console/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,39 +1,0 @@
-#
-# Copyright (c) 2005 Martin Decky
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# - Redistributions of source code must retain the above copyright
-#   notice, this list of conditions and the following disclaimer.
-# - 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.
-# - 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.
-#
-
-
-## Common names
-#
-
-LIBC_PREFIX = ../../lib/libc
-SOFTINT_PREFIX = ../../lib/softint
-LIBS = $(LIBC_PREFIX)/libc.a
-
-DEPEND = Makefile.depend
-DEPEND_PREV = $(DEPEND).prev
-OUTPUT = console
Index: uspace/srv/console/console.c
===================================================================
--- uspace/srv/console/console.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,805 +1,0 @@
-/*
- * Copyright (c) 2006 Josef Cejka
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup console
- * @{
- */
-/** @file
- */
-
-#include <libc.h>
-#include <ipc/ipc.h>
-#include <ipc/kbd.h>
-#include <io/keycode.h>
-#include <ipc/fb.h>
-#include <ipc/services.h>
-#include <errno.h>
-#include <ipc/console.h>
-#include <unistd.h>
-#include <async.h>
-#include <adt/fifo.h>
-#include <sys/mman.h>
-#include <stdio.h>
-#include <string.h>
-#include <sysinfo.h>
-#include <event.h>
-#include <devmap.h>
-#include <fcntl.h>
-#include <vfs/vfs.h>
-#include <fibril_synch.h>
-
-#include "console.h"
-#include "gcons.h"
-#include "keybuffer.h"
-#include "screenbuffer.h"
-
-#define NAME       "console"
-#define NAMESPACE  "term"
-
-/** Phone to the keyboard driver. */
-static int kbd_phone;
-
-/** Information about framebuffer */
-struct {
-	int phone;      /**< Framebuffer phone */
-	ipcarg_t cols;  /**< Framebuffer columns */
-	ipcarg_t rows;  /**< Framebuffer rows */
-	int color_cap;  /**< Color capabilities (FB_CCAP_xxx) */
-} fb_info;
-
-typedef struct {
-	size_t index;             /**< Console index */
-	size_t refcount;          /**< Connection reference count */
-	dev_handle_t dev_handle;  /**< Device handle */
-	keybuffer_t keybuffer;    /**< Buffer for incoming keys. */
-	screenbuffer_t scr;       /**< Screenbuffer for saving screen
-	                               contents and related settings. */
-} console_t;
-
-/** Array of data for virtual consoles */
-static console_t consoles[CONSOLE_COUNT];
-
-static console_t *active_console = &consoles[0];
-static console_t *prev_console = &consoles[0];
-static console_t *kernel_console = &consoles[KERNEL_CONSOLE];
-
-/** Pointer to memory shared with framebufer used for
-    faster virtual console switching */
-static keyfield_t *interbuffer = NULL;
-
-/** Information on row-span yet unsent to FB driver. */
-struct {
-	size_t col;  /**< Leftmost column of the span. */
-	size_t row;  /**< Row where the span lies. */
-	size_t cnt;  /**< Width of the span. */
-} fb_pending;
-
-static FIBRIL_MUTEX_INITIALIZE(input_mutex);
-static FIBRIL_CONDVAR_INITIALIZE(input_cv);
-
-static void curs_visibility(bool visible)
-{
-	async_msg_1(fb_info.phone, FB_CURSOR_VISIBILITY, visible); 
-}
-
-static void curs_hide_sync(void)
-{
-	ipc_call_sync_1_0(fb_info.phone, FB_CURSOR_VISIBILITY, false); 
-}
-
-static void curs_goto(size_t x, size_t y)
-{
-	async_msg_2(fb_info.phone, FB_CURSOR_GOTO, x, y);
-}
-
-static void screen_clear(void)
-{
-	async_msg_0(fb_info.phone, FB_CLEAR);
-}
-
-static void screen_yield(void)
-{
-	ipc_call_sync_0_0(fb_info.phone, FB_SCREEN_YIELD);
-}
-
-static void screen_reclaim(void)
-{
-	ipc_call_sync_0_0(fb_info.phone, FB_SCREEN_RECLAIM);
-}
-
-static void kbd_yield(void)
-{
-	ipc_call_sync_0_0(kbd_phone, KBD_YIELD);
-}
-
-static void kbd_reclaim(void)
-{
-	ipc_call_sync_0_0(kbd_phone, KBD_RECLAIM);
-}
-
-static void set_style(int style)
-{
-	async_msg_1(fb_info.phone, FB_SET_STYLE, style);
-}
-
-static void set_color(int fgcolor, int bgcolor, int flags)
-{
-	async_msg_3(fb_info.phone, FB_SET_COLOR, fgcolor, bgcolor, flags);
-}
-
-static void set_rgb_color(int fgcolor, int bgcolor)
-{
-	async_msg_2(fb_info.phone, FB_SET_RGB_COLOR, fgcolor, bgcolor); 
-}
-
-static void set_attrs(attrs_t *attrs)
-{
-	switch (attrs->t) {
-	case at_style:
-		set_style(attrs->a.s.style);
-		break;
-	case at_idx:
-		set_color(attrs->a.i.fg_color, attrs->a.i.bg_color,
-		    attrs->a.i.flags);
-		break;
-	case at_rgb:
-		set_rgb_color(attrs->a.r.fg_color, attrs->a.r.bg_color);
-		break;
-	}
-}
-
-static int ccap_fb_to_con(int ccap_fb, int *ccap_con)
-{
-	switch (ccap_fb) {
-	case FB_CCAP_NONE: *ccap_con = CONSOLE_CCAP_NONE; break;
-	case FB_CCAP_STYLE: *ccap_con = CONSOLE_CCAP_STYLE; break;
-	case FB_CCAP_INDEXED: *ccap_con = CONSOLE_CCAP_INDEXED; break;
-	case FB_CCAP_RGB: *ccap_con = CONSOLE_CCAP_RGB; break;
-	default: return EINVAL;
-	}
-
-	return EOK;
-}
-
-/** Send an area of screenbuffer to the FB driver. */
-static void fb_update_area(console_t *cons, ipcarg_t x0, ipcarg_t y0, ipcarg_t width, ipcarg_t height)
-{
-	if (interbuffer) {
-		ipcarg_t x;
-		ipcarg_t y;
-		
-		for (y = 0; y < height; y++) {
-			for (x = 0; x < width; x++) {
-				interbuffer[y * width + x] =
-				    *get_field_at(&cons->scr, x0 + x, y0 + y);
-			}
-		}
-		
-		async_req_4_0(fb_info.phone, FB_DRAW_TEXT_DATA,
-		    x0, y0, width, height);
-	}
-}
-
-/** Flush pending cells to FB. */
-static void fb_pending_flush(void)
-{
-	if (fb_pending.cnt > 0) {
-		fb_update_area(active_console, fb_pending.col,
-		    fb_pending.row, fb_pending.cnt, 1);
-		fb_pending.cnt = 0;
-	}
-}
-
-/** Mark a character cell as changed.
- *
- * This adds the cell to the pending rowspan if possible. Otherwise
- * the old span is flushed first.
- *
- */
-static void cell_mark_changed(size_t col, size_t row)
-{
-	if (fb_pending.cnt != 0) {
-		if ((col != fb_pending.col + fb_pending.cnt)
-		    || (row != fb_pending.row)) {
-			fb_pending_flush();
-		}
-	}
-	
-	if (fb_pending.cnt == 0) {
-		fb_pending.col = col;
-		fb_pending.row = row;
-	}
-	
-	fb_pending.cnt++;
-}
-
-/** Print a character to the active VC with buffering. */
-static void fb_putchar(wchar_t c, ipcarg_t col, ipcarg_t row)
-{
-	async_msg_3(fb_info.phone, FB_PUTCHAR, c, col, row);
-}
-
-/** Process a character from the client (TTY emulation). */
-static void write_char(console_t *cons, wchar_t ch)
-{
-	bool flush_cursor = false;
-
-	switch (ch) {
-	case '\n':
-		fb_pending_flush();
-		flush_cursor = true;
-		cons->scr.position_y++;
-		cons->scr.position_x = 0;
-		break;
-	case '\r':
-		break;
-	case '\t':
-		cons->scr.position_x += 8;
-		cons->scr.position_x -= cons->scr.position_x % 8;
-		break;
-	case '\b':
-		if (cons->scr.position_x == 0)
-			break;
-		cons->scr.position_x--;
-		if (cons == active_console)
-			cell_mark_changed(cons->scr.position_x, cons->scr.position_y);
-		screenbuffer_putchar(&cons->scr, ' ');
-		break;
-	default:
-		if (cons == active_console)
-			cell_mark_changed(cons->scr.position_x, cons->scr.position_y);
-		
-		screenbuffer_putchar(&cons->scr, ch);
-		cons->scr.position_x++;
-	}
-	
-	if (cons->scr.position_x >= cons->scr.size_x) {
-		flush_cursor = true;
-		cons->scr.position_y++;
-	}
-	
-	if (cons->scr.position_y >= cons->scr.size_y) {
-		fb_pending_flush();
-		cons->scr.position_y = cons->scr.size_y - 1;
-		screenbuffer_clear_line(&cons->scr, cons->scr.top_line);
-		cons->scr.top_line = (cons->scr.top_line + 1) % cons->scr.size_y;
-		
-		if (cons == active_console)
-			async_msg_1(fb_info.phone, FB_SCROLL, 1);
-	}
-
-	if (cons == active_console && flush_cursor)
-		curs_goto(cons->scr.position_x, cons->scr.position_y);
-	cons->scr.position_x = cons->scr.position_x % cons->scr.size_x;
-}
-
-/** Switch to new console */
-static void change_console(console_t *cons)
-{
-	if (cons == active_console)
-		return;
-	
-	fb_pending_flush();
-	
-	if (cons == kernel_console) {
-		async_serialize_start();
-		curs_hide_sync();
-		gcons_in_kernel();
-		screen_yield();
-		kbd_yield();
-		async_serialize_end();
-		
-		if (__SYSCALL0(SYS_DEBUG_ENABLE_CONSOLE)) {
-			prev_console = active_console;
-			active_console = kernel_console;
-		} else
-			cons = active_console;
-	}
-	
-	if (cons != kernel_console) {
-		size_t x;
-		size_t y;
-		int rc = 0;
-		
-		async_serialize_start();
-		
-		if (active_console == kernel_console) {
-			screen_reclaim();
-			kbd_reclaim();
-			gcons_redraw_console();
-		}
-		
-		active_console = cons;
-		gcons_change_console(cons->index);
-		
-		set_attrs(&cons->scr.attrs);
-		curs_visibility(false);
-		if (interbuffer) {
-			for (y = 0; y < cons->scr.size_y; y++) {
-				for (x = 0; x < cons->scr.size_x; x++) {
-					interbuffer[y * cons->scr.size_x + x] =
-					    *get_field_at(&cons->scr, x, y);
-				}
-			}
-			
-			/* This call can preempt, but we are already at the end */
-			rc = async_req_4_0(fb_info.phone, FB_DRAW_TEXT_DATA,
-			    0, 0, cons->scr.size_x,
-			    cons->scr.size_y);
-		}
-		
-		if ((!interbuffer) || (rc != 0)) {
-			set_attrs(&cons->scr.attrs);
-			screen_clear();
-			
-			for (y = 0; y < cons->scr.size_y; y++)
-				for (x = 0; x < cons->scr.size_x; x++) {
-					keyfield_t *field = get_field_at(&cons->scr, x, y);
-					
-					if (!attrs_same(cons->scr.attrs, field->attrs))
-						set_attrs(&field->attrs);
-					
-					cons->scr.attrs = field->attrs;
-					if ((field->character == ' ') &&
-					    (attrs_same(field->attrs, cons->scr.attrs)))
-						continue;
-					
-					fb_putchar(field->character, x, y);
-				}
-		}
-		
-		curs_goto(cons->scr.position_x, cons->scr.position_y);
-		curs_visibility(cons->scr.is_cursor_visible);
-		
-		async_serialize_end();
-	}
-}
-
-/** Handler for keyboard */
-static void keyboard_events(ipc_callid_t iid, ipc_call_t *icall)
-{
-	/* Ignore parameters, the connection is already opened */
-	while (true) {
-		
-		ipc_call_t call;
-		ipc_callid_t callid = async_get_call(&call);
-		
-		int retval;
-		console_event_t ev;
-		
-		switch (IPC_GET_METHOD(call)) {
-		case IPC_M_PHONE_HUNGUP:
-			/* TODO: Handle hangup */
-			return;
-		case KBD_EVENT:
-			/* Got event from keyboard driver. */
-			retval = 0;
-			ev.type = IPC_GET_ARG1(call);
-			ev.key = IPC_GET_ARG2(call);
-			ev.mods = IPC_GET_ARG3(call);
-			ev.c = IPC_GET_ARG4(call);
-			
-			if ((ev.key >= KC_F1) && (ev.key < KC_F1 +
-			    CONSOLE_COUNT) && ((ev.mods & KM_CTRL) == 0)) {
-				if (ev.key == KC_F1 + KERNEL_CONSOLE)
-					change_console(kernel_console);
-				else
-					change_console(&consoles[ev.key - KC_F1]);
-				break;
-			}
-			
-			fibril_mutex_lock(&input_mutex);
-			keybuffer_push(&active_console->keybuffer, &ev);
-			fibril_condvar_broadcast(&input_cv);
-			fibril_mutex_unlock(&input_mutex);
-			break;
-		default:
-			retval = ENOENT;
-		}
-		ipc_answer_0(callid, retval);
-	}
-}
-
-static void cons_write(console_t *cons, ipc_callid_t rid, ipc_call_t *request)
-{
-	ipc_callid_t callid;
-	size_t size;
-	if (!async_data_write_receive(&callid, &size)) {
-		ipc_answer_0(callid, EINVAL);
-		ipc_answer_0(rid, EINVAL);
-		return;
-	}
-	
-	char *buf = (char *) malloc(size);
-	if (buf == NULL) {
-		ipc_answer_0(callid, ENOMEM);
-		ipc_answer_0(rid, ENOMEM);
-		return;
-	}
-	
-	(void) async_data_write_finalize(callid, buf, size);
-	
-	async_serialize_start();
-	
-	size_t off = 0;
-	while (off < size) {
-		wchar_t ch = str_decode(buf, &off, size);
-		write_char(cons, ch);
-	}
-	
-	async_serialize_end();
-	
-	gcons_notify_char(cons->index);
-	ipc_answer_1(rid, EOK, size);
-	
-	free(buf);
-}
-
-static void cons_read(console_t *cons, ipc_callid_t rid, ipc_call_t *request)
-{
-	ipc_callid_t callid;
-	size_t size;
-	if (!async_data_read_receive(&callid, &size)) {
-		ipc_answer_0(callid, EINVAL);
-		ipc_answer_0(rid, EINVAL);
-		return;
-	}
-	
-	char *buf = (char *) malloc(size);
-	if (buf == NULL) {
-		ipc_answer_0(callid, ENOMEM);
-		ipc_answer_0(rid, ENOMEM);
-		return;
-	}
-	
-	size_t pos = 0;
-	console_event_t ev;
-	fibril_mutex_lock(&input_mutex);
-recheck:
-	while ((keybuffer_pop(&cons->keybuffer, &ev)) && (pos < size)) {
-		if (ev.type == KEY_PRESS) {
-			buf[pos] = ev.c;
-			pos++;
-		}
-	}
-	
-	if (pos == size) {
-		(void) async_data_read_finalize(callid, buf, size);
-		ipc_answer_1(rid, EOK, size);
-		free(buf);
-	} else {
-		fibril_condvar_wait(&input_cv, &input_mutex);
-		goto recheck;
-	}
-	fibril_mutex_unlock(&input_mutex);
-}
-
-static void cons_get_event(console_t *cons, ipc_callid_t rid, ipc_call_t *request)
-{
-	console_event_t ev;
-
-	fibril_mutex_lock(&input_mutex);
-recheck:
-	if (keybuffer_pop(&cons->keybuffer, &ev)) {
-		ipc_answer_4(rid, EOK, ev.type, ev.key, ev.mods, ev.c);
-	} else {
-		fibril_condvar_wait(&input_cv, &input_mutex);
-		goto recheck;
-	}
-	fibril_mutex_unlock(&input_mutex);
-}
-
-/** Default thread for new connections */
-static void client_connection(ipc_callid_t iid, ipc_call_t *icall)
-{
-	console_t *cons = NULL;
-	
-	size_t i;
-	for (i = 0; i < CONSOLE_COUNT; i++) {
-		if (i == KERNEL_CONSOLE)
-			continue;
-		
-		if (consoles[i].dev_handle == (dev_handle_t) IPC_GET_ARG1(*icall)) {
-			cons = &consoles[i];
-			break;
-		}
-	}
-	
-	if (cons == NULL) {
-		ipc_answer_0(iid, ENOENT);
-		return;
-	}
-	
-	ipc_callid_t callid;
-	ipc_call_t call;
-	ipcarg_t arg1;
-	ipcarg_t arg2;
-	ipcarg_t arg3;
-
-	int cons_ccap;
-	int rc;
-	
-	async_serialize_start();
-	if (cons->refcount == 0)
-		gcons_notify_connect(cons->index);
-	
-	cons->refcount++;
-	
-	/* Accept the connection */
-	ipc_answer_0(iid, EOK);
-	
-	while (true) {
-		async_serialize_end();
-		callid = async_get_call(&call);
-		async_serialize_start();
-		
-		arg1 = 0;
-		arg2 = 0;
-		arg3 = 0;
-		
-		switch (IPC_GET_METHOD(call)) {
-		case IPC_M_PHONE_HUNGUP:
-			cons->refcount--;
-			if (cons->refcount == 0)
-				gcons_notify_disconnect(cons->index);
-			return;
-		case VFS_OUT_READ:
-			async_serialize_end();
-			cons_read(cons, callid, &call);
-			async_serialize_start();
-			continue;
-		case VFS_OUT_WRITE:
-			async_serialize_end();
-			cons_write(cons, callid, &call);
-			async_serialize_start();
-			continue;
-		case VFS_OUT_SYNC:
-			fb_pending_flush();
-			if (cons == active_console) {
-				async_req_0_0(fb_info.phone, FB_FLUSH);
-				
-				curs_goto(cons->scr.position_x, cons->scr.position_y);
-			}
-			break;
-		case CONSOLE_CLEAR:
-			/* Send message to fb */
-			if (cons == active_console)
-				async_msg_0(fb_info.phone, FB_CLEAR);
-			
-			screenbuffer_clear(&cons->scr);
-			
-			break;
-		case CONSOLE_GOTO:
-			screenbuffer_goto(&cons->scr,
-			    IPC_GET_ARG1(call), IPC_GET_ARG2(call));
-			if (cons == active_console)
-				curs_goto(IPC_GET_ARG1(call),
-				    IPC_GET_ARG2(call));
-			break;
-		case CONSOLE_GET_POS:
-			arg1 = cons->scr.position_x;
-			arg2 = cons->scr.position_y;
-			break;
-		case CONSOLE_GET_SIZE:
-			arg1 = fb_info.cols;
-			arg2 = fb_info.rows;
-			break;
-		case CONSOLE_GET_COLOR_CAP:
-			rc = ccap_fb_to_con(fb_info.color_cap, &cons_ccap);
-			if (rc != EOK) {
-				ipc_answer_0(callid, rc);
-				continue;
-			}
-			arg1 = cons_ccap;
-			break;
-		case CONSOLE_SET_STYLE:
-			fb_pending_flush();
-			arg1 = IPC_GET_ARG1(call);
-			screenbuffer_set_style(&cons->scr, arg1);
-			if (cons == active_console)
-				set_style(arg1);
-			break;
-		case CONSOLE_SET_COLOR:
-			fb_pending_flush();
-			arg1 = IPC_GET_ARG1(call);
-			arg2 = IPC_GET_ARG2(call);
-			arg3 = IPC_GET_ARG3(call);
-			screenbuffer_set_color(&cons->scr, arg1, arg2, arg3);
-			if (cons == active_console)
-				set_color(arg1, arg2, arg3);
-			break;
-		case CONSOLE_SET_RGB_COLOR:
-			fb_pending_flush();
-			arg1 = IPC_GET_ARG1(call);
-			arg2 = IPC_GET_ARG2(call);
-			screenbuffer_set_rgb_color(&cons->scr, arg1, arg2);
-			if (cons == active_console)
-				set_rgb_color(arg1, arg2);
-			break;
-		case CONSOLE_CURSOR_VISIBILITY:
-			fb_pending_flush();
-			arg1 = IPC_GET_ARG1(call);
-			cons->scr.is_cursor_visible = arg1;
-			if (cons == active_console)
-				curs_visibility(arg1);
-			break;
-		case CONSOLE_GET_EVENT:
-			async_serialize_end();
-			cons_get_event(cons, callid, &call);
-			async_serialize_start();
-			continue;
-		case CONSOLE_KCON_ENABLE:
-			change_console(kernel_console);
-			break;
-		}
-		ipc_answer_3(callid, EOK, arg1, arg2, arg3);
-	}
-}
-
-static void interrupt_received(ipc_callid_t callid, ipc_call_t *call)
-{
-	change_console(prev_console);
-}
-
-static bool console_init(char *input)
-{
-	/* Connect to input device */
-	int input_fd = open(input, O_RDONLY);
-	if (input_fd < 0) {
-		printf(NAME ": Failed opening %s\n", input);
-		return false;
-	}
-	
-	kbd_phone = fd_phone(input_fd);
-	if (kbd_phone < 0) {
-		printf(NAME ": Failed to connect to input device\n");
-		return false;
-	}
-	
-	/* NB: The callback connection is slotted for removal */
-	ipcarg_t phonehash;
-	if (ipc_connect_to_me(kbd_phone, SERVICE_CONSOLE, 0, 0, &phonehash) != 0) {
-		printf(NAME ": Failed to create callback from input device\n");
-		return false;
-	}
-	
-	async_new_connection(phonehash, 0, NULL, keyboard_events);
-
-	/* Connect to framebuffer driver */
-	fb_info.phone = ipc_connect_me_to_blocking(PHONE_NS, SERVICE_VIDEO, 0, 0);
-	if (fb_info.phone < 0) {
-		printf(NAME ": Failed to connect to video service\n");
-		return -1;
-	}
-	
-	/* Register driver */
-	int rc = devmap_driver_register(NAME, client_connection);
-	if (rc < 0) {
-		printf(NAME ": Unable to register driver (%d)\n", rc);
-		return false;
-	}
-	
-	/* Initialize gcons */
-	gcons_init(fb_info.phone);
-	
-	/* Synchronize, the gcons could put something in queue */
-	ipcarg_t color_cap;
-	async_req_0_0(fb_info.phone, FB_FLUSH);
-	async_req_0_2(fb_info.phone, FB_GET_CSIZE, &fb_info.cols, &fb_info.rows);
-	async_req_0_1(fb_info.phone, FB_GET_COLOR_CAP, &color_cap);
-	fb_info.color_cap = color_cap;
-	
-	/* Set up shared memory buffer. */
-	size_t ib_size = sizeof(keyfield_t) * fb_info.cols * fb_info.rows;
-	interbuffer = as_get_mappable_page(ib_size);
-	
-	if (as_area_create(interbuffer, ib_size, AS_AREA_READ |
-	    AS_AREA_WRITE | AS_AREA_CACHEABLE) != interbuffer)
-		interbuffer = NULL;
-	
-	if (interbuffer) {
-		if (async_share_out_start(fb_info.phone, interbuffer,
-		    AS_AREA_READ) != EOK) {
-			as_area_destroy(interbuffer);
-			interbuffer = NULL;
-		}
-	}
-	
-	fb_pending.cnt = 0;
-	
-	/* Inititalize consoles */
-	size_t i;
-	for (i = 0; i < CONSOLE_COUNT; i++) {
-		if (i != KERNEL_CONSOLE) {
-			if (screenbuffer_init(&consoles[i].scr,
-			    fb_info.cols, fb_info.rows) == NULL) {
-				printf(NAME ": Unable to allocate screen buffer %u\n", i);
-				return false;
-			}
-			screenbuffer_clear(&consoles[i].scr);
-			keybuffer_init(&consoles[i].keybuffer);
-			consoles[i].index = i;
-			consoles[i].refcount = 0;
-			
-			char vc[DEVMAP_NAME_MAXLEN + 1];
-			snprintf(vc, DEVMAP_NAME_MAXLEN, "%s/vc%u", NAMESPACE, i);
-			
-			if (devmap_device_register(vc, &consoles[i].dev_handle) != EOK) {
-				devmap_hangup_phone(DEVMAP_DRIVER);
-				printf(NAME ": Unable to register device %s\n", vc);
-				return false;
-			}
-		}
-	}
-	
-	/* Disable kernel output to the console */
-	__SYSCALL0(SYS_DEBUG_DISABLE_CONSOLE);
-	
-	/* Initialize the screen */
-	async_serialize_start();
-	gcons_redraw_console();
-	set_rgb_color(DEFAULT_FOREGROUND, DEFAULT_BACKGROUND);
-	screen_clear();
-	curs_goto(0, 0);
-	curs_visibility(active_console->scr.is_cursor_visible);
-	async_serialize_end();
-	
-	/* Receive kernel notifications */
-	if (event_subscribe(EVENT_KCONSOLE, 0) != EOK)
-		printf(NAME ": Error registering kconsole notifications\n");
-	
-	async_set_interrupt_received(interrupt_received);
-	
-	return true;
-}
-
-static void usage(void)
-{
-	printf("Usage: console <input>\n");
-}
-
-int main(int argc, char *argv[])
-{
-	if (argc < 2) {
-		usage();
-		return -1;
-	}
-	
-	printf(NAME ": HelenOS Console service\n");
-	
-	if (!console_init(argv[1]))
-		return -1;
-	
-	printf(NAME ": Accepting connections\n");
-	async_manager();
-	
-	return 0;
-}
-
-/** @}
- */
Index: uspace/srv/console/console.h
===================================================================
--- uspace/srv/console/console.h	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,44 +1,0 @@
-/*
- * Copyright (c) 2006 Josef Cejka
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup console
- * @{
- */
-/** @file
- */
-
-#ifndef __CONSOLE_H__
-#define __CONSOLE_H__
-
-#define CONSOLE_COUNT   12
-#define KERNEL_CONSOLE  11
-
-#endif
-
-/** @}
- */
Index: uspace/srv/console/gcons.c
===================================================================
--- uspace/srv/console/gcons.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,543 +1,0 @@
-/*
- * Copyright (c) 2006 Ondrej Palkovsky
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup console
- * @{
- */
-/** @file
- */
-
-#include <ipc/fb.h>
-#include <ipc/ipc.h>
-#include <async.h>
-#include <stdio.h>
-#include <sys/mman.h>
-#include <string.h>
-#include <align.h>
-#include <bool.h>
-
-#include "console.h"
-#include "gcons.h"
-
-#define CONSOLE_TOP     66
-#define CONSOLE_MARGIN  6
-
-#define STATUS_START   110
-#define STATUS_TOP     8
-#define STATUS_SPACE   4
-#define STATUS_WIDTH   48
-#define STATUS_HEIGHT  48
-
-#define MAIN_COLOR  0xffffff
-
-static bool use_gcons = false;
-static ipcarg_t xres;
-static ipcarg_t yres;
-
-enum butstate {
-	CONS_DISCONNECTED = 0,
-	CONS_SELECTED,
-	CONS_IDLE,
-	CONS_HAS_DATA,
-	CONS_KERNEL,
-	CONS_DISCONNECTED_SEL,
-	CONS_LAST
-};
-
-static int console_vp;
-static int cstatus_vp[CONSOLE_COUNT];
-static enum butstate console_state[CONSOLE_COUNT];
-
-static int fbphone;
-
-/** List of pixmaps identifying these icons */
-static int ic_pixmaps[CONS_LAST] = {-1, -1, -1, -1, -1, -1};
-static int animation = -1;
-
-static size_t active_console = 0;
-
-size_t mouse_x;
-size_t mouse_y;
-
-bool btn_pressed;
-size_t btn_x;
-size_t btn_y;
-
-static void vp_switch(int vp)
-{
-	async_msg_1(fbphone, FB_VIEWPORT_SWITCH, vp);
-}
-
-/** Create view port */
-static int vp_create(size_t x, size_t y, size_t width, size_t height)
-{
-	return async_req_2_0(fbphone, FB_VIEWPORT_CREATE, (x << 16) | y,
-	    (width << 16) | height);
-}
-
-static void clear(void)
-{
-	async_msg_0(fbphone, FB_CLEAR);
-}
-
-static void set_rgb_color(uint32_t fgcolor, uint32_t bgcolor)
-{
-	async_msg_2(fbphone, FB_SET_RGB_COLOR, fgcolor, bgcolor);
-}
-
-/** Transparent putchar */
-static void tran_putch(wchar_t ch, size_t col, size_t row)
-{
-	async_msg_3(fbphone, FB_PUTCHAR, ch, col, row);
-}
-
-/** Redraw the button showing state of a given console */
-static void redraw_state(size_t index)
-{
-	vp_switch(cstatus_vp[index]);
-	
-	enum butstate state = console_state[index];
-	
-	if (ic_pixmaps[state] != -1)
-		async_msg_2(fbphone, FB_VP_DRAW_PIXMAP, cstatus_vp[index],
-		    ic_pixmaps[state]);
-	
-	if ((state != CONS_DISCONNECTED) && (state != CONS_KERNEL)
-	    && (state != CONS_DISCONNECTED_SEL)) {
-		
-		char data[5];
-		snprintf(data, 5, "%u", index + 1);
-		
-		size_t i;
-		for (i = 0; data[i] != 0; i++)
-			tran_putch(data[i], 2 + i, 1);
-	}
-}
-
-/** Notification run on changing console (except kernel console) */
-void gcons_change_console(size_t index)
-{
-	if (!use_gcons)
-		return;
-	
-	if (active_console == KERNEL_CONSOLE) {
-		size_t i;
-		
-		for (i = 0; i < CONSOLE_COUNT; i++)
-			redraw_state(i);
-		
-		if (animation != -1)
-			async_msg_1(fbphone, FB_ANIM_START, animation);
-	} else {
-		if (console_state[active_console] == CONS_DISCONNECTED_SEL)
-			console_state[active_console] = CONS_DISCONNECTED;
-		else
-			console_state[active_console] = CONS_IDLE;
-		
-		redraw_state(active_console);
-	}
-	
-	active_console = index;
-	
-	if ((console_state[index] == CONS_DISCONNECTED)
-	    || (console_state[index] == CONS_DISCONNECTED_SEL))
-		console_state[index] = CONS_DISCONNECTED_SEL;
-	else
-		console_state[index] = CONS_SELECTED;
-	
-	redraw_state(index);
-	vp_switch(console_vp);
-}
-
-/** Notification function that gets called on new output to virtual console */
-void gcons_notify_char(size_t index)
-{
-	if (!use_gcons)
-		return;
-	
-	if ((index == active_console)
-	    || (console_state[index] == CONS_HAS_DATA))
-		return;
-	
-	console_state[index] = CONS_HAS_DATA;
-	
-	if (active_console == KERNEL_CONSOLE)
-		return;
-	
-	redraw_state(index);
-	vp_switch(console_vp);
-}
-
-/** Notification function called on service disconnect from console */
-void gcons_notify_disconnect(size_t index)
-{
-	if (!use_gcons)
-		return;
-	
-	if (index == active_console)
-		console_state[index] = CONS_DISCONNECTED_SEL;
-	else
-		console_state[index] = CONS_DISCONNECTED;
-	
-	if (active_console == KERNEL_CONSOLE)
-		return;
-	
-	redraw_state(index);
-	vp_switch(console_vp);
-}
-
-/** Notification function called on console connect */
-void gcons_notify_connect(size_t index)
-{
-	if (!use_gcons)
-		return;
-	
-	if (index == active_console)
-		console_state[index] = CONS_SELECTED;
-	else
-		console_state[index] = CONS_IDLE;
-	
-	if (active_console == KERNEL_CONSOLE)
-		return;
-	
-	redraw_state(index);
-	vp_switch(console_vp);
-}
-
-/** Change to kernel console */
-void gcons_in_kernel(void)
-{
-	if (animation != -1)
-		async_msg_1(fbphone, FB_ANIM_STOP, animation);
-	
-	active_console = KERNEL_CONSOLE;
-	vp_switch(0);
-}
-
-/** Return x, where left <= x <= right && |a-x| == min(|a-x|) is smallest */
-static inline int limit(size_t a, size_t left, size_t right)
-{
-	if (a < left)
-		a = left;
-	
-	if (a >= right)
-		a = right - 1;
-	
-	return a;
-}
-
-/** Handle mouse move
- *
- * @param dx Delta X of mouse move
- * @param dy Delta Y of mouse move
- */
-void gcons_mouse_move(ssize_t dx, ssize_t dy)
-{
-	mouse_x = limit(mouse_x + dx, 0, xres);
-	mouse_y = limit(mouse_y + dy, 0, yres);
-	
-	async_msg_2(fbphone, FB_POINTER_MOVE, mouse_x, mouse_y);
-}
-
-static int gcons_find_conbut(int x, int y)
-{
-	int status_start = STATUS_START + (xres - 800) / 2;
-	
-	if ((y < STATUS_TOP) || (y >= STATUS_TOP + STATUS_HEIGHT))
-		return -1;
-	
-	if (x < status_start)
-		return -1;
-	
-	if (x >= status_start + (STATUS_WIDTH + STATUS_SPACE) * CONSOLE_COUNT)
-		return -1;
-	if (((x - status_start) % (STATUS_WIDTH + STATUS_SPACE)) < STATUS_SPACE)
-		return -1;
-	
-	return (x - status_start) / (STATUS_WIDTH + STATUS_SPACE);
-}
-
-/** Handle mouse click
- *
- * @param state New state (true - pressed, false - depressed)
- */
-int gcons_mouse_btn(bool state)
-{
-	int conbut;
-	
-	if (state) {
-		conbut = gcons_find_conbut(mouse_x, mouse_y);
-		if (conbut != -1) {
-			btn_pressed = true;
-			btn_x = mouse_x;
-			btn_y = mouse_y;
-		}
-		return -1;
-	}
-	
-	if ((!state) && (!btn_pressed))
-		return -1;
-	
-	btn_pressed = false;
-	
-	conbut = gcons_find_conbut(mouse_x, mouse_y);
-	if (conbut == gcons_find_conbut(btn_x, btn_y))
-		return conbut;
-	
-	return -1;
-}
-
-
-/** Draw a PPM pixmap to framebuffer
- *
- * @param logo Pointer to PPM data
- * @param size Size of PPM data
- * @param x Coordinate of upper left corner
- * @param y Coordinate of upper left corner
- */
-static void draw_pixmap(char *logo, size_t size, int x, int y)
-{
-	char *shm;
-	int rc;
-	
-	/* Create area */
-	shm = mmap(NULL, size, PROTO_READ | PROTO_WRITE, MAP_SHARED |
-	    MAP_ANONYMOUS, 0, 0);
-	if (shm == MAP_FAILED)
-		return;
-	
-	memcpy(shm, logo, size);
-	
-	/* Send area */
-	rc = async_req_1_0(fbphone, FB_PREPARE_SHM, (ipcarg_t) shm);
-	if (rc)
-		goto exit;
-	
-	rc = async_share_out_start(fbphone, shm, PROTO_READ);
-	if (rc)
-		goto drop;
-	
-	/* Draw logo */
-	async_msg_2(fbphone, FB_DRAW_PPM, x, y);
-	
-drop:
-	/* Drop area */
-	async_msg_0(fbphone, FB_DROP_SHM);
-	
-exit:
-	/* Remove area */
-	munmap(shm, size);
-}
-
-extern char _binary_gfx_helenos_ppm_start[0];
-extern int _binary_gfx_helenos_ppm_size;
-extern char _binary_gfx_nameic_ppm_start[0];
-extern int _binary_gfx_nameic_ppm_size;
-
-/** Redraws console graphics */
-void gcons_redraw_console(void)
-{
-	int i;
-	
-	if (!use_gcons)
-		return;
-	
-	vp_switch(0);
-	set_rgb_color(MAIN_COLOR, MAIN_COLOR);
-	clear();
-	draw_pixmap(_binary_gfx_helenos_ppm_start,
-	    (size_t) &_binary_gfx_helenos_ppm_size, xres - 66, 2);
-	draw_pixmap(_binary_gfx_nameic_ppm_start,
-	    (size_t) &_binary_gfx_nameic_ppm_size, 5, 17);
-	
-	for (i = 0; i < CONSOLE_COUNT; i++)
-		redraw_state(i);
-	
-	vp_switch(console_vp);
-}
-
-/** Creates a pixmap on framebuffer
- *
- * @param data PPM data
- * @param size PPM data size
- *
- * @return Pixmap identification
- *
- */
-static int make_pixmap(char *data, size_t size)
-{
-	char *shm;
-	int rc;
-	int pxid = -1;
-	
-	/* Create area */
-	shm = mmap(NULL, size, PROTO_READ | PROTO_WRITE, MAP_SHARED |
-	    MAP_ANONYMOUS, 0, 0);
-	if (shm == MAP_FAILED)
-		return -1;
-	
-	memcpy(shm, data, size);
-	
-	/* Send area */
-	rc = async_req_1_0(fbphone, FB_PREPARE_SHM, (ipcarg_t) shm);
-	if (rc)
-		goto exit;
-	
-	rc = async_share_out_start(fbphone, shm, PROTO_READ);
-	if (rc)
-		goto drop;
-	
-	/* Obtain pixmap */
-	rc = async_req_0_0(fbphone, FB_SHM2PIXMAP);
-	if (rc < 0)
-		goto drop;
-	
-	pxid = rc;
-	
-drop:
-	/* Drop area */
-	async_msg_0(fbphone, FB_DROP_SHM);
-	
-exit:
-	/* Remove area */
-	munmap(shm, size);
-	
-	return pxid;
-}
-
-extern char _binary_gfx_anim_1_ppm_start[0];
-extern int _binary_gfx_anim_1_ppm_size;
-extern char _binary_gfx_anim_2_ppm_start[0];
-extern int _binary_gfx_anim_2_ppm_size;
-extern char _binary_gfx_anim_3_ppm_start[0];
-extern int _binary_gfx_anim_3_ppm_size;
-extern char _binary_gfx_anim_4_ppm_start[0];
-extern int _binary_gfx_anim_4_ppm_size;
-
-static void make_anim(void)
-{
-	int an = async_req_1_0(fbphone, FB_ANIM_CREATE, cstatus_vp[KERNEL_CONSOLE]);
-	if (an < 0)
-		return;
-	
-	int pm = make_pixmap(_binary_gfx_anim_1_ppm_start,
-	    (int) &_binary_gfx_anim_1_ppm_size);
-	async_msg_2(fbphone, FB_ANIM_ADDPIXMAP, an, pm);
-	
-	pm = make_pixmap(_binary_gfx_anim_2_ppm_start,
-	    (int) &_binary_gfx_anim_2_ppm_size);
-	async_msg_2(fbphone, FB_ANIM_ADDPIXMAP, an, pm);
-	
-	pm = make_pixmap(_binary_gfx_anim_3_ppm_start,
-	    (int) &_binary_gfx_anim_3_ppm_size);
-	async_msg_2(fbphone, FB_ANIM_ADDPIXMAP, an, pm);
-	
-	pm = make_pixmap(_binary_gfx_anim_4_ppm_start,
-	    (int) &_binary_gfx_anim_4_ppm_size);
-	async_msg_2(fbphone, FB_ANIM_ADDPIXMAP, an, pm);
-	
-	async_msg_1(fbphone, FB_ANIM_START, an);
-	
-	animation = an;
-}
-
-extern char _binary_gfx_cons_selected_ppm_start[0];
-extern int _binary_gfx_cons_selected_ppm_size;
-extern char _binary_gfx_cons_idle_ppm_start[0];
-extern int _binary_gfx_cons_idle_ppm_size;
-extern char _binary_gfx_cons_has_data_ppm_start[0];
-extern int _binary_gfx_cons_has_data_ppm_size;
-extern char _binary_gfx_cons_kernel_ppm_start[0];
-extern int _binary_gfx_cons_kernel_ppm_size;
-
-/** Initialize nice graphical console environment */
-void gcons_init(int phone)
-{
-	fbphone = phone;
-	
-	int rc = async_req_0_2(phone, FB_GET_RESOLUTION, &xres, &yres);
-	if (rc)
-		return;
-	
-	if ((xres < 800) || (yres < 600))
-		return;
-	
-	/* Create console viewport */
-	
-	/* Align width & height to character size */
-	console_vp = vp_create(CONSOLE_MARGIN, CONSOLE_TOP,
-	    ALIGN_DOWN(xres - 2 * CONSOLE_MARGIN, 8),
-	    ALIGN_DOWN(yres - (CONSOLE_TOP + CONSOLE_MARGIN), 16));
-	
-	if (console_vp < 0)
-		return;
-	
-	/* Create status buttons */
-	size_t status_start = STATUS_START + (xres - 800) / 2;
-	size_t i;
-	for (i = 0; i < CONSOLE_COUNT; i++) {
-		cstatus_vp[i] = vp_create(status_start + CONSOLE_MARGIN +
-		    i * (STATUS_WIDTH + STATUS_SPACE), STATUS_TOP,
-		    STATUS_WIDTH, STATUS_HEIGHT);
-		
-		if (cstatus_vp[i] < 0)
-			return;
-		
-		vp_switch(cstatus_vp[i]);
-		set_rgb_color(0x202020, 0xffffff);
-	}
-	
-	/* Initialize icons */
-	ic_pixmaps[CONS_SELECTED] =
-	    make_pixmap(_binary_gfx_cons_selected_ppm_start,
-	    (size_t) &_binary_gfx_cons_selected_ppm_size);
-	ic_pixmaps[CONS_IDLE] =
-	    make_pixmap(_binary_gfx_cons_idle_ppm_start,
-	    (size_t) &_binary_gfx_cons_idle_ppm_size);
-	ic_pixmaps[CONS_HAS_DATA] =
-	    make_pixmap(_binary_gfx_cons_has_data_ppm_start,
-	    (size_t) &_binary_gfx_cons_has_data_ppm_size);
-	ic_pixmaps[CONS_DISCONNECTED] =
-	    make_pixmap(_binary_gfx_cons_idle_ppm_start,
-	    (size_t) &_binary_gfx_cons_idle_ppm_size);
-	ic_pixmaps[CONS_KERNEL] =
-	    make_pixmap(_binary_gfx_cons_kernel_ppm_start,
-	    (size_t) &_binary_gfx_cons_kernel_ppm_size);
-	ic_pixmaps[CONS_DISCONNECTED_SEL] = ic_pixmaps[CONS_SELECTED];
-	
-	make_anim();
-	
-	use_gcons = true;
-	console_state[0] = CONS_DISCONNECTED_SEL;
-	console_state[KERNEL_CONSOLE] = CONS_KERNEL;
-	
-	vp_switch(console_vp);
-}
-
-/** @}
- */
Index: uspace/srv/console/gcons.h
===================================================================
--- uspace/srv/console/gcons.h	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,56 +1,0 @@
-/*
- * Copyright (c) 2006 Ondrej Palkovsky
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup console
- * @{
- */
-/** @file
- */
-
-#ifndef GCONS_H_
-#define GCONS_H_
-
-#include <sys/types.h>
-
-void gcons_init(int phone);
-
-void gcons_redraw_console(void);
-void gcons_change_console(size_t index);
-void gcons_notify_char(size_t index);
-void gcons_in_kernel(void);
-
-void gcons_notify_connect(size_t index);
-void gcons_notify_disconnect(size_t index);
-
-void gcons_mouse_move(ssize_t dx, ssize_t dy);
-int gcons_mouse_btn(bool state);
-
-#endif
-
-/** @}
- */
Index: uspace/srv/console/gfx/anim_1.ppm
===================================================================
--- uspace/srv/console/gfx/anim_1.ppm	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,23 +1,0 @@
-P6
-# CREATOR: The GIMP's PNM Filter Version 1.0
-48 48
-255
-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ääääää÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûüüüþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿööö½½½eeeeee½½½öööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýùùùøøøõõõêêêèèèèèèéééêêêëëëìììíííîîîîîîðððøøøúúúûûûþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãããeeedddãããÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýý÷÷÷ñññáááÞÞÞÞÞÞÜÜÜÞÞÞßßßáááãããäääåååæææçççèèèéééëëëêêêììì÷÷÷úúúþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãããeeedddãããÿÿÿÿÿÿÿÿÿýýýõõõîîî×××ÒÒÒÏÏÏÑÑÑÒÒÒÕÕÕ×××ÚÚÚÜÜÜÞÞÞàààâââãããääääääååååååääääääåååèèèõõõùùùýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿööö½½½eeeddd½½½öööÿÿÿÿÿÿýýýíííÏÏÏÇÇÇÃÃÃÃÃÃÅÅÅÈÈÈËËËÎÎÎÑÑÑÕÕÕØØØÛÛÛÝÝÝßßßàààáááââââââââââââáááßßßÞÞÞßßßâââôôôýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööããããããöööþþþÿÿÿüüüìììÇÇÇ¸¸¸···¸¸¸»»»¾¾¾ÂÂÂÆÆÆÊÊÊÎÎÎÒÒÒÖÖÖÙÙÙÜÜÜÞÞÞàààáááââââââââââââàààßßßÜÜÜÙÙÙ×××ÝÝÝòòòýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüêêêÃÃÃ±±±¯¯¯°°°²²²¶¶¶ººº¾¾¾ÃÃÃÈÈÈÍÍÍÒÒÒÖÖÖÚÚÚÝÝÝßßßáááâââãããääääääãããáááàààÝÝÝÚÚÚÖÖÖÔÔÔÚÚÚòòòýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüëëëÁÁÁ­­­©©©©©©«««¯¯¯³³³¹¹¹¾¾¾ÄÄÄÊÊÊÏÏÏÔÔÔØØØÜÜÜßßßâââäääåååæææççççççæææäääâââàààÜÜÜÙÙÙÔÔÔÑÑÑØØØðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýìììÃÃÃ­­­§§§¦¦¦§§§ªªª®®®´´´ºººÁÁÁÇÇÇÍÍÍÓÓÓØØØÜÜÜàààãããæææèèèéééêêêêêêêêêêêêèèèæææäääàààÝÝÝØØØÓÓÓÏÏÏ×××ðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýíííÇÇÇ±±±©©©¦¦¦¦¦¦¨¨¨¬¬¬±±±···¾¾¾ÅÅÅÌÌÌÒÒÒØØØÝÝÝâââåååèèèêêêìììíííîîîîîîîîîîîîìììëëëèèèæææâââÞÞÞØØØÓÓÓÎÎÎÕÕÕðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööÏÏÏ¸¸¸¯¯¯©©©§§§¨¨¨«««°°°¶¶¶½½½ÄÄÄËËËÒÒÒÙÙÙÞÞÞãããçççêêêíííïïïðððñññòòòòòòòòòòòòñññïïïíííëëëçççãããßßßÙÙÙÓÓÓÎÎÎ×××÷÷÷þþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýîîîÇÇÇ···°°°«««ªªª¬¬¬°°°¶¶¶½½½ÄÄÄÌÌÌÓÓÓÙÙÙßßßåååéééìììïïïñññóóóôôôõõõõõõööööööõõõõõõóóóòòòïïïíííéééåååàààÚÚÚÔÔÔÔÔÔðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ØØØÂÂÂ¸¸¸²²²¯¯¯®®®±±±¶¶¶¼¼¼ÄÄÄËËËÓÓÓÚÚÚàààæææëëëîîîñññóóóõõõööö÷÷÷øøøøøøùùùùùùøøøøøø÷÷÷õõõôôôñññïïïëëëçççáááÛÛÛÕÕÕÜÜÜøøøþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýòòòÒÒÒÃÃÃ»»»µµµ³³³´´´···½½½ÄÄÄËËËÓÓÓÚÚÚáááçççìììðððóóóõõõ÷÷÷øøøùùùúúúúúúûûûûûûûûûûûûúúúúúúùùù÷÷÷öööóóóðððìììèèèâââÜÜÜÛÛÛóóóýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿùùùààà···yyyEEE777¹¹¹ººº¾¾¾ÄÄÄÌÌÌÓÓÓÚÚÚáááèèèíííñññôôôöööøøøùùùúúúûûûüüüüüüüüüýýýýýýüüüüüüûûûûûûúúúøøø÷÷÷ôôôñññíííèèèãããÞÞÞãããùùùþþþÿÿÿÿÿÿÿÿÿÿÿÿøøøÝÝÝºººccc   
-
-
-¾¾¾ÁÁÁÅÅÅËËËÓÓÓÚÚÚáááèèèíííñññôôô÷÷÷ùùùúúúûûûüüüüüüýýýýýýýýýþþþþþþýýýýýýýýýüüüüüüûûûùùùøøøõõõòòòîîîéééääääääùùùþþþÿÿÿÿÿÿÿÿÿþþþõõõÞÞÞÒÒÒÅÅÅ   
-
-
-ÄÄÄÇÇÇÌÌÌÒÒÒÙÙÙàààçççíííñññõõõ÷÷÷ùùùûûûüüüýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþýýýýýýüüüûûûúúúøøøõõõòòòîîîêêêééé÷÷÷þþþþþþÿÿÿÿÿÿûûûéééÜÜÜÕÕÕÍÍÍ   ÊÊÊÍÍÍÒÒÒÙÙÙßßßæææìììñññôôô÷÷÷ùùùûûûüüüýýýýýýþþþþþþþþþþþþþþþÿÿÿÿÿÿþþþþþþþþþþþþþþþýýýýýýûûûúúúøøøöööóóóïïïìììîîîûûûþþþÿÿÿÿÿÿúúúèèèÝÝÝ×××ÑÑÑ   ÏÏÏÆÆÆDDD   ZZZáááôôô¯¯¯666MMM666VVVäääþþþþþþ···999GGG???KKKÔÔÔÿÿÿ      '''ÐÐÐZZZªªªùùùöööôôôððððððûûûþþþÿÿÿÿÿÿúúúéééßßßÙÙÙÔÔÔ      ÔÔÔ×××^^^eeeâââîîîóóó¸¸¸üüüööö666þþþÂÂÂÿÿÿþþþXXXâââþþþÆÆÆ   
-
-
-ùùùííí			úúúùùù÷÷÷ôôôôôôüüüþþþÿÿÿÿÿÿûûûêêêáááÜÜÜ×××   !!!ÕÕÕSSS^^^çççìììñññõõõ???ñññüüüýýýCCC   ÿÿÿEEEñññÿÿÿÿÿÿÊÊÊ   qqqÿÿÿþþþ   $$$ÿÿÿþþþþþþ%%%   üüüûûûùùùøøø÷÷÷ýýýþþþÿÿÿÿÿÿûûûëëëãããÞÞÞÚÚÚ   NNNÙÙÙïïïóóó÷÷÷   üüüýýýþþþûûûúúúÿÿÿ
-
-
-ÿÿÿÿÿÿÿÿÿôôô   333ÿÿÿÿÿÿ   '''ÿÿÿÿÿÿþþþ'''   ýýýüüüûûûúúúúúúýýýþþþÿÿÿÿÿÿûûûëëëäääàààÝÝÝ   
-
-
-²²²¨¨¨   UUUñññõõõøøø			ýýýþþþþþþþþþÿÿÿÿÿÿ			   ÿÿÿÿÿÿÿÿÿùùù   111ÿÿÿÿÿÿ   '''ÿÿÿÿÿÿÿÿÿ'''   ýýýýýýüüüüüüûûûþþþþþþÿÿÿÿÿÿûûûìììåååâââßßß   """âââæææ___   ¨¨¨öööùùù>>>èèèþþþþþþÿÿÿöööÿÿÿ>>>ôôôÿÿÿÿÿÿÔÔÔ   gggÿÿÿÿÿÿ   '''ÿÿÿÿÿÿÿÿÿ'''   þþþþþþýýýýýýýýýþþþþþþÿÿÿÿÿÿûûûíííæææãããÖÖÖ   ãããèèèßßßÖÖÖúúú½½½___ûûûÿÿÿîîîUUUôôô¾¾¾ÿÿÿþþþhhhÜÜÜÿÿÿôôô   ÿÿÿÿÿÿÿÿÿ
-
-
-   õõõþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿûûûíííççç···BBB      UUUÎÎÎ   üüü»»»:::///^^^jjjâââÿÿÿÿÿÿ¾¾¾>>>KKKEEEJJJÓÓÓÿÿÿÍÍÍKKK      rrrÿÿÿqqq      NNNÍÍÍþþþþþþþþþþþþþþþÿÿÿÿÿÿûûûîîîçççäääââââââãããæææêêêîîîòòòõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüðððèèèäääââââââäääæææêêêîîîòòòöööùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþøøøêêêäääââââââäääæææêêêîîîòòòöööùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúêêêäääââââââãããæææéééîîîòòòõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûíííäääáááàààáááäääèèèìììñññõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþöööåååßßßÞÞÞßßßâââæææëëëïïïóóó÷÷÷ùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúèèèÞÞÞÜÜÜÝÝÝàààäääèèèíííòòòöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþõõõßßßÙÙÙÚÚÚÜÜÜàààæææëëëðððôôô÷÷÷úúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþøøøâââ×××ÖÖÖÙÙÙÝÝÝâââèèèíííòòòöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýôôôÝÝÝÓÓÓÔÔÔØØØÞÞÞãããéééïïïóóó÷÷÷ùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýòòòÚÚÚÐÐÐÓÓÓØØØßßßåååëëëðððôôôøøøúúúûûûýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüñññØØØÏÏÏÓÓÓÙÙÙàààçççìììñññõõõøøøúúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüñññ×××ÎÎÎÓÓÓÚÚÚáááèèèíííòòòõõõøøøúúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüðððÕÕÕÎÎÎÓÓÓÛÛÛâââèèèîîîòòòöööùùùûûûüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüðððÖÖÖÔÔÔÕÕÕÛÛÛãããéééîîîóóóöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüöööðððÜÜÜÛÛÛÞÞÞãããêêêïïïôôô÷÷÷ùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþüüü÷÷÷òòòãããäääéééìììðððôôô÷÷÷úúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýùùùùùù÷÷÷îîîðððôôô÷÷÷ùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþýýýûûûûûûüüüüüüýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
Index: uspace/srv/console/gfx/anim_2.ppm
===================================================================
--- uspace/srv/console/gfx/anim_2.ppm	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,23 +1,0 @@
-P6
-# CREATOR: The GIMP's PNM Filter Version 1.0
-48 48
-255
-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûüüüþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ääääää÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýùùùøøøõõõêêêèèèèèèéééêêêëëëìììíííîîîîîîðððøøøúúúûûûþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿööö½½½eeeeee½½½öööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýý÷÷÷ñññáááÞÞÞÞÞÞÜÜÜÞÞÞßßßáááãããäääåååæææçççèèèéééëëëêêêììì÷÷÷úúúþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿãããeeedddãããÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýõõõîîî×××ÒÒÒÏÏÏÑÑÑÒÒÒÕÕÕ×××ÚÚÚÜÜÜÞÞÞàààâââãããääääääååååååääääääåååèèèõõõùùùýýýþþþÿÿÿÿÿÿãããeeedddãããÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýíííÏÏÏÇÇÇÃÃÃÃÃÃÅÅÅÈÈÈËËËÎÎÎÑÑÑÕÕÕØØØÛÛÛÝÝÝßßßàààáááââââââââââââáááßßßÞÞÞßßßâââôôôýýýþþþÿÿÿööö½½½eeeddd½½½öööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüìììÇÇÇ¸¸¸···¸¸¸»»»¾¾¾ÂÂÂÆÆÆÊÊÊÎÎÎÒÒÒÖÖÖÙÙÙÜÜÜÞÞÞàààáááââââââââââââàààßßßÜÜÜÙÙÙ×××ÝÝÝòòòýýýþþþÿÿÿöööããããããöööþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüêêêÃÃÃ±±±¯¯¯°°°²²²¶¶¶ººº¾¾¾ÃÃÃÈÈÈÍÍÍÒÒÒÖÖÖÚÚÚÝÝÝßßßáááâââãããääääääãããáááàààÝÝÝÚÚÚÖÖÖÔÔÔÚÚÚòòòýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüëëëÁÁÁ­­­©©©©©©«««¯¯¯³³³¹¹¹¾¾¾ÄÄÄÊÊÊÏÏÏÔÔÔØØØÜÜÜßßßâââäääåååæææççççççæææäääâââàààÜÜÜÙÙÙÔÔÔÑÑÑØØØðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýìììÃÃÃ­­­§§§¦¦¦§§§ªªª®®®´´´ºººÁÁÁÇÇÇÍÍÍÓÓÓØØØÜÜÜàààãããæææèèèéééêêêêêêêêêêêêèèèæææäääàààÝÝÝØØØÓÓÓÏÏÏ×××ðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýíííÇÇÇ±±±©©©¦¦¦¦¦¦¨¨¨¬¬¬±±±···¾¾¾ÅÅÅÌÌÌÒÒÒØØØÝÝÝâââåååèèèêêêìììíííîîîîîîîîîîîîìììëëëèèèæææâââÞÞÞØØØÓÓÓÎÎÎÕÕÕðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööÏÏÏ¸¸¸¯¯¯©©©§§§¨¨¨«««°°°¶¶¶½½½ÄÄÄËËËÒÒÒÙÙÙÞÞÞãããçççêêêíííïïïðððñññòòòòòòòòòòòòñññïïïíííëëëçççãããßßßÙÙÙÓÓÓÎÎÎ×××÷÷÷þþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýîîîÇÇÇ···°°°«««ªªª¬¬¬°°°¶¶¶½½½ÄÄÄÌÌÌÓÓÓÙÙÙßßßåååéééìììïïïñññóóóôôôõõõõõõööööööõõõõõõóóóòòòïïïíííéééåååàààÚÚÚÔÔÔÔÔÔðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ØØØÂÂÂ¸¸¸²²²¯¯¯®®®±±±¶¶¶¼¼¼ÄÄÄËËËÓÓÓÚÚÚàààæææëëëîîîñññóóóõõõööö÷÷÷øøøøøøùùùùùùøøøøøø÷÷÷õõõôôôñññïïïëëëçççáááÛÛÛÕÕÕÜÜÜøøøþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýòòòÒÒÒÃÃÃ»»»µµµ³³³´´´···½½½ÄÄÄËËËÓÓÓÚÚÚáááçççìììðððóóóõõõ÷÷÷øøøùùùúúúúúúûûûûûûûûûûûûúúúúúúùùù÷÷÷öööóóóðððìììèèèâââÜÜÜÛÛÛóóóýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿùùùààà···yyyEEE777¹¹¹ººº¾¾¾ÄÄÄÌÌÌÓÓÓÚÚÚáááèèèíííñññôôôöööøøøùùùúúúûûûüüüüüüüüüýýýýýýüüüüüüûûûûûûúúúøøø÷÷÷ôôôñññíííèèèãããÞÞÞãããùùùþþþÿÿÿÿÿÿÿÿÿÿÿÿøøøÝÝÝºººccc   
-
-
-¾¾¾ÁÁÁÅÅÅËËËÓÓÓÚÚÚáááèèèíííñññôôô÷÷÷ùùùúúúûûûüüüüüüýýýýýýýýýþþþþþþýýýýýýýýýüüüüüüûûûùùùøøøõõõòòòîîîéééääääääùùùþþþÿÿÿÿÿÿÿÿÿþþþõõõÞÞÞÒÒÒÅÅÅ   
-
-
-ÄÄÄÇÇÇÌÌÌÒÒÒÙÙÙàààçççíííñññõõõ÷÷÷ùùùûûûüüüýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþýýýýýýüüüûûûúúúøøøõõõòòòîîîêêêééé÷÷÷þþþþþþÿÿÿÿÿÿûûûéééÜÜÜÕÕÕÍÍÍ   ÊÊÊÍÍÍÒÒÒÙÙÙßßßæææìììñññôôô÷÷÷ùùùûûûüüüýýýýýýþþþþþþþþþþþþþþþÿÿÿÿÿÿþþþþþþþþþþþþþþþýýýýýýûûûúúúøøøöööóóóïïïìììîîîûûûþþþÿÿÿÿÿÿúúúèèèÝÝÝ×××ÑÑÑ   ÏÏÏÆÆÆDDD   ZZZáááôôô¯¯¯666MMM666VVVäääþþþþþþ···999GGG???KKKÔÔÔÿÿÿ      '''ÐÐÐZZZªªªùùùöööôôôððððððûûûþþþÿÿÿÿÿÿúúúéééßßßÙÙÙÔÔÔ      ÔÔÔ×××^^^eeeâââîîîóóó¸¸¸üüüööö666þþþÂÂÂÿÿÿþþþXXXâââþþþÆÆÆ   
-
-
-ùùùííí			úúúùùù÷÷÷ôôôôôôüüüþþþÿÿÿÿÿÿûûûêêêáááÜÜÜ×××   !!!ÕÕÕSSS^^^çççìììñññõõõ???ñññüüüýýýCCC   ÿÿÿEEEñññÿÿÿÿÿÿÊÊÊ   qqqÿÿÿþþþ   $$$ÿÿÿþþþþþþ%%%   üüüûûûùùùøøø÷÷÷ýýýþþþÿÿÿÿÿÿûûûëëëãããÞÞÞÚÚÚ   NNNÙÙÙïïïóóó÷÷÷   üüüýýýþþþûûûúúúÿÿÿ
-
-
-ÿÿÿÿÿÿÿÿÿôôô   333ÿÿÿÿÿÿ   '''ÿÿÿÿÿÿþþþ'''   ýýýüüüûûûúúúúúúýýýþþþÿÿÿÿÿÿûûûëëëäääàààÝÝÝ   
-
-
-²²²¨¨¨   UUUñññõõõøøø			ýýýþþþþþþþþþÿÿÿÿÿÿ			   ÿÿÿÿÿÿÿÿÿùùù   111ÿÿÿÿÿÿ   '''ÿÿÿÿÿÿÿÿÿ'''   ýýýýýýüüüüüüûûûþþþþþþÿÿÿÿÿÿûûûìììåååâââßßß   """âââæææ___   ¨¨¨öööùùù>>>èèèþþþþþþÿÿÿöööÿÿÿ>>>ôôôÿÿÿÿÿÿÔÔÔ   gggÿÿÿÿÿÿ   '''ÿÿÿÿÿÿÿÿÿ'''   þþþþþþýýýýýýýýýþþþþþþÿÿÿÿÿÿûûûíííæææãããÖÖÖ   ãããèèèßßßÖÖÖúúú½½½___ûûûÿÿÿîîîUUUôôô¾¾¾ÿÿÿþþþhhhÜÜÜÿÿÿôôô   ÿÿÿÿÿÿÿÿÿ
-
-
-   õõõþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿûûûíííççç···BBB      UUUÎÎÎ   üüü»»»:::///^^^jjjâââÿÿÿÿÿÿ¾¾¾>>>KKKEEEJJJÓÓÓÿÿÿÍÍÍKKK      rrrÿÿÿqqq      NNNÍÍÍþþþþþþþþþþþþþþþÿÿÿÿÿÿûûûîîîçççäääââââââãããæææêêêîîîòòòõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüðððèèèäääââââââäääæææêêêîîîòòòöööùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþøøøêêêäääââââââäääæææêêêîîîòòòöööùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúêêêäääââââââãããæææéééîîîòòòõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûíííäääáááàààáááäääèèèìììñññõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþöööåååßßßÞÞÞßßßâââæææëëëïïïóóó÷÷÷ùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúèèèÞÞÞÜÜÜÝÝÝàààäääèèèíííòòòöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþõõõßßßÙÙÙÚÚÚÜÜÜàààæææëëëðððôôô÷÷÷úúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþøøøâââ×××ÖÖÖÙÙÙÝÝÝâââèèèíííòòòöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýôôôÝÝÝÓÓÓÔÔÔØØØÞÞÞãããéééïïïóóó÷÷÷ùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýòòòÚÚÚÐÐÐÓÓÓØØØßßßåååëëëðððôôôøøøúúúûûûýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüñññØØØÏÏÏÓÓÓÙÙÙàààçççìììñññõõõøøøúúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüñññ×××ÎÎÎÓÓÓÚÚÚáááèèèíííòòòõõõøøøúúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüðððÕÕÕÎÎÎÓÓÓÛÛÛâââèèèîîîòòòöööùùùûûûüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüðððÖÖÖÔÔÔÕÕÕÛÛÛãããéééîîîóóóöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüöööðððÜÜÜÛÛÛÞÞÞãããêêêïïïôôô÷÷÷ùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþüüü÷÷÷òòòãããäääéééìììðððôôô÷÷÷úúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýùùùùùù÷÷÷îîîðððôôô÷÷÷ùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþýýýûûûûûûüüüüüüýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
Index: uspace/srv/console/gfx/anim_3.ppm
===================================================================
--- uspace/srv/console/gfx/anim_3.ppm	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,23 +1,0 @@
-P6
-# CREATOR: The GIMP's PNM Filter Version 1.0
-48 48
-255
-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûüüüþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýùùùøøøõõõêêêèèèèèèéééêêêëëëìììíííîîîîîîðððøøøúúúûûûþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýý÷÷÷ñññáááÞÞÞÞÞÞÜÜÜÞÞÞßßßáááãããäääåååæææçççèèèéééëëëêêêììì÷÷÷úúúþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýõõõîîî×××ÒÒÒÏÏÏÑÑÑÒÒÒÕÕÕ×××ÚÚÚÜÜÜÞÞÞàààâââãããääääääååååååääääääåååèèèõõõùùùýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýíííÏÏÏÇÇÇÃÃÃÃÃÃÅÅÅÈÈÈËËËÎÎÎÑÑÑÕÕÕØØØÛÛÛÝÝÝßßßàààáááââââââââââââáááßßßÞÞÞßßßâââôôôýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüìììÇÇÇ¸¸¸···¸¸¸»»»¾¾¾ÂÂÂÆÆÆÊÊÊÎÎÎÒÒÒÖÖÖÙÙÙÜÜÜÞÞÞàààáááââââââââââââàààßßßÜÜÜÙÙÙ×××ÝÝÝòòòýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüêêêÃÃÃ±±±¯¯¯°°°²²²¶¶¶ººº¾¾¾ÃÃÃÈÈÈÍÍÍÒÒÒÖÖÖÚÚÚÝÝÝßßßáááâââãããääääääãããáááàààÝÝÝÚÚÚÖÖÖÔÔÔÚÚÚòòòýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüëëëÁÁÁ­­­©©©©©©«««¯¯¯³³³¹¹¹¾¾¾ÄÄÄÊÊÊÏÏÏÔÔÔØØØÜÜÜßßßâââäääåååæææççççççæææäääâââàààÜÜÜÙÙÙÔÔÔÑÑÑØØØðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýìììÃÃÃ­­­§§§¦¦¦§§§ªªª®®®´´´ºººÁÁÁÇÇÇÍÍÍÓÓÓØØØÜÜÜàààãããæææèèèéééêêêêêêêêêêêêèèèæææäääàààÝÝÝØØØÓÓÓÏÏÏ×××ðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýíííÇÇÇ±±±©©©¦¦¦¦¦¦¨¨¨¬¬¬±±±···¾¾¾ÅÅÅÌÌÌÒÒÒØØØÝÝÝâââåååèèèêêêìììíííîîîîîîîîîîîîìììëëëèèèæææâââÞÞÞØØØÓÓÓÎÎÎÕÕÕðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööÏÏÏ¸¸¸¯¯¯©©©§§§¨¨¨«««°°°¶¶¶½½½ÄÄÄËËËÒÒÒÙÙÙÞÞÞãããçççêêêíííïïïðððñññòòòòòòòòòòòòñññïïïíííëëëçççãããßßßÙÙÙÓÓÓÎÎÎ×××÷÷÷þþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýîîîÇÇÇ···°°°«««ªªª¬¬¬°°°¶¶¶½½½ÄÄÄÌÌÌÓÓÓÙÙÙßßßåååéééìììïïïñññóóóôôôõõõõõõööööööõõõõõõóóóòòòïïïíííéééåååàààÚÚÚÔÔÔÔÔÔðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ØØØÂÂÂ¸¸¸²²²¯¯¯®®®±±±¶¶¶¼¼¼ÄÄÄËËËÓÓÓÚÚÚàààæææëëëîîîñññóóóõõõööö÷÷÷øøøøøøùùùùùùøøøøøø÷÷÷õõõôôôñññïïïëëëçççáááÛÛÛÕÕÕÜÜÜøøøþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýòòòÒÒÒÃÃÃ»»»µµµ³³³´´´···½½½ÄÄÄËËËÓÓÓÚÚÚáááçççìììðððóóóõõõ÷÷÷øøøùùùúúúúúúûûûûûûûûûûûûúúúúúúùùù÷÷÷öööóóóðððìììèèèâââÜÜÜÛÛÛóóóýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿùùùààà···yyyEEE777¹¹¹ººº¾¾¾ÄÄÄÌÌÌÓÓÓÚÚÚáááèèèíííñññôôôöööøøøùùùúúúûûûüüüüüüüüüýýýýýýüüüüüüûûûûûûúúúøøø÷÷÷ôôôñññíííèèèãããÞÞÞãããùùùþþþÿÿÿÿÿÿÿÿÿÿÿÿøøøÝÝÝºººccc   
-
-
-¾¾¾ÁÁÁÅÅÅËËËÓÓÓÚÚÚáááèèèíííñññôôô÷÷÷ùùùúúúûûûüüüüüüýýýýýýýýýþþþþþþýýýýýýýýýüüüüüüûûûùùùøøøõõõòòòîîîéééääääääùùùþþþÿÿÿÿÿÿÿÿÿþþþõõõÞÞÞÒÒÒÅÅÅ   
-
-
-ÄÄÄÇÇÇÌÌÌÒÒÒÙÙÙàààçççíííñññõõõ÷÷÷ùùùûûûüüüýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþýýýýýýüüüûûûúúúøøøõõõòòòîîîêêêééé÷÷÷þþþþþþÿÿÿÿÿÿûûûéééÜÜÜÕÕÕÍÍÍ   ÊÊÊÍÍÍÒÒÒÙÙÙßßßæææìììñññôôô÷÷÷ùùùûûûüüüýýýýýýþþþþþþþþþþþþþþþÿÿÿÿÿÿþþþþþþþþþþþþþþþýýýýýýûûûúúúøøøöööóóóïïïìììîîîûûûþþþÿÿÿÿÿÿúúúèèèÝÝÝ×××ÑÑÑ   ÏÏÏÆÆÆDDD   ZZZáááôôô¯¯¯666MMM666VVVäääþþþþþþ···999GGG???KKKÔÔÔÿÿÿ      '''ÐÐÐZZZªªªùùùöööôôôððððððûûûþþþÿÿÿÿÿÿúúúéééßßßÙÙÙÔÔÔ      ÔÔÔ×××^^^eeeâââîîîóóó¸¸¸üüüööö666þþþÂÂÂÿÿÿþþþXXXâââþþþÆÆÆ   
-
-
-ùùùííí			úúúùùù÷÷÷ôôôôôôüüüþþþÿÿÿÿÿÿûûûêêêáááÜÜÜ×××   !!!ÕÕÕSSS^^^çççìììñññõõõ???ñññüüüýýýCCC   ÿÿÿEEEñññÿÿÿÿÿÿÊÊÊ   qqqÿÿÿþþþ   $$$ÿÿÿþþþþþþ%%%   üüüûûûùùùøøø÷÷÷ýýýþþþÿÿÿÿÿÿûûûëëëãããÞÞÞÚÚÚ   NNNÙÙÙïïïóóó÷÷÷   üüüýýýþþþûûûúúúÿÿÿ
-
-
-ÿÿÿÿÿÿÿÿÿôôô   333ÿÿÿÿÿÿ   '''ÿÿÿÿÿÿþþþ'''   ýýýüüüûûûúúúúúúýýýþþþÿÿÿÿÿÿûûûëëëäääàààÝÝÝ   
-
-
-²²²¨¨¨   UUUñññõõõøøø			ýýýþþþþþþþþþÿÿÿÿÿÿ			   ÿÿÿÿÿÿÿÿÿùùù   111ÿÿÿÿÿÿ   '''ÿÿÿÿÿÿÿÿÿ'''   ýýýýýýüüüüüüûûûþþþþþþÿÿÿÿÿÿûûûìììåååâââßßß   """âââæææ___   ¨¨¨öööùùù>>>èèèþþþþþþÿÿÿöööÿÿÿ>>>ôôôÿÿÿÿÿÿÔÔÔ   gggÿÿÿÿÿÿ   '''ÿÿÿÿÿÿÿÿÿ'''   þþþþþþýýýýýýýýýþþþþþþÿÿÿÿÿÿûûûíííæææãããÖÖÖ   ãããèèèßßßÖÖÖúúú½½½___ûûûÿÿÿîîîUUUôôô¾¾¾ÿÿÿþþþhhhÜÜÜÿÿÿôôô   ÿÿÿÿÿÿÿÿÿ
-
-
-   õõõþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿûûûíííççç···BBB      UUUÎÎÎ   üüü»»»:::///^^^jjjâââÿÿÿÿÿÿ¾¾¾>>>KKKEEEJJJÓÓÓÿÿÿÍÍÍKKK      rrrÿÿÿqqq      NNNÍÍÍþþþþþþþþþþþþþþþÿÿÿÿÿÿûûûîîîçççäääââââââãããæææêêêîîîòòòõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüðððèèèäääââââââäääæææêêêîîîòòòöööùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþøøøêêêäääââââââäääæææêêêîîîòòòöööùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúêêêäääââââââãããæææéééîîîòòòõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûíííäääáááàààáááäääèèèìììñññõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþöööåååßßßÞÞÞßßßâââæææëëëïïïóóó÷÷÷ùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúèèèÞÞÞÜÜÜÝÝÝàààäääèèèíííòòòöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþõõõßßßÙÙÙÚÚÚÜÜÜàààæææëëëðððôôô÷÷÷úúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþøøøâââ×××ÖÖÖÙÙÙÝÝÝâââèèèíííòòòöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýôôôÝÝÝÓÓÓÔÔÔØØØÞÞÞãããéééïïïóóó÷÷÷ùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýòòòÚÚÚÐÐÐÓÓÓØØØßßßåååëëëðððôôôøøøúúúûûûýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüñññØØØÏÏÏÓÓÓÙÙÙàààçççìììñññõõõøøøúúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüñññ×××ÎÎÎÓÓÓÚÚÚáááèèèíííòòòõõõøøøúúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüðððÕÕÕÎÎÎÓÓÓÛÛÛâââèèèîîîòòòöööùùùûûûüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüðððÖÖÖÔÔÔÕÕÕÛÛÛãããéééîîîóóóöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿ÷÷÷ääääää÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüöööðððÜÜÜÛÛÛÞÞÞãããêêêïïïôôô÷÷÷ùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýýýýýýýþþþþþþþþþÿÿÿÿÿÿööö½½½eeeeee½½½öööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþüüü÷÷÷òòòãããäääéééìììðððôôô÷÷÷úúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿãããeeedddãããÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýùùùùùù÷÷÷îîîðððôôô÷÷÷ùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãããeeedddãããÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþýýýûûûûûûüüüüüüýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿööö½½½eeeddd½½½öööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööããããããöööþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
Index: uspace/srv/console/gfx/anim_4.ppm
===================================================================
--- uspace/srv/console/gfx/anim_4.ppm	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,23 +1,0 @@
-P6
-# CREATOR: The GIMP's PNM Filter Version 1.0
-48 48
-255
-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûüüüþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýùùùøøøõõõêêêèèèèèèéééêêêëëëìììíííîîîîîîðððøøøúúúûûûþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýý÷÷÷ñññáááÞÞÞÞÞÞÜÜÜÞÞÞßßßáááãããäääåååæææçççèèèéééëëëêêêììì÷÷÷úúúþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýõõõîîî×××ÒÒÒÏÏÏÑÑÑÒÒÒÕÕÕ×××ÚÚÚÜÜÜÞÞÞàààâââãããääääääååååååääääääåååèèèõõõùùùýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýíííÏÏÏÇÇÇÃÃÃÃÃÃÅÅÅÈÈÈËËËÎÎÎÑÑÑÕÕÕØØØÛÛÛÝÝÝßßßàààáááââââââââââââáááßßßÞÞÞßßßâââôôôýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüìììÇÇÇ¸¸¸···¸¸¸»»»¾¾¾ÂÂÂÆÆÆÊÊÊÎÎÎÒÒÒÖÖÖÙÙÙÜÜÜÞÞÞàààáááââââââââââââàààßßßÜÜÜÙÙÙ×××ÝÝÝòòòýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüêêêÃÃÃ±±±¯¯¯°°°²²²¶¶¶ººº¾¾¾ÃÃÃÈÈÈÍÍÍÒÒÒÖÖÖÚÚÚÝÝÝßßßáááâââãããääääääãããáááàààÝÝÝÚÚÚÖÖÖÔÔÔÚÚÚòòòýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüëëëÁÁÁ­­­©©©©©©«««¯¯¯³³³¹¹¹¾¾¾ÄÄÄÊÊÊÏÏÏÔÔÔØØØÜÜÜßßßâââäääåååæææççççççæææäääâââàààÜÜÜÙÙÙÔÔÔÑÑÑØØØðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýìììÃÃÃ­­­§§§¦¦¦§§§ªªª®®®´´´ºººÁÁÁÇÇÇÍÍÍÓÓÓØØØÜÜÜàààãããæææèèèéééêêêêêêêêêêêêèèèæææäääàààÝÝÝØØØÓÓÓÏÏÏ×××ðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýíííÇÇÇ±±±©©©¦¦¦¦¦¦¨¨¨¬¬¬±±±···¾¾¾ÅÅÅÌÌÌÒÒÒØØØÝÝÝâââåååèèèêêêìììíííîîîîîîîîîîîîìììëëëèèèæææâââÞÞÞØØØÓÓÓÎÎÎÕÕÕðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööÏÏÏ¸¸¸¯¯¯©©©§§§¨¨¨«««°°°¶¶¶½½½ÄÄÄËËËÒÒÒÙÙÙÞÞÞãããçççêêêíííïïïðððñññòòòòòòòòòòòòñññïïïíííëëëçççãããßßßÙÙÙÓÓÓÎÎÎ×××÷÷÷þþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýîîîÇÇÇ···°°°«««ªªª¬¬¬°°°¶¶¶½½½ÄÄÄÌÌÌÓÓÓÙÙÙßßßåååéééìììïïïñññóóóôôôõõõõõõööööööõõõõõõóóóòòòïïïíííéééåååàààÚÚÚÔÔÔÔÔÔðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ØØØÂÂÂ¸¸¸²²²¯¯¯®®®±±±¶¶¶¼¼¼ÄÄÄËËËÓÓÓÚÚÚàààæææëëëîîîñññóóóõõõööö÷÷÷øøøøøøùùùùùùøøøøøø÷÷÷õõõôôôñññïïïëëëçççáááÛÛÛÕÕÕÜÜÜøøøþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýòòòÒÒÒÃÃÃ»»»µµµ³³³´´´···½½½ÄÄÄËËËÓÓÓÚÚÚáááçççìììðððóóóõõõ÷÷÷øøøùùùúúúúúúûûûûûûûûûûûûúúúúúúùùù÷÷÷öööóóóðððìììèèèâââÜÜÜÛÛÛóóóýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿùùùààà···yyyEEE777¹¹¹ººº¾¾¾ÄÄÄÌÌÌÓÓÓÚÚÚáááèèèíííñññôôôöööøøøùùùúúúûûûüüüüüüüüüýýýýýýüüüüüüûûûûûûúúúøøø÷÷÷ôôôñññíííèèèãããÞÞÞãããùùùþþþÿÿÿÿÿÿÿÿÿÿÿÿøøøÝÝÝºººccc   
-
-
-¾¾¾ÁÁÁÅÅÅËËËÓÓÓÚÚÚáááèèèíííñññôôô÷÷÷ùùùúúúûûûüüüüüüýýýýýýýýýþþþþþþýýýýýýýýýüüüüüüûûûùùùøøøõõõòòòîîîéééääääääùùùþþþÿÿÿÿÿÿÿÿÿþþþõõõÞÞÞÒÒÒÅÅÅ   
-
-
-ÄÄÄÇÇÇÌÌÌÒÒÒÙÙÙàààçççíííñññõõõ÷÷÷ùùùûûûüüüýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþýýýýýýüüüûûûúúúøøøõõõòòòîîîêêêééé÷÷÷þþþþþþÿÿÿÿÿÿûûûéééÜÜÜÕÕÕÍÍÍ   ÊÊÊÍÍÍÒÒÒÙÙÙßßßæææìììñññôôô÷÷÷ùùùûûûüüüýýýýýýþþþþþþþþþþþþþþþÿÿÿÿÿÿþþþþþþþþþþþþþþþýýýýýýûûûúúúøøøöööóóóïïïìììîîîûûûþþþÿÿÿÿÿÿúúúèèèÝÝÝ×××ÑÑÑ   ÏÏÏÆÆÆDDD   ZZZáááôôô¯¯¯666MMM666VVVäääþþþþþþ···999GGG???KKKÔÔÔÿÿÿ      '''ÐÐÐZZZªªªùùùöööôôôððððððûûûþþþÿÿÿÿÿÿúúúéééßßßÙÙÙÔÔÔ      ÔÔÔ×××^^^eeeâââîîîóóó¸¸¸üüüööö666þþþÂÂÂÿÿÿþþþXXXâââþþþÆÆÆ   
-
-
-ùùùííí			úúúùùù÷÷÷ôôôôôôüüüþþþÿÿÿÿÿÿûûûêêêáááÜÜÜ×××   !!!ÕÕÕSSS^^^çççìììñññõõõ???ñññüüüýýýCCC   ÿÿÿEEEñññÿÿÿÿÿÿÊÊÊ   qqqÿÿÿþþþ   $$$ÿÿÿþþþþþþ%%%   üüüûûûùùùøøø÷÷÷ýýýþþþÿÿÿÿÿÿûûûëëëãããÞÞÞÚÚÚ   NNNÙÙÙïïïóóó÷÷÷   üüüýýýþþþûûûúúúÿÿÿ
-
-
-ÿÿÿÿÿÿÿÿÿôôô   333ÿÿÿÿÿÿ   '''ÿÿÿÿÿÿþþþ'''   ýýýüüüûûûúúúúúúýýýþþþÿÿÿÿÿÿûûûëëëäääàààÝÝÝ   
-
-
-²²²¨¨¨   UUUñññõõõøøø			ýýýþþþþþþþþþÿÿÿÿÿÿ			   ÿÿÿÿÿÿÿÿÿùùù   111ÿÿÿÿÿÿ   '''ÿÿÿÿÿÿÿÿÿ'''   ýýýýýýüüüüüüûûûþþþþþþÿÿÿÿÿÿûûûìììåååâââßßß   """âââæææ___   ¨¨¨öööùùù>>>èèèþþþþþþÿÿÿöööÿÿÿ>>>ôôôÿÿÿÿÿÿÔÔÔ   gggÿÿÿÿÿÿ   '''ÿÿÿÿÿÿÿÿÿ'''   þþþþþþýýýýýýýýýþþþþþþÿÿÿÿÿÿûûûíííæææãããÖÖÖ   ãããèèèßßßÖÖÖúúú½½½___ûûûÿÿÿîîîUUUôôô¾¾¾ÿÿÿþþþhhhÜÜÜÿÿÿôôô   ÿÿÿÿÿÿÿÿÿ
-
-
-   õõõþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿûûûíííççç···BBB      UUUÎÎÎ   üüü»»»:::///^^^jjjâââÿÿÿÿÿÿ¾¾¾>>>KKKEEEJJJÓÓÓÿÿÿÍÍÍKKK      rrrÿÿÿqqq      NNNÍÍÍþþþþþþþþþþþþþþþÿÿÿÿÿÿûûûîîîçççäääââââââãããæææêêêîîîòòòõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüðððèèèäääââââââäääæææêêêîîîòòòöööùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþøøøêêêäääââââââäääæææêêêîîîòòòöööùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúêêêäääââââââãããæææéééîîîòòòõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûíííäääáááàààáááäääèèèìììñññõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþöööåååßßßÞÞÞßßßâââæææëëëïïïóóó÷÷÷ùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúèèèÞÞÞÜÜÜÝÝÝàààäääèèèíííòòòöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþõõõßßßÙÙÙÚÚÚÜÜÜàààæææëëëðððôôô÷÷÷úúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþøøøâââ×××ÖÖÖÙÙÙÝÝÝâââèèèíííòòòöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýôôôÝÝÝÓÓÓÔÔÔØØØÞÞÞãããéééïïïóóó÷÷÷ùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýòòòÚÚÚÐÐÐÓÓÓØØØßßßåååëëëðððôôôøøøúúúûûûýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüñññØØØÏÏÏÓÓÓÙÙÙàààçççìììñññõõõøøøúúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüñññ×××ÎÎÎÓÓÓÚÚÚáááèèèíííòòòõõõøøøúúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüðððÕÕÕÎÎÎÓÓÓÛÛÛâââèèèîîîòòòöööùùùûûûüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ääääää÷÷÷ÿÿÿÿÿÿþþþüüüðððÖÖÖÔÔÔÕÕÕÛÛÛãããéééîîîóóóöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿööö½½½eeeeee½½½öööÿÿÿÿÿÿþþþüüüöööðððÜÜÜÛÛÛÞÞÞãããêêêïïïôôô÷÷÷ùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãããeeedddãããÿÿÿÿÿÿÿÿÿþþþþþþüüü÷÷÷òòòãããäääéééìììðððôôô÷÷÷úúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãããeeedddãããÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýùùùùùù÷÷÷îîîðððôôô÷÷÷ùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿööö½½½eeeddd½½½öööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþýýýûûûûûûüüüüüüýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööããããããöööþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
Index: uspace/srv/console/gfx/cons_has_data.ppm
===================================================================
--- uspace/srv/console/gfx/cons_has_data.ppm	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,5 +1,0 @@
-P6
-# CREATOR: The GIMP's PNM Filter Version 1.0
-48 48
-255
-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþúúþúúþúúþúúþûûþûûþûûþûûþûûþûûþüüþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþýýþùùþøøþõõþêêþèèþèèþééþêêþëëþììþííþîîþîîþððþøøþúúþûûþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþýýþ÷÷þññþááþÞÞþÞÞþÜÜþÞÞþßßþááþããþääþååþææþççþèèþééþëëþêêþììþ÷÷þúúþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþýýþõõþîîþ××þÒÒþÏÏþÑÑþÒÒþÕÕþ××þÚÚþÜÜþÞÞþààþââþããþääþääþååþååþääþääþååþèèþõõþùùþýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþýýþííþÏÏþÇÇþÃÃþÃÃþÅÅþÈÈþËËþÎÎþÑÑþÕÕþØØþÛÛþÝÝþßßþààþááþââþââþââþââþááþßßþÞÞþßßþââþôôþýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüüþììþÇÇþ¸¸þ··þ¸¸þ»»þ¾¾þÂÂþÆÆþÊÊþÎÎþÒÒþÖÖþÙÙþÜÜþÞÞþààþááþââþââþââþââþààþßßþÜÜþÙÙþ××þÝÝþòòþýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüüþêêþÃÃþ±±þ¯¯þ°°þ²²þ¶¶þººþ¾¾þÃÃþÈÈþÍÍþÒÒþÖÖþÚÚþÝÝþßßþááþââþããþääþääþããþááþààþÝÝþÚÚþÖÖþÔÔþÚÚþòòþýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüüþëëþÁÁþ­­þ©©þ©©þ««þ¯¯þ³³þ¹¹þ¾¾þÄÄþÊÊþÏÏþÔÔþØØþÜÜþßßþââþääþååþææþççþççþææþääþââþààþÜÜþÙÙþÔÔþÑÑþØØþððþýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþýýþììþÃÃþ­­þ§§þ¦¦þ§§þªªþ®®þ´´þººþÁÁþÇÇþÍÍþÓÓþØØþÜÜþààþããþææþèèþééþêêþêêþêêþêêþèèþææþääþààþÝÝþØØþÓÓþÏÏþ××þððþýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþýýþííþÇÇþ±±þ©©þ¦¦þ¦¦þ¨¨þ¬¬þ±±þ··þ¾¾þÅÅþÌÌþÒÒþØØþÝÝþââþååþèèþêêþììþííþîîþîîþîîþîîþììþëëþèèþææþââþÞÞþØØþÓÓþÎÎþÕÕþððþýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþööþÏÏþ¸¸þ¯¯þ©©þ§§þ¨¨þ««þ°°þ¶¶þ½½þÄÄþËËþÒÒþÙÙþÞÞþããþççþêêþííþïïþððþññþòòþòòþòòþòòþññþïïþííþëëþççþããþßßþÙÙþÓÓþÎÎþ××þ÷÷þþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþýýþîîþÇÇþ··þ°°þ««þªªþ¬¬þ°°þ¶¶þ½½þÄÄþÌÌþÓÓþÙÙþßßþååþééþììþïïþññþóóþôôþõõþõõþööþööþõõþõõþóóþòòþïïþííþééþååþààþÚÚþÔÔþÔÔþððþýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ÷÷þØØþÂÂþ¸¸þ²²þ¯¯þ®®þ±±þ¶¶þ¼¼þÄÄþËËþÓÓþÚÚþààþææþëëþîîþññþóóþõõþööþ÷÷þøøþøøþùùþùùþøøþøøþ÷÷þõõþôôþññþïïþëëþççþááþÛÛþÕÕþÜÜþøøþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþýýþòòþÒÒþÃÃþ»»þµµþ³³þ´´þ··þ½½þÄÄþËËþÓÓþÚÚþááþççþììþððþóóþõõþ÷÷þøøþùùþúúþúúþûûþûûþûûþûûþúúþúúþùùþ÷÷þööþóóþððþììþèèþââþÜÜþÛÛþóóþýýþþþÿÿÿÿÿÿÿÿÿÿÿÿþùùþààþÏÏþÅÅþ¾¾þººþ¹¹þººþ¾¾þÄÄþÌÌþÓÓþÚÚþááþèèþííþññþôôþööþøøþùùþúúþûûþüüþüüþüüþýýþýýþüüþüüþûûþûûþúúþøøþ÷÷þôôþññþííþèèþããþÞÞþããþùùþþþÿÿÿÿÿÿÿÿÿÿÿÿþøøþÝÝþÐÐþÈÈþÂÂþ¾¾þ¾¾þÁÁþÅÅþËËþÓÓþÚÚþááþèèþííþññþôôþ÷÷þùùþúúþûûþüüþüüþýýÿýýÿýýÿþþÿþþÿýýÿýýþýýþüüþüüþûûþùùþøøþõõþòòþîîþééþääþääþùùþþþÿÿÿÿÿÿÿÿÿþþþþõõþÞÞþÒÒþËËþÆÆþÃÃþÄÄþÇÇþÌÌþÒÒþÙÙþààþççþííþññþõõþ÷÷þùùþûûþüüþýýþýýÿýýÿþþÿþþÿþþÿþþÿþþÿþþÿþþÿþþÿýýþýýþüüþûûþúúþøøþõõþòòþîîþêêþééþ÷÷þþþþþþÿÿÿÿÿÿþûûþééþÜÜþÕÕþÎÎþÊÊþÈÈþÊÊþÍÍþÒÒþÙÙþßßþææþììþññþôôþ÷÷þùùþûûþüüþýýÿýýÿþþÿþþÿþþÿþþÿþþÿÿÿÿÿÿÿþþÿþþÿþþÿþþÿþþÿýýþýýþûûþúúþøøþööþóóþïïþììþîîþûûþþþÿÿÿÿÿÿþúúþèèþÝÝþ××þÑÑþÎÎþÍÍþÏÏþÓÓþØØþÞÞþååþëëþððþôôþ÷÷þùùþûûþüüþýýÿýýÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿþþÿýýþýýþüüþúúþùùþööþôôþððþððþûûþþþÿÿÿÿÿÿþúúþééþßßþÙÙþÔÔþÒÒþÒÒþÔÔþØØþÝÝþããþééþîîþóóþööþùùþûûþüüþýýÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿýýþýýþüüþúúþùùþ÷÷þôôþôôþüüþþþÿÿÿÿÿÿþûûþêêþááþÜÜþ××þÖÖþÖÖþØØþÜÜþââþççþììþññþõõþøøþúúþûûþüüÿýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿýýþýýþüüþûûþùùþøøþ÷÷þýýþþþÿÿÿÿÿÿþûûþëëþããþÞÞþÚÚþÙÙþÚÚþÜÜþààþååþêêþïïþóóþ÷÷þùùþûûþüüÿýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿýýþýýþüüþûûþúúþúúþýýþþþÿÿÿÿÿÿþûûþëëþääþààþÝÝþÜÜþÝÝþßßþããþèèþííþññþõõþøøþúúþüüþýýÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿýýÿýýþüüþüüþûûþþþþþþÿÿÿÿÿÿþûûþììþååþââþßßþÞÞþßßþââþææþêêþïïþóóþööþùùþûûþüüÿýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿþþÿýýþýýþýýþþþþþþÿÿÿÿÿÿþûûþííþææþããþààþààþááþääþèèþììþððþôôþ÷÷þúúþüüþýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿþþÿþþÿþþÿþþÿþþÿÿÿÿÿÿþûûþííþççþääþááþááþââþååþééþííþññþõõþøøþúúþüüÿýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿþþÿþþÿþþÿÿÿÿÿÿþûûþîîþççþääþââþââþããþææþêêþîîþòòþõõþøøþúúþüüÿýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüüþððþèèþääþââþââþääþææþêêþîîþòòþööþùùþûûþýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþøøþêêþääþââþââþääþææþêêþîîþòòþööþùùþûûþýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþúúþêêþääþââþââþããþææþééþîîþòòþõõþøøþúúþüüÿýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþûûþííþääþááþààþááþääþèèþììþññþõõþøøþúúþüüÿýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþööþååþßßþÞÞþßßþââþææþëëþïïþóóþ÷÷þùùþûûþýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþúúþèèþÞÞþÜÜþÝÝþààþääþèèþííþòòþööþùùþûûþüüÿýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿýýÿýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþõõþßßþÙÙþÚÚþÜÜþààþææþëëþððþôôþ÷÷þúúþüüþýýÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿýýÿýýÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþøøþââþ××þÖÖþÙÙþÝÝþââþèèþííþòòþööþùùþûûþüüÿýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿýýÿýýÿüüÿýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþýýþôôþÝÝþÓÓþÔÔþØØþÞÞþããþééþïïþóóþ÷÷þùùþûûþüüÿýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿýýÿýýÿüüÿýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþýýþòòþÚÚþÐÐþÓÓþØØþßßþååþëëþððþôôþøøþúúþûûþýýÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿýýÿýýÿüüÿýýÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþüüþññþØØþÏÏþÓÓþÙÙþààþççþììþññþõõþøøþúúþüüþýýÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿýýÿýýÿüüÿýýÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþüüþññþ××þÎÎþÓÓþÚÚþááþèèþííþòòþõõþøøþúúþüüþýýÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿýýÿýýÿüüÿýýÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþüüþððþÕÕþÎÎþÓÓþÛÛþââþèèþîîþòòþööþùùþûûþüüþýýÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿýýÿýýÿüüÿýýÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþüüþððþÖÖþÔÔþÕÕþÛÛþããþééþîîþóóþööþùùþûûþüüþýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿýýÿüüÿýýÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþüüþööþððþÜÜþÛÛþÞÞþããþêêþïïþôôþ÷÷þùùþûûþüüÿýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿýýÿýýÿýýÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþüüþ÷÷þòòþããþääþééþììþððþôôþ÷÷þúúþüüþýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿþþÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþýýþùùþùùþ÷÷þîîþððþôôþ÷÷þùùþûûþýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþýýþûûþûûþüüþüüþýýþýýþþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
Index: uspace/srv/console/gfx/cons_idle.ppm
===================================================================
--- uspace/srv/console/gfx/cons_idle.ppm	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,5 +1,0 @@
-P6
-# CREATOR: The GIMP's PNM Filter Version 1.0
-48 48
-255
-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûüüüþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýùùùøøøõõõêêêèèèèèèéééêêêëëëìììíííîîîîîîðððøøøúúúûûûþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýý÷÷÷ñññáááÞÞÞÞÞÞÜÜÜÞÞÞßßßáááãããäääåååæææçççèèèéééëëëêêêììì÷÷÷úúúþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýõõõîîî×××ÒÒÒÏÏÏÑÑÑÒÒÒÕÕÕ×××ÚÚÚÜÜÜÞÞÞàààâââãããääääääååååååääääääåååèèèõõõùùùýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýíííÏÏÏÇÇÇÃÃÃÃÃÃÅÅÅÈÈÈËËËÎÎÎÑÑÑÕÕÕØØØÛÛÛÝÝÝßßßàààáááââââââââââââáááßßßÞÞÞßßßâââôôôýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüìììÇÇÇ¸¸¸···¸¸¸»»»¾¾¾ÂÂÂÆÆÆÊÊÊÎÎÎÒÒÒÖÖÖÙÙÙÜÜÜÞÞÞàààáááââââââââââââàààßßßÜÜÜÙÙÙ×××ÝÝÝòòòýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüêêêÃÃÃ±±±¯¯¯°°°²²²¶¶¶ººº¾¾¾ÃÃÃÈÈÈÍÍÍÒÒÒÖÖÖÚÚÚÝÝÝßßßáááâââãããääääääãããáááàààÝÝÝÚÚÚÖÖÖÔÔÔÚÚÚòòòýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüëëëÁÁÁ­­­©©©©©©«««¯¯¯³³³¹¹¹¾¾¾ÄÄÄÊÊÊÏÏÏÔÔÔØØØÜÜÜßßßâââäääåååæææççççççæææäääâââàààÜÜÜÙÙÙÔÔÔÑÑÑØØØðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýìììÃÃÃ­­­§§§¦¦¦§§§ªªª®®®´´´ºººÁÁÁÇÇÇÍÍÍÓÓÓØØØÜÜÜàààãããæææèèèéééêêêêêêêêêêêêèèèæææäääàààÝÝÝØØØÓÓÓÏÏÏ×××ðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýíííÇÇÇ±±±©©©¦¦¦¦¦¦¨¨¨¬¬¬±±±···¾¾¾ÅÅÅÌÌÌÒÒÒØØØÝÝÝâââåååèèèêêêìììíííîîîîîîîîîîîîìììëëëèèèæææâââÞÞÞØØØÓÓÓÎÎÎÕÕÕðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööÏÏÏ¸¸¸¯¯¯©©©§§§¨¨¨«««°°°¶¶¶½½½ÄÄÄËËËÒÒÒÙÙÙÞÞÞãããçççêêêíííïïïðððñññòòòòòòòòòòòòñññïïïíííëëëçççãããßßßÙÙÙÓÓÓÎÎÎ×××÷÷÷þþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýîîîÇÇÇ···°°°«««ªªª¬¬¬°°°¶¶¶½½½ÄÄÄÌÌÌÓÓÓÙÙÙßßßåååéééìììïïïñññóóóôôôõõõõõõööööööõõõõõõóóóòòòïïïíííéééåååàààÚÚÚÔÔÔÔÔÔðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ØØØÂÂÂ¸¸¸²²²¯¯¯®®®±±±¶¶¶¼¼¼ÄÄÄËËËÓÓÓÚÚÚàààæææëëëîîîñññóóóõõõööö÷÷÷øøøøøøùùùùùùøøøøøø÷÷÷õõõôôôñññïïïëëëçççáááÛÛÛÕÕÕÜÜÜøøøþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýòòòÒÒÒÃÃÃ»»»µµµ³³³´´´···½½½ÄÄÄËËËÓÓÓÚÚÚáááçççìììðððóóóõõõ÷÷÷øøøùùùúúúúúúûûûûûûûûûûûûúúúúúúùùù÷÷÷öööóóóðððìììèèèâââÜÜÜÛÛÛóóóýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿùùùàààÏÏÏÅÅÅ¾¾¾ººº¹¹¹ººº¾¾¾ÄÄÄÌÌÌÓÓÓÚÚÚáááèèèíííñññôôôöööøøøùùùúúúûûûüüüüüüüüüýýýýýýüüüüüüûûûûûûúúúøøø÷÷÷ôôôñññíííèèèãããÞÞÞãããùùùþþþÿÿÿÿÿÿÿÿÿÿÿÿøøøÝÝÝÐÐÐÈÈÈÂÂÂ¾¾¾¾¾¾ÁÁÁÅÅÅËËËÓÓÓÚÚÚáááèèèíííñññôôô÷÷÷ùùùúúúûûûüüüüüüýýýýýýýýýþþþþþþýýýýýýýýýüüüüüüûûûùùùøøøõõõòòòîîîéééääääääùùùþþþÿÿÿÿÿÿÿÿÿþþþõõõÞÞÞÒÒÒËËËÆÆÆÃÃÃÄÄÄÇÇÇÌÌÌÒÒÒÙÙÙàààçççíííñññõõõ÷÷÷ùùùûûûüüüýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþýýýýýýüüüûûûúúúøøøõõõòòòîîîêêêééé÷÷÷þþþþþþÿÿÿÿÿÿûûûéééÜÜÜÕÕÕÎÎÎÊÊÊÈÈÈÊÊÊÍÍÍÒÒÒÙÙÙßßßæææìììñññôôô÷÷÷ùùùûûûüüüýýýýýýþþþþþþþþþþþþþþþÿÿÿÿÿÿþþþþþþþþþþþþþþþýýýýýýûûûúúúøøøöööóóóïïïìììîîîûûûþþþÿÿÿÿÿÿúúúèèèÝÝÝ×××ÑÑÑÎÎÎÍÍÍÏÏÏÓÓÓØØØÞÞÞåååëëëðððôôô÷÷÷ùùùûûûüüüýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþýýýýýýüüüúúúùùùöööôôôððððððûûûþþþÿÿÿÿÿÿúúúéééßßßÙÙÙÔÔÔÒÒÒÒÒÒÔÔÔØØØÝÝÝãããéééîîîóóóöööùùùûûûüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüúúúùùù÷÷÷ôôôôôôüüüþþþÿÿÿÿÿÿûûûêêêáááÜÜÜ×××ÖÖÖÖÖÖØØØÜÜÜâââçççìììñññõõõøøøúúúûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüûûûùùùøøø÷÷÷ýýýþþþÿÿÿÿÿÿûûûëëëãããÞÞÞÚÚÚÙÙÙÚÚÚÜÜÜàààåååêêêïïïóóó÷÷÷ùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüûûûúúúúúúýýýþþþÿÿÿÿÿÿûûûëëëäääàààÝÝÝÜÜÜÝÝÝßßßãããèèèíííñññõõõøøøúúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüüüüûûûþþþþþþÿÿÿÿÿÿûûûìììåååâââßßßÞÞÞßßßâââæææêêêïïïóóóöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþýýýýýýýýýþþþþþþÿÿÿÿÿÿûûûíííæææãããààààààáááäääèèèìììðððôôô÷÷÷úúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿûûûíííçççäääááááááâââåååéééíííñññõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþÿÿÿÿÿÿûûûîîîçççäääââââââãããæææêêêîîîòòòõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüðððèèèäääââââââäääæææêêêîîîòòòöööùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþøøøêêêäääââââââäääæææêêêîîîòòòöööùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúêêêäääââââââãããæææéééîîîòòòõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûíííäääáááàààáááäääèèèìììñññõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþöööåååßßßÞÞÞßßßâââæææëëëïïïóóó÷÷÷ùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúèèèÞÞÞÜÜÜÝÝÝàààäääèèèíííòòòöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþõõõßßßÙÙÙÚÚÚÜÜÜàààæææëëëðððôôô÷÷÷úúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþøøøâââ×××ÖÖÖÙÙÙÝÝÝâââèèèíííòòòöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýôôôÝÝÝÓÓÓÔÔÔØØØÞÞÞãããéééïïïóóó÷÷÷ùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýòòòÚÚÚÐÐÐÓÓÓØØØßßßåååëëëðððôôôøøøúúúûûûýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüñññØØØÏÏÏÓÓÓÙÙÙàààçççìììñññõõõøøøúúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüñññ×××ÎÎÎÓÓÓÚÚÚáááèèèíííòòòõõõøøøúúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüðððÕÕÕÎÎÎÓÓÓÛÛÛâââèèèîîîòòòöööùùùûûûüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüðððÖÖÖÔÔÔÕÕÕÛÛÛãããéééîîîóóóöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüöööðððÜÜÜÛÛÛÞÞÞãããêêêïïïôôô÷÷÷ùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþüüü÷÷÷òòòãããäääéééìììðððôôô÷÷÷úúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýùùùùùù÷÷÷îîîðððôôô÷÷÷ùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþýýýûûûûûûüüüüüüýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
Index: uspace/srv/console/gfx/cons_kernel.ppm
===================================================================
--- uspace/srv/console/gfx/cons_kernel.ppm	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,23 +1,0 @@
-P6
-# CREATOR: The GIMP's PNM Filter Version 1.0
-48 48
-255
-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûüüüþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýùùùøøøõõõêêêèèèèèèéééêêêëëëìììíííîîîîîîðððøøøúúúûûûþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýý÷÷÷ñññáááÞÞÞÞÞÞÜÜÜÞÞÞßßßáááãããäääåååæææçççèèèéééëëëêêêììì÷÷÷úúúþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýõõõîîî×××ÒÒÒÏÏÏÑÑÑÒÒÒÕÕÕ×××ÚÚÚÜÜÜÞÞÞàààâââãããääääääååååååääääääåååèèèõõõùùùýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýíííÏÏÏÇÇÇÃÃÃÃÃÃÅÅÅÈÈÈËËËÎÎÎÑÑÑÕÕÕØØØÛÛÛÝÝÝßßßàààáááââââââââââââáááßßßÞÞÞßßßâââôôôýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüìììÇÇÇ¸¸¸···¸¸¸»»»¾¾¾ÂÂÂÆÆÆÊÊÊÎÎÎÒÒÒÖÖÖÙÙÙÜÜÜÞÞÞàààáááââââââââââââàààßßßÜÜÜÙÙÙ×××ÝÝÝòòòýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüêêêÃÃÃ±±±¯¯¯°°°²²²¶¶¶ººº¾¾¾ÃÃÃÈÈÈÍÍÍÒÒÒÖÖÖÚÚÚÝÝÝßßßáááâââãããääääääãããáááàààÝÝÝÚÚÚÖÖÖÔÔÔÚÚÚòòòýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüëëëÁÁÁ­­­©©©©©©«««¯¯¯³³³¹¹¹¾¾¾ÄÄÄÊÊÊÏÏÏÔÔÔØØØÜÜÜßßßâââäääåååæææççççççæææäääâââàààÜÜÜÙÙÙÔÔÔÑÑÑØØØðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýìììÃÃÃ­­­§§§¦¦¦§§§ªªª®®®´´´ºººÁÁÁÇÇÇÍÍÍÓÓÓØØØÜÜÜàààãããæææèèèéééêêêêêêêêêêêêèèèæææäääàààÝÝÝØØØÓÓÓÏÏÏ×××ðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýíííÇÇÇ±±±©©©¦¦¦¦¦¦¨¨¨¬¬¬±±±···¾¾¾ÅÅÅÌÌÌÒÒÒØØØÝÝÝâââåååèèèêêêìììíííîîîîîîîîîîîîìììëëëèèèæææâââÞÞÞØØØÓÓÓÎÎÎÕÕÕðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööÏÏÏ¸¸¸¯¯¯©©©§§§¨¨¨«««°°°¶¶¶½½½ÄÄÄËËËÒÒÒÙÙÙÞÞÞãããçççêêêíííïïïðððñññòòòòòòòòòòòòñññïïïíííëëëçççãããßßßÙÙÙÓÓÓÎÎÎ×××÷÷÷þþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýîîîÇÇÇ···°°°«««ªªª¬¬¬°°°¶¶¶½½½ÄÄÄÌÌÌÓÓÓÙÙÙßßßåååéééìììïïïñññóóóôôôõõõõõõööööööõõõõõõóóóòòòïïïíííéééåååàààÚÚÚÔÔÔÔÔÔðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ØØØÂÂÂ¸¸¸²²²¯¯¯®®®±±±¶¶¶¼¼¼ÄÄÄËËËÓÓÓÚÚÚàààæææëëëîîîñññóóóõõõööö÷÷÷øøøøøøùùùùùùøøøøøø÷÷÷õõõôôôñññïïïëëëçççáááÛÛÛÕÕÕÜÜÜøøøþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýòòòÒÒÒÃÃÃ»»»µµµ³³³´´´···½½½ÄÄÄËËËÓÓÓÚÚÚáááçççìììðððóóóõõõ÷÷÷øøøùùùúúúúúúûûûûûûûûûûûûúúúúúúùùù÷÷÷öööóóóðððìììèèèâââÜÜÜÛÛÛóóóýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿùùùààà···yyyEEE777¹¹¹ººº¾¾¾ÄÄÄÌÌÌÓÓÓÚÚÚáááèèèíííñññôôôöööøøøùùùúúúûûûüüüüüüüüüýýýýýýüüüüüüûûûûûûúúúøøø÷÷÷ôôôñññíííèèèãããÞÞÞãããùùùþþþÿÿÿÿÿÿÿÿÿÿÿÿøøøÝÝÝºººccc   
-
-
-¾¾¾ÁÁÁÅÅÅËËËÓÓÓÚÚÚáááèèèíííñññôôô÷÷÷ùùùúúúûûûüüüüüüýýýýýýýýýþþþþþþýýýýýýýýýüüüüüüûûûùùùøøøõõõòòòîîîéééääääääùùùþþþÿÿÿÿÿÿÿÿÿþþþõõõÞÞÞÒÒÒÅÅÅ   
-
-
-ÄÄÄÇÇÇÌÌÌÒÒÒÙÙÙàààçççíííñññõõõ÷÷÷ùùùûûûüüüýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþýýýýýýüüüûûûúúúøøøõõõòòòîîîêêêééé÷÷÷þþþþþþÿÿÿÿÿÿûûûéééÜÜÜÕÕÕÍÍÍ   ÊÊÊÍÍÍÒÒÒÙÙÙßßßæææìììñññôôô÷÷÷ùùùûûûüüüýýýýýýþþþþþþþþþþþþþþþÿÿÿÿÿÿþþþþþþþþþþþþþþþýýýýýýûûûúúúøøøöööóóóïïïìììîîîûûûþþþÿÿÿÿÿÿúúúèèèÝÝÝ×××ÑÑÑ   ÏÏÏÆÆÆDDD   ZZZáááôôô¯¯¯666MMM666VVVäääþþþþþþ···999GGG???KKKÔÔÔÿÿÿ      '''ÐÐÐZZZªªªùùùöööôôôððððððûûûþþþÿÿÿÿÿÿúúúéééßßßÙÙÙÔÔÔ      ÔÔÔ×××^^^eeeâââîîîóóó¸¸¸üüüööö666þþþÂÂÂÿÿÿþþþXXXâââþþþÆÆÆ   
-
-
-ùùùííí			úúúùùù÷÷÷ôôôôôôüüüþþþÿÿÿÿÿÿûûûêêêáááÜÜÜ×××   !!!ÕÕÕSSS^^^çççìììñññõõõ???ñññüüüýýýCCC   ÿÿÿEEEñññÿÿÿÿÿÿÊÊÊ   qqqÿÿÿþþþ   $$$ÿÿÿþþþþþþ%%%   üüüûûûùùùøøø÷÷÷ýýýþþþÿÿÿÿÿÿûûûëëëãããÞÞÞÚÚÚ   NNNÙÙÙïïïóóó÷÷÷   üüüýýýþþþûûûúúúÿÿÿ
-
-
-ÿÿÿÿÿÿÿÿÿôôô   333ÿÿÿÿÿÿ   '''ÿÿÿÿÿÿþþþ'''   ýýýüüüûûûúúúúúúýýýþþþÿÿÿÿÿÿûûûëëëäääàààÝÝÝ   
-
-
-²²²¨¨¨   UUUñññõõõøøø			ýýýþþþþþþþþþÿÿÿÿÿÿ			   ÿÿÿÿÿÿÿÿÿùùù   111ÿÿÿÿÿÿ   '''ÿÿÿÿÿÿÿÿÿ'''   ýýýýýýüüüüüüûûûþþþþþþÿÿÿÿÿÿûûûìììåååâââßßß   """âââæææ___   ¨¨¨öööùùù>>>èèèþþþþþþÿÿÿöööÿÿÿ>>>ôôôÿÿÿÿÿÿÔÔÔ   gggÿÿÿÿÿÿ   '''ÿÿÿÿÿÿÿÿÿ'''   þþþþþþýýýýýýýýýþþþþþþÿÿÿÿÿÿûûûíííæææãããÖÖÖ   ãããèèèßßßÖÖÖúúú½½½___ûûûÿÿÿîîîUUUôôô¾¾¾ÿÿÿþþþhhhÜÜÜÿÿÿôôô   ÿÿÿÿÿÿÿÿÿ
-
-
-   õõõþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿûûûíííççç···BBB      UUUÎÎÎ   üüü»»»:::///^^^jjjâââÿÿÿÿÿÿ¾¾¾>>>KKKEEEJJJÓÓÓÿÿÿÍÍÍKKK      rrrÿÿÿqqq      NNNÍÍÍþþþþþþþþþþþþþþþÿÿÿÿÿÿûûûîîîçççäääââââââãããæææêêêîîîòòòõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüðððèèèäääââââââäääæææêêêîîîòòòöööùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþøøøêêêäääââââââäääæææêêêîîîòòòöööùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúêêêäääââââââãããæææéééîîîòòòõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûíííäääáááàààáááäääèèèìììñññõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþöööåååßßßÞÞÞßßßâââæææëëëïïïóóó÷÷÷ùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúèèèÞÞÞÜÜÜÝÝÝàààäääèèèíííòòòöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþõõõßßßÙÙÙÚÚÚÜÜÜàààæææëëëðððôôô÷÷÷úúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþøøøâââ×××ÖÖÖÙÙÙÝÝÝâââèèèíííòòòöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýôôôÝÝÝÓÓÓÔÔÔØØØÞÞÞãããéééïïïóóó÷÷÷ùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýòòòÚÚÚÐÐÐÓÓÓØØØßßßåååëëëðððôôôøøøúúúûûûýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüñññØØØÏÏÏÓÓÓÙÙÙàààçççìììñññõõõøøøúúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüñññ×××ÎÎÎÓÓÓÚÚÚáááèèèíííòòòõõõøøøúúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüðððÕÕÕÎÎÎÓÓÓÛÛÛâââèèèîîîòòòöööùùùûûûüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüðððÖÖÖÔÔÔÕÕÕÛÛÛãããéééîîîóóóöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüöööðððÜÜÜÛÛÛÞÞÞãããêêêïïïôôô÷÷÷ùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþüüü÷÷÷òòòãããäääéééìììðððôôô÷÷÷úúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýùùùùùù÷÷÷îîîðððôôô÷÷÷ùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþýýýûûûûûûüüüüüüýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
Index: uspace/srv/console/gfx/cons_selected.ppm
===================================================================
--- uspace/srv/console/gfx/cons_selected.ppm	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,29 +1,0 @@
-P6
-# CREATOR: The GIMP's PNM Filter Version 1.0
-48 48
-255
-ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüûûû÷÷÷ïïïæææÝÝÝ×××ÓÓÓÓÓÓ×××ÝÝÝæææïïï÷÷÷ûûûüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýûûûôôôåååÓÓÓÂÂÂ©©©tttaaaVVVVVVaaattt©©©ÁÁÁÒÒÒåååôôôûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýûûûðððÙÙÙººº]]]LLL___zzz¬¬¬¸¸¸¹¹¹¯¯¯eee```]]]ºººÙÙÙðððûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüôôôÛÛÛ¬¬¬oooFFFfff   ³³³½½½ÈÈÈÒÒÒÛÛÛàààáááÞÞÞØØØÑÑÑÈÈÈÀÀÀ­­­tttdddnnn¬¬¬ÚÚÚôôôüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýúúúèèèºººxxx@@@jjj···ËËËÑÑÑÔÔÔ×××ÚÚÚÜÜÜÞÞÞßßßáááâââââââââáááÝÝÝËËË²²²~~~kkkwww¹¹¹èèèúúúüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüøøøÜÜÜ555NNN¯¯¯ÀÀÀÅÅÅÉÉÉÌÌÌÏÏÏÓÓÓ×××ÙÙÙÜÜÜÞÞÞßßßàààááááááàààßßßÞÞÞÚÚÚÊÊÊªªªggggggÛÛÛ÷÷÷üüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüöööÐÐÐ
-
-
-333www²²²¸¸¸¼¼¼ÀÀÀÅÅÅÉÉÉÍÍÍÑÑÑÔÔÔØØØÛÛÛÝÝÝßßßàààáááááááááàààßßßÜÜÜÚÚÚÓÓÓ½½½uuu
-
-
-ÏÏÏõõõüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüöööËËËxxx000{{{¥¥¥¬¬¬°°°³³³¸¸¸½½½ÂÂÂÇÇÇÌÌÌÑÑÑÕÕÕØØØÜÜÜÞÞÞàààáááâââãããâââáááàààÞÞÞÜÜÜ×××ÔÔÔÉÉÉ{{{xxxËËËõõõüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýøøøÐÐÐxxx///{{{   ¦¦¦¨¨¨¬¬¬²²²···½½½ÃÃÃÈÈÈÎÎÎÓÓÓ×××ÛÛÛÞÞÞáááãããååååååæææååååååãããáááÞÞÞÛÛÛÖÖÖÒÒÒÈÈÈ}}}xxxÐÐÐ÷÷÷üüüýýýýýýýýýýýýýýýýýýýýýýýýúúúÛÛÛ
-
-
-000{{{£££¤¤¤¨¨¨­­­²²²¹¹¹¿¿¿ÆÆÆÌÌÌÒÒÒ×××ÜÜÜàààãããåååçççéééêêêêêêêêêéééçççåååãããàààÜÜÜ×××ÑÑÑÆÆÆ{{{
-
-
-ÛÛÛúúúüüüýýýýýýýýýýýýýýýýýýüüüèèè333{{{   ££££££¦¦¦ªªª¯¯¯¶¶¶½½½ÄÄÄËËËÒÒÒ×××ÝÝÝáááåååèèèêêêìììíííîîîîîîîîîíííìììêêêèèèåååáááÝÝÝØØØÑÑÑÅÅÅuuuèèèûûûüüüýýýýýýýýýýýýýýýôôôººº555www¥¥¥¦¦¦¤¤¤¦¦¦©©©®®®´´´¼¼¼ÃÃÃËËËÒÒÒØØØÞÞÞãããçççêêêíííïïïðððñññòòòòòòòòòñññðððïïïíííêêêçççãããÞÞÞØØØÑÑÑÃÃÃgggºººôôôüüüýýýýýýýýýýýýûûûÚÚÚwwwNNN­­­¨¨¨¨¨¨ªªª®®®´´´»»»ÃÃÃËËËÒÒÒÙÙÙßßßäääéééìììïïïñññóóóôôôõõõõõõõõõõõõõõõôôôóóóñññïïïìììéééäääßßßÙÙÙÑÑÑµµµwwwÚÚÚúúúüüüýýýýýýýýýñññ¬¬¬@@@²²²¯¯¯¬¬¬­­­¯¯¯´´´»»»ÃÃÃËËËÓÓÓÚÚÚàààæææëëëîîîñññóóóõõõööö÷÷÷øøøøøøøøøøøøøøø÷÷÷öööõõõóóóñññîîîëëëæææáááÙÙÙÎÎÎjjj¬¬¬ðððüüüýýýýýýûûûÙÙÙooojjj¯¯¯¸¸¸³³³²²²²²²¶¶¶¼¼¼ÃÃÃËËËÓÓÓÚÚÚáááçççìììðððóóóõõõ÷÷÷øøøùùùúúúúúúúúúúúúúúúúúúúúúùùùøøø÷÷÷õõõóóóðððìììçççâââÚÚÚÃÃÃoooÙÙÙûûûüüüýýýõõõºººFFFÀÀÀ¼¼¼¸¸¸···¹¹¹½½½ÃÃÃËËËÓÓÓÚÚÚáááèèèíííñññôôôöööøøøùùùúúúûûûûûûûûûüüüüüüüüüûûûûûûûûûúúúùùùøøøöööôôôñññíííèèèâââÙÙÙ¦¦¦eeeºººôôôüüüüüüåååeee¶¶¶ÆÆÆÀÀÀ½½½½½½¿¿¿ÄÄÄËËËÒÒÒÚÚÚáááèèèíííñññôôô÷÷÷ùùùúúúûûûûûûüüüüüüýýýýýýýýýýýýýýýüüüüüüûûûûûûúúúùùù÷÷÷õõõñññîîîéééâââÆÆÆåååüüüüüüÓÓÓ]]]ËËËÉÉÉÅÅÅÂÂÂÃÃÃÆÆÆËËËÒÒÒÙÙÙàààçççíííñññõõõ÷÷÷ùùùúúúûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüûûûúúúùùù÷÷÷õõõòòòîîîéééßßßÃÃÃ]]]ÒÒÒûûû÷÷÷ÂÂÂKKK³³³ÒÒÒÌÌÌÉÉÉÇÇÇÈÈÈÌÌÌÒÒÒØØØßßßæææìììñññôôô÷÷÷ùùùûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüûûûùùùøøøõõõòòòïïïééé¿¿¿___ÂÂÂ÷÷÷ïïïªªª^^^½½½ÕÕÕÏÏÏÍÍÍÌÌÌÎÎÎÒÒÒ×××ÞÞÞäääëëëðððôôô÷÷÷ùùùûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüûûûúúúøøøöööóóóïïïÍÍÍvvvªªªïïïæææzzzÈÈÈ×××ÓÓÓÑÑÑÐÐÐÓÓÓ×××ÝÝÝãããéééîîîóóóöööùùùúúúûûûýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüûûûúúúøøøöööôôôÜÜÜæææÞÞÞtttÓÓÓÙÙÙÖÖÖÔÔÔÕÕÕ×××ÜÜÜáááçççìììñññõõõøøøúúúûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüûûûúúúùùù÷÷÷èèè­­­tttÞÞÞ×××aaa«««ÚÚÚÜÜÜÙÙÙØØØØØØÛÛÛßßßåååêêêïïïóóó÷÷÷ùùùûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüûûûúúúùùùòòòÁÁÁaaa×××ÔÔÔWWW¸¸¸àààÞÞÞÜÜÜÚÚÚÜÜÜÞÞÞãããèèèíííñññõõõøøøúúúûûûýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüûûûûûûøøøÍÍÍWWWÔÔÔÔÔÔWWW¹¹¹áááßßßÞÞÞÝÝÝÞÞÞáááåååêêêïïïóóóöööùùùûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüùùùÍÍÍWWWÔÔÔ×××aaa¯¯¯ßßßáááßßßßßßàààãããçççìììðððôôô÷÷÷ùùùûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýý÷÷÷ÂÂÂaaa×××ÞÞÞtttÙÙÙáááààààààáááäääèèèíííñññõõõøøøúúúûûûýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýððð­­­tttÞÞÞæææÐÐÐâââááááááâââåååéééíííòòòõõõøøøúúúûûûýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýèèèæææïïï©©©eeeÇÇÇâââááááááãããæææéééîîîòòòõõõøøøúúúûûûýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýßßßvvv©©©ïïï÷÷÷ÁÁÁ___¿¿¿âââàààáááâââåååéééíííòòòõõõøøøúúúûûûýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüÖÖÖ___ÁÁÁöööüüüÒÒÒ]]]­­­ÜÜÜßßßàààáááäääèèèíííñññõõõøøøúúúûûûýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýøøøÄÄÄ]]]ÒÒÒûûûüüüåååtttËËËÞÞÞßßßàààãããçççìììðððôôô÷÷÷ùùùûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýæææåååüüüüüüôôô¹¹¹eee²²²ÚÚÚÜÜÜÞÞÞáááåååêêêïïïóóóöööùùùûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýúúúÐÐÐeee¹¹¹óóóüüüýýýûûûÙÙÙooo~~~ËËËÙÙÙÜÜÜÞÞÞãããèèèíííñññõõõøøøúúúûûûýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüêêêoooÙÙÙûûûüüüýýýüüüððð«««jjjªªªÔÔÔ×××ÛÛÛßßßåååêêêïïïóóó÷÷÷ùùùûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüü÷÷÷ÎÎÎjjj«««ïïïüüüüüüýýýýýýûûûÚÚÚwwwfff¾¾¾ÔÔÔÖÖÖÜÜÜáááçççìììñññõõõøøøúúúûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüúúúäääwwwÚÚÚúúúüüüýýýýýýýýýüüüôôôºººgggÈÈÈÒÒÒ×××ÝÝÝãããéééîîîóóóöööùùùúúúûûûýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüûûûóóóÀÀÀgggºººóóóüüüüüüýýýýýýýýýýýýüüüèèèuuuÈÈÈÑÑÑ×××ÞÞÞäääëëëðððôôô÷÷÷ùùùûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüûûûôôôÌÌÌuuuçççûûûüüüýýýýýýýýýýýýýýýüüüùùùÛÛÛ
-
-
-{{{ÆÆÆÑÑÑØØØßßßæææìììñññõõõ÷÷÷ùùùûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüûûûõõõÐÐÐ{{{
-
-
-ÛÛÛùùùüüüüüüýýýýýýýýýýýýýýýýýýüüü÷÷÷ÏÏÏxxx}}}ÅÅÅÑÑÑÙÙÙáááçççíííñññõõõøøøúúúûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüûûûôôôÐÐÐ}}}xxxÏÏÏ÷÷÷üüüüüüýýýýýýýýýýýýýýýýýýýýýýýýüüüõõõËËËxxx{{{ÄÄÄÑÑÑÙÙÙâââèèèîîîòòòõõõøøøúúúûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüúúúóóóÌÌÌ{{{xxxËËËõõõüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüüüüõõõÐÐÐ
-
-
-uuuµµµÏÏÏÚÚÚâââéééîîîòòòöööøøøúúúûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýüüü÷÷÷äääÁÁÁuuu
-
-
-ÏÏÏõõõûûûüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüüüü÷÷÷ÛÛÛgggÂÂÂÙÙÙâââéééïïïóóóöööøøøúúúûûûýýýýýýýýýýýýýýýýýýýýýýýýúúúêêêÎÎÎgggÚÚÚöööûûûüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüüüüùùùèèèºººxxxkkk¥¥¥ÅÅÅßßßéééïïïôôô÷÷÷ùùùûûûüüüýýýýýýýýýýýýüüüøøøæææÏÏÏkkkwww¹¹¹çççùùùüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüûûûóóóÚÚÚ¬¬¬ooodddÄÄÄ½½½ÍÍÍÛÛÛèèèòòòøøøùùù÷÷÷ðððçççÞÞÞÖÖÖÄÄÄdddnnn«««ÙÙÙóóóûûûüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüüüüúúúðððÙÙÙººº]]]```vvv­­­ÂÂÂÍÍÍÍÍÍÂÂÂ­­­vvv```]]]ºººÙÙÙðððúúúüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüüüüûûûôôôåååÓÓÓÂÂÂ©©©tttaaaVVVVVVaaattt©©©ÁÁÁÒÒÒåååôôôúúúüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüüüüüüüûûûöööîîîæææÝÝÝ×××ÓÓÓÓÓÓ×××ÝÝÝåååîîîöööûûûûûûüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýý
Index: uspace/srv/console/gfx/helenos.ppm
===================================================================
--- uspace/srv/console/gfx/helenos.ppm	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,13 +1,0 @@
-P6
-# CREATOR: The GIMP's PNM Filter Version 1.0
-64 60
-255
-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýøùùñóõîñóïòóö÷÷ûûûþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýþþøùùíñóäêîßèìÞæëÝåêÝåêÞåêäèêðññûûûþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýþþøùùïòôåëïåìðäêîÛàãØÜßÛàâæëîåëîÝåêÛäèÛáåèééúúúþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýþþùùúïóôæìïåìðåëî×Üß½ÄÆµ¼¾ÈÍÏÍÒÓÊÏÑ·¾ÀÃÊÌãçêÝåéÚãçØÛÞçèèûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúðôõèîñäìðçíðÙÞáÁÇÉ´¼¾ÊÏÑèëì÷ùù÷ùúôöøòõ÷ñóôÖÚÜ¹ÀÂÞäæÜâåØÝâÔÕ×ñòòþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþûûûòõöéîñåíñæíñÛáäÄËÎµ¼¾ÈÍÏäæçöøøøúúõ÷ùòõ÷ðóõðóõðóõïòôïòôÒ×Ù¿ÅÈàåéØßäÎÒÕáááûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþûûûóö÷êïòæíñçîñÞãåÇÎÐµ½¿ÅËÍàãäö÷÷ùúûöøùóöøòõ÷ñôöðóõðóõïòôïòôïòôîñóëïñ»ÂÅÛßâÚàåÓÙÞÑÒÓôôôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþûüüôöøëðóçîñèïòßåèËÑÓ¶¾ÀÃÉËÜàáóôõøúû÷ùúô÷øóöøòõ÷òõ÷ñôöðóõðóõïòôïòôîñóîñóìðòìïòÔÙÛÄËÍÞäè×ÞãËÎÐæççüýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþûüüô÷øíñôèîòéïóáçêÍÔÖ¹ÁÃÂÈÊØÜÝñòóøúú÷úûõ÷ùôöøóöøòõ÷òõ÷ñôöñôöðóõðóõïòôîñóîñóíñóìðòëïñëîñåéìºÁÃÞãå×ÞãÐÕÙÕÕÖ÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüõøùîòõèïóéðôãéìÑ×Ù»ÂÄÀÆÈÔØÙïðñøùúøúûõøúô÷ùôöøóöøóöøòõ÷òõ÷ñôöðóõðóõïòôïòôîñóîñóìðòìïòëîñëîñêíðéíðÉÏÒÌÒÓÛàäÓÙÞÊÌÏìííþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýý÷ùùðóõèïóéðôåêîÔÚÝ½ÄÇ¿ÆÇÑÖ×ëíîøùùúûüöùúô÷ùô÷ùô÷ùôöøóöøòõ÷òõ÷òõ÷ñôöðóõðóõïòôîñóîñóíñóìðòëïñëîñêîñéíðèìïèìïÝâä»ÂÄÞâåÓÚßËÐÓÛÛÛúúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýý÷ùúðôöéðóêðôæìï×ÝßÁÈË¾ÅÇÎÓÔèëëöøøúüü÷úûöùúõ÷ùô÷ùô÷ùô÷ùôöøòõ÷òõ÷òõ÷òõ÷ñôöðóõïòôïòôîñóíñóìðòìïòëîñëîñêíðéíðèìïèìïçëîæêí¿ÆÈÕÚÜÖÜáÐ×ÛÍÏÐððñþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþùúúñõ÷êñôêñõçíñÚàâÃÊÌ¾ÅÆÊÏÑæèéö÷øûüüøúûöùúöùúõøùô÷ùô÷ùô÷ùôöøóöøòõ÷òõ÷òõ÷ñôöðóõïòôïòôîñóîñóíðòìðòìïòëîñëîñêíðéíðèìïçëîçëîæêíåêíÕÛÞ¿ÆÇÝâåÓÙÞÉÍÏâââûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþùûûíóöéñôëñôßäçÆÍÏ¾ÅÇÇÌÎâåæõö÷ûüýùûü÷ùúöùúöùúöùúõøùô÷ùô÷ùô÷ùôöøóöøòõ÷òõ÷òõ÷ñôöðóõïòôïòôîñóÛÞà±²´´µ¶ÛÝàëîñêîñéíðèìïèìïçëîçëîæêíåéìäéìáæèºÁÃÙÝßÓÙÝÍÓÖÑÒÓôõõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùúúèðôêñõíñóÃÉËÂÈÊßâãóôõûüýúûýøúü÷ùûöùúöùúöùúõøùô÷ùô÷ùô÷ùôöøôöøòõ÷òõ÷òõ÷òõ÷ñôöïòôïòôîñóîñóÜÞá~~ooptsuÛÞáéíðèìïèìïçëîæêíåêíäéìäéëãèêãèêËÒÔÅËÍØÞáÏÖÚÈËÍèèèýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüëðôçðôóöø½ÄÆ×ÚÜúûûûüýøúüøúü÷úûöùúöùúöùúöùúõ÷ùô÷ùô÷ùôöøôöøóöøòõ÷òõ÷òõ÷ñôöðóõïòôïòôîñóîñóíñó¯±³poq{{|º»½çëîçëîçëîæêíåéìäéìãèëãèêâçéáæèÛàâ¸¿ÁÛßâÐ×ÚËÐÒ×××÷øøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïððäíñðöøÔÙÛÍÒÓûüýùûüøúüøúü÷úûöùúöùúöùúõøùõ÷ùô÷ùô÷ùôöøôöøóöøòõ÷òõ÷ñôöðóõïòôïòôïòôîñóîñóíðòìðò«¬®yyz¢¢£«ª«­®¯áåèçëîæêíäéìäèëãèêâçéâçéáæèàåçßäçÁÈÊÌÒÔÓÙÜÎÓÖÊÌÍíîîþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýþþÝàáâëð÷úûºÁÃðòóùûüøúüøúü÷ùûöùúöùúöùúõøùô÷ùô÷ùôöøôöøôöøòõ÷òõ÷òõ÷ñôöðóõïòôïòôîñóîñóîñóìðòìðòëîñÑÓÕ³³´½¼½µµ¶ÑÔ×æêíåéìãèêãèêâçéâçéàåçßäçÞãæÝâåÓØÛºÀÃÙÞáÎÔØÆÊÍÝÝÞúúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüÍÑÒáêïøúüºÁÃ÷øùøúüøúü÷ùûöùúöùúöùúõ÷ùô÷ùô÷ùôöøôöøóöøòõ÷òõ÷ëîðæéëîñóïòôïòôîñóîñóíñóìðòìïòëîñêîñéìï  ¡¸·¹ÁÀÂ¾½¿ÀÁÂâæéãèêâçéâçéáæèàåçßäçÞãæÝâåÜáäÚßãºÁÄÔÙÛÎÕØËÐÔÍÎÏòòòþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûû¶¸¹Ýåêóöù»ÂÄðòò÷úûöùúöùúöùúõøùõ÷ùô÷ùôöøôöøôöøóöøòõ÷ñôöÎÐÒ°±³èëíîñóîñóíñóìðòìïòëîñêíðéíðèìïÂÄÆ³³´À¿ÁÀÀÁ¹¹ºÙÝÞâçéâçéàåçßäçßäçÝâåÜáäÛàäÛàäÚßãËÑÔ½ÄÆ×ÜßÌÓ×ÆÉËäääüüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûº»»½ÄÈëñôÏÔÖÕÙÛöùúöùúöùúõøùô÷ùô÷ùôöøôöøôöøóõ÷òõ÷ñôößâä~~qpqxxz¹º»îñóìðòìðòëîñëîñêíðéíðèìïèìïàäç««¬½¼¾ÂÁÃ½¼¾ÇÈÉàåçàåçßäçÞãæÝâåÜáäÛàäÚßãÚßãÙÞâÕÚÞ¶¾ÀÕÚÞËÒÖÈÎÑÒÒÒöööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüýýÙÙÙàéíèíï»ÁÃóö÷öùúõøùô÷ùôöøôöøôöøóöøòõ÷òõ÷ñôöðóõÇÉÊqpq~~~£¤¥æêëìïòëîñêíðéíðèìïèìïçëîçëîæêí±³µ¡¡¢··¸ÁÀÂÀ¿Áºº¼ÚßáßäçÞãæÜáåÛàäÛàäÚßãÚÞâØÝáØÝáÖÛàÁÈËÇÌÎÑ×ÚÊÐÔÇÉËéêêýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþéééÌÔØíóõ¿ÆÈâæèõ÷ùô÷ùôöøôöøôöøóõ÷òõ÷ñôöñôöðóõïòôÔÖØ|}}¦¥¦³²³°°±ÒÕ×ëîñêíðéíðèìïèìïçëîæêíæêíåéìÍÐÓ°¯±¿¾ÀÂÁÃ»º»ÌÐÒÝâåÜáäÛàäÚßãÚßãÙÞâØÝá×ÜàÖÛàÕÚßÏÕÙ¶½¿ØÜÞÊÐÔÆÊÌØØÙùùùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôõõº»¼¢§ª¶¼¾¡¡¤¥ðòôôöøôöøóöøòõ÷òõ÷ñôöñôöðóõïòôïòôèëí²±³¿¾À½¼¾ÀÀÂéìïèìïèìïçëîçëîæêíæêíÞáäÂÅÇ¨¨©»»½ÂÁÃ¾¾À¾¿ÁÙÞáÛàäÚßãÚÞâÙÝáØÝáÖÛàÖÛàÕÚÞÕÚÝÓØÜ»ÁÄÎÓÕÌÒÖÉÎÒÉÊËïïïþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüàààehi444444ÇÇÈôöøóõ÷òõ÷ñôöñôöñôöðóõïòôïòôîñóíñóÁÂÄ²±³À¿ÁÁÀÂ»º¼ÜßáçëîçëîæêíäèëØÛÞ¬®°onowxy¦¦§º¹ºÂÁÃÁÀÂ¸¸¹ÐÔ×ÚßãÚÞâØÝá×ÜàÖÛàÕÚßÕÚÞÔÙÝÓØÛÒ×ÚÊÏÒ·¾ÀÖÚÝÊÐÔÅÈËßßßûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþïïïªª¬|??@222||}ðòôòõ÷ñôöñôöðóõðóõïòôîñóîñóíðòìðòàâå««¬½¼¾ÁÁÂ¼¼½ÈÊÌæêíâåèÉËÍuuvppqvvw}~~®®¯¼¼½ÂÁÃÂÁÃ½½¾ÂÄÆÙÝá×ÜáÖÛàÖÛàÕÚßÔÙÝÔÙÝÓØÛÒ×ÚÑÖÙÏÕØ¶½ÀÔÙÛÊÐÔÈÍÑÌÍÎóóóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùùùÐÐÐ
-XYY333AAAÜßàñôöñôöðóõðóõïòôîñóíñóìðòìïòëîñêíð´µ·¡¡¢¸¸¹ÁÀÂÀÀÁº¹»ÅÈÊsstrrsyyz¥¥¦±°±º¹»À¿ÁÃÂÄÃÂÄÀ¿Á¹¹»ÒÖÚÖÛàÖÛßÕÚÞÔÙÝÓØÜÒ×ÚÒ×ÚÑÖÙÐÖÙÐÖÙÃÉÌ¾ÄÆÓØÛÊÐÔÅÈÊæææüýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýééérvx999222 ¡¢ñôöðóõïòôîñóîñóíðòìðòìïñëîñêíðéíðÓÖØ°°±¾¾¿ÁÀÂ»º»¨¨©
-
- ªª«³²´º¹»ÂÁÃÊÌÎÂÁÃÂÁÃÂÁÃÂÁÃ»»¼ÆÈËÕÚßÔÙÝÔÙÝÓØÛÒ×ÚÒ×ÚÐÖÙÐÖÙÏÕØÏÕØËÑÕ³»½ÖÙÜÊÐÔÇÍÐÓÓÓ÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôôô»¼½JJK222]]]çéëïòôîñóíðòìðòìïñëîñêîðêíðéíðèìïãæé¥¦§¦¦§»º¼ÂÁÃ¿¾Àµ´¶§§¨  ¢¥¥¥®®¯¶¶¸¼¼½ÆÇÉÒÕ×ÚÞâÚßãÃÄÆ¼»½À¿ÁÂÁÃ¿¾À¼¼¾Ò×ÚÔÙÜÓØÛÒ×ÚÑ×ÚÐÖÙÐÖÙÏÕØÏÔØÍÓ×ÍÓ×ºÂÄÈÎÐÍÓ×ÉÏÓÆÈÉìììýþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûüüàààfij555444ÆÆÇîñóíðòìðòìïñëîñêíðêíðéìïèìïçëîçëîÄÇÈ´´µÀ¿ÁÂÁÃ¾½¿¹¸º·¶¸º¹ºÀÀÁÌÎÐØÜßÛàäÚßãÚßãÚÞâÉÌÏ®®¯¹¸ºÀÀÁÁÀÂ¹¹ºÉÍÏÒ×ÚÒ×ÚÑÖÙÐÖÙÐÖÙÏÕØÏÔØÍÓ×ÍÓ×ÌÒÖÈÎÒ³»½×ÛÞÊÐÔÅÉËÚÛÛúúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþïïï©«¬|AAB222{||ìïðìðòìîñëîñêíðêíðèìïèìïçëîæêíæêíÜàâ««¬½¼¾ÂÁÃÂÁÃÂÁÃÆÇÉÓÖØÜàãÝâåÛàäÚßãÚÞâÚÞâØÝáÔØÜ¡¡£¬¬­¼¼½ÁÀÂ½¼¾¾¿ÁÑÖÙÐÖÙÐÖÙÏÕØÏÕØÎÔØÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕµ½ÀÐÔÖËÐÔÉÏÒÉÊËðññþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷øøÍÍÎY[\333CCCÙÛÜëîñêîðêíðéìïèìïçëîçëîæêíåéìåéìãèê²´µ  ¡·¶·ÁÁÂÃÂÄÅÄÆÛßâÝâåÜáäÚßãÚßãÚÞâÙÝá×ÜàÖÛàÖÛà°²´ ·¶·ÁÀÂÀÀÁ¹¹»ÌÑÓÐÖÙÏÕØÏÔØÎÓ×ÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕËÑÕÃÊÍ·¾ÀÕÚÝÊÐÔÄÇÉáááüüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýççèsxy:::222 ¡¢ìïòêíðéìïèìïçëîçëîæêíåéìåéìäèëâçéÑÕÖ¯¯°¾¾¿ÃÂÄÂÁÃÐÓÖÛàäÚßãÚÞâÚÞâØÝá×ÜàÖÛàÖÛßÔÙÝÇËÎ®­®¾½¾ÂÁÃ»»¼ÃÇÉÏÕØÏÔØÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕËÑÕËÑÕÊÐÔÉÏÓ³º½ÔØÛÊÐÔÈÎÑÍÎÎôôõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóôô¹ººLMN222^^^ãåçèìïèìïçëîæêíæêíåéìäèëãèêâçéâçéÞãä¥§¨¥¥¦º¹»ÂÁÃÂÁÃÁÁÄÙÞáÚÞâÙÝáØÝáÖÛàÖÛàÕÚÞÔÙÝÓØÛÒ×Ú¢£¤¤¤¥¹¹ºÁÀÂ¿¾ÀÆÈËÎÔØÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕËÑÕÊÐÔÊÐÔÊÐÔÊÐÔ¾ÅÇÀÆÉÐÕÙÊÐÔÅÈÉçèèýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûÝÝÝhjl666666ÃÄÅèìïçëîæêíåéìåéìäèëãçêâçéáæèáæèàåçÂÅÇ³³´À¿ÁÂÁÃ¼»½ÎÒÕÙÝá×ÜàÖÛàÕÚßÕÚÞÓØÜÓØÛÒ×ÚÒ×ÚÀÃÆ²±²À¿ÁÃÃÅÌÐÔÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕËÑÕÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÇÎÑ±¸»ÖÚÝÊÐÔÆËÏÔÔÔøøøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþîîï§¨ª{BBC222|}}éìîæêíåéìäèëãèêâçéâçéáæèàåèßäçÞãæÖÚÝªª«¼¼½ÂÁÃ¾½¿ÀÁÃ×ÜàÖÛàÕÚÞÔÙÝÓØÛÓØÛÒ×ÚÒ×ÚÑÖÙÐÕØÃÈÊ¼¾ÀÅÇÉÌÐÔÍÓ×ÌÒÖÌÒÖËÑÕËÑÕËÑÕÊÐÔÊÐÔÈÏÒ¸¾Á¾ÄÇËÑÕÊÐÔ¹ÀÃÌÑÓÌÒÖÊÏÓÆÇÈíîîþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷øøËËË[]^344EEEÖØÙåéìäèëâçéâçéáæèáæèàåçßäæÝâåÝâåÛàä³µ·  ¶¶·ÁÀÂÀÀÁ¸¸ºÑÕÙÕÚÞÔÙÜÓØÛÓØÛÒ×ÚÒ×ÚÐÖÙÐÖÙÏÕØÏÕØÎÔ×ÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕËÑÕÊÐÔÊÐÔÊÐÔÊÐÔ£ª¬{ÐÔ×ÊÐÔÄÊÎºÁÃÚÞáÊÐÔÄÈÊÜÜÜúúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýçççswy;;;222 ¡¢æêíâçéáæèáæèàåèßäçÞãæÝâåÜáäÛàäÚßãÍÐÓ®®¯¾¾¿ÂÁÃ»»¼ÄÆÉÓØÜÓØÛÒ×ÚÒ×ÚÑ×ÚÐÖÙÐÖÙÏÕØÏÔØÎÓ×ÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕËÑÕÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔ®³µ¤«­ÊÐÒâäæÊÐÔÇÍÑ¹ÀÂäæéÊÐÔÉÏÒÉÉÊóóóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóôô¸¹¹MNO222___áãåáæèáæèàåçßäçÞãæÝâåÜáäÛàäÚßãÚÞâ×ÚÞ¥¦¨¤¤¥º¹»ÁÀÂ¿¾À¾¿ÁÓØÛÒ×ÚÒ×ÚÑÖÙÐÖÙÏÕØÏÕØÏÔØÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕËÑÕËÑÕÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÌÒÖàãåèëìÑÖÚÊÐÔÂÈË¿ÅÇæèêÊÐÔÉÏÓ¼¾¿êêêÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúûûÛÛÛhlm666666½¾¿âçéàåçßäæÝâåÜáäÜáäÚßãÚÞâÙÝáÙÝá×Üà¿ÂÅ³²³À¿ÁÂÁÃÆÈÊÒ×ÚÒ×ÚÑÖÙÐÖÙÏÕØÏÕØÎÔ×ÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕËÑÕËÑÕÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔËÐÔËÑÕÊÐÔÉÏÓ³»½ÙÝÞÜàãÊÐÔÉÏÓ³´µäääÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþîîî§¨©{DEE222wxxäèêÞãæÝâåÜáäÛàäÚßãÚÞâÙÝáØÜáÖÛàÕÚßÒ×Û±³µ¬«­¼¼½ÆÆÈÐÔ×Ò×ÚÐÖÙÐÖÙÏÕØÏÔØÎÔ×ÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕËÑÕÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÈÎÒ¶¾Á½ÄÅñóôÍÓ×ÊÐÔÃÉÌ¬¬­äääÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ÊÊÊ\^_444EEEÒÔÕÝâåÜáäÛàãÚßãÙÝáÙÝá×ÜàÖÛàÕÚßÔÙÝÔÙÝÒ×ÚÌÐÒÎÒÔÑÖØÑÖÙÐÖÙÏÕØÏÕØÏÔØÍÓ×ÍÓ×ÌÒÖÌÒÖÌÒÖËÑÕËÑÕÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÉÏÓÃÊÎ¸ÀÃ±¹»ÇÍÏïñòØÜßÊÐÔÉÏÓ³³´éêêÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýææçsxy<<<222áåèÚßãÚÞâÙÝáØÝá×ÜàÖÛßÕÚÞÔÙÝÓØÜÓØÛÓØÛÒ×ÚÒ×ÚÑÖÙÐÖÙÏÕØÏÕØÎÔ×ÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕËÑÕËÑÕÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÅËÎ»ÃÅ²º½ºÀÂÑÖ×éëìêíîÔÙÜÊÐÔÉÏÓnooÂÂÃñòòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóóô¸¸¹
-OQQ222\\\ÝàâÚÞâÙÝá×ÜáÖÛàÕÚßÔÙÞÔÙÝÓØÜÓØÛÒ×ÚÒ×ÚÒ×ÚÐÖÙÐÖÙÏÕØÏÔØÎÔ×ÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕËÑÕÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÆÌÐ¾ÄÇ²º¼¸¿ÀËÐÑæèéëíîáåçÓØÛËÑÕÇÍÑ®²µxyzKKKÖÖÖøøøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúúÚÚÚiln667777¼½¾Ûàä×ÜàÖÛßÕÚÞÔÙÝÔÙÜÓØÛÓØÛÒ×ÚÒ×ÚÑÖÙÐÖÙÏÕØÏÕØÏÔØÍÓ×ÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕËÑÕÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÇÍÑÀÆÊµ¼¿µ¼¾ÇÌÎáäåìîïäèêÕÚÝÌÒÖÈÎÒ´º½`abAABCCD¼»¼êêêýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþîîî¥§¨zDEF333¥¥¦àãæÖÛßÔÙÞÔÙÝÓØÜÓØÛÓØÛÒ×ÚÒ×ÚÑÖÙÐÖÙÏÕØÏÕØÎÔ×ÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕËÑÕËÑÕÊÐÔÊÐÔÊÐÔÊÐÔÈÎÒÁÈËµ½Àµ¼¾ÁÇÉÞáâëíîèêìØÜßÍÓ×ÉÏÓ¹¾ÂgjkHIJ;;;FGGaab¶¶·ßààøøøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ÈÈÉ]__\\]ÐÒÓÛßâÔÙÝÔÙÝÓØÜÓØÛÈÍÐÀÄÇÍÒÔÐÖÙÐÖÙÏÕØÏÔØÎÔ×ÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕËÑÕÊÐÔÊÐÔÊÐÔÉÏÓÃÉÍ¸¿Â³»½½ÃÅØÜÝêìíëíîÚÞáÏÔØÊÐÓ½ÂÆ¡¥¨qstOOO===DDDZ[[www«««ÇÇÈäää÷÷÷þþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýæææ}ÂÃÄÂÉËÎÓÕÖÛßÓØÛÓØÛÍÒÕ~
-¤¨ªÚÞáÏÕØÏÔØÎÓ×ÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕËÑÕÊÐÔÉÏÓÅËÏºÂÅ³»¾¹ÀÂÓ×ØèêëìîïÝáäÐÖÙÊÐÔÀÆÊ¨¬¯|UVV>>>CCDTTUppq¥¥¦»»¼ÐÐÐâââñññúúúþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóóô·¸¸ÑÕØÊÐÓºÀÂÚÞáÓØÛÒ×ÚÎÓÕ¢¥§¹ÀÂÕ×ØÝáãÏÔØÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕËÑÕÊÐÔÅÌÏ¾ÄÇ³»½·¾ÀÍÒÓåèèïðñàäæÓØÛËÑÔÃÈÌ°µ¸
-\^_CCDCDDQQQjkk
- µµ¶ËËÌÞÞÞìììöööüüüþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúúÙÙÙ·¼¿ÎÔØ·¾ÀÔÙÜÓØÛÒ×ÚÐÖÙÙÝàçêëæéêÐÕÙÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕÈÎÒÀÇÉ´»¾´»½ÇÌÎâåæîðñäçéÔÙÜËÑÕÆÌÐ´º½cdeGGGCDDNOOddd~°°±ÆÆÇÚÚÚéééôôôûûûþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþíîîÌÒÕÆÌÎ»ÂÄÔÙÜÐÖÙÐÖÙÏÕØÏÔØÎÓ×ÍÓ×ÍÓ×ÌÒÖÉÏÓÃÉÍ¶¾À³»½ÁÈÉÞáâïññæéë×ÜßËÑÕÇÍÑº¿ÂknoKLMDEFKLL_``yzz«««ÁÁÁÕÕÖæççòòóùúúýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ÆÇÇuwx¾ÄÈÏÔ×¹ÁÃºÂÄËÑÔÏÕØÏÔØÍÓ×ÍÓ×ËÑÕÅËÏ¸ÀÃ´»½»ÁÃÛÞßíîïëíïÚÞàÍÓ×ÈÎÒ½ÃÇ£¦qsuPQRDEEIJKZ[\uuv¦¦§½½½ÑÑÑáââïïðøøøýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüýýåææ£¥ÌÒÖÎÔ×¾ÅÈ²º¼ºÁÄÁÈËÂÉÌºÁÄ³»½¸¿ÁÓ×ØëííîðñÝáãÏÔØÊÏÓÁÆÊ§¬¯x{}RTUCDEGHIUUWoop¡¡¢¸·¸ÍÍÎßààíîî÷÷÷üüüþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóóô²²²uxyÃÉÍÍÓÖÐÖÙÕÙÜÒ×ØÇÍÏÉÎÐ×ÚÜæéêñòóàãæÐÖÚÊÐÔÃÉÍ­²µ
-Z\]DEFEFGPPQhii²²³ÈÈÈÜÜÜëëëõööûûûþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúúØØØopqÈÎÑÌÒÖÍÓ×ÎÔØÖÛßÛßâÚÞáÒ×ÛÊÐÔÅËÏ¶¼¿`bdGHIGHINOPbcd}}~¬¬­ÃÃÄ××ØèèèóóóúúúþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþíîîXYZ½ÂÆÉÏÓËÑÕËÑÕÊÐÔÇÍÑ»ÀÄhklKLMGHIKLM]^_vww§§¨¾½¾ÒÓÔåååñññùùùýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷øøÔÔÕ{||RTU\^_|qstQRRHIJLMNYZZqqq¢¢£¹¹¹ÏÏÐáááîîî÷÷÷üüüþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýïïïÅÅÅ~UWXPQROPQNOOMNNNOOWXYklm´³´ÊÊÊÝÝÝìííö÷÷üüüþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûüüêëëÊÊÊ z{{jkkhhhnoo®®¯ÅÅÅÙÚÚéééóôôûûûþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûüüðððÛÜÜÇÇÇ··¸²²²¶¶¶ÃÃÄÕÕÕæææòóóúúúýþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
Index: uspace/srv/console/gfx/nameic.ppm
===================================================================
--- uspace/srv/console/gfx/nameic.ppm	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,14 +1,0 @@
-P6
-# CREATOR: The GIMP's PNM Filter Version 1.0
-100 26
-255
-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿããã»»»¤¤¤¿¿¿êêêÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñññÄÄÄ¦¦¦¢¢¢ÅÅÅððñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿËËË___444222222222222222666rrsÞÞÞÿÿÿÿÿÿÿÿÿññò;;;222222222222222999òòòÿÿÿÿÿÿ~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿVVV222IIIòòòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯¯°888222222222222222222222222222AAAÈÈÈÿÿÿïïïbbb222222222222222222222222222VVWïïïÿÿÿ~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿVVV222IIIòòòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÖÖÖ;;;222222222222222222222222222222222UUUììì222222222222222222222222222222222~~~ÿÿÿ~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿVVV222IIIòòòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿzzz222222222222222IIIeef???222222222222222NNN222222222222???hhhLLL222222222222444ççè~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿVVV222IIIòòòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööBBB222222222222VVVëëëÿÿÿÔÔÔAAA222222222222AAA444222222222CCCàááÿÿÿñññWWW222222222333®®®~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿVVV222IIIòòòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÞÞÞ;;;222222222222ÿÿÿÿÿÿýýýaaa222222222222222222222222222\\\ÿÿÿÿÿÿþþþ222222222222
-
-
-~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýààà¿¿¿´´´ÀÀÀßßßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿVVV222IIIòòòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëëëÈÈÈ´´´ºººÔÔÕúúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñññÇÇÇ´´´¿¿¿ÝÝÝÿÿÿÿÿÿÿÿÿÿÿÿÕÕÕ999222222222222±±±ÿÿÿÿÿÿÿÿÿxxx222222222222222222222222222GGGëëëÿÿÿÿÿÿ£££222222222222ttt~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««ÿÿÿÿÿÿÿÿÿúúú°°±PPP222222222222333\\\ÑÑÑÿÿÿÿÿÿÿÿÿÿÿÿVVV222IIIòòòÿÿÿÿÿÿÿÿÿÏÏÏggg666222222222222GHH¬¬¬ûûûÿÿÿÿÿÿâââMMMNNN¤¤¤ùùú;;;222222222222WXXËËËÿÿÿÿÿÿÕÕÕ999222222222222±±±ÿÿÿÿÿÿÿÿÿxxx222222222222222222222222222222uuuôôôÿÿÿòòòãããããããããäääëëë~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««ÿÿÿÿÿÿôôôzz{222222222222222222222222777¼¼¼ÿÿÿÿÿÿÿÿÿVVV222IIIòòòÿÿÿÿÿÿ§§§999222222222222222222222444ùùùÿÿÿÞÞÞ222222222222222222222222222555ÄÄÄÿÿÿÕÕÕ999222222222222±±±ÿÿÿÿÿÿÿÿÿxxx222222222222BBBHHH222222222222222YYYÇÇÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««ÿÿÿúúú222222BBBÛÛÛãããÏÏÏ
-
-
-5552229::ãããÿÿÿÿÿÿVVV222IIIòòòÿÿÿ¶¶¶888222666ÏÏÏäääÙÙÙ  ¡EEE222555ªªªÿÿÿÞÞÞ222222CCD222KKK¨¨©ÞÞÞãããÂÃÃ]]]222222RRRúúúÕÕÕ999222222222222±±±ÿÿÿÿÿÿÿÿÿxxx222222222222OOOooo222222222222222222555wwwçççÿÿÿÿÿÿÿÿÿÿÿÿ~~~222222QQQhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhEEE222222«««ÿÿÿÆÆÆ666222NNNÝÝÝÿÿÿÿÿÿÿÿÿÿÿÿþþþ­¬­222222þþþÿÿÿVVV222IIIòòòïïïLLL222999µµµþþþÿÿÿÿÿÿÿÿÿÿÿÿÖÖÖFFF222RRRîîîÞÞÞ222222222WWWìììÿÿÿÿÿÿÿÿÿÿÿÿóóóFFF222222ÕÕÕÕÕÕ999222222222222±±±ÿÿÿÿÿÿÿÿÿxxx222222222222RRRÓÓÓKKK222222222222222222222===üüüÿÿÿÿÿÿ~~~222222222222222222222222222222222222222222222222222«««ûûûuuu222<<<ÆÆÆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûû__`222899óóóÿÿÿVVV222IIIòòò¬¬¬444222ýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ222555¸¸¸ÞÞÞ222222:::ÆÆÆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ222222²²²ÕÕÕ999222222222222±±±ÿÿÿÿÿÿÿÿÿxxx222222222222RRRïïïÔÔÔPPP222222222222222222222333nnnùùùÿÿÿ~~~222222222222222222222222222222222222222222222222222«««æææKKK222[[[úúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§¨¨222222¾¾¾ÿÿÿVVV222IIIòòòppp222999ÝÝÝÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚ>>>222ÞÞÞ222222SSSúúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°°°222222¬¬¬ÕÕÕ999222222222222±±±ÿÿÿÿÿÿÿÿÿxxx222222222222RRRïïïÿÿÿìììzzz222222222222222222222333ÿÿÿ~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««ËËË222222ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÊÊÊ222222ÿÿÿVVV222IIIêêêEEE222WWWðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿêêêQQQ222]]]ÞÞÞ222222wwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ´´´222222¬¬¬ÕÕÕ999222222222222±±±ÿÿÿÿÿÿÿÿÿxxx222222222222RRRïïïÿÿÿÿÿÿýýýÁÁÁRRR222222222222222222444ááá~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««³³³222222222222222222222222222222222222222222~~~þþþVVV222IIIÖÖÖ@@@222222222222222222222222222222222222222NNNÎÎÎ222222ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ´´´222222¬¬¬ÕÕÕ999222222222222±±±ÿÿÿÿÿÿÿÿÿxxx222222222222RRRïïïÿÿÿÿÿÿÿÿÿÿÿÿõõõ777222222222222222~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««¥¥¥222222222222222222222222222222222222222222zzzþþþVVV222IIIËËË===222222222222222222222222222222222222222MMMÌÌÌ222222ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ´´´222222¬¬¬ÕÕÕ999222222222222±±±ÿÿÿÿÿÿÿÿÿxxx222222222222BBB¤¤¤´´´´´´´´´ÚÚÚÿÿÿþþþÆÆÆ===222222222222{{{~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««¨¨¨222222tttÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏàààÿÿÿVVV222IIIÎÎÎ>>>222PPPÄÄÄÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÕÕÕÙÙÙ222222ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ´´´222222¬¬¬ÕÕÕ999222222222222±±±ÿÿÿÿÿÿÿÿÿxxx222222222222222222222222222ÿÿÿÿÿÿþþþ222222222222iii~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««ÁÁÁ222222|||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿVVV222IIIáááCCC222PPPíííÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÞÞÞ222222ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ´´´222222¬¬¬ÞÞÞ;;;222222222222£££ÿÿÿÿÿÿÿÿÿmmm222222222222222222222222222ÿÿÿÿÿÿÿÿÿ£££222222222222iii~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««ßßßAAA222SSSøøøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏÏÏ}}}}}}ÊÊÊÿÿÿVVV222IIIòòò___222555×××ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëëë}}}¢¢¢ÞÞÞ222222ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ´´´222222¬¬¬ööö>>>222222222222tttûûûÿÿÿîîïQQQ222222222222222222222222222pqqÿÿÿÿÿÿüüü222222222222~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««øøøjij222888¸¸¸ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüülll222222áááÿÿÿVVV222IIIòòò  ¡333222ûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§¨¨222222£££ÞÞÞ222222ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ´´´222222¬¬¬ÿÿÿiii222222222222777ÌÌÌ555222222222222\\\222222222222999ÎÎÎ¤¤¤;;;222222222333®®®~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««ÿÿÿÃÃÃ666222IIIÔÔÔÿÿÿÿÿÿÿÿÿÿÿÿøøø222222vvvþþþÿÿÿVVV222IIIòòòìììKKK222677¬¬¬ûûûÿÿÿÿÿÿÿÿÿýýýºººAAA222OOOçççÞÞÞ222222ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ´´´222222¬¬¬ÿÿÿ¬¬¬444222222222222222222222222222222222===£££:::222222222222222222222222222222222;;;îîï~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««ÿÿÿûûû222222777www©©©³³³TTT222222HHHçççÿÿÿÿÿÿVVV222IIIòòòÿÿÿ¿¿¿:::222222aaa´´´§§§kkl555222;;;¶¶¶ÿÿÿÞÞÞ222222ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ´´´222222¬¬¬ÿÿÿóóó\\\222222222222222222222222222222222
-úúú222222222222222222222222222222333 ÿÿÿ~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««ÿÿÿÿÿÿøøø777222222222222222222222TTTáááÿÿÿÿÿÿÿÿÿVVV222IIIòòòÿÿÿÿÿÿ»»¼DDD222222222222222222222BBBµµµÿÿÿÿÿÿÞÞÞ222222ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ´´´222222¬¬¬ÿÿÿÿÿÿæææbbb333222222222222222222222444~~ôôôÿÿÿ÷÷÷444222222222222222222222444ÿÿÿÿÿÿ¿¿¿ÔÔÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾¾¾ÕÕÕÿÿÿÿÿÿÿÿÿþþþ×ØØ
-
-SSS555333EEEeef­­­ùùùÿÿÿÿÿÿÿÿÿÿÿÿ«««¤¤¤ùùùÿÿÿÿÿÿÿÿÿëëë__`;;;222===YYZèèèÿÿÿÿÿÿÿÿÿîîîÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÙÙÙÕÕÕÿÿÿÿÿÿÿÿÿüüüÁÁÁzzzTUU666222:::XYYÐÐÐýýýÿÿÿÿÿÿÿÿÿþþþÕÕÕZZ[<<<222888[[[ÝÝÝÿÿÿÿÿÿÿÿÿ
Index: uspace/srv/console/keybuffer.c
===================================================================
--- uspace/srv/console/keybuffer.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,132 +1,0 @@
-/*
- * Copyright (c) 2006 Josef Cejka
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup kbdgen
- * @brief HelenOS generic uspace keyboard handler.
- * @ingroup kbd
- * @{
- */
-/** @file
- */
-
-#include <futex.h>
-#include "keybuffer.h"
-
-atomic_t keybuffer_futex = FUTEX_INITIALIZER;
-
-/** Clear key buffer.
- */
-void keybuffer_free(keybuffer_t *keybuffer)
-{
-	futex_down(&keybuffer_futex);
-	keybuffer->head = 0;
-	keybuffer->tail = 0;
-	keybuffer->items = 0;
-	futex_up(&keybuffer_futex);
-}
-
-/** Key buffer initialization.
- *
- */
-void keybuffer_init(keybuffer_t *keybuffer)
-{
-	keybuffer_free(keybuffer);
-}
-
-/** Get free space in buffer.
- *
- * This function is useful for processing some scancodes that are translated
- * to more than one character.
- *
- * @return empty buffer space
- *
- */
-size_t keybuffer_available(keybuffer_t *keybuffer)
-{
-	return KEYBUFFER_SIZE - keybuffer->items;
-}
-
-/**
- *
- * @return nonzero, if buffer is not empty.
- *
- */
-bool keybuffer_empty(keybuffer_t *keybuffer)
-{
-	return (keybuffer->items == 0);
-}
-
-/** Push key event to key buffer.
- *
- * If the buffer is full, the event is ignored.
- *
- * @param keybuffer The keybuffer.
- * @param ev        The event to push.
- *
- */
-void keybuffer_push(keybuffer_t *keybuffer, const console_event_t *ev)
-{
-	futex_down(&keybuffer_futex);
-	
-	if (keybuffer->items < KEYBUFFER_SIZE) {
-		keybuffer->fifo[keybuffer->tail] = *ev;
-		keybuffer->tail = (keybuffer->tail + 1) % KEYBUFFER_SIZE;
-		keybuffer->items++;
-	}
-	
-	futex_up(&keybuffer_futex);
-}
-
-/** Pop event from buffer.
- *
- * @param edst Pointer to where the event should be saved.
- *
- * @return True if an event was popped.
- *
- */
-bool keybuffer_pop(keybuffer_t *keybuffer, console_event_t *edst)
-{
-	futex_down(&keybuffer_futex);
-	
-	if (keybuffer->items > 0) {
-		keybuffer->items--;
-		*edst = (keybuffer->fifo[keybuffer->head]);
-		keybuffer->head = (keybuffer->head + 1) % KEYBUFFER_SIZE;
-		futex_up(&keybuffer_futex);
-		
-		return true;
-	}
-	
-	futex_up(&keybuffer_futex);
-	
-	return false;
-}
-
-/**
- * @}
- */
Index: uspace/srv/console/keybuffer.h
===================================================================
--- uspace/srv/console/keybuffer.h	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,65 +1,0 @@
-/*
- * Copyright (c) 2006 Josef Cejka
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup kbdgen
- * @brief HelenOS generic uspace keyboard handler.
- * @ingroup kbd
- * @{
- */
-/** @file
- */
-
-#ifndef __KEYBUFFER_H__
-#define __KEYBUFFER_H__
-
-#include <sys/types.h>
-#include <io/console.h>
-#include <bool.h>
-
-/** Size of buffer for pressed keys */
-#define KEYBUFFER_SIZE  128
-
-typedef struct {
-	console_event_t fifo[KEYBUFFER_SIZE];
-	unsigned long head;
-	unsigned long tail;
-	unsigned long items;
-} keybuffer_t;
-
-extern void keybuffer_free(keybuffer_t *);
-extern void keybuffer_init(keybuffer_t *);
-extern size_t keybuffer_available(keybuffer_t *);
-extern bool keybuffer_empty(keybuffer_t *);
-extern void keybuffer_push(keybuffer_t *, const console_event_t *);
-extern bool keybuffer_pop(keybuffer_t *, console_event_t *);
-
-#endif
-
-/**
- * @}
- */
Index: uspace/srv/console/screenbuffer.c
===================================================================
--- uspace/srv/console/screenbuffer.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,191 +1,0 @@
-/*
- * Copyright (c) 2006 Josef Cejka
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup console
- * @{
- */
-/** @file
- */
-
-#include <io/style.h>
-#include <malloc.h>
-#include <unistd.h>
-#include "screenbuffer.h"
-
-/** Store one character to screenbuffer.
- *
- * Its position is determined by scr->position_x
- * and scr->position_y.
- *
- * @param scr Screenbuffer
- * @param c   Stored character
- *
- */
-void screenbuffer_putchar(screenbuffer_t *scr, wchar_t ch)
-{
-	keyfield_t *field =
-	    get_field_at(scr, scr->position_x, scr->position_y);
-	
-	field->character = ch;
-	field->attrs = scr->attrs;
-}
-
-/** Initilize screenbuffer.
- *
- * Allocate space for screen content in accordance to given size.
- *
- * @param scr    Initialized screenbuffer
- * @param size_x Width in characters
- * @param size_y Height in characters
- *
- * @return Pointer to screenbuffer (same as scr parameter) or NULL
- *
- */
-screenbuffer_t *screenbuffer_init(screenbuffer_t *scr, size_t size_x, size_t size_y)
-{
-	scr->buffer = (keyfield_t *) malloc(sizeof(keyfield_t) * size_x * size_y);
-	if (!scr->buffer)
-		return NULL;
-	
-	scr->size_x = size_x;
-	scr->size_y = size_y;
-	scr->attrs.t = at_style;
-	scr->attrs.a.s.style = STYLE_NORMAL;
-	scr->is_cursor_visible = 1;
-	
-	screenbuffer_clear(scr);
-	
-	return scr;
-}
-
-/** Clear screenbuffer.
- *
- * @param scr Screenbuffer
- *
- */
-void screenbuffer_clear(screenbuffer_t *scr)
-{
-	size_t i;
-	
-	for (i = 0; i < (scr->size_x * scr->size_y); i++) {
-		scr->buffer[i].character = ' ';
-		scr->buffer[i].attrs = scr->attrs;
-	}
-	
-	scr->top_line = 0;
-	scr->position_x = 0;
-	scr->position_y = 0;
-}
-
-/** Clear one buffer line.
- *
- * @param scr
- * @param line One buffer line (not a screen line!)
- *
- */
-void screenbuffer_clear_line(screenbuffer_t *scr, size_t line)
-{
-	size_t x;
-	
-	for (x = 0; x < scr->size_x; x++) {
-		scr->buffer[x + line * scr->size_x].character = ' ';
-		scr->buffer[x + line * scr->size_x].attrs = scr->attrs;
-	}
-}
-
-/** Copy content buffer from screenbuffer to given memory.
- *
- * @param scr  Source screenbuffer
- * @param dest Destination
- *
- */
-void screenbuffer_copy_buffer(screenbuffer_t *scr, keyfield_t *dest)
-{
-	size_t i;
-	
-	for (i = 0; i < (scr->size_x * scr->size_y); i++)
-		dest[i] = scr->buffer[i];
-}
-
-/** Set new cursor position in screenbuffer.
- *
- * @param scr
- * @param x
- * @param y
- *
- */
-void screenbuffer_goto(screenbuffer_t *scr, size_t x, size_t y)
-{
-	scr->position_x = x % scr->size_x;
-	scr->position_y = y % scr->size_y;
-}
-
-/** Set new style.
- *
- * @param scr
- * @param fg_color
- * @param bg_color
- *
- */
-void screenbuffer_set_style(screenbuffer_t *scr, uint8_t style)
-{
-	scr->attrs.t = at_style;
-	scr->attrs.a.s.style = style;
-}
-
-/** Set new color.
- *
- * @param scr
- * @param fg_color
- * @param bg_color
- *
- */
-void screenbuffer_set_color(screenbuffer_t *scr, uint8_t fg_color, uint8_t bg_color, uint8_t flags)
-{
-	scr->attrs.t = at_idx;
-	scr->attrs.a.i.fg_color = fg_color;
-	scr->attrs.a.i.bg_color = bg_color;
-	scr->attrs.a.i.flags = flags;
-}
-
-/** Set new RGB color.
- *
- * @param scr
- * @param fg_color
- * @param bg_color
- *
- */
-void screenbuffer_set_rgb_color(screenbuffer_t *scr, uint32_t fg_color, uint32_t bg_color)
-{
-	scr->attrs.t = at_rgb;
-	scr->attrs.a.r.fg_color = fg_color;
-	scr->attrs.a.r.bg_color = bg_color;
-}
-
-/** @}
- */
Index: uspace/srv/console/screenbuffer.h
===================================================================
--- uspace/srv/console/screenbuffer.h	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,159 +1,0 @@
-/*
- * Copyright (c) 2006 Josef Cejka
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup console
- * @{
- */
-/** @file
- */
-
-#ifndef SCREENBUFFER_H__
-#define SCREENBUFFER_H__
-
-#include <stdint.h>
-#include <sys/types.h>
-#include <bool.h>
-
-#define DEFAULT_FOREGROUND  0x0       /**< default console foreground color */
-#define DEFAULT_BACKGROUND  0xf0f0f0  /**< default console background color */
-
-typedef struct {
-	uint8_t style;
-} attr_style_t;
-
-typedef struct {
-	uint8_t fg_color;
-	uint8_t bg_color;
-	uint8_t flags;
-} attr_idx_t;
-
-typedef struct {
-	uint32_t bg_color;  /**< background color */
-	uint32_t fg_color;  /**< foreground color */
-} attr_rgb_t;
-
-typedef struct {
-	enum {
-		at_style,
-		at_idx,
-		at_rgb
-	} t;
-	union {
-		attr_style_t s;
-		attr_idx_t i;
-		attr_rgb_t r;
-	} a;
-} attrs_t;
-
-/** One field on screen. It contain one character and its attributes. */
-typedef struct {
-	wchar_t character;  /**< Character itself */
-	attrs_t attrs;      /**< Character attributes */
-} keyfield_t;
-
-/** Structure for buffering state of one virtual console.
- */
-typedef struct {
-	keyfield_t *buffer;      /**< Screen content - characters and
-	                              their attributes (used as a circular buffer) */
-	size_t size_x;           /**< Number of columns  */
-	size_t size_y;           /**< Number of rows */
-	
-	/** Coordinates of last printed character for determining cursor position */
-	size_t position_x;
-	size_t position_y;
-	
-	attrs_t attrs;           /**< Current attributes. */
-	size_t top_line;         /**< Points to buffer[][] line that will
-	                              be printed at screen as the first line */
-	bool is_cursor_visible;  /**< Cursor state - default is visible */
-} screenbuffer_t;
-
-/** Returns keyfield for position on screen
- *
- * Screenbuffer->buffer is cyclic buffer so we
- * must couted in index of the topmost line.
- *
- * @param scr Screenbuffer
- * @param x   Position on screen
- * @param y   Position on screen
- *
- * @return Keyfield structure with character and its attributes on x, y
- *
- */
-static inline keyfield_t *get_field_at(screenbuffer_t *scr, size_t x, size_t y)
-{
-	return scr->buffer + x + ((y + scr->top_line) % scr->size_y) * scr->size_x;
-}
-
-/** Compares two sets of attributes.
- *
- * @param s1 First style
- * @param s2 Second style
- *
- * @return Nonzero on equality
- *
- */
-static inline int attrs_same(attrs_t a1, attrs_t a2)
-{
-	if (a1.t != a2.t)
-		return 0;
-	
-	switch (a1.t) {
-	case at_style:
-		return (a1.a.s.style == a2.a.s.style);
-	case at_idx:
-		return (a1.a.i.fg_color == a2.a.i.fg_color)
-		    && (a1.a.i.bg_color == a2.a.i.bg_color)
-		    && (a1.a.i.flags == a2.a.i.flags);
-	case at_rgb:
-		return (a1.a.r.fg_color == a2.a.r.fg_color)
-		    && (a1.a.r.bg_color == a2.a.r.bg_color);
-	}
-	
-	return 0;
-}
-
-
-void screenbuffer_putchar(screenbuffer_t *scr, wchar_t c);
-screenbuffer_t *screenbuffer_init(screenbuffer_t *scr, size_t size_x, size_t size_y);
-
-void screenbuffer_clear(screenbuffer_t *scr);
-void screenbuffer_clear_line(screenbuffer_t *scr, size_t line);
-void screenbuffer_copy_buffer(screenbuffer_t *scr, keyfield_t *dest);
-void screenbuffer_goto(screenbuffer_t *scr, size_t x, size_t y);
-void screenbuffer_set_style(screenbuffer_t *scr, uint8_t style);
-void screenbuffer_set_color(screenbuffer_t *scr, uint8_t fg_color,
-    uint8_t bg_color, uint8_t attr);
-void screenbuffer_set_rgb_color(screenbuffer_t *scr, uint32_t fg_color,
-    uint32_t bg_color);
-
-#endif
-
-/** @}
- */
Index: uspace/srv/devmap/Makefile
===================================================================
--- uspace/srv/devmap/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/devmap/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -34,7 +34,7 @@
 all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
 
 clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
 	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/srv/devmap/Makefile.build
===================================================================
--- uspace/srv/devmap/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/devmap/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -56,4 +56,7 @@
 %.o: %.c $(DEPEND)
 	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
 
 $(DEPEND):
Index: uspace/srv/devmap/Makefile.common
===================================================================
--- uspace/srv/devmap/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/devmap/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -37,3 +37,4 @@
 DEPEND = Makefile.depend
 DEPEND_PREV = $(DEPEND).prev
+JOB = devmap.job
 OUTPUT = devmap
Index: uspace/srv/fb/Makefile
===================================================================
--- uspace/srv/fb/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,40 +1,0 @@
-#
-# Copyright (c) 2005 Martin Decky
-# Copyright (c) 2007 Jakub Jermar
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# - Redistributions of source code must retain the above copyright
-#   notice, this list of conditions and the following disclaimer.
-# - 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.
-# - 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.
-#
-
-include Makefile.common
-
-.PHONY: all clean
-
-all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
-	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
-
-clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
-	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/srv/fb/Makefile.build
===================================================================
--- uspace/srv/fb/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,100 +1,0 @@
-#
-# Copyright (c) 2005 Martin Decky
-# Copyright (c) 2007 Jakub Jermar
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# - Redistributions of source code must retain the above copyright
-#   notice, this list of conditions and the following disclaimer.
-# - 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.
-# - 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.
-#
-
-## Setup toolchain
-#
-
-include Makefile.common
-include $(LIBC_PREFIX)/Makefile.toolchain
-
-## Sources
-#
-
-SOURCES = \
-	main.c \
-	ppm.c
-
-ifneq ($(UARCH),ia64)
-	SOURCES += fb.c \
-		font-8x16.c
-	CFLAGS += -DFB_ENABLED
-endif
-
-ifeq ($(UARCH),ia32)
-	SOURCES += ega.c
-	CFLAGS += -DEGA_ENABLED
-endif
-
-ifeq ($(UARCH),ia64)
-	SOURCES += ega.c \
-		ski.c \
-		serial_console.c
-	CFLAGS += -DSKI_ENABLED
-	CFLAGS += -DEGA_ENABLED
-endif
-
-ifeq ($(UARCH),amd64)
-	SOURCES += ega.c
-	CFLAGS += -DEGA_ENABLED
-endif
-
-ifeq ($(UARCH),mips32)
-	SOURCES += msim.c \
-		serial_console.c
-	CFLAGS += -DMSIM_ENABLED
-endif
-
-ifeq ($(UARCH),sparc64)
-	SOURCES += sgcn.c \
-		serial_console.c
-	CFLAGS += -DSGCN_ENABLED
-endif
-
-CFLAGS += -D$(UARCH)
-
-OBJECTS := $(addsuffix .o,$(basename $(SOURCES)))
-
-.PHONY: all
-
-all: $(OUTPUT) $(OUTPUT).disasm
-
--include $(DEPEND)
-
-$(OUTPUT).disasm: $(OUTPUT)
-	$(OBJDUMP) -d $< > $@
-
-$(OUTPUT): $(OBJECTS) $(LIBS)
-	$(LD) -T $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
-
-%.o: %.c $(DEPEND)
-	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
-
-$(DEPEND):
-	makedepend -f - -- $(DEPEND_DEFS) $(CFLAGS) -- $(SOURCES) > $@ 2> /dev/null
-	-[ -f $(DEPEND_PREV) ] && diff -q $(DEPEND_PREV) $@ && mv -f $(DEPEND_PREV) $@
Index: uspace/srv/fb/Makefile.common
===================================================================
--- uspace/srv/fb/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,39 +1,0 @@
-#
-# Copyright (c) 2005 Martin Decky
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# - Redistributions of source code must retain the above copyright
-#   notice, this list of conditions and the following disclaimer.
-# - 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.
-# - 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.
-#
-
-
-## Common names
-#
-
-LIBC_PREFIX = ../../lib/libc
-SOFTINT_PREFIX = ../../lib/softint
-LIBS = $(LIBC_PREFIX)/libc.a
-
-DEPEND = Makefile.depend
-DEPEND_PREV = $(DEPEND).prev
-OUTPUT = fb
Index: uspace/srv/fb/ega.c
===================================================================
--- uspace/srv/fb/ega.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,446 +1,0 @@
-/*
- * Copyright (c) 2006 Ondrej Palkovsky
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @defgroup egafb EGA framebuffer
- * @brief	HelenOS EGA framebuffer.
- * @ingroup fbs
- * @{
- */ 
-/** @file
- */
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <align.h>
-#include <async.h>
-#include <ipc/ipc.h>
-#include <errno.h>
-#include <stdio.h>
-#include <ddi.h>
-#include <sysinfo.h>
-#include <as.h>
-#include <ipc/fb.h>
-#include <ipc/ipc.h>
-#include <ipc/ns.h>
-#include <ipc/services.h>
-#include <libarch/ddi.h>
-#include <io/style.h>
-#include <io/color.h>
-#include <sys/types.h>
-
-#include "ega.h"
-#include "../console/screenbuffer.h"
-#include "main.h"
-
-#define MAX_SAVED_SCREENS 256
-typedef struct saved_screen {
-	short *data;
-} saved_screen;
-
-saved_screen saved_screens[MAX_SAVED_SCREENS];
-
-#define EGA_IO_BASE ((ioport8_t *) 0x3d4)
-#define EGA_IO_SIZE 2
-
-int ega_normal_color = 0x0f;
-int ega_inverted_color = 0xf0;
-
-#define NORMAL_COLOR		ega_normal_color
-#define INVERTED_COLOR		ega_inverted_color
-
-/* Allow only 1 connection */
-static int client_connected = 0;
-
-static unsigned int scr_width;
-static unsigned int scr_height;
-static uint8_t *scr_addr;
-
-static unsigned int style;
-
-static unsigned attr_to_ega_style(const attrs_t *a);
-static uint8_t ega_glyph(wchar_t ch);
-
-static void clrscr(void)
-{
-	unsigned i;
-	
-	for (i = 0; i < scr_width * scr_height; i++) {
-		scr_addr[i * 2] = ' ';
-		scr_addr[i * 2 + 1] = style;
-	}
-}
-
-static void cursor_goto(unsigned int col, unsigned int row)
-{
-	int ega_cursor;
-
-	ega_cursor = col + scr_width * row;
-	
-	pio_write_8(EGA_IO_BASE, 0xe);
-	pio_write_8(EGA_IO_BASE + 1, (ega_cursor >> 8) & 0xff);
-	pio_write_8(EGA_IO_BASE, 0xf);
-	pio_write_8(EGA_IO_BASE + 1, ega_cursor & 0xff);
-}
-
-static void cursor_disable(void)
-{
-	uint8_t stat;
-
-	pio_write_8(EGA_IO_BASE, 0xa);
-	stat = pio_read_8(EGA_IO_BASE + 1);
-	pio_write_8(EGA_IO_BASE, 0xa);
-	pio_write_8(EGA_IO_BASE + 1, stat | (1 << 5));
-}
-
-static void cursor_enable(void)
-{
-	uint8_t stat;
-
-	pio_write_8(EGA_IO_BASE, 0xa);
-	stat = pio_read_8(EGA_IO_BASE + 1);
-	pio_write_8(EGA_IO_BASE, 0xa);
-	pio_write_8(EGA_IO_BASE + 1, stat & (~(1 << 5)));
-}
-
-static void scroll(int rows)
-{
-	unsigned i;
-
-	if (rows > 0) {
-		memmove(scr_addr, ((char *) scr_addr) + rows * scr_width * 2,
-		    scr_width * scr_height * 2 - rows * scr_width * 2);
-		for (i = 0; i < rows * scr_width; i++)
-			(((short *) scr_addr) + scr_width * scr_height - rows *
-			    scr_width)[i] = ((style << 8) + ' ');
-	} else if (rows < 0) {
-		memmove(((char *)scr_addr) - rows * scr_width * 2, scr_addr,
-		    scr_width * scr_height * 2 + rows * scr_width * 2);
-		for (i = 0; i < -rows * scr_width; i++)
-			((short *)scr_addr)[i] = ((style << 8 ) + ' ');
-	}
-}
-
-static void printchar(wchar_t c, unsigned int col, unsigned int row)
-{
-	scr_addr[(row * scr_width + col) * 2] = ega_glyph(c);
-	scr_addr[(row * scr_width + col) * 2 + 1] = style;
-	
-	cursor_goto(col + 1, row);
-}
-
-/** Draw text data to viewport.
- *
- * @param vport Viewport id
- * @param data  Text data.
- * @param x	Leftmost column of the area.
- * @param y	Topmost row of the area.
- * @param w	Number of rows.
- * @param h	Number of columns.
- */
-static void draw_text_data(keyfield_t *data, unsigned int x,
-    unsigned int y, unsigned int w, unsigned int h)
-{
-	unsigned int i, j;
-	keyfield_t *field;
-	uint8_t *dp;
-
-	for (j = 0; j < h; j++) {
-		for (i = 0; i < w; i++) {
-			field = &data[j * w + i];
-			dp = &scr_addr[2 * ((y + j) * scr_width + (x + i))];
-
-			dp[0] = ega_glyph(field->character);
-			dp[1] = attr_to_ega_style(&field->attrs);
-		}
-	}
-}
-
-static int save_screen(void)
-{
-	int i;
-
-	for (i = 0; (i < MAX_SAVED_SCREENS) && (saved_screens[i].data); i++)
-		;
-	if (i == MAX_SAVED_SCREENS) 
-		return EINVAL;
-	if (!(saved_screens[i].data = malloc(2 * scr_width * scr_height))) 
-		return ENOMEM;
-	memcpy(saved_screens[i].data, scr_addr, 2 * scr_width * scr_height);
-
-	return i;
-}
-
-static int print_screen(int i)
-{
-	if (saved_screens[i].data)
-		memcpy(scr_addr, saved_screens[i].data, 2 * scr_width *
-		    scr_height);
-	else
-		return EINVAL;
-	return i;
-}
-
-static int style_to_ega_style(int style)
-{
-	unsigned int ega_style;
-
-	switch (style) {
-	case STYLE_NORMAL:
-		ega_style = INVERTED_COLOR;
-		break;
-	case STYLE_EMPHASIS:
-		ega_style = INVERTED_COLOR | 4;
-		break;
-	default:
-		return INVERTED_COLOR;
-	}
-
-	return ega_style;
-}
-
-static unsigned int color_to_ega_style(int fg_color, int bg_color, int attr)
-{
-	unsigned int style;
-
-	style = (fg_color & 7) | ((bg_color & 7) << 4);
-	if (attr & CATTR_BRIGHT)
-		style = style | 0x08;
-
-	return style;
-}
-
-static unsigned int rgb_to_ega_style(uint32_t fg, uint32_t bg)
-{
-	return (fg > bg) ? NORMAL_COLOR : INVERTED_COLOR;
-}
-
-static unsigned attr_to_ega_style(const attrs_t *a)
-{
-	switch (a->t) {
-	case at_style:
-		return style_to_ega_style(a->a.s.style);
-	case at_rgb:
-		return rgb_to_ega_style(a->a.r.fg_color, a->a.r.bg_color);
-	case at_idx:
-		return color_to_ega_style(a->a.i.fg_color,
-		    a->a.i.bg_color, a->a.i.flags);
-	default:
-		return INVERTED_COLOR;
-	}
-}
-
-static uint8_t ega_glyph(wchar_t ch)
-{
-	if (ch >= 0 && ch < 128)
-		return ch;
-
-	return '?';
-}
-
-static void ega_client_connection(ipc_callid_t iid, ipc_call_t *icall)
-{
-	int retval;
-	ipc_callid_t callid;
-	ipc_call_t call;
-	wchar_t c;
-	unsigned int row, col, w, h;
-	int bg_color, fg_color, attr;
-	uint32_t bg_rgb, fg_rgb;
-	keyfield_t *interbuf = NULL;
-	size_t intersize = 0;
-	int i;
-
-	if (client_connected) {
-		ipc_answer_0(iid, ELIMIT);
-		return;
-	}
-	client_connected = 1;
-	ipc_answer_0(iid, EOK); /* Accept connection */
-
-	while (1) {
-		callid = async_get_call(&call);
- 		switch (IPC_GET_METHOD(call)) {
-		case IPC_M_PHONE_HUNGUP:
-			client_connected = 0;
-			ipc_answer_0(callid, EOK);
-			return; /* Exit thread */
-		case IPC_M_SHARE_OUT:
-			/* We accept one area for data interchange */
-			intersize = IPC_GET_ARG2(call);
-			if (intersize >= scr_width * scr_height *
-			    sizeof(*interbuf)) {
-				receive_comm_area(callid, &call,
-				    (void *) &interbuf);
-				continue;
-			}
-			retval = EINVAL;
-			break;
-		case FB_DRAW_TEXT_DATA:
-			col = IPC_GET_ARG1(call);
-			row = IPC_GET_ARG2(call);
-			w = IPC_GET_ARG3(call);
-			h = IPC_GET_ARG4(call);
-			if (!interbuf) {
-				retval = EINVAL;
-				break;
-			}
-			if (col + w > scr_width || row + h > scr_height) {
-				retval = EINVAL;
-				break;
-			}
-			draw_text_data(interbuf, col, row, w, h);
-			retval = 0;
-			break;
-		case FB_GET_CSIZE:
-			ipc_answer_2(callid, EOK, scr_width, scr_height);
-			continue;
-		case FB_GET_COLOR_CAP:
-			ipc_answer_1(callid, EOK, FB_CCAP_INDEXED);
-			continue;
-		case FB_CLEAR:
-			clrscr();
-			retval = 0;
-			break;
-		case FB_PUTCHAR:
-			c = IPC_GET_ARG1(call);
-			col = IPC_GET_ARG2(call);
-			row = IPC_GET_ARG3(call);
-			if (col >= scr_width || row >= scr_height) {
-				retval = EINVAL;
-				break;
-			}
-			printchar(c, col, row);
-			retval = 0;
-			break;
- 		case FB_CURSOR_GOTO:
- 			col = IPC_GET_ARG1(call);
-			row = IPC_GET_ARG2(call);
-			if (row >= scr_height || col >= scr_width) {
-				retval = EINVAL;
-				break;
-			}
-			cursor_goto(col, row);
- 			retval = 0;
- 			break;
-		case FB_SCROLL:
-			i = IPC_GET_ARG1(call);
-			if (i > (int) scr_height || i < -((int) scr_height)) {
-				retval = EINVAL;
-				break;
-			}
-			scroll(i);
-			retval = 0;
-			break;
-		case FB_CURSOR_VISIBILITY:
-			if (IPC_GET_ARG1(call))
-				cursor_enable();
-			else
-				cursor_disable();
-			retval = 0;
-			break;
-		case FB_SET_STYLE:
-			style = style_to_ega_style(IPC_GET_ARG1(call));
-			retval = 0;
-			break;
-		case FB_SET_COLOR:
-			fg_color = IPC_GET_ARG1(call);
-			bg_color = IPC_GET_ARG2(call);
-			attr = IPC_GET_ARG3(call);
-			style = color_to_ega_style(fg_color, bg_color, attr);
-			retval = 0;
-			break;
-		case FB_SET_RGB_COLOR:
-			fg_rgb = IPC_GET_ARG1(call);
-			bg_rgb = IPC_GET_ARG2(call);
-			style = rgb_to_ega_style(fg_rgb, bg_rgb);
-			retval = 0;
-			break;
-		case FB_VP_DRAW_PIXMAP:
-			i = IPC_GET_ARG2(call);
-			retval = print_screen(i);
-			break;
-		case FB_VP2PIXMAP:
-			retval = save_screen();
-			break;
-		case FB_DROP_PIXMAP:
-			i = IPC_GET_ARG1(call);
-			if (i >= MAX_SAVED_SCREENS) {
-				retval = EINVAL;
-				break;
-			}
-			if (saved_screens[i].data) {
-				free(saved_screens[i].data);
-				saved_screens[i].data = NULL;
-			}
-			retval = 0;
-			break;
-		case FB_SCREEN_YIELD:
-		case FB_SCREEN_RECLAIM:
-			retval = EOK;
-			break;
-		default:
-			retval = EINVAL;
-		}
-		ipc_answer_0(callid, retval);
-	}
-}
-
-int ega_init(void)
-{
-	void *ega_ph_addr;
-	size_t sz;
-
-	ega_ph_addr = (void *) sysinfo_value("fb.address.physical");
-	scr_width = sysinfo_value("fb.width");
-	scr_height = sysinfo_value("fb.height");
-
-	if (sysinfo_value("fb.blinking")) {
-		ega_normal_color &= 0x77;
-		ega_inverted_color &= 0x77;
-	}
-
-	style = NORMAL_COLOR;
-
-	iospace_enable(task_get_id(), (void *) EGA_IO_BASE, 2);
-
-	sz = scr_width * scr_height * 2;
-	scr_addr = as_get_mappable_page(sz);
-
-	if (physmem_map(ega_ph_addr, scr_addr, ALIGN_UP(sz, PAGE_SIZE) >>
-	    PAGE_WIDTH, AS_AREA_READ | AS_AREA_WRITE) != 0)
-		return -1;
-
-	async_set_client_connection(ega_client_connection);
-
-	return 0;
-}
-
-
-/**
- * @}
- */
Index: uspace/srv/fb/ega.h
===================================================================
--- uspace/srv/fb/ega.h	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,45 +1,0 @@
-/*
- * Copyright (c) 2006 Ondrej Palkovsky
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup egafb
- * @brief HelenOS EGA framebuffer.
- * @ingroup fbs
- * @{
- */
-/** @file
- */
-
-#ifndef FB_EGA_H_
-#define FB_EGA_H_
-
-extern int ega_init(void);
-
-#endif
-
-/** @}
- */
Index: uspace/srv/fb/fb.c
===================================================================
--- uspace/srv/fb/fb.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,1780 +1,0 @@
-/*
- * Copyright (c) 2008 Martin Decky
- * Copyright (c) 2006 Jakub Vana
- * Copyright (c) 2006 Ondrej Palkovsky
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/**
- * @defgroup fb Graphical framebuffer
- * @brief HelenOS graphical framebuffer.
- * @ingroup fbs
- * @{
- */
-
-/** @file
- */
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <ddi.h>
-#include <sysinfo.h>
-#include <align.h>
-#include <as.h>
-#include <ipc/fb.h>
-#include <ipc/ipc.h>
-#include <ipc/ns.h>
-#include <ipc/services.h>
-#include <kernel/errno.h>
-#include <kernel/genarch/fb/visuals.h>
-#include <io/color.h>
-#include <io/style.h>
-#include <async.h>
-#include <fibril.h>
-#include <bool.h>
-#include <stdio.h>
-#include <byteorder.h>
-
-#include "font-8x16.h"
-#include "fb.h"
-#include "main.h"
-#include "../console/screenbuffer.h"
-#include "ppm.h"
-
-#include "pointer.xbm"
-#include "pointer_mask.xbm"
-
-#define DEFAULT_BGCOLOR  0xf0f0f0
-#define DEFAULT_FGCOLOR  0x000000
-
-#define GLYPH_UNAVAIL    '?'
-
-#define MAX_ANIM_LEN     8
-#define MAX_ANIMATIONS   4
-#define MAX_PIXMAPS      256  /**< Maximum number of saved pixmaps */
-#define MAX_VIEWPORTS    128  /**< Viewport is a rectangular area on the screen */
-
-/** Function to render a pixel from a RGB value. */
-typedef void (*rgb_conv_t)(void *, uint32_t);
-
-/** Function to render a bit mask. */
-typedef void (*mask_conv_t)(void *, bool);
-
-/** Function to draw a glyph. */
-typedef void (*dg_t)(unsigned int x, unsigned int y, bool cursor,
-    uint8_t *glyphs, uint32_t glyph, uint32_t fg_color, uint32_t bg_color);
-
-struct {
-	uint8_t *fb_addr;
-	
-	unsigned int xres;
-	unsigned int yres;
-	
-	unsigned int scanline;
-	unsigned int glyphscanline;
-	
-	unsigned int pixelbytes;
-	unsigned int glyphbytes;
-	
-	/** Pre-rendered mask for rendering glyphs. Specific for the visual. */
-	uint8_t *glyphs;
-	
-	rgb_conv_t rgb_conv;
-	mask_conv_t mask_conv;
-} screen;
-
-/** Backbuffer character cell. */
-typedef struct {
-	uint32_t glyph;
-	uint32_t fg_color;
-	uint32_t bg_color;
-} bb_cell_t;
-
-typedef struct {
-	bool initialized;
-	unsigned int x;
-	unsigned int y;
-	unsigned int width;
-	unsigned int height;
-	
-	/* Text support in window */
-	unsigned int cols;
-	unsigned int rows;
-	
-	/*
-	 * Style and glyphs for text printing
-	 */
-	
-	/** Current attributes. */
-	attr_rgb_t attr;
-	
-	uint8_t *bgpixel;
-	
-	/**
-	 * Glyph drawing function for this viewport.  Different viewports
-	 * might use different drawing functions depending on whether their
-	 * scanlines are aligned on a word boundary.
-	 */
-	dg_t dglyph;
-	
-	/* Auto-cursor position */
-	bool cursor_active;
-	unsigned int cur_col;
-	unsigned int cur_row;
-	bool cursor_shown;
-	
-	/* Back buffer */
-	bb_cell_t *backbuf;
-	unsigned int bbsize;
-} viewport_t;
-
-typedef struct {
-	bool initialized;
-	bool enabled;
-	unsigned int vp;
-	
-	unsigned int pos;
-	unsigned int animlen;
-	unsigned int pixmaps[MAX_ANIM_LEN];
-} animation_t;
-
-static animation_t animations[MAX_ANIMATIONS];
-static bool anims_enabled;
-
-typedef struct {
-	unsigned int width;
-	unsigned int height;
-	uint8_t *data;
-} pixmap_t;
-
-static pixmap_t pixmaps[MAX_PIXMAPS];
-static viewport_t viewports[128];
-
-static bool client_connected = false;  /**< Allow only 1 connection */
-
-static uint32_t color_table[16] = {
-	[COLOR_BLACK]       = 0x000000,
-	[COLOR_BLUE]        = 0x0000f0,
-	[COLOR_GREEN]       = 0x00f000,
-	[COLOR_CYAN]        = 0x00f0f0,
-	[COLOR_RED]         = 0xf00000,
-	[COLOR_MAGENTA]     = 0xf000f0,
-	[COLOR_YELLOW]      = 0xf0f000,
-	[COLOR_WHITE]       = 0xf0f0f0,
-	
-	[8 + COLOR_BLACK]   = 0x000000,
-	[8 + COLOR_BLUE]    = 0x0000ff,
-	[8 + COLOR_GREEN]   = 0x00ff00,
-	[8 + COLOR_CYAN]    = 0x00ffff,
-	[8 + COLOR_RED]     = 0xff0000,
-	[8 + COLOR_MAGENTA] = 0xff00ff,
-	[8 + COLOR_YELLOW]  = 0xffff00,
-	[8 + COLOR_WHITE]   = 0xffffff,
-};
-
-static int rgb_from_attr(attr_rgb_t *rgb, const attrs_t *a);
-static int rgb_from_style(attr_rgb_t *rgb, int style);
-static int rgb_from_idx(attr_rgb_t *rgb, ipcarg_t fg_color,
-    ipcarg_t bg_color, ipcarg_t flags);
-
-static int fb_set_color(viewport_t *vport, ipcarg_t fg_color,
-    ipcarg_t bg_color, ipcarg_t attr);
-
-static void draw_glyph_aligned(unsigned int x, unsigned int y, bool cursor,
-    uint8_t *glyphs, uint32_t glyph, uint32_t fg_color, uint32_t bg_color);
-static void draw_glyph_fallback(unsigned int x, unsigned int y, bool cursor,
-    uint8_t *glyphs, uint32_t glyph, uint32_t fg_color, uint32_t bg_color);
-
-static void draw_vp_glyph(viewport_t *vport, bool cursor, unsigned int col,
-    unsigned int row);
-
-
-#define RED(x, bits)                 (((x) >> (8 + 8 + 8 - (bits))) & ((1 << (bits)) - 1))
-#define GREEN(x, bits)               (((x) >> (8 + 8 - (bits))) & ((1 << (bits)) - 1))
-#define BLUE(x, bits)                (((x) >> (8 - (bits))) & ((1 << (bits)) - 1))
-
-#define COL2X(col)                   ((col) * FONT_WIDTH)
-#define ROW2Y(row)                   ((row) * FONT_SCANLINES)
-
-#define X2COL(x)                     ((x) / FONT_WIDTH)
-#define Y2ROW(y)                     ((y) / FONT_SCANLINES)
-
-#define FB_POS(x, y)                 ((y) * screen.scanline + (x) * screen.pixelbytes)
-#define BB_POS(vport, col, row)      ((row) * vport->cols + (col))
-#define GLYPH_POS(glyph, y, cursor)  (((glyph) + (cursor) * FONT_GLYPHS) * screen.glyphbytes + (y) * screen.glyphscanline)
-
-/*
- * RGB conversion and mask functions.
- *
- * These functions write an RGB value to some memory in some predefined format.
- * The naming convention corresponds to the format created by these functions.
- * The functions use the so called network order (i.e. big endian) with respect
- * to their names.
- */
-
-static void rgb_0888(void *dst, uint32_t rgb)
-{
-	*((uint32_t *) dst) = host2uint32_t_be((0 << 24) |
-	    (RED(rgb, 8) << 16) | (GREEN(rgb, 8) << 8) | (BLUE(rgb, 8)));
-}
-
-static void bgr_0888(void *dst, uint32_t rgb)
-{
-	*((uint32_t *) dst) = host2uint32_t_be((0 << 24) |
-	    (BLUE(rgb, 8) << 16) | (GREEN(rgb, 8) << 8) | (RED(rgb, 8)));
-}
-
-static void mask_0888(void *dst, bool mask)
-{
-	bgr_0888(dst, mask ? 0xffffff : 0);
-}
-
-static void rgb_8880(void *dst, uint32_t rgb)
-{
-	*((uint32_t *) dst) = host2uint32_t_be((RED(rgb, 8) << 24) |
-	    (GREEN(rgb,	8) << 16) | (BLUE(rgb, 8) << 8) | 0);
-}
-
-static void bgr_8880(void *dst, uint32_t rgb)
-{
-	*((uint32_t *) dst) = host2uint32_t_be((BLUE(rgb, 8) << 24) |
-	    (GREEN(rgb,	8) << 16) | (RED(rgb, 8) << 8) | 0);
-}
-
-static void mask_8880(void *dst, bool mask)
-{
-	bgr_8880(dst, mask ? 0xffffff : 0);
-}
-
-static void rgb_888(void *dst, uint32_t rgb)
-{
-	((uint8_t *) dst)[0] = RED(rgb, 8);
-	((uint8_t *) dst)[1] = GREEN(rgb, 8);
-	((uint8_t *) dst)[2] = BLUE(rgb, 8);
-}
-
-static void bgr_888(void *dst, uint32_t rgb)
-{
-	((uint8_t *) dst)[0] = BLUE(rgb, 8);
-	((uint8_t *) dst)[1] = GREEN(rgb, 8);
-	((uint8_t *) dst)[2] = RED(rgb, 8);
-}
-
-static void mask_888(void *dst, bool mask)
-{
-	bgr_888(dst, mask ? 0xffffff : 0);
-}
-
-static void rgb_555_be(void *dst, uint32_t rgb)
-{
-	*((uint16_t *) dst) = host2uint16_t_be(RED(rgb, 5) << 10 |
-	    GREEN(rgb, 5) << 5 | BLUE(rgb, 5));
-}
-
-static void rgb_555_le(void *dst, uint32_t rgb)
-{
-	*((uint16_t *) dst) = host2uint16_t_le(RED(rgb, 5) << 10 |
-	    GREEN(rgb, 5) << 5 | BLUE(rgb, 5));
-}
-
-static void rgb_565_be(void *dst, uint32_t rgb)
-{
-	*((uint16_t *) dst) = host2uint16_t_be(RED(rgb, 5) << 11 |
-	    GREEN(rgb, 6) << 5 | BLUE(rgb, 5));
-}
-
-static void rgb_565_le(void *dst, uint32_t rgb)
-{
-	*((uint16_t *) dst) = host2uint16_t_le(RED(rgb, 5) << 11 |
-	    GREEN(rgb, 6) << 5 | BLUE(rgb, 5));
-}
-
-static void mask_555(void *dst, bool mask)
-{
-	rgb_555_be(dst, mask ? 0xffffff : 0);
-}
-
-static void mask_565(void *dst, bool mask)
-{
-	rgb_565_be(dst, mask ? 0xffffff : 0);
-}
-
-static void bgr_323(void *dst, uint32_t rgb)
-{
-	*((uint8_t *) dst)
-	    = ~((RED(rgb, 3) << 5) | (GREEN(rgb, 2) << 3) | BLUE(rgb, 3));
-}
-
-static void mask_323(void *dst, bool mask)
-{
-	bgr_323(dst, mask ? 0x0 : ~0x0);
-}
-
-/** Draw a filled rectangle.
- *
- * @note Need real implementation that does not access VRAM twice.
- *
- */
-static void draw_filled_rect(unsigned int x0, unsigned int y0, unsigned int x1,
-    unsigned int y1, uint32_t color)
-{
-	unsigned int x;
-	unsigned int y;
-	unsigned int copy_bytes;
-	
-	uint8_t *sp;
-	uint8_t *dp;
-	uint8_t cbuf[4];
-	
-	if ((y0 >= y1) || (x0 >= x1))
-		return;
-	
-	screen.rgb_conv(cbuf, color);
-	
-	sp = &screen.fb_addr[FB_POS(x0, y0)];
-	dp = sp;
-	
-	/* Draw the first line. */
-	for (x = x0; x < x1; x++) {
-		memcpy(dp, cbuf, screen.pixelbytes);
-		dp += screen.pixelbytes;
-	}
-	
-	dp = sp + screen.scanline;
-	copy_bytes = (x1 - x0) * screen.pixelbytes;
-	
-	/* Draw the remaining lines by copying. */
-	for (y = y0 + 1; y < y1; y++) {
-		memcpy(dp, sp, copy_bytes);
-		dp += screen.scanline;
-	}
-}
-
-/** Redraw viewport.
- *
- * @param vport Viewport to redraw
- *
- */
-static void vport_redraw(viewport_t *vport)
-{
-	unsigned int col;
-	unsigned int row;
-	
-	for (row = 0; row < vport->rows; row++) {
-		for (col = 0; col < vport->cols; col++) {
-			draw_vp_glyph(vport, false, col, row);
-		}
-	}
-	
-	if (COL2X(vport->cols) < vport->width) {
-		draw_filled_rect(
-		    vport->x + COL2X(vport->cols), vport->y,
-		    vport->x + vport->width, vport->y + vport->height,
-		    vport->attr.bg_color);
-	}
-	
-	if (ROW2Y(vport->rows) < vport->height) {
-		draw_filled_rect(
-		    vport->x, vport->y + ROW2Y(vport->rows),
-		    vport->x + vport->width, vport->y + vport->height,
-		    vport->attr.bg_color);
-	}
-}
-
-static void backbuf_clear(bb_cell_t *backbuf, size_t len, uint32_t fg_color,
-    uint32_t bg_color)
-{
-	size_t i;
-	
-	for (i = 0; i < len; i++) {
-		backbuf[i].glyph = 0;
-		backbuf[i].fg_color = fg_color;
-		backbuf[i].bg_color = bg_color;
-	}
-}
-
-/** Clear viewport.
- *
- * @param vport Viewport to clear
- *
- */
-static void vport_clear(viewport_t *vport)
-{
-	backbuf_clear(vport->backbuf, vport->cols * vport->rows,
-	    vport->attr.fg_color, vport->attr.bg_color);
-	vport_redraw(vport);
-}
-
-/** Scroll viewport by the specified number of lines.
- *
- * @param vport Viewport to scroll
- * @param lines Number of lines to scroll
- *
- */
-static void vport_scroll(viewport_t *vport, int lines)
-{
-	unsigned int col;
-	unsigned int row;
-	unsigned int x;
-	unsigned int y;
-	uint32_t glyph;
-	uint32_t fg_color;
-	uint32_t bg_color;
-	bb_cell_t *bbp;
-	bb_cell_t *xbp;
-	
-	/*
-	 * Redraw.
-	 */
-	
-	y = vport->y;
-	for (row = 0; row < vport->rows; row++) {
-		x = vport->x;
-		for (col = 0; col < vport->cols; col++) {
-			if (((int) row + lines >= 0) &&
-			    ((int) row + lines < (int) vport->rows)) {
-				xbp = &vport->backbuf[BB_POS(vport, col, row + lines)];
-				bbp = &vport->backbuf[BB_POS(vport, col, row)];
-				
-				glyph = xbp->glyph;
-				fg_color = xbp->fg_color;
-				bg_color = xbp->bg_color;
-				
-				if ((bbp->glyph == glyph)
-				   && (bbp->fg_color == xbp->fg_color)
-				   && (bbp->bg_color == xbp->bg_color)) {
-					x += FONT_WIDTH;
-					continue;
-				}
-			} else {
-				glyph = 0;
-				fg_color = vport->attr.fg_color;
-				bg_color = vport->attr.bg_color;
-			}
-			
-			(*vport->dglyph)(x, y, false, screen.glyphs, glyph,
-			    fg_color, bg_color);
-			x += FONT_WIDTH;
-		}
-		y += FONT_SCANLINES;
-	}
-	
-	/*
-	 * Scroll backbuffer.
-	 */
-	
-	if (lines > 0) {
-		memmove(vport->backbuf, vport->backbuf + vport->cols * lines,
-		    vport->cols * (vport->rows - lines) * sizeof(bb_cell_t));
-		backbuf_clear(&vport->backbuf[BB_POS(vport, 0, vport->rows - lines)],
-		    vport->cols * lines, vport->attr.fg_color, vport->attr.bg_color);
-	} else {
-		memmove(vport->backbuf - vport->cols * lines, vport->backbuf,
-		    vport->cols * (vport->rows + lines) * sizeof(bb_cell_t));
-		backbuf_clear(vport->backbuf, - vport->cols * lines,
-		    vport->attr.fg_color, vport->attr.bg_color);
-	}
-}
-
-/** Render glyphs
- *
- * Convert glyphs from device independent font
- * description to current visual representation.
- *
- */
-static void render_glyphs(void)
-{
-	unsigned int glyph;
-	
-	for (glyph = 0; glyph < FONT_GLYPHS; glyph++) {
-		unsigned int y;
-		
-		for (y = 0; y < FONT_SCANLINES; y++) {
-			unsigned int x;
-			
-			for (x = 0; x < FONT_WIDTH; x++) {
-				screen.mask_conv(&screen.glyphs[GLYPH_POS(glyph, y, false) + x * screen.pixelbytes],
-				    (fb_font[glyph][y] & (1 << (7 - x))) ? true : false);
-				
-				screen.mask_conv(&screen.glyphs[GLYPH_POS(glyph, y, true) + x * screen.pixelbytes],
-				    (fb_font[glyph][y] & (1 << (7 - x))) ? false : true);
-			}
-		}
-	}
-}
-
-/** Create new viewport
- *
- * @param x      Origin of the viewport (x).
- * @param y      Origin of the viewport (y).
- * @param width  Width of the viewport.
- * @param height Height of the viewport.
- *
- * @return New viewport number.
- *
- */
-static int vport_create(unsigned int x, unsigned int y,
-    unsigned int width, unsigned int height)
-{
-	unsigned int i;
-	
-	for (i = 0; i < MAX_VIEWPORTS; i++) {
-		if (!viewports[i].initialized)
-			break;
-	}
-	
-	if (i == MAX_VIEWPORTS)
-		return ELIMIT;
-	
-	unsigned int cols = width / FONT_WIDTH;
-	unsigned int rows = height / FONT_SCANLINES;
-	unsigned int bbsize = cols * rows * sizeof(bb_cell_t);
-	unsigned int word_size = sizeof(unsigned long);
-	
-	bb_cell_t *backbuf = (bb_cell_t *) malloc(bbsize);
-	if (!backbuf)
-		return ENOMEM;
-	
-	uint8_t *bgpixel = (uint8_t *) malloc(screen.pixelbytes);
-	if (!bgpixel) {
-		free(backbuf);
-		return ENOMEM;
-	}
-	
-	backbuf_clear(backbuf, cols * rows, DEFAULT_FGCOLOR, DEFAULT_BGCOLOR);
-	memset(bgpixel, 0, screen.pixelbytes);
-	
-	viewports[i].x = x;
-	viewports[i].y = y;
-	viewports[i].width = width;
-	viewports[i].height = height;
-	
-	viewports[i].cols = cols;
-	viewports[i].rows = rows;
-	
-	viewports[i].attr.bg_color = DEFAULT_BGCOLOR;
-	viewports[i].attr.fg_color = DEFAULT_FGCOLOR;
-	
-	viewports[i].bgpixel = bgpixel;
-	
-	/*
-	 * Conditions necessary to select aligned version:
-	 *  - word size is divisible by pixelbytes
-	 *  - cell scanline size is divisible by word size
-	 *  - cell scanlines are word-aligned
-	 *
-	 */
-	if (((word_size % screen.pixelbytes) == 0)
-	    && ((FONT_WIDTH * screen.pixelbytes) % word_size == 0)
-	    && ((x * screen.pixelbytes) % word_size == 0)
-	    && (screen.scanline % word_size == 0)) {
-		viewports[i].dglyph = draw_glyph_aligned;
-	} else {
-		viewports[i].dglyph = draw_glyph_fallback;
-	}
-	
-	viewports[i].cur_col = 0;
-	viewports[i].cur_row = 0;
-	viewports[i].cursor_active = false;
-	viewports[i].cursor_shown = false;
-	
-	viewports[i].bbsize = bbsize;
-	viewports[i].backbuf = backbuf;
-	
-	viewports[i].initialized = true;
-	
-	screen.rgb_conv(viewports[i].bgpixel, viewports[i].attr.bg_color);
-	
-	return i;
-}
-
-
-/** Initialize framebuffer as a chardev output device
- *
- * @param addr   Address of the framebuffer
- * @param xres   Screen width in pixels
- * @param yres   Screen height in pixels
- * @param visual Bits per pixel (8, 16, 24, 32)
- * @param scan   Bytes per one scanline
- *
- */
-static bool screen_init(void *addr, unsigned int xres, unsigned int yres,
-    unsigned int scan, unsigned int visual)
-{
-	switch (visual) {
-	case VISUAL_INDIRECT_8:
-		screen.rgb_conv = bgr_323;
-		screen.mask_conv = mask_323;
-		screen.pixelbytes = 1;
-		break;
-	case VISUAL_RGB_5_5_5_LE:
-		screen.rgb_conv = rgb_555_le;
-		screen.mask_conv = mask_555;
-		screen.pixelbytes = 2;
-		break;
-	case VISUAL_RGB_5_5_5_BE:
-		screen.rgb_conv = rgb_555_be;
-		screen.mask_conv = mask_555;
-		screen.pixelbytes = 2;
-		break;
-	case VISUAL_RGB_5_6_5_LE:
-		screen.rgb_conv = rgb_565_le;
-		screen.mask_conv = mask_565;
-		screen.pixelbytes = 2;
-		break;
-	case VISUAL_RGB_5_6_5_BE:
-		screen.rgb_conv = rgb_565_be;
-		screen.mask_conv = mask_565;
-		screen.pixelbytes = 2;
-		break;
-	case VISUAL_RGB_8_8_8:
-		screen.rgb_conv = rgb_888;
-		screen.mask_conv = mask_888;
-		screen.pixelbytes = 3;
-		break;
-	case VISUAL_BGR_8_8_8:
-		screen.rgb_conv = bgr_888;
-		screen.mask_conv = mask_888;
-		screen.pixelbytes = 3;
-		break;
-	case VISUAL_RGB_8_8_8_0:
-		screen.rgb_conv = rgb_8880;
-		screen.mask_conv = mask_8880;
-		screen.pixelbytes = 4;
-		break;
-	case VISUAL_RGB_0_8_8_8:
-		screen.rgb_conv = rgb_0888;
-		screen.mask_conv = mask_0888;
-		screen.pixelbytes = 4;
-		break;
-	case VISUAL_BGR_0_8_8_8:
-		screen.rgb_conv = bgr_0888;
-		screen.mask_conv = mask_0888;
-		screen.pixelbytes = 4;
-		break;
-	case VISUAL_BGR_8_8_8_0:
-		screen.rgb_conv = bgr_8880;
-		screen.mask_conv = mask_8880;
-		screen.pixelbytes = 4;
-		break;
-	default:
-		return false;
-	}
-	
-	screen.fb_addr = (unsigned char *) addr;
-	screen.xres = xres;
-	screen.yres = yres;
-	screen.scanline = scan;
-	
-	screen.glyphscanline = FONT_WIDTH * screen.pixelbytes;
-	screen.glyphbytes = screen.glyphscanline * FONT_SCANLINES;
-	
-	size_t glyphsize = 2 * FONT_GLYPHS * screen.glyphbytes;
-	uint8_t *glyphs = (uint8_t *) malloc(glyphsize);
-	if (!glyphs)
-		return false;
-	
-	memset(glyphs, 0, glyphsize);
-	screen.glyphs = glyphs;
-	
-	render_glyphs();
-	
-	/* Create first viewport */
-	vport_create(0, 0, xres, yres);
-	
-	return true;
-}
-
-
-/** Draw a glyph, takes advantage of alignment.
- *
- * This version can only be used if the following conditions are met:
- *
- *   - word size is divisible by pixelbytes
- *   - cell scanline size is divisible by word size
- *   - cell scanlines are word-aligned
- *
- * It makes use of the pre-rendered mask to process (possibly) several
- * pixels at once (word size / pixelbytes pixels at a time are processed)
- * making it very fast. Most notably this version is not applicable at 24 bits
- * per pixel.
- *
- * @param x        x coordinate of top-left corner on screen.
- * @param y        y coordinate of top-left corner on screen.
- * @param cursor   Draw glyph with cursor
- * @param glyphs   Pointer to font bitmap.
- * @param glyph    Code of the glyph to draw.
- * @param fg_color Foreground color.
- * @param bg_color Backgroudn color.
- *
- */
-static void draw_glyph_aligned(unsigned int x, unsigned int y, bool cursor,
-    uint8_t *glyphs, uint32_t glyph, uint32_t fg_color, uint32_t bg_color)
-{
-	unsigned int i;
-	unsigned int yd;
-	unsigned long fg_buf;
-	unsigned long bg_buf;
-	unsigned long mask;
-	
-	/*
-	 * Prepare a pair of words, one filled with foreground-color
-	 * pattern and the other filled with background-color pattern.
-	 */
-	for (i = 0; i < sizeof(unsigned long) / screen.pixelbytes; i++) {
-		screen.rgb_conv(&((uint8_t *) &fg_buf)[i * screen.pixelbytes],
-		    fg_color);
-		screen.rgb_conv(&((uint8_t *) &bg_buf)[i * screen.pixelbytes],
-		    bg_color);
-	}
-	
-	/* Pointer to the current position in the mask. */
-	unsigned long *maskp = (unsigned long *) &glyphs[GLYPH_POS(glyph, 0, cursor)];
-	
-	/* Pointer to the current position on the screen. */
-	unsigned long *dp = (unsigned long *) &screen.fb_addr[FB_POS(x, y)];
-	
-	/* Width of the character cell in words. */
-	unsigned int ww = FONT_WIDTH * screen.pixelbytes / sizeof(unsigned long);
-	
-	/* Offset to add when moving to another screen scanline. */
-	unsigned int d_add = screen.scanline - FONT_WIDTH * screen.pixelbytes;
-	
-	for (yd = 0; yd < FONT_SCANLINES; yd++) {
-		/*
-		 * Now process the cell scanline, combining foreground
-		 * and background color patters using the pre-rendered mask.
-		 */
-		for (i = 0; i < ww; i++) {
-			mask = *maskp++;
-			*dp++ = (fg_buf & mask) | (bg_buf & ~mask);
-		}
-		
-		/* Move to the beginning of the next scanline of the cell. */
-		dp = (unsigned long *) ((uint8_t *) dp + d_add);
-	}
-}
-
-/** Draw a glyph, fallback version.
- *
- * This version does not make use of the pre-rendered mask, it uses
- * the font bitmap directly. It works always, but it is slower.
- *
- * @param x        x coordinate of top-left corner on screen.
- * @param y        y coordinate of top-left corner on screen.
- * @param cursor   Draw glyph with cursor
- * @param glyphs   Pointer to font bitmap.
- * @param glyph    Code of the glyph to draw.
- * @param fg_color Foreground color.
- * @param bg_color Backgroudn color.
- *
- */
-void draw_glyph_fallback(unsigned int x, unsigned int y, bool cursor,
-    uint8_t *glyphs, uint32_t glyph, uint32_t fg_color, uint32_t bg_color)
-{
-	unsigned int i;
-	unsigned int j;
-	unsigned int yd;
-	uint8_t fg_buf[4];
-	uint8_t bg_buf[4];
-	uint8_t *sp;
-	uint8_t b;
-	
-	/* Pre-render 1x the foreground and background color pixels. */
-	if (cursor) {
-		screen.rgb_conv(fg_buf, bg_color);
-		screen.rgb_conv(bg_buf, fg_color);
-	} else {
-		screen.rgb_conv(fg_buf, fg_color);
-		screen.rgb_conv(bg_buf, bg_color);
-	}
-	
-	/* Pointer to the current position on the screen. */
-	uint8_t *dp = (uint8_t *) &screen.fb_addr[FB_POS(x, y)];
-	
-	/* Offset to add when moving to another screen scanline. */
-	unsigned int d_add = screen.scanline - FONT_WIDTH * screen.pixelbytes;
-	
-	for (yd = 0; yd < FONT_SCANLINES; yd++) {
-		/* Byte containing bits of the glyph scanline. */
-		b = fb_font[glyph][yd];
-		
-		for (i = 0; i < FONT_WIDTH; i++) {
-			/* Choose color based on the current bit. */
-			sp = (b & 0x80) ? fg_buf : bg_buf;
-			
-			/* Copy the pixel. */
-			for (j = 0; j < screen.pixelbytes; j++) {
-				*dp++ = *sp++;
-			}
-			
-			/* Move to the next bit. */
-			b = b << 1;
-		}
-		
-		/* Move to the beginning of the next scanline of the cell. */
-		dp += d_add;
-	}
-}
-
-/** Draw glyph at specified position in viewport.
- *
- * @param vport  Viewport identification
- * @param cursor Draw glyph with cursor
- * @param col    Screen position relative to viewport
- * @param row    Screen position relative to viewport
- *
- */
-static void draw_vp_glyph(viewport_t *vport, bool cursor, unsigned int col,
-    unsigned int row)
-{
-	unsigned int x = vport->x + COL2X(col);
-	unsigned int y = vport->y + ROW2Y(row);
-	
-	uint32_t glyph = vport->backbuf[BB_POS(vport, col, row)].glyph;
-	uint32_t fg_color = vport->backbuf[BB_POS(vport, col, row)].fg_color;
-	uint32_t bg_color = vport->backbuf[BB_POS(vport, col, row)].bg_color;
-	
-	(*vport->dglyph)(x, y, cursor, screen.glyphs, glyph,
-	    fg_color, bg_color);
-}
-
-/** Hide cursor if it is shown
- *
- */
-static void cursor_hide(viewport_t *vport)
-{
-	if ((vport->cursor_active) && (vport->cursor_shown)) {
-		draw_vp_glyph(vport, false, vport->cur_col, vport->cur_row);
-		vport->cursor_shown = false;
-	}
-}
-
-
-/** Show cursor if cursor showing is enabled
- *
- */
-static void cursor_show(viewport_t *vport)
-{
-	/* Do not check for cursor_shown */
-	if (vport->cursor_active) {
-		draw_vp_glyph(vport, true, vport->cur_col, vport->cur_row);
-		vport->cursor_shown = true;
-	}
-}
-
-
-/** Invert cursor, if it is enabled
- *
- */
-static void cursor_blink(viewport_t *vport)
-{
-	if (vport->cursor_shown)
-		cursor_hide(vport);
-	else
-		cursor_show(vport);
-}
-
-
-/** Draw character at given position relative to viewport
- *
- * @param vport  Viewport identification
- * @param c      Character to draw
- * @param col    Screen position relative to viewport
- * @param row    Screen position relative to viewport
- *
- */
-static void draw_char(viewport_t *vport, wchar_t c, unsigned int col, unsigned int row)
-{
-	bb_cell_t *bbp;
-	
-	/* Do not hide cursor if we are going to overwrite it */
-	if ((vport->cursor_active) && (vport->cursor_shown) &&
-	    ((vport->cur_col != col) || (vport->cur_row != row)))
-		cursor_hide(vport);
-	
-	bbp = &vport->backbuf[BB_POS(vport, col, row)];
-	bbp->glyph = fb_font_glyph(c);
-	bbp->fg_color = vport->attr.fg_color;
-	bbp->bg_color = vport->attr.bg_color;
-	
-	draw_vp_glyph(vport, false, col, row);
-	
-	vport->cur_col = col;
-	vport->cur_row = row;
-	
-	vport->cur_col++;
-	if (vport->cur_col >= vport->cols) {
-		vport->cur_col = 0;
-		vport->cur_row++;
-		if (vport->cur_row >= vport->rows)
-			vport->cur_row--;
-	}
-	
-	cursor_show(vport);
-}
-
-/** Draw text data to viewport.
- *
- * @param vport Viewport id
- * @param data  Text data.
- * @param x     Leftmost column of the area.
- * @param y     Topmost row of the area.
- * @param w     Number of rows.
- * @param h     Number of columns.
- *
- */
-static void draw_text_data(viewport_t *vport, keyfield_t *data, unsigned int x,
-    unsigned int y, unsigned int w, unsigned int h)
-{
-	unsigned int i;
-	unsigned int j;
-	bb_cell_t *bbp;
-	attrs_t *a;
-	attr_rgb_t rgb;
-	
-	for (j = 0; j < h; j++) {
-		for (i = 0; i < w; i++) {
-			unsigned int col = x + i;
-			unsigned int row = y + j;
-			
-			bbp = &vport->backbuf[BB_POS(vport, col, row)];
-			
-			a = &data[j * w + i].attrs;
-			rgb_from_attr(&rgb, a);
-			
-			bbp->glyph = fb_font_glyph(data[j * w + i].character);
-			bbp->fg_color = rgb.fg_color;
-			bbp->bg_color = rgb.bg_color;
-			
-			draw_vp_glyph(vport, false, col, row);
-		}
-	}
-	cursor_show(vport);
-}
-
-
-static void putpixel_pixmap(void *data, unsigned int x, unsigned int y, uint32_t color)
-{
-	int pm = *((int *) data);
-	pixmap_t *pmap = &pixmaps[pm];
-	unsigned int pos = (y * pmap->width + x) * screen.pixelbytes;
-	
-	screen.rgb_conv(&pmap->data[pos], color);
-}
-
-
-static void putpixel(void *data, unsigned int x, unsigned int y, uint32_t color)
-{
-	viewport_t *vport = (viewport_t *) data;
-	unsigned int dx = vport->x + x;
-	unsigned int dy = vport->y + y;
-	
-	screen.rgb_conv(&screen.fb_addr[FB_POS(dx, dy)], color);
-}
-
-
-/** Return first free pixmap
- *
- */
-static int find_free_pixmap(void)
-{
-	unsigned int i;
-	
-	for (i = 0; i < MAX_PIXMAPS; i++)
-		if (!pixmaps[i].data)
-			return i;
-	
-	return -1;
-}
-
-
-/** Create a new pixmap and return appropriate ID
- *
- */
-static int shm2pixmap(unsigned char *shm, size_t size)
-{
-	int pm;
-	pixmap_t *pmap;
-	
-	pm = find_free_pixmap();
-	if (pm == -1)
-		return ELIMIT;
-	
-	pmap = &pixmaps[pm];
-	
-	if (ppm_get_data(shm, size, &pmap->width, &pmap->height))
-		return EINVAL;
-	
-	pmap->data = malloc(pmap->width * pmap->height * screen.pixelbytes);
-	if (!pmap->data)
-		return ENOMEM;
-	
-	ppm_draw(shm, size, 0, 0, pmap->width, pmap->height, putpixel_pixmap, (void *) &pm);
-	
-	return pm;
-}
-
-
-/** Handle shared memory communication calls
- *
- * Protocol for drawing pixmaps:
- * - FB_PREPARE_SHM(client shm identification)
- * - IPC_M_AS_AREA_SEND
- * - FB_DRAW_PPM(startx, starty)
- * - FB_DROP_SHM
- *
- * Protocol for text drawing
- * - IPC_M_AS_AREA_SEND
- * - FB_DRAW_TEXT_DATA
- *
- * @param callid Callid of the current call
- * @param call   Current call data
- * @param vp     Active viewport
- *
- * @return false if the call was not handled byt this function, true otherwise
- *
- * Note: this function is not thread-safe, you would have
- * to redefine static variables with fibril_local.
- *
- */
-static bool shm_handle(ipc_callid_t callid, ipc_call_t *call, int vp)
-{
-	static keyfield_t *interbuffer = NULL;
-	static size_t intersize = 0;
-	
-	static unsigned char *shm = NULL;
-	static ipcarg_t shm_id = 0;
-	static size_t shm_size;
-	
-	bool handled = true;
-	int retval = EOK;
-	viewport_t *vport = &viewports[vp];
-	unsigned int x;
-	unsigned int y;
-	unsigned int w;
-	unsigned int h;
-	
-	switch (IPC_GET_METHOD(*call)) {
-	case IPC_M_SHARE_OUT:
-		/* We accept one area for data interchange */
-		if (IPC_GET_ARG1(*call) == shm_id) {
-			void *dest = as_get_mappable_page(IPC_GET_ARG2(*call));
-			shm_size = IPC_GET_ARG2(*call);
-			if (ipc_answer_1(callid, EOK, (sysarg_t) dest)) {
-				shm_id = 0;
-				return false;
-			}
-			shm = dest;
-			
-			if (shm[0] != 'P')
-				return false;
-			
-			return true;
-		} else {
-			intersize = IPC_GET_ARG2(*call);
-			receive_comm_area(callid, call, (void *) &interbuffer);
-		}
-		return true;
-	case FB_PREPARE_SHM:
-		if (shm_id)
-			retval = EBUSY;
-		else 
-			shm_id = IPC_GET_ARG1(*call);
-		break;
-		
-	case FB_DROP_SHM:
-		if (shm) {
-			as_area_destroy(shm);
-			shm = NULL;
-		}
-		shm_id = 0;
-		break;
-		
-	case FB_SHM2PIXMAP:
-		if (!shm) {
-			retval = EINVAL;
-			break;
-		}
-		retval = shm2pixmap(shm, shm_size);
-		break;
-	case FB_DRAW_PPM:
-		if (!shm) {
-			retval = EINVAL;
-			break;
-		}
-		x = IPC_GET_ARG1(*call);
-		y = IPC_GET_ARG2(*call);
-		
-		if ((x > vport->width) || (y > vport->height)) {
-			retval = EINVAL;
-			break;
-		}
-		
-		ppm_draw(shm, shm_size, IPC_GET_ARG1(*call),
-		    IPC_GET_ARG2(*call), vport->width - x, vport->height - y, putpixel, (void *) vport);
-		break;
-	case FB_DRAW_TEXT_DATA:
-		x = IPC_GET_ARG1(*call);
-		y = IPC_GET_ARG2(*call);
-		w = IPC_GET_ARG3(*call);
-		h = IPC_GET_ARG4(*call);
-		if (!interbuffer) {
-			retval = EINVAL;
-			break;
-		}
-		if (x + w > vport->cols || y + h > vport->rows) {
-			retval = EINVAL;
-			break;
-		}
-		if (intersize < w * h * sizeof(*interbuffer)) {
-			retval = EINVAL;
-			break;
-		}
-		draw_text_data(vport, interbuffer, x, y, w, h);
-		break;
-	default:
-		handled = false;
-	}
-	
-	if (handled)
-		ipc_answer_0(callid, retval);
-	return handled;
-}
-
-
-static void copy_vp_to_pixmap(viewport_t *vport, pixmap_t *pmap)
-{
-	unsigned int width = vport->width;
-	unsigned int height = vport->height;
-	
-	if (width + vport->x > screen.xres)
-		width = screen.xres - vport->x;
-	if (height + vport->y > screen.yres)
-		height = screen.yres - vport->y;
-	
-	unsigned int realwidth = pmap->width <= width ? pmap->width : width;
-	unsigned int realheight = pmap->height <= height ? pmap->height : height;
-	
-	unsigned int srcrowsize = vport->width * screen.pixelbytes;
-	unsigned int realrowsize = realwidth * screen.pixelbytes;
-	
-	unsigned int y;
-	for (y = 0; y < realheight; y++) {
-		unsigned int tmp = (vport->y + y) * screen.scanline + vport->x * screen.pixelbytes;
-		memcpy(pmap->data + srcrowsize * y, screen.fb_addr + tmp, realrowsize);
-	}
-}
-
-
-/** Save viewport to pixmap
- *
- */
-static int save_vp_to_pixmap(viewport_t *vport)
-{
-	int pm;
-	pixmap_t *pmap;
-	
-	pm = find_free_pixmap();
-	if (pm == -1)
-		return ELIMIT;
-	
-	pmap = &pixmaps[pm];
-	pmap->data = malloc(screen.pixelbytes * vport->width * vport->height);
-	if (!pmap->data)
-		return ENOMEM;
-	
-	pmap->width = vport->width;
-	pmap->height = vport->height;
-	
-	copy_vp_to_pixmap(vport, pmap);
-	
-	return pm;
-}
-
-
-/** Draw pixmap on screen
- *
- * @param vp Viewport to draw on
- * @param pm Pixmap identifier
- *
- */
-static int draw_pixmap(int vp, int pm)
-{
-	pixmap_t *pmap = &pixmaps[pm];
-	viewport_t *vport = &viewports[vp];
-	
-	unsigned int width = vport->width;
-	unsigned int height = vport->height;
-	
-	if (width + vport->x > screen.xres)
-		width = screen.xres - vport->x;
-	if (height + vport->y > screen.yres)
-		height = screen.yres - vport->y;
-	
-	if (!pmap->data)
-		return EINVAL;
-	
-	unsigned int realwidth = pmap->width <= width ? pmap->width : width;
-	unsigned int realheight = pmap->height <= height ? pmap->height : height;
-	
-	unsigned int srcrowsize = vport->width * screen.pixelbytes;
-	unsigned int realrowsize = realwidth * screen.pixelbytes;
-	
-	unsigned int y;
-	for (y = 0; y < realheight; y++) {
-		unsigned int tmp = (vport->y + y) * screen.scanline + vport->x * screen.pixelbytes;
-		memcpy(screen.fb_addr + tmp, pmap->data + y * srcrowsize, realrowsize);
-	}
-	
-	return EOK;
-}
-
-
-/** Tick animation one step forward
- *
- */
-static void anims_tick(void)
-{
-	unsigned int i;
-	static int counts = 0;
-	
-	/* Limit redrawing */
-	counts = (counts + 1) % 8;
-	if (counts)
-		return;
-	
-	for (i = 0; i < MAX_ANIMATIONS; i++) {
-		if ((!animations[i].animlen) || (!animations[i].initialized) ||
-		    (!animations[i].enabled))
-			continue;
-		
-		draw_pixmap(animations[i].vp, animations[i].pixmaps[animations[i].pos]);
-		animations[i].pos = (animations[i].pos + 1) % animations[i].animlen;
-	}
-}
-
-
-static unsigned int pointer_x;
-static unsigned int pointer_y;
-static bool pointer_shown, pointer_enabled;
-static int pointer_vport = -1;
-static int pointer_pixmap = -1;
-
-
-static void mouse_show(void)
-{
-	int i, j;
-	int visibility;
-	int color;
-	int bytepos;
-	
-	if ((pointer_shown) || (!pointer_enabled))
-		return;
-	
-	/* Save image under the pointer. */
-	if (pointer_vport == -1) {
-		pointer_vport = vport_create(pointer_x, pointer_y, pointer_width, pointer_height);
-		if (pointer_vport < 0)
-			return;
-	} else {
-		viewports[pointer_vport].x = pointer_x;
-		viewports[pointer_vport].y = pointer_y;
-	}
-	
-	if (pointer_pixmap == -1)
-		pointer_pixmap = save_vp_to_pixmap(&viewports[pointer_vport]);
-	else
-		copy_vp_to_pixmap(&viewports[pointer_vport], &pixmaps[pointer_pixmap]);
-	
-	/* Draw mouse pointer. */
-	for (i = 0; i < pointer_height; i++)
-		for (j = 0; j < pointer_width; j++) {
-			bytepos = i * ((pointer_width - 1) / 8 + 1) + j / 8;
-			visibility = pointer_mask_bits[bytepos] &
-			    (1 << (j % 8));
-			if (visibility) {
-				color = pointer_bits[bytepos] &
-				    (1 << (j % 8)) ? 0 : 0xffffff;
-				if (pointer_x + j < screen.xres && pointer_y +
-				    i < screen.yres)
-					putpixel(&viewports[0], pointer_x + j,
-					    pointer_y + i, color);
-			}
-		}
-	pointer_shown = 1;
-}
-
-
-static void mouse_hide(void)
-{
-	/* Restore image under the pointer. */
-	if (pointer_shown) {
-		draw_pixmap(pointer_vport, pointer_pixmap);
-		pointer_shown = 0;
-	}
-}
-
-
-static void mouse_move(unsigned int x, unsigned int y)
-{
-	mouse_hide();
-	pointer_x = x;
-	pointer_y = y;
-	mouse_show();
-}
-
-
-static int anim_handle(ipc_callid_t callid, ipc_call_t *call, int vp)
-{
-	bool handled = true;
-	int retval = EOK;
-	int i, nvp;
-	int newval;
-	
-	switch (IPC_GET_METHOD(*call)) {
-	case FB_ANIM_CREATE:
-		nvp = IPC_GET_ARG1(*call);
-		if (nvp == -1)
-			nvp = vp;
-		if (nvp >= MAX_VIEWPORTS || nvp < 0 ||
-			!viewports[nvp].initialized) {
-			retval = EINVAL;
-			break;
-		}
-		for (i = 0; i < MAX_ANIMATIONS; i++) {
-			if (!animations[i].initialized)
-				break;
-		}
-		if (i == MAX_ANIMATIONS) {
-			retval = ELIMIT;
-			break;
-		}
-		animations[i].initialized = 1;
-		animations[i].animlen = 0;
-		animations[i].pos = 0;
-		animations[i].enabled = 0;
-		animations[i].vp = nvp;
-		retval = i;
-		break;
-	case FB_ANIM_DROP:
-		i = IPC_GET_ARG1(*call);
-		if (i >= MAX_ANIMATIONS || i < 0) {
-			retval = EINVAL;
-			break;
-		}
-		animations[i].initialized = 0;
-		break;
-	case FB_ANIM_ADDPIXMAP:
-		i = IPC_GET_ARG1(*call);
-		if (i >= MAX_ANIMATIONS || i < 0 ||
-			!animations[i].initialized) {
-			retval = EINVAL;
-			break;
-		}
-		if (animations[i].animlen == MAX_ANIM_LEN) {
-			retval = ELIMIT;
-			break;
-		}
-		newval = IPC_GET_ARG2(*call);
-		if (newval < 0 || newval > MAX_PIXMAPS ||
-			!pixmaps[newval].data) {
-			retval = EINVAL;
-			break;
-		}
-		animations[i].pixmaps[animations[i].animlen++] = newval;
-		break;
-	case FB_ANIM_CHGVP:
-		i = IPC_GET_ARG1(*call);
-		if (i >= MAX_ANIMATIONS || i < 0) {
-			retval = EINVAL;
-			break;
-		}
-		nvp = IPC_GET_ARG2(*call);
-		if (nvp == -1)
-			nvp = vp;
-		if (nvp >= MAX_VIEWPORTS || nvp < 0 ||
-			!viewports[nvp].initialized) {
-			retval = EINVAL;
-			break;
-		}
-		animations[i].vp = nvp;
-		break;
-	case FB_ANIM_START:
-	case FB_ANIM_STOP:
-		i = IPC_GET_ARG1(*call);
-		if (i >= MAX_ANIMATIONS || i < 0) {
-			retval = EINVAL;
-			break;
-		}
-		newval = (IPC_GET_METHOD(*call) == FB_ANIM_START);
-		if (newval ^ animations[i].enabled) {
-			animations[i].enabled = newval;
-			anims_enabled += newval ? 1 : -1;
-		}
-		break;
-	default:
-		handled = 0;
-	}
-	if (handled)
-		ipc_answer_0(callid, retval);
-	return handled;
-}
-
-
-/** Handler for messages concerning pixmap handling
- *
- */
-static int pixmap_handle(ipc_callid_t callid, ipc_call_t *call, int vp)
-{
-	bool handled = true;
-	int retval = EOK;
-	int i, nvp;
-	
-	switch (IPC_GET_METHOD(*call)) {
-	case FB_VP_DRAW_PIXMAP:
-		nvp = IPC_GET_ARG1(*call);
-		if (nvp == -1)
-			nvp = vp;
-		if (nvp < 0 || nvp >= MAX_VIEWPORTS ||
-			!viewports[nvp].initialized) {
-			retval = EINVAL;
-			break;
-		}
-		i = IPC_GET_ARG2(*call);
-		retval = draw_pixmap(nvp, i);
-		break;
-	case FB_VP2PIXMAP:
-		nvp = IPC_GET_ARG1(*call);
-		if (nvp == -1)
-			nvp = vp;
-		if (nvp < 0 || nvp >= MAX_VIEWPORTS ||
-			!viewports[nvp].initialized)
-			retval = EINVAL;
-		else
-			retval = save_vp_to_pixmap(&viewports[nvp]);
-		break;
-	case FB_DROP_PIXMAP:
-		i = IPC_GET_ARG1(*call);
-		if (i >= MAX_PIXMAPS) {
-			retval = EINVAL;
-			break;
-		}
-		if (pixmaps[i].data) {
-			free(pixmaps[i].data);
-			pixmaps[i].data = NULL;
-		}
-		break;
-	default:
-		handled = 0;
-	}
-	
-	if (handled)
-		ipc_answer_0(callid, retval);
-	return handled;
-	
-}
-
-static int rgb_from_style(attr_rgb_t *rgb, int style)
-{
-	switch (style) {
-	case STYLE_NORMAL:
-		rgb->fg_color = color_table[COLOR_BLACK];
-		rgb->bg_color = color_table[COLOR_WHITE];
-		break;
-	case STYLE_EMPHASIS:
-		rgb->fg_color = color_table[COLOR_RED];
-		rgb->bg_color = color_table[COLOR_WHITE];
-		break;
-	default:
-		return EINVAL;
-	}
-
-	return EOK;
-}
-
-static int rgb_from_idx(attr_rgb_t *rgb, ipcarg_t fg_color,
-    ipcarg_t bg_color, ipcarg_t flags)
-{
-	fg_color = (fg_color & 7) | ((flags & CATTR_BRIGHT) ? 8 : 0);
-	bg_color = (bg_color & 7) | ((flags & CATTR_BRIGHT) ? 8 : 0);
-
-	rgb->fg_color = color_table[fg_color];
-	rgb->bg_color = color_table[bg_color];
-
-	return EOK;
-}
-
-static int rgb_from_attr(attr_rgb_t *rgb, const attrs_t *a)
-{
-	int rc;
-
-	switch (a->t) {
-	case at_style:
-		rc = rgb_from_style(rgb, a->a.s.style);
-		break;
-	case at_idx:
-		rc = rgb_from_idx(rgb, a->a.i.fg_color,
-		    a->a.i.bg_color, a->a.i.flags);
-		break;
-	case at_rgb:
-		*rgb = a->a.r;
-		rc = EOK;
-		break;
-	}
-
-	return rc;
-}
-
-static int fb_set_style(viewport_t *vport, ipcarg_t style)
-{
-	return rgb_from_style(&vport->attr, (int) style);
-}
-
-static int fb_set_color(viewport_t *vport, ipcarg_t fg_color,
-    ipcarg_t bg_color, ipcarg_t flags)
-{
-	return rgb_from_idx(&vport->attr, fg_color, bg_color, flags);
-}
-
-/** Function for handling connections to FB
- *
- */
-static void fb_client_connection(ipc_callid_t iid, ipc_call_t *icall)
-{
-	unsigned int vp = 0;
-	viewport_t *vport = &viewports[vp];
-	
-	if (client_connected) {
-		ipc_answer_0(iid, ELIMIT);
-		return;
-	}
-	
-	/* Accept connection */
-	client_connected = true;
-	ipc_answer_0(iid, EOK);
-	
-	while (true) {
-		ipc_callid_t callid;
-		ipc_call_t call;
-		int retval;
-		unsigned int i;
-		int scroll;
-		wchar_t ch;
-		unsigned int col, row;
-		
-		if ((vport->cursor_active) || (anims_enabled))
-			callid = async_get_call_timeout(&call, 250000);
-		else
-			callid = async_get_call(&call);
-		
-		mouse_hide();
-		if (!callid) {
-			cursor_blink(vport);
-			anims_tick();
-			mouse_show();
-			continue;
-		}
-		
-		if (shm_handle(callid, &call, vp))
-			continue;
-		
-		if (pixmap_handle(callid, &call, vp))
-			continue;
-		
-		if (anim_handle(callid, &call, vp))
-			continue;
-		
-		switch (IPC_GET_METHOD(call)) {
-		case IPC_M_PHONE_HUNGUP:
-			client_connected = false;
-			
-			/* Cleanup other viewports */
-			for (i = 1; i < MAX_VIEWPORTS; i++)
-				vport->initialized = false;
-			
-			/* Exit thread */
-			return;
-		
-		case FB_PUTCHAR:
-			ch = IPC_GET_ARG1(call);
-			col = IPC_GET_ARG2(call);
-			row = IPC_GET_ARG3(call);
-			
-			if ((col >= vport->cols) || (row >= vport->rows)) {
-				retval = EINVAL;
-				break;
-			}
-			ipc_answer_0(callid, EOK);
-			
-			draw_char(vport, ch, col, row);
-			
-			/* Message already answered */
-			continue;
-		case FB_CLEAR:
-			vport_clear(vport);
-			cursor_show(vport);
-			retval = EOK;
-			break;
-		case FB_CURSOR_GOTO:
-			col = IPC_GET_ARG1(call);
-			row = IPC_GET_ARG2(call);
-			
-			if ((col >= vport->cols) || (row >= vport->rows)) {
-				retval = EINVAL;
-				break;
-			}
-			retval = EOK;
-			
-			cursor_hide(vport);
-			vport->cur_col = col;
-			vport->cur_row = row;
-			cursor_show(vport);
-			break;
-		case FB_CURSOR_VISIBILITY:
-			cursor_hide(vport);
-			vport->cursor_active = IPC_GET_ARG1(call);
-			cursor_show(vport);
-			retval = EOK;
-			break;
-		case FB_GET_CSIZE:
-			ipc_answer_2(callid, EOK, vport->cols, vport->rows);
-			continue;
-		case FB_GET_COLOR_CAP:
-			ipc_answer_1(callid, EOK, FB_CCAP_RGB);
-			continue;
-		case FB_SCROLL:
-			scroll = IPC_GET_ARG1(call);
-			if ((scroll > (int) vport->rows) || (scroll < (-(int) vport->rows))) {
-				retval = EINVAL;
-				break;
-			}
-			cursor_hide(vport);
-			vport_scroll(vport, scroll);
-			cursor_show(vport);
-			retval = EOK;
-			break;
-		case FB_VIEWPORT_SWITCH:
-			i = IPC_GET_ARG1(call);
-			if (i >= MAX_VIEWPORTS) {
-				retval = EINVAL;
-				break;
-			}
-			if (!viewports[i].initialized) {
-				retval = EADDRNOTAVAIL;
-				break;
-			}
-			cursor_hide(vport);
-			vp = i;
-			vport = &viewports[vp];
-			cursor_show(vport);
-			retval = EOK;
-			break;
-		case FB_VIEWPORT_CREATE:
-			retval = vport_create(IPC_GET_ARG1(call) >> 16,
-			    IPC_GET_ARG1(call) & 0xffff,
-			    IPC_GET_ARG2(call) >> 16,
-			    IPC_GET_ARG2(call) & 0xffff);
-			break;
-		case FB_VIEWPORT_DELETE:
-			i = IPC_GET_ARG1(call);
-			if (i >= MAX_VIEWPORTS) {
-				retval = EINVAL;
-				break;
-			}
-			if (!viewports[i].initialized) {
-				retval = EADDRNOTAVAIL;
-				break;
-			}
-			viewports[i].initialized = false;
-			if (viewports[i].bgpixel)
-				free(viewports[i].bgpixel);
-			if (viewports[i].backbuf)
-				free(viewports[i].backbuf);
-			retval = EOK;
-			break;
-		case FB_SET_STYLE:
-			retval = fb_set_style(vport, IPC_GET_ARG1(call));
-			break;
-		case FB_SET_COLOR:
-			retval = fb_set_color(vport, IPC_GET_ARG1(call),
-			    IPC_GET_ARG2(call), IPC_GET_ARG3(call));
-			break;
-		case FB_SET_RGB_COLOR:
-			vport->attr.fg_color = IPC_GET_ARG1(call);
-			vport->attr.bg_color = IPC_GET_ARG2(call);
-			retval = EOK;
-			break;
-		case FB_GET_RESOLUTION:
-			ipc_answer_2(callid, EOK, screen.xres, screen.yres);
-			continue;
-		case FB_POINTER_MOVE:
-			pointer_enabled = true;
-			mouse_move(IPC_GET_ARG1(call), IPC_GET_ARG2(call));
-			retval = EOK;
-			break;
-		case FB_SCREEN_YIELD:
-		case FB_SCREEN_RECLAIM:
-			retval = EOK;
-			break;
-		default:
-			retval = ENOENT;
-		}
-		ipc_answer_0(callid, retval);
-	}
-}
-
-/** Initialization of framebuffer
- *
- */
-int fb_init(void)
-{
-	async_set_client_connection(fb_client_connection);
-	
-	void *fb_ph_addr = (void *) sysinfo_value("fb.address.physical");
-	unsigned int fb_offset = sysinfo_value("fb.offset");
-	unsigned int fb_width = sysinfo_value("fb.width");
-	unsigned int fb_height = sysinfo_value("fb.height");
-	unsigned int fb_scanline = sysinfo_value("fb.scanline");
-	unsigned int fb_visual = sysinfo_value("fb.visual");
-
-	unsigned int fbsize = fb_scanline * fb_height;
-	void *fb_addr = as_get_mappable_page(fbsize);
-
-	if (physmem_map(fb_ph_addr + fb_offset, fb_addr,
-	    ALIGN_UP(fbsize, PAGE_SIZE) >> PAGE_WIDTH, AS_AREA_READ | AS_AREA_WRITE) != 0)
-		return -1;
-
-	if (screen_init(fb_addr, fb_width, fb_height, fb_scanline, fb_visual))
-		return 0;
-
-	return -1;
-}
-
-/**
- * @}
- */
Index: uspace/srv/fb/fb.h
===================================================================
--- uspace/srv/fb/fb.h	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,48 +1,0 @@
-/*
- * Copyright (c) 2006 Ondrej Palkovsky
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup fb
- * @ingroup fbs
- * @{
- */
-/** @file
- */
-
-#ifndef FB_FB_H_
-#define FB_FB_H_
-
-#include <stdint.h>
-
-typedef void (* putpixel_cb_t)(void *, unsigned int, unsigned int, uint32_t);
-
-extern int fb_init(void);
-
-#endif
-
-/** @}
- */
Index: uspace/srv/fb/font-8x16.c
===================================================================
--- uspace/srv/fb/font-8x16.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,3271 +1,0 @@
-/*
- * Copyright (c) 2000 Dmitry Bolkhovityanov
- * Copyright (c) 2009 Martin Decky
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup genarch
- * @{
- */
-/** @file
- */
-
-#include <sys/types.h>
-#include "font-8x16.h"
-
-/** Convert character to font glyph index
- *
- * The font does not cover all Unicode characters.
- * This function converts the character to an appropriate
- * glyph in the font or returns an index to the question
- * mark glyph if no specific glyph exists.
- */
-uint16_t fb_font_glyph(const wchar_t ch)
-{
-	if (ch == 0x0000)
-		return 0;
-	
-	if ((ch >= 0x0020) && (ch <= 0x007f))
-		return (ch - 32);
-	
-	if ((ch >= 0x00a0) && (ch <= 0x021f))
-		return (ch - 64);
-	
-	if ((ch >= 0x0222) && (ch <= 0x0233))
-		return (ch - 66);
-	
-	if ((ch >= 0x0250) && (ch <= 0x02ad))
-		return (ch - 94);
-	
-	if ((ch >= 0x02b0) && (ch <= 0x02cf))
-		return (ch - 96);
-	
-	if ((ch >= 0x02d8) && (ch <= 0x02dd))
-		return (ch - 104);
-	
-	if (ch == 0x02ee)
-		return 630;
-	
-	if ((ch >= 0x0300) && (ch <= 0x0301))
-		return (ch - 137);
-	
-	if (ch == 0x0303)
-		return 633;
-	
-	if (ch == 0x0309)
-		return 634;
-	
-	if ((ch >= 0x0312) && (ch <= 0x0314))
-		return (ch - 151);
-	
-	if (ch == 0x0323)
-		return 638;
-	
-	if ((ch >= 0x0340) && (ch <= 0x0341))
-		return (ch - 193);
-	
-	if ((ch >= 0x0374) && (ch <= 0x0375))
-		return (ch - 243);
-	
-	if (ch == 0x037a)
-		return 643;
-	
-	if (ch == 0x037e)
-		return 644;
-	
-	if ((ch >= 0x0384) && (ch <= 0x038a))
-		return (ch - 255);
-	
-	if (ch == 0x038c)
-		return 652;
-	
-	if ((ch >= 0x038e) && (ch <= 0x03a1))
-		return (ch - 257);
-	
-	if ((ch >= 0x03a3) && (ch <= 0x03ce))
-		return (ch - 258);
-	
-	if ((ch >= 0x03d0) && (ch <= 0x03d7))
-		return (ch - 259);
-	
-	if ((ch >= 0x03da) && (ch <= 0x03f3))
-		return (ch - 261);
-	
-	if ((ch >= 0x0400) && (ch <= 0x0486))
-		return (ch - 273);
-	
-	if ((ch >= 0x0488) && (ch <= 0x04ce))
-		return (ch - 274);
-	
-	if ((ch >= 0x04d0) && (ch <= 0x04f5))
-		return (ch - 275);
-	
-	if ((ch >= 0x04f8) && (ch <= 0x04f9))
-		return (ch - 277);
-	
-	if ((ch >= 0x0500) && (ch <= 0x050f))
-		return (ch - 283);
-	
-	if ((ch >= 0x0530) && (ch <= 0x0556))
-		return (ch - 315);
-	
-	if ((ch >= 0x0559) && (ch <= 0x055f))
-		return (ch - 317);
-	
-	if ((ch >= 0x0561) && (ch <= 0x0587))
-		return (ch - 318);
-	
-	if ((ch >= 0x0589) && (ch <= 0x058a))
-		return (ch - 319);
-	
-	if ((ch >= 0x0591) && (ch <= 0x05a1))
-		return (ch - 325);
-	
-	if ((ch >= 0x05a3) && (ch <= 0x05b9))
-		return (ch - 326);
-	
-	if ((ch >= 0x05bb) && (ch <= 0x05c4))
-		return (ch - 327);
-	
-	if ((ch >= 0x05d0) && (ch <= 0x05ea))
-		return (ch - 338);
-	
-	if ((ch >= 0x05f0) && (ch <= 0x05f4))
-		return (ch - 343);
-	
-	if (ch == 0x060c)
-		return 1182;
-	
-	if (ch == 0x061b)
-		return 1183;
-	
-	if (ch == 0x061f)
-		return 1184;
-	
-	if ((ch >= 0x0621) && (ch <= 0x063a))
-		return (ch - 384);
-	
-	if ((ch >= 0x0640) && (ch <= 0x0655))
-		return (ch - 389);
-	
-	if ((ch >= 0x0660) && (ch <= 0x066d))
-		return (ch - 399);
-	
-	if ((ch >= 0x0670) && (ch <= 0x06ed))
-		return (ch - 401);
-	
-	if ((ch >= 0x06f0) && (ch <= 0x06fe))
-		return (ch - 403);
-	
-	if (ch == 0x10d3)
-		return 1388;
-	
-	if (ch == 0x10d7)
-		return 1389;
-	
-	if (ch == 0x10da)
-		return 1390;
-	
-	if (ch == 0x10dd)
-		return 1391;
-	
-	if (ch == 0x10e6)
-		return 1392;
-	
-	if ((ch >= 0x1e00) && (ch <= 0x1e9b))
-		return (ch - 6287);
-	
-	if ((ch >= 0x1ea0) && (ch <= 0x1ef9))
-		return (ch - 6291);
-	
-	if ((ch >= 0x1f00) && (ch <= 0x1f07))
-		return (ch - 6297);
-	
-	if ((ch >= 0x2000) && (ch <= 0x2027))
-		return (ch - 6545);
-	
-	if ((ch >= 0x2030) && (ch <= 0x2046))
-		return (ch - 6553);
-	
-	if ((ch >= 0x2048) && (ch <= 0x204d))
-		return (ch - 6554);
-	
-	if (ch == 0x2070)
-		return 1716;
-	
-	if ((ch >= 0x2074) && (ch <= 0x208f))
-		return (ch - 6591);
-	
-	if ((ch >= 0x20a0) && (ch <= 0x20af))
-		return (ch - 6607);
-	
-	if ((ch >= 0x2100) && (ch <= 0x213a))
-		return (ch - 6687);
-	
-	if ((ch >= 0x2153) && (ch <= 0x2183))
-		return (ch - 6711);
-	
-	if ((ch >= 0x2190) && (ch <= 0x21f3))
-		return (ch - 6723);
-	
-	if ((ch >= 0x2200) && (ch <= 0x22f1))
-		return (ch - 6735);
-	
-	if (ch == 0x2300)
-		return 2211;
-	
-	if (ch == 0x2302)
-		return 2212;
-	
-	if ((ch >= 0x2308) && (ch <= 0x230b))
-		return (ch - 6755);
-	
-	if (ch == 0x2310)
-		return 2217;
-	
-	if (ch == 0x2318)
-		return 2218;
-	
-	if ((ch >= 0x231a) && (ch <= 0x231b))
-		return (ch - 6767);
-	
-	if ((ch >= 0x2320) && (ch <= 0x2321))
-		return (ch - 6771);
-	
-	if ((ch >= 0x2329) && (ch <= 0x232a))
-		return (ch - 6778);
-	
-	if ((ch >= 0x239b) && (ch <= 0x23bd))
-		return (ch - 6890);
-	
-	if (ch == 0x23ce)
-		return 2260;
-	
-	if ((ch >= 0x2409) && (ch <= 0x240d))
-		return (ch - 6964);
-	
-	if ((ch >= 0x2423) && (ch <= 0x2424))
-		return (ch - 6985);
-	
-	if (ch == 0x2426)
-		return 2268;
-	
-	if ((ch >= 0x2500) && (ch <= 0x2595))
-		return (ch - 7203);
-	
-	if ((ch >= 0x25a0) && (ch <= 0x25f7))
-		return (ch - 7213);
-	
-	if ((ch >= 0x2600) && (ch <= 0x2602))
-		return (ch - 7221);
-	
-	if ((ch >= 0x2605) && (ch <= 0x260d))
-		return (ch - 7223);
-	
-	if ((ch >= 0x2610) && (ch <= 0x2613))
-		return (ch - 7225);
-	
-	if (ch == 0x2620)
-		return 2523;
-	
-	if (ch == 0x2622)
-		return 2524;
-	
-	if (ch == 0x2626)
-		return 2525;
-	
-	if ((ch >= 0x2628) && (ch <= 0x262b))
-		return (ch - 7242);
-	
-	if ((ch >= 0x262e) && (ch <= 0x2637))
-		return (ch - 7244);
-	
-	if ((ch >= 0x2639) && (ch <= 0x2653))
-		return (ch - 7245);
-	
-	if ((ch >= 0x2660) && (ch <= 0x2667))
-		return (ch - 7257);
-	
-	if ((ch >= 0x2669) && (ch <= 0x266f))
-		return (ch - 7258);
-	
-	if ((ch >= 0xfb00) && (ch <= 0xfb05))
-		return (ch - 61674);
-	
-	if ((ch >= 0xfb50) && (ch <= 0xfbb1))
-		return (ch - 61748);
-	
-	if ((ch >= 0xfbd3) && (ch <= 0xfbe9))
-		return (ch - 61781);
-	
-	if ((ch >= 0xfbfc) && (ch <= 0xfbff))
-		return (ch - 61799);
-	
-	if ((ch >= 0xfc5b) && (ch <= 0xfc63))
-		return (ch - 61890);
-	
-	if (ch == 0xfc90)
-		return 2722;
-	
-	if ((ch >= 0xfcf2) && (ch <= 0xfcf4))
-		return (ch - 62031);
-	
-	if ((ch >= 0xfd3c) && (ch <= 0xfd3f))
-		return (ch - 62102);
-	
-	if (ch == 0xfdf2)
-		return 2730;
-	
-	if ((ch >= 0xfe50) && (ch <= 0xfe52))
-		return (ch - 62373);
-	
-	if ((ch >= 0xfe54) && (ch <= 0xfe66))
-		return (ch - 62374);
-	
-	if ((ch >= 0xfe68) && (ch <= 0xfe6b))
-		return (ch - 62375);
-	
-	if ((ch >= 0xfe70) && (ch <= 0xfe72))
-		return (ch - 62379);
-	
-	if (ch == 0xfe74)
-		return 2760;
-	
-	if ((ch >= 0xfe76) && (ch <= 0xfefc))
-		return (ch - 62381);
-	
-	if (ch == 0xfeff)
-		return 2896;
-	
-	return 2898;
-}
-
-uint8_t fb_font[FONT_GLYPHS][FONT_SCANLINES] = {
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x66, 0x66, 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x18, 0x7c, 0xc6, 0xc2, 0xc0, 0x7c, 0x06, 0x06, 0x86, 0xc6, 0x7c, 0x18, 0x18, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xc2, 0xc6, 0x0c, 0x18, 0x30, 0x60, 0xc6, 0x86, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x76, 0xdc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x30, 0x30, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x3c, 0xff, 0x3c, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xd6, 0xd6, 0xc6, 0xc6, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x38, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0x3c, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x1c, 0x3c, 0x6c, 0xcc, 0xfe, 0x0c, 0x0c, 0x0c, 0x1e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xfc, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x60, 0xc0, 0xc0, 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0xc6, 0x06, 0x06, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x06, 0x0c, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x0c, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xde, 0xde, 0xde, 0xdc, 0xc0, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x66, 0x66, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xde, 0xc6, 0xc6, 0x66, 0x3a, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0xde, 0x7c, 0x0c, 0x0e, 0x00, 0x00},
-	{0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c, 0x06, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0xee, 0x6c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0x6c, 0x7c, 0x38, 0x38, 0x7c, 0x6c, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0xc6, 0x86, 0x0c, 0x18, 0x30, 0x60, 0xc2, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00},
-	{0x30, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x78, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x6c, 0x64, 0x60, 0xf0, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78, 0x00},
-	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x06, 0x06, 0x00, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c, 0x00},
-	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0xfe, 0xd6, 0xd6, 0xd6, 0xd6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x0c, 0x1e, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x6c, 0x38, 0x38, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xcc, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0e, 0x18, 0x18, 0x18, 0x70, 0x18, 0x18, 0x18, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x70, 0x18, 0x18, 0x18, 0x0e, 0x18, 0x18, 0x18, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x18, 0x18, 0x3c, 0x66, 0x60, 0x60, 0x60, 0x66, 0x3c, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x38, 0x6c, 0x64, 0x60, 0xf0, 0x60, 0x60, 0x60, 0x60, 0xe6, 0xfc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x66, 0x3c, 0x66, 0x66, 0x66, 0x3c, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18, 0x7e, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x7c, 0xc6, 0x60, 0x38, 0x6c, 0xc6, 0xc6, 0x6c, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x42, 0x99, 0xa5, 0xa1, 0xa1, 0xa5, 0x99, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x3c, 0x6c, 0x6c, 0x3e, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x6c, 0xd8, 0x6c, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x44, 0xba, 0xb2, 0xaa, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x70, 0xd8, 0x30, 0x60, 0xc8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x70, 0xd8, 0x30, 0x18, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xf6, 0xc0, 0xc0, 0xc0, 0x00},
-	{0x00, 0x00, 0x7f, 0xdb, 0xdb, 0xdb, 0x7b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0c, 0x38, 0x00},
-	{0x00, 0x30, 0x70, 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x6c, 0x36, 0x6c, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0xc0, 0xc0, 0xc2, 0xc6, 0xcc, 0x18, 0x30, 0x66, 0xce, 0x9e, 0x3e, 0x06, 0x06, 0x00, 0x00},
-	{0x00, 0xc0, 0xc0, 0xc2, 0xc6, 0xcc, 0x18, 0x30, 0x60, 0xdc, 0x86, 0x0c, 0x18, 0x3e, 0x00, 0x00},
-	{0x00, 0xe0, 0x30, 0x62, 0x36, 0xec, 0x18, 0x30, 0x66, 0xce, 0x9e, 0x3e, 0x06, 0x06, 0x00, 0x00},
-	{0x00, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x60, 0xc0, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x60, 0x30, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x18, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x38, 0x6c, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x76, 0xdc, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x6c, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x38, 0x6c, 0x38, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3e, 0x6c, 0xcc, 0xcc, 0xfe, 0xcc, 0xcc, 0xcc, 0xcc, 0xce, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x18, 0x0c, 0x38, 0x00},
-	{0x30, 0x18, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x18, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x38, 0x44, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x6c, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x30, 0x18, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x18, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x3c, 0x42, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x66, 0x66, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0xf6, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00, 0x00, 0x00, 0x00},
-	{0x76, 0xdc, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x60, 0x30, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x18, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x38, 0x44, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x76, 0xdc, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x3c, 0x18, 0x3c, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7a, 0xc4, 0xce, 0xce, 0xd6, 0xd6, 0xe6, 0xe6, 0x46, 0xbc, 0x00, 0x00, 0x00, 0x00},
-	{0x60, 0x30, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x18, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x38, 0x44, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x6c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x18, 0x00, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xf0, 0x60, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x6c, 0x66, 0x66, 0x66, 0x66, 0xec, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x60, 0x30, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x30, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x10, 0x38, 0x6c, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x76, 0xdc, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x38, 0x6c, 0x38, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x76, 0x36, 0x7e, 0xd8, 0xd8, 0x6e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x18, 0x0c, 0x38, 0x00},
-	{0x00, 0x00, 0x60, 0x30, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x18, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x30, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x10, 0x38, 0x6c, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x66, 0x66, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x76, 0x1c, 0x3c, 0x06, 0x7e, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x76, 0xdc, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x60, 0x30, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x18, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x76, 0xdc, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x7e, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0xc4, 0xce, 0xd6, 0xe6, 0x46, 0xbc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x60, 0x30, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x30, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x10, 0x38, 0x6c, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xcc, 0xcc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x18, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00},
-	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0, 0x00},
-	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00},
-	{0x00, 0x7c, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x7c, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x38, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x38, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x0c, 0x18, 0x0e, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x0c, 0x18, 0x0e, 0x00},
-	{0x0c, 0x18, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x18, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x38, 0x44, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x18, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x30, 0x30, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x38, 0x10, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x6c, 0x38, 0x10, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x38, 0x10, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x38, 0x10, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0xf6, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x3e, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x7c, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x7c, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x38, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x38, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x18, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x30, 0x30, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x18, 0x30, 0x1c, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x30, 0x60, 0x38, 0x00},
-	{0x6c, 0x38, 0x10, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x6c, 0x38, 0x10, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x38, 0x44, 0x3c, 0x66, 0xc2, 0xc0, 0xde, 0xc6, 0xc6, 0x66, 0x3a, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x10, 0x38, 0x6c, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78, 0x00},
-	{0x6c, 0x38, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xde, 0xc6, 0xc6, 0x66, 0x3a, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x38, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78, 0x00},
-	{0x18, 0x18, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xde, 0xc6, 0xc6, 0x66, 0x3a, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x30, 0x30, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xde, 0xc6, 0xc6, 0x66, 0x3a, 0x00, 0x18, 0x18, 0x30},
-	{0x00, 0x18, 0x30, 0x30, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78, 0x00},
-	{0x10, 0x38, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x38, 0x44, 0xe0, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x66, 0xff, 0x66, 0x66, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x60, 0xf8, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x76, 0xdc, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x76, 0xdc, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x7e, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x7e, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x66, 0x3c, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x66, 0x3c, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x18, 0x30, 0x1c, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x18, 0x30, 0x1c, 0x00},
-	{0x18, 0x18, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xf7, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x7b, 0x7b, 0xee, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x66, 0x66, 0x00, 0xee, 0x66, 0x66, 0x66, 0x66, 0x66, 0xf6, 0x06, 0x66, 0x3c, 0x00},
-	{0x08, 0x1c, 0x22, 0x1e, 0x0c, 0x0c, 0x0c, 0x0c, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x04, 0x0e, 0x1b, 0x00, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c, 0x00},
-	{0x00, 0x00, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x18, 0x18, 0x30},
-	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x18, 0x18, 0x30},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x30, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x18, 0x18, 0x30},
-	{0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x18, 0x18, 0x30},
-	{0x6c, 0x38, 0x10, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x38, 0x10, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x66, 0x66, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x70, 0x30, 0x30, 0x30, 0x36, 0x36, 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x78, 0xe0, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x1e, 0x78, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x18, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x18, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x18, 0x18, 0x30},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x18, 0x18, 0x30},
-	{0x6c, 0x38, 0x10, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x6c, 0x38, 0x10, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x60, 0x60, 0xc0, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0xc6, 0x06, 0x06, 0x1c, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x06, 0x06, 0x1c, 0x00},
-	{0x00, 0x7c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x7c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x38, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x38, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x66, 0xcc, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x66, 0xcc, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6e, 0xd8, 0xd8, 0xd8, 0xde, 0xd8, 0xd8, 0xd8, 0xd8, 0x6e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0xd6, 0xd6, 0xde, 0xd8, 0xd8, 0x6e, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x18, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x18, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x18, 0x18, 0x30},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x18, 0x18, 0x30},
-	{0x6c, 0x38, 0x10, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x6c, 0x38, 0x10, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x18, 0x00, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x18, 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x38, 0x44, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0xc6, 0x7c, 0x18, 0x0c, 0x38, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0x7c, 0x18, 0x0c, 0x38, 0x00},
-	{0x6c, 0x38, 0x10, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x6c, 0x38, 0x10, 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x18, 0x0c, 0x38, 0x00},
-	{0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x18, 0x0c, 0x38, 0x00},
-	{0x6c, 0x38, 0x10, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x38, 0x10, 0x10, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x3c, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0xfc, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00},
-	{0x76, 0xdc, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x76, 0xdc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x7c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x78, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x38, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xcc, 0x78, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x38, 0x6c, 0x38, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x38, 0x6c, 0x38, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x66, 0xcc, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x66, 0xcc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x30, 0x60, 0x38, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x30, 0x60, 0x38, 0x00},
-	{0x10, 0x38, 0x44, 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0xee, 0x6c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x10, 0x38, 0x6c, 0x00, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x38, 0x44, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x10, 0x38, 0x6c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00},
-	{0x66, 0x66, 0x00, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x18, 0x00, 0xfe, 0xc6, 0x8c, 0x18, 0x30, 0x60, 0xc2, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x18, 0x00, 0xfe, 0xcc, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x18, 0x00, 0xfe, 0xc6, 0x8c, 0x18, 0x30, 0x60, 0xc2, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x00, 0xfe, 0xcc, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x38, 0x10, 0xfe, 0xc6, 0x8c, 0x18, 0x30, 0x60, 0xc2, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x6c, 0x38, 0x10, 0x00, 0xfe, 0xcc, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x6c, 0x64, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x60, 0xf8, 0x60, 0x78, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7e, 0xb3, 0xb3, 0x33, 0x3e, 0x33, 0x33, 0x33, 0x33, 0x7e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfc, 0x64, 0x60, 0x60, 0x7c, 0x66, 0x66, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7e, 0x62, 0x60, 0x78, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xe6, 0xe6, 0x66, 0x7c, 0x66, 0x66, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x60, 0xe0, 0xe0, 0x78, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x78, 0xcc, 0x86, 0x06, 0x06, 0x06, 0x06, 0x86, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x03, 0x3e, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x03, 0x7e, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0xf6, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xb6, 0xb3, 0x33, 0x33, 0x33, 0x33, 0x33, 0x36, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7e, 0x4c, 0x0c, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0xcc, 0x7e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0x4c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x30, 0x18, 0xcc, 0x78, 0x00},
-	{0x00, 0x00, 0xfe, 0xcc, 0x8c, 0x2c, 0x3c, 0x2c, 0x0c, 0x8c, 0xcc, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0x06, 0xfe, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0xc2, 0xc0, 0x78, 0xc0, 0xc0, 0xc2, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xc0, 0x00},
-	{0x00, 0x00, 0x1c, 0x36, 0x32, 0x30, 0x78, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xe0, 0x00},
-	{0x00, 0x03, 0x3e, 0x66, 0xc2, 0xc0, 0xc0, 0xde, 0xc6, 0xc6, 0x66, 0x3a, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0x6c, 0x6c, 0x6c, 0x38, 0x38, 0x10, 0x38, 0x6c, 0x38, 0x00, 0x00},
-	{0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xf3, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xce, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xe6, 0x6d, 0x6c, 0x78, 0x70, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x6c, 0x60, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc8, 0x38, 0x70, 0xd0, 0x38, 0x38, 0x6c, 0x64, 0xc6, 0xc2, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xfe, 0xec, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x66, 0x66, 0x76, 0x7e, 0x7e, 0x6e, 0x66, 0x66, 0x66, 0x66, 0x60, 0x60, 0xc0, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x06, 0x06, 0x06, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x03, 0x03, 0x7a, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x03, 0x03, 0x06, 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x73, 0xdf, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0x73, 0x03, 0x03, 0x03, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0xdf, 0xdb, 0xdb, 0xdb, 0xdb, 0x73, 0x03, 0x03, 0x03, 0x00},
-	{0x00, 0x00, 0x7e, 0xb3, 0xb3, 0x33, 0x3e, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x6c, 0x60, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0, 0x00},
-	{0x00, 0x00, 0xf0, 0x60, 0x7c, 0x66, 0x66, 0x7c, 0x78, 0x6c, 0x6c, 0xe6, 0x06, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x0c, 0x38, 0x60, 0xc0, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x0c, 0x38, 0x60, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0xc6, 0x62, 0x30, 0x18, 0x18, 0x30, 0x62, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x70, 0xd8, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1b, 0x0e, 0x00},
-	{0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x0c, 0x6c, 0x38, 0x00},
-	{0x00, 0x00, 0x7e, 0xfe, 0x9a, 0x58, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x1c, 0x36, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0e, 0x00},
-	{0x03, 0x03, 0xce, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x03, 0x03, 0x06, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xee, 0x6c, 0x6c, 0x6c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xcc, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x63, 0xb3, 0xb3, 0x33, 0x1e, 0x0c, 0x0c, 0x0c, 0x0c, 0x1e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x06, 0x0d, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x18, 0xf0, 0x00},
-	{0x00, 0x00, 0xfe, 0xc6, 0x86, 0x0c, 0x7e, 0x30, 0x60, 0xc2, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xcc, 0x18, 0xfc, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0x06, 0x0c, 0x18, 0x30, 0x7c, 0x06, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0xc0, 0x60, 0x30, 0x18, 0x7c, 0xc0, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc0, 0x60, 0x30, 0x78, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0x0c, 0x18, 0x3c, 0x06, 0x7c, 0xc0, 0xc6, 0x7c, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0x06, 0x0c, 0x7e, 0x30, 0x60, 0xc0, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0x60, 0x60, 0x78, 0x0c, 0x06, 0x06, 0x06, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x60, 0x78, 0x0c, 0x06, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x18, 0x4c, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x6c, 0x78, 0x70, 0x60, 0x60, 0xf0, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x18, 0x7e, 0x18, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x1b, 0x0e, 0x04, 0xf7, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xdc, 0xdc, 0xf7, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xf5, 0xda, 0xd8, 0xdf, 0xd9, 0xda, 0xda, 0xda, 0xdc, 0xf7, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3d, 0x1a, 0x18, 0x7f, 0xd9, 0xda, 0xda, 0xda, 0xdc, 0x6f, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc7, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xcb, 0xf6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xf3, 0x63, 0x60, 0x67, 0x63, 0x63, 0x63, 0x67, 0x6f, 0xff, 0x03, 0x1b, 0x0e, 0x00},
-	{0x00, 0x00, 0xe3, 0x63, 0x60, 0x67, 0x63, 0x63, 0x63, 0x63, 0x63, 0xf3, 0x03, 0x33, 0x1e, 0x00},
-	{0x00, 0x00, 0xdb, 0xdb, 0xfb, 0xfb, 0xfb, 0xdb, 0xdb, 0xdb, 0xdb, 0xde, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xdb, 0xdb, 0xf8, 0xff, 0xfb, 0xfb, 0xdb, 0xdb, 0xdb, 0xdb, 0x03, 0x33, 0x1e, 0x00},
-	{0x00, 0x00, 0x03, 0x03, 0x00, 0xb7, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0x03, 0x33, 0x1e, 0x00},
-	{0x6c, 0x38, 0x10, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x6c, 0x38, 0x10, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x38, 0x10, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x6c, 0x38, 0x10, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x38, 0x10, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x6c, 0x38, 0x10, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x38, 0x10, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x6c, 0x38, 0x10, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x7c, 0x00, 0x6c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x78, 0x00, 0xcc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x08, 0x10, 0x6c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x30, 0x00, 0xcc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x28, 0x10, 0x6c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x78, 0x30, 0x00, 0xcc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x20, 0x10, 0x6c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x60, 0x30, 0x00, 0xcc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0xfe, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x7c, 0x00, 0x6c, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x7c, 0x00, 0x6c, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x7c, 0x30, 0x30, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x7c, 0x00, 0x30, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x7c, 0x00, 0x3e, 0x6c, 0xcc, 0xcc, 0xfe, 0xcc, 0xcc, 0xcc, 0xce, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x7c, 0x00, 0xcc, 0x76, 0x36, 0x7e, 0xd8, 0xd8, 0x6e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xde, 0xc6, 0xdf, 0x66, 0x3a, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x3e, 0xcc, 0x78, 0x00},
-	{0x6c, 0x38, 0x10, 0x3c, 0x66, 0xc2, 0xc0, 0xde, 0xc6, 0xc6, 0x66, 0x3a, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x6c, 0x38, 0x10, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78, 0x00},
-	{0x6c, 0x38, 0x10, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x38, 0x10, 0xe0, 0x60, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x30, 0x60, 0x38, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x30, 0x60, 0x38, 0x00},
-	{0x00, 0x7c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x30, 0x60, 0x38, 0x00},
-	{0x00, 0x00, 0x00, 0x7c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x30, 0x60, 0x38, 0x00},
-	{0x6c, 0x38, 0x10, 0xfe, 0x0c, 0x18, 0x30, 0x7c, 0x06, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00},
-	{0x00, 0x6c, 0x38, 0x10, 0x00, 0xfe, 0x06, 0x0c, 0x18, 0x3c, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00},
-	{0x00, 0x1b, 0x0e, 0x04, 0x00, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c, 0x00},
-	{0x00, 0x00, 0xf7, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xdc, 0xdc, 0xf7, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xf0, 0xd8, 0xd8, 0xdf, 0xd9, 0xda, 0xda, 0xda, 0xdc, 0xf7, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x18, 0x18, 0x7f, 0xd9, 0xda, 0xda, 0xda, 0xdc, 0x6f, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x18, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xde, 0xc6, 0xc6, 0x66, 0x3a, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x30, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78, 0x00},
-	{0x00, 0x00, 0xd8, 0xd8, 0xd8, 0xdb, 0xfb, 0xdb, 0xdb, 0xdb, 0xdb, 0xce, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x66, 0x6c, 0x78, 0x70, 0x60, 0x60, 0x60, 0x60, 0xe0, 0x00},
-	{0x60, 0x30, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x30, 0x18, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x18, 0x38, 0x6c, 0x38, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x18, 0x38, 0x6c, 0x38, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x18, 0x00, 0x3e, 0x6c, 0xcc, 0xcc, 0xfe, 0xcc, 0xcc, 0xcc, 0xce, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x18, 0x00, 0xcc, 0x76, 0x36, 0x7e, 0xd8, 0xd8, 0x6e, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x18, 0x00, 0x7a, 0xc4, 0xce, 0xce, 0xd6, 0xe6, 0xe6, 0x46, 0xbc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x18, 0x00, 0x7a, 0xc4, 0xce, 0xd6, 0xe6, 0x46, 0xbc, 0x00, 0x00, 0x00, 0x00},
-	{0xcc, 0x66, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xcc, 0x66, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x38, 0x6c, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x6c, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0xcc, 0x66, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xcc, 0x66, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x38, 0x6c, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0xcc, 0x66, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xcc, 0x66, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x3c, 0x66, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0xcc, 0x66, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xcc, 0x66, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0xcc, 0x66, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xcc, 0x66, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
-	{0x38, 0x6c, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x6c, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
-	{0xcc, 0x66, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xcc, 0x66, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x38, 0x6c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x78, 0xcc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c, 0x06, 0xc6, 0xc6, 0x7c, 0x00, 0x18, 0x18, 0x30},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x18, 0x18, 0x30},
-	{0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x18, 0x18, 0x30},
-	{0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x18, 0x18, 0x30},
-	{0x00, 0x00, 0x7c, 0xc6, 0x86, 0x06, 0x1c, 0x74, 0x06, 0x06, 0x06, 0x06, 0x1c, 0xf0, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x0e, 0x3c, 0x06, 0x06, 0x1c, 0xf0, 0x00, 0x00},
-	{0x6c, 0x38, 0x10, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x38, 0x10, 0xe0, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0xc6, 0xc6, 0xc6, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x24, 0x66, 0x66, 0x66, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0xc6, 0x86, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0xc0, 0xfc, 0x06, 0x0c, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xcc, 0x18, 0x30, 0x60, 0xc0, 0xfc, 0x06, 0x0c, 0x00, 0x00},
-	{0x30, 0x30, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x30, 0x30, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x62, 0x66, 0xfe, 0x18, 0x0c, 0x38, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x18, 0x0c, 0x38, 0x00},
-	{0x7c, 0x00, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x7c, 0x00, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x7c, 0x00, 0x72, 0x9c, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x7c, 0x00, 0x76, 0xdc, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x30, 0x30, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x30, 0x30, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x7c, 0x00, 0x30, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x7c, 0x00, 0x30, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x3c, 0x00, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x7c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x5c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x6c, 0x60, 0x78, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xdc, 0xe6, 0x7c, 0x80, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x0d, 0x06, 0x00},
-	{0x00, 0x00, 0x06, 0x0d, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0xfe, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x6c, 0x8e, 0x16, 0x26, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0x78, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x3c, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0xcd, 0x0d, 0x38, 0x0c, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xdc, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x06, 0x06, 0x1f, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c, 0x00},
-	{0x00, 0x00, 0x00, 0x06, 0x0d, 0x7c, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xce, 0xc6, 0xc6, 0x7a, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x46, 0x6c, 0x2c, 0x2c, 0x38, 0x18, 0x18, 0x18, 0x18, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x64, 0x28, 0x38, 0x38, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xce, 0xcc, 0xcc, 0xcc, 0xcc, 0xdc, 0x6c, 0x0c, 0x0c, 0x0e, 0x00},
-	{0x00, 0x00, 0x38, 0x6c, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x6c, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x06, 0x06, 0x1c, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, 0x3c, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x7b, 0xde, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x78, 0x58, 0x3e, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1b, 0x0e, 0x00},
-	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x7f, 0x63, 0x66, 0x6c, 0x7e, 0x63, 0xf3, 0x03, 0x33, 0x1e, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xd6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xd6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6e, 0x06, 0x06, 0x06, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0xfe, 0xd6, 0xd6, 0xd6, 0xd6, 0xc6, 0x06, 0x06, 0x1c, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x60, 0x60, 0xc0, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x06, 0x06, 0x03, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0xd8, 0xd8, 0xde, 0xd8, 0xd8, 0x6e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0xc6, 0xd6, 0xd6, 0xd6, 0xd6, 0x6c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x10, 0x10, 0x7c, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x7c, 0x10, 0x10, 0x10, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0c, 0xcc, 0xdc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xcc, 0xdc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0c, 0xcc, 0xdc, 0x6c, 0x0c, 0x0d, 0x06, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0x60, 0x60, 0x60, 0x6c, 0x38, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x66, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xcc, 0xcc, 0x0c, 0x0c, 0x0c, 0x1e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0x66, 0x6c, 0x7c, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0xfc, 0xc0, 0xd8, 0x70, 0x00},
-	{0x00, 0x00, 0x0e, 0x1b, 0x19, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x98, 0xd8, 0x70, 0x00},
-	{0x00, 0x00, 0x0e, 0x1b, 0x19, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x98, 0xd8, 0x70, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x70, 0xd8, 0x18, 0x18, 0x18, 0x18, 0x1b, 0x0e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x0e, 0x1b, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0xd8, 0x70, 0x00},
-	{0x00, 0x00, 0x70, 0xd8, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0xff, 0x66, 0x66, 0x3b, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0x6c, 0x6c, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0xfe, 0xd6, 0xd6, 0xd6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3e, 0x60, 0xc0, 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xcc, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x06, 0x06, 0x03, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xcc, 0x18, 0x30, 0x66, 0xcb, 0xfe, 0x10, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0x0c, 0x18, 0x3c, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0x0c, 0x18, 0x3c, 0x06, 0x06, 0x7e, 0xc7, 0x7c, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x06, 0x1c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc0, 0x70, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x1c, 0x06, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0xc3, 0xc3, 0xdb, 0xdb, 0xc3, 0xc3, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x66, 0x66, 0x7c, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x76, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x03, 0x7e, 0xc6, 0xc0, 0xce, 0xc6, 0xc6, 0x7a, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x0c, 0x00, 0x1c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x7e, 0xcc, 0x78, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xce, 0xcc, 0x6c, 0x3c, 0x3c, 0x6c, 0xcc, 0x0c, 0x0c, 0x0e, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x06, 0x0d, 0x7c, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x0c, 0x1e, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x06, 0x1c, 0x18, 0x7e, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc0, 0x70, 0x30, 0xfc, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x18, 0x18, 0x7f, 0xd9, 0xda, 0xda, 0xda, 0xdc, 0x6f, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x18, 0x18, 0x7f, 0xdb, 0xdb, 0xde, 0xde, 0xdb, 0x6b, 0x03, 0x1b, 0x0e, 0x00},
-	{0x00, 0x00, 0x38, 0x18, 0x18, 0x7f, 0xd9, 0xda, 0xda, 0xdb, 0xdd, 0x6f, 0x04, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x20, 0x60, 0x60, 0xf6, 0x6d, 0x6c, 0x66, 0x63, 0x6b, 0x36, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x26, 0x6d, 0x6c, 0xfc, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x3c, 0x0c, 0x2c, 0x18, 0x00},
-	{0x00, 0x00, 0x20, 0x60, 0x60, 0xf6, 0x6d, 0x6c, 0x6c, 0x6e, 0x6d, 0x36, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x70, 0xd8, 0xc0, 0xfe, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0x03, 0x03, 0x0e, 0x00},
-	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x66, 0x6d, 0x6c, 0x66, 0x63, 0x6b, 0xf6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x6f, 0x6b, 0x63, 0x66, 0x6c, 0x6d, 0xff, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xd6, 0x7c, 0x6c, 0x28, 0xc6, 0xd6, 0x7c, 0x6c, 0x28, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0xc0, 0xc0, 0xf0, 0xd8, 0xd8, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x70, 0xc0, 0xf0, 0xd8, 0xd8, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x18, 0x00, 0x38, 0x18, 0x18, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xb0, 0xd8, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x18, 0x18, 0xd8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x18, 0x18, 0xd8, 0x68, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0xd8, 0xd8, 0xf0, 0xd8, 0xd8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xc6, 0xd6, 0x7c, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xd8, 0xd8, 0x78, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x36, 0x6c, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x18, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x30, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x18, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x30, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x70, 0xd8, 0x18, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x70, 0xd8, 0xc0, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x70, 0xc0, 0x70, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc0, 0x70, 0x18, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x20, 0x20, 0x70, 0x70, 0xd8, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0xd8, 0xd8, 0x70, 0x70, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x10, 0x38, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x6c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0c, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0x00},
-	{0x00, 0x00, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x38, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x30, 0x1c, 0x00},
-	{0x00, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x66, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x6c, 0x6c, 0x6c, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x34, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x70, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x18, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x30, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00},
-	{0xc0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x30, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x60, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x34, 0x18, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00},
-	{0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x18, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x60, 0xc0, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x60, 0xc0, 0x3e, 0x32, 0x30, 0x34, 0x3c, 0x34, 0x30, 0x30, 0x32, 0x3e, 0x00, 0x00, 0x00, 0x00},
-	{0x60, 0xc0, 0x33, 0x33, 0x33, 0x33, 0x3f, 0x33, 0x33, 0x33, 0x33, 0x33, 0x00, 0x00, 0x00, 0x00},
-	{0x60, 0xc0, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x60, 0xc0, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x60, 0xc0, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x60, 0xc0, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x36, 0x36, 0x36, 0x77, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x18, 0x00, 0x6c, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x66, 0x66, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0x66, 0x62, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x10, 0x38, 0x38, 0x6c, 0x6c, 0xc6, 0xc6, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0xc6, 0x86, 0x0c, 0x18, 0x30, 0x60, 0xc2, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x10, 0x38, 0x38, 0x6c, 0x6c, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0xc6, 0x82, 0x44, 0x7c, 0x44, 0x00, 0x82, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0xc6, 0x62, 0x30, 0x18, 0x18, 0x30, 0x62, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x7c, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x7c, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0x6c, 0x7c, 0x38, 0x38, 0x7c, 0x6c, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x92, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x7c, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x6c, 0x6c, 0x6c, 0xee, 0x00, 0x00, 0x00, 0x00},
-	{0x66, 0x66, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x66, 0x66, 0x00, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x18, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x18, 0x00, 0x7c, 0xc6, 0xc0, 0x78, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x18, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x06, 0x06, 0x06, 0x00},
-	{0x00, 0x00, 0x0c, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x18, 0x00, 0x6c, 0x00, 0xcc, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x6c, 0x60, 0x60, 0x60, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x46, 0x6c, 0x2c, 0x2c, 0x38, 0x18, 0x18, 0x18, 0x18, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0x30, 0x18, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0x78, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x46, 0x7c, 0x18, 0x30, 0x60, 0x60, 0xc0, 0xc0, 0xc0, 0x7c, 0x06, 0x06, 0x1c, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x06, 0x06, 0x06, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc0, 0x20, 0x30, 0x10, 0x38, 0x38, 0x6c, 0x64, 0xc6, 0xc2, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xf6, 0xc0, 0xc0, 0xc0, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0x66, 0x6c, 0x3c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x66, 0x3c, 0x30, 0x60, 0x3c, 0x60, 0xc0, 0xc0, 0xc0, 0x7c, 0x06, 0x06, 0x1c, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x66, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0x60, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0x7c, 0x06, 0x06, 0x1c, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x7c, 0x10, 0x10, 0x10, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x46, 0x2c, 0x2c, 0x18, 0x30, 0x68, 0x68, 0xc4, 0xc2, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x7c, 0x10, 0x10, 0x10, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0xc6, 0xd6, 0xd6, 0xd6, 0xd6, 0x6c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x66, 0x66, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0xcc, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x18, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x18, 0x00, 0xcc, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x18, 0x00, 0x6c, 0xc6, 0xd6, 0xd6, 0xd6, 0xd6, 0x6c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x6c, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x36, 0x1e, 0xc6, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc2, 0x65, 0x24, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x60, 0xc0, 0x21, 0x32, 0x12, 0x1c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x1e, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x6c, 0x00, 0xc2, 0x65, 0x24, 0x38, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x10, 0x10, 0x7c, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x7c, 0x10, 0x10, 0x10, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x6c, 0xc6, 0xd6, 0xd6, 0xd6, 0x6c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xa6, 0x2c, 0x38, 0x68, 0xca, 0xc4, 0x0c, 0x18, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc0, 0x60, 0x3c, 0x06, 0x06, 0x1c, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x7c, 0x06, 0x06, 0x1c, 0x00},
-	{0x00, 0x00, 0xfe, 0x66, 0x62, 0x60, 0x78, 0x68, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x32, 0x30, 0x30, 0x3c, 0x34, 0x30, 0x30, 0x30, 0x30, 0x00},
-	{0x00, 0x60, 0x30, 0x30, 0x60, 0x63, 0xff, 0xc6, 0x06, 0x0c, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x30, 0x30, 0x60, 0x60, 0xfe, 0xfe, 0x0c, 0x0c, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x78, 0xac, 0x26, 0x26, 0x0b, 0x0b, 0x1b, 0x1b, 0x1b, 0x1b, 0x03, 0x02, 0x04, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x30, 0x18, 0x28, 0x4c, 0x14, 0x24, 0x06, 0x02, 0x02, 0x00},
-	{0x00, 0x00, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0x6d, 0x03, 0x3e, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0x6d, 0x03, 0x7e, 0x00, 0x00},
-	{0x00, 0x00, 0x76, 0xd6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x36, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x06, 0x76, 0x9c, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x08, 0x7c, 0xd6, 0x66, 0x06, 0x06, 0x66, 0xbc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x06, 0x3c, 0x60, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x26, 0x1c, 0x70, 0xc0, 0xc2, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0x68, 0x38, 0x30, 0x38, 0x38, 0x4c, 0x4c, 0x86, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0xba, 0x30, 0x38, 0x28, 0x4c, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7e, 0xc0, 0xcc, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xc0, 0xdc, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x18, 0x7e, 0x99, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x1c, 0x18, 0x7e, 0x58, 0x18, 0x18, 0x18, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xa6, 0x2c, 0x38, 0x68, 0xca, 0xc4, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xfc, 0xc0, 0x60, 0x3c, 0x06, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x06, 0x06, 0x00, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c, 0x00},
-	{0x30, 0x18, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x6c, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0xb2, 0x30, 0x3e, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x03, 0x06, 0x00, 0x00},
-	{0x0c, 0x18, 0x00, 0xfe, 0x66, 0x62, 0x60, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xf8, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c, 0x06, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x66, 0x66, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x78, 0xd8, 0xd8, 0xd8, 0xde, 0xdb, 0xdb, 0xdb, 0xdb, 0xde, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xd8, 0xd8, 0xd8, 0xd8, 0xfe, 0xdb, 0xdb, 0xdb, 0xdb, 0xde, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0xb2, 0x30, 0x3e, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x18, 0x00, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x30, 0x18, 0x00, 0xc6, 0xc6, 0xce, 0xde, 0xfe, 0xf6, 0xe6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x38, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0x38, 0x10, 0x10, 0x00},
-	{0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0x66, 0x62, 0x60, 0x7c, 0x66, 0x66, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x66, 0x66, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0x66, 0x62, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xfe, 0xc6, 0x82, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xd6, 0xd6, 0xd6, 0x7c, 0x38, 0x7c, 0xd6, 0xd6, 0xd6, 0xd6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0x86, 0x06, 0x3c, 0x06, 0x06, 0x86, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xce, 0xde, 0xfe, 0xf6, 0xe6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x38, 0xc6, 0xc6, 0xc6, 0xce, 0xde, 0xfe, 0xf6, 0xe6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x7c, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x7c, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0x6c, 0x7c, 0x38, 0x38, 0x7c, 0x6c, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xfe, 0x06, 0x02, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xff, 0x03, 0x01, 0x00, 0x00},
-	{0x00, 0x00, 0xf8, 0xb0, 0xb0, 0x30, 0x3c, 0x36, 0x36, 0x36, 0x36, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xf3, 0xdb, 0xdb, 0xdb, 0xdb, 0xf3, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x7c, 0x66, 0x66, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x78, 0xcc, 0x86, 0x06, 0x3e, 0x06, 0x06, 0x86, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x9c, 0xb6, 0xb6, 0xb6, 0xf6, 0xb6, 0xb6, 0xb6, 0xb6, 0x9c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7e, 0xcc, 0xcc, 0xcc, 0x7c, 0x6c, 0x6c, 0x6c, 0x6c, 0xce, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x06, 0x7c, 0xc0, 0xc0, 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x66, 0x66, 0x7c, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x66, 0x62, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xfe, 0xc6, 0x82, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, 0xd6, 0xd6, 0x7c, 0xd6, 0xd6, 0xd6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x3c, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xce, 0xde, 0xfe, 0xf6, 0xe6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x38, 0x00, 0xc6, 0xce, 0xde, 0xfe, 0xf6, 0xe6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x66, 0x66, 0x66, 0x66, 0x66, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x10, 0x7c, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x7c, 0x10, 0x10, 0x10, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x6c, 0x38, 0x38, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xfe, 0x06, 0x02, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xff, 0x03, 0x01, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xb0, 0x30, 0x3c, 0x36, 0x36, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xf3, 0xdb, 0xdb, 0xf3, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0x60, 0x7c, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x3e, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0xb6, 0xb6, 0xf6, 0xb6, 0xb6, 0x9c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xcc, 0xcc, 0x7c, 0x6c, 0x6c, 0xce, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x60, 0x30, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x60, 0xf8, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x06, 0x06, 0x1c, 0x00},
-	{0x00, 0x00, 0x0c, 0x18, 0x00, 0xfe, 0x66, 0x62, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xf8, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x66, 0x66, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x06, 0x06, 0x00, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xd8, 0xd8, 0xde, 0xdb, 0xdb, 0xde, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0xd8, 0xd8, 0xfe, 0xdb, 0xdb, 0xde, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x60, 0xf8, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x18, 0x00, 0xe6, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x60, 0x30, 0x00, 0xc6, 0xce, 0xde, 0xfe, 0xf6, 0xe6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x38, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0x38, 0x10, 0x10, 0x00},
-	{0x00, 0x00, 0x6c, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x30, 0xfc, 0xb4, 0x30, 0x3c, 0x36, 0x36, 0x36, 0x36, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x30, 0x30, 0x30, 0xfc, 0xb4, 0x30, 0x3c, 0x36, 0x36, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xce, 0xdb, 0xd9, 0xd8, 0xfe, 0xd8, 0xd8, 0xd9, 0xdb, 0xce, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xce, 0xdb, 0xd8, 0xfe, 0xd8, 0xdb, 0xce, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x38, 0x38, 0x6c, 0x6c, 0x6c, 0xfe, 0xd6, 0xd6, 0xd6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x38, 0x6c, 0x7c, 0xd6, 0xd6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x88, 0x8c, 0x9c, 0x96, 0xf6, 0xb6, 0xbf, 0xab, 0xeb, 0xeb, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x8c, 0x9c, 0xf6, 0xbe, 0xab, 0xeb, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0xc6, 0x6c, 0x6c, 0x38, 0x7c, 0xd6, 0xd6, 0xd6, 0xd6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc6, 0x6c, 0x7c, 0xd6, 0xd6, 0xd6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xff, 0xa3, 0xb2, 0x96, 0xfc, 0x9c, 0xbe, 0xaa, 0xab, 0xeb, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0xa3, 0x96, 0xfe, 0xab, 0xab, 0xeb, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x38, 0x10, 0x7c, 0xc6, 0x06, 0x06, 0x7c, 0x06, 0x06, 0x06, 0x7c, 0xc0, 0x7c, 0x00, 0x00},
-	{0x00, 0x6c, 0x38, 0x10, 0x00, 0x7c, 0x86, 0x06, 0x7c, 0x06, 0x06, 0x7c, 0xc0, 0x7c, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x96, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x7c, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x10, 0x10, 0x96, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x7c, 0x10, 0x10, 0x10, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc2, 0xc6, 0xc6, 0xc4, 0xcc, 0x6c, 0x68, 0x78, 0x38, 0x30, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0xc6, 0x64, 0x6c, 0x38, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0xcc, 0x66, 0x00, 0xc2, 0xc6, 0xc4, 0xc4, 0x6c, 0x68, 0x78, 0x38, 0x30, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xcc, 0x66, 0x00, 0xc2, 0xc6, 0x64, 0x6c, 0x38, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x70, 0xd8, 0xd8, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0x6f, 0x03, 0x06, 0x1c, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0x6f, 0x03, 0x06, 0x1c, 0x00},
-	{0x00, 0x10, 0x7c, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0x7c, 0x10, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x10, 0x7c, 0xd6, 0xc6, 0xc6, 0xc6, 0xd6, 0x7c, 0x10, 0x00, 0x00, 0x00},
-	{0x04, 0x7c, 0x40, 0x6c, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x04, 0x7c, 0x40, 0x00, 0x6c, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0x00},
-	{0x7c, 0x54, 0x00, 0x6c, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0x54, 0x00, 0x6c, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x60, 0x3c, 0x0c, 0x0c, 0x0c, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc0, 0x78, 0x18, 0x18, 0x00, 0x00},
-	{0x00, 0x00, 0x06, 0x06, 0x3c, 0x0f, 0x18, 0x18, 0xf0, 0x3c, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x04, 0x7c, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x18, 0x24, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x40, 0x7c, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x04, 0x7c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x18, 0x66, 0x00, 0xc3, 0x00, 0x66, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x08, 0x50, 0x46, 0x00, 0x82, 0x41, 0x00, 0x62, 0x0a, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x38, 0xc6, 0xc6, 0xc6, 0xce, 0xde, 0xfe, 0xf6, 0xe6, 0xc6, 0xc7, 0x03, 0x01, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x38, 0x00, 0xc6, 0xce, 0xde, 0xfe, 0xf6, 0xe6, 0xc7, 0x03, 0x01, 0x00, 0x00},
-	{0x00, 0x60, 0xf0, 0x60, 0x60, 0x60, 0x7c, 0x66, 0x66, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x60, 0xf0, 0x60, 0x60, 0x7c, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfc, 0x66, 0x6e, 0x64, 0x7a, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x6e, 0x64, 0x7a, 0x60, 0x60, 0xf0, 0x00},
-	{0x02, 0x06, 0xfe, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x02, 0x06, 0xfe, 0x60, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0x66, 0x62, 0x60, 0xf8, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x66, 0x62, 0xf8, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0x66, 0x62, 0x60, 0x7c, 0x66, 0x66, 0x66, 0x66, 0xf6, 0x06, 0x16, 0x0c, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x66, 0x62, 0x78, 0x6c, 0x66, 0xf6, 0x06, 0x16, 0x0c, 0x00},
-	{0x00, 0x00, 0xd6, 0xd6, 0xd6, 0x7c, 0x38, 0x7c, 0xd6, 0xd6, 0xd6, 0xd7, 0x03, 0x01, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, 0xd6, 0xd6, 0x7c, 0xd6, 0xd6, 0xd7, 0x03, 0x01, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0x86, 0x06, 0x3c, 0x06, 0x06, 0x86, 0xc6, 0x7c, 0x30, 0x60, 0x38, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x3c, 0x06, 0xc6, 0x7c, 0x30, 0x60, 0x38, 0x00},
-	{0x00, 0x00, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0x66, 0xe7, 0x03, 0x01, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe7, 0x03, 0x01, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xd6, 0xd6, 0xdc, 0xf8, 0xdc, 0xd6, 0xd6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xd6, 0xdc, 0xf8, 0xdc, 0xd6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xe6, 0x66, 0xf6, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xe0, 0x60, 0xf0, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xf3, 0xb3, 0xb3, 0x36, 0x3c, 0x3c, 0x36, 0x33, 0x33, 0x73, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0xb6, 0xbc, 0x3c, 0x36, 0x33, 0x73, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0x03, 0x01, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc7, 0x03, 0x01, 0x00, 0x00},
-	{0x00, 0x00, 0xdf, 0xdb, 0xd9, 0xd8, 0xf8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, 0xdb, 0xd9, 0xf8, 0xd8, 0xd8, 0xd8, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xf8, 0xd8, 0xd8, 0xd8, 0xde, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0x03, 0x0b, 0x06, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0xd8, 0xd8, 0xfe, 0xdb, 0xdb, 0xdb, 0x03, 0x0b, 0x06, 0x00},
-	{0x00, 0x00, 0x7c, 0xc2, 0xcc, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xcc, 0x7a, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc2, 0xcc, 0xd6, 0xd6, 0xcc, 0x7a, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x18, 0x0c, 0x38, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x18, 0x0c, 0x38, 0x00},
-	{0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x0c, 0x04, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x0c, 0x04, 0x00, 0x00},
-	{0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x3c, 0x00},
-	{0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18, 0x3c, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0x6c, 0x7c, 0x38, 0x38, 0x7c, 0x6c, 0xc6, 0xc7, 0x03, 0x01, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x6c, 0x38, 0x38, 0x38, 0x6c, 0xc7, 0x03, 0x01, 0x00, 0x00},
-	{0x00, 0x00, 0xf6, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7f, 0x03, 0x01, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7f, 0x03, 0x01, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, 0x7e, 0x16, 0x16, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xd6, 0xd6, 0x7e, 0x16, 0x16, 0x06, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xfc, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x1e, 0x33, 0xb3, 0xb3, 0x7f, 0x30, 0x30, 0x30, 0x33, 0x1e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x9e, 0xb3, 0x7f, 0x30, 0x30, 0x33, 0x1e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x1e, 0x33, 0xb3, 0xb3, 0x7f, 0x30, 0x30, 0x30, 0x33, 0x1e, 0x0c, 0x18, 0x0e, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x9e, 0xb3, 0x7f, 0x30, 0x30, 0x33, 0x1e, 0x0c, 0x18, 0x0e, 0x00},
-	{0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x38, 0xd6, 0xd6, 0xd6, 0x7c, 0x38, 0x7c, 0xd6, 0xd6, 0xd6, 0xd6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x38, 0x00, 0xd6, 0xd6, 0xd6, 0x7c, 0xd6, 0xd6, 0xd6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x06, 0x16, 0x0c, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x06, 0x16, 0x0c, 0x00},
-	{0x00, 0x00, 0x3e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xc7, 0x03, 0x01, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x66, 0x66, 0x66, 0x66, 0x66, 0xc7, 0x03, 0x01, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x06, 0x16, 0x0c, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x06, 0x16, 0x0c, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0x03, 0x01, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc7, 0x03, 0x01, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x06, 0x0e, 0x0c, 0x08, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x0e, 0x0c, 0x08, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0x03, 0x01, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc7, 0x03, 0x01, 0x00, 0x00},
-	{0x6c, 0x38, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x38, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x6c, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3e, 0x6c, 0xcc, 0xcc, 0xfe, 0xcc, 0xcc, 0xcc, 0xcc, 0xce, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x76, 0x36, 0x7e, 0xd8, 0xd8, 0x6e, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x38, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x38, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0x06, 0xfe, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0xfe, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x6c, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0xfe, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0xfe, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x6c, 0x00, 0xd6, 0xd6, 0xd6, 0x7c, 0x38, 0x7c, 0xd6, 0xd6, 0xd6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0xd6, 0xd6, 0xd6, 0x7c, 0xd6, 0xd6, 0xd6, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x6c, 0x00, 0x7c, 0xc6, 0x86, 0x06, 0x3c, 0x06, 0x86, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0x7c, 0xc6, 0x06, 0x3c, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0x06, 0x0c, 0x18, 0x3c, 0x06, 0x06, 0x86, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0x0c, 0x18, 0x3c, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00},
-	{0x00, 0x7c, 0x00, 0xc6, 0xc6, 0xce, 0xde, 0xfe, 0xf6, 0xe6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x7c, 0x00, 0xc6, 0xce, 0xde, 0xfe, 0xf6, 0xe6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x6c, 0x00, 0xc6, 0xc6, 0xce, 0xde, 0xfe, 0xf6, 0xe6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0xc6, 0xce, 0xde, 0xfe, 0xf6, 0xe6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x6c, 0x00, 0x78, 0xcc, 0x86, 0x06, 0x3e, 0x06, 0x86, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0x7c, 0xc6, 0x06, 0x3e, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x7c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x7c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00},
-	{0x6c, 0x6c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00},
-	{0x66, 0xcc, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x66, 0xcc, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00},
-	{0x6c, 0x6c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x6c, 0x00, 0xc3, 0xc3, 0xc3, 0xf3, 0xdb, 0xdb, 0xdb, 0xdb, 0xf3, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0xc3, 0xc3, 0xc3, 0xf3, 0xdb, 0xdb, 0xf3, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0xcc, 0x7e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0c, 0x7c, 0xcd, 0xcd, 0xcd, 0xcd, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcd, 0xcd, 0xcd, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x78, 0xcc, 0x8c, 0x0c, 0x38, 0x0d, 0x0d, 0x0d, 0x0d, 0x06, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xcc, 0x0c, 0x39, 0x0d, 0x0d, 0x06, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0x86, 0x06, 0x3c, 0x06, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x3c, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6d, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xfc, 0xcd, 0xcd, 0xcd, 0xcd, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xfd, 0xcd, 0xcd, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xce, 0xc6, 0xc6, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xce, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x1b, 0x1b, 0x1b, 0x1b, 0x0e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x5a, 0x18, 0x1b, 0x1b, 0x1b, 0x0e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x18, 0x64, 0x94, 0xba, 0x52, 0x4c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcf, 0x7b, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x60, 0x60, 0x7e, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0x7f, 0x0c, 0x0c, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0xcf, 0x0c, 0x0c, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x60, 0x7e, 0x60, 0x60, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x06, 0x0c, 0xd8, 0xfe, 0xc3, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x60, 0x60, 0x7e, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7c, 0x06, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x60, 0x60, 0x60, 0x7e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0xcf, 0xd6, 0xd6, 0xd6, 0xd6, 0xcc, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x0c, 0x0c, 0x0c, 0x7f, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x60, 0x60, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7c, 0x06, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc0, 0xc0, 0xf6, 0xd6, 0xd6, 0xd6, 0xd6, 0xcc, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc0, 0x7f, 0x24, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x60, 0x60, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x30, 0x18, 0x0c, 0x18, 0x30, 0x60, 0xf0, 0x3c, 0x0e, 0x04, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x06, 0x06, 0x06, 0x6c, 0xd8, 0x6e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x0c, 0x0c, 0x0c, 0x0f, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x1e, 0x30, 0x60, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x7e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xcf, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0x06, 0x06, 0x7c, 0x06, 0x06, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x60, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x06, 0x3e, 0x66, 0x60, 0x60, 0x60, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x06, 0x06, 0x06, 0x6c, 0x38, 0x0e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x16, 0x16, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x76, 0x1e, 0x0e, 0x0c, 0xd8, 0xfe, 0xc3, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0xcf, 0xcc, 0xcc, 0xcc, 0xcc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x0c, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x0c, 0x0f, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x60, 0x30, 0x18, 0x0c, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x3c, 0x66, 0x06, 0x06, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x60, 0x60, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x63, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x7c, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xfe, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x70, 0xd0, 0xd0, 0xd0, 0x7c, 0x16, 0x16, 0x16, 0xd6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x18, 0x30, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x30, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x06, 0x3c, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x1c, 0x36, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x70, 0x60, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x6a, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x66, 0x66, 0x66, 0x60, 0x60, 0x7e, 0x60, 0x60, 0x60, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7f, 0x0c, 0x0c, 0x0c, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcf, 0x0c, 0x0c, 0x0c, 0x00},
-	{0x00, 0x00, 0x60, 0x60, 0x7e, 0x60, 0x60, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x0c, 0x0f, 0x00},
-	{0x00, 0x00, 0x60, 0x60, 0x60, 0x7c, 0x60, 0x60, 0x60, 0x60, 0x60, 0x78, 0x0c, 0x18, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x60, 0x60, 0x7e, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xc6, 0xc6, 0xcf, 0xd6, 0xd6, 0xcc, 0xc0, 0xc0, 0xc0, 0x00},
-	{0x00, 0x00, 0x0c, 0x0c, 0x0c, 0x7f, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x60, 0x60, 0x60, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x60, 0x60, 0x60, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3e, 0x00},
-	{0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xf6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xca, 0xc0, 0xc0, 0xc0, 0x00},
-	{0x00, 0x00, 0x60, 0x38, 0x0c, 0x7f, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x60, 0x60, 0x60, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x06, 0x06, 0x06, 0x00},
-	{0x00, 0x00, 0x60, 0x60, 0x60, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x30, 0x1c, 0x0c, 0x18, 0x3c, 0x64, 0x66, 0x62, 0x63, 0x3d, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x0c, 0x0c, 0x0f, 0x00},
-	{0x00, 0x00, 0x0e, 0x18, 0x30, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0f, 0x0c, 0x0c, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x6c, 0x38, 0x00},
-	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x3e, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x18, 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x3e, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x7e, 0x06, 0x06, 0x06, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x76, 0x1c, 0x18, 0x30, 0x60, 0x3e, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcf, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x0c, 0x0c, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x0c, 0x0f, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x60, 0x60, 0x60, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x06, 0x66, 0x3c, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x10, 0x10, 0xdc, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x76, 0x10, 0x10, 0x10, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0xfe, 0x60, 0x60, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x70, 0xd0, 0xd0, 0x7c, 0x16, 0x16, 0x16, 0x16, 0xd6, 0x7c, 0x10, 0x10, 0x10, 0x00},
-	{0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xcc, 0xcc, 0xcc, 0xcc, 0x77, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x38, 0x6c},
-	{0x18, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x08, 0x38, 0x10, 0x38, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x60, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x18, 0x0c, 0x00},
-	{0x10, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x74, 0xd6, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0xc0, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x03, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x18, 0x30, 0x00},
-	{0x0c, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x03, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x1b, 0x36, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x44, 0xaa, 0x6c, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x04, 0x0a, 0x0c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x40, 0x50, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x3c, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x30, 0x18, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x30, 0x60, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x6c, 0xd8, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x30, 0x08, 0x30},
-	{0x60, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x40, 0xa0, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x38, 0x10, 0x10},
-	{0x18, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x0c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x06, 0x03, 0x00},
-	{0x48, 0xa8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x38, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x33, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x06, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x60, 0x66, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x18, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x18, 0x18},
-	{0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x18, 0x03, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18},
-	{0x00, 0x00, 0x00, 0x7e, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0x66, 0x76, 0xdc, 0xcc, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xf8, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x38, 0x0c, 0x0c, 0x0c, 0x0c, 0x1c, 0x36, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xfe, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xfc, 0x06, 0x06, 0x06, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x70, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x7e, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xfc, 0x66, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xcc, 0xd6, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x70, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xfc, 0x06, 0x06, 0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0e, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xfc, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xfc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc0, 0xc0, 0xfc, 0x06, 0x06, 0x06, 0x06, 0x0c, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xfc, 0x66, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x66, 0xc6, 0xc6, 0xc6, 0xc6, 0xde, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x38, 0x0c, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1c, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x38, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xfc, 0x66, 0xc6, 0xc6, 0xc6, 0xc6, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xee, 0x66, 0x66, 0x66, 0x66, 0x66, 0x2c, 0xf8, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xf8, 0x4c, 0xcc, 0xcc, 0xec, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0e, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xfc, 0x46, 0xc6, 0xc6, 0xe6, 0x06, 0x06, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xee, 0x66, 0x66, 0x6c, 0x78, 0x60, 0x60, 0x60, 0x60, 0x60, 0x70, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xee, 0x66, 0x66, 0x34, 0x18, 0x0c, 0x06, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xfc, 0x06, 0x06, 0x66, 0x64, 0x6c, 0x6e, 0x60, 0x60, 0x60, 0x60, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xfc, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xf6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x66, 0x66, 0xe6, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xcc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xcc, 0x66, 0x66, 0x66, 0xc6, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xcc, 0x66, 0x66, 0x66, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x66, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x1c, 0x22, 0x20, 0x10, 0x08, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x18, 0x24, 0x20, 0x1e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x02, 0x3c, 0x40, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x20, 0x1c, 0x20, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x1c, 0x20, 0x1c, 0x20, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x18, 0x20, 0x1c, 0x20, 0x00, 0x00},
-	{0x00, 0x30, 0x40, 0x38, 0x40, 0x07, 0x08, 0x88, 0x86, 0x81, 0x82, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x28, 0x00, 0x00, 0x18, 0x24, 0x22, 0x22, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x14, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x08, 0x00, 0x14, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x80, 0x88, 0x80, 0x41, 0x3e, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x80, 0x80, 0x80, 0x41, 0x3e, 0x00, 0x00, 0x00},
-	{0x00, 0x20, 0x00, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x80, 0x80, 0x80, 0x41, 0x3e, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x00, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x08, 0x00, 0x00, 0x04, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x15, 0x88, 0x84, 0x84, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x08, 0x00, 0x14, 0x00, 0x01, 0x15, 0x88, 0x84, 0x84, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x31, 0x9e, 0x88, 0x88, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x04, 0x00, 0x06, 0x09, 0x31, 0x9e, 0x88, 0x88, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x20, 0x20, 0x20, 0x2c, 0x32, 0xa2, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x24, 0x20, 0x20, 0x2c, 0x32, 0xa2, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x8c, 0x70, 0x40, 0x80, 0x80, 0x80, 0x41, 0x3e, 0x00, 0x00},
-	{0x00, 0x40, 0x00, 0x00, 0x70, 0x80, 0x8c, 0x70, 0x40, 0x80, 0x80, 0x80, 0x41, 0x3e, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x04, 0x00, 0x06, 0x49, 0x85, 0x83, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0a, 0x00, 0x06, 0x09, 0x09, 0x47, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x19, 0x21, 0x19, 0x21, 0x01, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x42, 0x82, 0x82, 0x84, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x0c, 0x12, 0x12, 0x3c, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00},
-	{0x00, 0x00, 0x08, 0x00, 0x00, 0x41, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x40, 0x30, 0x4e, 0x49, 0x39, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x88, 0x86, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x88, 0x86, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x24, 0x00},
-	{0x0c, 0x30, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x12, 0xca, 0x2c, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x30, 0x0c, 0x30, 0x00, 0x00},
-	{0x0c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x08, 0x14, 0x0c, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x30, 0x00, 0x00},
-	{0x0a, 0x2a, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x01, 0x7e, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x10, 0x0c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x10, 0x0c, 0x10},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x78, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x20, 0x70, 0x70, 0x38, 0x18, 0x18, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x44, 0xfc, 0xf8, 0x60, 0x30, 0x30, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x4a, 0xfe, 0xf4, 0x60, 0x30, 0x30, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x20, 0x40, 0x30, 0x10, 0x20, 0x42, 0x7c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x38, 0x2c, 0x44, 0x42, 0x82, 0x82, 0xfe, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x80, 0xf8, 0x78, 0x08, 0x08, 0x08, 0x0c, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x82, 0xc6, 0xc6, 0x6c, 0x28, 0x38, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x10, 0x10, 0x38, 0x28, 0x6c, 0xc6, 0xc6, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x70, 0xf8, 0x88, 0xf8, 0x78, 0x08, 0x0c, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x60, 0x91, 0x92, 0x64, 0x08, 0x10, 0x26, 0x49, 0x89, 0x06, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0x00, 0x00},
-	{0x00, 0x10, 0x38, 0x18, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x10, 0x10, 0x38, 0xfe, 0x7c, 0x38, 0x6c, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x06, 0x29, 0x5e, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x06, 0x28, 0x5e, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x06, 0x28, 0x5e, 0x00, 0x00, 0x00},
-	{0x00, 0x07, 0x08, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x03, 0x04, 0x03, 0x14, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x03, 0x04, 0x03, 0x04, 0x00, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x23, 0x54, 0x33, 0x24, 0x40, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x03, 0x04, 0x03, 0x04, 0x00, 0x07, 0x08, 0x88, 0x86, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x1c, 0x14, 0x38, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x08, 0x00, 0x08, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x14, 0x40, 0x81, 0x81, 0x7e, 0x08, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x14, 0x00, 0x08, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00},
-	{0x00, 0x14, 0x00, 0x14, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00},
-	{0x06, 0x08, 0x06, 0x08, 0x70, 0x8f, 0x30, 0x40, 0x80, 0x80, 0x80, 0x41, 0x3e, 0x00, 0x00, 0x00},
-	{0x08, 0x00, 0x08, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x80, 0x80, 0x80, 0x41, 0x3e, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x80, 0x94, 0x80, 0x41, 0x3e, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x88, 0x80, 0x88, 0x41, 0x3e, 0x00, 0x00, 0x00},
-	{0x08, 0x00, 0x14, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x80, 0x80, 0x80, 0x41, 0x3e, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x94, 0x80, 0x88, 0x41, 0x3e, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x94, 0x80, 0x94, 0x41, 0x3e, 0x00, 0x00, 0x00},
-	{0x20, 0x38, 0x28, 0x70, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x08, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00},
-	{0x20, 0x38, 0x28, 0x70, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x14, 0x00, 0x00, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00},
-	{0x08, 0x00, 0x14, 0x00, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x14, 0x00, 0x08, 0x00, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x14, 0x00, 0x14, 0x00, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x1c, 0x14, 0x38, 0x00, 0x04, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x14, 0x08, 0x00, 0x00, 0x04, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x02, 0x04, 0x1c, 0x6a, 0x04, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x02, 0x04, 0x18, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x14, 0x08, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x12, 0x04, 0x18, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x14, 0x00, 0x00, 0x04, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x08, 0x00, 0x14, 0x00, 0x00, 0x04, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x14, 0x00, 0x14, 0x00, 0x00, 0x04, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x15, 0x88, 0x88, 0x8a, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x15, 0x88, 0x88, 0x90, 0x65, 0x00, 0x02, 0x00, 0x00, 0x00},
-	{0x00, 0x04, 0x00, 0x0a, 0x00, 0x01, 0x15, 0x88, 0x88, 0x90, 0x65, 0x00, 0x02, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x31, 0x9e, 0x88, 0x90, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x04, 0x00, 0x0a, 0x00, 0x06, 0x09, 0x31, 0x9e, 0x88, 0x88, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x04, 0x00, 0x2a, 0x20, 0x20, 0x2c, 0x32, 0xa2, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x20, 0x00, 0x50, 0x00, 0x70, 0x80, 0x8c, 0x70, 0x40, 0x80, 0x80, 0x80, 0x41, 0x3e, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x06, 0x49, 0x85, 0x83, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x06, 0x49, 0x85, 0x83, 0x7e, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x04, 0x00, 0x06, 0x49, 0x85, 0x83, 0x7e, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x04, 0x00, 0x0a, 0x00, 0x06, 0x49, 0x85, 0x83, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x06, 0x49, 0x85, 0x83, 0x7e, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x00, 0x00},
-	{0x0a, 0x00, 0x0a, 0x00, 0x06, 0x49, 0x85, 0x83, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x04, 0x00, 0x06, 0x09, 0x09, 0x47, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00},
-	{0x04, 0x00, 0x0a, 0x00, 0x06, 0x09, 0x09, 0x47, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00},
-	{0x00, 0x01, 0x02, 0x04, 0x08, 0x44, 0x82, 0x82, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x18, 0x20, 0x40, 0x3e, 0x01, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x01, 0x02, 0x05, 0x0b, 0x48, 0x84, 0x82, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x04, 0x00, 0x19, 0x21, 0x19, 0x21, 0x01, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x00, 0x29, 0x01, 0x19, 0x21, 0x19, 0xa1, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x19, 0x21, 0x19, 0x21, 0x01, 0x81, 0x7e, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00},
-	{0x04, 0x09, 0x12, 0x04, 0x08, 0x44, 0x82, 0x82, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x04, 0x09, 0x12, 0x05, 0x0b, 0x48, 0x84, 0x82, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0xa4, 0x09, 0x12, 0x04, 0x08, 0x44, 0x82, 0x82, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x04, 0x09, 0x12, 0x04, 0x08, 0x44, 0x82, 0x82, 0x7c, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x04, 0x09, 0x12, 0x04, 0x08, 0x44, 0x82, 0x82, 0x7c, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00},
-	{0x44, 0x09, 0xa2, 0x04, 0x08, 0x44, 0x82, 0x82, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x14, 0x08, 0x02, 0x02, 0x02, 0x02, 0x42, 0x82, 0x82, 0x84, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x08, 0x02, 0x02, 0x02, 0x02, 0x02, 0x42, 0x82, 0x82, 0x84, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x02, 0x2a, 0x02, 0x02, 0x02, 0x42, 0x82, 0x82, 0x84, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x42, 0x82, 0x82, 0x84, 0x78, 0x00, 0x14, 0x00, 0x08, 0x00},
-	{0x00, 0x08, 0x00, 0x00, 0x00, 0x41, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x04, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x1c, 0x14, 0x38, 0x00, 0x41, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x08, 0x00, 0x00, 0x41, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x08, 0x14, 0x08, 0x00, 0x00},
-	{0x08, 0x00, 0x14, 0x00, 0x00, 0x41, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x10, 0x38, 0x4c, 0x52, 0x32, 0x3c, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x94, 0x80, 0x88, 0x41, 0x3e, 0x00, 0x00, 0x00},
-	{0x38, 0x40, 0x38, 0x40, 0x18, 0x24, 0x22, 0x22, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x40, 0x38, 0x40, 0x00, 0x0c, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x0c, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x12, 0x0e, 0x12, 0x2c, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x12, 0x0e, 0x02, 0x3c, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x14, 0x08, 0x00, 0x00, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x28, 0x18, 0x10, 0x20, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x08, 0x08, 0x08, 0x08, 0x00, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x08, 0x14, 0x00, 0x00, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x14, 0x00, 0x00, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x08, 0x00, 0x14, 0x00, 0x00, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x88, 0x86, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x20, 0x47, 0x88, 0x08, 0x86, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x50, 0x20, 0x07, 0x08, 0x88, 0x86, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x08, 0x00, 0x00, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x88, 0x86, 0x81, 0x82, 0x7c, 0x00, 0x08, 0x00, 0x08},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x88, 0x86, 0x81, 0x82, 0x7c, 0x00, 0x14, 0x00, 0x08},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x14, 0x60, 0x80, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x60, 0x80, 0x60, 0x80, 0x08, 0x14, 0x60, 0x80, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x18, 0x24, 0x22, 0x22, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x40, 0x40, 0x43, 0x55, 0x7e, 0x80, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x2a, 0x20, 0x26, 0x2a, 0x7c, 0x80, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x0e, 0x1c, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x14, 0x14, 0x08, 0x14, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x2c, 0x10, 0x28, 0x22, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x08, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x15, 0x8a, 0x90, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x5a, 0xa5, 0x66, 0x5b, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x5a, 0x66, 0xa5, 0x5a, 0x00},
-	{0x00, 0x00, 0x18, 0x66, 0x42, 0x42, 0x81, 0x99, 0x99, 0x81, 0x42, 0x42, 0x66, 0x18, 0x00, 0x00},
-	{0x08, 0x1c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x26, 0x08, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x0c, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x8a, 0x90, 0x60},
-	{0x32, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x14, 0x0c, 0x04, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x30, 0x40, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x30, 0x40, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x08, 0x22, 0x22, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x28, 0x54, 0xaa, 0x92, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x82, 0xfe, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x14, 0x22, 0x14, 0x08},
-	{0x08, 0x14, 0x22, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x10, 0x10, 0x10},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x20, 0x70, 0x70, 0x38, 0x18, 0x18, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x44, 0xfc, 0xf8, 0x60, 0x30, 0x30, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x4a, 0xfe, 0xf4, 0x60, 0x30, 0x30, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x4e, 0xf0, 0xfe, 0x7c, 0x30, 0x30, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x30, 0x38, 0x2c, 0x44, 0x42, 0x82, 0x92, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x3c, 0x60, 0x7e, 0x3c, 0x30, 0x60, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x82, 0xc6, 0xc6, 0x6c, 0x28, 0x38, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x10, 0x10, 0x38, 0x28, 0x6c, 0xc6, 0xc6, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x70, 0xf8, 0x88, 0xf8, 0x78, 0x08, 0x0c, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x08, 0x00, 0x14, 0x00, 0x01, 0x15, 0x88, 0x88, 0x88, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x04, 0x00, 0x06, 0x09, 0x31, 0x9e, 0x88, 0x88, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x40, 0x00, 0x00, 0x70, 0x80, 0x8c, 0x70, 0x40, 0x80, 0x88, 0x80, 0x41, 0x3e, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x18, 0x24, 0x20, 0x1e, 0x20, 0x00, 0x14, 0x14, 0x14, 0x14, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x0c, 0x12, 0x12, 0x3c, 0x40, 0x54, 0x54, 0x54, 0x54, 0x40, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x92, 0x92, 0x92, 0x92, 0x92, 0x4c, 0x30, 0x4c, 0x02, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x92, 0x92, 0x92, 0x92, 0x92, 0x64, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xaa, 0xaa, 0xaa, 0x82, 0x82, 0x40, 0x30, 0x4c, 0x02, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x92, 0x92, 0x92, 0x82, 0x82, 0x44, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x92, 0x92, 0x92, 0x82, 0x82, 0x40, 0x30, 0x4c, 0x02, 0x00},
-	{0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x38, 0x6c, 0x38},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x38, 0x6c, 0x38},
-	{0x18, 0x18, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x66, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x0c, 0xec, 0x60, 0x60, 0x78, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x66, 0x66, 0x66, 0x66, 0xfc, 0x00, 0x18, 0x18, 0x00},
-	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x78, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x00, 0x18, 0x18, 0x00},
-	{0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x66, 0x66, 0x66, 0x66, 0xfc, 0x00, 0x7c, 0x00, 0x00},
-	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x78, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x00, 0x7c, 0x00, 0x00},
-	{0x0c, 0x18, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x18, 0x0c, 0x38, 0x00},
-	{0x00, 0x00, 0x0c, 0x18, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x18, 0x0c, 0x38, 0x00},
-	{0x30, 0x30, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00, 0x00, 0x00, 0x00},
-	{0x60, 0x60, 0x0c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00, 0x30, 0x30, 0x00},
-	{0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x30, 0x30, 0x00},
-	{0x00, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00, 0x7c, 0x00, 0x00},
-	{0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x7c, 0x00, 0x00},
-	{0x00, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x30, 0x18, 0x70, 0x00},
-	{0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x30, 0x18, 0x70, 0x00},
-	{0x00, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x10, 0x38, 0x6c, 0x00},
-	{0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x10, 0x38, 0x6c, 0x00},
-	{0x60, 0x30, 0x00, 0x7c, 0x00, 0xfe, 0x62, 0x68, 0x78, 0x68, 0x62, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x60, 0x30, 0x00, 0x7c, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x18, 0x00, 0x7c, 0x00, 0xfe, 0x62, 0x68, 0x78, 0x68, 0x62, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x18, 0x00, 0x7c, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x62, 0x66, 0xfe, 0x10, 0x38, 0x6c, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x10, 0x38, 0x6c, 0x00},
-	{0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x76, 0xdc, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x76, 0xdc, 0x00},
-	{0x6c, 0x38, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x18, 0x0c, 0x38, 0x00},
-	{0x00, 0x00, 0x6c, 0x38, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x18, 0x0c, 0x38, 0x00},
-	{0x18, 0x18, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
-	{0x30, 0x30, 0x00, 0x38, 0x6c, 0x64, 0xf0, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x7c, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xde, 0xc6, 0xc6, 0x66, 0x3a, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x7c, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78, 0x00},
-	{0x30, 0x30, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x0c, 0xe0, 0x60, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x30, 0x30, 0x00},
-	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x18, 0x18, 0x00},
-	{0x6c, 0x6c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x6c, 0x00, 0xe0, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x60, 0x30, 0xe0, 0x00},
-	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x30, 0x18, 0x70, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x6c, 0x38, 0x00},
-	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x6c, 0x38, 0x00},
-	{0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x76, 0xdc, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x76, 0xdc, 0x00},
-	{0x0c, 0x18, 0x66, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x18, 0x66, 0x66, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x18, 0x00, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x0c, 0xec, 0x60, 0x60, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x18, 0x18, 0x00},
-	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x18, 0x18, 0x00},
-	{0x00, 0x00, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x7c, 0x00, 0x00},
-	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x7c, 0x00, 0x00},
-	{0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x18, 0x18, 0x00},
-	{0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x18, 0x18, 0x00},
-	{0x00, 0x7c, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x18, 0x18, 0x00},
-	{0x00, 0x7c, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x18, 0x18, 0x00},
-	{0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x7c, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x7e, 0x00, 0x00},
-	{0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x10, 0x38, 0x6c, 0x00},
-	{0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x10, 0x38, 0x6c, 0x00},
-	{0x0c, 0x18, 0x00, 0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x18, 0x00, 0xec, 0xfe, 0xd6, 0xd6, 0xd6, 0xd6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x30, 0x30, 0x00, 0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x30, 0x30, 0x00, 0xec, 0xfe, 0xd6, 0xd6, 0xd6, 0xd6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x30, 0x30, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0xfe, 0xd6, 0xd6, 0xd6, 0xd6, 0xc6, 0x00, 0x30, 0x30, 0x00},
-	{0x30, 0x30, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x30, 0x30, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x18, 0x18, 0x00},
-	{0x00, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x7c, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x7c, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0xc6, 0x10, 0x38, 0x6c, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x10, 0x38, 0x6c, 0x00},
-	{0x0c, 0x18, 0x72, 0x9c, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x18, 0x76, 0xdc, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x00, 0x72, 0x9c, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x00, 0x76, 0xdc, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x60, 0x30, 0x7c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x60, 0x30, 0x00, 0x7c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x18, 0x7c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x18, 0x00, 0x7c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x18, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x18, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0, 0x00},
-	{0x18, 0x18, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0, 0x00},
-	{0x18, 0x18, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x18, 0x18, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x18, 0x18, 0x00},
-	{0x00, 0x7c, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x18, 0x18, 0x00},
-	{0x00, 0x00, 0x00, 0x7c, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x18, 0x18, 0x00},
-	{0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x7c, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x7c, 0x00, 0x00},
-	{0x30, 0x30, 0x00, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x30, 0x30, 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c, 0x06, 0xc6, 0xc6, 0x7c, 0x00, 0x30, 0x30, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x30, 0x30, 0x00},
-	{0x60, 0x6c, 0x18, 0x00, 0x7c, 0xc6, 0xc6, 0x70, 0x1c, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x60, 0x60, 0x0c, 0x18, 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x30, 0x44, 0x38, 0x10, 0x7c, 0xc6, 0xc6, 0x70, 0x1c, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x30, 0x30, 0x44, 0x38, 0x10, 0x7c, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x30, 0x30, 0x00, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0xc6, 0x7c, 0x00, 0x30, 0x30, 0x00},
-	{0x00, 0x00, 0x30, 0x30, 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x30, 0x30, 0x00},
-	{0x18, 0x18, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x06, 0x16, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x18, 0x18, 0x00},
-	{0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x18, 0x18, 0x00},
-	{0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x7e, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x7e, 0x00, 0x00},
-	{0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x10, 0x38, 0x6c, 0x00},
-	{0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x08, 0x1c, 0x36, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x6c, 0x6c, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x6c, 0x6c, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x76, 0xdc, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x76, 0xdc, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x10, 0x38, 0x6c, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x10, 0x38, 0x6c, 0x00},
-	{0x0c, 0x18, 0x72, 0x9c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x18, 0x76, 0xdc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x00, 0x7c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0xcc, 0xcc, 0x00, 0xfc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x76, 0xdc, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x76, 0xdc, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x10, 0x00, 0x30, 0x30, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x00, 0x18, 0x18, 0x00},
-	{0x60, 0x30, 0x00, 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0xee, 0x6c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x60, 0x30, 0x00, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x18, 0x00, 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0xee, 0x6c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x18, 0x00, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x6c, 0x00, 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0xee, 0x6c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0x00},
-	{0x30, 0x30, 0x00, 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0xee, 0x6c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x30, 0x30, 0x00, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0xee, 0x6c, 0x00, 0x30, 0x30, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x30, 0x30, 0x00},
-	{0x30, 0x30, 0x00, 0xc6, 0xc6, 0x6c, 0x7c, 0x38, 0x7c, 0x6c, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x30, 0x30, 0x00, 0xc6, 0x6c, 0x38, 0x38, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x6c, 0x00, 0xc6, 0xc6, 0x6c, 0x7c, 0x38, 0x7c, 0x6c, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0xc6, 0x6c, 0x38, 0x38, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x18, 0x00, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x30, 0x30, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00},
-	{0x10, 0x38, 0x44, 0xfe, 0xc6, 0x8c, 0x18, 0x30, 0x60, 0xc2, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x10, 0x38, 0x6c, 0x00, 0xfe, 0xcc, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0xc6, 0x86, 0x0c, 0x18, 0x30, 0x60, 0xc2, 0xc6, 0xfe, 0x00, 0x30, 0x30, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xcc, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x30, 0x30, 0x00},
-	{0x00, 0x00, 0xfe, 0xc6, 0x86, 0x0c, 0x18, 0x30, 0x60, 0xc2, 0xc6, 0xfe, 0x00, 0x7c, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xcc, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x7c, 0x00, 0x00},
-	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x7c, 0x00, 0x00},
-	{0x6c, 0x6c, 0x00, 0x10, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x38, 0x6c, 0x38, 0x00, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x38, 0x6c, 0x38, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00},
-	{0x00, 0x18, 0x0c, 0x18, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x30, 0x30, 0x00, 0x38, 0x6c, 0x64, 0x60, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x30, 0x30, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x30, 0x30, 0x00},
-	{0x38, 0x0c, 0x18, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x38, 0x0c, 0x18, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x03, 0x16, 0x38, 0x6c, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x03, 0x16, 0x38, 0x6c, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0xc0, 0x68, 0x1c, 0x36, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0xc0, 0x68, 0x1c, 0x36, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x0e, 0x13, 0x3a, 0x6c, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x0e, 0x13, 0x3a, 0x6c, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x76, 0xdc, 0x10, 0x28, 0x54, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x76, 0xdc, 0x10, 0x38, 0x44, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x38, 0x6c, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x30, 0x30, 0x00},
-	{0x00, 0x10, 0x38, 0x6c, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x30, 0x30, 0x00},
-	{0x0c, 0x18, 0x44, 0x38, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x18, 0x44, 0x38, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x60, 0x30, 0x44, 0x38, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x60, 0x30, 0x44, 0x38, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x30, 0x08, 0x54, 0x38, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x30, 0x08, 0x54, 0x38, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x72, 0x9c, 0x44, 0x38, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x72, 0x9c, 0x44, 0x38, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x6c, 0x38, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x30, 0x30, 0x00},
-	{0x00, 0x00, 0x6c, 0x38, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x30, 0x30, 0x00},
-	{0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x18, 0x18, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x30, 0x30, 0x00},
-	{0x38, 0x0c, 0x18, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x38, 0x0c, 0x18, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x76, 0xdc, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x76, 0xdc, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x23, 0x76, 0x88, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x03, 0x26, 0x70, 0xd8, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0xc4, 0x6e, 0x11, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0xc0, 0x64, 0x0e, 0x1b, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x0e, 0x13, 0x3a, 0x6c, 0x00, 0xfe, 0x62, 0x68, 0x78, 0x68, 0x62, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x0e, 0x13, 0x3a, 0x6c, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x76, 0xdc, 0x10, 0x38, 0x44, 0xfe, 0x62, 0x68, 0x78, 0x68, 0x62, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x76, 0xdc, 0x10, 0x38, 0x44, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x38, 0x44, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x18, 0x18, 0x00},
-	{0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x30, 0x30, 0x00},
-	{0x38, 0x0c, 0x18, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x38, 0x0c, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x18, 0x18, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x18, 0x18, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x30, 0x30, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x30, 0x30, 0x00},
-	{0x38, 0x0c, 0x18, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x38, 0x0c, 0x18, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x23, 0x76, 0x88, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x03, 0x26, 0x70, 0xd8, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0xc4, 0x6e, 0x11, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0xc0, 0x64, 0x0e, 0x1b, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x0e, 0x13, 0x3a, 0x44, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x0e, 0x13, 0x3a, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x76, 0xdc, 0x10, 0x28, 0x44, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x76, 0xdc, 0x10, 0x38, 0x44, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x38, 0x44, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x30, 0x30, 0x00},
-	{0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x30, 0x30, 0x00},
-	{0x18, 0x33, 0x03, 0x7a, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x1b, 0x33, 0x06, 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x60, 0x33, 0x03, 0x7a, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x63, 0x33, 0x06, 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x70, 0x1b, 0x33, 0x7a, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x70, 0x1b, 0x33, 0x06, 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x68, 0xb3, 0x03, 0x7a, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x68, 0xb3, 0x03, 0x06, 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x03, 0x03, 0x7a, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x30, 0x30, 0x00},
-	{0x00, 0x00, 0x03, 0x03, 0x06, 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x30, 0x30, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x30, 0x30, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x30, 0x30, 0x00},
-	{0x38, 0x0c, 0x18, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x70, 0x18, 0x30, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x33, 0x03, 0xce, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x1b, 0x33, 0x06, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x60, 0x33, 0x03, 0xce, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x63, 0x33, 0x06, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x70, 0x1b, 0x33, 0xce, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x70, 0x1b, 0x33, 0x06, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x68, 0xb3, 0x03, 0xce, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x68, 0xb3, 0x03, 0x06, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x03, 0x03, 0xce, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x30, 0x30, 0x00},
-	{0x00, 0x00, 0x03, 0x03, 0x06, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x30, 0x30, 0x00},
-	{0x30, 0x18, 0x00, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x60, 0x30, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00},
-	{0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x18, 0x18, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x0c, 0x18, 0xf6, 0x06, 0x00},
-	{0x38, 0x0c, 0x18, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x38, 0x0c, 0x18, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00},
-	{0x3a, 0x5c, 0x00, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x76, 0xdc, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00},
-	{0x00, 0x18, 0x18, 0x30, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x30, 0x30, 0x18, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x60, 0x6c, 0xc6, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0xc0, 0xcc, 0x66, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x60, 0x66, 0xcc, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0xc0, 0xc6, 0x6c, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x34, 0x58, 0x0c, 0x18, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x34, 0x58, 0x30, 0x18, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0xfe, 0x00, 0xa4, 0xaa, 0xea, 0xea, 0xa6, 0x00, 0x6c, 0x8a, 0x4c, 0x28, 0xc8, 0x00, 0xfe, 0x00},
-	{0xfe, 0x00, 0xa4, 0xea, 0xaa, 0xaa, 0xa6, 0x00, 0x6c, 0x8a, 0x4c, 0x28, 0xc8, 0x00, 0xfe, 0x00},
-	{0xfe, 0x00, 0xea, 0x8a, 0xce, 0x8e, 0xea, 0x00, 0x6c, 0x8a, 0x4c, 0x28, 0xc8, 0x00, 0xfe, 0x00},
-	{0xfe, 0x00, 0xea, 0x8e, 0xca, 0x8a, 0xea, 0x00, 0x6c, 0x8a, 0x4c, 0x28, 0xc8, 0x00, 0xfe, 0x00},
-	{0xfe, 0x00, 0xca, 0x2e, 0x4a, 0x2a, 0xca, 0x00, 0x6c, 0x8a, 0x4c, 0x28, 0xc8, 0x00, 0xfe, 0x00},
-	{0xfe, 0x00, 0xaa, 0xae, 0xea, 0x2a, 0x2a, 0x00, 0x6c, 0x8a, 0x4c, 0x28, 0xc8, 0x00, 0xfe, 0x00},
-	{0xfe, 0x00, 0x6a, 0x8e, 0xca, 0xaa, 0x4a, 0x00, 0x6c, 0x8a, 0x4c, 0x28, 0xc8, 0x00, 0xfe, 0x00},
-	{0xfe, 0x00, 0x38, 0x20, 0x30, 0x20, 0x20, 0x00, 0x6c, 0x8a, 0x4c, 0x28, 0xc8, 0x00, 0xfe, 0x00},
-	{0xfe, 0x00, 0x30, 0x28, 0x30, 0x20, 0x20, 0x00, 0x6c, 0x8a, 0x4c, 0x28, 0xc8, 0x00, 0xfe, 0x00},
-	{0xfe, 0x00, 0xea, 0x4a, 0x4e, 0x4a, 0x4a, 0x00, 0x6c, 0x8a, 0x4c, 0x28, 0xc8, 0x00, 0xfe, 0x00},
-	{0xfe, 0x00, 0x28, 0x28, 0x38, 0x28, 0x28, 0x00, 0x6c, 0x8a, 0x4c, 0x28, 0xc8, 0x00, 0xfe, 0x00},
-	{0xfe, 0x00, 0xea, 0x2a, 0x4e, 0x8e, 0xee, 0x00, 0x6c, 0x8a, 0x4c, 0x28, 0xc8, 0x00, 0xfe, 0x00},
-	{0xfe, 0x00, 0xea, 0x2a, 0x4e, 0x8e, 0xee, 0x00, 0xa2, 0xa2, 0xe2, 0xea, 0xa4, 0x00, 0xfe, 0x00},
-	{0xfe, 0x00, 0xea, 0x2a, 0x4e, 0x8e, 0xee, 0x00, 0x08, 0x08, 0x08, 0x28, 0x10, 0x00, 0xfe, 0x00},
-	{0xfe, 0x00, 0x80, 0x80, 0x80, 0xf0, 0x28, 0x30, 0x28, 0x0a, 0x0e, 0x0e, 0x0a, 0x00, 0xfe, 0x00},
-	{0xfe, 0x00, 0xc0, 0xa0, 0xc0, 0xa0, 0x20, 0x20, 0x38, 0x0a, 0x0e, 0x0e, 0x0a, 0x00, 0xfe, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x9c, 0xd2, 0xbc, 0x92, 0x9c, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0xfe, 0x00},
-	{0x00, 0x18, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00},
-	{0x00, 0x30, 0x30, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x66, 0xcc, 0xcc, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x66, 0x66, 0x66, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0xcc, 0x00, 0x00},
-	{0x00, 0xcc, 0xcc, 0xcc, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x20, 0x30, 0x38, 0x3c, 0x38, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdb, 0xdb, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xc0, 0xc6, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xc0, 0xc6, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x6b, 0x6b, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x6c, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xdb, 0xdb, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x6c, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xdb, 0xdb, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x0c, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x60, 0x30, 0x18, 0x0c, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x92, 0x44, 0x28, 0x92, 0x28, 0x44, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7e, 0xc3, 0xdb, 0x1b, 0x1e, 0x1c, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x7c, 0x00, 0x00},
-	{0x7c, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0c, 0x18, 0x38, 0x6c, 0x00},
-	{0x00, 0x00, 0x00, 0x10, 0x38, 0x28, 0x00, 0x00, 0x44, 0xee, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x30, 0x30, 0x30, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x0c, 0x0c, 0x0c, 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7b, 0xcf, 0xcf, 0x1b, 0x33, 0x33, 0x33, 0x00, 0x33, 0x33, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xde, 0xf3, 0xf3, 0xc6, 0xcc, 0xcc, 0xcc, 0x00, 0xcc, 0xcc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x06, 0x06, 0x0c, 0x0c, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0xdb, 0xdb, 0xdb, 0xde, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x3e, 0x72, 0xf2, 0xf2, 0xf2, 0x72, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xf8, 0x9c, 0x9e, 0x9e, 0x9e, 0x9c, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x70, 0xd8, 0xd8, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x18, 0x38, 0x78, 0xd8, 0xfc, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0xf8, 0xc0, 0xf0, 0x18, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x78, 0xc0, 0xf0, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0xf8, 0xd8, 0x30, 0x30, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x70, 0xd8, 0x70, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x70, 0xd8, 0xd8, 0x78, 0x18, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x30, 0x60, 0x60, 0x60, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x60, 0x30, 0x30, 0x30, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xb0, 0xd8, 0xd8, 0xd8, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xd8, 0xd8, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x70, 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xd8, 0x30, 0x60, 0xc8, 0xf8, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xd8, 0x30, 0x18, 0xd8, 0x70, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x38, 0x78, 0xd8, 0xfc, 0x18, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xc0, 0xf0, 0x18, 0xd8, 0x70, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xc0, 0xf0, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xd8, 0x30, 0x30, 0x60, 0x60, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xd8, 0x70, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xd8, 0xd8, 0x78, 0x18, 0xf0, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0x60, 0x60, 0x60, 0x30, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x30, 0x30, 0x30, 0x30, 0x60, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xd8, 0xd8, 0xd8, 0xd8, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x78, 0xcc, 0xc0, 0xcf, 0xcc, 0xcc, 0x7f, 0x0c, 0x0c, 0x0f, 0x00, 0x00, 0x00, 0x00},
-	{0x04, 0x04, 0x7c, 0xce, 0xc8, 0xc8, 0xd0, 0xd0, 0xd0, 0xe0, 0xe6, 0x7c, 0x40, 0x40, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xd6, 0xd8, 0xd8, 0xd8, 0xde, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xf8, 0xc0, 0xc0, 0xc0, 0xf0, 0xcd, 0xce, 0xcc, 0xcc, 0xcc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x6c, 0x60, 0xf8, 0x60, 0xf8, 0x60, 0x60, 0xe6, 0xfc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x02, 0xec, 0xd6, 0xde, 0xd6, 0xd6, 0xf6, 0xd6, 0x40, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x66, 0x66, 0x76, 0xff, 0x76, 0x6e, 0xff, 0x6e, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfc, 0x66, 0x66, 0x7c, 0x62, 0x66, 0x6f, 0x66, 0x66, 0xf3, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xf8, 0xcc, 0xcc, 0xcc, 0xf8, 0xe0, 0xf3, 0xd6, 0xdb, 0xce, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x81, 0x81, 0x81, 0x5a, 0xff, 0x5a, 0xff, 0x24, 0x24, 0x24, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xf2, 0x8a, 0xaa, 0xaa, 0xaa, 0xaa, 0xa2, 0xbc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x3e, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x7c, 0x00, 0x00},
-	{0x00, 0x00, 0x1c, 0x36, 0x60, 0xfc, 0x60, 0xf8, 0x60, 0x60, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xe6, 0x66, 0x6c, 0x78, 0xfe, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x1e, 0x78, 0x1e, 0x78, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x10, 0x7c, 0xb6, 0x36, 0x33, 0x33, 0x33, 0x63, 0x66, 0xf6, 0xdc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x70, 0xd0, 0xd2, 0xd6, 0x7c, 0x18, 0x30, 0x6e, 0xd8, 0x98, 0x18, 0x0e, 0x00, 0x00, 0x00},
-	{0x00, 0x70, 0xd0, 0xd2, 0xd6, 0x7c, 0x18, 0x30, 0x6e, 0xd8, 0x8c, 0x06, 0x1c, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x62, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0x62, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x4e, 0xb9, 0x58, 0x18, 0x18, 0x18, 0x18, 0x18, 0x19, 0x0e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x18, 0x7c, 0xda, 0xd8, 0xd8, 0xda, 0x7c, 0x19, 0x3f, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x70, 0xc0, 0xc2, 0xc6, 0x7c, 0x18, 0x30, 0x6e, 0xdb, 0x9b, 0x1b, 0x0e, 0x00, 0x00, 0x00},
-	{0x00, 0x70, 0xc0, 0xc2, 0xc6, 0x7c, 0x18, 0x30, 0x7b, 0xdb, 0x9b, 0x1b, 0x0d, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0xc2, 0xc0, 0x78, 0xc0, 0xc0, 0xc2, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x78, 0xcc, 0x86, 0x26, 0x3e, 0x26, 0x06, 0x86, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7f, 0xb9, 0x58, 0x1a, 0x1e, 0x1a, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x66, 0x46, 0x87, 0x8c, 0x8c, 0x7c, 0x98, 0x98, 0x70, 0x00},
-	{0x00, 0x00, 0x52, 0xb5, 0x15, 0x16, 0x2c, 0x34, 0x68, 0xa9, 0xaa, 0x4c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x48, 0xb0, 0x80, 0x48, 0x7c, 0x66, 0x26, 0x26, 0xa6, 0x46, 0x06, 0x34, 0x48, 0x00},
-	{0x00, 0x00, 0xe2, 0xa2, 0xa2, 0xa2, 0xbe, 0xa2, 0xa2, 0xa2, 0xa2, 0xe2, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x18, 0x18, 0x36, 0x3b, 0x3b, 0x33, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x1e, 0x18, 0x76, 0x3b, 0x3b, 0x33, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x33, 0x4e, 0x06, 0x06, 0x0c, 0x0c, 0x1f, 0x6c, 0x88, 0x70, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x71, 0x8e, 0x04, 0x0c, 0x06, 0x03, 0x63, 0xc3, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x46, 0x49, 0x39, 0x1e, 0x18, 0x30, 0x70, 0xb1, 0xba, 0x6c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0e, 0x19, 0x31, 0x32, 0x64, 0x68, 0x70, 0xe1, 0x66, 0x38, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xd8, 0xff, 0xd8, 0xde, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xde, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xe2, 0xa2, 0xb2, 0xb2, 0xaa, 0xaa, 0xa6, 0xa6, 0xa2, 0xe2, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xcc, 0xcf, 0xed, 0xff, 0xfc, 0xdf, 0xcc, 0xcc, 0xcc, 0xcc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x42, 0xb9, 0xa5, 0xa5, 0xb9, 0xa1, 0xa1, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x40, 0x8e, 0x93, 0xa3, 0x63, 0x4b, 0x6a, 0xa4, 0xb0, 0xb0, 0x60, 0x00},
-	{0x00, 0x00, 0xfc, 0xa2, 0xa2, 0xa2, 0xa2, 0xbc, 0xa0, 0xa0, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xaa, 0xa6, 0x7e, 0x01, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3e, 0x4d, 0x4d, 0x19, 0x1e, 0x1c, 0x34, 0x34, 0xb5, 0x62, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x58, 0xa6, 0xa3, 0x6c, 0xb8, 0x26, 0x26, 0x26, 0xa7, 0xc2, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfc, 0xa2, 0xa2, 0xa2, 0xa2, 0xbc, 0xb0, 0xa8, 0xa4, 0xe2, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, 0x6d, 0x67, 0x66, 0xee, 0x08, 0x00, 0x00, 0x00},
-	{0x30, 0x0c, 0xfc, 0xc6, 0xc6, 0xc6, 0xfc, 0xd8, 0xdc, 0xdc, 0xe6, 0xe6, 0x20, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x71, 0xdb, 0x35, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x52, 0x5a, 0x52, 0x5f, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xf1, 0x5b, 0x55, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x60, 0x18, 0xce, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xe6, 0x6c, 0x38, 0x50, 0x40, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0x0a, 0x14, 0x14, 0x28, 0x28, 0x50, 0x50, 0xa0, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0x9c, 0x30, 0xfe, 0x0c, 0x18, 0x38, 0x0c, 0x06, 0x06, 0xc6, 0xc6, 0x7c, 0x00},
-	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x6c, 0x6c, 0x6c, 0xee, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xee, 0x6c, 0x6c, 0x6c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x26, 0x03, 0x13, 0x0c, 0x13, 0x03, 0x03, 0x66, 0x98, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x18, 0x18, 0x18, 0x18, 0x1c, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
-	{0x38, 0x6c, 0x38, 0x10, 0x38, 0x38, 0x6c, 0x6c, 0xc6, 0xfe, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x1e, 0x2d, 0x2d, 0x1a, 0x1e, 0x1b, 0x31, 0x31, 0xb2, 0x6c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x14, 0x6b, 0xc8, 0xcc, 0xc6, 0xc6, 0xcc, 0xc0, 0x63, 0x1c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0xe7, 0xff, 0xe0, 0x67, 0x3e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x26, 0x44, 0xf8, 0xc0, 0xc8, 0x70, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x4c, 0x52, 0x3c, 0x10, 0x3c, 0x60, 0xc0, 0xc3, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x73, 0xce, 0x18, 0x3a, 0x5c, 0x18, 0x30, 0x30, 0xb0, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0c, 0x2c, 0x3c, 0x2c, 0x8c, 0xcc, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x12, 0x12, 0x12, 0x16, 0x36, 0x3e, 0x3a, 0x5a, 0x52, 0x91, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x26, 0x46, 0xc6, 0xc4, 0xc8, 0x70, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x42, 0xc6, 0xe7, 0x7a, 0x38, 0x5c, 0xce, 0xe7, 0x63, 0xe2, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x80, 0xfc, 0x7e, 0x06, 0x06, 0x06, 0x06, 0x0c, 0x7e, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x40, 0x78, 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x1e, 0x7e, 0xf2, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x80, 0xfe, 0x7e, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x1c, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x38, 0x00, 0x78, 0x38, 0x38, 0x38, 0x38, 0x38, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0xff, 0x83, 0x86, 0x82, 0xfe, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0xc0, 0xc0, 0xc2, 0xc6, 0xcc, 0x18, 0x30, 0x60, 0xdc, 0x86, 0x1c, 0x06, 0x1c, 0x00, 0x00},
-	{0x00, 0xe0, 0x30, 0x62, 0xc6, 0xfc, 0x18, 0x30, 0x60, 0xdc, 0x86, 0x1c, 0x06, 0x1c, 0x00, 0x00},
-	{0x00, 0xc0, 0xc0, 0xc2, 0xc6, 0xcc, 0x18, 0x30, 0x60, 0xde, 0x98, 0x1c, 0x06, 0x1c, 0x00, 0x00},
-	{0x00, 0xe0, 0x30, 0x62, 0xc6, 0xfc, 0x18, 0x30, 0x60, 0xde, 0x98, 0x1c, 0x06, 0x1c, 0x00, 0x00},
-	{0x00, 0xe0, 0x30, 0x62, 0x36, 0xec, 0x18, 0x30, 0x60, 0xde, 0x98, 0x1c, 0x06, 0x1c, 0x00, 0x00},
-	{0x00, 0x30, 0x70, 0xb2, 0xf6, 0x3c, 0x18, 0x30, 0x60, 0xde, 0x98, 0x1c, 0x06, 0x1c, 0x00, 0x00},
-	{0x00, 0xc0, 0xc0, 0xc2, 0xc6, 0xcc, 0x18, 0x30, 0x60, 0xdc, 0xb0, 0x3c, 0x36, 0x1c, 0x00, 0x00},
-	{0x00, 0xf0, 0xc0, 0xe2, 0x36, 0xec, 0x18, 0x30, 0x60, 0xdc, 0xb0, 0x3c, 0x36, 0x1c, 0x00, 0x00},
-	{0x00, 0xc0, 0xc0, 0xc2, 0xc6, 0xcc, 0x18, 0x30, 0x60, 0xdc, 0xb6, 0x1c, 0x36, 0x1c, 0x00, 0x00},
-	{0x00, 0xe0, 0x30, 0x62, 0x36, 0xec, 0x18, 0x30, 0x60, 0xdc, 0xb6, 0x1c, 0x36, 0x1c, 0x00, 0x00},
-	{0x00, 0xf0, 0x80, 0xe2, 0x36, 0xec, 0x18, 0x30, 0x60, 0xdc, 0xb6, 0x1c, 0x36, 0x1c, 0x00, 0x00},
-	{0x00, 0xf0, 0x30, 0x62, 0x66, 0x6c, 0x18, 0x30, 0x60, 0xdc, 0xb6, 0x1c, 0x36, 0x1c, 0x00, 0x00},
-	{0x00, 0xc0, 0xc0, 0xc2, 0xc6, 0xcc, 0x18, 0x30, 0x60, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xff, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xff, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xce, 0xce, 0xc4, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0x73, 0x73, 0x23, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x65, 0x65, 0x65, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xdb, 0xdb, 0xdb, 0xce, 0xce, 0xce, 0xdb, 0xdb, 0xdb, 0xdb, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0x6c, 0x7c, 0x38, 0x38, 0x7c, 0x6c, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xdb, 0xdb, 0xdb, 0x73, 0x73, 0x73, 0xdb, 0xdb, 0xdb, 0xdb, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x95, 0x95, 0x95, 0x65, 0x65, 0x65, 0x95, 0x95, 0x95, 0x95, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xdb, 0xdb, 0x00, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc0, 0xc0, 0x00, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xce, 0xc4, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x03, 0x03, 0x00, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0x73, 0x23, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x05, 0x05, 0x00, 0x95, 0x95, 0x95, 0x95, 0x95, 0x65, 0x65, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x15, 0x15, 0x00, 0xb5, 0xb5, 0xb5, 0xb5, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc0, 0xc0, 0x00, 0xdb, 0xdb, 0xce, 0xce, 0xce, 0xdb, 0xdb, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x6c, 0x38, 0x38, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x03, 0x03, 0x00, 0xdb, 0xdb, 0x73, 0x73, 0x73, 0xdb, 0xdb, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x05, 0x05, 0x00, 0x95, 0x95, 0x65, 0x65, 0x95, 0x95, 0x95, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0xfe, 0xd6, 0xd6, 0xd6, 0xd6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x5a, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0x5a, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xf8, 0xcc, 0xe6, 0xd6, 0xd6, 0xd6, 0xd6, 0xe6, 0xcc, 0xf8, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x5a, 0x99, 0xbd, 0xdb, 0xdb, 0xbd, 0x99, 0x5a, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x78, 0xcc, 0x86, 0x06, 0x06, 0x06, 0x06, 0x86, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0xff, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x06, 0xff, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x66, 0xff, 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xf0, 0xe0, 0xb0, 0x18, 0x0c, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x0f, 0x07, 0x0d, 0x18, 0x30, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x30, 0x18, 0x0d, 0x07, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x0c, 0x18, 0xb0, 0xe0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x62, 0xff, 0x64, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x26, 0xff, 0x46, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xce, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x73, 0xdd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x6c, 0xff, 0x6c, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x36, 0xff, 0x36, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x66, 0xfc, 0x66, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x66, 0x3f, 0x66, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x63, 0xff, 0x63, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xc6, 0xff, 0xc6, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x06, 0x33, 0x63, 0xfe, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x60, 0xcc, 0xc6, 0x7f, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x06, 0x3b, 0x6b, 0xfe, 0x68, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x60, 0xdc, 0xd6, 0x7f, 0x16, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x5a, 0xff, 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x6e, 0xff, 0x76, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x30, 0x30, 0x60, 0x63, 0xff, 0xc6, 0x16, 0x1c, 0x1c, 0x1e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x30, 0x60, 0xfe, 0x66, 0x36, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x18, 0x0c, 0xfe, 0xcc, 0xd8, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x36, 0x66, 0xfe, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xd8, 0xcc, 0xfe, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x0c, 0x0c, 0x3f, 0x1e, 0x0c, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x36, 0x66, 0xfe, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x1e, 0x33, 0x33, 0x33, 0x30, 0xfc, 0x78, 0x30, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x78, 0xcc, 0xcc, 0xcc, 0x0c, 0x3f, 0x1e, 0x0c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xff, 0x00, 0xf0, 0xe0, 0xb0, 0x18, 0x0c, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x98, 0xb0, 0xff, 0xb0, 0x98, 0x19, 0x0d, 0xff, 0x0d, 0x19, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x1e, 0x1c, 0x16, 0x03, 0xc3, 0xc3, 0xc3, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x78, 0x38, 0x68, 0xc0, 0xc3, 0xc3, 0xc3, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x1c, 0x1e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x38, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x06, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1e, 0x1c, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x78, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x06, 0xff, 0x06, 0x0c, 0x30, 0x60, 0xff, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x24, 0x2e, 0x3f, 0x24, 0x24, 0x24, 0x24, 0xfc, 0x74, 0x24, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x30, 0x60, 0xff, 0x60, 0x30, 0x0c, 0x06, 0xff, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x30, 0x60, 0xfe, 0x60, 0x30, 0x00, 0x30, 0x60, 0xfe, 0x60, 0x30, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x24, 0x7e, 0xff, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x0c, 0xfe, 0x0c, 0x18, 0x00, 0x18, 0x0c, 0xfe, 0x0c, 0x18, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0xff, 0x7e, 0x24, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0xff, 0x00, 0xff, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x0c, 0x06, 0xff, 0x00, 0xff, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x7f, 0xc4, 0x7f, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x7e, 0xcb, 0x7e, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0xfe, 0x23, 0xfe, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x7f, 0xc0, 0x7f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x7c, 0xee, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xfe, 0x03, 0xfe, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xee, 0x7c, 0x38, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x7e, 0xc3, 0x7e, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x7c, 0xee, 0x6c, 0x6c, 0x6c, 0x6c, 0xee, 0x7c, 0x38, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xf0, 0xe0, 0xb0, 0xd8, 0xec, 0xb6, 0x1b, 0x0c, 0x04, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x0f, 0x07, 0x0d, 0x1b, 0x37, 0x6d, 0xd8, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x20, 0x30, 0xd8, 0x6d, 0x37, 0x1b, 0x0d, 0x07, 0x0f, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x04, 0x0c, 0x1b, 0xb6, 0xec, 0xd8, 0xb0, 0xe0, 0xf0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x10, 0x3f, 0x60, 0xff, 0x60, 0x3f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x08, 0xfc, 0x06, 0xff, 0x06, 0xfc, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x6a, 0xff, 0x65, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xa6, 0xff, 0x56, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x3c, 0x18, 0x3c, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x3c, 0x18, 0x3c, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0xd5, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x3c, 0x66, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x06, 0xab, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x66, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0xb0, 0xff, 0xb0, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x0d, 0xff, 0x0d, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x10, 0x3f, 0x41, 0x81, 0x41, 0x3f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x28, 0x44, 0xc6, 0x44, 0x44, 0x44, 0x44, 0x44, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x08, 0xfc, 0x82, 0x81, 0x82, 0xfc, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0x44, 0x44, 0x44, 0x44, 0x44, 0xc6, 0x44, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x28, 0x44, 0xc6, 0x44, 0x44, 0x7c, 0x00, 0x7c, 0x44, 0x7c, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x28, 0x44, 0xc6, 0x44, 0x44, 0x44, 0xc6, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x28, 0x7c, 0xc6, 0x44, 0x44, 0x44, 0xc6, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x38, 0x54, 0xd6, 0x54, 0x54, 0x54, 0xd6, 0x92, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x10, 0x28, 0x54, 0xee, 0x44, 0xc6, 0x44, 0x44, 0x44, 0x44, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x10, 0x28, 0x54, 0xee, 0x44, 0xc6, 0x44, 0x44, 0xc6, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xe8, 0xbc, 0x82, 0x81, 0x82, 0xbc, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xff, 0x80, 0xbc, 0xb8, 0xac, 0x86, 0x83, 0x81, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x01, 0x81, 0xc1, 0x61, 0x35, 0x1d, 0x3d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x28, 0x44, 0xc6, 0x44, 0x44, 0x44, 0xc6, 0x44, 0x28, 0x10, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0xfe, 0xc6, 0x6c, 0x6c, 0x38, 0x38, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x60, 0x60, 0x60, 0x60, 0x60, 0x66, 0x3c, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x6c, 0x06, 0x06, 0x3e, 0x66, 0xc6, 0xc6, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0x06, 0x06, 0x06, 0x7e, 0x06, 0x06, 0x06, 0x06, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x08, 0xfe, 0x16, 0x16, 0x16, 0x7e, 0x16, 0x26, 0x26, 0x26, 0xfe, 0x40, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x03, 0x3e, 0x66, 0xcf, 0xdb, 0xdb, 0xf3, 0x66, 0x7c, 0xc0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x10, 0x38, 0x38, 0x6c, 0x6c, 0xc6, 0xc6, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0xc6, 0xc6, 0xc6, 0x6c, 0x6c, 0x38, 0x38, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x3e, 0x60, 0xc0, 0xc0, 0xfe, 0xc0, 0xc0, 0x60, 0x3e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x04, 0x3e, 0x64, 0xc8, 0xc8, 0xfe, 0xc8, 0xd0, 0x70, 0x3e, 0x20, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x3e, 0x60, 0xc0, 0xfe, 0xc0, 0x60, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xf8, 0x0c, 0x06, 0x06, 0xfe, 0x06, 0x06, 0x0c, 0xf8, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x08, 0xf8, 0x1c, 0x16, 0x26, 0xfe, 0x26, 0x26, 0x4c, 0xf8, 0x40, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xf8, 0x0c, 0x06, 0xfe, 0x06, 0x0c, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xff, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xe7, 0x00, 0x00},
-	{0x00, 0x00, 0xe7, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xff, 0x00, 0x00},
-	{0x00, 0x00, 0xff, 0xc1, 0x60, 0x30, 0x18, 0x0c, 0x0c, 0x18, 0x30, 0x60, 0xc1, 0xff, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0xc0, 0xc0, 0x00, 0x00, 0x00},
-	{0x00, 0xc0, 0xc0, 0x60, 0x60, 0x30, 0x30, 0x18, 0x18, 0x0c, 0x0c, 0x06, 0x06, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x18, 0x7e, 0x18, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x24, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x03, 0x03, 0x06, 0x06, 0x06, 0x0c, 0xcc, 0x6c, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xe3, 0x33, 0x66, 0x36, 0xe6, 0x0c, 0xcc, 0x6c, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x33, 0x73, 0xb6, 0xf6, 0x36, 0x0c, 0xcc, 0x6c, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xd8, 0xd8, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdb, 0xdb, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xff, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x16, 0x0c, 0x1c, 0x34, 0x62, 0xff, 0x02, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x38, 0xe8, 0x38, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x18, 0x1a, 0x1c, 0x38, 0x58, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6c, 0x6c, 0x6c, 0x6e, 0x7c, 0xec, 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x38, 0x38, 0x6c, 0x6c, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0x6c, 0x6c, 0x38, 0x38, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x1a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x58, 0x30, 0x00, 0x00},
-	{0x33, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xcc, 0x00, 0x00},
-	{0x2a, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0xa8, 0x00, 0x00},
-	{0x0c, 0x1a, 0x18, 0x18, 0x3c, 0x5a, 0x99, 0x99, 0x5a, 0x3c, 0x18, 0x18, 0x58, 0x30, 0x00, 0x00},
-	{0x33, 0x66, 0x66, 0x66, 0x7e, 0xe7, 0xe7, 0xe7, 0xe7, 0x7e, 0x66, 0x66, 0x66, 0xcc, 0x00, 0x00},
-	{0x2a, 0x54, 0x54, 0x54, 0x7c, 0xd6, 0xd6, 0xd6, 0xd6, 0x7c, 0x54, 0x54, 0x54, 0xa8, 0x00, 0x00},
-	{0x18, 0x34, 0x30, 0x30, 0x38, 0x35, 0x33, 0x37, 0x30, 0x30, 0x30, 0x30, 0xb0, 0x60, 0x00, 0x00},
-	{0x0c, 0x1a, 0x18, 0x18, 0x3c, 0x5a, 0xfa, 0x5a, 0x5a, 0x3c, 0x18, 0x18, 0x58, 0x30, 0x00, 0x00},
-	{0x0c, 0x1a, 0x18, 0x18, 0x3c, 0x5a, 0x5f, 0x5a, 0x5a, 0x3c, 0x18, 0x18, 0x58, 0x30, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0xfc, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x7e, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x76, 0xdc, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xdb, 0xdb, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x70, 0xd8, 0xdb, 0xdb, 0x1b, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x1c, 0x30, 0x30, 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x38, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x08, 0x08, 0x10, 0x76, 0xdc, 0x10, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x08, 0x08, 0x76, 0xdc, 0x10, 0xfe, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x08, 0xfe, 0x10, 0xfe, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x08, 0x08, 0x76, 0xdc, 0x10, 0xfe, 0x20, 0xfe, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x08, 0x08, 0x76, 0xdc, 0x10, 0x76, 0xdc, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x00, 0x76, 0xdc, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x76, 0xdc, 0x00, 0x76, 0xdc, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x7c, 0x00, 0x7c, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x18, 0x66, 0x00, 0x00, 0x66, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x18, 0x66, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x00, 0x7e, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x00, 0x7e, 0x00, 0x00, 0x7e, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x60, 0x60, 0x00, 0x7e, 0x00, 0x00, 0x7e, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x06, 0x06, 0x00, 0x7e, 0x00, 0x00, 0x7e, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xc0, 0xdf, 0x00, 0x00, 0xdf, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x03, 0xfb, 0x00, 0x00, 0xfb, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x28, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x28, 0x10, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x38, 0x44, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x28, 0x44, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x44, 0x28, 0x10, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x10, 0x10, 0x7c, 0x28, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x10, 0x28, 0x44, 0x7c, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x26, 0x7c, 0xb4, 0x6c, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x68, 0x54, 0x54, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x30, 0x08, 0x10, 0x00, 0x10, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x04, 0x08, 0x7e, 0x08, 0x10, 0x7e, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0xfe, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x04, 0x08, 0xfe, 0x08, 0x10, 0xfe, 0x10, 0x20, 0xfe, 0x20, 0x40, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0x00, 0x00, 0xfe, 0x00, 0x00, 0xfe, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x0e, 0x38, 0xe0, 0x38, 0x0e, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xe0, 0x38, 0x0e, 0x38, 0xe0, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x0e, 0x38, 0xe0, 0x38, 0x0e, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xe0, 0x38, 0x0e, 0x38, 0xe0, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x0e, 0x38, 0xe0, 0x38, 0x0e, 0x08, 0xfe, 0x10, 0xfe, 0x20, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xe0, 0x38, 0x0e, 0x38, 0xe0, 0x08, 0xfe, 0x10, 0xfe, 0x20, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x1b, 0x36, 0x6c, 0xd8, 0x6c, 0x36, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xd8, 0x6c, 0x36, 0x1b, 0x36, 0x6c, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x66, 0x18, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x66, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x08, 0xce, 0x7c, 0x10, 0x7c, 0xe6, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x04, 0x04, 0x0e, 0x38, 0xe8, 0x38, 0x0e, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x10, 0xe0, 0x38, 0x2e, 0x38, 0xe0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x04, 0x04, 0x0e, 0x38, 0xe8, 0x38, 0x0e, 0x10, 0xfe, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x10, 0xe0, 0x38, 0x2e, 0x38, 0xe0, 0x40, 0xfe, 0x40, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x0e, 0x38, 0xe0, 0x38, 0x0e, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xe0, 0x38, 0x0e, 0x38, 0xe0, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x04, 0x04, 0x0e, 0x38, 0xe8, 0x38, 0x0e, 0x10, 0x76, 0xdc, 0x20, 0x20, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x10, 0xe0, 0x38, 0x2e, 0x38, 0xe0, 0x40, 0x76, 0xdc, 0x80, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0e, 0x38, 0xe0, 0x38, 0x0e, 0xe0, 0x38, 0x0e, 0x38, 0xe0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xe0, 0x38, 0x0e, 0x38, 0xe0, 0x0e, 0x38, 0xe0, 0x38, 0x0e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x08, 0x0e, 0x38, 0xe8, 0x38, 0x1e, 0xf0, 0x38, 0x2e, 0x38, 0xe0, 0x20, 0x00, 0x00, 0x00},
-	{0x00, 0x08, 0xe8, 0x38, 0x0e, 0x38, 0xf0, 0x1e, 0x38, 0xe0, 0x38, 0x2e, 0x20, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x02, 0x06, 0x1c, 0xf0, 0x1c, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x80, 0xc0, 0x70, 0x1e, 0x70, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x02, 0x06, 0x1c, 0xf0, 0x1c, 0x06, 0xf2, 0x1c, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x80, 0xc0, 0x70, 0x1e, 0x70, 0xc0, 0x9e, 0x70, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x02, 0x06, 0x1c, 0xf0, 0x1c, 0x06, 0x02, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x80, 0xc0, 0x70, 0x1e, 0x70, 0xc0, 0x80, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x04, 0x06, 0x0c, 0x38, 0xe8, 0x38, 0x1c, 0x16, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0xd0, 0x70, 0x38, 0x2e, 0x38, 0x60, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x7e, 0xc0, 0xc0, 0xc0, 0xc0, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xfc, 0x06, 0x06, 0x06, 0x06, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x04, 0x7e, 0xc8, 0xc8, 0xd0, 0xd0, 0x7e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x08, 0xfc, 0x16, 0x16, 0x26, 0x26, 0xfc, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x7e, 0xc0, 0xc0, 0xc0, 0xc0, 0x7e, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xfc, 0x06, 0x06, 0x06, 0x06, 0xfc, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x04, 0x7e, 0xc8, 0xc8, 0xd0, 0xd0, 0x7e, 0x20, 0xfe, 0x40, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x08, 0xfc, 0x16, 0x16, 0x26, 0x26, 0xfc, 0x40, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x7e, 0xc0, 0xc0, 0xc0, 0xc0, 0x7e, 0x08, 0xfe, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xfc, 0x06, 0x06, 0x06, 0x06, 0xfc, 0x10, 0xfe, 0x20, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x82, 0x92, 0xa2, 0xfa, 0xa2, 0x92, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x82, 0x82, 0x92, 0xba, 0xba, 0x92, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x82, 0x82, 0x92, 0xba, 0x92, 0x82, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0x06, 0x06, 0x06, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xfe, 0x06, 0x06, 0x06, 0x06, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x38, 0x54, 0x92, 0xfe, 0x92, 0x54, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x82, 0xfe, 0x82, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0xaa, 0x92, 0xaa, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x8a, 0x92, 0xa2, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x92, 0xba, 0x92, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x92, 0xaa, 0x92, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x38, 0x54, 0xd6, 0xba, 0xd6, 0x54, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0xba, 0x82, 0xba, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x82, 0xba, 0x82, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xfe, 0x92, 0x92, 0xfe, 0x92, 0x92, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xfe, 0x82, 0x82, 0xfe, 0x82, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xfe, 0xc6, 0xaa, 0x92, 0xaa, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xfe, 0x82, 0x92, 0xba, 0x92, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0xff, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x7e, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x7e, 0x60, 0x7e, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xd8, 0xd8, 0xd8, 0xd8, 0xdf, 0xd8, 0xd8, 0xd8, 0xd8, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xa8, 0xa8, 0xa8, 0xa8, 0xaf, 0xa8, 0xa8, 0xa8, 0xa8, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xd8, 0xd8, 0xd8, 0xdf, 0xd8, 0xdf, 0xd8, 0xd8, 0xd8, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xc0, 0xc2, 0xc4, 0xc4, 0xff, 0xc8, 0xc8, 0xd0, 0xc0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xc0, 0xc4, 0xc4, 0xff, 0xc8, 0xff, 0xd0, 0xd0, 0xc0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xd8, 0xd9, 0xda, 0xda, 0xdf, 0xda, 0xda, 0xdc, 0xd8, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xd8, 0xd9, 0xda, 0xdf, 0xda, 0xdf, 0xda, 0xdc, 0xd8, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x0c, 0x06, 0x1c, 0xf0, 0x1c, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x60, 0xc0, 0x70, 0x1e, 0x70, 0xc0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x06, 0x1e, 0x76, 0xc6, 0x76, 0x1e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xc0, 0xf0, 0xdc, 0xc6, 0xdc, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x06, 0x1e, 0x76, 0xc6, 0x76, 0x1e, 0x06, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc0, 0xf0, 0xdc, 0xc6, 0xdc, 0xf0, 0xc0, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xbf, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xfd, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x7d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0xc6, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc6, 0xc6, 0x6c, 0x6c, 0x38, 0x38, 0x10, 0x10, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0x00, 0x10, 0x10, 0x38, 0x38, 0x6c, 0x6c, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0x00, 0xc6, 0xc6, 0x6c, 0x6c, 0x38, 0x38, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xf0, 0xc8, 0xc4, 0xc4, 0xff, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0b, 0x13, 0x23, 0x43, 0x83, 0xff, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x10, 0x10, 0x38, 0x38, 0x6c, 0x6c, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xc6, 0xc6, 0x6c, 0x6c, 0x38, 0x38, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x7c, 0x38, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x92, 0x44, 0x28, 0x92, 0x28, 0x44, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x82, 0xc6, 0xaa, 0x92, 0xaa, 0xc6, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x82, 0xc4, 0xa8, 0x90, 0xa8, 0xc4, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x82, 0x46, 0x2a, 0x12, 0x2a, 0x46, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x28, 0x44, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x08, 0x10, 0x28, 0x44, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x38, 0x38, 0x6c, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xc6, 0x6c, 0x6c, 0x38, 0x38, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x3e, 0x60, 0xce, 0xd8, 0xd8, 0xce, 0x60, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xf8, 0x0c, 0xe6, 0x36, 0x36, 0xe6, 0x0c, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x38, 0x44, 0x92, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x92, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x10, 0x38, 0x54, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x18, 0x30, 0x64, 0xce, 0x64, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x4c, 0xe6, 0x4c, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x15, 0x2a, 0x54, 0xa8, 0x54, 0x2a, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xa8, 0x54, 0x2a, 0x15, 0x2a, 0x54, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x0e, 0x38, 0xe0, 0x38, 0x0e, 0x00, 0xfe, 0x00, 0xe0, 0x38, 0x0e, 0x38, 0xe0, 0x00, 0x00},
-	{0x00, 0xe0, 0x38, 0x0e, 0x38, 0xe0, 0x00, 0xfe, 0x00, 0x0e, 0x38, 0xe0, 0x38, 0x0e, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x0e, 0x38, 0xe0, 0x38, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0xe0, 0x38, 0x0e, 0x38, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x02, 0x06, 0x1c, 0xf2, 0x06, 0x1c, 0xf0, 0x1c, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x80, 0xc0, 0x70, 0x9e, 0xc0, 0x70, 0x1e, 0x70, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0a, 0x0e, 0x1c, 0xf0, 0x1c, 0x16, 0xf2, 0x1c, 0x26, 0x22, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x88, 0xc8, 0x70, 0x1e, 0x70, 0xd0, 0x9e, 0x70, 0xe0, 0xa0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x04, 0xfe, 0xc8, 0xc8, 0xd0, 0xd0, 0xfe, 0x20, 0xfe, 0x40, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x08, 0xfe, 0x16, 0x16, 0x26, 0x26, 0xfe, 0x40, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0xfe, 0x08, 0xfe, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xfe, 0x06, 0x06, 0x06, 0x06, 0xfe, 0x10, 0xfe, 0x20, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x0e, 0x38, 0xe0, 0x38, 0x0e, 0x10, 0x76, 0xdc, 0x10, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xe0, 0x38, 0x0e, 0x38, 0xe0, 0x10, 0x76, 0xdc, 0x10, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x02, 0x06, 0x1c, 0xf0, 0x1c, 0x06, 0x02, 0x10, 0x76, 0xdc, 0x10, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x80, 0xc0, 0x70, 0x1e, 0x70, 0xc0, 0x80, 0x10, 0x76, 0xdc, 0x10, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x08, 0x0e, 0x1e, 0x76, 0xd6, 0x76, 0x1e, 0x26, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x08, 0xc8, 0xf0, 0xdc, 0xd6, 0xdc, 0xf0, 0xe0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x08, 0x0e, 0x1e, 0x76, 0xd6, 0x76, 0x1e, 0x26, 0x20, 0xfe, 0x40, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x08, 0xc8, 0xf0, 0xdc, 0xd6, 0xdc, 0xf0, 0xe0, 0x20, 0xfe, 0x40, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdb, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x3d, 0x66, 0xc7, 0xcb, 0xd3, 0xe3, 0x66, 0xbc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x1e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x00, 0x00, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1e, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x42, 0xa5, 0x7e, 0x24, 0x24, 0x7e, 0xa5, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x38, 0x38, 0x54, 0x8a, 0xf6, 0x82, 0x54, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0xfe, 0xfe, 0x44, 0x44, 0x28, 0x10, 0x28, 0x44, 0x44, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0e, 0x1b, 0x1b, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xd8, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x0c, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0x30, 0x30, 0x18, 0x18, 0x0c, 0x0c, 0x00, 0x00},
-	{0x60, 0x60, 0x30, 0x30, 0x18, 0x18, 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0x00, 0x00},
-	{0x00, 0x03, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30},
-	{0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30},
-	{0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x06, 0x03, 0x00, 0x00},
-	{0x00, 0xc0, 0x60, 0x30, 0x30, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c},
-	{0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c},
-	{0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x18, 0x18, 0x30, 0x30, 0x60, 0xc0, 0x00, 0x00},
-	{0x00, 0x3f, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30},
-	{0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30},
-	{0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3f, 0x00, 0x00},
-	{0x00, 0xfc, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c},
-	{0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c},
-	{0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xfc, 0x00, 0x00},
-	{0x00, 0x07, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x30, 0xe0, 0x30, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x07, 0x00, 0x00},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x00, 0xe0, 0x30, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x07, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x30, 0xe0, 0x00, 0x00},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x07, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x30, 0xe0},
-	{0xe0, 0x30, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x07},
-	{0x00, 0x00, 0xff, 0xc1, 0xc0, 0x60, 0x60, 0x60, 0x60, 0x30, 0x30, 0x30, 0x30, 0x18, 0x18, 0x18},
-	{0x18, 0x18, 0x18, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0x60, 0xc0, 0xc1, 0xff, 0x00, 0x00},
-	{0x00, 0x00, 0xff, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xff, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xff, 0x00, 0xff, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xd8, 0xd8, 0x78, 0x78, 0x38, 0x38, 0x18, 0x18, 0x00, 0x00},
-	{0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0},
-	{0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03},
-	{0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x07, 0x05, 0x05, 0x05, 0x05, 0x25, 0x79, 0xc2, 0x7c, 0x20, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xd8, 0xd8, 0xf8, 0xd8, 0xd8, 0x0f, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xf0, 0x0f, 0x0c, 0x0e, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xd8, 0xd8, 0xf8, 0x70, 0x20, 0x0f, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xf0, 0xc0, 0xe0, 0xc0, 0xc0, 0x0f, 0x0c, 0x0e, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x70, 0xc0, 0xc0, 0xc0, 0x70, 0x1e, 0x1b, 0x1e, 0x1b, 0x1b, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x98, 0xd8, 0xf8, 0xd8, 0xd8, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7c, 0xfe, 0xc6, 0xc6, 0x60, 0x30, 0x30, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00},
-	{0x1c, 0x1c, 0x1c, 0x1c, 0x00, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x00, 0x1c, 0x1c, 0x1c, 0x1c, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00},
-	{0x1c, 0x1c, 0x1c, 0x00, 0x1c, 0x1c, 0x1c, 0x00, 0x1c, 0x1c, 0x1c, 0x00, 0x1c, 0x1c, 0x1c, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
-	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1f, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
-	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1f, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x1f, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
-	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1f, 0x1f, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xfc, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xfc, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
-	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xfc, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
-	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xfc, 0xfc, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xfc, 0xfc, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
-	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xfc, 0xfc, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x1f, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
-	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
-	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0xfc, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0xfc, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x1f, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
-	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0xff, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
-	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0xfc, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
-	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0x1f, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
-	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0xff, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00},
-	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x00, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0xf6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, 0x06, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36},
-	{0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36},
-	{0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, 0x06, 0xf6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xf7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xf7, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xff, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36},
-	{0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xf7, 0x00, 0xf7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0e, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x70, 0x30, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x30, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80},
-	{0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01},
-	{0x81, 0x81, 0x42, 0x42, 0x24, 0x24, 0x18, 0x18, 0x18, 0x18, 0x24, 0x24, 0x42, 0x42, 0x81, 0x81},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
-	{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
-	{0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
-	{0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
-	{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
-	{0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe},
-	{0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc},
-	{0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8},
-	{0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0},
-	{0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0},
-	{0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0},
-	{0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80},
-	{0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f},
-	{0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44},
-	{0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa},
-	{0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77},
-	{0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01},
-	{0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xfe, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x7c, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xfe, 0x82, 0xba, 0xba, 0xba, 0xba, 0xba, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xfe, 0x82, 0xfe, 0x82, 0xfe, 0x82, 0xfe, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xfe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xfe, 0xaa, 0xfe, 0xaa, 0xfe, 0xaa, 0xfe, 0xaa, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xfe, 0x8a, 0xc6, 0xa2, 0x92, 0x8a, 0xc6, 0xa2, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xfe, 0xa2, 0xc6, 0x8a, 0x92, 0xa2, 0xc6, 0x8a, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xfe, 0xaa, 0xc6, 0xaa, 0x92, 0xaa, 0xc6, 0xaa, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x44, 0x44, 0x44, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x82, 0x82, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0xfe, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x7e, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x42, 0x42, 0x84, 0x84, 0xfc, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x38, 0x7c, 0x7c, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x28, 0x44, 0x44, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x38, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x28, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x80, 0xc0, 0xa0, 0x90, 0x88, 0x84, 0x88, 0x90, 0xa0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x70, 0x78, 0x70, 0x40, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x70, 0x48, 0x70, 0x40, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf8, 0xfe, 0xf8, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x98, 0x86, 0x98, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0xfe, 0x7c, 0x7c, 0x38, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0x82, 0x44, 0x44, 0x28, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x38, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x28, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x02, 0x06, 0x0e, 0x1e, 0x3e, 0x7e, 0x3e, 0x1e, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x02, 0x06, 0x0a, 0x12, 0x22, 0x42, 0x22, 0x12, 0x0a, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x38, 0x78, 0x38, 0x08, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x38, 0x48, 0x38, 0x08, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x3e, 0xfe, 0x3e, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x32, 0xc2, 0x32, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x38, 0x7c, 0x7c, 0xfe, 0xfe, 0x7c, 0x7c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x28, 0x44, 0x44, 0x82, 0x82, 0x44, 0x44, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x28, 0x44, 0x54, 0xba, 0xba, 0x54, 0x44, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x42, 0x99, 0xbd, 0xbd, 0xbd, 0xbd, 0x99, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x28, 0x28, 0x44, 0x82, 0x82, 0x44, 0x28, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x42, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x14, 0x40, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x02, 0x28, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x42, 0x99, 0xa5, 0xa5, 0xa5, 0xa5, 0x99, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7e, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x72, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0x72, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x4e, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x4e, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x42, 0x81, 0x81, 0x81, 0xff, 0xff, 0xff, 0x7e, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x7e, 0xff, 0xff, 0xff, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x4e, 0x8f, 0x8f, 0x8f, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x4e, 0x8f, 0x8f, 0x8f, 0xff, 0xff, 0xff, 0x7e, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x30, 0x70, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0x70, 0x30, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x0c, 0x00, 0x00, 0x00, 0x00},
-	{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xc3, 0xc3, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
-	{0xff, 0xff, 0xc3, 0xbd, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0xbd, 0xc3, 0xff, 0xff, 0xff, 0xff},
-	{0xff, 0xff, 0xc3, 0xbd, 0x7e, 0x7e, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x7e, 0xbd, 0xc3, 0xff, 0xff, 0xff, 0xff},
-	{0x00, 0x00, 0x30, 0x40, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0c, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x0c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x30, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x42, 0x81, 0x81, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x01, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0f, 0x0f, 0x1f, 0x1f, 0x3f, 0x3f, 0x7f, 0x7f, 0xff, 0xff},
-	{0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0xf0, 0xf0, 0xf8, 0xf8, 0xfc, 0xfc, 0xfe, 0xfe, 0xff, 0xff},
-	{0xff, 0xff, 0xfe, 0xfe, 0xfc, 0xfc, 0xf8, 0xf8, 0xf0, 0xf0, 0xe0, 0xe0, 0xc0, 0xc0, 0x80, 0x80},
-	{0xff, 0xff, 0x7f, 0x7f, 0x3f, 0x3f, 0x1f, 0x1f, 0x0f, 0x0f, 0x07, 0x07, 0x03, 0x03, 0x01, 0x01},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x42, 0x42, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xff, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xff, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xff, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0xff, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xff, 0xff, 0xfd, 0xf9, 0xf1, 0xf1, 0xe1, 0xc1, 0x81, 0xff, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xff, 0x81, 0x83, 0x87, 0x8f, 0x8f, 0x9f, 0xbf, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xff, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xff, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x10, 0x10, 0x28, 0x28, 0x44, 0x44, 0x92, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x10, 0x10, 0x38, 0x38, 0x74, 0x74, 0xf2, 0xf2, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x10, 0x10, 0x38, 0x38, 0x5c, 0x5c, 0x9e, 0x9e, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x42, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xfe, 0x92, 0x92, 0x92, 0xf2, 0x82, 0x82, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xfe, 0x82, 0x82, 0x82, 0xf2, 0x92, 0x92, 0x92, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xfe, 0x82, 0x82, 0x82, 0x9e, 0x92, 0x92, 0x92, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xfe, 0x92, 0x92, 0x92, 0x9e, 0x82, 0x82, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x4a, 0x89, 0x89, 0x89, 0xf9, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x42, 0x81, 0x81, 0xf9, 0x89, 0x89, 0x89, 0x4a, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x42, 0x81, 0x81, 0x9f, 0x91, 0x91, 0x91, 0x52, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x52, 0x91, 0x91, 0x91, 0x9f, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x10, 0x10, 0x54, 0x38, 0xfe, 0x38, 0x54, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x30, 0x7c, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x38, 0x7c, 0xfe, 0x10, 0x10, 0x10, 0x10, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x10, 0x10, 0x38, 0xfe, 0x7c, 0x38, 0x6c, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x10, 0x10, 0x28, 0xee, 0x44, 0x54, 0x6c, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x08, 0x18, 0x30, 0x60, 0xc0, 0x60, 0x34, 0x1c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0xc6, 0xcc, 0xd8, 0xf0, 0xd8, 0xcd, 0xc7, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x82, 0x92, 0x82, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x18, 0x24, 0x42, 0x42, 0x42, 0xa5, 0xa5, 0x42, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x42, 0xa5, 0xa5, 0x42, 0x42, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0c, 0x78, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x1c, 0x36, 0x36, 0x1c, 0x18, 0x30, 0x70, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xfe, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xfe, 0x82, 0x86, 0x8a, 0xba, 0x92, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0xfe, 0x82, 0xee, 0xba, 0xba, 0xee, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x82, 0xc6, 0x6c, 0x7c, 0x38, 0x7c, 0x6c, 0xc6, 0x82, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x7c, 0x82, 0xaa, 0x82, 0x44, 0x7c, 0x44, 0x38, 0x00, 0x44, 0xc6, 0x38, 0xc6, 0x44, 0x00},
-	{0x00, 0x00, 0x00, 0x38, 0x44, 0xee, 0xfe, 0x92, 0xba, 0x7c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x7e, 0x18, 0x18, 0xff, 0x18, 0x1e, 0x78, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x7e, 0x18, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x38, 0x10, 0x10, 0x92, 0xfe, 0x92, 0x10, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x72, 0xe0, 0xc4, 0xdf, 0xce, 0xca, 0xe0, 0x72, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x54, 0x28, 0x54, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x5a, 0x99, 0x99, 0x99, 0xbd, 0xff, 0xdb, 0x5a, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x42, 0x81, 0x85, 0xb1, 0xf9, 0xff, 0xdf, 0x7e, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xee, 0xee, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0xee, 0xee, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xee, 0xee, 0x00, 0x00, 0xee, 0xee, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0xee, 0xee, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xee, 0xee, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0xee, 0xee, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0xee, 0xee, 0x00, 0x00, 0xee, 0xee, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xee, 0xee, 0x00, 0x00, 0xee, 0xee, 0x00, 0x00, 0xee, 0xee, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7e, 0x81, 0xa5, 0x81, 0x81, 0x81, 0x99, 0xa5, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7e, 0x81, 0xa5, 0x81, 0x81, 0xa5, 0x99, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7e, 0xff, 0xdb, 0xff, 0xff, 0xdb, 0xe7, 0xff, 0xff, 0x7e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x10, 0x10, 0x54, 0x28, 0xc6, 0x28, 0x54, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x78, 0x14, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x14, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x1e, 0x28, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x28, 0x1e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x66, 0x66, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x1e, 0x06, 0x0e, 0x1a, 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x03, 0x03, 0x7b, 0xcf, 0xcf, 0xcf, 0x0f, 0x1b, 0x33, 0xff, 0x03, 0x03, 0x03, 0x00, 0x00},
-	{0x00, 0x00, 0x60, 0xf0, 0x60, 0x6e, 0x73, 0x63, 0x63, 0x66, 0x66, 0x63, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xd6, 0x54, 0x54, 0x7c, 0x54, 0x54, 0xd6, 0x38, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x3c, 0xdb, 0xdb, 0xdb, 0xdb, 0x7e, 0x3c, 0x18, 0x3c, 0x18, 0x18, 0x00, 0x00},
-	{0x00, 0x00, 0xf8, 0xcc, 0xcc, 0xcc, 0xcc, 0xf8, 0xc0, 0xc0, 0xc0, 0xc0, 0xfe, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x42, 0xa5, 0xa5, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0xc3, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00},
-	{0x00, 0x00, 0xc3, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7e, 0xc3, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7e, 0xdb, 0xd8, 0x70, 0x00, 0x00, 0x0e, 0x1b, 0xdb, 0x7e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x1e, 0x33, 0x33, 0x33, 0x33, 0x1b, 0x7b, 0xdb, 0xdb, 0x73, 0x03, 0x01, 0x00, 0x00},
-	{0x00, 0x00, 0x94, 0x7c, 0x55, 0x57, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x06, 0x0b, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x24, 0xe7, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x94, 0x7c, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x04, 0x03, 0x00, 0x00},
-	{0x00, 0x00, 0x1f, 0x07, 0x8f, 0xdb, 0x73, 0x70, 0xd8, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x90, 0x50, 0x70, 0x68, 0x48, 0x48, 0x4e, 0x49, 0x09, 0x0e, 0x10, 0x20, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x2a, 0x7e, 0xaa, 0x00, 0x00, 0x2a, 0x7e, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc3, 0x66, 0x66, 0x66, 0x66, 0xff, 0x66, 0x66, 0x66, 0x66, 0xc3, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x18, 0x3c, 0x7e, 0xff, 0xff, 0x7e, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x6c, 0x92, 0x82, 0x82, 0x82, 0x44, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x44, 0x82, 0x44, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0xe7, 0xe7, 0xe7, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x18, 0x24, 0x42, 0x81, 0x81, 0x66, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x6c, 0xfe, 0xfe, 0xfe, 0xfe, 0x7c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x7c, 0xfe, 0x7c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x18, 0x24, 0x3c, 0xe7, 0xa5, 0xe7, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, 0x78, 0x70, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x30, 0x3c, 0x3e, 0x32, 0x30, 0x30, 0x30, 0x70, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x70, 0x7f, 0x6f, 0x63, 0x63, 0x63, 0x63, 0xe3, 0xe7, 0xc7, 0x06, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x7f, 0x63, 0x7f, 0x63, 0x63, 0x63, 0x63, 0x63, 0xe7, 0xe7, 0xc6, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xcc, 0xde, 0xe6, 0xc4, 0xd8, 0xe0, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x40, 0x40, 0x44, 0x5c, 0x74, 0x44, 0x44, 0x5c, 0x74, 0x44, 0x04, 0x04, 0x00, 0x00},
-	{0x00, 0x00, 0x04, 0x04, 0x46, 0x5c, 0x74, 0xc4, 0x46, 0x5c, 0x74, 0xc4, 0x40, 0x40, 0x00, 0x00},
-	{0x00, 0x00, 0x3b, 0x66, 0x66, 0x66, 0xff, 0x66, 0x66, 0x66, 0x66, 0xff, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3c, 0x6e, 0x66, 0x60, 0xfe, 0x66, 0x66, 0x66, 0x66, 0xff, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x3e, 0x6e, 0x66, 0x66, 0xfe, 0x66, 0x66, 0x66, 0x66, 0xff, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6e, 0xdb, 0xdb, 0xd8, 0xff, 0xdb, 0xdb, 0xdb, 0xdb, 0xff, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x6f, 0xdb, 0xdb, 0xdb, 0xff, 0xdb, 0xdb, 0xdb, 0xdb, 0xff, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x38, 0x6c, 0x6c, 0x6f, 0x6c, 0x6c, 0x6c, 0x6c, 0x6d, 0xf6, 0x00, 0x00, 0x00, 0x00},
-	{0x06, 0x29, 0x5e, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x06, 0x29, 0x5e, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x81, 0x7e, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0xf7, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x81, 0x7e, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0xf7, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x81, 0x7e, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0xf7, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00},
-	{0x00, 0x08, 0x00, 0x08, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x08, 0x00, 0x08, 0x00, 0x40, 0x80, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x08, 0x08, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x14, 0x00, 0x14, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x14, 0x00, 0x14, 0x00, 0x40, 0x80, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x08, 0x08, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x1c, 0x14, 0x38, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x1c, 0x14, 0x38, 0x00, 0x40, 0x80, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x1c, 0x14, 0x38, 0x00, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x1c, 0x14, 0x38, 0x00, 0x00, 0x08, 0x08, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x04, 0x00, 0x0a, 0x00, 0x06, 0x49, 0x85, 0x83, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x04, 0x00, 0x0a, 0x00, 0x06, 0x49, 0x89, 0x86, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x08, 0x00, 0x14, 0x00, 0x0c, 0x12, 0x0a, 0x06, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x08, 0x00, 0x14, 0x00, 0x0c, 0x12, 0x12, 0x0c, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x0a, 0x00, 0x0a, 0x00, 0x06, 0x49, 0x85, 0x83, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x0a, 0x00, 0x0a, 0x00, 0x06, 0x49, 0x89, 0x86, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x14, 0x00, 0x14, 0x00, 0x0c, 0x12, 0x0a, 0x06, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x14, 0x00, 0x14, 0x00, 0x0c, 0x12, 0x12, 0x0c, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x88, 0x80, 0x88, 0x41, 0x3e, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x32, 0x41, 0x88, 0x80, 0x88, 0x40, 0x3e, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x47, 0x18, 0xe0, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x32, 0xc1, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x80, 0x94, 0x80, 0x41, 0x3e, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x32, 0x41, 0x80, 0x94, 0x80, 0x40, 0x3e, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x47, 0x18, 0xe0, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x32, 0xc1, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x94, 0x80, 0x88, 0x41, 0x3e, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x32, 0x41, 0x94, 0x80, 0x88, 0x40, 0x3e, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x47, 0x18, 0xe0, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x32, 0xc1, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x94, 0x80, 0x94, 0x41, 0x3e, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x32, 0x41, 0x94, 0x80, 0x94, 0x40, 0x3e, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x47, 0x18, 0xe0, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x32, 0xc1, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x04, 0x46, 0x39, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x28, 0x00, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x28, 0x00, 0x08, 0x08, 0x04, 0x46, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x00, 0x28, 0x00, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x00, 0x28, 0x00, 0x08, 0x08, 0x04, 0x46, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x20, 0x38, 0x28, 0x70, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x20, 0x38, 0x28, 0x70, 0x08, 0x08, 0x04, 0x46, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x08, 0x00, 0x14, 0x00, 0x00, 0x04, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x00, 0x04, 0x07, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x1c, 0x14, 0x38, 0x00, 0x04, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x1c, 0x14, 0x38, 0x00, 0x00, 0x00, 0x04, 0x07, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x01, 0x02, 0x04, 0x08, 0x44, 0x82, 0x82, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x01, 0x02, 0x04, 0x08, 0x48, 0x84, 0x82, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x06, 0x18, 0x20, 0x10, 0x08, 0x08, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x06, 0x18, 0x20, 0x20, 0x10, 0x08, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x04, 0x09, 0x12, 0x04, 0x08, 0x44, 0x82, 0x82, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x04, 0x09, 0x12, 0x04, 0x08, 0x48, 0x84, 0x82, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x30, 0x46, 0x18, 0x20, 0x10, 0x08, 0x08, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x30, 0x46, 0x18, 0x20, 0x20, 0x10, 0x08, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x04, 0x09, 0x12, 0x04, 0x08, 0x44, 0x82, 0x82, 0x7c, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00},
-	{0x04, 0x09, 0x12, 0x04, 0x08, 0x48, 0x84, 0x82, 0x7d, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00},
-	{0x0c, 0x30, 0x46, 0x18, 0x20, 0x10, 0x08, 0x08, 0xf0, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00},
-	{0x0c, 0x30, 0x46, 0x18, 0x20, 0x20, 0x10, 0x08, 0xf7, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00},
-	{0xa4, 0x09, 0x12, 0x04, 0x08, 0x44, 0x82, 0x82, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0xa4, 0x09, 0x12, 0x04, 0x08, 0x48, 0x84, 0x82, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0xa2, 0x0c, 0x13, 0x0c, 0x10, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0xa2, 0x0c, 0x13, 0x0c, 0x10, 0x10, 0x08, 0x04, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x41, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00},
-	{0x10, 0x1c, 0x14, 0x38, 0x00, 0x41, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x1c, 0x14, 0x38, 0x00, 0x00, 0x00, 0x01, 0x41, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00},
-	{0x10, 0x1c, 0x14, 0x38, 0x00, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x1c, 0x14, 0x38, 0x00, 0x00, 0x08, 0x08, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x38, 0x40, 0x38, 0x40, 0x18, 0x24, 0x22, 0x22, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x70, 0x80, 0x70, 0x80, 0x10, 0x68, 0x88, 0x74, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x18, 0x24, 0x22, 0x22, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xf0, 0x10, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xf7, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x10, 0x38, 0x4c, 0x52, 0x32, 0x3d, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x10, 0x38, 0x4c, 0x52, 0x32, 0x3d, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x10, 0x38, 0x4c, 0x52, 0x32, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x10, 0x38, 0x4c, 0x52, 0x32, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x14, 0x60, 0x80, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x20, 0x3f, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x70, 0x80, 0x70, 0x80, 0x08, 0x14, 0x60, 0x80, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x1c, 0x20, 0x1c, 0x20, 0x00, 0x00, 0x07, 0x18, 0x20, 0x3f, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x00, 0x29, 0x01, 0x19, 0x21, 0x19, 0xa1, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x00, 0x2a, 0x02, 0x32, 0x42, 0x32, 0xc6, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x40, 0x00, 0xa3, 0x0c, 0x10, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x40, 0x00, 0xa3, 0x0c, 0x10, 0x10, 0x08, 0x04, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x28, 0x18, 0x10, 0x20, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x28, 0x18, 0x10, 0x20, 0x00, 0x0c, 0x12, 0x0f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00},
-	{0x00, 0x14, 0x08, 0x00, 0x00, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x14, 0x08, 0x00, 0x00, 0x00, 0x0c, 0x12, 0x0f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00},
-	{0x08, 0x08, 0x08, 0x08, 0x00, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x0c, 0x12, 0x0f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00},
-	{0x23, 0x54, 0x33, 0x24, 0x40, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x08, 0x00, 0x14, 0x00, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x0c, 0x12, 0x0f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x12, 0x0e, 0x02, 0x3c, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x14, 0x08, 0x00, 0x00, 0x00, 0x0c, 0x12, 0x0f, 0x02, 0x3c, 0x18, 0x60, 0x00, 0x00, 0x00},
-	{0x00, 0x08, 0x14, 0x00, 0x00, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x08, 0x14, 0x00, 0x00, 0x00, 0x0c, 0x12, 0x0f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x88, 0x86, 0x81, 0x81, 0x7e, 0x00, 0x10, 0x00, 0x10},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x88, 0x87, 0x81, 0x7e, 0x10, 0x00, 0x10},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0xf7, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x88, 0x86, 0x81, 0x82, 0x7c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x88, 0x87, 0x81, 0x7e, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0xf7, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00},
-	{0x20, 0x20, 0x20, 0x20, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x10, 0x10, 0x10, 0x00, 0x04, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x10, 0x10, 0x10, 0x00, 0x07, 0x08, 0x88, 0x86, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x24, 0x98, 0x60, 0xc2, 0x12, 0x92, 0x9c, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x02, 0x92, 0x9c, 0x60, 0x0e, 0x70, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x60, 0x04, 0x54, 0x58, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x28, 0x10, 0x60, 0x04, 0x54, 0x58, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x04, 0x54, 0x58, 0x20, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x10, 0x04, 0x54, 0x58, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x07, 0x88, 0x87, 0x81, 0x7e, 0x00, 0x00, 0x00},
-	{0x0e, 0xf0, 0x02, 0x92, 0x9c, 0x60, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x24, 0x18, 0x60, 0x02, 0x92, 0x9c, 0x60, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x02, 0x12, 0x9c, 0x60, 0x0e, 0x70, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x10, 0x28, 0x50, 0x28, 0x08, 0x08, 0x08, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x08, 0x14, 0x28, 0x14, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x04, 0x08, 0x10, 0x54, 0x38, 0x54, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x20, 0x10, 0x08, 0x2a, 0x1c, 0x2a, 0x08, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x2a, 0x14, 0x00, 0x21, 0x69, 0xa9, 0x69, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x24, 0x08, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x10, 0x10, 0x20, 0x10, 0x10, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x08, 0x08, 0x04, 0x08, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x10, 0x10, 0x10, 0x10, 0x10, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x08, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x7c, 0x28, 0x7c, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x28, 0x10, 0x2a, 0x24, 0x1a, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x7c, 0x38, 0x38, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x7c, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x20, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x54, 0x30, 0x18, 0x54, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x08, 0x08, 0x10, 0x10, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x54, 0x58, 0x40, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x30, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x06, 0x18, 0x60, 0x06, 0x18, 0x60, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x12, 0xca, 0x2c, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x30, 0x0c, 0x30, 0x00, 0x00},
-	{0x0c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x06, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x08, 0x14, 0x0c, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x24, 0x14, 0x18, 0x60, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x30, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x06, 0x18, 0x60, 0x00, 0x00},
-	{0x0a, 0x2a, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x02, 0x12, 0x92, 0x9c, 0x60, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x24, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x18, 0x24, 0x20, 0x1e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x02, 0x3c, 0x40, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x01, 0x3e, 0x40, 0x08, 0x08, 0x08, 0x08, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x18, 0x20, 0x1c, 0x20, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x0c, 0x10, 0x0e, 0x10, 0x04, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x1c, 0x20, 0x1c, 0x20, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x1c, 0x20, 0x1c, 0x20, 0x00, 0x0c, 0x12, 0x0f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x0c, 0x10, 0x0e, 0x10, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x00, 0x0c, 0x10, 0x0e, 0x10, 0x00, 0x00},
-	{0x00, 0x30, 0x40, 0x38, 0x40, 0x07, 0x08, 0x88, 0x86, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x30, 0x40, 0x38, 0x40, 0x00, 0x00, 0x00, 0x07, 0x88, 0x87, 0x81, 0x7e, 0x00, 0x00, 0x00},
-	{0x00, 0x1c, 0x20, 0x1c, 0x20, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x1c, 0x20, 0x1c, 0x20, 0x00, 0x08, 0x08, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x81, 0x7e, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0xf7, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x28, 0x00, 0x00, 0x18, 0x24, 0x22, 0x22, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x50, 0x00, 0x10, 0x10, 0x68, 0x88, 0x74, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x14, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x14, 0x00, 0x40, 0x80, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x14, 0x00, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x08, 0x08, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x08, 0x00, 0x14, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x08, 0x00, 0x14, 0x00, 0x40, 0x80, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x08, 0x00, 0x14, 0x00, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x08, 0x00, 0x14, 0x00, 0x00, 0x08, 0x08, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x80, 0x88, 0x80, 0x41, 0x3e, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x32, 0x41, 0x80, 0x88, 0x80, 0x40, 0x3e, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x47, 0x18, 0xe0, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x32, 0xc1, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x80, 0x80, 0x80, 0x41, 0x3e, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x32, 0x41, 0x80, 0x80, 0x80, 0x40, 0x3e, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x47, 0x18, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x32, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x20, 0x00, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x80, 0x80, 0x80, 0x41, 0x3e, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x20, 0x00, 0x00, 0x70, 0x8f, 0x32, 0x41, 0x80, 0x80, 0x80, 0x40, 0x3e, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x10, 0x00, 0x38, 0x47, 0x18, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x00, 0x00, 0x70, 0x8f, 0x32, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x04, 0x46, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x00, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x00, 0x08, 0x08, 0x04, 0x46, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x07, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x08, 0x00, 0x00, 0x04, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x04, 0x07, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x15, 0x88, 0x84, 0x84, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x15, 0x88, 0x84, 0x84, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x15, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xd5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x08, 0x00, 0x14, 0x00, 0x01, 0x15, 0x88, 0x84, 0x84, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x01, 0x15, 0x88, 0x84, 0x84, 0x78, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x01, 0x15, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x08, 0x00, 0x14, 0x00, 0x00, 0x00, 0x2a, 0xd5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x31, 0x9e, 0x88, 0x88, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x31, 0x9e, 0x88, 0x88, 0x70, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x29, 0x31, 0xde, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x29, 0x31, 0xde, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x04, 0x00, 0x06, 0x09, 0x31, 0x9e, 0x88, 0x88, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x04, 0x00, 0x06, 0x09, 0x31, 0x9e, 0x88, 0x88, 0x70, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x04, 0x00, 0x00, 0x06, 0x29, 0x31, 0xde, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x04, 0x00, 0x00, 0x06, 0x29, 0x31, 0xde, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x20, 0x20, 0x20, 0x2c, 0x32, 0xa2, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x20, 0x20, 0x20, 0x2c, 0x32, 0xa2, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x20, 0x20, 0x20, 0x2c, 0x32, 0x22, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x20, 0x20, 0x20, 0x2c, 0x32, 0x22, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x24, 0x20, 0x20, 0x2c, 0x32, 0xa2, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x24, 0x20, 0x20, 0x2c, 0x32, 0xa2, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x24, 0x20, 0x20, 0x2c, 0x32, 0x22, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x24, 0x20, 0x20, 0x2c, 0x32, 0x22, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x8c, 0x70, 0x40, 0x80, 0x80, 0x80, 0x41, 0x3e, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x1e, 0x22, 0x1c, 0x22, 0x41, 0x80, 0x80, 0x80, 0x41, 0x3e, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x10, 0x10, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x22, 0x1c, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x40, 0x00, 0x00, 0x70, 0x80, 0x8c, 0x70, 0x40, 0x80, 0x80, 0x80, 0x41, 0x3e, 0x00, 0x00},
-	{0x00, 0x08, 0x00, 0x00, 0x1e, 0x22, 0x1c, 0x22, 0x41, 0x80, 0x80, 0x80, 0x41, 0x3e, 0x00, 0x00},
-	{0x00, 0x00, 0x10, 0x00, 0x00, 0x0e, 0x10, 0x10, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x08, 0x00, 0x00, 0x1e, 0x22, 0x1c, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x04, 0x00, 0x06, 0x49, 0x85, 0x83, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x04, 0x00, 0x06, 0x49, 0x89, 0x86, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x08, 0x00, 0x0c, 0x12, 0x0a, 0x06, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x08, 0x00, 0x0c, 0x12, 0x12, 0x0c, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0a, 0x00, 0x06, 0x09, 0x09, 0x47, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x0a, 0x00, 0x00, 0x06, 0x09, 0x49, 0x87, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00},
-	{0x00, 0x14, 0x00, 0x00, 0x0c, 0x12, 0x0a, 0x06, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x14, 0x00, 0x00, 0x0c, 0x12, 0x12, 0x0c, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x19, 0x21, 0x19, 0x21, 0x01, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x32, 0x42, 0x32, 0x42, 0x02, 0x86, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x06, 0x18, 0x20, 0x10, 0x08, 0x08, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x06, 0x18, 0x20, 0x20, 0x10, 0x08, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x42, 0x82, 0x82, 0x84, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x42, 0x82, 0x82, 0x84, 0x78, 0x00, 0x00},
-	{0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x0c, 0x12, 0x12, 0x3c, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x3c, 0x4b, 0x4a, 0x44, 0x40, 0x40, 0x40, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x12, 0x32, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x12, 0x32, 0xcd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x08, 0x00, 0x00, 0x41, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x01, 0x41, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x08, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x18, 0x24, 0x22, 0x22, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x10, 0x10, 0x68, 0x88, 0x74, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x40, 0x30, 0x4e, 0x49, 0x39, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x08, 0x14, 0x24, 0x28, 0xf3, 0x24, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x12, 0x0f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x88, 0x86, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x88, 0x87, 0x81, 0x7e, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x88, 0x86, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x24, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x88, 0x87, 0x81, 0x7e, 0x00, 0x24, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0xf7, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00},
-	{0x68, 0x90, 0x02, 0x22, 0x12, 0x0a, 0x04, 0x0c, 0x12, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x68, 0x90, 0x02, 0x32, 0x12, 0x0a, 0x0a, 0x0e, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x60, 0x80, 0x72, 0xa2, 0x12, 0x0a, 0x04, 0x0c, 0x12, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x30, 0x40, 0x3a, 0x52, 0x12, 0x0a, 0x0a, 0x0e, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x42, 0x22, 0x12, 0x0a, 0x04, 0x0c, 0x12, 0x3c, 0x00, 0x18, 0x20, 0x1c, 0x20, 0x00},
-	{0x00, 0x00, 0x22, 0x12, 0x12, 0x0a, 0x0a, 0x0e, 0x3d, 0x00, 0x00, 0x18, 0x20, 0x1c, 0x20, 0x00},
-	{0x00, 0x00, 0x42, 0x22, 0x12, 0x0a, 0x04, 0x0c, 0x12, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0x00, 0x00, 0x22, 0x12, 0x12, 0x0a, 0x0a, 0x0e, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-	{0xf1, 0x35, 0x55, 0x8a, 0xe0, 0x06, 0x95, 0xd6, 0xb5, 0x97, 0x00, 0xee, 0x8a, 0xee, 0x28, 0xe8},
-	{0x00, 0x38, 0x7c, 0x7c, 0xc6, 0x92, 0xf2, 0xe6, 0xfe, 0xe6, 0x7c, 0x7c, 0x38, 0x00, 0x00, 0x00},
-	
-	/* Special glyph for unknown character */
-	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x0c, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00}
-};
-
-/** @}
- */
Index: uspace/srv/fb/font-8x16.h
===================================================================
--- uspace/srv/fb/font-8x16.h	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,50 +1,0 @@
-/*
- * Copyright (c) 2005 Martin Decky
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup genarch
- * @{
- */
-/** @file
- */
-
-#ifndef FONT_8X16_H_
-#define FONT_8X16_H_
-
-#define FONT_GLYPHS     2899
-#define FONT_WIDTH      8
-#define FONT_SCANLINES  16
-
-#include <sys/types.h>
-
-extern uint16_t fb_font_glyph(const wchar_t ch);
-extern uint8_t fb_font[FONT_GLYPHS][FONT_SCANLINES];
-
-#endif
-
-/** @}
- */
Index: uspace/srv/fb/main.c
===================================================================
--- uspace/srv/fb/main.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,108 +1,0 @@
-/*
- * Copyright (c) 2006 Ondrej Palkovsky
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-#include <ipc/ipc.h>
-#include <ipc/services.h>
-#include <sysinfo.h>
-#include <async.h>
-#include <as.h>
-#include <align.h>
-#include <errno.h>
-#include <stdio.h>
-
-#include "fb.h"
-#include "ega.h"
-#include "msim.h"
-#include "ski.h"
-#include "sgcn.h"
-#include "main.h"
-
-#define NAME "fb"
-
-void receive_comm_area(ipc_callid_t callid, ipc_call_t *call, void **area)
-{
-	void *dest;
-	
-	dest = as_get_mappable_page(IPC_GET_ARG2(*call));
-	if (ipc_answer_1(callid, EOK, (sysarg_t) dest) == 0) {
-		if (*area)
-			as_area_destroy(*area);
-		*area = dest;
-	}
-}
-
-int main(int argc, char *argv[])
-{
-	printf(NAME ": HelenOS Framebuffer service\n");
-	
-	ipcarg_t phonead;
-	bool initialized = false;
-	
-#ifdef FB_ENABLED
-	if (sysinfo_value("fb.kind") == 1) {
-		if (fb_init() == 0)
-			initialized = true;
-	}
-#endif
-#ifdef EGA_ENABLED
-	if ((!initialized) && (sysinfo_value("fb.kind") == 2)) {
-		if (ega_init() == 0)
-			initialized = true;
-	}
-#endif
-#ifdef MSIM_ENABLED
-	if ((!initialized) && (sysinfo_value("fb.kind") == 3)) {
-		if (msim_init() == 0)
-			initialized = true;
-	}
-#endif
-#ifdef SGCN_ENABLED
-	if ((!initialized) && (sysinfo_value("fb.kind") == 4)) {
-		if (sgcn_init() == 0)
-			initialized = true;
-	}
-#endif
-#ifdef SKI_ENABLED
-	if ((!initialized) && (sysinfo_value("fb") != true)) {
-		if (ski_init() == 0)
-			initialized = true;
-	}
-#endif
-
-	if (!initialized)
-		return -1;
-	
-	if (ipc_connect_to_me(PHONE_NS, SERVICE_VIDEO, 0, 0, &phonead) != 0) 
-		return -1;
-	
-	printf(NAME ": Accepting connections\n");
-	async_manager();
-	
-	/* Never reached */
-	return 0;
-}
Index: uspace/srv/fb/main.h
===================================================================
--- uspace/srv/fb/main.h	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,34 +1,0 @@
-/*
- * Copyright (c) 2006 Ondrej Palkovsky
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-#ifndef FB_MAIN_H_
-#define FB_MAIN_H_
-
-extern void receive_comm_area(ipc_callid_t, ipc_call_t *, void **);
-
-#endif
Index: uspace/srv/fb/msim.c
===================================================================
--- uspace/srv/fb/msim.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,73 +1,0 @@
-/*
- * Copyright (c) 2006 Ondrej Palkovsky
- * Copyright (c) 2008 Martin Decky
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @defgroup msimfb MSIM text console
- * @brief	HelenOS MSIM text console.
- * @ingroup fbs
- * @{
- */ 
-/** @file
- */
-
-#include <async.h>
-#include <libc.h>
-#include <sysinfo.h>
-#include <as.h>
-#include <ddi.h>
-
-#include "serial_console.h"
-#include "msim.h"
-
-#define WIDTH 80
-#define HEIGHT 24
-
-static char *virt_addr;
-
-static void msim_putc(const char c)
-{
-	*virt_addr = c;
-}
-
-int msim_init(void)
-{
-	void *phys_addr = (void *) sysinfo_value("fb.address.physical");
-	virt_addr = (char *) as_get_mappable_page(1);
-	
-	if (physmem_map(phys_addr, virt_addr, 1, AS_AREA_READ | AS_AREA_WRITE) != 0)
-		return -1;
-	
-	serial_console_init(msim_putc, WIDTH, HEIGHT);
-	
-	async_set_client_connection(serial_client_connection);
-	return 0;
-}
-
-/** 
- * @}
- */
Index: uspace/srv/fb/msim.h
===================================================================
--- uspace/srv/fb/msim.h	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,47 +1,0 @@
-/*
- * Copyright (c) 2006 Ondrej Palkovsky
- * Copyright (c) 2008 Martin Decky
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup msimfb
- * @brief	HelenOS MSIM text console.
- * @ingroup fbs
- * @{
- */ 
-/** @file
- */
-
-#ifndef FB_MSIM_H_
-#define FB_MSIM_H_
-
-extern int msim_init(void);
-
-#endif
-
-/** @}
- */
-
Index: uspace/srv/fb/pointer.xbm
===================================================================
--- uspace/srv/fb/pointer.xbm	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,6 +1,0 @@
-#define pointer_width 11
-#define pointer_height 18
-static unsigned char pointer_bits[] = {
-   0x01, 0x00, 0x03, 0x00, 0x05, 0x00, 0x09, 0x00, 0x11, 0x00, 0x21, 0x00,
-   0x41, 0x00, 0x81, 0x00, 0x01, 0x01, 0x01, 0x02, 0x01, 0x04, 0x01, 0x03,
-   0x81, 0x00, 0x89, 0x00, 0x15, 0x01, 0x23, 0x01, 0x21, 0x01, 0xc0, 0x00 };
Index: uspace/srv/fb/pointer_mask.xbm
===================================================================
--- uspace/srv/fb/pointer_mask.xbm	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,6 +1,0 @@
-#define pointer_mask_width 11
-#define pointer_mask_height 18
-static unsigned char pointer_mask_bits[] = {
-   0x01, 0x00, 0x03, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x1f, 0x00, 0x3f, 0x00,
-   0x7f, 0x00, 0xff, 0x00, 0xff, 0x01, 0xff, 0x03, 0xff, 0x07, 0xff, 0x03,
-   0xff, 0x00, 0xff, 0x00, 0xf7, 0x01, 0xe3, 0x01, 0xe1, 0x01, 0xc0, 0x00 };
Index: uspace/srv/fb/ppm.c
===================================================================
--- uspace/srv/fb/ppm.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,130 +1,0 @@
-/*
- * Copyright (c) 2006 Ondrej Palkovsky
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-#include <sys/types.h>
-#include <errno.h>
-
-#include "ppm.h"
-
-static void skip_whitespace(unsigned char **data)
-{
-retry:
-	while (**data == ' ' || **data == '\t' || **data == '\n' ||
-	    **data == '\r')
-		(*data)++;
-	if (**data == '#') {
-		while (1) {
-			if (**data == '\n' || **data == '\r')
-				break;
-			(*data)++;
-		}
-		goto retry;
-	}
-}
-
-static void read_num(unsigned char **data, unsigned int *num)
-{
-	*num = 0;
-	while (**data >= '0' && **data <= '9') {
-		*num *= 10;
-		*num += **data - '0';
-		(*data)++;
-	}
-}
-
-int ppm_get_data(unsigned char *data, size_t dtsz, unsigned int *width,
-    unsigned int *height)
-{
-	/* Read magic */
-	if (data[0] != 'P' || data[1] != '6')
-		return EINVAL;
-
-	data+=2;
-	skip_whitespace(&data);
-	read_num(&data, width);
-	skip_whitespace(&data);
-	read_num(&data,height);
-
-	return 0;
-}
-
-/** Draw PPM pixmap
- *
- * @param data Pointer to PPM data
- * @param datasz Maximum data size
- * @param sx Coordinate of upper left corner
- * @param sy Coordinate of upper left corner
- * @param maxwidth Maximum allowed width for picture
- * @param maxheight Maximum allowed height for picture
- * @param putpixel Putpixel function used to print bitmap
- */
-int ppm_draw(unsigned char *data, size_t datasz, unsigned int sx,
-    unsigned int sy, unsigned int maxwidth, unsigned int maxheight,
-    putpixel_cb_t putpixel, void *vport)
-{
-	unsigned int width, height;
-	unsigned int maxcolor;
-	unsigned int i;
-	unsigned int color;
-	unsigned int coef;
-	
-	/* Read magic */
-	if ((data[0] != 'P') || (data[1] != '6'))
-		return EINVAL;
-	
-	data += 2;
-	skip_whitespace(&data);
-	read_num(&data, &width);
-	skip_whitespace(&data);
-	read_num(&data, &height);
-	skip_whitespace(&data);
-	read_num(&data, &maxcolor);
-	data++;
-	
-	if ((maxcolor == 0) || (maxcolor > 255) || (width * height > datasz))
-		return EINVAL;
-	
-	coef = 255 / maxcolor;
-	if (coef * maxcolor > 255)
-		coef -= 1;
-	
-	for (i = 0; i < width * height; i++) {
-		/* Crop picture if we don't fit into region */
-		if (i % width > maxwidth || i / width > maxheight) {
-			data += 3;
-			continue;
-		}
-		color = ((data[0] * coef) << 16) + ((data[1] * coef) << 8) +
-		    data[2] * coef;
-		
-		(*putpixel)(vport, sx + (i % width), sy + (i / width), color);
-		data += 3;
-	}
-	
-	return 0;
-}
Index: uspace/srv/fb/ppm.h
===================================================================
--- uspace/srv/fb/ppm.h	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,39 +1,0 @@
-/*
- * Copyright (c) 2006 Ondrej Palkovsky
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-#ifndef FB_PPM_H_
-#define FB_PPM_H_
-
-#include "fb.h"
-#include <sys/types.h>
-
-extern int ppm_draw(unsigned char *, size_t, unsigned int, unsigned int, 
-    unsigned int, unsigned int, putpixel_cb_t, void *);
-extern int ppm_get_data(unsigned char *, size_t, unsigned int *, unsigned int *);
-
-#endif
Index: uspace/srv/fb/serial_console.c
===================================================================
--- uspace/srv/fb/serial_console.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,462 +1,0 @@
-/*
- * Copyright (c) 2006 Ondrej Palkovsky
- * Copyright (c) 2008 Martin Decky
- * Copyright (c) 2008 Pavel Rimsky
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/**
- * @defgroup serial Serial console
- * @brief    Serial console services (putc, puts, clear screen, cursor goto,...)
- * @{
- */ 
-
-/** @file
- */
-
-#include <stdio.h>
-#include <ipc/ipc.h>
-#include <async.h>
-#include <ipc/fb.h>
-#include <bool.h>
-#include <errno.h>
-#include <io/color.h>
-#include <io/style.h>
-#include <string.h>
-
-#include "../console/screenbuffer.h"
-#include "main.h"
-#include "serial_console.h"
-
-#define MAX_CONTROL 20
-
-static void serial_sgr(const unsigned int mode);
-void serial_putchar(wchar_t ch);
-
-static int scr_width;
-static int scr_height;
-static bool color = true;	/** True if producing color output. */
-static bool utf8 = false;	/** True if producing UTF8 output. */
-static putc_function_t putc_function;
-
-/* Allow only 1 connection */
-static int client_connected = 0;
-
-enum sgr_color_index {
-	CI_BLACK	= 0,
-	CI_RED		= 1,
-	CI_GREEN	= 2,
-	CI_BROWN	= 3,
-	CI_BLUE		= 4,
-	CI_MAGENTA	= 5,
-	CI_CYAN		= 6,
-	CI_WHITE	= 7,
-};
-
-enum sgr_command {
-	SGR_RESET	= 0,
-	SGR_BOLD	= 1,
-	SGR_BLINK	= 5,
-	SGR_REVERSE	= 7,
-	SGR_NORMAL_INT	= 22,
-	SGR_BLINK_OFF	= 25,
-	SGR_REVERSE_OFF = 27,
-	SGR_FGCOLOR	= 30,
-	SGR_BGCOLOR	= 40
-};
-
-static int color_map[] = {
-	[COLOR_BLACK]	= CI_BLACK,
-	[COLOR_BLUE]	= CI_RED,
-	[COLOR_GREEN]	= CI_GREEN,
-	[COLOR_CYAN]	= CI_CYAN,
-	[COLOR_RED]	= CI_RED,
-	[COLOR_MAGENTA] = CI_MAGENTA,
-	[COLOR_YELLOW]	= CI_BROWN,
-	[COLOR_WHITE]	= CI_WHITE
-};
-
-void serial_puts(char *str)
-{
-	while (*str)
-		putc_function(*(str++));
-}
-
-void serial_putchar(wchar_t ch)
-{
-	uint8_t buf[STR_BOUNDS(1)];
-	size_t offs;
-	size_t i;
-
-	if (utf8 != true) {
-		if (ch >= 0 && ch < 128)
-			(*putc_function)((uint8_t) ch);
-		else 
-			(*putc_function)('?');
-		return;
-	}
-
-	offs = 0;
-	if (chr_encode(ch, buf, &offs, STR_BOUNDS(1)) == EOK) {
-		for (i = 0; i < offs; i++)
-			(*putc_function)(buf[i]);
-	} else {
-		(*putc_function)('?');
-	}
-
-}
-
-void serial_goto(const unsigned int col, const unsigned int row)
-{
-	if ((col > scr_width) || (row > scr_height))
-		return;
-	
-	char control[MAX_CONTROL];
-	snprintf(control, MAX_CONTROL, "\033[%u;%uf", row + 1, col + 1);
-	serial_puts(control);
-}
-
-void serial_clrscr(void)
-{
-	/* Initialize graphic rendition attributes. */
-	serial_sgr(SGR_RESET);
-	if (color) {
-		serial_sgr(SGR_FGCOLOR + CI_BLACK);
-		serial_sgr(SGR_BGCOLOR + CI_WHITE);
-	}
-
-	serial_puts("\033[2J");
-}
-
-void serial_scroll(int i)
-{
-	if (i > 0) {
-		serial_goto(0, scr_height - 1);
-		while (i--)
-			serial_puts("\033D");
-	} else if (i < 0) {
-		serial_goto(0, 0);
-		while (i++)
-			serial_puts("\033M");
-	}
-}
-
-/** ECMA-48 Set Graphics Rendition. */
-static void serial_sgr(const unsigned int mode)
-{
-	char control[MAX_CONTROL];
-	snprintf(control, MAX_CONTROL, "\033[%um", mode);
-	serial_puts(control);
-}
-
-/** Set scrolling region. */
-void serial_set_scroll_region(unsigned last_row)
-{
-	char control[MAX_CONTROL];
-	snprintf(control, MAX_CONTROL, "\033[0;%ur", last_row);
-	serial_puts(control);
-}
-
-void serial_cursor_disable(void)
-{
-	serial_puts("\033[?25l");
-}
-
-void serial_cursor_enable(void)
-{
-	serial_puts("\033[?25h");
-}
-
-void serial_console_init(putc_function_t putc_fn, uint32_t w, uint32_t h)
-{
-	scr_width = w;
-	scr_height = h;
-	putc_function = putc_fn;
-}
-
-static void serial_set_style(int style)
-{
-	if (style == STYLE_EMPHASIS) {
-		if (color) {
-			serial_sgr(SGR_RESET);
-			serial_sgr(SGR_FGCOLOR + CI_RED);
-			serial_sgr(SGR_BGCOLOR + CI_WHITE);
-		}
-		serial_sgr(SGR_BOLD);
-	} else {
-		if (color) {
-			serial_sgr(SGR_RESET);
-			serial_sgr(SGR_FGCOLOR + CI_BLACK);
-			serial_sgr(SGR_BGCOLOR + CI_WHITE);
-		}
-		serial_sgr(SGR_NORMAL_INT);
-	}
-}
-
-static void serial_set_idx(unsigned fgcolor, unsigned bgcolor,
-    unsigned flags)
-{
-	if (color) {
-		serial_sgr(SGR_RESET);
-		serial_sgr(SGR_FGCOLOR + color_map[fgcolor]);
-		serial_sgr(SGR_BGCOLOR + color_map[bgcolor]);
-	} else {
-		if (fgcolor < bgcolor)
-			serial_sgr(SGR_RESET);
-		else
-			serial_sgr(SGR_REVERSE);
-	}	
-}
-
-static void serial_set_rgb(uint32_t fgcolor, uint32_t bgcolor)
-{
-	if (fgcolor < bgcolor)
-		serial_sgr(SGR_REVERSE_OFF);
-	else
-		serial_sgr(SGR_REVERSE);
-}
-
-static void serial_set_attrs(const attrs_t *a)
-{
-	switch (a->t) {
-	case at_style:
-		serial_set_style(a->a.s.style);
-		break;
-	case at_rgb:
-		serial_set_rgb(a->a.r.fg_color, a->a.r.bg_color);
-		break;
-	case at_idx:
-		serial_set_idx(a->a.i.fg_color,
-		    a->a.i.bg_color, a->a.i.flags);
-		break;
-	default:
-		break;
-	}
-}
-
-/** Draw text data to viewport.
- *
- * @param vport Viewport id
- * @param data  Text data.
- * @param x	Leftmost column of the area.
- * @param y	Topmost row of the area.
- * @param w	Number of rows.
- * @param h	Number of columns.
- */
-static void draw_text_data(keyfield_t *data, unsigned int x,
-    unsigned int y, unsigned int w, unsigned int h)
-{
-	unsigned int i, j;
-	keyfield_t *field;
-	attrs_t *a0, *a1;
-
-	serial_goto(x, y);
-	a0 = &data[0].attrs;
-	serial_set_attrs(a0);
-
-	for (j = 0; j < h; j++) {
-		if (j > 0 && w != scr_width)
-			serial_goto(x, j);
-
-		for (i = 0; i < w; i++) {
-			field = &data[j * w + i];
-
-			a1 = &field->attrs;
-			if (!attrs_same(*a0, *a1))
-				serial_set_attrs(a1);
-			serial_putchar(field->character);
-			a0 = a1;
-		}
-	}
-}
-
-int lastcol = 0;
-int lastrow = 0;
-
-/**
- * Main function of the thread serving client connections.
- */
-void serial_client_connection(ipc_callid_t iid, ipc_call_t *icall)
-{
-	int retval;
-	ipc_callid_t callid;
-	ipc_call_t call;
-	keyfield_t *interbuf = NULL;
-	size_t intersize = 0;
-
-	wchar_t c;
-	int col, row, w, h;
-	int i;
-
-	attrs_t cur_attr;
-	
-	if (client_connected) {
-		ipc_answer_0(iid, ELIMIT);
-		return;
-	}
-	
-	client_connected = 1;
-	ipc_answer_0(iid, EOK);
-
-	cur_attr.t = at_style;
-	cur_attr.a.s.style = STYLE_NORMAL;
-	
-	/* Clear the terminal, set scrolling region
-	   to 0 - height rows. */
-	serial_clrscr();
-	serial_goto(0, 0);
-	serial_set_scroll_region(scr_height);
-	
-	while (true) {
-		callid = async_get_call(&call);
-		switch (IPC_GET_METHOD(call)) {
-		case IPC_M_PHONE_HUNGUP:
-			client_connected = 0;
-			ipc_answer_0(callid, EOK);
-			return;
-		case IPC_M_SHARE_OUT:
-			/* We accept one area for data interchange */
-			intersize = IPC_GET_ARG2(call);
-			if (intersize >= scr_width * scr_height *
-			    sizeof(*interbuf)) {
-				receive_comm_area(callid, &call,
-				    (void *) &interbuf);
-				continue;
-			}
-			retval = EINVAL;
-			break;
-		case FB_DRAW_TEXT_DATA:
-			col = IPC_GET_ARG1(call);
-			row = IPC_GET_ARG2(call);
-			w = IPC_GET_ARG3(call);
-			h = IPC_GET_ARG4(call);
-			if (!interbuf) {
-				retval = EINVAL;
-				break;
-			}
-			if (col + w > scr_width || row + h > scr_height) {
-				retval = EINVAL;
-				break;
-			}
-			draw_text_data(interbuf, col, row, w, h);
-			lastcol = col + w;
-			lastrow = row + h - 1;
-			retval = 0;
-			break;
-		case FB_PUTCHAR:
-			c = IPC_GET_ARG1(call);
-			col = IPC_GET_ARG2(call);
-			row = IPC_GET_ARG3(call);
-			if ((lastcol != col) || (lastrow != row))
-				serial_goto(col, row);
-			lastcol = col + 1;
-			lastrow = row;
-			serial_putchar(c);
-			retval = 0;
-			break;
-		case FB_CURSOR_GOTO:
-			col = IPC_GET_ARG1(call);
-			row = IPC_GET_ARG2(call);
-			serial_goto(col, row);
-			lastcol = col;
-			lastrow = row;
-			retval = 0;
-			break;
-		case FB_GET_CSIZE:
-			ipc_answer_2(callid, EOK, scr_width, scr_height);
-			continue;
-		case FB_GET_COLOR_CAP:
-			ipc_answer_1(callid, EOK, color ? FB_CCAP_INDEXED :
-			    FB_CCAP_STYLE);
-			continue;
-		case FB_CLEAR:
-			serial_clrscr();
-			retval = 0;
-			break;
-		case FB_SET_STYLE:
-			cur_attr.t = at_style;
-			cur_attr.a.s.style = IPC_GET_ARG1(call);
-			cur_attr.a.i.bg_color = IPC_GET_ARG2(call);
-			serial_set_attrs(&cur_attr);
-
-			retval = 0;
-			break;
-		case FB_SET_COLOR:
-			cur_attr.t = at_idx;
-			cur_attr.a.i.fg_color = IPC_GET_ARG1(call);
-			cur_attr.a.i.bg_color = IPC_GET_ARG2(call);
-			cur_attr.a.i.flags = IPC_GET_ARG3(call);
-			serial_set_attrs(&cur_attr);
-
-			retval = 0;
-			break;
-		case FB_SET_RGB_COLOR:
-			cur_attr.t = at_rgb;
-			cur_attr.a.i.fg_color = IPC_GET_ARG1(call);
-			cur_attr.a.i.bg_color = IPC_GET_ARG2(call);
-			serial_set_attrs(&cur_attr);
-
-			retval = 0;
-			break;
-		case FB_SCROLL:
-			i = IPC_GET_ARG1(call);
-			if ((i > scr_height) || (i < -scr_height)) {
-				retval = EINVAL;
-				break;
-			}
-			serial_scroll(i);
-			serial_goto(lastcol, lastrow);
-			retval = 0;
-			break;
-		case FB_CURSOR_VISIBILITY:
-			if(IPC_GET_ARG1(call))
-				serial_cursor_enable();
-			else
-				serial_cursor_disable();
-			retval = 0;
-			break;
-		case FB_SCREEN_YIELD:
-			serial_sgr(SGR_RESET);
-			serial_puts("\033[2J");
-			serial_goto(0, 0);
-			serial_cursor_enable();
-			retval = 0;
-			break;
-		case FB_SCREEN_RECLAIM:
-			serial_clrscr();
-			serial_set_attrs(&cur_attr);
-			retval = 0;
-			break;
-		default:
-			retval = ENOENT;
-		}
-		ipc_answer_0(callid, retval);
-	}
-}
-
-/**
- * @}
- */
Index: uspace/srv/fb/serial_console.h
===================================================================
--- uspace/srv/fb/serial_console.h	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,56 +1,0 @@
-/*
- * Copyright (c) 2008 Pavel Rimsky
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/**
- * @defgroup serial Serial console
- * @brief    Serial console services (putc, puts, clear screen, cursor goto,...)
- * @{
- */ 
-
-/** @file
- */
-
-#ifndef FB_SERIAL_CONSOLE_H_
-#define FB_SERIAL_CONSOLE_H_
-
-#include <ipc/ipc.h>
-
-typedef void (*putc_function_t)(char);
-
-void serial_puts(char *str);
-void serial_goto(const unsigned int col, const unsigned int row);
-void serial_clrscr(void);
-void serial_scroll(int i);
-void serial_cursor_disable(void);
-void serial_cursor_enable(void);
-void serial_set_scroll_region(unsigned height);
-void serial_console_init(putc_function_t putc_fn, uint32_t w, uint32_t h);
-void serial_client_connection(ipc_callid_t iid, ipc_call_t *icall);
-
-
-#endif
Index: uspace/srv/fb/sgcn.c
===================================================================
--- uspace/srv/fb/sgcn.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,142 +1,0 @@
-/*
- * Copyright (c) 2006 Ondrej Palkovsky
- * Copyright (c) 2008 Martin Decky
- * Copyright (c) 2008 Pavel Rimsky
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @defgroup sgcnfb SGCN
- * @brief	userland driver of the Serengeti console output
- * @{
- */ 
-/** @file
- */
-
-#include <async.h>
-#include <sysinfo.h>
-#include <as.h>
-#include <errno.h>
-#include <stdio.h>
-#include <ddi.h>
-
-#include "serial_console.h"
-#include "sgcn.h"
-
-#define WIDTH 80
-#define HEIGHT 24
-
-/**
- * Virtual address mapped to SRAM.
- */
-static uintptr_t sram_virt_addr;
-
-/**
- * SGCN buffer offset within SGCN.
- */
-static uintptr_t sram_buffer_offset;
-
-/**
- * SGCN buffer header. It is placed at the very beginning of the SGCN
- * buffer. 
- */
-typedef struct {
-	/** hard-wired to "CON" */
-	char magic[4];
-	
-	/** we don't need this */
-	char unused[24];
-
-	/** offset within the SGCN buffer of the output buffer start */
-	uint32_t out_begin;
-	
-	/** offset within the SGCN buffer of the output buffer end */
-	uint32_t out_end;
-	
-	/** offset within the SGCN buffer of the output buffer read pointer */
-	uint32_t out_rdptr;
-	
-	/** offset within the SGCN buffer of the output buffer write pointer */
-	uint32_t out_wrptr;
-} __attribute__ ((packed)) sgcn_buffer_header_t;
-
-
-/*
- * Returns a pointer to the object of a given type which is placed at the given
- * offset from the console buffer beginning.
- */
-#define SGCN_BUFFER(type, offset) \
-		((type *) (sram_virt_addr + sram_buffer_offset + (offset)))
-
-/** Returns a pointer to the console buffer header. */
-#define SGCN_BUFFER_HEADER	(SGCN_BUFFER(sgcn_buffer_header_t, 0))
-
-/**
- * Pushes the character to the SGCN serial.
- * @param c	character to be pushed
- */
-static void sgcn_putc(char c)
-{
-	uint32_t begin = SGCN_BUFFER_HEADER->out_begin;
-	uint32_t end = SGCN_BUFFER_HEADER->out_end;
-	uint32_t size = end - begin;
-	
-	/* we need pointers to volatile variables */
-	volatile char *buf_ptr = (volatile char *)
-		SGCN_BUFFER(char, SGCN_BUFFER_HEADER->out_wrptr);
-	volatile uint32_t *out_wrptr_ptr = &(SGCN_BUFFER_HEADER->out_wrptr);
-	volatile uint32_t *out_rdptr_ptr = &(SGCN_BUFFER_HEADER->out_rdptr);
-
-	uint32_t new_wrptr = (((*out_wrptr_ptr) - begin + 1) % size) + begin;
-	while (*out_rdptr_ptr == new_wrptr)
-		;
-	*buf_ptr = c;
-	*out_wrptr_ptr = new_wrptr;
-}
-
-/**
- * Initializes the SGCN serial driver.
- */
-int sgcn_init(void)
-{
-	sram_virt_addr = (uintptr_t) as_get_mappable_page(sysinfo_value("sram.area.size"));
-	
-	if (physmem_map((void *) sysinfo_value("sram.address.physical"),
-	    (void *) sram_virt_addr, sysinfo_value("sram.area.size") / PAGE_SIZE,
-	    AS_AREA_READ | AS_AREA_WRITE) != 0)
-		return -1;
-	
-	serial_console_init(sgcn_putc, WIDTH, HEIGHT);
-	
-	sram_buffer_offset = sysinfo_value("sram.buffer.offset");
-	
-	async_set_client_connection(serial_client_connection);
-	return 0;
-}
-
-/** 
- * @}
- */
- 
Index: uspace/srv/fb/sgcn.h
===================================================================
--- uspace/srv/fb/sgcn.h	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,46 +1,0 @@
-/*
- * Copyright (c) 2008 Pavel Rimsky
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @defgroup sgcnfb SGCN
- * @brief	userland driver of the Serengeti console output
- * @{
- */
- 
-/** @file
- */
-
-#ifndef FB_SGCN_H_
-#define FB_SGCN_H_
-
-int sgcn_init(void);
-
-#endif
-
-/** 
- * @}
- */
Index: uspace/srv/fb/ski.c
===================================================================
--- uspace/srv/fb/ski.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,84 +1,0 @@
-/*
- * Copyright (c) 2005 Jakub Jermar
- * Copyright (c) 2008 Jiri Svoboda
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @defgroup msimfb MSIM text console
- * @brief	HelenOS MSIM text console.
- * @ingroup fbs
- * @{
- */ 
-/** @file
- */
-
-#include <async.h>
-#include <libc.h>
-#include <sysinfo.h>
-#include <as.h>
-#include <ddi.h>
-
-#include "serial_console.h"
-#include "ski.h"
-
-#define SKI_PUTCHAR		31
-
-#define WIDTH 80
-#define HEIGHT 24
-
-/** Display character on ski debug console
- *
- * Use SSC (Simulator System Call) to
- * display character on debug console.
- *
- * @param ch Character to be printed.
- */
-static void ski_putc(const char ch)
-{
-	asm volatile (
-		"mov r15 = %0\n"
-		"mov r32 = %1\n"	/* r32 is in0 */
-		"break 0x80000\n"	/* modifies r8 */
-		:
-		: "i" (SKI_PUTCHAR), "r" (ch)
-		: "r15", "in0", "r8"
-	);
-	
-	if (ch == '\n')
-		ski_putc('\r');
-}
-
-int ski_init(void)
-{
-	serial_console_init(ski_putc, WIDTH, HEIGHT);
-	
-	async_set_client_connection(serial_client_connection);
-	return 0;
-}
-
-/** 
- * @}
- */
Index: uspace/srv/fb/ski.h
===================================================================
--- uspace/srv/fb/ski.h	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,46 +1,0 @@
-/*
- * Copyright (c) 2008 Jiri Svoboda
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup skifb
- * @brief	HelenOS ski text console.
- * @ingroup fbs
- * @{
- */ 
-/** @file
- */
-
-#ifndef FB_SKI_H_
-#define FB_SKI_H_
-
-extern int ski_init(void);
-
-#endif
-
-/** @}
- */
-
Index: uspace/srv/fs/devfs/Makefile
===================================================================
--- uspace/srv/fs/devfs/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/fs/devfs/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -34,7 +34,7 @@
 all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
 
 clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
 	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/srv/fs/devfs/Makefile.build
===================================================================
--- uspace/srv/fs/devfs/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/fs/devfs/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -59,4 +59,7 @@
 %.o: %.c $(DEPEND)
 	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
 
 $(DEPEND):
Index: uspace/srv/fs/devfs/Makefile.common
===================================================================
--- uspace/srv/fs/devfs/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/fs/devfs/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -38,3 +38,4 @@
 DEPEND = Makefile.depend
 DEPEND_PREV = $(DEPEND).prev
+JOB = devfs.job
 OUTPUT = devfs
Index: uspace/srv/fs/fat/Makefile
===================================================================
--- uspace/srv/fs/fat/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/fs/fat/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -34,7 +34,7 @@
 all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
 
 clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
 	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/srv/fs/fat/Makefile.build
===================================================================
--- uspace/srv/fs/fat/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/fs/fat/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -62,4 +62,7 @@
 %.o: %.c $(DEPEND)
 	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
 
 $(DEPEND):
Index: uspace/srv/fs/fat/Makefile.common
===================================================================
--- uspace/srv/fs/fat/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/fs/fat/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -39,3 +39,4 @@
 DEPEND = Makefile.depend
 DEPEND_PREV = $(DEPEND).prev
+JOB = fat.job
 OUTPUT = fat
Index: uspace/srv/fs/tmpfs/Makefile
===================================================================
--- uspace/srv/fs/tmpfs/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/fs/tmpfs/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -34,7 +34,7 @@
 all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
 
 clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
 	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/srv/fs/tmpfs/Makefile.build
===================================================================
--- uspace/srv/fs/tmpfs/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/fs/tmpfs/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -60,4 +60,7 @@
 %.o: %.c $(DEPEND)
 	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
 
 $(DEPEND):
Index: uspace/srv/fs/tmpfs/Makefile.common
===================================================================
--- uspace/srv/fs/tmpfs/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/fs/tmpfs/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -39,3 +39,4 @@
 DEPEND = Makefile.depend
 DEPEND_PREV = $(DEPEND).prev
+JOB = tmpfs.job
 OUTPUT = tmpfs
Index: uspace/srv/hid/c_mouse/Makefile
===================================================================
--- uspace/srv/hid/c_mouse/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/c_mouse/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,40 @@
+#
+# Copyright (c) 2005 Martin Decky
+# Copyright (c) 2007 Jakub Jermar
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+include Makefile.common
+
+.PHONY: all clean
+
+all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
+	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
+
+clean:
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
+	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/srv/hid/c_mouse/Makefile.build
===================================================================
--- uspace/srv/hid/c_mouse/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/c_mouse/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,68 @@
+#
+# Copyright (c) 2005 Martin Decky
+# Copyright (c) 2007 Jakub Jermar
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+## Setup toolchain
+#
+
+include Makefile.common
+include $(LIBC_PREFIX)/Makefile.toolchain
+
+CFLAGS += -Iinclude
+
+## Sources
+#
+
+SOURCES = \
+	proto/ps2.c \
+	c_mouse.c \
+	chardev.c
+
+OBJECTS := $(addsuffix .o,$(basename $(SOURCES)))
+
+.PHONY: all
+
+all: $(OUTPUT) $(OUTPUT).disasm
+
+-include $(DEPEND)
+
+$(OUTPUT).disasm: $(OUTPUT)
+	$(OBJDUMP) -d $< > $@
+
+$(OUTPUT): $(OBJECTS) $(LIBS)
+	$(LD) -T $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
+
+%.o: %.c $(DEPEND)
+	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
+
+$(DEPEND):
+	makedepend -f - -- $(DEPEND_DEFS) $(CFLAGS) -- $(SOURCES) > $@ 2> /dev/null
+	-[ -f $(DEPEND_PREV) ] && diff -q $(DEPEND_PREV) $@ && mv -f $(DEPEND_PREV) $@
Index: uspace/srv/hid/c_mouse/Makefile.common
===================================================================
--- uspace/srv/hid/c_mouse/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/c_mouse/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,40 @@
+#
+# Copyright (c) 2005 Martin Decky
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+
+## Common names
+#
+
+LIBC_PREFIX = ../../../lib/libc
+SOFTINT_PREFIX = ../../../lib/softint
+LIBS = $(LIBC_PREFIX)/libc.a
+
+DEPEND = Makefile.depend
+DEPEND_PREV = $(DEPEND).prev
+JOB = c_mouse.job
+OUTPUT = c_mouse
Index: uspace/srv/hid/c_mouse/c_mouse.c
===================================================================
--- uspace/srv/hid/c_mouse/c_mouse.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/c_mouse/c_mouse.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,152 @@
+/*
+ * Copyright (c) 2009 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/**
+ * @addtogroup mouse
+ * @brief Chardev mouse driver.
+ *
+ * This is a common driver for mice attached to simple character devices
+ * (PS/2 mice, serial mice).
+ *
+ * @{
+ */
+/** @file
+ */
+
+#include <ipc/ipc.h>
+#include <ipc/mouse.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <async.h>
+#include <errno.h>
+#include <devmap.h>
+
+#include <c_mouse.h>
+#include <mouse_port.h>
+#include <mouse_proto.h>
+
+#define NAME       "mouse"
+#define NAMESPACE  "hid_in"
+
+int client_phone = -1;
+
+void mouse_handle_byte(int byte)
+{
+/*	printf("mouse byte: 0x%x\n", byte);*/
+	mouse_proto_parse_byte(byte);
+}
+
+void mouse_ev_btn(int button, int press)
+{
+/*	printf("ev_btn: button %d, press %d\n", button, press);*/
+	if (client_phone != -1) {
+		async_msg_2(client_phone, MEVENT_BUTTON, button, press);
+	}
+}
+
+void mouse_ev_move(int dx, int dy)
+{
+/*	printf("ev_move: dx %d, dy %d\n", dx, dy);*/
+	if (client_phone != -1)
+		async_msg_2(client_phone, MEVENT_MOVE, dx, dy);
+}
+
+static void client_connection(ipc_callid_t iid, ipc_call_t *icall)
+{
+	ipc_callid_t callid;
+	ipc_call_t call;
+	int retval;
+
+	ipc_answer_0(iid, EOK);
+
+	while (1) {
+		callid = async_get_call(&call);
+		switch (IPC_GET_METHOD(call)) {
+		case IPC_M_PHONE_HUNGUP:
+			if (client_phone != -1) {
+				ipc_hangup(client_phone);
+				client_phone = -1;
+			}
+
+			ipc_answer_0(callid, EOK);
+			return;
+		case IPC_M_CONNECT_TO_ME:
+			if (client_phone != -1) {
+				retval = ELIMIT;
+				break;
+			}
+			client_phone = IPC_GET_ARG5(call);
+			retval = 0;
+			break;
+		default:
+			retval = EINVAL;
+		}
+		ipc_answer_0(callid, retval);
+	}
+}
+
+
+int main(int argc, char **argv)
+{
+	printf(NAME ": Chardev mouse driver\n");
+
+	/* Initialize port. */
+	if (mouse_port_init() != 0)
+		return -1;
+
+	/* Initialize protocol driver. */
+	if (mouse_proto_init() != 0)
+		return -1;
+
+	/* Register driver */
+	int rc = devmap_driver_register(NAME, client_connection);
+	if (rc < 0) {
+		printf(NAME ": Unable to register driver (%d)\n", rc);
+		return -1;
+	}
+
+	char dev_path[DEVMAP_NAME_MAXLEN + 1];
+	snprintf(dev_path, DEVMAP_NAME_MAXLEN, "%s/%s", NAMESPACE, NAME);
+
+	dev_handle_t dev_handle;
+	if (devmap_device_register(dev_path, &dev_handle) != EOK) {
+		printf(NAME ": Unable to register device %s\n", dev_path);
+		return -1;
+	}
+
+	printf(NAME ": Accepting connections\n");
+	task_retval(0);
+	async_manager();
+
+	/* Not reached. */
+	return 0;
+}
+
+/**
+ * @}
+ */
Index: uspace/srv/hid/c_mouse/chardev.c
===================================================================
--- uspace/srv/hid/c_mouse/chardev.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/c_mouse/chardev.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,122 @@
+/*
+ * Copyright (c) 2009 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup mouse
+ * @{
+ */ 
+/** @file
+ * @brief
+ */
+
+#include <ipc/ipc.h>
+#include <ipc/char.h>
+#include <async.h>
+#include <vfs/vfs.h>
+#include <fcntl.h>
+#include <errno.h>
+
+#include <c_mouse.h>
+#include <mouse_port.h>
+
+static void chardev_events(ipc_callid_t iid, ipc_call_t *icall);
+
+static int dev_phone;
+
+#define NAME "kbd"
+
+int mouse_port_init(void)
+{
+	char *input = "/dev/char/ps2b";
+	int input_fd;
+
+	printf(NAME ": open %s\n", input);
+
+	input_fd = open(input, O_RDONLY);
+	if (input_fd < 0) {
+		printf(NAME ": Failed opening %s (%d)\n", input, input_fd);
+		return false;
+	}
+
+	dev_phone = fd_phone(input_fd);
+	if (dev_phone < 0) {
+		printf(NAME ": Failed to connect to device\n");
+		return false;
+	}
+
+	/* NB: The callback connection is slotted for removal */
+	ipcarg_t phonehash;
+	if (ipc_connect_to_me(dev_phone, 0, 0, 0, &phonehash) != 0) {
+		printf(NAME ": Failed to create callback from device\n");
+		return false;
+	}
+
+	async_new_connection(phonehash, 0, NULL, chardev_events);
+
+	return 0;
+}
+
+void mouse_port_yield(void)
+{
+}
+
+void mouse_port_reclaim(void)
+{
+}
+
+void mouse_port_write(uint8_t data)
+{
+	async_msg_1(dev_phone, CHAR_WRITE_BYTE, data);
+}
+
+static void chardev_events(ipc_callid_t iid, ipc_call_t *icall)
+{
+	/* Ignore parameters, the connection is already opened */
+	while (true) {
+
+		ipc_call_t call;
+		ipc_callid_t callid = async_get_call(&call);
+
+		int retval;
+
+		switch (IPC_GET_METHOD(call)) {
+		case IPC_M_PHONE_HUNGUP:
+			/* TODO: Handle hangup */
+			return;
+		case IPC_FIRST_USER_METHOD:
+			mouse_handle_byte(IPC_GET_ARG1(call));
+			break;
+		default:
+			retval = ENOENT;
+		}
+		ipc_answer_0(callid, retval);
+	}
+}
+
+/**
+ * @}
+ */
Index: uspace/srv/hid/c_mouse/include/c_mouse.h
===================================================================
--- uspace/srv/hid/c_mouse/include/c_mouse.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/c_mouse/include/c_mouse.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2009 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup mouse
+ * @brief
+ * @{
+ */
+/** @file
+ */
+
+#ifndef C_MOUSE_H_
+#define C_MOUSE_H_
+
+extern void mouse_handle_byte(int);
+extern void mouse_ev_btn(int button, int press);
+extern void mouse_ev_move(int dx, int dy);
+
+#endif
+
+/**
+ * @}
+ */
Index: uspace/srv/hid/c_mouse/include/mouse_port.h
===================================================================
--- uspace/srv/hid/c_mouse/include/mouse_port.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/c_mouse/include/mouse_port.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2009 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup mouse
+ * @brief
+ * @{
+ */
+/** @file
+ */
+
+#ifndef MOUSE_PORT_H_
+#define MOUSE_PORT_H_
+
+#include <sys/types.h>
+
+extern int mouse_port_init(void);
+extern void mouse_port_yield(void);
+extern void mouse_port_reclaim(void);
+extern void mouse_port_write(uint8_t);
+
+#endif
+
+/**
+ * @}
+ */ 
+
Index: uspace/srv/hid/c_mouse/include/mouse_proto.h
===================================================================
--- uspace/srv/hid/c_mouse/include/mouse_proto.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/c_mouse/include/mouse_proto.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2009 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup mouse
+ * @brief
+ * @{
+ */
+/** @file
+ */
+
+#ifndef MOUSE_PROTO_H_
+#define MOUSE_PROTO_H_
+
+extern void mouse_proto_parse_byte(int);
+extern int mouse_proto_init(void);
+
+#endif
+
+/**
+ * @}
+ */
Index: uspace/srv/hid/c_mouse/proto/ps2.c
===================================================================
--- uspace/srv/hid/c_mouse/proto/ps2.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/c_mouse/proto/ps2.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,125 @@
+/*
+ * Copyright (c) 2006 Ondrej Palkovsky
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup mouse
+ * @{
+ */
+/**
+ * @file
+ * @brief PS/2 mouse protocol driver.
+ */
+
+#include <stdio.h>
+#include <mouse_proto.h>
+#include <c_mouse.h>
+
+#define BUFSIZE 3
+
+typedef struct {
+	union {
+		unsigned char data[BUFSIZE];
+		struct {
+			unsigned leftbtn : 1;
+			unsigned rightbtn : 1;
+			unsigned middlebtn : 1;
+			unsigned isone : 1; /* Always one */
+			unsigned xsign : 1;
+			unsigned ysign : 1;
+			unsigned xovfl : 1;
+			unsigned yovfl : 1;
+			unsigned char x;
+			unsigned char y;
+		} val;
+	} u;
+} ps2packet_t;
+
+static ps2packet_t buf;
+static int bufpos = 0;
+static int leftbtn = 0;
+static int rightbtn = 0;
+static int middlebtn = 0;
+
+int mouse_proto_init(void)
+{
+	return 0;
+}
+
+/** Convert 9-bit 2-complement signed number to integer */
+static int bit9toint(int sign, unsigned char data)
+{
+	int tmp;
+
+	if (!sign)
+		return data;
+
+	tmp = ((unsigned char)~data) + 1;
+	return -tmp;
+}
+
+/** Process mouse data */
+void mouse_proto_parse_byte(int data)
+{
+	int x, y;
+
+	/* Check that we have not lost synchronization */
+	if (bufpos == 0 && !(data & 0x8))
+		return; /* Synchro lost, ignore byte */
+
+	buf.u.data[bufpos++] = data;
+	if (bufpos == BUFSIZE) {
+		bufpos = 0;
+
+		if (buf.u.val.leftbtn ^ leftbtn) {
+			leftbtn = buf.u.val.leftbtn;
+			mouse_ev_btn(1, leftbtn);
+		}
+
+		if (buf.u.val.rightbtn ^ rightbtn) {
+			rightbtn = buf.u.val.rightbtn;
+			mouse_ev_btn(2, rightbtn);
+		}
+
+		if (buf.u.val.middlebtn ^ middlebtn) {
+			middlebtn = buf.u.val.middlebtn;
+			mouse_ev_btn(3, middlebtn);
+		}
+
+		x =   bit9toint(buf.u.val.xsign, buf.u.val.x);
+		y = - bit9toint(buf.u.val.ysign, buf.u.val.y);
+
+		if (x != 0 || y != 0) {
+			mouse_ev_move(x, y);
+		}
+	}
+
+	return;
+}
+
+/**
+ * @}
+ */
Index: uspace/srv/hid/console/Makefile
===================================================================
--- uspace/srv/hid/console/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/console/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,40 @@
+#
+# Copyright (c) 2005 Martin Decky
+# Copyright (c) 2007 Jakub Jermar
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+include Makefile.common
+
+.PHONY: all clean
+
+all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
+	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
+
+clean:
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
+	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/srv/hid/console/Makefile.build
===================================================================
--- uspace/srv/hid/console/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/console/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,82 @@
+#
+# Copyright (c) 2005 Martin Decky
+# Copyright (c) 2007 Jakub Jermar
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+## Setup toolchain
+#
+
+include Makefile.common
+include $(LIBC_PREFIX)/Makefile.toolchain
+
+## Sources
+#
+
+SOURCES = \
+	console.c \
+	screenbuffer.c \
+	keybuffer.c \
+	gcons.c
+
+IMAGES = \
+	gfx/helenos.ppm \
+	gfx/nameic.ppm \
+	gfx/cons_selected.ppm \
+	gfx/cons_idle.ppm \
+	gfx/cons_has_data.ppm \
+	gfx/cons_kernel.ppm \
+	gfx/anim_1.ppm \
+	gfx/anim_2.ppm \
+	gfx/anim_3.ppm \
+	gfx/anim_4.ppm
+
+OBJECTS := $(addsuffix .o,$(basename $(SOURCES))) $(addsuffix .o,$(basename $(IMAGES)))
+
+.PHONY: all
+
+all: $(OUTPUT) $(OUTPUT).disasm
+
+-include $(DEPEND)
+
+$(OUTPUT).disasm: $(OUTPUT)
+	$(OBJDUMP) -d $< > $@
+
+$(OUTPUT): $(OBJECTS) $(LIBS)
+	$(LD) -T $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
+
+%.o: %.c $(DEPEND)
+	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
+
+%.o: %.ppm
+	$(OBJCOPY) -I binary -O $(BFD_NAME) -B $(BFD_ARCH) $< $@
+
+$(DEPEND):
+	makedepend -f - -- $(DEPEND_DEFS) $(CFLAGS) -- $(SOURCES) > $@ 2> /dev/null
+	-[ -f $(DEPEND_PREV) ] && diff -q $(DEPEND_PREV) $@ && mv -f $(DEPEND_PREV) $@
Index: uspace/srv/hid/console/Makefile.common
===================================================================
--- uspace/srv/hid/console/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/console/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,40 @@
+#
+# Copyright (c) 2005 Martin Decky
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+
+## Common names
+#
+
+LIBC_PREFIX = ../../../lib/libc
+SOFTINT_PREFIX = ../../../lib/softint
+LIBS = $(LIBC_PREFIX)/libc.a
+
+DEPEND = Makefile.depend
+DEPEND_PREV = $(DEPEND).prev
+JOB = console.job
+OUTPUT = console
Index: uspace/srv/hid/console/console.c
===================================================================
--- uspace/srv/hid/console/console.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/console/console.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,876 @@
+/*
+ * Copyright (c) 2006 Josef Cejka
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup console
+ * @{
+ */
+/** @file
+ */
+
+#include <libc.h>
+#include <ipc/ipc.h>
+#include <ipc/kbd.h>
+#include <io/keycode.h>
+#include <ipc/mouse.h>
+#include <ipc/fb.h>
+#include <ipc/services.h>
+#include <errno.h>
+#include <ipc/console.h>
+#include <unistd.h>
+#include <async.h>
+#include <adt/fifo.h>
+#include <sys/mman.h>
+#include <stdio.h>
+#include <string.h>
+#include <sysinfo.h>
+#include <event.h>
+#include <devmap.h>
+#include <fcntl.h>
+#include <vfs/vfs.h>
+#include <fibril_synch.h>
+
+#include "console.h"
+#include "gcons.h"
+#include "keybuffer.h"
+#include "screenbuffer.h"
+
+#define NAME       "console"
+#define NAMESPACE  "term"
+
+/** Phone to the keyboard driver. */
+static int kbd_phone;
+
+/** Phone to the mouse driver. */
+static int mouse_phone;
+
+/** Information about framebuffer */
+struct {
+	int phone;      /**< Framebuffer phone */
+	ipcarg_t cols;  /**< Framebuffer columns */
+	ipcarg_t rows;  /**< Framebuffer rows */
+	int color_cap;  /**< Color capabilities (FB_CCAP_xxx) */
+} fb_info;
+
+typedef struct {
+	size_t index;             /**< Console index */
+	size_t refcount;          /**< Connection reference count */
+	dev_handle_t dev_handle;  /**< Device handle */
+	keybuffer_t keybuffer;    /**< Buffer for incoming keys. */
+	screenbuffer_t scr;       /**< Screenbuffer for saving screen
+	                               contents and related settings. */
+} console_t;
+
+/** Array of data for virtual consoles */
+static console_t consoles[CONSOLE_COUNT];
+
+static console_t *active_console = &consoles[0];
+static console_t *prev_console = &consoles[0];
+static console_t *kernel_console = &consoles[KERNEL_CONSOLE];
+
+/** Pointer to memory shared with framebufer used for
+    faster virtual console switching */
+static keyfield_t *interbuffer = NULL;
+
+/** Information on row-span yet unsent to FB driver. */
+struct {
+	size_t col;  /**< Leftmost column of the span. */
+	size_t row;  /**< Row where the span lies. */
+	size_t cnt;  /**< Width of the span. */
+} fb_pending;
+
+static FIBRIL_MUTEX_INITIALIZE(input_mutex);
+static FIBRIL_CONDVAR_INITIALIZE(input_cv);
+
+static void curs_visibility(bool visible)
+{
+	async_msg_1(fb_info.phone, FB_CURSOR_VISIBILITY, visible); 
+}
+
+static void curs_hide_sync(void)
+{
+	ipc_call_sync_1_0(fb_info.phone, FB_CURSOR_VISIBILITY, false); 
+}
+
+static void curs_goto(size_t x, size_t y)
+{
+	async_msg_2(fb_info.phone, FB_CURSOR_GOTO, x, y);
+}
+
+static void screen_clear(void)
+{
+	async_msg_0(fb_info.phone, FB_CLEAR);
+}
+
+static void screen_yield(void)
+{
+	ipc_call_sync_0_0(fb_info.phone, FB_SCREEN_YIELD);
+}
+
+static void screen_reclaim(void)
+{
+	ipc_call_sync_0_0(fb_info.phone, FB_SCREEN_RECLAIM);
+}
+
+static void kbd_yield(void)
+{
+	ipc_call_sync_0_0(kbd_phone, KBD_YIELD);
+}
+
+static void kbd_reclaim(void)
+{
+	ipc_call_sync_0_0(kbd_phone, KBD_RECLAIM);
+}
+
+static void set_style(int style)
+{
+	async_msg_1(fb_info.phone, FB_SET_STYLE, style);
+}
+
+static void set_color(int fgcolor, int bgcolor, int flags)
+{
+	async_msg_3(fb_info.phone, FB_SET_COLOR, fgcolor, bgcolor, flags);
+}
+
+static void set_rgb_color(int fgcolor, int bgcolor)
+{
+	async_msg_2(fb_info.phone, FB_SET_RGB_COLOR, fgcolor, bgcolor); 
+}
+
+static void set_attrs(attrs_t *attrs)
+{
+	switch (attrs->t) {
+	case at_style:
+		set_style(attrs->a.s.style);
+		break;
+	case at_idx:
+		set_color(attrs->a.i.fg_color, attrs->a.i.bg_color,
+		    attrs->a.i.flags);
+		break;
+	case at_rgb:
+		set_rgb_color(attrs->a.r.fg_color, attrs->a.r.bg_color);
+		break;
+	}
+}
+
+static int ccap_fb_to_con(int ccap_fb, int *ccap_con)
+{
+	switch (ccap_fb) {
+	case FB_CCAP_NONE: *ccap_con = CONSOLE_CCAP_NONE; break;
+	case FB_CCAP_STYLE: *ccap_con = CONSOLE_CCAP_STYLE; break;
+	case FB_CCAP_INDEXED: *ccap_con = CONSOLE_CCAP_INDEXED; break;
+	case FB_CCAP_RGB: *ccap_con = CONSOLE_CCAP_RGB; break;
+	default: return EINVAL;
+	}
+
+	return EOK;
+}
+
+/** Send an area of screenbuffer to the FB driver. */
+static void fb_update_area(console_t *cons, ipcarg_t x0, ipcarg_t y0, ipcarg_t width, ipcarg_t height)
+{
+	if (interbuffer) {
+		ipcarg_t x;
+		ipcarg_t y;
+		
+		for (y = 0; y < height; y++) {
+			for (x = 0; x < width; x++) {
+				interbuffer[y * width + x] =
+				    *get_field_at(&cons->scr, x0 + x, y0 + y);
+			}
+		}
+		
+		async_req_4_0(fb_info.phone, FB_DRAW_TEXT_DATA,
+		    x0, y0, width, height);
+	}
+}
+
+/** Flush pending cells to FB. */
+static void fb_pending_flush(void)
+{
+	if (fb_pending.cnt > 0) {
+		fb_update_area(active_console, fb_pending.col,
+		    fb_pending.row, fb_pending.cnt, 1);
+		fb_pending.cnt = 0;
+	}
+}
+
+/** Mark a character cell as changed.
+ *
+ * This adds the cell to the pending rowspan if possible. Otherwise
+ * the old span is flushed first.
+ *
+ */
+static void cell_mark_changed(size_t col, size_t row)
+{
+	if (fb_pending.cnt != 0) {
+		if ((col != fb_pending.col + fb_pending.cnt)
+		    || (row != fb_pending.row)) {
+			fb_pending_flush();
+		}
+	}
+	
+	if (fb_pending.cnt == 0) {
+		fb_pending.col = col;
+		fb_pending.row = row;
+	}
+	
+	fb_pending.cnt++;
+}
+
+/** Print a character to the active VC with buffering. */
+static void fb_putchar(wchar_t c, ipcarg_t col, ipcarg_t row)
+{
+	async_msg_3(fb_info.phone, FB_PUTCHAR, c, col, row);
+}
+
+/** Process a character from the client (TTY emulation). */
+static void write_char(console_t *cons, wchar_t ch)
+{
+	bool flush_cursor = false;
+
+	switch (ch) {
+	case '\n':
+		fb_pending_flush();
+		flush_cursor = true;
+		cons->scr.position_y++;
+		cons->scr.position_x = 0;
+		break;
+	case '\r':
+		break;
+	case '\t':
+		cons->scr.position_x += 8;
+		cons->scr.position_x -= cons->scr.position_x % 8;
+		break;
+	case '\b':
+		if (cons->scr.position_x == 0)
+			break;
+		cons->scr.position_x--;
+		if (cons == active_console)
+			cell_mark_changed(cons->scr.position_x, cons->scr.position_y);
+		screenbuffer_putchar(&cons->scr, ' ');
+		break;
+	default:
+		if (cons == active_console)
+			cell_mark_changed(cons->scr.position_x, cons->scr.position_y);
+		
+		screenbuffer_putchar(&cons->scr, ch);
+		cons->scr.position_x++;
+	}
+	
+	if (cons->scr.position_x >= cons->scr.size_x) {
+		flush_cursor = true;
+		cons->scr.position_y++;
+	}
+	
+	if (cons->scr.position_y >= cons->scr.size_y) {
+		fb_pending_flush();
+		cons->scr.position_y = cons->scr.size_y - 1;
+		screenbuffer_clear_line(&cons->scr, cons->scr.top_line);
+		cons->scr.top_line = (cons->scr.top_line + 1) % cons->scr.size_y;
+		
+		if (cons == active_console)
+			async_msg_1(fb_info.phone, FB_SCROLL, 1);
+	}
+
+	if (cons == active_console && flush_cursor)
+		curs_goto(cons->scr.position_x, cons->scr.position_y);
+	cons->scr.position_x = cons->scr.position_x % cons->scr.size_x;
+}
+
+/** Switch to new console */
+static void change_console(console_t *cons)
+{
+	if (cons == active_console)
+		return;
+	
+	fb_pending_flush();
+	
+	if (cons == kernel_console) {
+		async_serialize_start();
+		curs_hide_sync();
+		gcons_in_kernel();
+		screen_yield();
+		kbd_yield();
+		async_serialize_end();
+		
+		if (__SYSCALL0(SYS_DEBUG_ENABLE_CONSOLE)) {
+			prev_console = active_console;
+			active_console = kernel_console;
+		} else
+			cons = active_console;
+	}
+	
+	if (cons != kernel_console) {
+		size_t x;
+		size_t y;
+		int rc = 0;
+		
+		async_serialize_start();
+		
+		if (active_console == kernel_console) {
+			screen_reclaim();
+			kbd_reclaim();
+			gcons_redraw_console();
+		}
+		
+		active_console = cons;
+		gcons_change_console(cons->index);
+		
+		set_attrs(&cons->scr.attrs);
+		curs_visibility(false);
+		if (interbuffer) {
+			for (y = 0; y < cons->scr.size_y; y++) {
+				for (x = 0; x < cons->scr.size_x; x++) {
+					interbuffer[y * cons->scr.size_x + x] =
+					    *get_field_at(&cons->scr, x, y);
+				}
+			}
+			
+			/* This call can preempt, but we are already at the end */
+			rc = async_req_4_0(fb_info.phone, FB_DRAW_TEXT_DATA,
+			    0, 0, cons->scr.size_x,
+			    cons->scr.size_y);
+		}
+		
+		if ((!interbuffer) || (rc != 0)) {
+			set_attrs(&cons->scr.attrs);
+			screen_clear();
+			
+			for (y = 0; y < cons->scr.size_y; y++)
+				for (x = 0; x < cons->scr.size_x; x++) {
+					keyfield_t *field = get_field_at(&cons->scr, x, y);
+					
+					if (!attrs_same(cons->scr.attrs, field->attrs))
+						set_attrs(&field->attrs);
+					
+					cons->scr.attrs = field->attrs;
+					if ((field->character == ' ') &&
+					    (attrs_same(field->attrs, cons->scr.attrs)))
+						continue;
+					
+					fb_putchar(field->character, x, y);
+				}
+		}
+		
+		curs_goto(cons->scr.position_x, cons->scr.position_y);
+		curs_visibility(cons->scr.is_cursor_visible);
+		
+		async_serialize_end();
+	}
+}
+
+/** Handler for keyboard */
+static void keyboard_events(ipc_callid_t iid, ipc_call_t *icall)
+{
+	/* Ignore parameters, the connection is already opened */
+	while (true) {
+		
+		ipc_call_t call;
+		ipc_callid_t callid = async_get_call(&call);
+		
+		int retval;
+		console_event_t ev;
+		
+		switch (IPC_GET_METHOD(call)) {
+		case IPC_M_PHONE_HUNGUP:
+			/* TODO: Handle hangup */
+			return;
+		case KBD_EVENT:
+			/* Got event from keyboard driver. */
+			retval = 0;
+			ev.type = IPC_GET_ARG1(call);
+			ev.key = IPC_GET_ARG2(call);
+			ev.mods = IPC_GET_ARG3(call);
+			ev.c = IPC_GET_ARG4(call);
+			
+			if ((ev.key >= KC_F1) && (ev.key < KC_F1 +
+			    CONSOLE_COUNT) && ((ev.mods & KM_CTRL) == 0)) {
+				if (ev.key == KC_F1 + KERNEL_CONSOLE)
+					change_console(kernel_console);
+				else
+					change_console(&consoles[ev.key - KC_F1]);
+				break;
+			}
+			
+			fibril_mutex_lock(&input_mutex);
+			keybuffer_push(&active_console->keybuffer, &ev);
+			fibril_condvar_broadcast(&input_cv);
+			fibril_mutex_unlock(&input_mutex);
+			break;
+		default:
+			retval = ENOENT;
+		}
+		ipc_answer_0(callid, retval);
+	}
+}
+
+/** Handler for mouse events */
+static void mouse_events(ipc_callid_t iid, ipc_call_t *icall)
+{
+	int button, press;
+	int dx, dy;
+	int newcon;
+
+	/* Ignore parameters, the connection is already opened */
+	while (true) {
+
+		ipc_call_t call;
+		ipc_callid_t callid = async_get_call(&call);
+
+		int retval;
+
+		switch (IPC_GET_METHOD(call)) {
+		case IPC_M_PHONE_HUNGUP:
+			/* TODO: Handle hangup */
+			return;
+		case MEVENT_BUTTON:
+			button = IPC_GET_ARG1(call);
+			press = IPC_GET_ARG2(call);
+			if (button == 1) {
+				newcon = gcons_mouse_btn(press);
+				if (newcon != -1)
+					change_console(&consoles[newcon]);
+			}
+			retval = 0;
+			break;
+		case MEVENT_MOVE:
+			dx = IPC_GET_ARG1(call);
+			dy = IPC_GET_ARG2(call);
+			gcons_mouse_move(dx, dy);
+			retval = 0;
+			break;
+		default:
+			retval = ENOENT;
+		}
+
+		ipc_answer_0(callid, retval);
+	}
+}
+
+static void cons_write(console_t *cons, ipc_callid_t rid, ipc_call_t *request)
+{
+	ipc_callid_t callid;
+	size_t size;
+	if (!async_data_write_receive(&callid, &size)) {
+		ipc_answer_0(callid, EINVAL);
+		ipc_answer_0(rid, EINVAL);
+		return;
+	}
+	
+	char *buf = (char *) malloc(size);
+	if (buf == NULL) {
+		ipc_answer_0(callid, ENOMEM);
+		ipc_answer_0(rid, ENOMEM);
+		return;
+	}
+	
+	(void) async_data_write_finalize(callid, buf, size);
+	
+	async_serialize_start();
+	
+	size_t off = 0;
+	while (off < size) {
+		wchar_t ch = str_decode(buf, &off, size);
+		write_char(cons, ch);
+	}
+	
+	async_serialize_end();
+	
+	gcons_notify_char(cons->index);
+	ipc_answer_1(rid, EOK, size);
+	
+	free(buf);
+}
+
+static void cons_read(console_t *cons, ipc_callid_t rid, ipc_call_t *request)
+{
+	ipc_callid_t callid;
+	size_t size;
+	if (!async_data_read_receive(&callid, &size)) {
+		ipc_answer_0(callid, EINVAL);
+		ipc_answer_0(rid, EINVAL);
+		return;
+	}
+	
+	char *buf = (char *) malloc(size);
+	if (buf == NULL) {
+		ipc_answer_0(callid, ENOMEM);
+		ipc_answer_0(rid, ENOMEM);
+		return;
+	}
+	
+	size_t pos = 0;
+	console_event_t ev;
+	fibril_mutex_lock(&input_mutex);
+recheck:
+	while ((keybuffer_pop(&cons->keybuffer, &ev)) && (pos < size)) {
+		if (ev.type == KEY_PRESS) {
+			buf[pos] = ev.c;
+			pos++;
+		}
+	}
+	
+	if (pos == size) {
+		(void) async_data_read_finalize(callid, buf, size);
+		ipc_answer_1(rid, EOK, size);
+		free(buf);
+	} else {
+		fibril_condvar_wait(&input_cv, &input_mutex);
+		goto recheck;
+	}
+	fibril_mutex_unlock(&input_mutex);
+}
+
+static void cons_get_event(console_t *cons, ipc_callid_t rid, ipc_call_t *request)
+{
+	console_event_t ev;
+
+	fibril_mutex_lock(&input_mutex);
+recheck:
+	if (keybuffer_pop(&cons->keybuffer, &ev)) {
+		ipc_answer_4(rid, EOK, ev.type, ev.key, ev.mods, ev.c);
+	} else {
+		fibril_condvar_wait(&input_cv, &input_mutex);
+		goto recheck;
+	}
+	fibril_mutex_unlock(&input_mutex);
+}
+
+/** Default thread for new connections */
+static void client_connection(ipc_callid_t iid, ipc_call_t *icall)
+{
+	console_t *cons = NULL;
+	
+	size_t i;
+	for (i = 0; i < CONSOLE_COUNT; i++) {
+		if (i == KERNEL_CONSOLE)
+			continue;
+		
+		if (consoles[i].dev_handle == (dev_handle_t) IPC_GET_ARG1(*icall)) {
+			cons = &consoles[i];
+			break;
+		}
+	}
+	
+	if (cons == NULL) {
+		ipc_answer_0(iid, ENOENT);
+		return;
+	}
+	
+	ipc_callid_t callid;
+	ipc_call_t call;
+	ipcarg_t arg1;
+	ipcarg_t arg2;
+	ipcarg_t arg3;
+
+	int cons_ccap;
+	int rc;
+	
+	async_serialize_start();
+	if (cons->refcount == 0)
+		gcons_notify_connect(cons->index);
+	
+	cons->refcount++;
+	
+	/* Accept the connection */
+	ipc_answer_0(iid, EOK);
+	
+	while (true) {
+		async_serialize_end();
+		callid = async_get_call(&call);
+		async_serialize_start();
+		
+		arg1 = 0;
+		arg2 = 0;
+		arg3 = 0;
+		
+		switch (IPC_GET_METHOD(call)) {
+		case IPC_M_PHONE_HUNGUP:
+			cons->refcount--;
+			if (cons->refcount == 0)
+				gcons_notify_disconnect(cons->index);
+			return;
+		case VFS_OUT_READ:
+			async_serialize_end();
+			cons_read(cons, callid, &call);
+			async_serialize_start();
+			continue;
+		case VFS_OUT_WRITE:
+			async_serialize_end();
+			cons_write(cons, callid, &call);
+			async_serialize_start();
+			continue;
+		case VFS_OUT_SYNC:
+			fb_pending_flush();
+			if (cons == active_console) {
+				async_req_0_0(fb_info.phone, FB_FLUSH);
+				
+				curs_goto(cons->scr.position_x, cons->scr.position_y);
+			}
+			break;
+		case CONSOLE_CLEAR:
+			/* Send message to fb */
+			if (cons == active_console)
+				async_msg_0(fb_info.phone, FB_CLEAR);
+			
+			screenbuffer_clear(&cons->scr);
+			
+			break;
+		case CONSOLE_GOTO:
+			screenbuffer_goto(&cons->scr,
+			    IPC_GET_ARG1(call), IPC_GET_ARG2(call));
+			if (cons == active_console)
+				curs_goto(IPC_GET_ARG1(call),
+				    IPC_GET_ARG2(call));
+			break;
+		case CONSOLE_GET_POS:
+			arg1 = cons->scr.position_x;
+			arg2 = cons->scr.position_y;
+			break;
+		case CONSOLE_GET_SIZE:
+			arg1 = fb_info.cols;
+			arg2 = fb_info.rows;
+			break;
+		case CONSOLE_GET_COLOR_CAP:
+			rc = ccap_fb_to_con(fb_info.color_cap, &cons_ccap);
+			if (rc != EOK) {
+				ipc_answer_0(callid, rc);
+				continue;
+			}
+			arg1 = cons_ccap;
+			break;
+		case CONSOLE_SET_STYLE:
+			fb_pending_flush();
+			arg1 = IPC_GET_ARG1(call);
+			screenbuffer_set_style(&cons->scr, arg1);
+			if (cons == active_console)
+				set_style(arg1);
+			break;
+		case CONSOLE_SET_COLOR:
+			fb_pending_flush();
+			arg1 = IPC_GET_ARG1(call);
+			arg2 = IPC_GET_ARG2(call);
+			arg3 = IPC_GET_ARG3(call);
+			screenbuffer_set_color(&cons->scr, arg1, arg2, arg3);
+			if (cons == active_console)
+				set_color(arg1, arg2, arg3);
+			break;
+		case CONSOLE_SET_RGB_COLOR:
+			fb_pending_flush();
+			arg1 = IPC_GET_ARG1(call);
+			arg2 = IPC_GET_ARG2(call);
+			screenbuffer_set_rgb_color(&cons->scr, arg1, arg2);
+			if (cons == active_console)
+				set_rgb_color(arg1, arg2);
+			break;
+		case CONSOLE_CURSOR_VISIBILITY:
+			fb_pending_flush();
+			arg1 = IPC_GET_ARG1(call);
+			cons->scr.is_cursor_visible = arg1;
+			if (cons == active_console)
+				curs_visibility(arg1);
+			break;
+		case CONSOLE_GET_EVENT:
+			async_serialize_end();
+			cons_get_event(cons, callid, &call);
+			async_serialize_start();
+			continue;
+		case CONSOLE_KCON_ENABLE:
+			change_console(kernel_console);
+			break;
+		}
+		ipc_answer_3(callid, EOK, arg1, arg2, arg3);
+	}
+}
+
+static void interrupt_received(ipc_callid_t callid, ipc_call_t *call)
+{
+	change_console(prev_console);
+}
+
+static bool console_init(char *input)
+{
+	/* Connect to input device */
+	int input_fd = open(input, O_RDONLY);
+	if (input_fd < 0) {
+		printf(NAME ": Failed opening %s\n", input);
+		return false;
+	}
+
+	kbd_phone = fd_phone(input_fd);
+	if (kbd_phone < 0) {
+		printf(NAME ": Failed to connect to input device\n");
+		return false;
+	}
+
+	/* NB: The callback connection is slotted for removal */
+	ipcarg_t phonehash;
+	if (ipc_connect_to_me(kbd_phone, SERVICE_CONSOLE, 0, 0, &phonehash) != 0) {
+		printf(NAME ": Failed to create callback from input device\n");
+		return false;
+	}
+
+	async_new_connection(phonehash, 0, NULL, keyboard_events);
+
+	/* Connect to mouse device */
+	mouse_phone = -1;
+	int mouse_fd = open("/dev/hid_in/mouse", O_RDONLY);
+
+	if (mouse_fd < 0) {
+		printf(NAME ": Notice - failed opening %s\n", "/dev/hid_in/mouse");
+		goto skip_mouse;
+	}
+
+	mouse_phone = fd_phone(mouse_fd);
+	if (mouse_phone < 0) {
+		printf(NAME ": Failed to connect to mouse device\n");
+		goto skip_mouse;
+	}
+
+	if (ipc_connect_to_me(mouse_phone, SERVICE_CONSOLE, 0, 0, &phonehash) != 0) {
+		printf(NAME ": Failed to create callback from mouse device\n");
+		mouse_phone = -1;
+		goto skip_mouse;
+	}
+
+	async_new_connection(phonehash, 0, NULL, mouse_events);
+skip_mouse:
+
+	/* Connect to framebuffer driver */
+	fb_info.phone = ipc_connect_me_to_blocking(PHONE_NS, SERVICE_VIDEO, 0, 0);
+	if (fb_info.phone < 0) {
+		printf(NAME ": Failed to connect to video service\n");
+		return -1;
+	}
+
+	/* Register driver */
+	int rc = devmap_driver_register(NAME, client_connection);
+	if (rc < 0) {
+		printf(NAME ": Unable to register driver (%d)\n", rc);
+		return false;
+	}
+	
+	/* Initialize gcons */
+	gcons_init(fb_info.phone);
+	
+	/* Synchronize, the gcons could put something in queue */
+	ipcarg_t color_cap;
+	async_req_0_0(fb_info.phone, FB_FLUSH);
+	async_req_0_2(fb_info.phone, FB_GET_CSIZE, &fb_info.cols, &fb_info.rows);
+	async_req_0_1(fb_info.phone, FB_GET_COLOR_CAP, &color_cap);
+	fb_info.color_cap = color_cap;
+	
+	/* Set up shared memory buffer. */
+	size_t ib_size = sizeof(keyfield_t) * fb_info.cols * fb_info.rows;
+	interbuffer = as_get_mappable_page(ib_size);
+	
+	if (as_area_create(interbuffer, ib_size, AS_AREA_READ |
+	    AS_AREA_WRITE | AS_AREA_CACHEABLE) != interbuffer)
+		interbuffer = NULL;
+	
+	if (interbuffer) {
+		if (async_share_out_start(fb_info.phone, interbuffer,
+		    AS_AREA_READ) != EOK) {
+			as_area_destroy(interbuffer);
+			interbuffer = NULL;
+		}
+	}
+	
+	fb_pending.cnt = 0;
+	
+	/* Inititalize consoles */
+	size_t i;
+	for (i = 0; i < CONSOLE_COUNT; i++) {
+		if (i != KERNEL_CONSOLE) {
+			if (screenbuffer_init(&consoles[i].scr,
+			    fb_info.cols, fb_info.rows) == NULL) {
+				printf(NAME ": Unable to allocate screen buffer %u\n", i);
+				return false;
+			}
+			screenbuffer_clear(&consoles[i].scr);
+			keybuffer_init(&consoles[i].keybuffer);
+			consoles[i].index = i;
+			consoles[i].refcount = 0;
+			
+			char vc[DEVMAP_NAME_MAXLEN + 1];
+			snprintf(vc, DEVMAP_NAME_MAXLEN, "%s/vc%u", NAMESPACE, i);
+			
+			if (devmap_device_register(vc, &consoles[i].dev_handle) != EOK) {
+				devmap_hangup_phone(DEVMAP_DRIVER);
+				printf(NAME ": Unable to register device %s\n", vc);
+				return false;
+			}
+		}
+	}
+	
+	/* Disable kernel output to the console */
+	__SYSCALL0(SYS_DEBUG_DISABLE_CONSOLE);
+	
+	/* Initialize the screen */
+	async_serialize_start();
+	gcons_redraw_console();
+	set_rgb_color(DEFAULT_FOREGROUND, DEFAULT_BACKGROUND);
+	screen_clear();
+	curs_goto(0, 0);
+	curs_visibility(active_console->scr.is_cursor_visible);
+	async_serialize_end();
+	
+	/* Receive kernel notifications */
+	if (event_subscribe(EVENT_KCONSOLE, 0) != EOK)
+		printf(NAME ": Error registering kconsole notifications\n");
+	
+	async_set_interrupt_received(interrupt_received);
+	
+	return true;
+}
+
+static void usage(void)
+{
+	printf("Usage: console <input>\n");
+}
+
+int main(int argc, char *argv[])
+{
+	if (argc < 2) {
+		usage();
+		return -1;
+	}
+	
+	printf(NAME ": HelenOS Console service\n");
+	
+	if (!console_init(argv[1]))
+		return -1;
+	
+	printf(NAME ": Accepting connections\n");
+	async_manager();
+	
+	return 0;
+}
+
+/** @}
+ */
Index: uspace/srv/hid/console/console.h
===================================================================
--- uspace/srv/hid/console/console.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/console/console.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2006 Josef Cejka
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup console
+ * @{
+ */
+/** @file
+ */
+
+#ifndef __CONSOLE_H__
+#define __CONSOLE_H__
+
+#define CONSOLE_COUNT   12
+#define KERNEL_CONSOLE  11
+
+#endif
+
+/** @}
+ */
Index: uspace/srv/hid/console/gcons.c
===================================================================
--- uspace/srv/hid/console/gcons.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/console/gcons.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,544 @@
+/*
+ * Copyright (c) 2006 Ondrej Palkovsky
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup console
+ * @{
+ */
+/** @file
+ */
+
+#include <ipc/fb.h>
+#include <ipc/ipc.h>
+#include <async.h>
+#include <stdio.h>
+#include <sys/mman.h>
+#include <string.h>
+#include <align.h>
+#include <bool.h>
+
+#include "console.h"
+#include "gcons.h"
+
+#define CONSOLE_TOP     66
+#define CONSOLE_MARGIN  6
+
+#define STATUS_START   110
+#define STATUS_TOP     8
+#define STATUS_SPACE   4
+#define STATUS_WIDTH   48
+#define STATUS_HEIGHT  48
+
+#define MAIN_COLOR  0xffffff
+
+static bool use_gcons = false;
+static ipcarg_t xres;
+static ipcarg_t yres;
+
+enum butstate {
+	CONS_DISCONNECTED = 0,
+	CONS_SELECTED,
+	CONS_IDLE,
+	CONS_HAS_DATA,
+	CONS_KERNEL,
+	CONS_DISCONNECTED_SEL,
+	CONS_LAST
+};
+
+static int console_vp;
+static int cstatus_vp[CONSOLE_COUNT];
+static enum butstate console_state[CONSOLE_COUNT];
+
+static int fbphone;
+
+/** List of pixmaps identifying these icons */
+static int ic_pixmaps[CONS_LAST] = {-1, -1, -1, -1, -1, -1};
+static int animation = -1;
+
+static size_t active_console = 0;
+
+size_t mouse_x;
+size_t mouse_y;
+
+bool btn_pressed;
+size_t btn_x;
+size_t btn_y;
+
+static void vp_switch(int vp)
+{
+	async_msg_1(fbphone, FB_VIEWPORT_SWITCH, vp);
+}
+
+/** Create view port */
+static int vp_create(size_t x, size_t y, size_t width, size_t height)
+{
+	return async_req_2_0(fbphone, FB_VIEWPORT_CREATE, (x << 16) | y,
+	    (width << 16) | height);
+}
+
+static void clear(void)
+{
+	async_msg_0(fbphone, FB_CLEAR);
+}
+
+static void set_rgb_color(uint32_t fgcolor, uint32_t bgcolor)
+{
+	async_msg_2(fbphone, FB_SET_RGB_COLOR, fgcolor, bgcolor);
+}
+
+/** Transparent putchar */
+static void tran_putch(wchar_t ch, size_t col, size_t row)
+{
+	async_msg_3(fbphone, FB_PUTCHAR, ch, col, row);
+}
+
+/** Redraw the button showing state of a given console */
+static void redraw_state(size_t index)
+{
+	vp_switch(cstatus_vp[index]);
+	
+	enum butstate state = console_state[index];
+	
+	if (ic_pixmaps[state] != -1)
+		async_msg_2(fbphone, FB_VP_DRAW_PIXMAP, cstatus_vp[index],
+		    ic_pixmaps[state]);
+	
+	if ((state != CONS_DISCONNECTED) && (state != CONS_KERNEL)
+	    && (state != CONS_DISCONNECTED_SEL)) {
+		
+		char data[5];
+		snprintf(data, 5, "%u", index + 1);
+		
+		size_t i;
+		for (i = 0; data[i] != 0; i++)
+			tran_putch(data[i], 2 + i, 1);
+	}
+}
+
+/** Notification run on changing console (except kernel console) */
+void gcons_change_console(size_t index)
+{
+	if (!use_gcons)
+		return;
+	
+	if (active_console == KERNEL_CONSOLE) {
+		size_t i;
+		
+		for (i = 0; i < CONSOLE_COUNT; i++)
+			redraw_state(i);
+		
+		if (animation != -1)
+			async_msg_1(fbphone, FB_ANIM_START, animation);
+	} else {
+		if (console_state[active_console] == CONS_DISCONNECTED_SEL)
+			console_state[active_console] = CONS_DISCONNECTED;
+		else
+			console_state[active_console] = CONS_IDLE;
+		
+		redraw_state(active_console);
+	}
+	
+	active_console = index;
+	
+	if ((console_state[index] == CONS_DISCONNECTED)
+	    || (console_state[index] == CONS_DISCONNECTED_SEL))
+		console_state[index] = CONS_DISCONNECTED_SEL;
+	else
+		console_state[index] = CONS_SELECTED;
+	
+	redraw_state(index);
+	vp_switch(console_vp);
+}
+
+/** Notification function that gets called on new output to virtual console */
+void gcons_notify_char(size_t index)
+{
+	if (!use_gcons)
+		return;
+	
+	if ((index == active_console)
+	    || (console_state[index] == CONS_HAS_DATA))
+		return;
+	
+	console_state[index] = CONS_HAS_DATA;
+	
+	if (active_console == KERNEL_CONSOLE)
+		return;
+	
+	redraw_state(index);
+	vp_switch(console_vp);
+}
+
+/** Notification function called on service disconnect from console */
+void gcons_notify_disconnect(size_t index)
+{
+	if (!use_gcons)
+		return;
+	
+	if (index == active_console)
+		console_state[index] = CONS_DISCONNECTED_SEL;
+	else
+		console_state[index] = CONS_DISCONNECTED;
+	
+	if (active_console == KERNEL_CONSOLE)
+		return;
+	
+	redraw_state(index);
+	vp_switch(console_vp);
+}
+
+/** Notification function called on console connect */
+void gcons_notify_connect(size_t index)
+{
+	if (!use_gcons)
+		return;
+	
+	if (index == active_console)
+		console_state[index] = CONS_SELECTED;
+	else
+		console_state[index] = CONS_IDLE;
+	
+	if (active_console == KERNEL_CONSOLE)
+		return;
+	
+	redraw_state(index);
+	vp_switch(console_vp);
+}
+
+/** Change to kernel console */
+void gcons_in_kernel(void)
+{
+	if (animation != -1)
+		async_msg_1(fbphone, FB_ANIM_STOP, animation);
+	
+	active_console = KERNEL_CONSOLE;
+	vp_switch(0);
+}
+
+/** Return x, where left <= x <= right && |a-x| == min(|a-x|) is smallest */
+static inline ssize_t limit(ssize_t a, ssize_t left, ssize_t right)
+{
+	if (a < left)
+		a = left;
+	
+	if (a >= right)
+		a = right - 1;
+	
+	return a;
+}
+
+/** Handle mouse move
+ *
+ * @param dx Delta X of mouse move
+ * @param dy Delta Y of mouse move
+ */
+void gcons_mouse_move(ssize_t dx, ssize_t dy)
+{
+	mouse_x = limit(mouse_x + dx, 0, xres);
+	mouse_y = limit(mouse_y + dy, 0, yres);
+
+	if (active_console != KERNEL_CONSOLE)
+		async_msg_2(fbphone, FB_POINTER_MOVE, mouse_x, mouse_y);
+}
+
+static int gcons_find_conbut(int x, int y)
+{
+	int status_start = STATUS_START + (xres - 800) / 2;
+	
+	if ((y < STATUS_TOP) || (y >= STATUS_TOP + STATUS_HEIGHT))
+		return -1;
+	
+	if (x < status_start)
+		return -1;
+	
+	if (x >= status_start + (STATUS_WIDTH + STATUS_SPACE) * CONSOLE_COUNT)
+		return -1;
+	if (((x - status_start) % (STATUS_WIDTH + STATUS_SPACE)) < STATUS_SPACE)
+		return -1;
+	
+	return (x - status_start) / (STATUS_WIDTH + STATUS_SPACE);
+}
+
+/** Handle mouse click
+ *
+ * @param state New state (true - pressed, false - depressed)
+ */
+int gcons_mouse_btn(bool state)
+{
+	int conbut;
+	
+	if (state) {
+		conbut = gcons_find_conbut(mouse_x, mouse_y);
+		if (conbut != -1) {
+			btn_pressed = true;
+			btn_x = mouse_x;
+			btn_y = mouse_y;
+		}
+		return -1;
+	}
+	
+	if ((!state) && (!btn_pressed))
+		return -1;
+	
+	btn_pressed = false;
+	
+	conbut = gcons_find_conbut(mouse_x, mouse_y);
+	if (conbut == gcons_find_conbut(btn_x, btn_y))
+		return conbut;
+	
+	return -1;
+}
+
+
+/** Draw a PPM pixmap to framebuffer
+ *
+ * @param logo Pointer to PPM data
+ * @param size Size of PPM data
+ * @param x Coordinate of upper left corner
+ * @param y Coordinate of upper left corner
+ */
+static void draw_pixmap(char *logo, size_t size, int x, int y)
+{
+	char *shm;
+	int rc;
+	
+	/* Create area */
+	shm = mmap(NULL, size, PROTO_READ | PROTO_WRITE, MAP_SHARED |
+	    MAP_ANONYMOUS, 0, 0);
+	if (shm == MAP_FAILED)
+		return;
+	
+	memcpy(shm, logo, size);
+	
+	/* Send area */
+	rc = async_req_1_0(fbphone, FB_PREPARE_SHM, (ipcarg_t) shm);
+	if (rc)
+		goto exit;
+	
+	rc = async_share_out_start(fbphone, shm, PROTO_READ);
+	if (rc)
+		goto drop;
+	
+	/* Draw logo */
+	async_msg_2(fbphone, FB_DRAW_PPM, x, y);
+	
+drop:
+	/* Drop area */
+	async_msg_0(fbphone, FB_DROP_SHM);
+	
+exit:
+	/* Remove area */
+	munmap(shm, size);
+}
+
+extern char _binary_gfx_helenos_ppm_start[0];
+extern int _binary_gfx_helenos_ppm_size;
+extern char _binary_gfx_nameic_ppm_start[0];
+extern int _binary_gfx_nameic_ppm_size;
+
+/** Redraws console graphics */
+void gcons_redraw_console(void)
+{
+	int i;
+	
+	if (!use_gcons)
+		return;
+	
+	vp_switch(0);
+	set_rgb_color(MAIN_COLOR, MAIN_COLOR);
+	clear();
+	draw_pixmap(_binary_gfx_helenos_ppm_start,
+	    (size_t) &_binary_gfx_helenos_ppm_size, xres - 66, 2);
+	draw_pixmap(_binary_gfx_nameic_ppm_start,
+	    (size_t) &_binary_gfx_nameic_ppm_size, 5, 17);
+	
+	for (i = 0; i < CONSOLE_COUNT; i++)
+		redraw_state(i);
+	
+	vp_switch(console_vp);
+}
+
+/** Creates a pixmap on framebuffer
+ *
+ * @param data PPM data
+ * @param size PPM data size
+ *
+ * @return Pixmap identification
+ *
+ */
+static int make_pixmap(char *data, size_t size)
+{
+	char *shm;
+	int rc;
+	int pxid = -1;
+	
+	/* Create area */
+	shm = mmap(NULL, size, PROTO_READ | PROTO_WRITE, MAP_SHARED |
+	    MAP_ANONYMOUS, 0, 0);
+	if (shm == MAP_FAILED)
+		return -1;
+	
+	memcpy(shm, data, size);
+	
+	/* Send area */
+	rc = async_req_1_0(fbphone, FB_PREPARE_SHM, (ipcarg_t) shm);
+	if (rc)
+		goto exit;
+	
+	rc = async_share_out_start(fbphone, shm, PROTO_READ);
+	if (rc)
+		goto drop;
+	
+	/* Obtain pixmap */
+	rc = async_req_0_0(fbphone, FB_SHM2PIXMAP);
+	if (rc < 0)
+		goto drop;
+	
+	pxid = rc;
+	
+drop:
+	/* Drop area */
+	async_msg_0(fbphone, FB_DROP_SHM);
+	
+exit:
+	/* Remove area */
+	munmap(shm, size);
+	
+	return pxid;
+}
+
+extern char _binary_gfx_anim_1_ppm_start[0];
+extern int _binary_gfx_anim_1_ppm_size;
+extern char _binary_gfx_anim_2_ppm_start[0];
+extern int _binary_gfx_anim_2_ppm_size;
+extern char _binary_gfx_anim_3_ppm_start[0];
+extern int _binary_gfx_anim_3_ppm_size;
+extern char _binary_gfx_anim_4_ppm_start[0];
+extern int _binary_gfx_anim_4_ppm_size;
+
+static void make_anim(void)
+{
+	int an = async_req_1_0(fbphone, FB_ANIM_CREATE, cstatus_vp[KERNEL_CONSOLE]);
+	if (an < 0)
+		return;
+	
+	int pm = make_pixmap(_binary_gfx_anim_1_ppm_start,
+	    (int) &_binary_gfx_anim_1_ppm_size);
+	async_msg_2(fbphone, FB_ANIM_ADDPIXMAP, an, pm);
+	
+	pm = make_pixmap(_binary_gfx_anim_2_ppm_start,
+	    (int) &_binary_gfx_anim_2_ppm_size);
+	async_msg_2(fbphone, FB_ANIM_ADDPIXMAP, an, pm);
+	
+	pm = make_pixmap(_binary_gfx_anim_3_ppm_start,
+	    (int) &_binary_gfx_anim_3_ppm_size);
+	async_msg_2(fbphone, FB_ANIM_ADDPIXMAP, an, pm);
+	
+	pm = make_pixmap(_binary_gfx_anim_4_ppm_start,
+	    (int) &_binary_gfx_anim_4_ppm_size);
+	async_msg_2(fbphone, FB_ANIM_ADDPIXMAP, an, pm);
+	
+	async_msg_1(fbphone, FB_ANIM_START, an);
+	
+	animation = an;
+}
+
+extern char _binary_gfx_cons_selected_ppm_start[0];
+extern int _binary_gfx_cons_selected_ppm_size;
+extern char _binary_gfx_cons_idle_ppm_start[0];
+extern int _binary_gfx_cons_idle_ppm_size;
+extern char _binary_gfx_cons_has_data_ppm_start[0];
+extern int _binary_gfx_cons_has_data_ppm_size;
+extern char _binary_gfx_cons_kernel_ppm_start[0];
+extern int _binary_gfx_cons_kernel_ppm_size;
+
+/** Initialize nice graphical console environment */
+void gcons_init(int phone)
+{
+	fbphone = phone;
+	
+	int rc = async_req_0_2(phone, FB_GET_RESOLUTION, &xres, &yres);
+	if (rc)
+		return;
+	
+	if ((xres < 800) || (yres < 600))
+		return;
+	
+	/* Create console viewport */
+	
+	/* Align width & height to character size */
+	console_vp = vp_create(CONSOLE_MARGIN, CONSOLE_TOP,
+	    ALIGN_DOWN(xres - 2 * CONSOLE_MARGIN, 8),
+	    ALIGN_DOWN(yres - (CONSOLE_TOP + CONSOLE_MARGIN), 16));
+	
+	if (console_vp < 0)
+		return;
+	
+	/* Create status buttons */
+	size_t status_start = STATUS_START + (xres - 800) / 2;
+	size_t i;
+	for (i = 0; i < CONSOLE_COUNT; i++) {
+		cstatus_vp[i] = vp_create(status_start + CONSOLE_MARGIN +
+		    i * (STATUS_WIDTH + STATUS_SPACE), STATUS_TOP,
+		    STATUS_WIDTH, STATUS_HEIGHT);
+		
+		if (cstatus_vp[i] < 0)
+			return;
+		
+		vp_switch(cstatus_vp[i]);
+		set_rgb_color(0x202020, 0xffffff);
+	}
+	
+	/* Initialize icons */
+	ic_pixmaps[CONS_SELECTED] =
+	    make_pixmap(_binary_gfx_cons_selected_ppm_start,
+	    (size_t) &_binary_gfx_cons_selected_ppm_size);
+	ic_pixmaps[CONS_IDLE] =
+	    make_pixmap(_binary_gfx_cons_idle_ppm_start,
+	    (size_t) &_binary_gfx_cons_idle_ppm_size);
+	ic_pixmaps[CONS_HAS_DATA] =
+	    make_pixmap(_binary_gfx_cons_has_data_ppm_start,
+	    (size_t) &_binary_gfx_cons_has_data_ppm_size);
+	ic_pixmaps[CONS_DISCONNECTED] =
+	    make_pixmap(_binary_gfx_cons_idle_ppm_start,
+	    (size_t) &_binary_gfx_cons_idle_ppm_size);
+	ic_pixmaps[CONS_KERNEL] =
+	    make_pixmap(_binary_gfx_cons_kernel_ppm_start,
+	    (size_t) &_binary_gfx_cons_kernel_ppm_size);
+	ic_pixmaps[CONS_DISCONNECTED_SEL] = ic_pixmaps[CONS_SELECTED];
+	
+	make_anim();
+	
+	use_gcons = true;
+	console_state[0] = CONS_DISCONNECTED_SEL;
+	console_state[KERNEL_CONSOLE] = CONS_KERNEL;
+	
+	vp_switch(console_vp);
+}
+
+/** @}
+ */
Index: uspace/srv/hid/console/gcons.h
===================================================================
--- uspace/srv/hid/console/gcons.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/console/gcons.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2006 Ondrej Palkovsky
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup console
+ * @{
+ */
+/** @file
+ */
+
+#ifndef GCONS_H_
+#define GCONS_H_
+
+#include <sys/types.h>
+
+void gcons_init(int phone);
+
+void gcons_redraw_console(void);
+void gcons_change_console(size_t index);
+void gcons_notify_char(size_t index);
+void gcons_in_kernel(void);
+
+void gcons_notify_connect(size_t index);
+void gcons_notify_disconnect(size_t index);
+
+void gcons_mouse_move(ssize_t dx, ssize_t dy);
+int gcons_mouse_btn(bool state);
+
+#endif
+
+/** @}
+ */
Index: uspace/srv/hid/console/gfx/anim_1.ppm
===================================================================
--- uspace/srv/hid/console/gfx/anim_1.ppm	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/console/gfx/anim_1.ppm	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,23 @@
+P6
+# CREATOR: The GIMP's PNM Filter Version 1.0
+48 48
+255
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ääääää÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûüüüþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿööö½½½eeeeee½½½öööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýùùùøøøõõõêêêèèèèèèéééêêêëëëìììíííîîîîîîðððøøøúúúûûûþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãããeeedddãããÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýý÷÷÷ñññáááÞÞÞÞÞÞÜÜÜÞÞÞßßßáááãããäääåååæææçççèèèéééëëëêêêììì÷÷÷úúúþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãããeeedddãããÿÿÿÿÿÿÿÿÿýýýõõõîîî×××ÒÒÒÏÏÏÑÑÑÒÒÒÕÕÕ×××ÚÚÚÜÜÜÞÞÞàààâââãããääääääååååååääääääåååèèèõõõùùùýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿööö½½½eeeddd½½½öööÿÿÿÿÿÿýýýíííÏÏÏÇÇÇÃÃÃÃÃÃÅÅÅÈÈÈËËËÎÎÎÑÑÑÕÕÕØØØÛÛÛÝÝÝßßßàààáááââââââââââââáááßßßÞÞÞßßßâââôôôýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööããããããöööþþþÿÿÿüüüìììÇÇÇ¸¸¸···¸¸¸»»»¾¾¾ÂÂÂÆÆÆÊÊÊÎÎÎÒÒÒÖÖÖÙÙÙÜÜÜÞÞÞàààáááââââââââââââàààßßßÜÜÜÙÙÙ×××ÝÝÝòòòýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüêêêÃÃÃ±±±¯¯¯°°°²²²¶¶¶ººº¾¾¾ÃÃÃÈÈÈÍÍÍÒÒÒÖÖÖÚÚÚÝÝÝßßßáááâââãããääääääãããáááàààÝÝÝÚÚÚÖÖÖÔÔÔÚÚÚòòòýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüëëëÁÁÁ­­­©©©©©©«««¯¯¯³³³¹¹¹¾¾¾ÄÄÄÊÊÊÏÏÏÔÔÔØØØÜÜÜßßßâââäääåååæææççççççæææäääâââàààÜÜÜÙÙÙÔÔÔÑÑÑØØØðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýìììÃÃÃ­­­§§§¦¦¦§§§ªªª®®®´´´ºººÁÁÁÇÇÇÍÍÍÓÓÓØØØÜÜÜàààãããæææèèèéééêêêêêêêêêêêêèèèæææäääàààÝÝÝØØØÓÓÓÏÏÏ×××ðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýíííÇÇÇ±±±©©©¦¦¦¦¦¦¨¨¨¬¬¬±±±···¾¾¾ÅÅÅÌÌÌÒÒÒØØØÝÝÝâââåååèèèêêêìììíííîîîîîîîîîîîîìììëëëèèèæææâââÞÞÞØØØÓÓÓÎÎÎÕÕÕðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööÏÏÏ¸¸¸¯¯¯©©©§§§¨¨¨«««°°°¶¶¶½½½ÄÄÄËËËÒÒÒÙÙÙÞÞÞãããçççêêêíííïïïðððñññòòòòòòòòòòòòñññïïïíííëëëçççãããßßßÙÙÙÓÓÓÎÎÎ×××÷÷÷þþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýîîîÇÇÇ···°°°«««ªªª¬¬¬°°°¶¶¶½½½ÄÄÄÌÌÌÓÓÓÙÙÙßßßåååéééìììïïïñññóóóôôôõõõõõõööööööõõõõõõóóóòòòïïïíííéééåååàààÚÚÚÔÔÔÔÔÔðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ØØØÂÂÂ¸¸¸²²²¯¯¯®®®±±±¶¶¶¼¼¼ÄÄÄËËËÓÓÓÚÚÚàààæææëëëîîîñññóóóõõõööö÷÷÷øøøøøøùùùùùùøøøøøø÷÷÷õõõôôôñññïïïëëëçççáááÛÛÛÕÕÕÜÜÜøøøþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýòòòÒÒÒÃÃÃ»»»µµµ³³³´´´···½½½ÄÄÄËËËÓÓÓÚÚÚáááçççìììðððóóóõõõ÷÷÷øøøùùùúúúúúúûûûûûûûûûûûûúúúúúúùùù÷÷÷öööóóóðððìììèèèâââÜÜÜÛÛÛóóóýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿùùùààà···yyyEEE777¹¹¹ººº¾¾¾ÄÄÄÌÌÌÓÓÓÚÚÚáááèèèíííñññôôôöööøøøùùùúúúûûûüüüüüüüüüýýýýýýüüüüüüûûûûûûúúúøøø÷÷÷ôôôñññíííèèèãããÞÞÞãããùùùþþþÿÿÿÿÿÿÿÿÿÿÿÿøøøÝÝÝºººccc   
+
+
+¾¾¾ÁÁÁÅÅÅËËËÓÓÓÚÚÚáááèèèíííñññôôô÷÷÷ùùùúúúûûûüüüüüüýýýýýýýýýþþþþþþýýýýýýýýýüüüüüüûûûùùùøøøõõõòòòîîîéééääääääùùùþþþÿÿÿÿÿÿÿÿÿþþþõõõÞÞÞÒÒÒÅÅÅ   
+
+
+ÄÄÄÇÇÇÌÌÌÒÒÒÙÙÙàààçççíííñññõõõ÷÷÷ùùùûûûüüüýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþýýýýýýüüüûûûúúúøøøõõõòòòîîîêêêééé÷÷÷þþþþþþÿÿÿÿÿÿûûûéééÜÜÜÕÕÕÍÍÍ   ÊÊÊÍÍÍÒÒÒÙÙÙßßßæææìììñññôôô÷÷÷ùùùûûûüüüýýýýýýþþþþþþþþþþþþþþþÿÿÿÿÿÿþþþþþþþþþþþþþþþýýýýýýûûûúúúøøøöööóóóïïïìììîîîûûûþþþÿÿÿÿÿÿúúúèèèÝÝÝ×××ÑÑÑ   ÏÏÏÆÆÆDDD   ZZZáááôôô¯¯¯666MMM666VVVäääþþþþþþ···999GGG???KKKÔÔÔÿÿÿ      '''ÐÐÐZZZªªªùùùöööôôôððððððûûûþþþÿÿÿÿÿÿúúúéééßßßÙÙÙÔÔÔ      ÔÔÔ×××^^^eeeâââîîîóóó¸¸¸üüüööö666þþþÂÂÂÿÿÿþþþXXXâââþþþÆÆÆ   
+
+
+ùùùííí			úúúùùù÷÷÷ôôôôôôüüüþþþÿÿÿÿÿÿûûûêêêáááÜÜÜ×××   !!!ÕÕÕSSS^^^çççìììñññõõõ???ñññüüüýýýCCC   ÿÿÿEEEñññÿÿÿÿÿÿÊÊÊ   qqqÿÿÿþþþ   $$$ÿÿÿþþþþþþ%%%   üüüûûûùùùøøø÷÷÷ýýýþþþÿÿÿÿÿÿûûûëëëãããÞÞÞÚÚÚ   NNNÙÙÙïïïóóó÷÷÷   üüüýýýþþþûûûúúúÿÿÿ
+
+
+ÿÿÿÿÿÿÿÿÿôôô   333ÿÿÿÿÿÿ   '''ÿÿÿÿÿÿþþþ'''   ýýýüüüûûûúúúúúúýýýþþþÿÿÿÿÿÿûûûëëëäääàààÝÝÝ   
+
+
+²²²¨¨¨   UUUñññõõõøøø			ýýýþþþþþþþþþÿÿÿÿÿÿ			   ÿÿÿÿÿÿÿÿÿùùù   111ÿÿÿÿÿÿ   '''ÿÿÿÿÿÿÿÿÿ'''   ýýýýýýüüüüüüûûûþþþþþþÿÿÿÿÿÿûûûìììåååâââßßß   """âââæææ___   ¨¨¨öööùùù>>>èèèþþþþþþÿÿÿöööÿÿÿ>>>ôôôÿÿÿÿÿÿÔÔÔ   gggÿÿÿÿÿÿ   '''ÿÿÿÿÿÿÿÿÿ'''   þþþþþþýýýýýýýýýþþþþþþÿÿÿÿÿÿûûûíííæææãããÖÖÖ   ãããèèèßßßÖÖÖúúú½½½___ûûûÿÿÿîîîUUUôôô¾¾¾ÿÿÿþþþhhhÜÜÜÿÿÿôôô   ÿÿÿÿÿÿÿÿÿ
+
+
+   õõõþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿûûûíííççç···BBB      UUUÎÎÎ   üüü»»»:::///^^^jjjâââÿÿÿÿÿÿ¾¾¾>>>KKKEEEJJJÓÓÓÿÿÿÍÍÍKKK      rrrÿÿÿqqq      NNNÍÍÍþþþþþþþþþþþþþþþÿÿÿÿÿÿûûûîîîçççäääââââââãããæææêêêîîîòòòõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüðððèèèäääââââââäääæææêêêîîîòòòöööùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþøøøêêêäääââââââäääæææêêêîîîòòòöööùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúêêêäääââââââãããæææéééîîîòòòõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûíííäääáááàààáááäääèèèìììñññõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþöööåååßßßÞÞÞßßßâââæææëëëïïïóóó÷÷÷ùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúèèèÞÞÞÜÜÜÝÝÝàààäääèèèíííòòòöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþõõõßßßÙÙÙÚÚÚÜÜÜàààæææëëëðððôôô÷÷÷úúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþøøøâââ×××ÖÖÖÙÙÙÝÝÝâââèèèíííòòòöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýôôôÝÝÝÓÓÓÔÔÔØØØÞÞÞãããéééïïïóóó÷÷÷ùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýòòòÚÚÚÐÐÐÓÓÓØØØßßßåååëëëðððôôôøøøúúúûûûýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüñññØØØÏÏÏÓÓÓÙÙÙàààçççìììñññõõõøøøúúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüñññ×××ÎÎÎÓÓÓÚÚÚáááèèèíííòòòõõõøøøúúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüðððÕÕÕÎÎÎÓÓÓÛÛÛâââèèèîîîòòòöööùùùûûûüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüðððÖÖÖÔÔÔÕÕÕÛÛÛãããéééîîîóóóöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüöööðððÜÜÜÛÛÛÞÞÞãããêêêïïïôôô÷÷÷ùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþüüü÷÷÷òòòãããäääéééìììðððôôô÷÷÷úúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýùùùùùù÷÷÷îîîðððôôô÷÷÷ùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþýýýûûûûûûüüüüüüýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
Index: uspace/srv/hid/console/gfx/anim_2.ppm
===================================================================
--- uspace/srv/hid/console/gfx/anim_2.ppm	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/console/gfx/anim_2.ppm	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,23 @@
+P6
+# CREATOR: The GIMP's PNM Filter Version 1.0
+48 48
+255
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûüüüþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ääääää÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýùùùøøøõõõêêêèèèèèèéééêêêëëëìììíííîîîîîîðððøøøúúúûûûþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿööö½½½eeeeee½½½öööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýý÷÷÷ñññáááÞÞÞÞÞÞÜÜÜÞÞÞßßßáááãããäääåååæææçççèèèéééëëëêêêììì÷÷÷úúúþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿãããeeedddãããÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýõõõîîî×××ÒÒÒÏÏÏÑÑÑÒÒÒÕÕÕ×××ÚÚÚÜÜÜÞÞÞàààâââãããääääääååååååääääääåååèèèõõõùùùýýýþþþÿÿÿÿÿÿãããeeedddãããÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýíííÏÏÏÇÇÇÃÃÃÃÃÃÅÅÅÈÈÈËËËÎÎÎÑÑÑÕÕÕØØØÛÛÛÝÝÝßßßàààáááââââââââââââáááßßßÞÞÞßßßâââôôôýýýþþþÿÿÿööö½½½eeeddd½½½öööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüìììÇÇÇ¸¸¸···¸¸¸»»»¾¾¾ÂÂÂÆÆÆÊÊÊÎÎÎÒÒÒÖÖÖÙÙÙÜÜÜÞÞÞàààáááââââââââââââàààßßßÜÜÜÙÙÙ×××ÝÝÝòòòýýýþþþÿÿÿöööããããããöööþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüêêêÃÃÃ±±±¯¯¯°°°²²²¶¶¶ººº¾¾¾ÃÃÃÈÈÈÍÍÍÒÒÒÖÖÖÚÚÚÝÝÝßßßáááâââãããääääääãããáááàààÝÝÝÚÚÚÖÖÖÔÔÔÚÚÚòòòýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüëëëÁÁÁ­­­©©©©©©«««¯¯¯³³³¹¹¹¾¾¾ÄÄÄÊÊÊÏÏÏÔÔÔØØØÜÜÜßßßâââäääåååæææççççççæææäääâââàààÜÜÜÙÙÙÔÔÔÑÑÑØØØðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýìììÃÃÃ­­­§§§¦¦¦§§§ªªª®®®´´´ºººÁÁÁÇÇÇÍÍÍÓÓÓØØØÜÜÜàààãããæææèèèéééêêêêêêêêêêêêèèèæææäääàààÝÝÝØØØÓÓÓÏÏÏ×××ðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýíííÇÇÇ±±±©©©¦¦¦¦¦¦¨¨¨¬¬¬±±±···¾¾¾ÅÅÅÌÌÌÒÒÒØØØÝÝÝâââåååèèèêêêìììíííîîîîîîîîîîîîìììëëëèèèæææâââÞÞÞØØØÓÓÓÎÎÎÕÕÕðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööÏÏÏ¸¸¸¯¯¯©©©§§§¨¨¨«««°°°¶¶¶½½½ÄÄÄËËËÒÒÒÙÙÙÞÞÞãããçççêêêíííïïïðððñññòòòòòòòòòòòòñññïïïíííëëëçççãããßßßÙÙÙÓÓÓÎÎÎ×××÷÷÷þþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýîîîÇÇÇ···°°°«««ªªª¬¬¬°°°¶¶¶½½½ÄÄÄÌÌÌÓÓÓÙÙÙßßßåååéééìììïïïñññóóóôôôõõõõõõööööööõõõõõõóóóòòòïïïíííéééåååàààÚÚÚÔÔÔÔÔÔðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ØØØÂÂÂ¸¸¸²²²¯¯¯®®®±±±¶¶¶¼¼¼ÄÄÄËËËÓÓÓÚÚÚàààæææëëëîîîñññóóóõõõööö÷÷÷øøøøøøùùùùùùøøøøøø÷÷÷õõõôôôñññïïïëëëçççáááÛÛÛÕÕÕÜÜÜøøøþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýòòòÒÒÒÃÃÃ»»»µµµ³³³´´´···½½½ÄÄÄËËËÓÓÓÚÚÚáááçççìììðððóóóõõõ÷÷÷øøøùùùúúúúúúûûûûûûûûûûûûúúúúúúùùù÷÷÷öööóóóðððìììèèèâââÜÜÜÛÛÛóóóýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿùùùààà···yyyEEE777¹¹¹ººº¾¾¾ÄÄÄÌÌÌÓÓÓÚÚÚáááèèèíííñññôôôöööøøøùùùúúúûûûüüüüüüüüüýýýýýýüüüüüüûûûûûûúúúøøø÷÷÷ôôôñññíííèèèãããÞÞÞãããùùùþþþÿÿÿÿÿÿÿÿÿÿÿÿøøøÝÝÝºººccc   
+
+
+¾¾¾ÁÁÁÅÅÅËËËÓÓÓÚÚÚáááèèèíííñññôôô÷÷÷ùùùúúúûûûüüüüüüýýýýýýýýýþþþþþþýýýýýýýýýüüüüüüûûûùùùøøøõõõòòòîîîéééääääääùùùþþþÿÿÿÿÿÿÿÿÿþþþõõõÞÞÞÒÒÒÅÅÅ   
+
+
+ÄÄÄÇÇÇÌÌÌÒÒÒÙÙÙàààçççíííñññõõõ÷÷÷ùùùûûûüüüýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþýýýýýýüüüûûûúúúøøøõõõòòòîîîêêêééé÷÷÷þþþþþþÿÿÿÿÿÿûûûéééÜÜÜÕÕÕÍÍÍ   ÊÊÊÍÍÍÒÒÒÙÙÙßßßæææìììñññôôô÷÷÷ùùùûûûüüüýýýýýýþþþþþþþþþþþþþþþÿÿÿÿÿÿþþþþþþþþþþþþþþþýýýýýýûûûúúúøøøöööóóóïïïìììîîîûûûþþþÿÿÿÿÿÿúúúèèèÝÝÝ×××ÑÑÑ   ÏÏÏÆÆÆDDD   ZZZáááôôô¯¯¯666MMM666VVVäääþþþþþþ···999GGG???KKKÔÔÔÿÿÿ      '''ÐÐÐZZZªªªùùùöööôôôððððððûûûþþþÿÿÿÿÿÿúúúéééßßßÙÙÙÔÔÔ      ÔÔÔ×××^^^eeeâââîîîóóó¸¸¸üüüööö666þþþÂÂÂÿÿÿþþþXXXâââþþþÆÆÆ   
+
+
+ùùùííí			úúúùùù÷÷÷ôôôôôôüüüþþþÿÿÿÿÿÿûûûêêêáááÜÜÜ×××   !!!ÕÕÕSSS^^^çççìììñññõõõ???ñññüüüýýýCCC   ÿÿÿEEEñññÿÿÿÿÿÿÊÊÊ   qqqÿÿÿþþþ   $$$ÿÿÿþþþþþþ%%%   üüüûûûùùùøøø÷÷÷ýýýþþþÿÿÿÿÿÿûûûëëëãããÞÞÞÚÚÚ   NNNÙÙÙïïïóóó÷÷÷   üüüýýýþþþûûûúúúÿÿÿ
+
+
+ÿÿÿÿÿÿÿÿÿôôô   333ÿÿÿÿÿÿ   '''ÿÿÿÿÿÿþþþ'''   ýýýüüüûûûúúúúúúýýýþþþÿÿÿÿÿÿûûûëëëäääàààÝÝÝ   
+
+
+²²²¨¨¨   UUUñññõõõøøø			ýýýþþþþþþþþþÿÿÿÿÿÿ			   ÿÿÿÿÿÿÿÿÿùùù   111ÿÿÿÿÿÿ   '''ÿÿÿÿÿÿÿÿÿ'''   ýýýýýýüüüüüüûûûþþþþþþÿÿÿÿÿÿûûûìììåååâââßßß   """âââæææ___   ¨¨¨öööùùù>>>èèèþþþþþþÿÿÿöööÿÿÿ>>>ôôôÿÿÿÿÿÿÔÔÔ   gggÿÿÿÿÿÿ   '''ÿÿÿÿÿÿÿÿÿ'''   þþþþþþýýýýýýýýýþþþþþþÿÿÿÿÿÿûûûíííæææãããÖÖÖ   ãããèèèßßßÖÖÖúúú½½½___ûûûÿÿÿîîîUUUôôô¾¾¾ÿÿÿþþþhhhÜÜÜÿÿÿôôô   ÿÿÿÿÿÿÿÿÿ
+
+
+   õõõþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿûûûíííççç···BBB      UUUÎÎÎ   üüü»»»:::///^^^jjjâââÿÿÿÿÿÿ¾¾¾>>>KKKEEEJJJÓÓÓÿÿÿÍÍÍKKK      rrrÿÿÿqqq      NNNÍÍÍþþþþþþþþþþþþþþþÿÿÿÿÿÿûûûîîîçççäääââââââãããæææêêêîîîòòòõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüðððèèèäääââââââäääæææêêêîîîòòòöööùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþøøøêêêäääââââââäääæææêêêîîîòòòöööùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúêêêäääââââââãããæææéééîîîòòòõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûíííäääáááàààáááäääèèèìììñññõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþöööåååßßßÞÞÞßßßâââæææëëëïïïóóó÷÷÷ùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúèèèÞÞÞÜÜÜÝÝÝàààäääèèèíííòòòöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþõõõßßßÙÙÙÚÚÚÜÜÜàààæææëëëðððôôô÷÷÷úúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþøøøâââ×××ÖÖÖÙÙÙÝÝÝâââèèèíííòòòöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýôôôÝÝÝÓÓÓÔÔÔØØØÞÞÞãããéééïïïóóó÷÷÷ùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýòòòÚÚÚÐÐÐÓÓÓØØØßßßåååëëëðððôôôøøøúúúûûûýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüñññØØØÏÏÏÓÓÓÙÙÙàààçççìììñññõõõøøøúúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüñññ×××ÎÎÎÓÓÓÚÚÚáááèèèíííòòòõõõøøøúúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüðððÕÕÕÎÎÎÓÓÓÛÛÛâââèèèîîîòòòöööùùùûûûüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüðððÖÖÖÔÔÔÕÕÕÛÛÛãããéééîîîóóóöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüöööðððÜÜÜÛÛÛÞÞÞãããêêêïïïôôô÷÷÷ùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþüüü÷÷÷òòòãããäääéééìììðððôôô÷÷÷úúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýùùùùùù÷÷÷îîîðððôôô÷÷÷ùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþýýýûûûûûûüüüüüüýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
Index: uspace/srv/hid/console/gfx/anim_3.ppm
===================================================================
--- uspace/srv/hid/console/gfx/anim_3.ppm	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/console/gfx/anim_3.ppm	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,23 @@
+P6
+# CREATOR: The GIMP's PNM Filter Version 1.0
+48 48
+255
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûüüüþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýùùùøøøõõõêêêèèèèèèéééêêêëëëìììíííîîîîîîðððøøøúúúûûûþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýý÷÷÷ñññáááÞÞÞÞÞÞÜÜÜÞÞÞßßßáááãããäääåååæææçççèèèéééëëëêêêììì÷÷÷úúúþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýõõõîîî×××ÒÒÒÏÏÏÑÑÑÒÒÒÕÕÕ×××ÚÚÚÜÜÜÞÞÞàààâââãããääääääååååååääääääåååèèèõõõùùùýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýíííÏÏÏÇÇÇÃÃÃÃÃÃÅÅÅÈÈÈËËËÎÎÎÑÑÑÕÕÕØØØÛÛÛÝÝÝßßßàààáááââââââââââââáááßßßÞÞÞßßßâââôôôýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüìììÇÇÇ¸¸¸···¸¸¸»»»¾¾¾ÂÂÂÆÆÆÊÊÊÎÎÎÒÒÒÖÖÖÙÙÙÜÜÜÞÞÞàààáááââââââââââââàààßßßÜÜÜÙÙÙ×××ÝÝÝòòòýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüêêêÃÃÃ±±±¯¯¯°°°²²²¶¶¶ººº¾¾¾ÃÃÃÈÈÈÍÍÍÒÒÒÖÖÖÚÚÚÝÝÝßßßáááâââãããääääääãããáááàààÝÝÝÚÚÚÖÖÖÔÔÔÚÚÚòòòýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüëëëÁÁÁ­­­©©©©©©«««¯¯¯³³³¹¹¹¾¾¾ÄÄÄÊÊÊÏÏÏÔÔÔØØØÜÜÜßßßâââäääåååæææççççççæææäääâââàààÜÜÜÙÙÙÔÔÔÑÑÑØØØðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýìììÃÃÃ­­­§§§¦¦¦§§§ªªª®®®´´´ºººÁÁÁÇÇÇÍÍÍÓÓÓØØØÜÜÜàààãããæææèèèéééêêêêêêêêêêêêèèèæææäääàààÝÝÝØØØÓÓÓÏÏÏ×××ðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýíííÇÇÇ±±±©©©¦¦¦¦¦¦¨¨¨¬¬¬±±±···¾¾¾ÅÅÅÌÌÌÒÒÒØØØÝÝÝâââåååèèèêêêìììíííîîîîîîîîîîîîìììëëëèèèæææâââÞÞÞØØØÓÓÓÎÎÎÕÕÕðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööÏÏÏ¸¸¸¯¯¯©©©§§§¨¨¨«««°°°¶¶¶½½½ÄÄÄËËËÒÒÒÙÙÙÞÞÞãããçççêêêíííïïïðððñññòòòòòòòòòòòòñññïïïíííëëëçççãããßßßÙÙÙÓÓÓÎÎÎ×××÷÷÷þþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýîîîÇÇÇ···°°°«««ªªª¬¬¬°°°¶¶¶½½½ÄÄÄÌÌÌÓÓÓÙÙÙßßßåååéééìììïïïñññóóóôôôõõõõõõööööööõõõõõõóóóòòòïïïíííéééåååàààÚÚÚÔÔÔÔÔÔðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ØØØÂÂÂ¸¸¸²²²¯¯¯®®®±±±¶¶¶¼¼¼ÄÄÄËËËÓÓÓÚÚÚàààæææëëëîîîñññóóóõõõööö÷÷÷øøøøøøùùùùùùøøøøøø÷÷÷õõõôôôñññïïïëëëçççáááÛÛÛÕÕÕÜÜÜøøøþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýòòòÒÒÒÃÃÃ»»»µµµ³³³´´´···½½½ÄÄÄËËËÓÓÓÚÚÚáááçççìììðððóóóõõõ÷÷÷øøøùùùúúúúúúûûûûûûûûûûûûúúúúúúùùù÷÷÷öööóóóðððìììèèèâââÜÜÜÛÛÛóóóýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿùùùààà···yyyEEE777¹¹¹ººº¾¾¾ÄÄÄÌÌÌÓÓÓÚÚÚáááèèèíííñññôôôöööøøøùùùúúúûûûüüüüüüüüüýýýýýýüüüüüüûûûûûûúúúøøø÷÷÷ôôôñññíííèèèãããÞÞÞãããùùùþþþÿÿÿÿÿÿÿÿÿÿÿÿøøøÝÝÝºººccc   
+
+
+¾¾¾ÁÁÁÅÅÅËËËÓÓÓÚÚÚáááèèèíííñññôôô÷÷÷ùùùúúúûûûüüüüüüýýýýýýýýýþþþþþþýýýýýýýýýüüüüüüûûûùùùøøøõõõòòòîîîéééääääääùùùþþþÿÿÿÿÿÿÿÿÿþþþõõõÞÞÞÒÒÒÅÅÅ   
+
+
+ÄÄÄÇÇÇÌÌÌÒÒÒÙÙÙàààçççíííñññõõõ÷÷÷ùùùûûûüüüýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþýýýýýýüüüûûûúúúøøøõõõòòòîîîêêêééé÷÷÷þþþþþþÿÿÿÿÿÿûûûéééÜÜÜÕÕÕÍÍÍ   ÊÊÊÍÍÍÒÒÒÙÙÙßßßæææìììñññôôô÷÷÷ùùùûûûüüüýýýýýýþþþþþþþþþþþþþþþÿÿÿÿÿÿþþþþþþþþþþþþþþþýýýýýýûûûúúúøøøöööóóóïïïìììîîîûûûþþþÿÿÿÿÿÿúúúèèèÝÝÝ×××ÑÑÑ   ÏÏÏÆÆÆDDD   ZZZáááôôô¯¯¯666MMM666VVVäääþþþþþþ···999GGG???KKKÔÔÔÿÿÿ      '''ÐÐÐZZZªªªùùùöööôôôððððððûûûþþþÿÿÿÿÿÿúúúéééßßßÙÙÙÔÔÔ      ÔÔÔ×××^^^eeeâââîîîóóó¸¸¸üüüööö666þþþÂÂÂÿÿÿþþþXXXâââþþþÆÆÆ   
+
+
+ùùùííí			úúúùùù÷÷÷ôôôôôôüüüþþþÿÿÿÿÿÿûûûêêêáááÜÜÜ×××   !!!ÕÕÕSSS^^^çççìììñññõõõ???ñññüüüýýýCCC   ÿÿÿEEEñññÿÿÿÿÿÿÊÊÊ   qqqÿÿÿþþþ   $$$ÿÿÿþþþþþþ%%%   üüüûûûùùùøøø÷÷÷ýýýþþþÿÿÿÿÿÿûûûëëëãããÞÞÞÚÚÚ   NNNÙÙÙïïïóóó÷÷÷   üüüýýýþþþûûûúúúÿÿÿ
+
+
+ÿÿÿÿÿÿÿÿÿôôô   333ÿÿÿÿÿÿ   '''ÿÿÿÿÿÿþþþ'''   ýýýüüüûûûúúúúúúýýýþþþÿÿÿÿÿÿûûûëëëäääàààÝÝÝ   
+
+
+²²²¨¨¨   UUUñññõõõøøø			ýýýþþþþþþþþþÿÿÿÿÿÿ			   ÿÿÿÿÿÿÿÿÿùùù   111ÿÿÿÿÿÿ   '''ÿÿÿÿÿÿÿÿÿ'''   ýýýýýýüüüüüüûûûþþþþþþÿÿÿÿÿÿûûûìììåååâââßßß   """âââæææ___   ¨¨¨öööùùù>>>èèèþþþþþþÿÿÿöööÿÿÿ>>>ôôôÿÿÿÿÿÿÔÔÔ   gggÿÿÿÿÿÿ   '''ÿÿÿÿÿÿÿÿÿ'''   þþþþþþýýýýýýýýýþþþþþþÿÿÿÿÿÿûûûíííæææãããÖÖÖ   ãããèèèßßßÖÖÖúúú½½½___ûûûÿÿÿîîîUUUôôô¾¾¾ÿÿÿþþþhhhÜÜÜÿÿÿôôô   ÿÿÿÿÿÿÿÿÿ
+
+
+   õõõþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿûûûíííççç···BBB      UUUÎÎÎ   üüü»»»:::///^^^jjjâââÿÿÿÿÿÿ¾¾¾>>>KKKEEEJJJÓÓÓÿÿÿÍÍÍKKK      rrrÿÿÿqqq      NNNÍÍÍþþþþþþþþþþþþþþþÿÿÿÿÿÿûûûîîîçççäääââââââãããæææêêêîîîòòòõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüðððèèèäääââââââäääæææêêêîîîòòòöööùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþøøøêêêäääââââââäääæææêêêîîîòòòöööùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúêêêäääââââââãããæææéééîîîòòòõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûíííäääáááàààáááäääèèèìììñññõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþöööåååßßßÞÞÞßßßâââæææëëëïïïóóó÷÷÷ùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúèèèÞÞÞÜÜÜÝÝÝàààäääèèèíííòòòöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþõõõßßßÙÙÙÚÚÚÜÜÜàààæææëëëðððôôô÷÷÷úúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþøøøâââ×××ÖÖÖÙÙÙÝÝÝâââèèèíííòòòöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýôôôÝÝÝÓÓÓÔÔÔØØØÞÞÞãããéééïïïóóó÷÷÷ùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýòòòÚÚÚÐÐÐÓÓÓØØØßßßåååëëëðððôôôøøøúúúûûûýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüñññØØØÏÏÏÓÓÓÙÙÙàààçççìììñññõõõøøøúúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüñññ×××ÎÎÎÓÓÓÚÚÚáááèèèíííòòòõõõøøøúúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüðððÕÕÕÎÎÎÓÓÓÛÛÛâââèèèîîîòòòöööùùùûûûüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüðððÖÖÖÔÔÔÕÕÕÛÛÛãããéééîîîóóóöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿ÷÷÷ääääää÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüöööðððÜÜÜÛÛÛÞÞÞãããêêêïïïôôô÷÷÷ùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýýýýýýýþþþþþþþþþÿÿÿÿÿÿööö½½½eeeeee½½½öööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþüüü÷÷÷òòòãããäääéééìììðððôôô÷÷÷úúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿãããeeedddãããÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýùùùùùù÷÷÷îîîðððôôô÷÷÷ùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãããeeedddãããÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþýýýûûûûûûüüüüüüýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿööö½½½eeeddd½½½öööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööããããããöööþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
Index: uspace/srv/hid/console/gfx/anim_4.ppm
===================================================================
--- uspace/srv/hid/console/gfx/anim_4.ppm	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/console/gfx/anim_4.ppm	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,23 @@
+P6
+# CREATOR: The GIMP's PNM Filter Version 1.0
+48 48
+255
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûüüüþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýùùùøøøõõõêêêèèèèèèéééêêêëëëìììíííîîîîîîðððøøøúúúûûûþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýý÷÷÷ñññáááÞÞÞÞÞÞÜÜÜÞÞÞßßßáááãããäääåååæææçççèèèéééëëëêêêììì÷÷÷úúúþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýõõõîîî×××ÒÒÒÏÏÏÑÑÑÒÒÒÕÕÕ×××ÚÚÚÜÜÜÞÞÞàààâââãããääääääååååååääääääåååèèèõõõùùùýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýíííÏÏÏÇÇÇÃÃÃÃÃÃÅÅÅÈÈÈËËËÎÎÎÑÑÑÕÕÕØØØÛÛÛÝÝÝßßßàààáááââââââââââââáááßßßÞÞÞßßßâââôôôýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüìììÇÇÇ¸¸¸···¸¸¸»»»¾¾¾ÂÂÂÆÆÆÊÊÊÎÎÎÒÒÒÖÖÖÙÙÙÜÜÜÞÞÞàààáááââââââââââââàààßßßÜÜÜÙÙÙ×××ÝÝÝòòòýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüêêêÃÃÃ±±±¯¯¯°°°²²²¶¶¶ººº¾¾¾ÃÃÃÈÈÈÍÍÍÒÒÒÖÖÖÚÚÚÝÝÝßßßáááâââãããääääääãããáááàààÝÝÝÚÚÚÖÖÖÔÔÔÚÚÚòòòýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüëëëÁÁÁ­­­©©©©©©«««¯¯¯³³³¹¹¹¾¾¾ÄÄÄÊÊÊÏÏÏÔÔÔØØØÜÜÜßßßâââäääåååæææççççççæææäääâââàààÜÜÜÙÙÙÔÔÔÑÑÑØØØðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýìììÃÃÃ­­­§§§¦¦¦§§§ªªª®®®´´´ºººÁÁÁÇÇÇÍÍÍÓÓÓØØØÜÜÜàààãããæææèèèéééêêêêêêêêêêêêèèèæææäääàààÝÝÝØØØÓÓÓÏÏÏ×××ðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýíííÇÇÇ±±±©©©¦¦¦¦¦¦¨¨¨¬¬¬±±±···¾¾¾ÅÅÅÌÌÌÒÒÒØØØÝÝÝâââåååèèèêêêìììíííîîîîîîîîîîîîìììëëëèèèæææâââÞÞÞØØØÓÓÓÎÎÎÕÕÕðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööÏÏÏ¸¸¸¯¯¯©©©§§§¨¨¨«««°°°¶¶¶½½½ÄÄÄËËËÒÒÒÙÙÙÞÞÞãããçççêêêíííïïïðððñññòòòòòòòòòòòòñññïïïíííëëëçççãããßßßÙÙÙÓÓÓÎÎÎ×××÷÷÷þþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýîîîÇÇÇ···°°°«««ªªª¬¬¬°°°¶¶¶½½½ÄÄÄÌÌÌÓÓÓÙÙÙßßßåååéééìììïïïñññóóóôôôõõõõõõööööööõõõõõõóóóòòòïïïíííéééåååàààÚÚÚÔÔÔÔÔÔðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ØØØÂÂÂ¸¸¸²²²¯¯¯®®®±±±¶¶¶¼¼¼ÄÄÄËËËÓÓÓÚÚÚàààæææëëëîîîñññóóóõõõööö÷÷÷øøøøøøùùùùùùøøøøøø÷÷÷õõõôôôñññïïïëëëçççáááÛÛÛÕÕÕÜÜÜøøøþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýòòòÒÒÒÃÃÃ»»»µµµ³³³´´´···½½½ÄÄÄËËËÓÓÓÚÚÚáááçççìììðððóóóõõõ÷÷÷øøøùùùúúúúúúûûûûûûûûûûûûúúúúúúùùù÷÷÷öööóóóðððìììèèèâââÜÜÜÛÛÛóóóýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿùùùààà···yyyEEE777¹¹¹ººº¾¾¾ÄÄÄÌÌÌÓÓÓÚÚÚáááèèèíííñññôôôöööøøøùùùúúúûûûüüüüüüüüüýýýýýýüüüüüüûûûûûûúúúøøø÷÷÷ôôôñññíííèèèãããÞÞÞãããùùùþþþÿÿÿÿÿÿÿÿÿÿÿÿøøøÝÝÝºººccc   
+
+
+¾¾¾ÁÁÁÅÅÅËËËÓÓÓÚÚÚáááèèèíííñññôôô÷÷÷ùùùúúúûûûüüüüüüýýýýýýýýýþþþþþþýýýýýýýýýüüüüüüûûûùùùøøøõõõòòòîîîéééääääääùùùþþþÿÿÿÿÿÿÿÿÿþþþõõõÞÞÞÒÒÒÅÅÅ   
+
+
+ÄÄÄÇÇÇÌÌÌÒÒÒÙÙÙàààçççíííñññõõõ÷÷÷ùùùûûûüüüýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþýýýýýýüüüûûûúúúøøøõõõòòòîîîêêêééé÷÷÷þþþþþþÿÿÿÿÿÿûûûéééÜÜÜÕÕÕÍÍÍ   ÊÊÊÍÍÍÒÒÒÙÙÙßßßæææìììñññôôô÷÷÷ùùùûûûüüüýýýýýýþþþþþþþþþþþþþþþÿÿÿÿÿÿþþþþþþþþþþþþþþþýýýýýýûûûúúúøøøöööóóóïïïìììîîîûûûþþþÿÿÿÿÿÿúúúèèèÝÝÝ×××ÑÑÑ   ÏÏÏÆÆÆDDD   ZZZáááôôô¯¯¯666MMM666VVVäääþþþþþþ···999GGG???KKKÔÔÔÿÿÿ      '''ÐÐÐZZZªªªùùùöööôôôððððððûûûþþþÿÿÿÿÿÿúúúéééßßßÙÙÙÔÔÔ      ÔÔÔ×××^^^eeeâââîîîóóó¸¸¸üüüööö666þþþÂÂÂÿÿÿþþþXXXâââþþþÆÆÆ   
+
+
+ùùùííí			úúúùùù÷÷÷ôôôôôôüüüþþþÿÿÿÿÿÿûûûêêêáááÜÜÜ×××   !!!ÕÕÕSSS^^^çççìììñññõõõ???ñññüüüýýýCCC   ÿÿÿEEEñññÿÿÿÿÿÿÊÊÊ   qqqÿÿÿþþþ   $$$ÿÿÿþþþþþþ%%%   üüüûûûùùùøøø÷÷÷ýýýþþþÿÿÿÿÿÿûûûëëëãããÞÞÞÚÚÚ   NNNÙÙÙïïïóóó÷÷÷   üüüýýýþþþûûûúúúÿÿÿ
+
+
+ÿÿÿÿÿÿÿÿÿôôô   333ÿÿÿÿÿÿ   '''ÿÿÿÿÿÿþþþ'''   ýýýüüüûûûúúúúúúýýýþþþÿÿÿÿÿÿûûûëëëäääàààÝÝÝ   
+
+
+²²²¨¨¨   UUUñññõõõøøø			ýýýþþþþþþþþþÿÿÿÿÿÿ			   ÿÿÿÿÿÿÿÿÿùùù   111ÿÿÿÿÿÿ   '''ÿÿÿÿÿÿÿÿÿ'''   ýýýýýýüüüüüüûûûþþþþþþÿÿÿÿÿÿûûûìììåååâââßßß   """âââæææ___   ¨¨¨öööùùù>>>èèèþþþþþþÿÿÿöööÿÿÿ>>>ôôôÿÿÿÿÿÿÔÔÔ   gggÿÿÿÿÿÿ   '''ÿÿÿÿÿÿÿÿÿ'''   þþþþþþýýýýýýýýýþþþþþþÿÿÿÿÿÿûûûíííæææãããÖÖÖ   ãããèèèßßßÖÖÖúúú½½½___ûûûÿÿÿîîîUUUôôô¾¾¾ÿÿÿþþþhhhÜÜÜÿÿÿôôô   ÿÿÿÿÿÿÿÿÿ
+
+
+   õõõþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿûûûíííççç···BBB      UUUÎÎÎ   üüü»»»:::///^^^jjjâââÿÿÿÿÿÿ¾¾¾>>>KKKEEEJJJÓÓÓÿÿÿÍÍÍKKK      rrrÿÿÿqqq      NNNÍÍÍþþþþþþþþþþþþþþþÿÿÿÿÿÿûûûîîîçççäääââââââãããæææêêêîîîòòòõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüðððèèèäääââââââäääæææêêêîîîòòòöööùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþøøøêêêäääââââââäääæææêêêîîîòòòöööùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúêêêäääââââââãããæææéééîîîòòòõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûíííäääáááàààáááäääèèèìììñññõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþöööåååßßßÞÞÞßßßâââæææëëëïïïóóó÷÷÷ùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúèèèÞÞÞÜÜÜÝÝÝàààäääèèèíííòòòöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþõõõßßßÙÙÙÚÚÚÜÜÜàààæææëëëðððôôô÷÷÷úúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþøøøâââ×××ÖÖÖÙÙÙÝÝÝâââèèèíííòòòöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýôôôÝÝÝÓÓÓÔÔÔØØØÞÞÞãããéééïïïóóó÷÷÷ùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýòòòÚÚÚÐÐÐÓÓÓØØØßßßåååëëëðððôôôøøøúúúûûûýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüñññØØØÏÏÏÓÓÓÙÙÙàààçççìììñññõõõøøøúúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüñññ×××ÎÎÎÓÓÓÚÚÚáááèèèíííòòòõõõøøøúúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüðððÕÕÕÎÎÎÓÓÓÛÛÛâââèèèîîîòòòöööùùùûûûüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ääääää÷÷÷ÿÿÿÿÿÿþþþüüüðððÖÖÖÔÔÔÕÕÕÛÛÛãããéééîîîóóóöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿööö½½½eeeeee½½½öööÿÿÿÿÿÿþþþüüüöööðððÜÜÜÛÛÛÞÞÞãããêêêïïïôôô÷÷÷ùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãããeeedddãããÿÿÿÿÿÿÿÿÿþþþþþþüüü÷÷÷òòòãããäääéééìììðððôôô÷÷÷úúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãããeeedddãããÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýùùùùùù÷÷÷îîîðððôôô÷÷÷ùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿööö½½½eeeddd½½½öööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþýýýûûûûûûüüüüüüýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööããããããöööþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
Index: uspace/srv/hid/console/gfx/cons_has_data.ppm
===================================================================
--- uspace/srv/hid/console/gfx/cons_has_data.ppm	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/console/gfx/cons_has_data.ppm	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,5 @@
+P6
+# CREATOR: The GIMP's PNM Filter Version 1.0
+48 48
+255
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþúúþúúþúúþúúþûûþûûþûûþûûþûûþûûþüüþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþýýþùùþøøþõõþêêþèèþèèþééþêêþëëþììþííþîîþîîþððþøøþúúþûûþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþýýþ÷÷þññþááþÞÞþÞÞþÜÜþÞÞþßßþááþããþääþååþææþççþèèþééþëëþêêþììþ÷÷þúúþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþýýþõõþîîþ××þÒÒþÏÏþÑÑþÒÒþÕÕþ××þÚÚþÜÜþÞÞþààþââþããþääþääþååþååþääþääþååþèèþõõþùùþýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþýýþííþÏÏþÇÇþÃÃþÃÃþÅÅþÈÈþËËþÎÎþÑÑþÕÕþØØþÛÛþÝÝþßßþààþááþââþââþââþââþááþßßþÞÞþßßþââþôôþýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüüþììþÇÇþ¸¸þ··þ¸¸þ»»þ¾¾þÂÂþÆÆþÊÊþÎÎþÒÒþÖÖþÙÙþÜÜþÞÞþààþááþââþââþââþââþààþßßþÜÜþÙÙþ××þÝÝþòòþýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüüþêêþÃÃþ±±þ¯¯þ°°þ²²þ¶¶þººþ¾¾þÃÃþÈÈþÍÍþÒÒþÖÖþÚÚþÝÝþßßþááþââþããþääþääþããþááþààþÝÝþÚÚþÖÖþÔÔþÚÚþòòþýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüüþëëþÁÁþ­­þ©©þ©©þ««þ¯¯þ³³þ¹¹þ¾¾þÄÄþÊÊþÏÏþÔÔþØØþÜÜþßßþââþääþååþææþççþççþææþääþââþààþÜÜþÙÙþÔÔþÑÑþØØþððþýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþýýþììþÃÃþ­­þ§§þ¦¦þ§§þªªþ®®þ´´þººþÁÁþÇÇþÍÍþÓÓþØØþÜÜþààþããþææþèèþééþêêþêêþêêþêêþèèþææþääþààþÝÝþØØþÓÓþÏÏþ××þððþýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþýýþííþÇÇþ±±þ©©þ¦¦þ¦¦þ¨¨þ¬¬þ±±þ··þ¾¾þÅÅþÌÌþÒÒþØØþÝÝþââþååþèèþêêþììþííþîîþîîþîîþîîþììþëëþèèþææþââþÞÞþØØþÓÓþÎÎþÕÕþððþýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþööþÏÏþ¸¸þ¯¯þ©©þ§§þ¨¨þ««þ°°þ¶¶þ½½þÄÄþËËþÒÒþÙÙþÞÞþããþççþêêþííþïïþððþññþòòþòòþòòþòòþññþïïþííþëëþççþããþßßþÙÙþÓÓþÎÎþ××þ÷÷þþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþýýþîîþÇÇþ··þ°°þ««þªªþ¬¬þ°°þ¶¶þ½½þÄÄþÌÌþÓÓþÙÙþßßþååþééþììþïïþññþóóþôôþõõþõõþööþööþõõþõõþóóþòòþïïþííþééþååþààþÚÚþÔÔþÔÔþððþýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ÷÷þØØþÂÂþ¸¸þ²²þ¯¯þ®®þ±±þ¶¶þ¼¼þÄÄþËËþÓÓþÚÚþààþææþëëþîîþññþóóþõõþööþ÷÷þøøþøøþùùþùùþøøþøøþ÷÷þõõþôôþññþïïþëëþççþááþÛÛþÕÕþÜÜþøøþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþýýþòòþÒÒþÃÃþ»»þµµþ³³þ´´þ··þ½½þÄÄþËËþÓÓþÚÚþááþççþììþððþóóþõõþ÷÷þøøþùùþúúþúúþûûþûûþûûþûûþúúþúúþùùþ÷÷þööþóóþððþììþèèþââþÜÜþÛÛþóóþýýþþþÿÿÿÿÿÿÿÿÿÿÿÿþùùþààþÏÏþÅÅþ¾¾þººþ¹¹þººþ¾¾þÄÄþÌÌþÓÓþÚÚþááþèèþííþññþôôþööþøøþùùþúúþûûþüüþüüþüüþýýþýýþüüþüüþûûþûûþúúþøøþ÷÷þôôþññþííþèèþããþÞÞþããþùùþþþÿÿÿÿÿÿÿÿÿÿÿÿþøøþÝÝþÐÐþÈÈþÂÂþ¾¾þ¾¾þÁÁþÅÅþËËþÓÓþÚÚþááþèèþííþññþôôþ÷÷þùùþúúþûûþüüþüüþýýÿýýÿýýÿþþÿþþÿýýÿýýþýýþüüþüüþûûþùùþøøþõõþòòþîîþééþääþääþùùþþþÿÿÿÿÿÿÿÿÿþþþþõõþÞÞþÒÒþËËþÆÆþÃÃþÄÄþÇÇþÌÌþÒÒþÙÙþààþççþííþññþõõþ÷÷þùùþûûþüüþýýþýýÿýýÿþþÿþþÿþþÿþþÿþþÿþþÿþþÿþþÿýýþýýþüüþûûþúúþøøþõõþòòþîîþêêþééþ÷÷þþþþþþÿÿÿÿÿÿþûûþééþÜÜþÕÕþÎÎþÊÊþÈÈþÊÊþÍÍþÒÒþÙÙþßßþææþììþññþôôþ÷÷þùùþûûþüüþýýÿýýÿþþÿþþÿþþÿþþÿþþÿÿÿÿÿÿÿþþÿþþÿþþÿþþÿþþÿýýþýýþûûþúúþøøþööþóóþïïþììþîîþûûþþþÿÿÿÿÿÿþúúþèèþÝÝþ××þÑÑþÎÎþÍÍþÏÏþÓÓþØØþÞÞþååþëëþððþôôþ÷÷þùùþûûþüüþýýÿýýÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿþþÿýýþýýþüüþúúþùùþööþôôþððþððþûûþþþÿÿÿÿÿÿþúúþééþßßþÙÙþÔÔþÒÒþÒÒþÔÔþØØþÝÝþããþééþîîþóóþööþùùþûûþüüþýýÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿýýþýýþüüþúúþùùþ÷÷þôôþôôþüüþþþÿÿÿÿÿÿþûûþêêþááþÜÜþ××þÖÖþÖÖþØØþÜÜþââþççþììþññþõõþøøþúúþûûþüüÿýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿýýþýýþüüþûûþùùþøøþ÷÷þýýþþþÿÿÿÿÿÿþûûþëëþããþÞÞþÚÚþÙÙþÚÚþÜÜþààþååþêêþïïþóóþ÷÷þùùþûûþüüÿýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿýýþýýþüüþûûþúúþúúþýýþþþÿÿÿÿÿÿþûûþëëþääþààþÝÝþÜÜþÝÝþßßþããþèèþííþññþõõþøøþúúþüüþýýÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿýýÿýýþüüþüüþûûþþþþþþÿÿÿÿÿÿþûûþììþååþââþßßþÞÞþßßþââþææþêêþïïþóóþööþùùþûûþüüÿýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿþþÿýýþýýþýýþþþþþþÿÿÿÿÿÿþûûþííþææþããþààþààþááþääþèèþììþððþôôþ÷÷þúúþüüþýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿþþÿþþÿþþÿþþÿþþÿÿÿÿÿÿþûûþííþççþääþááþááþââþååþééþííþññþõõþøøþúúþüüÿýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿþþÿþþÿþþÿÿÿÿÿÿþûûþîîþççþääþââþââþããþææþêêþîîþòòþõõþøøþúúþüüÿýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüüþððþèèþääþââþââþääþææþêêþîîþòòþööþùùþûûþýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþøøþêêþääþââþââþääþææþêêþîîþòòþööþùùþûûþýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþúúþêêþääþââþââþããþææþééþîîþòòþõõþøøþúúþüüÿýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþûûþííþääþááþààþááþääþèèþììþññþõõþøøþúúþüüÿýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþööþååþßßþÞÞþßßþââþææþëëþïïþóóþ÷÷þùùþûûþýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþúúþèèþÞÞþÜÜþÝÝþààþääþèèþííþòòþööþùùþûûþüüÿýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿýýÿýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþõõþßßþÙÙþÚÚþÜÜþààþææþëëþððþôôþ÷÷þúúþüüþýýÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿýýÿýýÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþøøþââþ××þÖÖþÙÙþÝÝþââþèèþííþòòþööþùùþûûþüüÿýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿýýÿýýÿüüÿýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþýýþôôþÝÝþÓÓþÔÔþØØþÞÞþããþééþïïþóóþ÷÷þùùþûûþüüÿýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿýýÿýýÿüüÿýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþýýþòòþÚÚþÐÐþÓÓþØØþßßþååþëëþððþôôþøøþúúþûûþýýÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿýýÿýýÿüüÿýýÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþüüþññþØØþÏÏþÓÓþÙÙþààþççþììþññþõõþøøþúúþüüþýýÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿýýÿýýÿüüÿýýÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþüüþññþ××þÎÎþÓÓþÚÚþááþèèþííþòòþõõþøøþúúþüüþýýÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿýýÿýýÿüüÿýýÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþüüþððþÕÕþÎÎþÓÓþÛÛþââþèèþîîþòòþööþùùþûûþüüþýýÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿýýÿýýÿüüÿýýÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþüüþððþÖÖþÔÔþÕÕþÛÛþããþééþîîþóóþööþùùþûûþüüþýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿýýÿüüÿýýÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþüüþööþððþÜÜþÛÛþÞÞþããþêêþïïþôôþ÷÷þùùþûûþüüÿýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿýýÿýýÿýýÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþüüþ÷÷þòòþããþääþééþììþððþôôþ÷÷þúúþüüþýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿþþÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþýýþùùþùùþ÷÷þîîþððþôôþ÷÷þùùþûûþýýÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþýýþûûþûûþüüþüüþýýþýýþþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþÿþþÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
Index: uspace/srv/hid/console/gfx/cons_idle.ppm
===================================================================
--- uspace/srv/hid/console/gfx/cons_idle.ppm	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/console/gfx/cons_idle.ppm	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,5 @@
+P6
+# CREATOR: The GIMP's PNM Filter Version 1.0
+48 48
+255
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûüüüþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýùùùøøøõõõêêêèèèèèèéééêêêëëëìììíííîîîîîîðððøøøúúúûûûþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýý÷÷÷ñññáááÞÞÞÞÞÞÜÜÜÞÞÞßßßáááãããäääåååæææçççèèèéééëëëêêêììì÷÷÷úúúþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýõõõîîî×××ÒÒÒÏÏÏÑÑÑÒÒÒÕÕÕ×××ÚÚÚÜÜÜÞÞÞàààâââãããääääääååååååääääääåååèèèõõõùùùýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýíííÏÏÏÇÇÇÃÃÃÃÃÃÅÅÅÈÈÈËËËÎÎÎÑÑÑÕÕÕØØØÛÛÛÝÝÝßßßàààáááââââââââââââáááßßßÞÞÞßßßâââôôôýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüìììÇÇÇ¸¸¸···¸¸¸»»»¾¾¾ÂÂÂÆÆÆÊÊÊÎÎÎÒÒÒÖÖÖÙÙÙÜÜÜÞÞÞàààáááââââââââââââàààßßßÜÜÜÙÙÙ×××ÝÝÝòòòýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüêêêÃÃÃ±±±¯¯¯°°°²²²¶¶¶ººº¾¾¾ÃÃÃÈÈÈÍÍÍÒÒÒÖÖÖÚÚÚÝÝÝßßßáááâââãããääääääãããáááàààÝÝÝÚÚÚÖÖÖÔÔÔÚÚÚòòòýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüëëëÁÁÁ­­­©©©©©©«««¯¯¯³³³¹¹¹¾¾¾ÄÄÄÊÊÊÏÏÏÔÔÔØØØÜÜÜßßßâââäääåååæææççççççæææäääâââàààÜÜÜÙÙÙÔÔÔÑÑÑØØØðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýìììÃÃÃ­­­§§§¦¦¦§§§ªªª®®®´´´ºººÁÁÁÇÇÇÍÍÍÓÓÓØØØÜÜÜàààãããæææèèèéééêêêêêêêêêêêêèèèæææäääàààÝÝÝØØØÓÓÓÏÏÏ×××ðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýíííÇÇÇ±±±©©©¦¦¦¦¦¦¨¨¨¬¬¬±±±···¾¾¾ÅÅÅÌÌÌÒÒÒØØØÝÝÝâââåååèèèêêêìììíííîîîîîîîîîîîîìììëëëèèèæææâââÞÞÞØØØÓÓÓÎÎÎÕÕÕðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööÏÏÏ¸¸¸¯¯¯©©©§§§¨¨¨«««°°°¶¶¶½½½ÄÄÄËËËÒÒÒÙÙÙÞÞÞãããçççêêêíííïïïðððñññòòòòòòòòòòòòñññïïïíííëëëçççãããßßßÙÙÙÓÓÓÎÎÎ×××÷÷÷þþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýîîîÇÇÇ···°°°«««ªªª¬¬¬°°°¶¶¶½½½ÄÄÄÌÌÌÓÓÓÙÙÙßßßåååéééìììïïïñññóóóôôôõõõõõõööööööõõõõõõóóóòòòïïïíííéééåååàààÚÚÚÔÔÔÔÔÔðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ØØØÂÂÂ¸¸¸²²²¯¯¯®®®±±±¶¶¶¼¼¼ÄÄÄËËËÓÓÓÚÚÚàààæææëëëîîîñññóóóõõõööö÷÷÷øøøøøøùùùùùùøøøøøø÷÷÷õõõôôôñññïïïëëëçççáááÛÛÛÕÕÕÜÜÜøøøþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýòòòÒÒÒÃÃÃ»»»µµµ³³³´´´···½½½ÄÄÄËËËÓÓÓÚÚÚáááçççìììðððóóóõõõ÷÷÷øøøùùùúúúúúúûûûûûûûûûûûûúúúúúúùùù÷÷÷öööóóóðððìììèèèâââÜÜÜÛÛÛóóóýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿùùùàààÏÏÏÅÅÅ¾¾¾ººº¹¹¹ººº¾¾¾ÄÄÄÌÌÌÓÓÓÚÚÚáááèèèíííñññôôôöööøøøùùùúúúûûûüüüüüüüüüýýýýýýüüüüüüûûûûûûúúúøøø÷÷÷ôôôñññíííèèèãããÞÞÞãããùùùþþþÿÿÿÿÿÿÿÿÿÿÿÿøøøÝÝÝÐÐÐÈÈÈÂÂÂ¾¾¾¾¾¾ÁÁÁÅÅÅËËËÓÓÓÚÚÚáááèèèíííñññôôô÷÷÷ùùùúúúûûûüüüüüüýýýýýýýýýþþþþþþýýýýýýýýýüüüüüüûûûùùùøøøõõõòòòîîîéééääääääùùùþþþÿÿÿÿÿÿÿÿÿþþþõõõÞÞÞÒÒÒËËËÆÆÆÃÃÃÄÄÄÇÇÇÌÌÌÒÒÒÙÙÙàààçççíííñññõõõ÷÷÷ùùùûûûüüüýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþýýýýýýüüüûûûúúúøøøõõõòòòîîîêêêééé÷÷÷þþþþþþÿÿÿÿÿÿûûûéééÜÜÜÕÕÕÎÎÎÊÊÊÈÈÈÊÊÊÍÍÍÒÒÒÙÙÙßßßæææìììñññôôô÷÷÷ùùùûûûüüüýýýýýýþþþþþþþþþþþþþþþÿÿÿÿÿÿþþþþþþþþþþþþþþþýýýýýýûûûúúúøøøöööóóóïïïìììîîîûûûþþþÿÿÿÿÿÿúúúèèèÝÝÝ×××ÑÑÑÎÎÎÍÍÍÏÏÏÓÓÓØØØÞÞÞåååëëëðððôôô÷÷÷ùùùûûûüüüýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþýýýýýýüüüúúúùùùöööôôôððððððûûûþþþÿÿÿÿÿÿúúúéééßßßÙÙÙÔÔÔÒÒÒÒÒÒÔÔÔØØØÝÝÝãããéééîîîóóóöööùùùûûûüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüúúúùùù÷÷÷ôôôôôôüüüþþþÿÿÿÿÿÿûûûêêêáááÜÜÜ×××ÖÖÖÖÖÖØØØÜÜÜâââçççìììñññõõõøøøúúúûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüûûûùùùøøø÷÷÷ýýýþþþÿÿÿÿÿÿûûûëëëãããÞÞÞÚÚÚÙÙÙÚÚÚÜÜÜàààåååêêêïïïóóó÷÷÷ùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüûûûúúúúúúýýýþþþÿÿÿÿÿÿûûûëëëäääàààÝÝÝÜÜÜÝÝÝßßßãããèèèíííñññõõõøøøúúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüüüüûûûþþþþþþÿÿÿÿÿÿûûûìììåååâââßßßÞÞÞßßßâââæææêêêïïïóóóöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþýýýýýýýýýþþþþþþÿÿÿÿÿÿûûûíííæææãããààààààáááäääèèèìììðððôôô÷÷÷úúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿûûûíííçççäääááááááâââåååéééíííñññõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþÿÿÿÿÿÿûûûîîîçççäääââââââãããæææêêêîîîòòòõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüðððèèèäääââââââäääæææêêêîîîòòòöööùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþøøøêêêäääââââââäääæææêêêîîîòòòöööùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúêêêäääââââââãããæææéééîîîòòòõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûíííäääáááàààáááäääèèèìììñññõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþöööåååßßßÞÞÞßßßâââæææëëëïïïóóó÷÷÷ùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúèèèÞÞÞÜÜÜÝÝÝàààäääèèèíííòòòöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþõõõßßßÙÙÙÚÚÚÜÜÜàààæææëëëðððôôô÷÷÷úúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþøøøâââ×××ÖÖÖÙÙÙÝÝÝâââèèèíííòòòöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýôôôÝÝÝÓÓÓÔÔÔØØØÞÞÞãããéééïïïóóó÷÷÷ùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýòòòÚÚÚÐÐÐÓÓÓØØØßßßåååëëëðððôôôøøøúúúûûûýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüñññØØØÏÏÏÓÓÓÙÙÙàààçççìììñññõõõøøøúúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüñññ×××ÎÎÎÓÓÓÚÚÚáááèèèíííòòòõõõøøøúúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüðððÕÕÕÎÎÎÓÓÓÛÛÛâââèèèîîîòòòöööùùùûûûüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüðððÖÖÖÔÔÔÕÕÕÛÛÛãããéééîîîóóóöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüöööðððÜÜÜÛÛÛÞÞÞãããêêêïïïôôô÷÷÷ùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþüüü÷÷÷òòòãããäääéééìììðððôôô÷÷÷úúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýùùùùùù÷÷÷îîîðððôôô÷÷÷ùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþýýýûûûûûûüüüüüüýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
Index: uspace/srv/hid/console/gfx/cons_kernel.ppm
===================================================================
--- uspace/srv/hid/console/gfx/cons_kernel.ppm	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/console/gfx/cons_kernel.ppm	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,23 @@
+P6
+# CREATOR: The GIMP's PNM Filter Version 1.0
+48 48
+255
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûüüüþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýùùùøøøõõõêêêèèèèèèéééêêêëëëìììíííîîîîîîðððøøøúúúûûûþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýý÷÷÷ñññáááÞÞÞÞÞÞÜÜÜÞÞÞßßßáááãããäääåååæææçççèèèéééëëëêêêììì÷÷÷úúúþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýõõõîîî×××ÒÒÒÏÏÏÑÑÑÒÒÒÕÕÕ×××ÚÚÚÜÜÜÞÞÞàààâââãããääääääååååååääääääåååèèèõõõùùùýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýíííÏÏÏÇÇÇÃÃÃÃÃÃÅÅÅÈÈÈËËËÎÎÎÑÑÑÕÕÕØØØÛÛÛÝÝÝßßßàààáááââââââââââââáááßßßÞÞÞßßßâââôôôýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüìììÇÇÇ¸¸¸···¸¸¸»»»¾¾¾ÂÂÂÆÆÆÊÊÊÎÎÎÒÒÒÖÖÖÙÙÙÜÜÜÞÞÞàààáááââââââââââââàààßßßÜÜÜÙÙÙ×××ÝÝÝòòòýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüêêêÃÃÃ±±±¯¯¯°°°²²²¶¶¶ººº¾¾¾ÃÃÃÈÈÈÍÍÍÒÒÒÖÖÖÚÚÚÝÝÝßßßáááâââãããääääääãããáááàààÝÝÝÚÚÚÖÖÖÔÔÔÚÚÚòòòýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüëëëÁÁÁ­­­©©©©©©«««¯¯¯³³³¹¹¹¾¾¾ÄÄÄÊÊÊÏÏÏÔÔÔØØØÜÜÜßßßâââäääåååæææççççççæææäääâââàààÜÜÜÙÙÙÔÔÔÑÑÑØØØðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýìììÃÃÃ­­­§§§¦¦¦§§§ªªª®®®´´´ºººÁÁÁÇÇÇÍÍÍÓÓÓØØØÜÜÜàààãããæææèèèéééêêêêêêêêêêêêèèèæææäääàààÝÝÝØØØÓÓÓÏÏÏ×××ðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýíííÇÇÇ±±±©©©¦¦¦¦¦¦¨¨¨¬¬¬±±±···¾¾¾ÅÅÅÌÌÌÒÒÒØØØÝÝÝâââåååèèèêêêìììíííîîîîîîîîîîîîìììëëëèèèæææâââÞÞÞØØØÓÓÓÎÎÎÕÕÕðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööÏÏÏ¸¸¸¯¯¯©©©§§§¨¨¨«««°°°¶¶¶½½½ÄÄÄËËËÒÒÒÙÙÙÞÞÞãããçççêêêíííïïïðððñññòòòòòòòòòòòòñññïïïíííëëëçççãããßßßÙÙÙÓÓÓÎÎÎ×××÷÷÷þþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýîîîÇÇÇ···°°°«««ªªª¬¬¬°°°¶¶¶½½½ÄÄÄÌÌÌÓÓÓÙÙÙßßßåååéééìììïïïñññóóóôôôõõõõõõööööööõõõõõõóóóòòòïïïíííéééåååàààÚÚÚÔÔÔÔÔÔðððýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ØØØÂÂÂ¸¸¸²²²¯¯¯®®®±±±¶¶¶¼¼¼ÄÄÄËËËÓÓÓÚÚÚàààæææëëëîîîñññóóóõõõööö÷÷÷øøøøøøùùùùùùøøøøøø÷÷÷õõõôôôñññïïïëëëçççáááÛÛÛÕÕÕÜÜÜøøøþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýòòòÒÒÒÃÃÃ»»»µµµ³³³´´´···½½½ÄÄÄËËËÓÓÓÚÚÚáááçççìììðððóóóõõõ÷÷÷øøøùùùúúúúúúûûûûûûûûûûûûúúúúúúùùù÷÷÷öööóóóðððìììèèèâââÜÜÜÛÛÛóóóýýýþþþÿÿÿÿÿÿÿÿÿÿÿÿùùùààà···yyyEEE777¹¹¹ººº¾¾¾ÄÄÄÌÌÌÓÓÓÚÚÚáááèèèíííñññôôôöööøøøùùùúúúûûûüüüüüüüüüýýýýýýüüüüüüûûûûûûúúúøøø÷÷÷ôôôñññíííèèèãããÞÞÞãããùùùþþþÿÿÿÿÿÿÿÿÿÿÿÿøøøÝÝÝºººccc   
+
+
+¾¾¾ÁÁÁÅÅÅËËËÓÓÓÚÚÚáááèèèíííñññôôô÷÷÷ùùùúúúûûûüüüüüüýýýýýýýýýþþþþþþýýýýýýýýýüüüüüüûûûùùùøøøõõõòòòîîîéééääääääùùùþþþÿÿÿÿÿÿÿÿÿþþþõõõÞÞÞÒÒÒÅÅÅ   
+
+
+ÄÄÄÇÇÇÌÌÌÒÒÒÙÙÙàààçççíííñññõõõ÷÷÷ùùùûûûüüüýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþýýýýýýüüüûûûúúúøøøõõõòòòîîîêêêééé÷÷÷þþþþþþÿÿÿÿÿÿûûûéééÜÜÜÕÕÕÍÍÍ   ÊÊÊÍÍÍÒÒÒÙÙÙßßßæææìììñññôôô÷÷÷ùùùûûûüüüýýýýýýþþþþþþþþþþþþþþþÿÿÿÿÿÿþþþþþþþþþþþþþþþýýýýýýûûûúúúøøøöööóóóïïïìììîîîûûûþþþÿÿÿÿÿÿúúúèèèÝÝÝ×××ÑÑÑ   ÏÏÏÆÆÆDDD   ZZZáááôôô¯¯¯666MMM666VVVäääþþþþþþ···999GGG???KKKÔÔÔÿÿÿ      '''ÐÐÐZZZªªªùùùöööôôôððððððûûûþþþÿÿÿÿÿÿúúúéééßßßÙÙÙÔÔÔ      ÔÔÔ×××^^^eeeâââîîîóóó¸¸¸üüüööö666þþþÂÂÂÿÿÿþþþXXXâââþþþÆÆÆ   
+
+
+ùùùííí			úúúùùù÷÷÷ôôôôôôüüüþþþÿÿÿÿÿÿûûûêêêáááÜÜÜ×××   !!!ÕÕÕSSS^^^çççìììñññõõõ???ñññüüüýýýCCC   ÿÿÿEEEñññÿÿÿÿÿÿÊÊÊ   qqqÿÿÿþþþ   $$$ÿÿÿþþþþþþ%%%   üüüûûûùùùøøø÷÷÷ýýýþþþÿÿÿÿÿÿûûûëëëãããÞÞÞÚÚÚ   NNNÙÙÙïïïóóó÷÷÷   üüüýýýþþþûûûúúúÿÿÿ
+
+
+ÿÿÿÿÿÿÿÿÿôôô   333ÿÿÿÿÿÿ   '''ÿÿÿÿÿÿþþþ'''   ýýýüüüûûûúúúúúúýýýþþþÿÿÿÿÿÿûûûëëëäääàààÝÝÝ   
+
+
+²²²¨¨¨   UUUñññõõõøøø			ýýýþþþþþþþþþÿÿÿÿÿÿ			   ÿÿÿÿÿÿÿÿÿùùù   111ÿÿÿÿÿÿ   '''ÿÿÿÿÿÿÿÿÿ'''   ýýýýýýüüüüüüûûûþþþþþþÿÿÿÿÿÿûûûìììåååâââßßß   """âââæææ___   ¨¨¨öööùùù>>>èèèþþþþþþÿÿÿöööÿÿÿ>>>ôôôÿÿÿÿÿÿÔÔÔ   gggÿÿÿÿÿÿ   '''ÿÿÿÿÿÿÿÿÿ'''   þþþþþþýýýýýýýýýþþþþþþÿÿÿÿÿÿûûûíííæææãããÖÖÖ   ãããèèèßßßÖÖÖúúú½½½___ûûûÿÿÿîîîUUUôôô¾¾¾ÿÿÿþþþhhhÜÜÜÿÿÿôôô   ÿÿÿÿÿÿÿÿÿ
+
+
+   õõõþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿûûûíííççç···BBB      UUUÎÎÎ   üüü»»»:::///^^^jjjâââÿÿÿÿÿÿ¾¾¾>>>KKKEEEJJJÓÓÓÿÿÿÍÍÍKKK      rrrÿÿÿqqq      NNNÍÍÍþþþþþþþþþþþþþþþÿÿÿÿÿÿûûûîîîçççäääââââââãããæææêêêîîîòòòõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüðððèèèäääââââââäääæææêêêîîîòòòöööùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþøøøêêêäääââââââäääæææêêêîîîòòòöööùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúêêêäääââââââãããæææéééîîîòòòõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûíííäääáááàààáááäääèèèìììñññõõõøøøúúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþöööåååßßßÞÞÞßßßâââæææëëëïïïóóó÷÷÷ùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúèèèÞÞÞÜÜÜÝÝÝàààäääèèèíííòòòöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþõõõßßßÙÙÙÚÚÚÜÜÜàààæææëëëðððôôô÷÷÷úúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþøøøâââ×××ÖÖÖÙÙÙÝÝÝâââèèèíííòòòöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýôôôÝÝÝÓÓÓÔÔÔØØØÞÞÞãããéééïïïóóó÷÷÷ùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýòòòÚÚÚÐÐÐÓÓÓØØØßßßåååëëëðððôôôøøøúúúûûûýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüñññØØØÏÏÏÓÓÓÙÙÙàààçççìììñññõõõøøøúúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüñññ×××ÎÎÎÓÓÓÚÚÚáááèèèíííòòòõõõøøøúúúüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüðððÕÕÕÎÎÎÓÓÓÛÛÛâââèèèîîîòòòöööùùùûûûüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüðððÖÖÖÔÔÔÕÕÕÛÛÛãããéééîîîóóóöööùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýüüüýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüöööðððÜÜÜÛÛÛÞÞÞãããêêêïïïôôô÷÷÷ùùùûûûüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþýýýýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþüüü÷÷÷òòòãããäääéééìììðððôôô÷÷÷úúúüüüýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþýýýùùùùùù÷÷÷îîîðððôôô÷÷÷ùùùûûûýýýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþýýýûûûûûûüüüüüüýýýýýýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
Index: uspace/srv/hid/console/gfx/cons_selected.ppm
===================================================================
--- uspace/srv/hid/console/gfx/cons_selected.ppm	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/console/gfx/cons_selected.ppm	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,29 @@
+P6
+# CREATOR: The GIMP's PNM Filter Version 1.0
+48 48
+255
+ýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüûûû÷÷÷ïïïæææÝÝÝ×××ÓÓÓÓÓÓ×××ÝÝÝæææïïï÷÷÷ûûûüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýûûûôôôåååÓÓÓÂÂÂ©©©tttaaaVVVVVVaaattt©©©ÁÁÁÒÒÒåååôôôûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýûûûðððÙÙÙººº]]]LLL___zzz¬¬¬¸¸¸¹¹¹¯¯¯eee```]]]ºººÙÙÙðððûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüôôôÛÛÛ¬¬¬oooFFFfff   ³³³½½½ÈÈÈÒÒÒÛÛÛàààáááÞÞÞØØØÑÑÑÈÈÈÀÀÀ­­­tttdddnnn¬¬¬ÚÚÚôôôüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýúúúèèèºººxxx@@@jjj···ËËËÑÑÑÔÔÔ×××ÚÚÚÜÜÜÞÞÞßßßáááâââââââââáááÝÝÝËËË²²²~~~kkkwww¹¹¹èèèúúúüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüøøøÜÜÜ555NNN¯¯¯ÀÀÀÅÅÅÉÉÉÌÌÌÏÏÏÓÓÓ×××ÙÙÙÜÜÜÞÞÞßßßàààááááááàààßßßÞÞÞÚÚÚÊÊÊªªªggggggÛÛÛ÷÷÷üüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüöööÐÐÐ
+
+
+333www²²²¸¸¸¼¼¼ÀÀÀÅÅÅÉÉÉÍÍÍÑÑÑÔÔÔØØØÛÛÛÝÝÝßßßàààáááááááááàààßßßÜÜÜÚÚÚÓÓÓ½½½uuu
+
+
+ÏÏÏõõõüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüöööËËËxxx000{{{¥¥¥¬¬¬°°°³³³¸¸¸½½½ÂÂÂÇÇÇÌÌÌÑÑÑÕÕÕØØØÜÜÜÞÞÞàààáááâââãããâââáááàààÞÞÞÜÜÜ×××ÔÔÔÉÉÉ{{{xxxËËËõõõüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýøøøÐÐÐxxx///{{{   ¦¦¦¨¨¨¬¬¬²²²···½½½ÃÃÃÈÈÈÎÎÎÓÓÓ×××ÛÛÛÞÞÞáááãããååååååæææååååååãããáááÞÞÞÛÛÛÖÖÖÒÒÒÈÈÈ}}}xxxÐÐÐ÷÷÷üüüýýýýýýýýýýýýýýýýýýýýýýýýúúúÛÛÛ
+
+
+000{{{£££¤¤¤¨¨¨­­­²²²¹¹¹¿¿¿ÆÆÆÌÌÌÒÒÒ×××ÜÜÜàààãããåååçççéééêêêêêêêêêéééçççåååãããàààÜÜÜ×××ÑÑÑÆÆÆ{{{
+
+
+ÛÛÛúúúüüüýýýýýýýýýýýýýýýýýýüüüèèè333{{{   ££££££¦¦¦ªªª¯¯¯¶¶¶½½½ÄÄÄËËËÒÒÒ×××ÝÝÝáááåååèèèêêêìììíííîîîîîîîîîíííìììêêêèèèåååáááÝÝÝØØØÑÑÑÅÅÅuuuèèèûûûüüüýýýýýýýýýýýýýýýôôôººº555www¥¥¥¦¦¦¤¤¤¦¦¦©©©®®®´´´¼¼¼ÃÃÃËËËÒÒÒØØØÞÞÞãããçççêêêíííïïïðððñññòòòòòòòòòñññðððïïïíííêêêçççãããÞÞÞØØØÑÑÑÃÃÃgggºººôôôüüüýýýýýýýýýýýýûûûÚÚÚwwwNNN­­­¨¨¨¨¨¨ªªª®®®´´´»»»ÃÃÃËËËÒÒÒÙÙÙßßßäääéééìììïïïñññóóóôôôõõõõõõõõõõõõõõõôôôóóóñññïïïìììéééäääßßßÙÙÙÑÑÑµµµwwwÚÚÚúúúüüüýýýýýýýýýñññ¬¬¬@@@²²²¯¯¯¬¬¬­­­¯¯¯´´´»»»ÃÃÃËËËÓÓÓÚÚÚàààæææëëëîîîñññóóóõõõööö÷÷÷øøøøøøøøøøøøøøø÷÷÷öööõõõóóóñññîîîëëëæææáááÙÙÙÎÎÎjjj¬¬¬ðððüüüýýýýýýûûûÙÙÙooojjj¯¯¯¸¸¸³³³²²²²²²¶¶¶¼¼¼ÃÃÃËËËÓÓÓÚÚÚáááçççìììðððóóóõõõ÷÷÷øøøùùùúúúúúúúúúúúúúúúúúúúúúùùùøøø÷÷÷õõõóóóðððìììçççâââÚÚÚÃÃÃoooÙÙÙûûûüüüýýýõõõºººFFFÀÀÀ¼¼¼¸¸¸···¹¹¹½½½ÃÃÃËËËÓÓÓÚÚÚáááèèèíííñññôôôöööøøøùùùúúúûûûûûûûûûüüüüüüüüüûûûûûûûûûúúúùùùøøøöööôôôñññíííèèèâââÙÙÙ¦¦¦eeeºººôôôüüüüüüåååeee¶¶¶ÆÆÆÀÀÀ½½½½½½¿¿¿ÄÄÄËËËÒÒÒÚÚÚáááèèèíííñññôôô÷÷÷ùùùúúúûûûûûûüüüüüüýýýýýýýýýýýýýýýüüüüüüûûûûûûúúúùùù÷÷÷õõõñññîîîéééâââÆÆÆåååüüüüüüÓÓÓ]]]ËËËÉÉÉÅÅÅÂÂÂÃÃÃÆÆÆËËËÒÒÒÙÙÙàààçççíííñññõõõ÷÷÷ùùùúúúûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüûûûúúúùùù÷÷÷õõõòòòîîîéééßßßÃÃÃ]]]ÒÒÒûûû÷÷÷ÂÂÂKKK³³³ÒÒÒÌÌÌÉÉÉÇÇÇÈÈÈÌÌÌÒÒÒØØØßßßæææìììñññôôô÷÷÷ùùùûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüûûûùùùøøøõõõòòòïïïééé¿¿¿___ÂÂÂ÷÷÷ïïïªªª^^^½½½ÕÕÕÏÏÏÍÍÍÌÌÌÎÎÎÒÒÒ×××ÞÞÞäääëëëðððôôô÷÷÷ùùùûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüûûûúúúøøøöööóóóïïïÍÍÍvvvªªªïïïæææzzzÈÈÈ×××ÓÓÓÑÑÑÐÐÐÓÓÓ×××ÝÝÝãããéééîîîóóóöööùùùúúúûûûýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüûûûúúúøøøöööôôôÜÜÜæææÞÞÞtttÓÓÓÙÙÙÖÖÖÔÔÔÕÕÕ×××ÜÜÜáááçççìììñññõõõøøøúúúûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüûûûúúúùùù÷÷÷èèè­­­tttÞÞÞ×××aaa«««ÚÚÚÜÜÜÙÙÙØØØØØØÛÛÛßßßåååêêêïïïóóó÷÷÷ùùùûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüûûûúúúùùùòòòÁÁÁaaa×××ÔÔÔWWW¸¸¸àààÞÞÞÜÜÜÚÚÚÜÜÜÞÞÞãããèèèíííñññõõõøøøúúúûûûýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüûûûûûûøøøÍÍÍWWWÔÔÔÔÔÔWWW¹¹¹áááßßßÞÞÞÝÝÝÞÞÞáááåååêêêïïïóóóöööùùùûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüùùùÍÍÍWWWÔÔÔ×××aaa¯¯¯ßßßáááßßßßßßàààãããçççìììðððôôô÷÷÷ùùùûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýý÷÷÷ÂÂÂaaa×××ÞÞÞtttÙÙÙáááààààààáááäääèèèíííñññõõõøøøúúúûûûýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýððð­­­tttÞÞÞæææÐÐÐâââááááááâââåååéééíííòòòõõõøøøúúúûûûýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýèèèæææïïï©©©eeeÇÇÇâââááááááãããæææéééîîîòòòõõõøøøúúúûûûýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýßßßvvv©©©ïïï÷÷÷ÁÁÁ___¿¿¿âââàààáááâââåååéééíííòòòõõõøøøúúúûûûýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüÖÖÖ___ÁÁÁöööüüüÒÒÒ]]]­­­ÜÜÜßßßàààáááäääèèèíííñññõõõøøøúúúûûûýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýøøøÄÄÄ]]]ÒÒÒûûûüüüåååtttËËËÞÞÞßßßàààãããçççìììðððôôô÷÷÷ùùùûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýæææåååüüüüüüôôô¹¹¹eee²²²ÚÚÚÜÜÜÞÞÞáááåååêêêïïïóóóöööùùùûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýúúúÐÐÐeee¹¹¹óóóüüüýýýûûûÙÙÙooo~~~ËËËÙÙÙÜÜÜÞÞÞãããèèèíííñññõõõøøøúúúûûûýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüêêêoooÙÙÙûûûüüüýýýüüüððð«««jjjªªªÔÔÔ×××ÛÛÛßßßåååêêêïïïóóó÷÷÷ùùùûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüü÷÷÷ÎÎÎjjj«««ïïïüüüüüüýýýýýýûûûÚÚÚwwwfff¾¾¾ÔÔÔÖÖÖÜÜÜáááçççìììñññõõõøøøúúúûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüúúúäääwwwÚÚÚúúúüüüýýýýýýýýýüüüôôôºººgggÈÈÈÒÒÒ×××ÝÝÝãããéééîîîóóóöööùùùúúúûûûýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüûûûóóóÀÀÀgggºººóóóüüüüüüýýýýýýýýýýýýüüüèèèuuuÈÈÈÑÑÑ×××ÞÞÞäääëëëðððôôô÷÷÷ùùùûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüûûûôôôÌÌÌuuuçççûûûüüüýýýýýýýýýýýýýýýüüüùùùÛÛÛ
+
+
+{{{ÆÆÆÑÑÑØØØßßßæææìììñññõõõ÷÷÷ùùùûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüûûûõõõÐÐÐ{{{
+
+
+ÛÛÛùùùüüüüüüýýýýýýýýýýýýýýýýýýüüü÷÷÷ÏÏÏxxx}}}ÅÅÅÑÑÑÙÙÙáááçççíííñññõõõøøøúúúûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüûûûôôôÐÐÐ}}}xxxÏÏÏ÷÷÷üüüüüüýýýýýýýýýýýýýýýýýýýýýýýýüüüõõõËËËxxx{{{ÄÄÄÑÑÑÙÙÙâââèèèîîîòòòõõõøøøúúúûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüúúúóóóÌÌÌ{{{xxxËËËõõõüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüüüüõõõÐÐÐ
+
+
+uuuµµµÏÏÏÚÚÚâââéééîîîòòòöööøøøúúúûûûüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýüüü÷÷÷äääÁÁÁuuu
+
+
+ÏÏÏõõõûûûüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüüüü÷÷÷ÛÛÛgggÂÂÂÙÙÙâââéééïïïóóóöööøøøúúúûûûýýýýýýýýýýýýýýýýýýýýýýýýúúúêêêÎÎÎgggÚÚÚöööûûûüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüüüüùùùèèèºººxxxkkk¥¥¥ÅÅÅßßßéééïïïôôô÷÷÷ùùùûûûüüüýýýýýýýýýýýýüüüøøøæææÏÏÏkkkwww¹¹¹çççùùùüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüûûûóóóÚÚÚ¬¬¬ooodddÄÄÄ½½½ÍÍÍÛÛÛèèèòòòøøøùùù÷÷÷ðððçççÞÞÞÖÖÖÄÄÄdddnnn«««ÙÙÙóóóûûûüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüüüüúúúðððÙÙÙººº]]]```vvv­­­ÂÂÂÍÍÍÍÍÍÂÂÂ­­­vvv```]]]ºººÙÙÙðððúúúüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüüüüûûûôôôåååÓÓÓÂÂÂ©©©tttaaaVVVVVVaaattt©©©ÁÁÁÒÒÒåååôôôúúúüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýüüüüüüüüüûûûöööîîîæææÝÝÝ×××ÓÓÓÓÓÓ×××ÝÝÝåååîîîöööûûûûûûüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýý
Index: uspace/srv/hid/console/gfx/helenos.ppm
===================================================================
--- uspace/srv/hid/console/gfx/helenos.ppm	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/console/gfx/helenos.ppm	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,13 @@
+P6
+# CREATOR: The GIMP's PNM Filter Version 1.0
+64 60
+255
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýøùùñóõîñóïòóö÷÷ûûûþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýþþøùùíñóäêîßèìÞæëÝåêÝåêÞåêäèêðññûûûþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýþþøùùïòôåëïåìðäêîÛàãØÜßÛàâæëîåëîÝåêÛäèÛáåèééúúúþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýþþùùúïóôæìïåìðåëî×Üß½ÄÆµ¼¾ÈÍÏÍÒÓÊÏÑ·¾ÀÃÊÌãçêÝåéÚãçØÛÞçèèûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþúúúðôõèîñäìðçíðÙÞáÁÇÉ´¼¾ÊÏÑèëì÷ùù÷ùúôöøòõ÷ñóôÖÚÜ¹ÀÂÞäæÜâåØÝâÔÕ×ñòòþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþûûûòõöéîñåíñæíñÛáäÄËÎµ¼¾ÈÍÏäæçöøøøúúõ÷ùòõ÷ðóõðóõðóõïòôïòôÒ×Ù¿ÅÈàåéØßäÎÒÕáááûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþûûûóö÷êïòæíñçîñÞãåÇÎÐµ½¿ÅËÍàãäö÷÷ùúûöøùóöøòõ÷ñôöðóõðóõïòôïòôïòôîñóëïñ»ÂÅÛßâÚàåÓÙÞÑÒÓôôôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþûüüôöøëðóçîñèïòßåèËÑÓ¶¾ÀÃÉËÜàáóôõøúû÷ùúô÷øóöøòõ÷òõ÷ñôöðóõðóõïòôïòôîñóîñóìðòìïòÔÙÛÄËÍÞäè×ÞãËÎÐæççüýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþûüüô÷øíñôèîòéïóáçêÍÔÖ¹ÁÃÂÈÊØÜÝñòóøúú÷úûõ÷ùôöøóöøòõ÷òõ÷ñôöñôöðóõðóõïòôîñóîñóíñóìðòëïñëîñåéìºÁÃÞãå×ÞãÐÕÙÕÕÖ÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþüüüõøùîòõèïóéðôãéìÑ×Ù»ÂÄÀÆÈÔØÙïðñøùúøúûõøúô÷ùôöøóöøóöøòõ÷òõ÷ñôöðóõðóõïòôïòôîñóîñóìðòìïòëîñëîñêíðéíðÉÏÒÌÒÓÛàäÓÙÞÊÌÏìííþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýý÷ùùðóõèïóéðôåêîÔÚÝ½ÄÇ¿ÆÇÑÖ×ëíîøùùúûüöùúô÷ùô÷ùô÷ùôöøóöøòõ÷òõ÷òõ÷ñôöðóõðóõïòôîñóîñóíñóìðòëïñëîñêîñéíðèìïèìïÝâä»ÂÄÞâåÓÚßËÐÓÛÛÛúúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýý÷ùúðôöéðóêðôæìï×ÝßÁÈË¾ÅÇÎÓÔèëëöøøúüü÷úûöùúõ÷ùô÷ùô÷ùô÷ùôöøòõ÷òõ÷òõ÷òõ÷ñôöðóõïòôïòôîñóíñóìðòìïòëîñëîñêíðéíðèìïèìïçëîæêí¿ÆÈÕÚÜÖÜáÐ×ÛÍÏÐððñþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþùúúñõ÷êñôêñõçíñÚàâÃÊÌ¾ÅÆÊÏÑæèéö÷øûüüøúûöùúöùúõøùô÷ùô÷ùô÷ùôöøóöøòõ÷òõ÷òõ÷ñôöðóõïòôïòôîñóîñóíðòìðòìïòëîñëîñêíðéíðèìïçëîçëîæêíåêíÕÛÞ¿ÆÇÝâåÓÙÞÉÍÏâââûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþùûûíóöéñôëñôßäçÆÍÏ¾ÅÇÇÌÎâåæõö÷ûüýùûü÷ùúöùúöùúöùúõøùô÷ùô÷ùô÷ùôöøóöøòõ÷òõ÷òõ÷ñôöðóõïòôïòôîñóÛÞà±²´´µ¶ÛÝàëîñêîñéíðèìïèìïçëîçëîæêíåéìäéìáæèºÁÃÙÝßÓÙÝÍÓÖÑÒÓôõõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùúúèðôêñõíñóÃÉËÂÈÊßâãóôõûüýúûýøúü÷ùûöùúöùúöùúõøùô÷ùô÷ùô÷ùôöøôöøòõ÷òõ÷òõ÷òõ÷ñôöïòôïòôîñóîñóÜÞá~~ooptsuÛÞáéíðèìïèìïçëîæêíåêíäéìäéëãèêãèêËÒÔÅËÍØÞáÏÖÚÈËÍèèèýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüëðôçðôóöø½ÄÆ×ÚÜúûûûüýøúüøúü÷úûöùúöùúöùúöùúõ÷ùô÷ùô÷ùôöøôöøóöøòõ÷òõ÷òõ÷ñôöðóõïòôïòôîñóîñóíñó¯±³poq{{|º»½çëîçëîçëîæêíåéìäéìãèëãèêâçéáæèÛàâ¸¿ÁÛßâÐ×ÚËÐÒ×××÷øøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïððäíñðöøÔÙÛÍÒÓûüýùûüøúüøúü÷úûöùúöùúöùúõøùõ÷ùô÷ùô÷ùôöøôöøóöøòõ÷òõ÷ñôöðóõïòôïòôïòôîñóîñóíðòìðò«¬®yyz¢¢£«ª«­®¯áåèçëîæêíäéìäèëãèêâçéâçéáæèàåçßäçÁÈÊÌÒÔÓÙÜÎÓÖÊÌÍíîîþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýþþÝàáâëð÷úûºÁÃðòóùûüøúüøúü÷ùûöùúöùúöùúõøùô÷ùô÷ùôöøôöøôöøòõ÷òõ÷òõ÷ñôöðóõïòôïòôîñóîñóîñóìðòìðòëîñÑÓÕ³³´½¼½µµ¶ÑÔ×æêíåéìãèêãèêâçéâçéàåçßäçÞãæÝâåÓØÛºÀÃÙÞáÎÔØÆÊÍÝÝÞúúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüÍÑÒáêïøúüºÁÃ÷øùøúüøúü÷ùûöùúöùúöùúõ÷ùô÷ùô÷ùôöøôöøóöøòõ÷òõ÷ëîðæéëîñóïòôïòôîñóîñóíñóìðòìïòëîñêîñéìï  ¡¸·¹ÁÀÂ¾½¿ÀÁÂâæéãèêâçéâçéáæèàåçßäçÞãæÝâåÜáäÚßãºÁÄÔÙÛÎÕØËÐÔÍÎÏòòòþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûû¶¸¹Ýåêóöù»ÂÄðòò÷úûöùúöùúöùúõøùõ÷ùô÷ùôöøôöøôöøóöøòõ÷ñôöÎÐÒ°±³èëíîñóîñóíñóìðòìïòëîñêíðéíðèìïÂÄÆ³³´À¿ÁÀÀÁ¹¹ºÙÝÞâçéâçéàåçßäçßäçÝâåÜáäÛàäÛàäÚßãËÑÔ½ÄÆ×ÜßÌÓ×ÆÉËäääüüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûº»»½ÄÈëñôÏÔÖÕÙÛöùúöùúöùúõøùô÷ùô÷ùôöøôöøôöøóõ÷òõ÷ñôößâä~~qpqxxz¹º»îñóìðòìðòëîñëîñêíðéíðèìïèìïàäç««¬½¼¾ÂÁÃ½¼¾ÇÈÉàåçàåçßäçÞãæÝâåÜáäÛàäÚßãÚßãÙÞâÕÚÞ¶¾ÀÕÚÞËÒÖÈÎÑÒÒÒöööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüýýÙÙÙàéíèíï»ÁÃóö÷öùúõøùô÷ùôöøôöøôöøóöøòõ÷òõ÷ñôöðóõÇÉÊqpq~~~£¤¥æêëìïòëîñêíðéíðèìïèìïçëîçëîæêí±³µ¡¡¢··¸ÁÀÂÀ¿Áºº¼ÚßáßäçÞãæÜáåÛàäÛàäÚßãÚÞâØÝáØÝáÖÛàÁÈËÇÌÎÑ×ÚÊÐÔÇÉËéêêýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþéééÌÔØíóõ¿ÆÈâæèõ÷ùô÷ùôöøôöøôöøóõ÷òõ÷ñôöñôöðóõïòôÔÖØ|}}¦¥¦³²³°°±ÒÕ×ëîñêíðéíðèìïèìïçëîæêíæêíåéìÍÐÓ°¯±¿¾ÀÂÁÃ»º»ÌÐÒÝâåÜáäÛàäÚßãÚßãÙÞâØÝá×ÜàÖÛàÕÚßÏÕÙ¶½¿ØÜÞÊÐÔÆÊÌØØÙùùùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôõõº»¼¢§ª¶¼¾¡¡¤¥ðòôôöøôöøóöøòõ÷òõ÷ñôöñôöðóõïòôïòôèëí²±³¿¾À½¼¾ÀÀÂéìïèìïèìïçëîçëîæêíæêíÞáäÂÅÇ¨¨©»»½ÂÁÃ¾¾À¾¿ÁÙÞáÛàäÚßãÚÞâÙÝáØÝáÖÛàÖÛàÕÚÞÕÚÝÓØÜ»ÁÄÎÓÕÌÒÖÉÎÒÉÊËïïïþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüàààehi444444ÇÇÈôöøóõ÷òõ÷ñôöñôöñôöðóõïòôïòôîñóíñóÁÂÄ²±³À¿ÁÁÀÂ»º¼ÜßáçëîçëîæêíäèëØÛÞ¬®°onowxy¦¦§º¹ºÂÁÃÁÀÂ¸¸¹ÐÔ×ÚßãÚÞâØÝá×ÜàÖÛàÕÚßÕÚÞÔÙÝÓØÛÒ×ÚÊÏÒ·¾ÀÖÚÝÊÐÔÅÈËßßßûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþïïïªª¬|??@222||}ðòôòõ÷ñôöñôöðóõðóõïòôîñóîñóíðòìðòàâå««¬½¼¾ÁÁÂ¼¼½ÈÊÌæêíâåèÉËÍuuvppqvvw}~~®®¯¼¼½ÂÁÃÂÁÃ½½¾ÂÄÆÙÝá×ÜáÖÛàÖÛàÕÚßÔÙÝÔÙÝÓØÛÒ×ÚÑÖÙÏÕØ¶½ÀÔÙÛÊÐÔÈÍÑÌÍÎóóóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùùùÐÐÐ
+XYY333AAAÜßàñôöñôöðóõðóõïòôîñóíñóìðòìïòëîñêíð´µ·¡¡¢¸¸¹ÁÀÂÀÀÁº¹»ÅÈÊsstrrsyyz¥¥¦±°±º¹»À¿ÁÃÂÄÃÂÄÀ¿Á¹¹»ÒÖÚÖÛàÖÛßÕÚÞÔÙÝÓØÜÒ×ÚÒ×ÚÑÖÙÐÖÙÐÖÙÃÉÌ¾ÄÆÓØÛÊÐÔÅÈÊæææüýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýééérvx999222 ¡¢ñôöðóõïòôîñóîñóíðòìðòìïñëîñêíðéíðÓÖØ°°±¾¾¿ÁÀÂ»º»¨¨©
+
+ ªª«³²´º¹»ÂÁÃÊÌÎÂÁÃÂÁÃÂÁÃÂÁÃ»»¼ÆÈËÕÚßÔÙÝÔÙÝÓØÛÒ×ÚÒ×ÚÐÖÙÐÖÙÏÕØÏÕØËÑÕ³»½ÖÙÜÊÐÔÇÍÐÓÓÓ÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôôô»¼½JJK222]]]çéëïòôîñóíðòìðòìïñëîñêîðêíðéíðèìïãæé¥¦§¦¦§»º¼ÂÁÃ¿¾Àµ´¶§§¨  ¢¥¥¥®®¯¶¶¸¼¼½ÆÇÉÒÕ×ÚÞâÚßãÃÄÆ¼»½À¿ÁÂÁÃ¿¾À¼¼¾Ò×ÚÔÙÜÓØÛÒ×ÚÑ×ÚÐÖÙÐÖÙÏÕØÏÔØÍÓ×ÍÓ×ºÂÄÈÎÐÍÓ×ÉÏÓÆÈÉìììýþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûüüàààfij555444ÆÆÇîñóíðòìðòìïñëîñêíðêíðéìïèìïçëîçëîÄÇÈ´´µÀ¿ÁÂÁÃ¾½¿¹¸º·¶¸º¹ºÀÀÁÌÎÐØÜßÛàäÚßãÚßãÚÞâÉÌÏ®®¯¹¸ºÀÀÁÁÀÂ¹¹ºÉÍÏÒ×ÚÒ×ÚÑÖÙÐÖÙÐÖÙÏÕØÏÔØÍÓ×ÍÓ×ÌÒÖÈÎÒ³»½×ÛÞÊÐÔÅÉËÚÛÛúúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþïïï©«¬|AAB222{||ìïðìðòìîñëîñêíðêíðèìïèìïçëîæêíæêíÜàâ««¬½¼¾ÂÁÃÂÁÃÂÁÃÆÇÉÓÖØÜàãÝâåÛàäÚßãÚÞâÚÞâØÝáÔØÜ¡¡£¬¬­¼¼½ÁÀÂ½¼¾¾¿ÁÑÖÙÐÖÙÐÖÙÏÕØÏÕØÎÔØÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕµ½ÀÐÔÖËÐÔÉÏÒÉÊËðññþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷øøÍÍÎY[\333CCCÙÛÜëîñêîðêíðéìïèìïçëîçëîæêíåéìåéìãèê²´µ  ¡·¶·ÁÁÂÃÂÄÅÄÆÛßâÝâåÜáäÚßãÚßãÚÞâÙÝá×ÜàÖÛàÖÛà°²´ ·¶·ÁÀÂÀÀÁ¹¹»ÌÑÓÐÖÙÏÕØÏÔØÎÓ×ÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕËÑÕÃÊÍ·¾ÀÕÚÝÊÐÔÄÇÉáááüüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýççèsxy:::222 ¡¢ìïòêíðéìïèìïçëîçëîæêíåéìåéìäèëâçéÑÕÖ¯¯°¾¾¿ÃÂÄÂÁÃÐÓÖÛàäÚßãÚÞâÚÞâØÝá×ÜàÖÛàÖÛßÔÙÝÇËÎ®­®¾½¾ÂÁÃ»»¼ÃÇÉÏÕØÏÔØÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕËÑÕËÑÕÊÐÔÉÏÓ³º½ÔØÛÊÐÔÈÎÑÍÎÎôôõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóôô¹ººLMN222^^^ãåçèìïèìïçëîæêíæêíåéìäèëãèêâçéâçéÞãä¥§¨¥¥¦º¹»ÂÁÃÂÁÃÁÁÄÙÞáÚÞâÙÝáØÝáÖÛàÖÛàÕÚÞÔÙÝÓØÛÒ×Ú¢£¤¤¤¥¹¹ºÁÀÂ¿¾ÀÆÈËÎÔØÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕËÑÕÊÐÔÊÐÔÊÐÔÊÐÔ¾ÅÇÀÆÉÐÕÙÊÐÔÅÈÉçèèýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûÝÝÝhjl666666ÃÄÅèìïçëîæêíåéìåéìäèëãçêâçéáæèáæèàåçÂÅÇ³³´À¿ÁÂÁÃ¼»½ÎÒÕÙÝá×ÜàÖÛàÕÚßÕÚÞÓØÜÓØÛÒ×ÚÒ×ÚÀÃÆ²±²À¿ÁÃÃÅÌÐÔÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕËÑÕÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÇÎÑ±¸»ÖÚÝÊÐÔÆËÏÔÔÔøøøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþîîï§¨ª{BBC222|}}éìîæêíåéìäèëãèêâçéâçéáæèàåèßäçÞãæÖÚÝªª«¼¼½ÂÁÃ¾½¿ÀÁÃ×ÜàÖÛàÕÚÞÔÙÝÓØÛÓØÛÒ×ÚÒ×ÚÑÖÙÐÕØÃÈÊ¼¾ÀÅÇÉÌÐÔÍÓ×ÌÒÖÌÒÖËÑÕËÑÕËÑÕÊÐÔÊÐÔÈÏÒ¸¾Á¾ÄÇËÑÕÊÐÔ¹ÀÃÌÑÓÌÒÖÊÏÓÆÇÈíîîþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷øøËËË[]^344EEEÖØÙåéìäèëâçéâçéáæèáæèàåçßäæÝâåÝâåÛàä³µ·  ¶¶·ÁÀÂÀÀÁ¸¸ºÑÕÙÕÚÞÔÙÜÓØÛÓØÛÒ×ÚÒ×ÚÐÖÙÐÖÙÏÕØÏÕØÎÔ×ÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕËÑÕÊÐÔÊÐÔÊÐÔÊÐÔ£ª¬{ÐÔ×ÊÐÔÄÊÎºÁÃÚÞáÊÐÔÄÈÊÜÜÜúúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýçççswy;;;222 ¡¢æêíâçéáæèáæèàåèßäçÞãæÝâåÜáäÛàäÚßãÍÐÓ®®¯¾¾¿ÂÁÃ»»¼ÄÆÉÓØÜÓØÛÒ×ÚÒ×ÚÑ×ÚÐÖÙÐÖÙÏÕØÏÔØÎÓ×ÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕËÑÕÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔ®³µ¤«­ÊÐÒâäæÊÐÔÇÍÑ¹ÀÂäæéÊÐÔÉÏÒÉÉÊóóóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóôô¸¹¹MNO222___áãåáæèáæèàåçßäçÞãæÝâåÜáäÛàäÚßãÚÞâ×ÚÞ¥¦¨¤¤¥º¹»ÁÀÂ¿¾À¾¿ÁÓØÛÒ×ÚÒ×ÚÑÖÙÐÖÙÏÕØÏÕØÏÔØÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕËÑÕËÑÕÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÌÒÖàãåèëìÑÖÚÊÐÔÂÈË¿ÅÇæèêÊÐÔÉÏÓ¼¾¿êêêÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúûûÛÛÛhlm666666½¾¿âçéàåçßäæÝâåÜáäÜáäÚßãÚÞâÙÝáÙÝá×Üà¿ÂÅ³²³À¿ÁÂÁÃÆÈÊÒ×ÚÒ×ÚÑÖÙÐÖÙÏÕØÏÕØÎÔ×ÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕËÑÕËÑÕÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔËÐÔËÑÕÊÐÔÉÏÓ³»½ÙÝÞÜàãÊÐÔÉÏÓ³´µäääÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþîîî§¨©{DEE222wxxäèêÞãæÝâåÜáäÛàäÚßãÚÞâÙÝáØÜáÖÛàÕÚßÒ×Û±³µ¬«­¼¼½ÆÆÈÐÔ×Ò×ÚÐÖÙÐÖÙÏÕØÏÔØÎÔ×ÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕËÑÕÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÈÎÒ¶¾Á½ÄÅñóôÍÓ×ÊÐÔÃÉÌ¬¬­äääÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ÊÊÊ\^_444EEEÒÔÕÝâåÜáäÛàãÚßãÙÝáÙÝá×ÜàÖÛàÕÚßÔÙÝÔÙÝÒ×ÚÌÐÒÎÒÔÑÖØÑÖÙÐÖÙÏÕØÏÕØÏÔØÍÓ×ÍÓ×ÌÒÖÌÒÖÌÒÖËÑÕËÑÕÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÉÏÓÃÊÎ¸ÀÃ±¹»ÇÍÏïñòØÜßÊÐÔÉÏÓ³³´éêêÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýææçsxy<<<222áåèÚßãÚÞâÙÝáØÝá×ÜàÖÛßÕÚÞÔÙÝÓØÜÓØÛÓØÛÒ×ÚÒ×ÚÑÖÙÐÖÙÏÕØÏÕØÎÔ×ÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕËÑÕËÑÕÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÅËÎ»ÃÅ²º½ºÀÂÑÖ×éëìêíîÔÙÜÊÐÔÉÏÓnooÂÂÃñòòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóóô¸¸¹
+OQQ222\\\ÝàâÚÞâÙÝá×ÜáÖÛàÕÚßÔÙÞÔÙÝÓØÜÓØÛÒ×ÚÒ×ÚÒ×ÚÐÖÙÐÖÙÏÕØÏÔØÎÔ×ÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕËÑÕÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÆÌÐ¾ÄÇ²º¼¸¿ÀËÐÑæèéëíîáåçÓØÛËÑÕÇÍÑ®²µxyzKKKÖÖÖøøøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúúÚÚÚiln667777¼½¾Ûàä×ÜàÖÛßÕÚÞÔÙÝÔÙÜÓØÛÓØÛÒ×ÚÒ×ÚÑÖÙÐÖÙÏÕØÏÕØÏÔØÍÓ×ÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕËÑÕÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÊÐÔÇÍÑÀÆÊµ¼¿µ¼¾ÇÌÎáäåìîïäèêÕÚÝÌÒÖÈÎÒ´º½`abAABCCD¼»¼êêêýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþîîî¥§¨zDEF333¥¥¦àãæÖÛßÔÙÞÔÙÝÓØÜÓØÛÓØÛÒ×ÚÒ×ÚÑÖÙÐÖÙÏÕØÏÕØÎÔ×ÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕËÑÕËÑÕÊÐÔÊÐÔÊÐÔÊÐÔÈÎÒÁÈËµ½Àµ¼¾ÁÇÉÞáâëíîèêìØÜßÍÓ×ÉÏÓ¹¾ÂgjkHIJ;;;FGGaab¶¶·ßààøøøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ÈÈÉ]__\\]ÐÒÓÛßâÔÙÝÔÙÝÓØÜÓØÛÈÍÐÀÄÇÍÒÔÐÖÙÐÖÙÏÕØÏÔØÎÔ×ÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕËÑÕÊÐÔÊÐÔÊÐÔÉÏÓÃÉÍ¸¿Â³»½½ÃÅØÜÝêìíëíîÚÞáÏÔØÊÐÓ½ÂÆ¡¥¨qstOOO===DDDZ[[www«««ÇÇÈäää÷÷÷þþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýæææ}ÂÃÄÂÉËÎÓÕÖÛßÓØÛÓØÛÍÒÕ~
+¤¨ªÚÞáÏÕØÏÔØÎÓ×ÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕËÑÕÊÐÔÉÏÓÅËÏºÂÅ³»¾¹ÀÂÓ×ØèêëìîïÝáäÐÖÙÊÐÔÀÆÊ¨¬¯|UVV>>>CCDTTUppq¥¥¦»»¼ÐÐÐâââñññúúúþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóóô·¸¸ÑÕØÊÐÓºÀÂÚÞáÓØÛÒ×ÚÎÓÕ¢¥§¹ÀÂÕ×ØÝáãÏÔØÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕËÑÕÊÐÔÅÌÏ¾ÄÇ³»½·¾ÀÍÒÓåèèïðñàäæÓØÛËÑÔÃÈÌ°µ¸
+\^_CCDCDDQQQjkk
+ µµ¶ËËÌÞÞÞìììöööüüüþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúúÙÙÙ·¼¿ÎÔØ·¾ÀÔÙÜÓØÛÒ×ÚÐÖÙÙÝàçêëæéêÐÕÙÍÓ×ÍÓ×ÌÒÖÌÒÖËÑÕÈÎÒÀÇÉ´»¾´»½ÇÌÎâåæîðñäçéÔÙÜËÑÕÆÌÐ´º½cdeGGGCDDNOOddd~°°±ÆÆÇÚÚÚéééôôôûûûþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþíîîÌÒÕÆÌÎ»ÂÄÔÙÜÐÖÙÐÖÙÏÕØÏÔØÎÓ×ÍÓ×ÍÓ×ÌÒÖÉÏÓÃÉÍ¶¾À³»½ÁÈÉÞáâïññæéë×ÜßËÑÕÇÍÑº¿ÂknoKLMDEFKLL_``yzz«««ÁÁÁÕÕÖæççòòóùúúýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ÆÇÇuwx¾ÄÈÏÔ×¹ÁÃºÂÄËÑÔÏÕØÏÔØÍÓ×ÍÓ×ËÑÕÅËÏ¸ÀÃ´»½»ÁÃÛÞßíîïëíïÚÞàÍÓ×ÈÎÒ½ÃÇ£¦qsuPQRDEEIJKZ[\uuv¦¦§½½½ÑÑÑáââïïðøøøýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüýýåææ£¥ÌÒÖÎÔ×¾ÅÈ²º¼ºÁÄÁÈËÂÉÌºÁÄ³»½¸¿ÁÓ×ØëííîðñÝáãÏÔØÊÏÓÁÆÊ§¬¯x{}RTUCDEGHIUUWoop¡¡¢¸·¸ÍÍÎßààíîî÷÷÷üüüþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóóô²²²uxyÃÉÍÍÓÖÐÖÙÕÙÜÒ×ØÇÍÏÉÎÐ×ÚÜæéêñòóàãæÐÖÚÊÐÔÃÉÍ­²µ
+Z\]DEFEFGPPQhii²²³ÈÈÈÜÜÜëëëõööûûûþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúúØØØopqÈÎÑÌÒÖÍÓ×ÎÔØÖÛßÛßâÚÞáÒ×ÛÊÐÔÅËÏ¶¼¿`bdGHIGHINOPbcd}}~¬¬­ÃÃÄ××ØèèèóóóúúúþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþíîîXYZ½ÂÆÉÏÓËÑÕËÑÕÊÐÔÇÍÑ»ÀÄhklKLMGHIKLM]^_vww§§¨¾½¾ÒÓÔåååñññùùùýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷øøÔÔÕ{||RTU\^_|qstQRRHIJLMNYZZqqq¢¢£¹¹¹ÏÏÐáááîîî÷÷÷üüüþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýïïïÅÅÅ~UWXPQROPQNOOMNNNOOWXYklm´³´ÊÊÊÝÝÝìííö÷÷üüüþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûüüêëëÊÊÊ z{{jkkhhhnoo®®¯ÅÅÅÙÚÚéééóôôûûûþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûüüðððÛÜÜÇÇÇ··¸²²²¶¶¶ÃÃÄÕÕÕæææòóóúúúýþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
Index: uspace/srv/hid/console/gfx/nameic.ppm
===================================================================
--- uspace/srv/hid/console/gfx/nameic.ppm	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/console/gfx/nameic.ppm	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,14 @@
+P6
+# CREATOR: The GIMP's PNM Filter Version 1.0
+100 26
+255
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿããã»»»¤¤¤¿¿¿êêêÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñññÄÄÄ¦¦¦¢¢¢ÅÅÅððñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿËËË___444222222222222222666rrsÞÞÞÿÿÿÿÿÿÿÿÿññò;;;222222222222222999òòòÿÿÿÿÿÿ~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿVVV222IIIòòòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯¯°888222222222222222222222222222AAAÈÈÈÿÿÿïïïbbb222222222222222222222222222VVWïïïÿÿÿ~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿVVV222IIIòòòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÖÖÖ;;;222222222222222222222222222222222UUUììì222222222222222222222222222222222~~~ÿÿÿ~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿVVV222IIIòòòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿzzz222222222222222IIIeef???222222222222222NNN222222222222???hhhLLL222222222222444ççè~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿVVV222IIIòòòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööBBB222222222222VVVëëëÿÿÿÔÔÔAAA222222222222AAA444222222222CCCàááÿÿÿñññWWW222222222333®®®~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿVVV222IIIòòòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÞÞÞ;;;222222222222ÿÿÿÿÿÿýýýaaa222222222222222222222222222\\\ÿÿÿÿÿÿþþþ222222222222
+
+
+~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýààà¿¿¿´´´ÀÀÀßßßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿVVV222IIIòòòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëëëÈÈÈ´´´ºººÔÔÕúúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñññÇÇÇ´´´¿¿¿ÝÝÝÿÿÿÿÿÿÿÿÿÿÿÿÕÕÕ999222222222222±±±ÿÿÿÿÿÿÿÿÿxxx222222222222222222222222222GGGëëëÿÿÿÿÿÿ£££222222222222ttt~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««ÿÿÿÿÿÿÿÿÿúúú°°±PPP222222222222333\\\ÑÑÑÿÿÿÿÿÿÿÿÿÿÿÿVVV222IIIòòòÿÿÿÿÿÿÿÿÿÏÏÏggg666222222222222GHH¬¬¬ûûûÿÿÿÿÿÿâââMMMNNN¤¤¤ùùú;;;222222222222WXXËËËÿÿÿÿÿÿÕÕÕ999222222222222±±±ÿÿÿÿÿÿÿÿÿxxx222222222222222222222222222222uuuôôôÿÿÿòòòãããããããããäääëëë~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««ÿÿÿÿÿÿôôôzz{222222222222222222222222777¼¼¼ÿÿÿÿÿÿÿÿÿVVV222IIIòòòÿÿÿÿÿÿ§§§999222222222222222222222444ùùùÿÿÿÞÞÞ222222222222222222222222222555ÄÄÄÿÿÿÕÕÕ999222222222222±±±ÿÿÿÿÿÿÿÿÿxxx222222222222BBBHHH222222222222222YYYÇÇÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««ÿÿÿúúú222222BBBÛÛÛãããÏÏÏ
+
+
+5552229::ãããÿÿÿÿÿÿVVV222IIIòòòÿÿÿ¶¶¶888222666ÏÏÏäääÙÙÙ  ¡EEE222555ªªªÿÿÿÞÞÞ222222CCD222KKK¨¨©ÞÞÞãããÂÃÃ]]]222222RRRúúúÕÕÕ999222222222222±±±ÿÿÿÿÿÿÿÿÿxxx222222222222OOOooo222222222222222222555wwwçççÿÿÿÿÿÿÿÿÿÿÿÿ~~~222222QQQhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhEEE222222«««ÿÿÿÆÆÆ666222NNNÝÝÝÿÿÿÿÿÿÿÿÿÿÿÿþþþ­¬­222222þþþÿÿÿVVV222IIIòòòïïïLLL222999µµµþþþÿÿÿÿÿÿÿÿÿÿÿÿÖÖÖFFF222RRRîîîÞÞÞ222222222WWWìììÿÿÿÿÿÿÿÿÿÿÿÿóóóFFF222222ÕÕÕÕÕÕ999222222222222±±±ÿÿÿÿÿÿÿÿÿxxx222222222222RRRÓÓÓKKK222222222222222222222===üüüÿÿÿÿÿÿ~~~222222222222222222222222222222222222222222222222222«««ûûûuuu222<<<ÆÆÆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûû__`222899óóóÿÿÿVVV222IIIòòò¬¬¬444222ýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ222555¸¸¸ÞÞÞ222222:::ÆÆÆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ222222²²²ÕÕÕ999222222222222±±±ÿÿÿÿÿÿÿÿÿxxx222222222222RRRïïïÔÔÔPPP222222222222222222222333nnnùùùÿÿÿ~~~222222222222222222222222222222222222222222222222222«««æææKKK222[[[úúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§¨¨222222¾¾¾ÿÿÿVVV222IIIòòòppp222999ÝÝÝÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚ>>>222ÞÞÞ222222SSSúúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°°°222222¬¬¬ÕÕÕ999222222222222±±±ÿÿÿÿÿÿÿÿÿxxx222222222222RRRïïïÿÿÿìììzzz222222222222222222222333ÿÿÿ~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««ËËË222222ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÊÊÊ222222ÿÿÿVVV222IIIêêêEEE222WWWðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿêêêQQQ222]]]ÞÞÞ222222wwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ´´´222222¬¬¬ÕÕÕ999222222222222±±±ÿÿÿÿÿÿÿÿÿxxx222222222222RRRïïïÿÿÿÿÿÿýýýÁÁÁRRR222222222222222222444ááá~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««³³³222222222222222222222222222222222222222222~~~þþþVVV222IIIÖÖÖ@@@222222222222222222222222222222222222222NNNÎÎÎ222222ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ´´´222222¬¬¬ÕÕÕ999222222222222±±±ÿÿÿÿÿÿÿÿÿxxx222222222222RRRïïïÿÿÿÿÿÿÿÿÿÿÿÿõõõ777222222222222222~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««¥¥¥222222222222222222222222222222222222222222zzzþþþVVV222IIIËËË===222222222222222222222222222222222222222MMMÌÌÌ222222ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ´´´222222¬¬¬ÕÕÕ999222222222222±±±ÿÿÿÿÿÿÿÿÿxxx222222222222BBB¤¤¤´´´´´´´´´ÚÚÚÿÿÿþþþÆÆÆ===222222222222{{{~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««¨¨¨222222tttÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏàààÿÿÿVVV222IIIÎÎÎ>>>222PPPÄÄÄÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÕÕÕÙÙÙ222222ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ´´´222222¬¬¬ÕÕÕ999222222222222±±±ÿÿÿÿÿÿÿÿÿxxx222222222222222222222222222ÿÿÿÿÿÿþþþ222222222222iii~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««ÁÁÁ222222|||ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿVVV222IIIáááCCC222PPPíííÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÞÞÞ222222ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ´´´222222¬¬¬ÞÞÞ;;;222222222222£££ÿÿÿÿÿÿÿÿÿmmm222222222222222222222222222ÿÿÿÿÿÿÿÿÿ£££222222222222iii~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««ßßßAAA222SSSøøøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏÏÏ}}}}}}ÊÊÊÿÿÿVVV222IIIòòò___222555×××ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëëë}}}¢¢¢ÞÞÞ222222ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ´´´222222¬¬¬ööö>>>222222222222tttûûûÿÿÿîîïQQQ222222222222222222222222222pqqÿÿÿÿÿÿüüü222222222222~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««øøøjij222888¸¸¸ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüülll222222áááÿÿÿVVV222IIIòòò  ¡333222ûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§¨¨222222£££ÞÞÞ222222ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ´´´222222¬¬¬ÿÿÿiii222222222222777ÌÌÌ555222222222222\\\222222222222999ÎÎÎ¤¤¤;;;222222222333®®®~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««ÿÿÿÃÃÃ666222IIIÔÔÔÿÿÿÿÿÿÿÿÿÿÿÿøøø222222vvvþþþÿÿÿVVV222IIIòòòìììKKK222677¬¬¬ûûûÿÿÿÿÿÿÿÿÿýýýºººAAA222OOOçççÞÞÞ222222ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ´´´222222¬¬¬ÿÿÿ¬¬¬444222222222222222222222222222222222===£££:::222222222222222222222222222222222;;;îîï~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««ÿÿÿûûû222222777www©©©³³³TTT222222HHHçççÿÿÿÿÿÿVVV222IIIòòòÿÿÿ¿¿¿:::222222aaa´´´§§§kkl555222;;;¶¶¶ÿÿÿÞÞÞ222222ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ´´´222222¬¬¬ÿÿÿóóó\\\222222222222222222222222222222222
+úúú222222222222222222222222222222333 ÿÿÿ~~~222222©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}222222«««ÿÿÿÿÿÿøøø777222222222222222222222TTTáááÿÿÿÿÿÿÿÿÿVVV222IIIòòòÿÿÿÿÿÿ»»¼DDD222222222222222222222BBBµµµÿÿÿÿÿÿÞÞÞ222222ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ´´´222222¬¬¬ÿÿÿÿÿÿæææbbb333222222222222222222222444~~ôôôÿÿÿ÷÷÷444222222222222222222222444ÿÿÿÿÿÿ¿¿¿ÔÔÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾¾¾ÕÕÕÿÿÿÿÿÿÿÿÿþþþ×ØØ
+
+SSS555333EEEeef­­­ùùùÿÿÿÿÿÿÿÿÿÿÿÿ«««¤¤¤ùùùÿÿÿÿÿÿÿÿÿëëë__`;;;222===YYZèèèÿÿÿÿÿÿÿÿÿîîîÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÙÙÙÕÕÕÿÿÿÿÿÿÿÿÿüüüÁÁÁzzzTUU666222:::XYYÐÐÐýýýÿÿÿÿÿÿÿÿÿþþþÕÕÕZZ[<<<222888[[[ÝÝÝÿÿÿÿÿÿÿÿÿ
Index: uspace/srv/hid/console/keybuffer.c
===================================================================
--- uspace/srv/hid/console/keybuffer.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/console/keybuffer.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,132 @@
+/*
+ * Copyright (c) 2006 Josef Cejka
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup kbdgen
+ * @brief HelenOS generic uspace keyboard handler.
+ * @ingroup kbd
+ * @{
+ */
+/** @file
+ */
+
+#include <futex.h>
+#include "keybuffer.h"
+
+atomic_t keybuffer_futex = FUTEX_INITIALIZER;
+
+/** Clear key buffer.
+ */
+void keybuffer_free(keybuffer_t *keybuffer)
+{
+	futex_down(&keybuffer_futex);
+	keybuffer->head = 0;
+	keybuffer->tail = 0;
+	keybuffer->items = 0;
+	futex_up(&keybuffer_futex);
+}
+
+/** Key buffer initialization.
+ *
+ */
+void keybuffer_init(keybuffer_t *keybuffer)
+{
+	keybuffer_free(keybuffer);
+}
+
+/** Get free space in buffer.
+ *
+ * This function is useful for processing some scancodes that are translated
+ * to more than one character.
+ *
+ * @return empty buffer space
+ *
+ */
+size_t keybuffer_available(keybuffer_t *keybuffer)
+{
+	return KEYBUFFER_SIZE - keybuffer->items;
+}
+
+/**
+ *
+ * @return nonzero, if buffer is not empty.
+ *
+ */
+bool keybuffer_empty(keybuffer_t *keybuffer)
+{
+	return (keybuffer->items == 0);
+}
+
+/** Push key event to key buffer.
+ *
+ * If the buffer is full, the event is ignored.
+ *
+ * @param keybuffer The keybuffer.
+ * @param ev        The event to push.
+ *
+ */
+void keybuffer_push(keybuffer_t *keybuffer, const console_event_t *ev)
+{
+	futex_down(&keybuffer_futex);
+	
+	if (keybuffer->items < KEYBUFFER_SIZE) {
+		keybuffer->fifo[keybuffer->tail] = *ev;
+		keybuffer->tail = (keybuffer->tail + 1) % KEYBUFFER_SIZE;
+		keybuffer->items++;
+	}
+	
+	futex_up(&keybuffer_futex);
+}
+
+/** Pop event from buffer.
+ *
+ * @param edst Pointer to where the event should be saved.
+ *
+ * @return True if an event was popped.
+ *
+ */
+bool keybuffer_pop(keybuffer_t *keybuffer, console_event_t *edst)
+{
+	futex_down(&keybuffer_futex);
+	
+	if (keybuffer->items > 0) {
+		keybuffer->items--;
+		*edst = (keybuffer->fifo[keybuffer->head]);
+		keybuffer->head = (keybuffer->head + 1) % KEYBUFFER_SIZE;
+		futex_up(&keybuffer_futex);
+		
+		return true;
+	}
+	
+	futex_up(&keybuffer_futex);
+	
+	return false;
+}
+
+/**
+ * @}
+ */
Index: uspace/srv/hid/console/keybuffer.h
===================================================================
--- uspace/srv/hid/console/keybuffer.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/console/keybuffer.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2006 Josef Cejka
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup kbdgen
+ * @brief HelenOS generic uspace keyboard handler.
+ * @ingroup kbd
+ * @{
+ */
+/** @file
+ */
+
+#ifndef __KEYBUFFER_H__
+#define __KEYBUFFER_H__
+
+#include <sys/types.h>
+#include <io/console.h>
+#include <bool.h>
+
+/** Size of buffer for pressed keys */
+#define KEYBUFFER_SIZE  128
+
+typedef struct {
+	console_event_t fifo[KEYBUFFER_SIZE];
+	unsigned long head;
+	unsigned long tail;
+	unsigned long items;
+} keybuffer_t;
+
+extern void keybuffer_free(keybuffer_t *);
+extern void keybuffer_init(keybuffer_t *);
+extern size_t keybuffer_available(keybuffer_t *);
+extern bool keybuffer_empty(keybuffer_t *);
+extern void keybuffer_push(keybuffer_t *, const console_event_t *);
+extern bool keybuffer_pop(keybuffer_t *, console_event_t *);
+
+#endif
+
+/**
+ * @}
+ */
Index: uspace/srv/hid/console/screenbuffer.c
===================================================================
--- uspace/srv/hid/console/screenbuffer.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/console/screenbuffer.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,191 @@
+/*
+ * Copyright (c) 2006 Josef Cejka
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup console
+ * @{
+ */
+/** @file
+ */
+
+#include <io/style.h>
+#include <malloc.h>
+#include <unistd.h>
+#include "screenbuffer.h"
+
+/** Store one character to screenbuffer.
+ *
+ * Its position is determined by scr->position_x
+ * and scr->position_y.
+ *
+ * @param scr Screenbuffer
+ * @param c   Stored character
+ *
+ */
+void screenbuffer_putchar(screenbuffer_t *scr, wchar_t ch)
+{
+	keyfield_t *field =
+	    get_field_at(scr, scr->position_x, scr->position_y);
+	
+	field->character = ch;
+	field->attrs = scr->attrs;
+}
+
+/** Initilize screenbuffer.
+ *
+ * Allocate space for screen content in accordance to given size.
+ *
+ * @param scr    Initialized screenbuffer
+ * @param size_x Width in characters
+ * @param size_y Height in characters
+ *
+ * @return Pointer to screenbuffer (same as scr parameter) or NULL
+ *
+ */
+screenbuffer_t *screenbuffer_init(screenbuffer_t *scr, size_t size_x, size_t size_y)
+{
+	scr->buffer = (keyfield_t *) malloc(sizeof(keyfield_t) * size_x * size_y);
+	if (!scr->buffer)
+		return NULL;
+	
+	scr->size_x = size_x;
+	scr->size_y = size_y;
+	scr->attrs.t = at_style;
+	scr->attrs.a.s.style = STYLE_NORMAL;
+	scr->is_cursor_visible = 1;
+	
+	screenbuffer_clear(scr);
+	
+	return scr;
+}
+
+/** Clear screenbuffer.
+ *
+ * @param scr Screenbuffer
+ *
+ */
+void screenbuffer_clear(screenbuffer_t *scr)
+{
+	size_t i;
+	
+	for (i = 0; i < (scr->size_x * scr->size_y); i++) {
+		scr->buffer[i].character = ' ';
+		scr->buffer[i].attrs = scr->attrs;
+	}
+	
+	scr->top_line = 0;
+	scr->position_x = 0;
+	scr->position_y = 0;
+}
+
+/** Clear one buffer line.
+ *
+ * @param scr
+ * @param line One buffer line (not a screen line!)
+ *
+ */
+void screenbuffer_clear_line(screenbuffer_t *scr, size_t line)
+{
+	size_t x;
+	
+	for (x = 0; x < scr->size_x; x++) {
+		scr->buffer[x + line * scr->size_x].character = ' ';
+		scr->buffer[x + line * scr->size_x].attrs = scr->attrs;
+	}
+}
+
+/** Copy content buffer from screenbuffer to given memory.
+ *
+ * @param scr  Source screenbuffer
+ * @param dest Destination
+ *
+ */
+void screenbuffer_copy_buffer(screenbuffer_t *scr, keyfield_t *dest)
+{
+	size_t i;
+	
+	for (i = 0; i < (scr->size_x * scr->size_y); i++)
+		dest[i] = scr->buffer[i];
+}
+
+/** Set new cursor position in screenbuffer.
+ *
+ * @param scr
+ * @param x
+ * @param y
+ *
+ */
+void screenbuffer_goto(screenbuffer_t *scr, size_t x, size_t y)
+{
+	scr->position_x = x % scr->size_x;
+	scr->position_y = y % scr->size_y;
+}
+
+/** Set new style.
+ *
+ * @param scr
+ * @param fg_color
+ * @param bg_color
+ *
+ */
+void screenbuffer_set_style(screenbuffer_t *scr, uint8_t style)
+{
+	scr->attrs.t = at_style;
+	scr->attrs.a.s.style = style;
+}
+
+/** Set new color.
+ *
+ * @param scr
+ * @param fg_color
+ * @param bg_color
+ *
+ */
+void screenbuffer_set_color(screenbuffer_t *scr, uint8_t fg_color, uint8_t bg_color, uint8_t flags)
+{
+	scr->attrs.t = at_idx;
+	scr->attrs.a.i.fg_color = fg_color;
+	scr->attrs.a.i.bg_color = bg_color;
+	scr->attrs.a.i.flags = flags;
+}
+
+/** Set new RGB color.
+ *
+ * @param scr
+ * @param fg_color
+ * @param bg_color
+ *
+ */
+void screenbuffer_set_rgb_color(screenbuffer_t *scr, uint32_t fg_color, uint32_t bg_color)
+{
+	scr->attrs.t = at_rgb;
+	scr->attrs.a.r.fg_color = fg_color;
+	scr->attrs.a.r.bg_color = bg_color;
+}
+
+/** @}
+ */
Index: uspace/srv/hid/console/screenbuffer.h
===================================================================
--- uspace/srv/hid/console/screenbuffer.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/console/screenbuffer.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,159 @@
+/*
+ * Copyright (c) 2006 Josef Cejka
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup console
+ * @{
+ */
+/** @file
+ */
+
+#ifndef SCREENBUFFER_H__
+#define SCREENBUFFER_H__
+
+#include <stdint.h>
+#include <sys/types.h>
+#include <bool.h>
+
+#define DEFAULT_FOREGROUND  0x0       /**< default console foreground color */
+#define DEFAULT_BACKGROUND  0xf0f0f0  /**< default console background color */
+
+typedef struct {
+	uint8_t style;
+} attr_style_t;
+
+typedef struct {
+	uint8_t fg_color;
+	uint8_t bg_color;
+	uint8_t flags;
+} attr_idx_t;
+
+typedef struct {
+	uint32_t bg_color;  /**< background color */
+	uint32_t fg_color;  /**< foreground color */
+} attr_rgb_t;
+
+typedef struct {
+	enum {
+		at_style,
+		at_idx,
+		at_rgb
+	} t;
+	union {
+		attr_style_t s;
+		attr_idx_t i;
+		attr_rgb_t r;
+	} a;
+} attrs_t;
+
+/** One field on screen. It contain one character and its attributes. */
+typedef struct {
+	wchar_t character;  /**< Character itself */
+	attrs_t attrs;      /**< Character attributes */
+} keyfield_t;
+
+/** Structure for buffering state of one virtual console.
+ */
+typedef struct {
+	keyfield_t *buffer;      /**< Screen content - characters and
+	                              their attributes (used as a circular buffer) */
+	size_t size_x;           /**< Number of columns  */
+	size_t size_y;           /**< Number of rows */
+	
+	/** Coordinates of last printed character for determining cursor position */
+	size_t position_x;
+	size_t position_y;
+	
+	attrs_t attrs;           /**< Current attributes. */
+	size_t top_line;         /**< Points to buffer[][] line that will
+	                              be printed at screen as the first line */
+	bool is_cursor_visible;  /**< Cursor state - default is visible */
+} screenbuffer_t;
+
+/** Returns keyfield for position on screen
+ *
+ * Screenbuffer->buffer is cyclic buffer so we
+ * must couted in index of the topmost line.
+ *
+ * @param scr Screenbuffer
+ * @param x   Position on screen
+ * @param y   Position on screen
+ *
+ * @return Keyfield structure with character and its attributes on x, y
+ *
+ */
+static inline keyfield_t *get_field_at(screenbuffer_t *scr, size_t x, size_t y)
+{
+	return scr->buffer + x + ((y + scr->top_line) % scr->size_y) * scr->size_x;
+}
+
+/** Compares two sets of attributes.
+ *
+ * @param s1 First style
+ * @param s2 Second style
+ *
+ * @return Nonzero on equality
+ *
+ */
+static inline int attrs_same(attrs_t a1, attrs_t a2)
+{
+	if (a1.t != a2.t)
+		return 0;
+	
+	switch (a1.t) {
+	case at_style:
+		return (a1.a.s.style == a2.a.s.style);
+	case at_idx:
+		return (a1.a.i.fg_color == a2.a.i.fg_color)
+		    && (a1.a.i.bg_color == a2.a.i.bg_color)
+		    && (a1.a.i.flags == a2.a.i.flags);
+	case at_rgb:
+		return (a1.a.r.fg_color == a2.a.r.fg_color)
+		    && (a1.a.r.bg_color == a2.a.r.bg_color);
+	}
+	
+	return 0;
+}
+
+
+void screenbuffer_putchar(screenbuffer_t *scr, wchar_t c);
+screenbuffer_t *screenbuffer_init(screenbuffer_t *scr, size_t size_x, size_t size_y);
+
+void screenbuffer_clear(screenbuffer_t *scr);
+void screenbuffer_clear_line(screenbuffer_t *scr, size_t line);
+void screenbuffer_copy_buffer(screenbuffer_t *scr, keyfield_t *dest);
+void screenbuffer_goto(screenbuffer_t *scr, size_t x, size_t y);
+void screenbuffer_set_style(screenbuffer_t *scr, uint8_t style);
+void screenbuffer_set_color(screenbuffer_t *scr, uint8_t fg_color,
+    uint8_t bg_color, uint8_t attr);
+void screenbuffer_set_rgb_color(screenbuffer_t *scr, uint32_t fg_color,
+    uint32_t bg_color);
+
+#endif
+
+/** @}
+ */
Index: uspace/srv/hid/fb/Makefile
===================================================================
--- uspace/srv/hid/fb/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/fb/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,40 @@
+#
+# Copyright (c) 2005 Martin Decky
+# Copyright (c) 2007 Jakub Jermar
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+include Makefile.common
+
+.PHONY: all clean
+
+all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
+	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
+
+clean:
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
+	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/srv/hid/fb/Makefile.build
===================================================================
--- uspace/srv/hid/fb/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/fb/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,103 @@
+#
+# Copyright (c) 2005 Martin Decky
+# Copyright (c) 2007 Jakub Jermar
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+## Setup toolchain
+#
+
+include Makefile.common
+include $(LIBC_PREFIX)/Makefile.toolchain
+
+## Sources
+#
+
+SOURCES = \
+	main.c \
+	ppm.c
+
+ifneq ($(UARCH),ia64)
+	SOURCES += fb.c \
+		font-8x16.c
+	CFLAGS += -DFB_ENABLED
+endif
+
+ifeq ($(UARCH),ia32)
+	SOURCES += ega.c
+	CFLAGS += -DEGA_ENABLED
+endif
+
+ifeq ($(UARCH),ia64)
+	SOURCES += ega.c \
+		ski.c \
+		serial_console.c
+	CFLAGS += -DSKI_ENABLED
+	CFLAGS += -DEGA_ENABLED
+endif
+
+ifeq ($(UARCH),amd64)
+	SOURCES += ega.c
+	CFLAGS += -DEGA_ENABLED
+endif
+
+ifeq ($(UARCH),mips32)
+	SOURCES += msim.c \
+		serial_console.c
+	CFLAGS += -DMSIM_ENABLED
+endif
+
+ifeq ($(UARCH),sparc64)
+	SOURCES += sgcn.c \
+		serial_console.c
+	CFLAGS += -DSGCN_ENABLED
+endif
+
+CFLAGS += -D$(UARCH)
+
+OBJECTS := $(addsuffix .o,$(basename $(SOURCES)))
+
+.PHONY: all
+
+all: $(OUTPUT) $(OUTPUT).disasm
+
+-include $(DEPEND)
+
+$(OUTPUT).disasm: $(OUTPUT)
+	$(OBJDUMP) -d $< > $@
+
+$(OUTPUT): $(OBJECTS) $(LIBS)
+	$(LD) -T $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
+
+%.o: %.c $(DEPEND)
+	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
+
+$(DEPEND):
+	makedepend -f - -- $(DEPEND_DEFS) $(CFLAGS) -- $(SOURCES) > $@ 2> /dev/null
+	-[ -f $(DEPEND_PREV) ] && diff -q $(DEPEND_PREV) $@ && mv -f $(DEPEND_PREV) $@
Index: uspace/srv/hid/fb/Makefile.common
===================================================================
--- uspace/srv/hid/fb/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/fb/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,40 @@
+#
+# Copyright (c) 2005 Martin Decky
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+
+## Common names
+#
+
+LIBC_PREFIX = ../../../lib/libc
+SOFTINT_PREFIX = ../../../lib/softint
+LIBS = $(LIBC_PREFIX)/libc.a
+
+DEPEND = Makefile.depend
+DEPEND_PREV = $(DEPEND).prev
+JOB = fb.job
+OUTPUT = fb
Index: uspace/srv/hid/fb/ega.c
===================================================================
--- uspace/srv/hid/fb/ega.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/fb/ega.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,446 @@
+/*
+ * Copyright (c) 2006 Ondrej Palkovsky
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @defgroup egafb EGA framebuffer
+ * @brief	HelenOS EGA framebuffer.
+ * @ingroup fbs
+ * @{
+ */ 
+/** @file
+ */
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <align.h>
+#include <async.h>
+#include <ipc/ipc.h>
+#include <errno.h>
+#include <stdio.h>
+#include <ddi.h>
+#include <sysinfo.h>
+#include <as.h>
+#include <ipc/fb.h>
+#include <ipc/ipc.h>
+#include <ipc/ns.h>
+#include <ipc/services.h>
+#include <libarch/ddi.h>
+#include <io/style.h>
+#include <io/color.h>
+#include <sys/types.h>
+
+#include "ega.h"
+#include "../console/screenbuffer.h"
+#include "main.h"
+
+#define MAX_SAVED_SCREENS 256
+typedef struct saved_screen {
+	short *data;
+} saved_screen;
+
+saved_screen saved_screens[MAX_SAVED_SCREENS];
+
+#define EGA_IO_BASE ((ioport8_t *) 0x3d4)
+#define EGA_IO_SIZE 2
+
+int ega_normal_color = 0x0f;
+int ega_inverted_color = 0xf0;
+
+#define NORMAL_COLOR		ega_normal_color
+#define INVERTED_COLOR		ega_inverted_color
+
+/* Allow only 1 connection */
+static int client_connected = 0;
+
+static unsigned int scr_width;
+static unsigned int scr_height;
+static uint8_t *scr_addr;
+
+static unsigned int style;
+
+static unsigned attr_to_ega_style(const attrs_t *a);
+static uint8_t ega_glyph(wchar_t ch);
+
+static void clrscr(void)
+{
+	unsigned i;
+	
+	for (i = 0; i < scr_width * scr_height; i++) {
+		scr_addr[i * 2] = ' ';
+		scr_addr[i * 2 + 1] = style;
+	}
+}
+
+static void cursor_goto(unsigned int col, unsigned int row)
+{
+	int ega_cursor;
+
+	ega_cursor = col + scr_width * row;
+	
+	pio_write_8(EGA_IO_BASE, 0xe);
+	pio_write_8(EGA_IO_BASE + 1, (ega_cursor >> 8) & 0xff);
+	pio_write_8(EGA_IO_BASE, 0xf);
+	pio_write_8(EGA_IO_BASE + 1, ega_cursor & 0xff);
+}
+
+static void cursor_disable(void)
+{
+	uint8_t stat;
+
+	pio_write_8(EGA_IO_BASE, 0xa);
+	stat = pio_read_8(EGA_IO_BASE + 1);
+	pio_write_8(EGA_IO_BASE, 0xa);
+	pio_write_8(EGA_IO_BASE + 1, stat | (1 << 5));
+}
+
+static void cursor_enable(void)
+{
+	uint8_t stat;
+
+	pio_write_8(EGA_IO_BASE, 0xa);
+	stat = pio_read_8(EGA_IO_BASE + 1);
+	pio_write_8(EGA_IO_BASE, 0xa);
+	pio_write_8(EGA_IO_BASE + 1, stat & (~(1 << 5)));
+}
+
+static void scroll(int rows)
+{
+	unsigned i;
+
+	if (rows > 0) {
+		memmove(scr_addr, ((char *) scr_addr) + rows * scr_width * 2,
+		    scr_width * scr_height * 2 - rows * scr_width * 2);
+		for (i = 0; i < rows * scr_width; i++)
+			(((short *) scr_addr) + scr_width * scr_height - rows *
+			    scr_width)[i] = ((style << 8) + ' ');
+	} else if (rows < 0) {
+		memmove(((char *)scr_addr) - rows * scr_width * 2, scr_addr,
+		    scr_width * scr_height * 2 + rows * scr_width * 2);
+		for (i = 0; i < -rows * scr_width; i++)
+			((short *)scr_addr)[i] = ((style << 8 ) + ' ');
+	}
+}
+
+static void printchar(wchar_t c, unsigned int col, unsigned int row)
+{
+	scr_addr[(row * scr_width + col) * 2] = ega_glyph(c);
+	scr_addr[(row * scr_width + col) * 2 + 1] = style;
+	
+	cursor_goto(col + 1, row);
+}
+
+/** Draw text data to viewport.
+ *
+ * @param vport Viewport id
+ * @param data  Text data.
+ * @param x	Leftmost column of the area.
+ * @param y	Topmost row of the area.
+ * @param w	Number of rows.
+ * @param h	Number of columns.
+ */
+static void draw_text_data(keyfield_t *data, unsigned int x,
+    unsigned int y, unsigned int w, unsigned int h)
+{
+	unsigned int i, j;
+	keyfield_t *field;
+	uint8_t *dp;
+
+	for (j = 0; j < h; j++) {
+		for (i = 0; i < w; i++) {
+			field = &data[j * w + i];
+			dp = &scr_addr[2 * ((y + j) * scr_width + (x + i))];
+
+			dp[0] = ega_glyph(field->character);
+			dp[1] = attr_to_ega_style(&field->attrs);
+		}
+	}
+}
+
+static int save_screen(void)
+{
+	int i;
+
+	for (i = 0; (i < MAX_SAVED_SCREENS) && (saved_screens[i].data); i++)
+		;
+	if (i == MAX_SAVED_SCREENS) 
+		return EINVAL;
+	if (!(saved_screens[i].data = malloc(2 * scr_width * scr_height))) 
+		return ENOMEM;
+	memcpy(saved_screens[i].data, scr_addr, 2 * scr_width * scr_height);
+
+	return i;
+}
+
+static int print_screen(int i)
+{
+	if (saved_screens[i].data)
+		memcpy(scr_addr, saved_screens[i].data, 2 * scr_width *
+		    scr_height);
+	else
+		return EINVAL;
+	return i;
+}
+
+static int style_to_ega_style(int style)
+{
+	unsigned int ega_style;
+
+	switch (style) {
+	case STYLE_NORMAL:
+		ega_style = INVERTED_COLOR;
+		break;
+	case STYLE_EMPHASIS:
+		ega_style = INVERTED_COLOR | 4;
+		break;
+	default:
+		return INVERTED_COLOR;
+	}
+
+	return ega_style;
+}
+
+static unsigned int color_to_ega_style(int fg_color, int bg_color, int attr)
+{
+	unsigned int style;
+
+	style = (fg_color & 7) | ((bg_color & 7) << 4);
+	if (attr & CATTR_BRIGHT)
+		style = style | 0x08;
+
+	return style;
+}
+
+static unsigned int rgb_to_ega_style(uint32_t fg, uint32_t bg)
+{
+	return (fg > bg) ? NORMAL_COLOR : INVERTED_COLOR;
+}
+
+static unsigned attr_to_ega_style(const attrs_t *a)
+{
+	switch (a->t) {
+	case at_style:
+		return style_to_ega_style(a->a.s.style);
+	case at_rgb:
+		return rgb_to_ega_style(a->a.r.fg_color, a->a.r.bg_color);
+	case at_idx:
+		return color_to_ega_style(a->a.i.fg_color,
+		    a->a.i.bg_color, a->a.i.flags);
+	default:
+		return INVERTED_COLOR;
+	}
+}
+
+static uint8_t ega_glyph(wchar_t ch)
+{
+	if (ch >= 0 && ch < 128)
+		return ch;
+
+	return '?';
+}
+
+static void ega_client_connection(ipc_callid_t iid, ipc_call_t *icall)
+{
+	int retval;
+	ipc_callid_t callid;
+	ipc_call_t call;
+	wchar_t c;
+	unsigned int row, col, w, h;
+	int bg_color, fg_color, attr;
+	uint32_t bg_rgb, fg_rgb;
+	keyfield_t *interbuf = NULL;
+	size_t intersize = 0;
+	int i;
+
+	if (client_connected) {
+		ipc_answer_0(iid, ELIMIT);
+		return;
+	}
+	client_connected = 1;
+	ipc_answer_0(iid, EOK); /* Accept connection */
+
+	while (1) {
+		callid = async_get_call(&call);
+ 		switch (IPC_GET_METHOD(call)) {
+		case IPC_M_PHONE_HUNGUP:
+			client_connected = 0;
+			ipc_answer_0(callid, EOK);
+			return; /* Exit thread */
+		case IPC_M_SHARE_OUT:
+			/* We accept one area for data interchange */
+			intersize = IPC_GET_ARG2(call);
+			if (intersize >= scr_width * scr_height *
+			    sizeof(*interbuf)) {
+				receive_comm_area(callid, &call,
+				    (void *) &interbuf);
+				continue;
+			}
+			retval = EINVAL;
+			break;
+		case FB_DRAW_TEXT_DATA:
+			col = IPC_GET_ARG1(call);
+			row = IPC_GET_ARG2(call);
+			w = IPC_GET_ARG3(call);
+			h = IPC_GET_ARG4(call);
+			if (!interbuf) {
+				retval = EINVAL;
+				break;
+			}
+			if (col + w > scr_width || row + h > scr_height) {
+				retval = EINVAL;
+				break;
+			}
+			draw_text_data(interbuf, col, row, w, h);
+			retval = 0;
+			break;
+		case FB_GET_CSIZE:
+			ipc_answer_2(callid, EOK, scr_width, scr_height);
+			continue;
+		case FB_GET_COLOR_CAP:
+			ipc_answer_1(callid, EOK, FB_CCAP_INDEXED);
+			continue;
+		case FB_CLEAR:
+			clrscr();
+			retval = 0;
+			break;
+		case FB_PUTCHAR:
+			c = IPC_GET_ARG1(call);
+			col = IPC_GET_ARG2(call);
+			row = IPC_GET_ARG3(call);
+			if (col >= scr_width || row >= scr_height) {
+				retval = EINVAL;
+				break;
+			}
+			printchar(c, col, row);
+			retval = 0;
+			break;
+ 		case FB_CURSOR_GOTO:
+ 			col = IPC_GET_ARG1(call);
+			row = IPC_GET_ARG2(call);
+			if (row >= scr_height || col >= scr_width) {
+				retval = EINVAL;
+				break;
+			}
+			cursor_goto(col, row);
+ 			retval = 0;
+ 			break;
+		case FB_SCROLL:
+			i = IPC_GET_ARG1(call);
+			if (i > (int) scr_height || i < -((int) scr_height)) {
+				retval = EINVAL;
+				break;
+			}
+			scroll(i);
+			retval = 0;
+			break;
+		case FB_CURSOR_VISIBILITY:
+			if (IPC_GET_ARG1(call))
+				cursor_enable();
+			else
+				cursor_disable();
+			retval = 0;
+			break;
+		case FB_SET_STYLE:
+			style = style_to_ega_style(IPC_GET_ARG1(call));
+			retval = 0;
+			break;
+		case FB_SET_COLOR:
+			fg_color = IPC_GET_ARG1(call);
+			bg_color = IPC_GET_ARG2(call);
+			attr = IPC_GET_ARG3(call);
+			style = color_to_ega_style(fg_color, bg_color, attr);
+			retval = 0;
+			break;
+		case FB_SET_RGB_COLOR:
+			fg_rgb = IPC_GET_ARG1(call);
+			bg_rgb = IPC_GET_ARG2(call);
+			style = rgb_to_ega_style(fg_rgb, bg_rgb);
+			retval = 0;
+			break;
+		case FB_VP_DRAW_PIXMAP:
+			i = IPC_GET_ARG2(call);
+			retval = print_screen(i);
+			break;
+		case FB_VP2PIXMAP:
+			retval = save_screen();
+			break;
+		case FB_DROP_PIXMAP:
+			i = IPC_GET_ARG1(call);
+			if (i >= MAX_SAVED_SCREENS) {
+				retval = EINVAL;
+				break;
+			}
+			if (saved_screens[i].data) {
+				free(saved_screens[i].data);
+				saved_screens[i].data = NULL;
+			}
+			retval = 0;
+			break;
+		case FB_SCREEN_YIELD:
+		case FB_SCREEN_RECLAIM:
+			retval = EOK;
+			break;
+		default:
+			retval = EINVAL;
+		}
+		ipc_answer_0(callid, retval);
+	}
+}
+
+int ega_init(void)
+{
+	void *ega_ph_addr;
+	size_t sz;
+
+	ega_ph_addr = (void *) sysinfo_value("fb.address.physical");
+	scr_width = sysinfo_value("fb.width");
+	scr_height = sysinfo_value("fb.height");
+
+	if (sysinfo_value("fb.blinking")) {
+		ega_normal_color &= 0x77;
+		ega_inverted_color &= 0x77;
+	}
+
+	style = NORMAL_COLOR;
+
+	iospace_enable(task_get_id(), (void *) EGA_IO_BASE, 2);
+
+	sz = scr_width * scr_height * 2;
+	scr_addr = as_get_mappable_page(sz);
+
+	if (physmem_map(ega_ph_addr, scr_addr, ALIGN_UP(sz, PAGE_SIZE) >>
+	    PAGE_WIDTH, AS_AREA_READ | AS_AREA_WRITE) != 0)
+		return -1;
+
+	async_set_client_connection(ega_client_connection);
+
+	return 0;
+}
+
+
+/**
+ * @}
+ */
Index: uspace/srv/hid/fb/ega.h
===================================================================
--- uspace/srv/hid/fb/ega.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/fb/ega.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2006 Ondrej Palkovsky
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup egafb
+ * @brief HelenOS EGA framebuffer.
+ * @ingroup fbs
+ * @{
+ */
+/** @file
+ */
+
+#ifndef FB_EGA_H_
+#define FB_EGA_H_
+
+extern int ega_init(void);
+
+#endif
+
+/** @}
+ */
Index: uspace/srv/hid/fb/fb.c
===================================================================
--- uspace/srv/hid/fb/fb.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/fb/fb.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,1780 @@
+/*
+ * Copyright (c) 2008 Martin Decky
+ * Copyright (c) 2006 Jakub Vana
+ * Copyright (c) 2006 Ondrej Palkovsky
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/**
+ * @defgroup fb Graphical framebuffer
+ * @brief HelenOS graphical framebuffer.
+ * @ingroup fbs
+ * @{
+ */
+
+/** @file
+ */
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <ddi.h>
+#include <sysinfo.h>
+#include <align.h>
+#include <as.h>
+#include <ipc/fb.h>
+#include <ipc/ipc.h>
+#include <ipc/ns.h>
+#include <ipc/services.h>
+#include <kernel/errno.h>
+#include <kernel/genarch/fb/visuals.h>
+#include <io/color.h>
+#include <io/style.h>
+#include <async.h>
+#include <fibril.h>
+#include <bool.h>
+#include <stdio.h>
+#include <byteorder.h>
+
+#include "font-8x16.h"
+#include "fb.h"
+#include "main.h"
+#include "../console/screenbuffer.h"
+#include "ppm.h"
+
+#include "pointer.xbm"
+#include "pointer_mask.xbm"
+
+#define DEFAULT_BGCOLOR  0xf0f0f0
+#define DEFAULT_FGCOLOR  0x000000
+
+#define GLYPH_UNAVAIL    '?'
+
+#define MAX_ANIM_LEN     8
+#define MAX_ANIMATIONS   4
+#define MAX_PIXMAPS      256  /**< Maximum number of saved pixmaps */
+#define MAX_VIEWPORTS    128  /**< Viewport is a rectangular area on the screen */
+
+/** Function to render a pixel from a RGB value. */
+typedef void (*rgb_conv_t)(void *, uint32_t);
+
+/** Function to render a bit mask. */
+typedef void (*mask_conv_t)(void *, bool);
+
+/** Function to draw a glyph. */
+typedef void (*dg_t)(unsigned int x, unsigned int y, bool cursor,
+    uint8_t *glyphs, uint32_t glyph, uint32_t fg_color, uint32_t bg_color);
+
+struct {
+	uint8_t *fb_addr;
+	
+	unsigned int xres;
+	unsigned int yres;
+	
+	unsigned int scanline;
+	unsigned int glyphscanline;
+	
+	unsigned int pixelbytes;
+	unsigned int glyphbytes;
+	
+	/** Pre-rendered mask for rendering glyphs. Specific for the visual. */
+	uint8_t *glyphs;
+	
+	rgb_conv_t rgb_conv;
+	mask_conv_t mask_conv;
+} screen;
+
+/** Backbuffer character cell. */
+typedef struct {
+	uint32_t glyph;
+	uint32_t fg_color;
+	uint32_t bg_color;
+} bb_cell_t;
+
+typedef struct {
+	bool initialized;
+	unsigned int x;
+	unsigned int y;
+	unsigned int width;
+	unsigned int height;
+	
+	/* Text support in window */
+	unsigned int cols;
+	unsigned int rows;
+	
+	/*
+	 * Style and glyphs for text printing
+	 */
+	
+	/** Current attributes. */
+	attr_rgb_t attr;
+	
+	uint8_t *bgpixel;
+	
+	/**
+	 * Glyph drawing function for this viewport.  Different viewports
+	 * might use different drawing functions depending on whether their
+	 * scanlines are aligned on a word boundary.
+	 */
+	dg_t dglyph;
+	
+	/* Auto-cursor position */
+	bool cursor_active;
+	unsigned int cur_col;
+	unsigned int cur_row;
+	bool cursor_shown;
+	
+	/* Back buffer */
+	bb_cell_t *backbuf;
+	unsigned int bbsize;
+} viewport_t;
+
+typedef struct {
+	bool initialized;
+	bool enabled;
+	unsigned int vp;
+	
+	unsigned int pos;
+	unsigned int animlen;
+	unsigned int pixmaps[MAX_ANIM_LEN];
+} animation_t;
+
+static animation_t animations[MAX_ANIMATIONS];
+static bool anims_enabled;
+
+typedef struct {
+	unsigned int width;
+	unsigned int height;
+	uint8_t *data;
+} pixmap_t;
+
+static pixmap_t pixmaps[MAX_PIXMAPS];
+static viewport_t viewports[128];
+
+static bool client_connected = false;  /**< Allow only 1 connection */
+
+static uint32_t color_table[16] = {
+	[COLOR_BLACK]       = 0x000000,
+	[COLOR_BLUE]        = 0x0000f0,
+	[COLOR_GREEN]       = 0x00f000,
+	[COLOR_CYAN]        = 0x00f0f0,
+	[COLOR_RED]         = 0xf00000,
+	[COLOR_MAGENTA]     = 0xf000f0,
+	[COLOR_YELLOW]      = 0xf0f000,
+	[COLOR_WHITE]       = 0xf0f0f0,
+	
+	[8 + COLOR_BLACK]   = 0x000000,
+	[8 + COLOR_BLUE]    = 0x0000ff,
+	[8 + COLOR_GREEN]   = 0x00ff00,
+	[8 + COLOR_CYAN]    = 0x00ffff,
+	[8 + COLOR_RED]     = 0xff0000,
+	[8 + COLOR_MAGENTA] = 0xff00ff,
+	[8 + COLOR_YELLOW]  = 0xffff00,
+	[8 + COLOR_WHITE]   = 0xffffff,
+};
+
+static int rgb_from_attr(attr_rgb_t *rgb, const attrs_t *a);
+static int rgb_from_style(attr_rgb_t *rgb, int style);
+static int rgb_from_idx(attr_rgb_t *rgb, ipcarg_t fg_color,
+    ipcarg_t bg_color, ipcarg_t flags);
+
+static int fb_set_color(viewport_t *vport, ipcarg_t fg_color,
+    ipcarg_t bg_color, ipcarg_t attr);
+
+static void draw_glyph_aligned(unsigned int x, unsigned int y, bool cursor,
+    uint8_t *glyphs, uint32_t glyph, uint32_t fg_color, uint32_t bg_color);
+static void draw_glyph_fallback(unsigned int x, unsigned int y, bool cursor,
+    uint8_t *glyphs, uint32_t glyph, uint32_t fg_color, uint32_t bg_color);
+
+static void draw_vp_glyph(viewport_t *vport, bool cursor, unsigned int col,
+    unsigned int row);
+
+
+#define RED(x, bits)                 (((x) >> (8 + 8 + 8 - (bits))) & ((1 << (bits)) - 1))
+#define GREEN(x, bits)               (((x) >> (8 + 8 - (bits))) & ((1 << (bits)) - 1))
+#define BLUE(x, bits)                (((x) >> (8 - (bits))) & ((1 << (bits)) - 1))
+
+#define COL2X(col)                   ((col) * FONT_WIDTH)
+#define ROW2Y(row)                   ((row) * FONT_SCANLINES)
+
+#define X2COL(x)                     ((x) / FONT_WIDTH)
+#define Y2ROW(y)                     ((y) / FONT_SCANLINES)
+
+#define FB_POS(x, y)                 ((y) * screen.scanline + (x) * screen.pixelbytes)
+#define BB_POS(vport, col, row)      ((row) * vport->cols + (col))
+#define GLYPH_POS(glyph, y, cursor)  (((glyph) + (cursor) * FONT_GLYPHS) * screen.glyphbytes + (y) * screen.glyphscanline)
+
+/*
+ * RGB conversion and mask functions.
+ *
+ * These functions write an RGB value to some memory in some predefined format.
+ * The naming convention corresponds to the format created by these functions.
+ * The functions use the so called network order (i.e. big endian) with respect
+ * to their names.
+ */
+
+static void rgb_0888(void *dst, uint32_t rgb)
+{
+	*((uint32_t *) dst) = host2uint32_t_be((0 << 24) |
+	    (RED(rgb, 8) << 16) | (GREEN(rgb, 8) << 8) | (BLUE(rgb, 8)));
+}
+
+static void bgr_0888(void *dst, uint32_t rgb)
+{
+	*((uint32_t *) dst) = host2uint32_t_be((0 << 24) |
+	    (BLUE(rgb, 8) << 16) | (GREEN(rgb, 8) << 8) | (RED(rgb, 8)));
+}
+
+static void mask_0888(void *dst, bool mask)
+{
+	bgr_0888(dst, mask ? 0xffffff : 0);
+}
+
+static void rgb_8880(void *dst, uint32_t rgb)
+{
+	*((uint32_t *) dst) = host2uint32_t_be((RED(rgb, 8) << 24) |
+	    (GREEN(rgb,	8) << 16) | (BLUE(rgb, 8) << 8) | 0);
+}
+
+static void bgr_8880(void *dst, uint32_t rgb)
+{
+	*((uint32_t *) dst) = host2uint32_t_be((BLUE(rgb, 8) << 24) |
+	    (GREEN(rgb,	8) << 16) | (RED(rgb, 8) << 8) | 0);
+}
+
+static void mask_8880(void *dst, bool mask)
+{
+	bgr_8880(dst, mask ? 0xffffff : 0);
+}
+
+static void rgb_888(void *dst, uint32_t rgb)
+{
+	((uint8_t *) dst)[0] = RED(rgb, 8);
+	((uint8_t *) dst)[1] = GREEN(rgb, 8);
+	((uint8_t *) dst)[2] = BLUE(rgb, 8);
+}
+
+static void bgr_888(void *dst, uint32_t rgb)
+{
+	((uint8_t *) dst)[0] = BLUE(rgb, 8);
+	((uint8_t *) dst)[1] = GREEN(rgb, 8);
+	((uint8_t *) dst)[2] = RED(rgb, 8);
+}
+
+static void mask_888(void *dst, bool mask)
+{
+	bgr_888(dst, mask ? 0xffffff : 0);
+}
+
+static void rgb_555_be(void *dst, uint32_t rgb)
+{
+	*((uint16_t *) dst) = host2uint16_t_be(RED(rgb, 5) << 10 |
+	    GREEN(rgb, 5) << 5 | BLUE(rgb, 5));
+}
+
+static void rgb_555_le(void *dst, uint32_t rgb)
+{
+	*((uint16_t *) dst) = host2uint16_t_le(RED(rgb, 5) << 10 |
+	    GREEN(rgb, 5) << 5 | BLUE(rgb, 5));
+}
+
+static void rgb_565_be(void *dst, uint32_t rgb)
+{
+	*((uint16_t *) dst) = host2uint16_t_be(RED(rgb, 5) << 11 |
+	    GREEN(rgb, 6) << 5 | BLUE(rgb, 5));
+}
+
+static void rgb_565_le(void *dst, uint32_t rgb)
+{
+	*((uint16_t *) dst) = host2uint16_t_le(RED(rgb, 5) << 11 |
+	    GREEN(rgb, 6) << 5 | BLUE(rgb, 5));
+}
+
+static void mask_555(void *dst, bool mask)
+{
+	rgb_555_be(dst, mask ? 0xffffff : 0);
+}
+
+static void mask_565(void *dst, bool mask)
+{
+	rgb_565_be(dst, mask ? 0xffffff : 0);
+}
+
+static void bgr_323(void *dst, uint32_t rgb)
+{
+	*((uint8_t *) dst)
+	    = ~((RED(rgb, 3) << 5) | (GREEN(rgb, 2) << 3) | BLUE(rgb, 3));
+}
+
+static void mask_323(void *dst, bool mask)
+{
+	bgr_323(dst, mask ? 0x0 : ~0x0);
+}
+
+/** Draw a filled rectangle.
+ *
+ * @note Need real implementation that does not access VRAM twice.
+ *
+ */
+static void draw_filled_rect(unsigned int x0, unsigned int y0, unsigned int x1,
+    unsigned int y1, uint32_t color)
+{
+	unsigned int x;
+	unsigned int y;
+	unsigned int copy_bytes;
+	
+	uint8_t *sp;
+	uint8_t *dp;
+	uint8_t cbuf[4];
+	
+	if ((y0 >= y1) || (x0 >= x1))
+		return;
+	
+	screen.rgb_conv(cbuf, color);
+	
+	sp = &screen.fb_addr[FB_POS(x0, y0)];
+	dp = sp;
+	
+	/* Draw the first line. */
+	for (x = x0; x < x1; x++) {
+		memcpy(dp, cbuf, screen.pixelbytes);
+		dp += screen.pixelbytes;
+	}
+	
+	dp = sp + screen.scanline;
+	copy_bytes = (x1 - x0) * screen.pixelbytes;
+	
+	/* Draw the remaining lines by copying. */
+	for (y = y0 + 1; y < y1; y++) {
+		memcpy(dp, sp, copy_bytes);
+		dp += screen.scanline;
+	}
+}
+
+/** Redraw viewport.
+ *
+ * @param vport Viewport to redraw
+ *
+ */
+static void vport_redraw(viewport_t *vport)
+{
+	unsigned int col;
+	unsigned int row;
+	
+	for (row = 0; row < vport->rows; row++) {
+		for (col = 0; col < vport->cols; col++) {
+			draw_vp_glyph(vport, false, col, row);
+		}
+	}
+	
+	if (COL2X(vport->cols) < vport->width) {
+		draw_filled_rect(
+		    vport->x + COL2X(vport->cols), vport->y,
+		    vport->x + vport->width, vport->y + vport->height,
+		    vport->attr.bg_color);
+	}
+	
+	if (ROW2Y(vport->rows) < vport->height) {
+		draw_filled_rect(
+		    vport->x, vport->y + ROW2Y(vport->rows),
+		    vport->x + vport->width, vport->y + vport->height,
+		    vport->attr.bg_color);
+	}
+}
+
+static void backbuf_clear(bb_cell_t *backbuf, size_t len, uint32_t fg_color,
+    uint32_t bg_color)
+{
+	size_t i;
+	
+	for (i = 0; i < len; i++) {
+		backbuf[i].glyph = 0;
+		backbuf[i].fg_color = fg_color;
+		backbuf[i].bg_color = bg_color;
+	}
+}
+
+/** Clear viewport.
+ *
+ * @param vport Viewport to clear
+ *
+ */
+static void vport_clear(viewport_t *vport)
+{
+	backbuf_clear(vport->backbuf, vport->cols * vport->rows,
+	    vport->attr.fg_color, vport->attr.bg_color);
+	vport_redraw(vport);
+}
+
+/** Scroll viewport by the specified number of lines.
+ *
+ * @param vport Viewport to scroll
+ * @param lines Number of lines to scroll
+ *
+ */
+static void vport_scroll(viewport_t *vport, int lines)
+{
+	unsigned int col;
+	unsigned int row;
+	unsigned int x;
+	unsigned int y;
+	uint32_t glyph;
+	uint32_t fg_color;
+	uint32_t bg_color;
+	bb_cell_t *bbp;
+	bb_cell_t *xbp;
+	
+	/*
+	 * Redraw.
+	 */
+	
+	y = vport->y;
+	for (row = 0; row < vport->rows; row++) {
+		x = vport->x;
+		for (col = 0; col < vport->cols; col++) {
+			if (((int) row + lines >= 0) &&
+			    ((int) row + lines < (int) vport->rows)) {
+				xbp = &vport->backbuf[BB_POS(vport, col, row + lines)];
+				bbp = &vport->backbuf[BB_POS(vport, col, row)];
+				
+				glyph = xbp->glyph;
+				fg_color = xbp->fg_color;
+				bg_color = xbp->bg_color;
+				
+				if ((bbp->glyph == glyph)
+				   && (bbp->fg_color == xbp->fg_color)
+				   && (bbp->bg_color == xbp->bg_color)) {
+					x += FONT_WIDTH;
+					continue;
+				}
+			} else {
+				glyph = 0;
+				fg_color = vport->attr.fg_color;
+				bg_color = vport->attr.bg_color;
+			}
+			
+			(*vport->dglyph)(x, y, false, screen.glyphs, glyph,
+			    fg_color, bg_color);
+			x += FONT_WIDTH;
+		}
+		y += FONT_SCANLINES;
+	}
+	
+	/*
+	 * Scroll backbuffer.
+	 */
+	
+	if (lines > 0) {
+		memmove(vport->backbuf, vport->backbuf + vport->cols * lines,
+		    vport->cols * (vport->rows - lines) * sizeof(bb_cell_t));
+		backbuf_clear(&vport->backbuf[BB_POS(vport, 0, vport->rows - lines)],
+		    vport->cols * lines, vport->attr.fg_color, vport->attr.bg_color);
+	} else {
+		memmove(vport->backbuf - vport->cols * lines, vport->backbuf,
+		    vport->cols * (vport->rows + lines) * sizeof(bb_cell_t));
+		backbuf_clear(vport->backbuf, - vport->cols * lines,
+		    vport->attr.fg_color, vport->attr.bg_color);
+	}
+}
+
+/** Render glyphs
+ *
+ * Convert glyphs from device independent font
+ * description to current visual representation.
+ *
+ */
+static void render_glyphs(void)
+{
+	unsigned int glyph;
+	
+	for (glyph = 0; glyph < FONT_GLYPHS; glyph++) {
+		unsigned int y;
+		
+		for (y = 0; y < FONT_SCANLINES; y++) {
+			unsigned int x;
+			
+			for (x = 0; x < FONT_WIDTH; x++) {
+				screen.mask_conv(&screen.glyphs[GLYPH_POS(glyph, y, false) + x * screen.pixelbytes],
+				    (fb_font[glyph][y] & (1 << (7 - x))) ? true : false);
+				
+				screen.mask_conv(&screen.glyphs[GLYPH_POS(glyph, y, true) + x * screen.pixelbytes],
+				    (fb_font[glyph][y] & (1 << (7 - x))) ? false : true);
+			}
+		}
+	}
+}
+
+/** Create new viewport
+ *
+ * @param x      Origin of the viewport (x).
+ * @param y      Origin of the viewport (y).
+ * @param width  Width of the viewport.
+ * @param height Height of the viewport.
+ *
+ * @return New viewport number.
+ *
+ */
+static int vport_create(unsigned int x, unsigned int y,
+    unsigned int width, unsigned int height)
+{
+	unsigned int i;
+	
+	for (i = 0; i < MAX_VIEWPORTS; i++) {
+		if (!viewports[i].initialized)
+			break;
+	}
+	
+	if (i == MAX_VIEWPORTS)
+		return ELIMIT;
+	
+	unsigned int cols = width / FONT_WIDTH;
+	unsigned int rows = height / FONT_SCANLINES;
+	unsigned int bbsize = cols * rows * sizeof(bb_cell_t);
+	unsigned int word_size = sizeof(unsigned long);
+	
+	bb_cell_t *backbuf = (bb_cell_t *) malloc(bbsize);
+	if (!backbuf)
+		return ENOMEM;
+	
+	uint8_t *bgpixel = (uint8_t *) malloc(screen.pixelbytes);
+	if (!bgpixel) {
+		free(backbuf);
+		return ENOMEM;
+	}
+	
+	backbuf_clear(backbuf, cols * rows, DEFAULT_FGCOLOR, DEFAULT_BGCOLOR);
+	memset(bgpixel, 0, screen.pixelbytes);
+	
+	viewports[i].x = x;
+	viewports[i].y = y;
+	viewports[i].width = width;
+	viewports[i].height = height;
+	
+	viewports[i].cols = cols;
+	viewports[i].rows = rows;
+	
+	viewports[i].attr.bg_color = DEFAULT_BGCOLOR;
+	viewports[i].attr.fg_color = DEFAULT_FGCOLOR;
+	
+	viewports[i].bgpixel = bgpixel;
+	
+	/*
+	 * Conditions necessary to select aligned version:
+	 *  - word size is divisible by pixelbytes
+	 *  - cell scanline size is divisible by word size
+	 *  - cell scanlines are word-aligned
+	 *
+	 */
+	if (((word_size % screen.pixelbytes) == 0)
+	    && ((FONT_WIDTH * screen.pixelbytes) % word_size == 0)
+	    && ((x * screen.pixelbytes) % word_size == 0)
+	    && (screen.scanline % word_size == 0)) {
+		viewports[i].dglyph = draw_glyph_aligned;
+	} else {
+		viewports[i].dglyph = draw_glyph_fallback;
+	}
+	
+	viewports[i].cur_col = 0;
+	viewports[i].cur_row = 0;
+	viewports[i].cursor_active = false;
+	viewports[i].cursor_shown = false;
+	
+	viewports[i].bbsize = bbsize;
+	viewports[i].backbuf = backbuf;
+	
+	viewports[i].initialized = true;
+	
+	screen.rgb_conv(viewports[i].bgpixel, viewports[i].attr.bg_color);
+	
+	return i;
+}
+
+
+/** Initialize framebuffer as a chardev output device
+ *
+ * @param addr   Address of the framebuffer
+ * @param xres   Screen width in pixels
+ * @param yres   Screen height in pixels
+ * @param visual Bits per pixel (8, 16, 24, 32)
+ * @param scan   Bytes per one scanline
+ *
+ */
+static bool screen_init(void *addr, unsigned int xres, unsigned int yres,
+    unsigned int scan, unsigned int visual)
+{
+	switch (visual) {
+	case VISUAL_INDIRECT_8:
+		screen.rgb_conv = bgr_323;
+		screen.mask_conv = mask_323;
+		screen.pixelbytes = 1;
+		break;
+	case VISUAL_RGB_5_5_5_LE:
+		screen.rgb_conv = rgb_555_le;
+		screen.mask_conv = mask_555;
+		screen.pixelbytes = 2;
+		break;
+	case VISUAL_RGB_5_5_5_BE:
+		screen.rgb_conv = rgb_555_be;
+		screen.mask_conv = mask_555;
+		screen.pixelbytes = 2;
+		break;
+	case VISUAL_RGB_5_6_5_LE:
+		screen.rgb_conv = rgb_565_le;
+		screen.mask_conv = mask_565;
+		screen.pixelbytes = 2;
+		break;
+	case VISUAL_RGB_5_6_5_BE:
+		screen.rgb_conv = rgb_565_be;
+		screen.mask_conv = mask_565;
+		screen.pixelbytes = 2;
+		break;
+	case VISUAL_RGB_8_8_8:
+		screen.rgb_conv = rgb_888;
+		screen.mask_conv = mask_888;
+		screen.pixelbytes = 3;
+		break;
+	case VISUAL_BGR_8_8_8:
+		screen.rgb_conv = bgr_888;
+		screen.mask_conv = mask_888;
+		screen.pixelbytes = 3;
+		break;
+	case VISUAL_RGB_8_8_8_0:
+		screen.rgb_conv = rgb_8880;
+		screen.mask_conv = mask_8880;
+		screen.pixelbytes = 4;
+		break;
+	case VISUAL_RGB_0_8_8_8:
+		screen.rgb_conv = rgb_0888;
+		screen.mask_conv = mask_0888;
+		screen.pixelbytes = 4;
+		break;
+	case VISUAL_BGR_0_8_8_8:
+		screen.rgb_conv = bgr_0888;
+		screen.mask_conv = mask_0888;
+		screen.pixelbytes = 4;
+		break;
+	case VISUAL_BGR_8_8_8_0:
+		screen.rgb_conv = bgr_8880;
+		screen.mask_conv = mask_8880;
+		screen.pixelbytes = 4;
+		break;
+	default:
+		return false;
+	}
+	
+	screen.fb_addr = (unsigned char *) addr;
+	screen.xres = xres;
+	screen.yres = yres;
+	screen.scanline = scan;
+	
+	screen.glyphscanline = FONT_WIDTH * screen.pixelbytes;
+	screen.glyphbytes = screen.glyphscanline * FONT_SCANLINES;
+	
+	size_t glyphsize = 2 * FONT_GLYPHS * screen.glyphbytes;
+	uint8_t *glyphs = (uint8_t *) malloc(glyphsize);
+	if (!glyphs)
+		return false;
+	
+	memset(glyphs, 0, glyphsize);
+	screen.glyphs = glyphs;
+	
+	render_glyphs();
+	
+	/* Create first viewport */
+	vport_create(0, 0, xres, yres);
+	
+	return true;
+}
+
+
+/** Draw a glyph, takes advantage of alignment.
+ *
+ * This version can only be used if the following conditions are met:
+ *
+ *   - word size is divisible by pixelbytes
+ *   - cell scanline size is divisible by word size
+ *   - cell scanlines are word-aligned
+ *
+ * It makes use of the pre-rendered mask to process (possibly) several
+ * pixels at once (word size / pixelbytes pixels at a time are processed)
+ * making it very fast. Most notably this version is not applicable at 24 bits
+ * per pixel.
+ *
+ * @param x        x coordinate of top-left corner on screen.
+ * @param y        y coordinate of top-left corner on screen.
+ * @param cursor   Draw glyph with cursor
+ * @param glyphs   Pointer to font bitmap.
+ * @param glyph    Code of the glyph to draw.
+ * @param fg_color Foreground color.
+ * @param bg_color Backgroudn color.
+ *
+ */
+static void draw_glyph_aligned(unsigned int x, unsigned int y, bool cursor,
+    uint8_t *glyphs, uint32_t glyph, uint32_t fg_color, uint32_t bg_color)
+{
+	unsigned int i;
+	unsigned int yd;
+	unsigned long fg_buf;
+	unsigned long bg_buf;
+	unsigned long mask;
+	
+	/*
+	 * Prepare a pair of words, one filled with foreground-color
+	 * pattern and the other filled with background-color pattern.
+	 */
+	for (i = 0; i < sizeof(unsigned long) / screen.pixelbytes; i++) {
+		screen.rgb_conv(&((uint8_t *) &fg_buf)[i * screen.pixelbytes],
+		    fg_color);
+		screen.rgb_conv(&((uint8_t *) &bg_buf)[i * screen.pixelbytes],
+		    bg_color);
+	}
+	
+	/* Pointer to the current position in the mask. */
+	unsigned long *maskp = (unsigned long *) &glyphs[GLYPH_POS(glyph, 0, cursor)];
+	
+	/* Pointer to the current position on the screen. */
+	unsigned long *dp = (unsigned long *) &screen.fb_addr[FB_POS(x, y)];
+	
+	/* Width of the character cell in words. */
+	unsigned int ww = FONT_WIDTH * screen.pixelbytes / sizeof(unsigned long);
+	
+	/* Offset to add when moving to another screen scanline. */
+	unsigned int d_add = screen.scanline - FONT_WIDTH * screen.pixelbytes;
+	
+	for (yd = 0; yd < FONT_SCANLINES; yd++) {
+		/*
+		 * Now process the cell scanline, combining foreground
+		 * and background color patters using the pre-rendered mask.
+		 */
+		for (i = 0; i < ww; i++) {
+			mask = *maskp++;
+			*dp++ = (fg_buf & mask) | (bg_buf & ~mask);
+		}
+		
+		/* Move to the beginning of the next scanline of the cell. */
+		dp = (unsigned long *) ((uint8_t *) dp + d_add);
+	}
+}
+
+/** Draw a glyph, fallback version.
+ *
+ * This version does not make use of the pre-rendered mask, it uses
+ * the font bitmap directly. It works always, but it is slower.
+ *
+ * @param x        x coordinate of top-left corner on screen.
+ * @param y        y coordinate of top-left corner on screen.
+ * @param cursor   Draw glyph with cursor
+ * @param glyphs   Pointer to font bitmap.
+ * @param glyph    Code of the glyph to draw.
+ * @param fg_color Foreground color.
+ * @param bg_color Backgroudn color.
+ *
+ */
+void draw_glyph_fallback(unsigned int x, unsigned int y, bool cursor,
+    uint8_t *glyphs, uint32_t glyph, uint32_t fg_color, uint32_t bg_color)
+{
+	unsigned int i;
+	unsigned int j;
+	unsigned int yd;
+	uint8_t fg_buf[4];
+	uint8_t bg_buf[4];
+	uint8_t *sp;
+	uint8_t b;
+	
+	/* Pre-render 1x the foreground and background color pixels. */
+	if (cursor) {
+		screen.rgb_conv(fg_buf, bg_color);
+		screen.rgb_conv(bg_buf, fg_color);
+	} else {
+		screen.rgb_conv(fg_buf, fg_color);
+		screen.rgb_conv(bg_buf, bg_color);
+	}
+	
+	/* Pointer to the current position on the screen. */
+	uint8_t *dp = (uint8_t *) &screen.fb_addr[FB_POS(x, y)];
+	
+	/* Offset to add when moving to another screen scanline. */
+	unsigned int d_add = screen.scanline - FONT_WIDTH * screen.pixelbytes;
+	
+	for (yd = 0; yd < FONT_SCANLINES; yd++) {
+		/* Byte containing bits of the glyph scanline. */
+		b = fb_font[glyph][yd];
+		
+		for (i = 0; i < FONT_WIDTH; i++) {
+			/* Choose color based on the current bit. */
+			sp = (b & 0x80) ? fg_buf : bg_buf;
+			
+			/* Copy the pixel. */
+			for (j = 0; j < screen.pixelbytes; j++) {
+				*dp++ = *sp++;
+			}
+			
+			/* Move to the next bit. */
+			b = b << 1;
+		}
+		
+		/* Move to the beginning of the next scanline of the cell. */
+		dp += d_add;
+	}
+}
+
+/** Draw glyph at specified position in viewport.
+ *
+ * @param vport  Viewport identification
+ * @param cursor Draw glyph with cursor
+ * @param col    Screen position relative to viewport
+ * @param row    Screen position relative to viewport
+ *
+ */
+static void draw_vp_glyph(viewport_t *vport, bool cursor, unsigned int col,
+    unsigned int row)
+{
+	unsigned int x = vport->x + COL2X(col);
+	unsigned int y = vport->y + ROW2Y(row);
+	
+	uint32_t glyph = vport->backbuf[BB_POS(vport, col, row)].glyph;
+	uint32_t fg_color = vport->backbuf[BB_POS(vport, col, row)].fg_color;
+	uint32_t bg_color = vport->backbuf[BB_POS(vport, col, row)].bg_color;
+	
+	(*vport->dglyph)(x, y, cursor, screen.glyphs, glyph,
+	    fg_color, bg_color);
+}
+
+/** Hide cursor if it is shown
+ *
+ */
+static void cursor_hide(viewport_t *vport)
+{
+	if ((vport->cursor_active) && (vport->cursor_shown)) {
+		draw_vp_glyph(vport, false, vport->cur_col, vport->cur_row);
+		vport->cursor_shown = false;
+	}
+}
+
+
+/** Show cursor if cursor showing is enabled
+ *
+ */
+static void cursor_show(viewport_t *vport)
+{
+	/* Do not check for cursor_shown */
+	if (vport->cursor_active) {
+		draw_vp_glyph(vport, true, vport->cur_col, vport->cur_row);
+		vport->cursor_shown = true;
+	}
+}
+
+
+/** Invert cursor, if it is enabled
+ *
+ */
+static void cursor_blink(viewport_t *vport)
+{
+	if (vport->cursor_shown)
+		cursor_hide(vport);
+	else
+		cursor_show(vport);
+}
+
+
+/** Draw character at given position relative to viewport
+ *
+ * @param vport  Viewport identification
+ * @param c      Character to draw
+ * @param col    Screen position relative to viewport
+ * @param row    Screen position relative to viewport
+ *
+ */
+static void draw_char(viewport_t *vport, wchar_t c, unsigned int col, unsigned int row)
+{
+	bb_cell_t *bbp;
+	
+	/* Do not hide cursor if we are going to overwrite it */
+	if ((vport->cursor_active) && (vport->cursor_shown) &&
+	    ((vport->cur_col != col) || (vport->cur_row != row)))
+		cursor_hide(vport);
+	
+	bbp = &vport->backbuf[BB_POS(vport, col, row)];
+	bbp->glyph = fb_font_glyph(c);
+	bbp->fg_color = vport->attr.fg_color;
+	bbp->bg_color = vport->attr.bg_color;
+	
+	draw_vp_glyph(vport, false, col, row);
+	
+	vport->cur_col = col;
+	vport->cur_row = row;
+	
+	vport->cur_col++;
+	if (vport->cur_col >= vport->cols) {
+		vport->cur_col = 0;
+		vport->cur_row++;
+		if (vport->cur_row >= vport->rows)
+			vport->cur_row--;
+	}
+	
+	cursor_show(vport);
+}
+
+/** Draw text data to viewport.
+ *
+ * @param vport Viewport id
+ * @param data  Text data.
+ * @param x     Leftmost column of the area.
+ * @param y     Topmost row of the area.
+ * @param w     Number of rows.
+ * @param h     Number of columns.
+ *
+ */
+static void draw_text_data(viewport_t *vport, keyfield_t *data, unsigned int x,
+    unsigned int y, unsigned int w, unsigned int h)
+{
+	unsigned int i;
+	unsigned int j;
+	bb_cell_t *bbp;
+	attrs_t *a;
+	attr_rgb_t rgb;
+	
+	for (j = 0; j < h; j++) {
+		for (i = 0; i < w; i++) {
+			unsigned int col = x + i;
+			unsigned int row = y + j;
+			
+			bbp = &vport->backbuf[BB_POS(vport, col, row)];
+			
+			a = &data[j * w + i].attrs;
+			rgb_from_attr(&rgb, a);
+			
+			bbp->glyph = fb_font_glyph(data[j * w + i].character);
+			bbp->fg_color = rgb.fg_color;
+			bbp->bg_color = rgb.bg_color;
+			
+			draw_vp_glyph(vport, false, col, row);
+		}
+	}
+	cursor_show(vport);
+}
+
+
+static void putpixel_pixmap(void *data, unsigned int x, unsigned int y, uint32_t color)
+{
+	int pm = *((int *) data);
+	pixmap_t *pmap = &pixmaps[pm];
+	unsigned int pos = (y * pmap->width + x) * screen.pixelbytes;
+	
+	screen.rgb_conv(&pmap->data[pos], color);
+}
+
+
+static void putpixel(void *data, unsigned int x, unsigned int y, uint32_t color)
+{
+	viewport_t *vport = (viewport_t *) data;
+	unsigned int dx = vport->x + x;
+	unsigned int dy = vport->y + y;
+	
+	screen.rgb_conv(&screen.fb_addr[FB_POS(dx, dy)], color);
+}
+
+
+/** Return first free pixmap
+ *
+ */
+static int find_free_pixmap(void)
+{
+	unsigned int i;
+	
+	for (i = 0; i < MAX_PIXMAPS; i++)
+		if (!pixmaps[i].data)
+			return i;
+	
+	return -1;
+}
+
+
+/** Create a new pixmap and return appropriate ID
+ *
+ */
+static int shm2pixmap(unsigned char *shm, size_t size)
+{
+	int pm;
+	pixmap_t *pmap;
+	
+	pm = find_free_pixmap();
+	if (pm == -1)
+		return ELIMIT;
+	
+	pmap = &pixmaps[pm];
+	
+	if (ppm_get_data(shm, size, &pmap->width, &pmap->height))
+		return EINVAL;
+	
+	pmap->data = malloc(pmap->width * pmap->height * screen.pixelbytes);
+	if (!pmap->data)
+		return ENOMEM;
+	
+	ppm_draw(shm, size, 0, 0, pmap->width, pmap->height, putpixel_pixmap, (void *) &pm);
+	
+	return pm;
+}
+
+
+/** Handle shared memory communication calls
+ *
+ * Protocol for drawing pixmaps:
+ * - FB_PREPARE_SHM(client shm identification)
+ * - IPC_M_AS_AREA_SEND
+ * - FB_DRAW_PPM(startx, starty)
+ * - FB_DROP_SHM
+ *
+ * Protocol for text drawing
+ * - IPC_M_AS_AREA_SEND
+ * - FB_DRAW_TEXT_DATA
+ *
+ * @param callid Callid of the current call
+ * @param call   Current call data
+ * @param vp     Active viewport
+ *
+ * @return false if the call was not handled byt this function, true otherwise
+ *
+ * Note: this function is not thread-safe, you would have
+ * to redefine static variables with fibril_local.
+ *
+ */
+static bool shm_handle(ipc_callid_t callid, ipc_call_t *call, int vp)
+{
+	static keyfield_t *interbuffer = NULL;
+	static size_t intersize = 0;
+	
+	static unsigned char *shm = NULL;
+	static ipcarg_t shm_id = 0;
+	static size_t shm_size;
+	
+	bool handled = true;
+	int retval = EOK;
+	viewport_t *vport = &viewports[vp];
+	unsigned int x;
+	unsigned int y;
+	unsigned int w;
+	unsigned int h;
+	
+	switch (IPC_GET_METHOD(*call)) {
+	case IPC_M_SHARE_OUT:
+		/* We accept one area for data interchange */
+		if (IPC_GET_ARG1(*call) == shm_id) {
+			void *dest = as_get_mappable_page(IPC_GET_ARG2(*call));
+			shm_size = IPC_GET_ARG2(*call);
+			if (ipc_answer_1(callid, EOK, (sysarg_t) dest)) {
+				shm_id = 0;
+				return false;
+			}
+			shm = dest;
+			
+			if (shm[0] != 'P')
+				return false;
+			
+			return true;
+		} else {
+			intersize = IPC_GET_ARG2(*call);
+			receive_comm_area(callid, call, (void *) &interbuffer);
+		}
+		return true;
+	case FB_PREPARE_SHM:
+		if (shm_id)
+			retval = EBUSY;
+		else 
+			shm_id = IPC_GET_ARG1(*call);
+		break;
+		
+	case FB_DROP_SHM:
+		if (shm) {
+			as_area_destroy(shm);
+			shm = NULL;
+		}
+		shm_id = 0;
+		break;
+		
+	case FB_SHM2PIXMAP:
+		if (!shm) {
+			retval = EINVAL;
+			break;
+		}
+		retval = shm2pixmap(shm, shm_size);
+		break;
+	case FB_DRAW_PPM:
+		if (!shm) {
+			retval = EINVAL;
+			break;
+		}
+		x = IPC_GET_ARG1(*call);
+		y = IPC_GET_ARG2(*call);
+		
+		if ((x > vport->width) || (y > vport->height)) {
+			retval = EINVAL;
+			break;
+		}
+		
+		ppm_draw(shm, shm_size, IPC_GET_ARG1(*call),
+		    IPC_GET_ARG2(*call), vport->width - x, vport->height - y, putpixel, (void *) vport);
+		break;
+	case FB_DRAW_TEXT_DATA:
+		x = IPC_GET_ARG1(*call);
+		y = IPC_GET_ARG2(*call);
+		w = IPC_GET_ARG3(*call);
+		h = IPC_GET_ARG4(*call);
+		if (!interbuffer) {
+			retval = EINVAL;
+			break;
+		}
+		if (x + w > vport->cols || y + h > vport->rows) {
+			retval = EINVAL;
+			break;
+		}
+		if (intersize < w * h * sizeof(*interbuffer)) {
+			retval = EINVAL;
+			break;
+		}
+		draw_text_data(vport, interbuffer, x, y, w, h);
+		break;
+	default:
+		handled = false;
+	}
+	
+	if (handled)
+		ipc_answer_0(callid, retval);
+	return handled;
+}
+
+
+static void copy_vp_to_pixmap(viewport_t *vport, pixmap_t *pmap)
+{
+	unsigned int width = vport->width;
+	unsigned int height = vport->height;
+	
+	if (width + vport->x > screen.xres)
+		width = screen.xres - vport->x;
+	if (height + vport->y > screen.yres)
+		height = screen.yres - vport->y;
+	
+	unsigned int realwidth = pmap->width <= width ? pmap->width : width;
+	unsigned int realheight = pmap->height <= height ? pmap->height : height;
+	
+	unsigned int srcrowsize = vport->width * screen.pixelbytes;
+	unsigned int realrowsize = realwidth * screen.pixelbytes;
+	
+	unsigned int y;
+	for (y = 0; y < realheight; y++) {
+		unsigned int tmp = (vport->y + y) * screen.scanline + vport->x * screen.pixelbytes;
+		memcpy(pmap->data + srcrowsize * y, screen.fb_addr + tmp, realrowsize);
+	}
+}
+
+
+/** Save viewport to pixmap
+ *
+ */
+static int save_vp_to_pixmap(viewport_t *vport)
+{
+	int pm;
+	pixmap_t *pmap;
+	
+	pm = find_free_pixmap();
+	if (pm == -1)
+		return ELIMIT;
+	
+	pmap = &pixmaps[pm];
+	pmap->data = malloc(screen.pixelbytes * vport->width * vport->height);
+	if (!pmap->data)
+		return ENOMEM;
+	
+	pmap->width = vport->width;
+	pmap->height = vport->height;
+	
+	copy_vp_to_pixmap(vport, pmap);
+	
+	return pm;
+}
+
+
+/** Draw pixmap on screen
+ *
+ * @param vp Viewport to draw on
+ * @param pm Pixmap identifier
+ *
+ */
+static int draw_pixmap(int vp, int pm)
+{
+	pixmap_t *pmap = &pixmaps[pm];
+	viewport_t *vport = &viewports[vp];
+	
+	unsigned int width = vport->width;
+	unsigned int height = vport->height;
+	
+	if (width + vport->x > screen.xres)
+		width = screen.xres - vport->x;
+	if (height + vport->y > screen.yres)
+		height = screen.yres - vport->y;
+	
+	if (!pmap->data)
+		return EINVAL;
+	
+	unsigned int realwidth = pmap->width <= width ? pmap->width : width;
+	unsigned int realheight = pmap->height <= height ? pmap->height : height;
+	
+	unsigned int srcrowsize = vport->width * screen.pixelbytes;
+	unsigned int realrowsize = realwidth * screen.pixelbytes;
+	
+	unsigned int y;
+	for (y = 0; y < realheight; y++) {
+		unsigned int tmp = (vport->y + y) * screen.scanline + vport->x * screen.pixelbytes;
+		memcpy(screen.fb_addr + tmp, pmap->data + y * srcrowsize, realrowsize);
+	}
+	
+	return EOK;
+}
+
+
+/** Tick animation one step forward
+ *
+ */
+static void anims_tick(void)
+{
+	unsigned int i;
+	static int counts = 0;
+	
+	/* Limit redrawing */
+	counts = (counts + 1) % 8;
+	if (counts)
+		return;
+	
+	for (i = 0; i < MAX_ANIMATIONS; i++) {
+		if ((!animations[i].animlen) || (!animations[i].initialized) ||
+		    (!animations[i].enabled))
+			continue;
+		
+		draw_pixmap(animations[i].vp, animations[i].pixmaps[animations[i].pos]);
+		animations[i].pos = (animations[i].pos + 1) % animations[i].animlen;
+	}
+}
+
+
+static unsigned int pointer_x;
+static unsigned int pointer_y;
+static bool pointer_shown, pointer_enabled;
+static int pointer_vport = -1;
+static int pointer_pixmap = -1;
+
+
+static void mouse_show(void)
+{
+	int i, j;
+	int visibility;
+	int color;
+	int bytepos;
+	
+	if ((pointer_shown) || (!pointer_enabled))
+		return;
+	
+	/* Save image under the pointer. */
+	if (pointer_vport == -1) {
+		pointer_vport = vport_create(pointer_x, pointer_y, pointer_width, pointer_height);
+		if (pointer_vport < 0)
+			return;
+	} else {
+		viewports[pointer_vport].x = pointer_x;
+		viewports[pointer_vport].y = pointer_y;
+	}
+	
+	if (pointer_pixmap == -1)
+		pointer_pixmap = save_vp_to_pixmap(&viewports[pointer_vport]);
+	else
+		copy_vp_to_pixmap(&viewports[pointer_vport], &pixmaps[pointer_pixmap]);
+	
+	/* Draw mouse pointer. */
+	for (i = 0; i < pointer_height; i++)
+		for (j = 0; j < pointer_width; j++) {
+			bytepos = i * ((pointer_width - 1) / 8 + 1) + j / 8;
+			visibility = pointer_mask_bits[bytepos] &
+			    (1 << (j % 8));
+			if (visibility) {
+				color = pointer_bits[bytepos] &
+				    (1 << (j % 8)) ? 0 : 0xffffff;
+				if (pointer_x + j < screen.xres && pointer_y +
+				    i < screen.yres)
+					putpixel(&viewports[0], pointer_x + j,
+					    pointer_y + i, color);
+			}
+		}
+	pointer_shown = 1;
+}
+
+
+static void mouse_hide(void)
+{
+	/* Restore image under the pointer. */
+	if (pointer_shown) {
+		draw_pixmap(pointer_vport, pointer_pixmap);
+		pointer_shown = 0;
+	}
+}
+
+
+static void mouse_move(unsigned int x, unsigned int y)
+{
+	mouse_hide();
+	pointer_x = x;
+	pointer_y = y;
+	mouse_show();
+}
+
+
+static int anim_handle(ipc_callid_t callid, ipc_call_t *call, int vp)
+{
+	bool handled = true;
+	int retval = EOK;
+	int i, nvp;
+	int newval;
+	
+	switch (IPC_GET_METHOD(*call)) {
+	case FB_ANIM_CREATE:
+		nvp = IPC_GET_ARG1(*call);
+		if (nvp == -1)
+			nvp = vp;
+		if (nvp >= MAX_VIEWPORTS || nvp < 0 ||
+			!viewports[nvp].initialized) {
+			retval = EINVAL;
+			break;
+		}
+		for (i = 0; i < MAX_ANIMATIONS; i++) {
+			if (!animations[i].initialized)
+				break;
+		}
+		if (i == MAX_ANIMATIONS) {
+			retval = ELIMIT;
+			break;
+		}
+		animations[i].initialized = 1;
+		animations[i].animlen = 0;
+		animations[i].pos = 0;
+		animations[i].enabled = 0;
+		animations[i].vp = nvp;
+		retval = i;
+		break;
+	case FB_ANIM_DROP:
+		i = IPC_GET_ARG1(*call);
+		if (i >= MAX_ANIMATIONS || i < 0) {
+			retval = EINVAL;
+			break;
+		}
+		animations[i].initialized = 0;
+		break;
+	case FB_ANIM_ADDPIXMAP:
+		i = IPC_GET_ARG1(*call);
+		if (i >= MAX_ANIMATIONS || i < 0 ||
+			!animations[i].initialized) {
+			retval = EINVAL;
+			break;
+		}
+		if (animations[i].animlen == MAX_ANIM_LEN) {
+			retval = ELIMIT;
+			break;
+		}
+		newval = IPC_GET_ARG2(*call);
+		if (newval < 0 || newval > MAX_PIXMAPS ||
+			!pixmaps[newval].data) {
+			retval = EINVAL;
+			break;
+		}
+		animations[i].pixmaps[animations[i].animlen++] = newval;
+		break;
+	case FB_ANIM_CHGVP:
+		i = IPC_GET_ARG1(*call);
+		if (i >= MAX_ANIMATIONS || i < 0) {
+			retval = EINVAL;
+			break;
+		}
+		nvp = IPC_GET_ARG2(*call);
+		if (nvp == -1)
+			nvp = vp;
+		if (nvp >= MAX_VIEWPORTS || nvp < 0 ||
+			!viewports[nvp].initialized) {
+			retval = EINVAL;
+			break;
+		}
+		animations[i].vp = nvp;
+		break;
+	case FB_ANIM_START:
+	case FB_ANIM_STOP:
+		i = IPC_GET_ARG1(*call);
+		if (i >= MAX_ANIMATIONS || i < 0) {
+			retval = EINVAL;
+			break;
+		}
+		newval = (IPC_GET_METHOD(*call) == FB_ANIM_START);
+		if (newval ^ animations[i].enabled) {
+			animations[i].enabled = newval;
+			anims_enabled += newval ? 1 : -1;
+		}
+		break;
+	default:
+		handled = 0;
+	}
+	if (handled)
+		ipc_answer_0(callid, retval);
+	return handled;
+}
+
+
+/** Handler for messages concerning pixmap handling
+ *
+ */
+static int pixmap_handle(ipc_callid_t callid, ipc_call_t *call, int vp)
+{
+	bool handled = true;
+	int retval = EOK;
+	int i, nvp;
+	
+	switch (IPC_GET_METHOD(*call)) {
+	case FB_VP_DRAW_PIXMAP:
+		nvp = IPC_GET_ARG1(*call);
+		if (nvp == -1)
+			nvp = vp;
+		if (nvp < 0 || nvp >= MAX_VIEWPORTS ||
+			!viewports[nvp].initialized) {
+			retval = EINVAL;
+			break;
+		}
+		i = IPC_GET_ARG2(*call);
+		retval = draw_pixmap(nvp, i);
+		break;
+	case FB_VP2PIXMAP:
+		nvp = IPC_GET_ARG1(*call);
+		if (nvp == -1)
+			nvp = vp;
+		if (nvp < 0 || nvp >= MAX_VIEWPORTS ||
+			!viewports[nvp].initialized)
+			retval = EINVAL;
+		else
+			retval = save_vp_to_pixmap(&viewports[nvp]);
+		break;
+	case FB_DROP_PIXMAP:
+		i = IPC_GET_ARG1(*call);
+		if (i >= MAX_PIXMAPS) {
+			retval = EINVAL;
+			break;
+		}
+		if (pixmaps[i].data) {
+			free(pixmaps[i].data);
+			pixmaps[i].data = NULL;
+		}
+		break;
+	default:
+		handled = 0;
+	}
+	
+	if (handled)
+		ipc_answer_0(callid, retval);
+	return handled;
+	
+}
+
+static int rgb_from_style(attr_rgb_t *rgb, int style)
+{
+	switch (style) {
+	case STYLE_NORMAL:
+		rgb->fg_color = color_table[COLOR_BLACK];
+		rgb->bg_color = color_table[COLOR_WHITE];
+		break;
+	case STYLE_EMPHASIS:
+		rgb->fg_color = color_table[COLOR_RED];
+		rgb->bg_color = color_table[COLOR_WHITE];
+		break;
+	default:
+		return EINVAL;
+	}
+
+	return EOK;
+}
+
+static int rgb_from_idx(attr_rgb_t *rgb, ipcarg_t fg_color,
+    ipcarg_t bg_color, ipcarg_t flags)
+{
+	fg_color = (fg_color & 7) | ((flags & CATTR_BRIGHT) ? 8 : 0);
+	bg_color = (bg_color & 7) | ((flags & CATTR_BRIGHT) ? 8 : 0);
+
+	rgb->fg_color = color_table[fg_color];
+	rgb->bg_color = color_table[bg_color];
+
+	return EOK;
+}
+
+static int rgb_from_attr(attr_rgb_t *rgb, const attrs_t *a)
+{
+	int rc;
+
+	switch (a->t) {
+	case at_style:
+		rc = rgb_from_style(rgb, a->a.s.style);
+		break;
+	case at_idx:
+		rc = rgb_from_idx(rgb, a->a.i.fg_color,
+		    a->a.i.bg_color, a->a.i.flags);
+		break;
+	case at_rgb:
+		*rgb = a->a.r;
+		rc = EOK;
+		break;
+	}
+
+	return rc;
+}
+
+static int fb_set_style(viewport_t *vport, ipcarg_t style)
+{
+	return rgb_from_style(&vport->attr, (int) style);
+}
+
+static int fb_set_color(viewport_t *vport, ipcarg_t fg_color,
+    ipcarg_t bg_color, ipcarg_t flags)
+{
+	return rgb_from_idx(&vport->attr, fg_color, bg_color, flags);
+}
+
+/** Function for handling connections to FB
+ *
+ */
+static void fb_client_connection(ipc_callid_t iid, ipc_call_t *icall)
+{
+	unsigned int vp = 0;
+	viewport_t *vport = &viewports[vp];
+	
+	if (client_connected) {
+		ipc_answer_0(iid, ELIMIT);
+		return;
+	}
+	
+	/* Accept connection */
+	client_connected = true;
+	ipc_answer_0(iid, EOK);
+	
+	while (true) {
+		ipc_callid_t callid;
+		ipc_call_t call;
+		int retval;
+		unsigned int i;
+		int scroll;
+		wchar_t ch;
+		unsigned int col, row;
+		
+		if ((vport->cursor_active) || (anims_enabled))
+			callid = async_get_call_timeout(&call, 250000);
+		else
+			callid = async_get_call(&call);
+		
+		mouse_hide();
+		if (!callid) {
+			cursor_blink(vport);
+			anims_tick();
+			mouse_show();
+			continue;
+		}
+		
+		if (shm_handle(callid, &call, vp))
+			continue;
+		
+		if (pixmap_handle(callid, &call, vp))
+			continue;
+		
+		if (anim_handle(callid, &call, vp))
+			continue;
+		
+		switch (IPC_GET_METHOD(call)) {
+		case IPC_M_PHONE_HUNGUP:
+			client_connected = false;
+			
+			/* Cleanup other viewports */
+			for (i = 1; i < MAX_VIEWPORTS; i++)
+				vport->initialized = false;
+			
+			/* Exit thread */
+			return;
+		
+		case FB_PUTCHAR:
+			ch = IPC_GET_ARG1(call);
+			col = IPC_GET_ARG2(call);
+			row = IPC_GET_ARG3(call);
+			
+			if ((col >= vport->cols) || (row >= vport->rows)) {
+				retval = EINVAL;
+				break;
+			}
+			ipc_answer_0(callid, EOK);
+			
+			draw_char(vport, ch, col, row);
+			
+			/* Message already answered */
+			continue;
+		case FB_CLEAR:
+			vport_clear(vport);
+			cursor_show(vport);
+			retval = EOK;
+			break;
+		case FB_CURSOR_GOTO:
+			col = IPC_GET_ARG1(call);
+			row = IPC_GET_ARG2(call);
+			
+			if ((col >= vport->cols) || (row >= vport->rows)) {
+				retval = EINVAL;
+				break;
+			}
+			retval = EOK;
+			
+			cursor_hide(vport);
+			vport->cur_col = col;
+			vport->cur_row = row;
+			cursor_show(vport);
+			break;
+		case FB_CURSOR_VISIBILITY:
+			cursor_hide(vport);
+			vport->cursor_active = IPC_GET_ARG1(call);
+			cursor_show(vport);
+			retval = EOK;
+			break;
+		case FB_GET_CSIZE:
+			ipc_answer_2(callid, EOK, vport->cols, vport->rows);
+			continue;
+		case FB_GET_COLOR_CAP:
+			ipc_answer_1(callid, EOK, FB_CCAP_RGB);
+			continue;
+		case FB_SCROLL:
+			scroll = IPC_GET_ARG1(call);
+			if ((scroll > (int) vport->rows) || (scroll < (-(int) vport->rows))) {
+				retval = EINVAL;
+				break;
+			}
+			cursor_hide(vport);
+			vport_scroll(vport, scroll);
+			cursor_show(vport);
+			retval = EOK;
+			break;
+		case FB_VIEWPORT_SWITCH:
+			i = IPC_GET_ARG1(call);
+			if (i >= MAX_VIEWPORTS) {
+				retval = EINVAL;
+				break;
+			}
+			if (!viewports[i].initialized) {
+				retval = EADDRNOTAVAIL;
+				break;
+			}
+			cursor_hide(vport);
+			vp = i;
+			vport = &viewports[vp];
+			cursor_show(vport);
+			retval = EOK;
+			break;
+		case FB_VIEWPORT_CREATE:
+			retval = vport_create(IPC_GET_ARG1(call) >> 16,
+			    IPC_GET_ARG1(call) & 0xffff,
+			    IPC_GET_ARG2(call) >> 16,
+			    IPC_GET_ARG2(call) & 0xffff);
+			break;
+		case FB_VIEWPORT_DELETE:
+			i = IPC_GET_ARG1(call);
+			if (i >= MAX_VIEWPORTS) {
+				retval = EINVAL;
+				break;
+			}
+			if (!viewports[i].initialized) {
+				retval = EADDRNOTAVAIL;
+				break;
+			}
+			viewports[i].initialized = false;
+			if (viewports[i].bgpixel)
+				free(viewports[i].bgpixel);
+			if (viewports[i].backbuf)
+				free(viewports[i].backbuf);
+			retval = EOK;
+			break;
+		case FB_SET_STYLE:
+			retval = fb_set_style(vport, IPC_GET_ARG1(call));
+			break;
+		case FB_SET_COLOR:
+			retval = fb_set_color(vport, IPC_GET_ARG1(call),
+			    IPC_GET_ARG2(call), IPC_GET_ARG3(call));
+			break;
+		case FB_SET_RGB_COLOR:
+			vport->attr.fg_color = IPC_GET_ARG1(call);
+			vport->attr.bg_color = IPC_GET_ARG2(call);
+			retval = EOK;
+			break;
+		case FB_GET_RESOLUTION:
+			ipc_answer_2(callid, EOK, screen.xres, screen.yres);
+			continue;
+		case FB_POINTER_MOVE:
+			pointer_enabled = true;
+			mouse_move(IPC_GET_ARG1(call), IPC_GET_ARG2(call));
+			retval = EOK;
+			break;
+		case FB_SCREEN_YIELD:
+		case FB_SCREEN_RECLAIM:
+			retval = EOK;
+			break;
+		default:
+			retval = ENOENT;
+		}
+		ipc_answer_0(callid, retval);
+	}
+}
+
+/** Initialization of framebuffer
+ *
+ */
+int fb_init(void)
+{
+	async_set_client_connection(fb_client_connection);
+	
+	void *fb_ph_addr = (void *) sysinfo_value("fb.address.physical");
+	unsigned int fb_offset = sysinfo_value("fb.offset");
+	unsigned int fb_width = sysinfo_value("fb.width");
+	unsigned int fb_height = sysinfo_value("fb.height");
+	unsigned int fb_scanline = sysinfo_value("fb.scanline");
+	unsigned int fb_visual = sysinfo_value("fb.visual");
+
+	unsigned int fbsize = fb_scanline * fb_height;
+	void *fb_addr = as_get_mappable_page(fbsize);
+
+	if (physmem_map(fb_ph_addr + fb_offset, fb_addr,
+	    ALIGN_UP(fbsize, PAGE_SIZE) >> PAGE_WIDTH, AS_AREA_READ | AS_AREA_WRITE) != 0)
+		return -1;
+
+	if (screen_init(fb_addr, fb_width, fb_height, fb_scanline, fb_visual))
+		return 0;
+
+	return -1;
+}
+
+/**
+ * @}
+ */
Index: uspace/srv/hid/fb/fb.h
===================================================================
--- uspace/srv/hid/fb/fb.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/fb/fb.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2006 Ondrej Palkovsky
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup fb
+ * @ingroup fbs
+ * @{
+ */
+/** @file
+ */
+
+#ifndef FB_FB_H_
+#define FB_FB_H_
+
+#include <stdint.h>
+
+typedef void (* putpixel_cb_t)(void *, unsigned int, unsigned int, uint32_t);
+
+extern int fb_init(void);
+
+#endif
+
+/** @}
+ */
Index: uspace/srv/hid/fb/font-8x16.c
===================================================================
--- uspace/srv/hid/fb/font-8x16.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/fb/font-8x16.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,3271 @@
+/*
+ * Copyright (c) 2000 Dmitry Bolkhovityanov
+ * Copyright (c) 2009 Martin Decky
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup genarch
+ * @{
+ */
+/** @file
+ */
+
+#include <sys/types.h>
+#include "font-8x16.h"
+
+/** Convert character to font glyph index
+ *
+ * The font does not cover all Unicode characters.
+ * This function converts the character to an appropriate
+ * glyph in the font or returns an index to the question
+ * mark glyph if no specific glyph exists.
+ */
+uint16_t fb_font_glyph(const wchar_t ch)
+{
+	if (ch == 0x0000)
+		return 0;
+	
+	if ((ch >= 0x0020) && (ch <= 0x007f))
+		return (ch - 32);
+	
+	if ((ch >= 0x00a0) && (ch <= 0x021f))
+		return (ch - 64);
+	
+	if ((ch >= 0x0222) && (ch <= 0x0233))
+		return (ch - 66);
+	
+	if ((ch >= 0x0250) && (ch <= 0x02ad))
+		return (ch - 94);
+	
+	if ((ch >= 0x02b0) && (ch <= 0x02cf))
+		return (ch - 96);
+	
+	if ((ch >= 0x02d8) && (ch <= 0x02dd))
+		return (ch - 104);
+	
+	if (ch == 0x02ee)
+		return 630;
+	
+	if ((ch >= 0x0300) && (ch <= 0x0301))
+		return (ch - 137);
+	
+	if (ch == 0x0303)
+		return 633;
+	
+	if (ch == 0x0309)
+		return 634;
+	
+	if ((ch >= 0x0312) && (ch <= 0x0314))
+		return (ch - 151);
+	
+	if (ch == 0x0323)
+		return 638;
+	
+	if ((ch >= 0x0340) && (ch <= 0x0341))
+		return (ch - 193);
+	
+	if ((ch >= 0x0374) && (ch <= 0x0375))
+		return (ch - 243);
+	
+	if (ch == 0x037a)
+		return 643;
+	
+	if (ch == 0x037e)
+		return 644;
+	
+	if ((ch >= 0x0384) && (ch <= 0x038a))
+		return (ch - 255);
+	
+	if (ch == 0x038c)
+		return 652;
+	
+	if ((ch >= 0x038e) && (ch <= 0x03a1))
+		return (ch - 257);
+	
+	if ((ch >= 0x03a3) && (ch <= 0x03ce))
+		return (ch - 258);
+	
+	if ((ch >= 0x03d0) && (ch <= 0x03d7))
+		return (ch - 259);
+	
+	if ((ch >= 0x03da) && (ch <= 0x03f3))
+		return (ch - 261);
+	
+	if ((ch >= 0x0400) && (ch <= 0x0486))
+		return (ch - 273);
+	
+	if ((ch >= 0x0488) && (ch <= 0x04ce))
+		return (ch - 274);
+	
+	if ((ch >= 0x04d0) && (ch <= 0x04f5))
+		return (ch - 275);
+	
+	if ((ch >= 0x04f8) && (ch <= 0x04f9))
+		return (ch - 277);
+	
+	if ((ch >= 0x0500) && (ch <= 0x050f))
+		return (ch - 283);
+	
+	if ((ch >= 0x0530) && (ch <= 0x0556))
+		return (ch - 315);
+	
+	if ((ch >= 0x0559) && (ch <= 0x055f))
+		return (ch - 317);
+	
+	if ((ch >= 0x0561) && (ch <= 0x0587))
+		return (ch - 318);
+	
+	if ((ch >= 0x0589) && (ch <= 0x058a))
+		return (ch - 319);
+	
+	if ((ch >= 0x0591) && (ch <= 0x05a1))
+		return (ch - 325);
+	
+	if ((ch >= 0x05a3) && (ch <= 0x05b9))
+		return (ch - 326);
+	
+	if ((ch >= 0x05bb) && (ch <= 0x05c4))
+		return (ch - 327);
+	
+	if ((ch >= 0x05d0) && (ch <= 0x05ea))
+		return (ch - 338);
+	
+	if ((ch >= 0x05f0) && (ch <= 0x05f4))
+		return (ch - 343);
+	
+	if (ch == 0x060c)
+		return 1182;
+	
+	if (ch == 0x061b)
+		return 1183;
+	
+	if (ch == 0x061f)
+		return 1184;
+	
+	if ((ch >= 0x0621) && (ch <= 0x063a))
+		return (ch - 384);
+	
+	if ((ch >= 0x0640) && (ch <= 0x0655))
+		return (ch - 389);
+	
+	if ((ch >= 0x0660) && (ch <= 0x066d))
+		return (ch - 399);
+	
+	if ((ch >= 0x0670) && (ch <= 0x06ed))
+		return (ch - 401);
+	
+	if ((ch >= 0x06f0) && (ch <= 0x06fe))
+		return (ch - 403);
+	
+	if (ch == 0x10d3)
+		return 1388;
+	
+	if (ch == 0x10d7)
+		return 1389;
+	
+	if (ch == 0x10da)
+		return 1390;
+	
+	if (ch == 0x10dd)
+		return 1391;
+	
+	if (ch == 0x10e6)
+		return 1392;
+	
+	if ((ch >= 0x1e00) && (ch <= 0x1e9b))
+		return (ch - 6287);
+	
+	if ((ch >= 0x1ea0) && (ch <= 0x1ef9))
+		return (ch - 6291);
+	
+	if ((ch >= 0x1f00) && (ch <= 0x1f07))
+		return (ch - 6297);
+	
+	if ((ch >= 0x2000) && (ch <= 0x2027))
+		return (ch - 6545);
+	
+	if ((ch >= 0x2030) && (ch <= 0x2046))
+		return (ch - 6553);
+	
+	if ((ch >= 0x2048) && (ch <= 0x204d))
+		return (ch - 6554);
+	
+	if (ch == 0x2070)
+		return 1716;
+	
+	if ((ch >= 0x2074) && (ch <= 0x208f))
+		return (ch - 6591);
+	
+	if ((ch >= 0x20a0) && (ch <= 0x20af))
+		return (ch - 6607);
+	
+	if ((ch >= 0x2100) && (ch <= 0x213a))
+		return (ch - 6687);
+	
+	if ((ch >= 0x2153) && (ch <= 0x2183))
+		return (ch - 6711);
+	
+	if ((ch >= 0x2190) && (ch <= 0x21f3))
+		return (ch - 6723);
+	
+	if ((ch >= 0x2200) && (ch <= 0x22f1))
+		return (ch - 6735);
+	
+	if (ch == 0x2300)
+		return 2211;
+	
+	if (ch == 0x2302)
+		return 2212;
+	
+	if ((ch >= 0x2308) && (ch <= 0x230b))
+		return (ch - 6755);
+	
+	if (ch == 0x2310)
+		return 2217;
+	
+	if (ch == 0x2318)
+		return 2218;
+	
+	if ((ch >= 0x231a) && (ch <= 0x231b))
+		return (ch - 6767);
+	
+	if ((ch >= 0x2320) && (ch <= 0x2321))
+		return (ch - 6771);
+	
+	if ((ch >= 0x2329) && (ch <= 0x232a))
+		return (ch - 6778);
+	
+	if ((ch >= 0x239b) && (ch <= 0x23bd))
+		return (ch - 6890);
+	
+	if (ch == 0x23ce)
+		return 2260;
+	
+	if ((ch >= 0x2409) && (ch <= 0x240d))
+		return (ch - 6964);
+	
+	if ((ch >= 0x2423) && (ch <= 0x2424))
+		return (ch - 6985);
+	
+	if (ch == 0x2426)
+		return 2268;
+	
+	if ((ch >= 0x2500) && (ch <= 0x2595))
+		return (ch - 7203);
+	
+	if ((ch >= 0x25a0) && (ch <= 0x25f7))
+		return (ch - 7213);
+	
+	if ((ch >= 0x2600) && (ch <= 0x2602))
+		return (ch - 7221);
+	
+	if ((ch >= 0x2605) && (ch <= 0x260d))
+		return (ch - 7223);
+	
+	if ((ch >= 0x2610) && (ch <= 0x2613))
+		return (ch - 7225);
+	
+	if (ch == 0x2620)
+		return 2523;
+	
+	if (ch == 0x2622)
+		return 2524;
+	
+	if (ch == 0x2626)
+		return 2525;
+	
+	if ((ch >= 0x2628) && (ch <= 0x262b))
+		return (ch - 7242);
+	
+	if ((ch >= 0x262e) && (ch <= 0x2637))
+		return (ch - 7244);
+	
+	if ((ch >= 0x2639) && (ch <= 0x2653))
+		return (ch - 7245);
+	
+	if ((ch >= 0x2660) && (ch <= 0x2667))
+		return (ch - 7257);
+	
+	if ((ch >= 0x2669) && (ch <= 0x266f))
+		return (ch - 7258);
+	
+	if ((ch >= 0xfb00) && (ch <= 0xfb05))
+		return (ch - 61674);
+	
+	if ((ch >= 0xfb50) && (ch <= 0xfbb1))
+		return (ch - 61748);
+	
+	if ((ch >= 0xfbd3) && (ch <= 0xfbe9))
+		return (ch - 61781);
+	
+	if ((ch >= 0xfbfc) && (ch <= 0xfbff))
+		return (ch - 61799);
+	
+	if ((ch >= 0xfc5b) && (ch <= 0xfc63))
+		return (ch - 61890);
+	
+	if (ch == 0xfc90)
+		return 2722;
+	
+	if ((ch >= 0xfcf2) && (ch <= 0xfcf4))
+		return (ch - 62031);
+	
+	if ((ch >= 0xfd3c) && (ch <= 0xfd3f))
+		return (ch - 62102);
+	
+	if (ch == 0xfdf2)
+		return 2730;
+	
+	if ((ch >= 0xfe50) && (ch <= 0xfe52))
+		return (ch - 62373);
+	
+	if ((ch >= 0xfe54) && (ch <= 0xfe66))
+		return (ch - 62374);
+	
+	if ((ch >= 0xfe68) && (ch <= 0xfe6b))
+		return (ch - 62375);
+	
+	if ((ch >= 0xfe70) && (ch <= 0xfe72))
+		return (ch - 62379);
+	
+	if (ch == 0xfe74)
+		return 2760;
+	
+	if ((ch >= 0xfe76) && (ch <= 0xfefc))
+		return (ch - 62381);
+	
+	if (ch == 0xfeff)
+		return 2896;
+	
+	return 2898;
+}
+
+uint8_t fb_font[FONT_GLYPHS][FONT_SCANLINES] = {
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x66, 0x66, 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x18, 0x7c, 0xc6, 0xc2, 0xc0, 0x7c, 0x06, 0x06, 0x86, 0xc6, 0x7c, 0x18, 0x18, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xc2, 0xc6, 0x0c, 0x18, 0x30, 0x60, 0xc6, 0x86, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x76, 0xdc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x30, 0x30, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x3c, 0xff, 0x3c, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xd6, 0xd6, 0xc6, 0xc6, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x38, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0x3c, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x1c, 0x3c, 0x6c, 0xcc, 0xfe, 0x0c, 0x0c, 0x0c, 0x1e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xfc, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x60, 0xc0, 0xc0, 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0xc6, 0x06, 0x06, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x06, 0x0c, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x0c, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xde, 0xde, 0xde, 0xdc, 0xc0, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x66, 0x66, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xde, 0xc6, 0xc6, 0x66, 0x3a, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0xde, 0x7c, 0x0c, 0x0e, 0x00, 0x00},
+	{0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c, 0x06, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0xee, 0x6c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0x6c, 0x7c, 0x38, 0x38, 0x7c, 0x6c, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0xc6, 0x86, 0x0c, 0x18, 0x30, 0x60, 0xc2, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00},
+	{0x30, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x78, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x6c, 0x64, 0x60, 0xf0, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78, 0x00},
+	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x06, 0x06, 0x00, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c, 0x00},
+	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0xfe, 0xd6, 0xd6, 0xd6, 0xd6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x0c, 0x1e, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x6c, 0x38, 0x38, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xcc, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0e, 0x18, 0x18, 0x18, 0x70, 0x18, 0x18, 0x18, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x70, 0x18, 0x18, 0x18, 0x0e, 0x18, 0x18, 0x18, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x18, 0x18, 0x3c, 0x66, 0x60, 0x60, 0x60, 0x66, 0x3c, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x38, 0x6c, 0x64, 0x60, 0xf0, 0x60, 0x60, 0x60, 0x60, 0xe6, 0xfc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x66, 0x3c, 0x66, 0x66, 0x66, 0x3c, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18, 0x7e, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x7c, 0xc6, 0x60, 0x38, 0x6c, 0xc6, 0xc6, 0x6c, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x42, 0x99, 0xa5, 0xa1, 0xa1, 0xa5, 0x99, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x3c, 0x6c, 0x6c, 0x3e, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x6c, 0xd8, 0x6c, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x44, 0xba, 0xb2, 0xaa, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x70, 0xd8, 0x30, 0x60, 0xc8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x70, 0xd8, 0x30, 0x18, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xf6, 0xc0, 0xc0, 0xc0, 0x00},
+	{0x00, 0x00, 0x7f, 0xdb, 0xdb, 0xdb, 0x7b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0c, 0x38, 0x00},
+	{0x00, 0x30, 0x70, 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x6c, 0x36, 0x6c, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0xc0, 0xc0, 0xc2, 0xc6, 0xcc, 0x18, 0x30, 0x66, 0xce, 0x9e, 0x3e, 0x06, 0x06, 0x00, 0x00},
+	{0x00, 0xc0, 0xc0, 0xc2, 0xc6, 0xcc, 0x18, 0x30, 0x60, 0xdc, 0x86, 0x0c, 0x18, 0x3e, 0x00, 0x00},
+	{0x00, 0xe0, 0x30, 0x62, 0x36, 0xec, 0x18, 0x30, 0x66, 0xce, 0x9e, 0x3e, 0x06, 0x06, 0x00, 0x00},
+	{0x00, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x60, 0xc0, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x60, 0x30, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x18, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x38, 0x6c, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x76, 0xdc, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x6c, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x38, 0x6c, 0x38, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3e, 0x6c, 0xcc, 0xcc, 0xfe, 0xcc, 0xcc, 0xcc, 0xcc, 0xce, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x18, 0x0c, 0x38, 0x00},
+	{0x30, 0x18, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x18, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x38, 0x44, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x6c, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x30, 0x18, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x18, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x3c, 0x42, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x66, 0x66, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0xf6, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00, 0x00, 0x00, 0x00},
+	{0x76, 0xdc, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x60, 0x30, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x18, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x38, 0x44, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x76, 0xdc, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x3c, 0x18, 0x3c, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7a, 0xc4, 0xce, 0xce, 0xd6, 0xd6, 0xe6, 0xe6, 0x46, 0xbc, 0x00, 0x00, 0x00, 0x00},
+	{0x60, 0x30, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x18, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x38, 0x44, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x6c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x18, 0x00, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xf0, 0x60, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x6c, 0x66, 0x66, 0x66, 0x66, 0xec, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x60, 0x30, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x30, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x10, 0x38, 0x6c, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x76, 0xdc, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x38, 0x6c, 0x38, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x76, 0x36, 0x7e, 0xd8, 0xd8, 0x6e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x18, 0x0c, 0x38, 0x00},
+	{0x00, 0x00, 0x60, 0x30, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x18, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x30, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x10, 0x38, 0x6c, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x66, 0x66, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x76, 0x1c, 0x3c, 0x06, 0x7e, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x76, 0xdc, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x60, 0x30, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x18, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x76, 0xdc, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x7e, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0xc4, 0xce, 0xd6, 0xe6, 0x46, 0xbc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x60, 0x30, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x30, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x10, 0x38, 0x6c, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xcc, 0xcc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x18, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00},
+	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0, 0x00},
+	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00},
+	{0x00, 0x7c, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x7c, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x38, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x38, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x0c, 0x18, 0x0e, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x0c, 0x18, 0x0e, 0x00},
+	{0x0c, 0x18, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x18, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x38, 0x44, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x18, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x30, 0x30, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x38, 0x10, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x6c, 0x38, 0x10, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x38, 0x10, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x38, 0x10, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0xf6, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x3e, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x7c, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x7c, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x38, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x38, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x18, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x30, 0x30, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x18, 0x30, 0x1c, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x30, 0x60, 0x38, 0x00},
+	{0x6c, 0x38, 0x10, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x6c, 0x38, 0x10, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x38, 0x44, 0x3c, 0x66, 0xc2, 0xc0, 0xde, 0xc6, 0xc6, 0x66, 0x3a, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x10, 0x38, 0x6c, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78, 0x00},
+	{0x6c, 0x38, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xde, 0xc6, 0xc6, 0x66, 0x3a, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x38, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78, 0x00},
+	{0x18, 0x18, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xde, 0xc6, 0xc6, 0x66, 0x3a, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x30, 0x30, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xde, 0xc6, 0xc6, 0x66, 0x3a, 0x00, 0x18, 0x18, 0x30},
+	{0x00, 0x18, 0x30, 0x30, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78, 0x00},
+	{0x10, 0x38, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x38, 0x44, 0xe0, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x66, 0xff, 0x66, 0x66, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x60, 0xf8, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x76, 0xdc, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x76, 0xdc, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x7e, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x7e, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x66, 0x3c, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x66, 0x3c, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x18, 0x30, 0x1c, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x18, 0x30, 0x1c, 0x00},
+	{0x18, 0x18, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xf7, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x7b, 0x7b, 0xee, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x66, 0x66, 0x00, 0xee, 0x66, 0x66, 0x66, 0x66, 0x66, 0xf6, 0x06, 0x66, 0x3c, 0x00},
+	{0x08, 0x1c, 0x22, 0x1e, 0x0c, 0x0c, 0x0c, 0x0c, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x04, 0x0e, 0x1b, 0x00, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c, 0x00},
+	{0x00, 0x00, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x18, 0x18, 0x30},
+	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x18, 0x18, 0x30},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x30, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x18, 0x18, 0x30},
+	{0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x18, 0x18, 0x30},
+	{0x6c, 0x38, 0x10, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x38, 0x10, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x66, 0x66, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x70, 0x30, 0x30, 0x30, 0x36, 0x36, 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x78, 0xe0, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x1e, 0x78, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x18, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x18, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x18, 0x18, 0x30},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x18, 0x18, 0x30},
+	{0x6c, 0x38, 0x10, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x6c, 0x38, 0x10, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x60, 0x60, 0xc0, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0xc6, 0x06, 0x06, 0x1c, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x06, 0x06, 0x1c, 0x00},
+	{0x00, 0x7c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x7c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x38, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x38, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x66, 0xcc, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x66, 0xcc, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6e, 0xd8, 0xd8, 0xd8, 0xde, 0xd8, 0xd8, 0xd8, 0xd8, 0x6e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0xd6, 0xd6, 0xde, 0xd8, 0xd8, 0x6e, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x18, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x18, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x18, 0x18, 0x30},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x18, 0x18, 0x30},
+	{0x6c, 0x38, 0x10, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x6c, 0x38, 0x10, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x18, 0x00, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x18, 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x38, 0x44, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0xc6, 0x7c, 0x18, 0x0c, 0x38, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0x7c, 0x18, 0x0c, 0x38, 0x00},
+	{0x6c, 0x38, 0x10, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x6c, 0x38, 0x10, 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x18, 0x0c, 0x38, 0x00},
+	{0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x18, 0x0c, 0x38, 0x00},
+	{0x6c, 0x38, 0x10, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x38, 0x10, 0x10, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x3c, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0xfc, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00},
+	{0x76, 0xdc, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x76, 0xdc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x7c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x78, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x38, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xcc, 0x78, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x38, 0x6c, 0x38, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x38, 0x6c, 0x38, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x66, 0xcc, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x66, 0xcc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x30, 0x60, 0x38, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x30, 0x60, 0x38, 0x00},
+	{0x10, 0x38, 0x44, 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0xee, 0x6c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x10, 0x38, 0x6c, 0x00, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x38, 0x44, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x10, 0x38, 0x6c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00},
+	{0x66, 0x66, 0x00, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x18, 0x00, 0xfe, 0xc6, 0x8c, 0x18, 0x30, 0x60, 0xc2, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x18, 0x00, 0xfe, 0xcc, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x18, 0x00, 0xfe, 0xc6, 0x8c, 0x18, 0x30, 0x60, 0xc2, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x00, 0xfe, 0xcc, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x38, 0x10, 0xfe, 0xc6, 0x8c, 0x18, 0x30, 0x60, 0xc2, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x6c, 0x38, 0x10, 0x00, 0xfe, 0xcc, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x6c, 0x64, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x60, 0xf8, 0x60, 0x78, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7e, 0xb3, 0xb3, 0x33, 0x3e, 0x33, 0x33, 0x33, 0x33, 0x7e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfc, 0x64, 0x60, 0x60, 0x7c, 0x66, 0x66, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7e, 0x62, 0x60, 0x78, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xe6, 0xe6, 0x66, 0x7c, 0x66, 0x66, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x60, 0xe0, 0xe0, 0x78, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x78, 0xcc, 0x86, 0x06, 0x06, 0x06, 0x06, 0x86, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x03, 0x3e, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x03, 0x7e, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0xf6, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xb6, 0xb3, 0x33, 0x33, 0x33, 0x33, 0x33, 0x36, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7e, 0x4c, 0x0c, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0xcc, 0x7e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0x4c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x30, 0x18, 0xcc, 0x78, 0x00},
+	{0x00, 0x00, 0xfe, 0xcc, 0x8c, 0x2c, 0x3c, 0x2c, 0x0c, 0x8c, 0xcc, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0x06, 0xfe, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0xc2, 0xc0, 0x78, 0xc0, 0xc0, 0xc2, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xc0, 0x00},
+	{0x00, 0x00, 0x1c, 0x36, 0x32, 0x30, 0x78, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xe0, 0x00},
+	{0x00, 0x03, 0x3e, 0x66, 0xc2, 0xc0, 0xc0, 0xde, 0xc6, 0xc6, 0x66, 0x3a, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0x6c, 0x6c, 0x6c, 0x38, 0x38, 0x10, 0x38, 0x6c, 0x38, 0x00, 0x00},
+	{0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xf3, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xce, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xe6, 0x6d, 0x6c, 0x78, 0x70, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x6c, 0x60, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc8, 0x38, 0x70, 0xd0, 0x38, 0x38, 0x6c, 0x64, 0xc6, 0xc2, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xfe, 0xec, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x66, 0x66, 0x76, 0x7e, 0x7e, 0x6e, 0x66, 0x66, 0x66, 0x66, 0x60, 0x60, 0xc0, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x06, 0x06, 0x06, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x03, 0x03, 0x7a, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x03, 0x03, 0x06, 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x73, 0xdf, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0x73, 0x03, 0x03, 0x03, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0xdf, 0xdb, 0xdb, 0xdb, 0xdb, 0x73, 0x03, 0x03, 0x03, 0x00},
+	{0x00, 0x00, 0x7e, 0xb3, 0xb3, 0x33, 0x3e, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x6c, 0x60, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0, 0x00},
+	{0x00, 0x00, 0xf0, 0x60, 0x7c, 0x66, 0x66, 0x7c, 0x78, 0x6c, 0x6c, 0xe6, 0x06, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x0c, 0x38, 0x60, 0xc0, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x0c, 0x38, 0x60, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0xc6, 0x62, 0x30, 0x18, 0x18, 0x30, 0x62, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x70, 0xd8, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1b, 0x0e, 0x00},
+	{0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x0c, 0x6c, 0x38, 0x00},
+	{0x00, 0x00, 0x7e, 0xfe, 0x9a, 0x58, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x1c, 0x36, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0e, 0x00},
+	{0x03, 0x03, 0xce, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x03, 0x03, 0x06, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xee, 0x6c, 0x6c, 0x6c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xcc, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x63, 0xb3, 0xb3, 0x33, 0x1e, 0x0c, 0x0c, 0x0c, 0x0c, 0x1e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x06, 0x0d, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x18, 0xf0, 0x00},
+	{0x00, 0x00, 0xfe, 0xc6, 0x86, 0x0c, 0x7e, 0x30, 0x60, 0xc2, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xcc, 0x18, 0xfc, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0x06, 0x0c, 0x18, 0x30, 0x7c, 0x06, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0xc0, 0x60, 0x30, 0x18, 0x7c, 0xc0, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc0, 0x60, 0x30, 0x78, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0x0c, 0x18, 0x3c, 0x06, 0x7c, 0xc0, 0xc6, 0x7c, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0x06, 0x0c, 0x7e, 0x30, 0x60, 0xc0, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0x60, 0x60, 0x78, 0x0c, 0x06, 0x06, 0x06, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x60, 0x78, 0x0c, 0x06, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x18, 0x4c, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x6c, 0x78, 0x70, 0x60, 0x60, 0xf0, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x18, 0x7e, 0x18, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x1b, 0x0e, 0x04, 0xf7, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xdc, 0xdc, 0xf7, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xf5, 0xda, 0xd8, 0xdf, 0xd9, 0xda, 0xda, 0xda, 0xdc, 0xf7, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3d, 0x1a, 0x18, 0x7f, 0xd9, 0xda, 0xda, 0xda, 0xdc, 0x6f, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc7, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xcb, 0xf6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xf3, 0x63, 0x60, 0x67, 0x63, 0x63, 0x63, 0x67, 0x6f, 0xff, 0x03, 0x1b, 0x0e, 0x00},
+	{0x00, 0x00, 0xe3, 0x63, 0x60, 0x67, 0x63, 0x63, 0x63, 0x63, 0x63, 0xf3, 0x03, 0x33, 0x1e, 0x00},
+	{0x00, 0x00, 0xdb, 0xdb, 0xfb, 0xfb, 0xfb, 0xdb, 0xdb, 0xdb, 0xdb, 0xde, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xdb, 0xdb, 0xf8, 0xff, 0xfb, 0xfb, 0xdb, 0xdb, 0xdb, 0xdb, 0x03, 0x33, 0x1e, 0x00},
+	{0x00, 0x00, 0x03, 0x03, 0x00, 0xb7, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0x03, 0x33, 0x1e, 0x00},
+	{0x6c, 0x38, 0x10, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x6c, 0x38, 0x10, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x38, 0x10, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x6c, 0x38, 0x10, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x38, 0x10, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x6c, 0x38, 0x10, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x38, 0x10, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x6c, 0x38, 0x10, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x7c, 0x00, 0x6c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x78, 0x00, 0xcc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x08, 0x10, 0x6c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x30, 0x00, 0xcc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x28, 0x10, 0x6c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x78, 0x30, 0x00, 0xcc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x20, 0x10, 0x6c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x60, 0x30, 0x00, 0xcc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0xfe, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x7c, 0x00, 0x6c, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x7c, 0x00, 0x6c, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x7c, 0x30, 0x30, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x7c, 0x00, 0x30, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x7c, 0x00, 0x3e, 0x6c, 0xcc, 0xcc, 0xfe, 0xcc, 0xcc, 0xcc, 0xce, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x7c, 0x00, 0xcc, 0x76, 0x36, 0x7e, 0xd8, 0xd8, 0x6e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xde, 0xc6, 0xdf, 0x66, 0x3a, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x3e, 0xcc, 0x78, 0x00},
+	{0x6c, 0x38, 0x10, 0x3c, 0x66, 0xc2, 0xc0, 0xde, 0xc6, 0xc6, 0x66, 0x3a, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x6c, 0x38, 0x10, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78, 0x00},
+	{0x6c, 0x38, 0x10, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x38, 0x10, 0xe0, 0x60, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x30, 0x60, 0x38, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x30, 0x60, 0x38, 0x00},
+	{0x00, 0x7c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x30, 0x60, 0x38, 0x00},
+	{0x00, 0x00, 0x00, 0x7c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x30, 0x60, 0x38, 0x00},
+	{0x6c, 0x38, 0x10, 0xfe, 0x0c, 0x18, 0x30, 0x7c, 0x06, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00},
+	{0x00, 0x6c, 0x38, 0x10, 0x00, 0xfe, 0x06, 0x0c, 0x18, 0x3c, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00},
+	{0x00, 0x1b, 0x0e, 0x04, 0x00, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c, 0x00},
+	{0x00, 0x00, 0xf7, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xdc, 0xdc, 0xf7, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xf0, 0xd8, 0xd8, 0xdf, 0xd9, 0xda, 0xda, 0xda, 0xdc, 0xf7, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x18, 0x18, 0x7f, 0xd9, 0xda, 0xda, 0xda, 0xdc, 0x6f, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x18, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xde, 0xc6, 0xc6, 0x66, 0x3a, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x30, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78, 0x00},
+	{0x00, 0x00, 0xd8, 0xd8, 0xd8, 0xdb, 0xfb, 0xdb, 0xdb, 0xdb, 0xdb, 0xce, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x66, 0x6c, 0x78, 0x70, 0x60, 0x60, 0x60, 0x60, 0xe0, 0x00},
+	{0x60, 0x30, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x30, 0x18, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x18, 0x38, 0x6c, 0x38, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x18, 0x38, 0x6c, 0x38, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x18, 0x00, 0x3e, 0x6c, 0xcc, 0xcc, 0xfe, 0xcc, 0xcc, 0xcc, 0xce, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x18, 0x00, 0xcc, 0x76, 0x36, 0x7e, 0xd8, 0xd8, 0x6e, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x18, 0x00, 0x7a, 0xc4, 0xce, 0xce, 0xd6, 0xe6, 0xe6, 0x46, 0xbc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x18, 0x00, 0x7a, 0xc4, 0xce, 0xd6, 0xe6, 0x46, 0xbc, 0x00, 0x00, 0x00, 0x00},
+	{0xcc, 0x66, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xcc, 0x66, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x38, 0x6c, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x6c, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0xcc, 0x66, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xcc, 0x66, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x38, 0x6c, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0xcc, 0x66, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xcc, 0x66, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x3c, 0x66, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0xcc, 0x66, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xcc, 0x66, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0xcc, 0x66, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xcc, 0x66, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
+	{0x38, 0x6c, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x6c, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
+	{0xcc, 0x66, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xcc, 0x66, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x38, 0x6c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x78, 0xcc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c, 0x06, 0xc6, 0xc6, 0x7c, 0x00, 0x18, 0x18, 0x30},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x18, 0x18, 0x30},
+	{0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x18, 0x18, 0x30},
+	{0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x18, 0x18, 0x30},
+	{0x00, 0x00, 0x7c, 0xc6, 0x86, 0x06, 0x1c, 0x74, 0x06, 0x06, 0x06, 0x06, 0x1c, 0xf0, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x0e, 0x3c, 0x06, 0x06, 0x1c, 0xf0, 0x00, 0x00},
+	{0x6c, 0x38, 0x10, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x38, 0x10, 0xe0, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0xc6, 0xc6, 0xc6, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x24, 0x66, 0x66, 0x66, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0xc6, 0x86, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0xc0, 0xfc, 0x06, 0x0c, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xcc, 0x18, 0x30, 0x60, 0xc0, 0xfc, 0x06, 0x0c, 0x00, 0x00},
+	{0x30, 0x30, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x30, 0x30, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x62, 0x66, 0xfe, 0x18, 0x0c, 0x38, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x18, 0x0c, 0x38, 0x00},
+	{0x7c, 0x00, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x7c, 0x00, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x7c, 0x00, 0x72, 0x9c, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x7c, 0x00, 0x76, 0xdc, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x30, 0x30, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x30, 0x30, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x7c, 0x00, 0x30, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x7c, 0x00, 0x30, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x3c, 0x00, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x7c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x5c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x6c, 0x60, 0x78, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xdc, 0xe6, 0x7c, 0x80, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x0d, 0x06, 0x00},
+	{0x00, 0x00, 0x06, 0x0d, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0xfe, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x6c, 0x8e, 0x16, 0x26, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0x78, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x3c, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0xcd, 0x0d, 0x38, 0x0c, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xdc, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x06, 0x06, 0x1f, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c, 0x00},
+	{0x00, 0x00, 0x00, 0x06, 0x0d, 0x7c, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xce, 0xc6, 0xc6, 0x7a, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x46, 0x6c, 0x2c, 0x2c, 0x38, 0x18, 0x18, 0x18, 0x18, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x64, 0x28, 0x38, 0x38, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xce, 0xcc, 0xcc, 0xcc, 0xcc, 0xdc, 0x6c, 0x0c, 0x0c, 0x0e, 0x00},
+	{0x00, 0x00, 0x38, 0x6c, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x6c, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x06, 0x06, 0x1c, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, 0x3c, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x7b, 0xde, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x78, 0x58, 0x3e, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1b, 0x0e, 0x00},
+	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x7f, 0x63, 0x66, 0x6c, 0x7e, 0x63, 0xf3, 0x03, 0x33, 0x1e, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xd6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xd6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6e, 0x06, 0x06, 0x06, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0xfe, 0xd6, 0xd6, 0xd6, 0xd6, 0xc6, 0x06, 0x06, 0x1c, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x60, 0x60, 0xc0, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x06, 0x06, 0x03, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0xd8, 0xd8, 0xde, 0xd8, 0xd8, 0x6e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0xc6, 0xd6, 0xd6, 0xd6, 0xd6, 0x6c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x10, 0x10, 0x7c, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x7c, 0x10, 0x10, 0x10, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0c, 0xcc, 0xdc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xcc, 0xdc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0c, 0xcc, 0xdc, 0x6c, 0x0c, 0x0d, 0x06, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0x60, 0x60, 0x60, 0x6c, 0x38, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x66, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xcc, 0xcc, 0x0c, 0x0c, 0x0c, 0x1e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0x66, 0x6c, 0x7c, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0xfc, 0xc0, 0xd8, 0x70, 0x00},
+	{0x00, 0x00, 0x0e, 0x1b, 0x19, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x98, 0xd8, 0x70, 0x00},
+	{0x00, 0x00, 0x0e, 0x1b, 0x19, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x98, 0xd8, 0x70, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x70, 0xd8, 0x18, 0x18, 0x18, 0x18, 0x1b, 0x0e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x0e, 0x1b, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0xd8, 0x70, 0x00},
+	{0x00, 0x00, 0x70, 0xd8, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0xff, 0x66, 0x66, 0x3b, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0x6c, 0x6c, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0xfe, 0xd6, 0xd6, 0xd6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3e, 0x60, 0xc0, 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xcc, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x06, 0x06, 0x03, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xcc, 0x18, 0x30, 0x66, 0xcb, 0xfe, 0x10, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0x0c, 0x18, 0x3c, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0x0c, 0x18, 0x3c, 0x06, 0x06, 0x7e, 0xc7, 0x7c, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x06, 0x1c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc0, 0x70, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x1c, 0x06, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0xc3, 0xc3, 0xdb, 0xdb, 0xc3, 0xc3, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x66, 0x66, 0x7c, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x76, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x03, 0x7e, 0xc6, 0xc0, 0xce, 0xc6, 0xc6, 0x7a, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x0c, 0x00, 0x1c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x7e, 0xcc, 0x78, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xce, 0xcc, 0x6c, 0x3c, 0x3c, 0x6c, 0xcc, 0x0c, 0x0c, 0x0e, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x06, 0x0d, 0x7c, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x0c, 0x1e, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x06, 0x1c, 0x18, 0x7e, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc0, 0x70, 0x30, 0xfc, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x18, 0x18, 0x7f, 0xd9, 0xda, 0xda, 0xda, 0xdc, 0x6f, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x18, 0x18, 0x7f, 0xdb, 0xdb, 0xde, 0xde, 0xdb, 0x6b, 0x03, 0x1b, 0x0e, 0x00},
+	{0x00, 0x00, 0x38, 0x18, 0x18, 0x7f, 0xd9, 0xda, 0xda, 0xdb, 0xdd, 0x6f, 0x04, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x20, 0x60, 0x60, 0xf6, 0x6d, 0x6c, 0x66, 0x63, 0x6b, 0x36, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x26, 0x6d, 0x6c, 0xfc, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x3c, 0x0c, 0x2c, 0x18, 0x00},
+	{0x00, 0x00, 0x20, 0x60, 0x60, 0xf6, 0x6d, 0x6c, 0x6c, 0x6e, 0x6d, 0x36, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x70, 0xd8, 0xc0, 0xfe, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0x03, 0x03, 0x0e, 0x00},
+	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x66, 0x6d, 0x6c, 0x66, 0x63, 0x6b, 0xf6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x6f, 0x6b, 0x63, 0x66, 0x6c, 0x6d, 0xff, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xd6, 0x7c, 0x6c, 0x28, 0xc6, 0xd6, 0x7c, 0x6c, 0x28, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0xc0, 0xc0, 0xf0, 0xd8, 0xd8, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x70, 0xc0, 0xf0, 0xd8, 0xd8, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x18, 0x00, 0x38, 0x18, 0x18, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xb0, 0xd8, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x18, 0x18, 0xd8, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x18, 0x18, 0xd8, 0x68, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0xd8, 0xd8, 0xf0, 0xd8, 0xd8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xc6, 0xd6, 0x7c, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xd8, 0xd8, 0x78, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x36, 0x6c, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x18, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x30, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x18, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x30, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x70, 0xd8, 0x18, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x70, 0xd8, 0xc0, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x70, 0xc0, 0x70, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc0, 0x70, 0x18, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x20, 0x20, 0x70, 0x70, 0xd8, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0xd8, 0xd8, 0x70, 0x70, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x10, 0x38, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x6c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0c, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0x00},
+	{0x00, 0x00, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x38, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x30, 0x1c, 0x00},
+	{0x00, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x66, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x6c, 0x6c, 0x6c, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x34, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x70, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x18, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x30, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00},
+	{0xc0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x30, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x60, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x34, 0x18, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00},
+	{0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x18, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x60, 0xc0, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x60, 0xc0, 0x3e, 0x32, 0x30, 0x34, 0x3c, 0x34, 0x30, 0x30, 0x32, 0x3e, 0x00, 0x00, 0x00, 0x00},
+	{0x60, 0xc0, 0x33, 0x33, 0x33, 0x33, 0x3f, 0x33, 0x33, 0x33, 0x33, 0x33, 0x00, 0x00, 0x00, 0x00},
+	{0x60, 0xc0, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x60, 0xc0, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x60, 0xc0, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x60, 0xc0, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x36, 0x36, 0x36, 0x77, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x18, 0x00, 0x6c, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x66, 0x66, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0x66, 0x62, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x10, 0x38, 0x38, 0x6c, 0x6c, 0xc6, 0xc6, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0xc6, 0x86, 0x0c, 0x18, 0x30, 0x60, 0xc2, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x10, 0x38, 0x38, 0x6c, 0x6c, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0xc6, 0x82, 0x44, 0x7c, 0x44, 0x00, 0x82, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0xc6, 0x62, 0x30, 0x18, 0x18, 0x30, 0x62, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x7c, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x7c, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0x6c, 0x7c, 0x38, 0x38, 0x7c, 0x6c, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x92, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x7c, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x6c, 0x6c, 0x6c, 0xee, 0x00, 0x00, 0x00, 0x00},
+	{0x66, 0x66, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x66, 0x66, 0x00, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x18, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x18, 0x00, 0x7c, 0xc6, 0xc0, 0x78, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x18, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x06, 0x06, 0x06, 0x00},
+	{0x00, 0x00, 0x0c, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x18, 0x00, 0x6c, 0x00, 0xcc, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x6c, 0x60, 0x60, 0x60, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x46, 0x6c, 0x2c, 0x2c, 0x38, 0x18, 0x18, 0x18, 0x18, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0x30, 0x18, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0x78, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x46, 0x7c, 0x18, 0x30, 0x60, 0x60, 0xc0, 0xc0, 0xc0, 0x7c, 0x06, 0x06, 0x1c, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x06, 0x06, 0x06, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc0, 0x20, 0x30, 0x10, 0x38, 0x38, 0x6c, 0x64, 0xc6, 0xc2, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xf6, 0xc0, 0xc0, 0xc0, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0x66, 0x6c, 0x3c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x66, 0x3c, 0x30, 0x60, 0x3c, 0x60, 0xc0, 0xc0, 0xc0, 0x7c, 0x06, 0x06, 0x1c, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x66, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0x60, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0x7c, 0x06, 0x06, 0x1c, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x7c, 0x10, 0x10, 0x10, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x46, 0x2c, 0x2c, 0x18, 0x30, 0x68, 0x68, 0xc4, 0xc2, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x7c, 0x10, 0x10, 0x10, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0xc6, 0xd6, 0xd6, 0xd6, 0xd6, 0x6c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x66, 0x66, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0xcc, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x18, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x18, 0x00, 0xcc, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x18, 0x00, 0x6c, 0xc6, 0xd6, 0xd6, 0xd6, 0xd6, 0x6c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x6c, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x36, 0x1e, 0xc6, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc2, 0x65, 0x24, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x60, 0xc0, 0x21, 0x32, 0x12, 0x1c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x1e, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x6c, 0x00, 0xc2, 0x65, 0x24, 0x38, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x10, 0x10, 0x7c, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x7c, 0x10, 0x10, 0x10, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x6c, 0xc6, 0xd6, 0xd6, 0xd6, 0x6c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xa6, 0x2c, 0x38, 0x68, 0xca, 0xc4, 0x0c, 0x18, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc0, 0x60, 0x3c, 0x06, 0x06, 0x1c, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x7c, 0x06, 0x06, 0x1c, 0x00},
+	{0x00, 0x00, 0xfe, 0x66, 0x62, 0x60, 0x78, 0x68, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x32, 0x30, 0x30, 0x3c, 0x34, 0x30, 0x30, 0x30, 0x30, 0x00},
+	{0x00, 0x60, 0x30, 0x30, 0x60, 0x63, 0xff, 0xc6, 0x06, 0x0c, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x30, 0x30, 0x60, 0x60, 0xfe, 0xfe, 0x0c, 0x0c, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x78, 0xac, 0x26, 0x26, 0x0b, 0x0b, 0x1b, 0x1b, 0x1b, 0x1b, 0x03, 0x02, 0x04, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x30, 0x18, 0x28, 0x4c, 0x14, 0x24, 0x06, 0x02, 0x02, 0x00},
+	{0x00, 0x00, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0x6d, 0x03, 0x3e, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0x6d, 0x03, 0x7e, 0x00, 0x00},
+	{0x00, 0x00, 0x76, 0xd6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x36, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x06, 0x76, 0x9c, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x08, 0x7c, 0xd6, 0x66, 0x06, 0x06, 0x66, 0xbc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x06, 0x3c, 0x60, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x26, 0x1c, 0x70, 0xc0, 0xc2, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0x68, 0x38, 0x30, 0x38, 0x38, 0x4c, 0x4c, 0x86, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0xba, 0x30, 0x38, 0x28, 0x4c, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7e, 0xc0, 0xcc, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xc0, 0xdc, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x18, 0x7e, 0x99, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x1c, 0x18, 0x7e, 0x58, 0x18, 0x18, 0x18, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xa6, 0x2c, 0x38, 0x68, 0xca, 0xc4, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xfc, 0xc0, 0x60, 0x3c, 0x06, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x06, 0x06, 0x00, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c, 0x00},
+	{0x30, 0x18, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x6c, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0xb2, 0x30, 0x3e, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x03, 0x06, 0x00, 0x00},
+	{0x0c, 0x18, 0x00, 0xfe, 0x66, 0x62, 0x60, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xf8, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c, 0x06, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x66, 0x66, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x78, 0xd8, 0xd8, 0xd8, 0xde, 0xdb, 0xdb, 0xdb, 0xdb, 0xde, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xd8, 0xd8, 0xd8, 0xd8, 0xfe, 0xdb, 0xdb, 0xdb, 0xdb, 0xde, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0xb2, 0x30, 0x3e, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x18, 0x00, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x30, 0x18, 0x00, 0xc6, 0xc6, 0xce, 0xde, 0xfe, 0xf6, 0xe6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x38, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0x38, 0x10, 0x10, 0x00},
+	{0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0x66, 0x62, 0x60, 0x7c, 0x66, 0x66, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x66, 0x66, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0x66, 0x62, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xfe, 0xc6, 0x82, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xd6, 0xd6, 0xd6, 0x7c, 0x38, 0x7c, 0xd6, 0xd6, 0xd6, 0xd6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0x86, 0x06, 0x3c, 0x06, 0x06, 0x86, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xce, 0xde, 0xfe, 0xf6, 0xe6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x38, 0xc6, 0xc6, 0xc6, 0xce, 0xde, 0xfe, 0xf6, 0xe6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x7c, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x7c, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0x6c, 0x7c, 0x38, 0x38, 0x7c, 0x6c, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xfe, 0x06, 0x02, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xff, 0x03, 0x01, 0x00, 0x00},
+	{0x00, 0x00, 0xf8, 0xb0, 0xb0, 0x30, 0x3c, 0x36, 0x36, 0x36, 0x36, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xf3, 0xdb, 0xdb, 0xdb, 0xdb, 0xf3, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x7c, 0x66, 0x66, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x78, 0xcc, 0x86, 0x06, 0x3e, 0x06, 0x06, 0x86, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x9c, 0xb6, 0xb6, 0xb6, 0xf6, 0xb6, 0xb6, 0xb6, 0xb6, 0x9c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7e, 0xcc, 0xcc, 0xcc, 0x7c, 0x6c, 0x6c, 0x6c, 0x6c, 0xce, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x06, 0x7c, 0xc0, 0xc0, 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x66, 0x66, 0x7c, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x66, 0x62, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xfe, 0xc6, 0x82, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, 0xd6, 0xd6, 0x7c, 0xd6, 0xd6, 0xd6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x3c, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xce, 0xde, 0xfe, 0xf6, 0xe6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x38, 0x00, 0xc6, 0xce, 0xde, 0xfe, 0xf6, 0xe6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x66, 0x66, 0x66, 0x66, 0x66, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x10, 0x7c, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x7c, 0x10, 0x10, 0x10, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x6c, 0x38, 0x38, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xfe, 0x06, 0x02, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xff, 0x03, 0x01, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xb0, 0x30, 0x3c, 0x36, 0x36, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xf3, 0xdb, 0xdb, 0xf3, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0x60, 0x7c, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x3e, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0xb6, 0xb6, 0xf6, 0xb6, 0xb6, 0x9c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xcc, 0xcc, 0x7c, 0x6c, 0x6c, 0xce, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x60, 0x30, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x60, 0xf8, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x06, 0x06, 0x1c, 0x00},
+	{0x00, 0x00, 0x0c, 0x18, 0x00, 0xfe, 0x66, 0x62, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xf8, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x66, 0x66, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x06, 0x06, 0x00, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xd8, 0xd8, 0xde, 0xdb, 0xdb, 0xde, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0xd8, 0xd8, 0xfe, 0xdb, 0xdb, 0xde, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x60, 0xf8, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x18, 0x00, 0xe6, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x60, 0x30, 0x00, 0xc6, 0xce, 0xde, 0xfe, 0xf6, 0xe6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x38, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0x38, 0x10, 0x10, 0x00},
+	{0x00, 0x00, 0x6c, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x30, 0xfc, 0xb4, 0x30, 0x3c, 0x36, 0x36, 0x36, 0x36, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x30, 0x30, 0x30, 0xfc, 0xb4, 0x30, 0x3c, 0x36, 0x36, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xce, 0xdb, 0xd9, 0xd8, 0xfe, 0xd8, 0xd8, 0xd9, 0xdb, 0xce, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xce, 0xdb, 0xd8, 0xfe, 0xd8, 0xdb, 0xce, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x38, 0x38, 0x6c, 0x6c, 0x6c, 0xfe, 0xd6, 0xd6, 0xd6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x38, 0x6c, 0x7c, 0xd6, 0xd6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x88, 0x8c, 0x9c, 0x96, 0xf6, 0xb6, 0xbf, 0xab, 0xeb, 0xeb, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x8c, 0x9c, 0xf6, 0xbe, 0xab, 0xeb, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0xc6, 0x6c, 0x6c, 0x38, 0x7c, 0xd6, 0xd6, 0xd6, 0xd6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc6, 0x6c, 0x7c, 0xd6, 0xd6, 0xd6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xff, 0xa3, 0xb2, 0x96, 0xfc, 0x9c, 0xbe, 0xaa, 0xab, 0xeb, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0xa3, 0x96, 0xfe, 0xab, 0xab, 0xeb, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x38, 0x10, 0x7c, 0xc6, 0x06, 0x06, 0x7c, 0x06, 0x06, 0x06, 0x7c, 0xc0, 0x7c, 0x00, 0x00},
+	{0x00, 0x6c, 0x38, 0x10, 0x00, 0x7c, 0x86, 0x06, 0x7c, 0x06, 0x06, 0x7c, 0xc0, 0x7c, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x96, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x7c, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x10, 0x10, 0x96, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x7c, 0x10, 0x10, 0x10, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc2, 0xc6, 0xc6, 0xc4, 0xcc, 0x6c, 0x68, 0x78, 0x38, 0x30, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0xc6, 0x64, 0x6c, 0x38, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0xcc, 0x66, 0x00, 0xc2, 0xc6, 0xc4, 0xc4, 0x6c, 0x68, 0x78, 0x38, 0x30, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xcc, 0x66, 0x00, 0xc2, 0xc6, 0x64, 0x6c, 0x38, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x70, 0xd8, 0xd8, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0x6f, 0x03, 0x06, 0x1c, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0x6f, 0x03, 0x06, 0x1c, 0x00},
+	{0x00, 0x10, 0x7c, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0x7c, 0x10, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x10, 0x7c, 0xd6, 0xc6, 0xc6, 0xc6, 0xd6, 0x7c, 0x10, 0x00, 0x00, 0x00},
+	{0x04, 0x7c, 0x40, 0x6c, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x04, 0x7c, 0x40, 0x00, 0x6c, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0x00},
+	{0x7c, 0x54, 0x00, 0x6c, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0x54, 0x00, 0x6c, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x60, 0x3c, 0x0c, 0x0c, 0x0c, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc0, 0x78, 0x18, 0x18, 0x00, 0x00},
+	{0x00, 0x00, 0x06, 0x06, 0x3c, 0x0f, 0x18, 0x18, 0xf0, 0x3c, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x04, 0x7c, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x18, 0x24, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x40, 0x7c, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x04, 0x7c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x18, 0x66, 0x00, 0xc3, 0x00, 0x66, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x08, 0x50, 0x46, 0x00, 0x82, 0x41, 0x00, 0x62, 0x0a, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x38, 0xc6, 0xc6, 0xc6, 0xce, 0xde, 0xfe, 0xf6, 0xe6, 0xc6, 0xc7, 0x03, 0x01, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x38, 0x00, 0xc6, 0xce, 0xde, 0xfe, 0xf6, 0xe6, 0xc7, 0x03, 0x01, 0x00, 0x00},
+	{0x00, 0x60, 0xf0, 0x60, 0x60, 0x60, 0x7c, 0x66, 0x66, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x60, 0xf0, 0x60, 0x60, 0x7c, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfc, 0x66, 0x6e, 0x64, 0x7a, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x6e, 0x64, 0x7a, 0x60, 0x60, 0xf0, 0x00},
+	{0x02, 0x06, 0xfe, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x02, 0x06, 0xfe, 0x60, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0x66, 0x62, 0x60, 0xf8, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x66, 0x62, 0xf8, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0x66, 0x62, 0x60, 0x7c, 0x66, 0x66, 0x66, 0x66, 0xf6, 0x06, 0x16, 0x0c, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x66, 0x62, 0x78, 0x6c, 0x66, 0xf6, 0x06, 0x16, 0x0c, 0x00},
+	{0x00, 0x00, 0xd6, 0xd6, 0xd6, 0x7c, 0x38, 0x7c, 0xd6, 0xd6, 0xd6, 0xd7, 0x03, 0x01, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, 0xd6, 0xd6, 0x7c, 0xd6, 0xd6, 0xd7, 0x03, 0x01, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0x86, 0x06, 0x3c, 0x06, 0x06, 0x86, 0xc6, 0x7c, 0x30, 0x60, 0x38, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x3c, 0x06, 0xc6, 0x7c, 0x30, 0x60, 0x38, 0x00},
+	{0x00, 0x00, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0x66, 0xe7, 0x03, 0x01, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe7, 0x03, 0x01, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xd6, 0xd6, 0xdc, 0xf8, 0xdc, 0xd6, 0xd6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xd6, 0xdc, 0xf8, 0xdc, 0xd6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xe6, 0x66, 0xf6, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xe0, 0x60, 0xf0, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xf3, 0xb3, 0xb3, 0x36, 0x3c, 0x3c, 0x36, 0x33, 0x33, 0x73, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0xb6, 0xbc, 0x3c, 0x36, 0x33, 0x73, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0x03, 0x01, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc7, 0x03, 0x01, 0x00, 0x00},
+	{0x00, 0x00, 0xdf, 0xdb, 0xd9, 0xd8, 0xf8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, 0xdb, 0xd9, 0xf8, 0xd8, 0xd8, 0xd8, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xf8, 0xd8, 0xd8, 0xd8, 0xde, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0x03, 0x0b, 0x06, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0xd8, 0xd8, 0xfe, 0xdb, 0xdb, 0xdb, 0x03, 0x0b, 0x06, 0x00},
+	{0x00, 0x00, 0x7c, 0xc2, 0xcc, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xcc, 0x7a, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc2, 0xcc, 0xd6, 0xd6, 0xcc, 0x7a, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x18, 0x0c, 0x38, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x18, 0x0c, 0x38, 0x00},
+	{0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x0c, 0x04, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x0c, 0x04, 0x00, 0x00},
+	{0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x3c, 0x00},
+	{0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18, 0x3c, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0x6c, 0x7c, 0x38, 0x38, 0x7c, 0x6c, 0xc6, 0xc7, 0x03, 0x01, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x6c, 0x38, 0x38, 0x38, 0x6c, 0xc7, 0x03, 0x01, 0x00, 0x00},
+	{0x00, 0x00, 0xf6, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7f, 0x03, 0x01, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7f, 0x03, 0x01, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, 0x7e, 0x16, 0x16, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xd6, 0xd6, 0x7e, 0x16, 0x16, 0x06, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xfc, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x1e, 0x33, 0xb3, 0xb3, 0x7f, 0x30, 0x30, 0x30, 0x33, 0x1e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x9e, 0xb3, 0x7f, 0x30, 0x30, 0x33, 0x1e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x1e, 0x33, 0xb3, 0xb3, 0x7f, 0x30, 0x30, 0x30, 0x33, 0x1e, 0x0c, 0x18, 0x0e, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x9e, 0xb3, 0x7f, 0x30, 0x30, 0x33, 0x1e, 0x0c, 0x18, 0x0e, 0x00},
+	{0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x38, 0xd6, 0xd6, 0xd6, 0x7c, 0x38, 0x7c, 0xd6, 0xd6, 0xd6, 0xd6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x38, 0x00, 0xd6, 0xd6, 0xd6, 0x7c, 0xd6, 0xd6, 0xd6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x06, 0x16, 0x0c, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x06, 0x16, 0x0c, 0x00},
+	{0x00, 0x00, 0x3e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xc7, 0x03, 0x01, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x66, 0x66, 0x66, 0x66, 0x66, 0xc7, 0x03, 0x01, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x06, 0x16, 0x0c, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x06, 0x16, 0x0c, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0x03, 0x01, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc7, 0x03, 0x01, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x06, 0x0e, 0x0c, 0x08, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x0e, 0x0c, 0x08, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0x03, 0x01, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc7, 0x03, 0x01, 0x00, 0x00},
+	{0x6c, 0x38, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x38, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x6c, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3e, 0x6c, 0xcc, 0xcc, 0xfe, 0xcc, 0xcc, 0xcc, 0xcc, 0xce, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x76, 0x36, 0x7e, 0xd8, 0xd8, 0x6e, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x38, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x38, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0x06, 0xfe, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0xfe, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x6c, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0xfe, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0xfe, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x6c, 0x00, 0xd6, 0xd6, 0xd6, 0x7c, 0x38, 0x7c, 0xd6, 0xd6, 0xd6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0xd6, 0xd6, 0xd6, 0x7c, 0xd6, 0xd6, 0xd6, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x6c, 0x00, 0x7c, 0xc6, 0x86, 0x06, 0x3c, 0x06, 0x86, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0x7c, 0xc6, 0x06, 0x3c, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0x06, 0x0c, 0x18, 0x3c, 0x06, 0x06, 0x86, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0x0c, 0x18, 0x3c, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00},
+	{0x00, 0x7c, 0x00, 0xc6, 0xc6, 0xce, 0xde, 0xfe, 0xf6, 0xe6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x7c, 0x00, 0xc6, 0xce, 0xde, 0xfe, 0xf6, 0xe6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x6c, 0x00, 0xc6, 0xc6, 0xce, 0xde, 0xfe, 0xf6, 0xe6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0xc6, 0xce, 0xde, 0xfe, 0xf6, 0xe6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x6c, 0x00, 0x78, 0xcc, 0x86, 0x06, 0x3e, 0x06, 0x86, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0x7c, 0xc6, 0x06, 0x3e, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x7c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x7c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00},
+	{0x6c, 0x6c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00},
+	{0x66, 0xcc, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x66, 0xcc, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00},
+	{0x6c, 0x6c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x6c, 0x00, 0xc3, 0xc3, 0xc3, 0xf3, 0xdb, 0xdb, 0xdb, 0xdb, 0xf3, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0xc3, 0xc3, 0xc3, 0xf3, 0xdb, 0xdb, 0xf3, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0xcc, 0x7e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0c, 0x7c, 0xcd, 0xcd, 0xcd, 0xcd, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcd, 0xcd, 0xcd, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x78, 0xcc, 0x8c, 0x0c, 0x38, 0x0d, 0x0d, 0x0d, 0x0d, 0x06, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xcc, 0x0c, 0x39, 0x0d, 0x0d, 0x06, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0x86, 0x06, 0x3c, 0x06, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x3c, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6d, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xfc, 0xcd, 0xcd, 0xcd, 0xcd, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xfd, 0xcd, 0xcd, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xce, 0xc6, 0xc6, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xce, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x1b, 0x1b, 0x1b, 0x1b, 0x0e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x5a, 0x18, 0x1b, 0x1b, 0x1b, 0x0e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x18, 0x64, 0x94, 0xba, 0x52, 0x4c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcf, 0x7b, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x60, 0x60, 0x7e, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0x7f, 0x0c, 0x0c, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0xcf, 0x0c, 0x0c, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x60, 0x7e, 0x60, 0x60, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x06, 0x0c, 0xd8, 0xfe, 0xc3, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x60, 0x60, 0x7e, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7c, 0x06, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x60, 0x60, 0x60, 0x7e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0xcf, 0xd6, 0xd6, 0xd6, 0xd6, 0xcc, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x0c, 0x0c, 0x0c, 0x7f, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x60, 0x60, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7c, 0x06, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc0, 0xc0, 0xf6, 0xd6, 0xd6, 0xd6, 0xd6, 0xcc, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc0, 0x7f, 0x24, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x60, 0x60, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x30, 0x18, 0x0c, 0x18, 0x30, 0x60, 0xf0, 0x3c, 0x0e, 0x04, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x06, 0x06, 0x06, 0x6c, 0xd8, 0x6e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x0c, 0x0c, 0x0c, 0x0f, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x1e, 0x30, 0x60, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x7e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xcf, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0x06, 0x06, 0x7c, 0x06, 0x06, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x60, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x06, 0x3e, 0x66, 0x60, 0x60, 0x60, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x06, 0x06, 0x06, 0x6c, 0x38, 0x0e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x16, 0x16, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x76, 0x1e, 0x0e, 0x0c, 0xd8, 0xfe, 0xc3, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0xcf, 0xcc, 0xcc, 0xcc, 0xcc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x0c, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x0c, 0x0f, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x60, 0x30, 0x18, 0x0c, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x3c, 0x66, 0x06, 0x06, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x60, 0x60, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x63, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x7c, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xfe, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x70, 0xd0, 0xd0, 0xd0, 0x7c, 0x16, 0x16, 0x16, 0xd6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x18, 0x30, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x30, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x06, 0x3c, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x1c, 0x36, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x70, 0x60, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x6a, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x66, 0x66, 0x66, 0x60, 0x60, 0x7e, 0x60, 0x60, 0x60, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7f, 0x0c, 0x0c, 0x0c, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcf, 0x0c, 0x0c, 0x0c, 0x00},
+	{0x00, 0x00, 0x60, 0x60, 0x7e, 0x60, 0x60, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x0c, 0x0f, 0x00},
+	{0x00, 0x00, 0x60, 0x60, 0x60, 0x7c, 0x60, 0x60, 0x60, 0x60, 0x60, 0x78, 0x0c, 0x18, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x60, 0x60, 0x7e, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xc6, 0xc6, 0xcf, 0xd6, 0xd6, 0xcc, 0xc0, 0xc0, 0xc0, 0x00},
+	{0x00, 0x00, 0x0c, 0x0c, 0x0c, 0x7f, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x60, 0x60, 0x60, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x60, 0x60, 0x60, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3e, 0x00},
+	{0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xf6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xca, 0xc0, 0xc0, 0xc0, 0x00},
+	{0x00, 0x00, 0x60, 0x38, 0x0c, 0x7f, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x60, 0x60, 0x60, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x06, 0x06, 0x06, 0x00},
+	{0x00, 0x00, 0x60, 0x60, 0x60, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x30, 0x1c, 0x0c, 0x18, 0x3c, 0x64, 0x66, 0x62, 0x63, 0x3d, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x0c, 0x0c, 0x0f, 0x00},
+	{0x00, 0x00, 0x0e, 0x18, 0x30, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0f, 0x0c, 0x0c, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x6c, 0x38, 0x00},
+	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x3e, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x18, 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x3e, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x7e, 0x06, 0x06, 0x06, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x76, 0x1c, 0x18, 0x30, 0x60, 0x3e, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcf, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x0c, 0x0c, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x0c, 0x0f, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x60, 0x60, 0x60, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x06, 0x66, 0x3c, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x10, 0x10, 0xdc, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0x76, 0x10, 0x10, 0x10, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0xfe, 0x60, 0x60, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x70, 0xd0, 0xd0, 0x7c, 0x16, 0x16, 0x16, 0x16, 0xd6, 0x7c, 0x10, 0x10, 0x10, 0x00},
+	{0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xcc, 0xcc, 0xcc, 0xcc, 0x77, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x38, 0x6c},
+	{0x18, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x08, 0x38, 0x10, 0x38, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x60, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x18, 0x0c, 0x00},
+	{0x10, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x74, 0xd6, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0xc0, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x03, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x18, 0x30, 0x00},
+	{0x0c, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x03, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x1b, 0x36, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x44, 0xaa, 0x6c, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x04, 0x0a, 0x0c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x40, 0x50, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x3c, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x30, 0x18, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x30, 0x60, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x6c, 0xd8, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x30, 0x08, 0x30},
+	{0x60, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x40, 0xa0, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x38, 0x10, 0x10},
+	{0x18, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x0c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x06, 0x03, 0x00},
+	{0x48, 0xa8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x38, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x33, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x06, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x60, 0x66, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x18, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x18, 0x18},
+	{0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x18, 0x03, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18},
+	{0x00, 0x00, 0x00, 0x7e, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0x66, 0x76, 0xdc, 0xcc, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xf8, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x38, 0x0c, 0x0c, 0x0c, 0x0c, 0x1c, 0x36, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xfe, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xfc, 0x06, 0x06, 0x06, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x70, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x7e, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xfc, 0x66, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xcc, 0xd6, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x70, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xfc, 0x06, 0x06, 0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0e, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xfc, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xfc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc0, 0xc0, 0xfc, 0x06, 0x06, 0x06, 0x06, 0x0c, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xfc, 0x66, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x66, 0xc6, 0xc6, 0xc6, 0xc6, 0xde, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x38, 0x0c, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1c, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x38, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xfc, 0x66, 0xc6, 0xc6, 0xc6, 0xc6, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xee, 0x66, 0x66, 0x66, 0x66, 0x66, 0x2c, 0xf8, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xf8, 0x4c, 0xcc, 0xcc, 0xec, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0e, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xfc, 0x46, 0xc6, 0xc6, 0xe6, 0x06, 0x06, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xee, 0x66, 0x66, 0x6c, 0x78, 0x60, 0x60, 0x60, 0x60, 0x60, 0x70, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xee, 0x66, 0x66, 0x34, 0x18, 0x0c, 0x06, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xfc, 0x06, 0x06, 0x66, 0x64, 0x6c, 0x6e, 0x60, 0x60, 0x60, 0x60, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xfc, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xf6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x66, 0x66, 0xe6, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xcc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xcc, 0x66, 0x66, 0x66, 0xc6, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xcc, 0x66, 0x66, 0x66, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x66, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x1c, 0x22, 0x20, 0x10, 0x08, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x18, 0x24, 0x20, 0x1e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x02, 0x3c, 0x40, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x20, 0x1c, 0x20, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x1c, 0x20, 0x1c, 0x20, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x18, 0x20, 0x1c, 0x20, 0x00, 0x00},
+	{0x00, 0x30, 0x40, 0x38, 0x40, 0x07, 0x08, 0x88, 0x86, 0x81, 0x82, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x28, 0x00, 0x00, 0x18, 0x24, 0x22, 0x22, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x14, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x08, 0x00, 0x14, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x80, 0x88, 0x80, 0x41, 0x3e, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x80, 0x80, 0x80, 0x41, 0x3e, 0x00, 0x00, 0x00},
+	{0x00, 0x20, 0x00, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x80, 0x80, 0x80, 0x41, 0x3e, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x00, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x08, 0x00, 0x00, 0x04, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x15, 0x88, 0x84, 0x84, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x08, 0x00, 0x14, 0x00, 0x01, 0x15, 0x88, 0x84, 0x84, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x31, 0x9e, 0x88, 0x88, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x04, 0x00, 0x06, 0x09, 0x31, 0x9e, 0x88, 0x88, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x20, 0x20, 0x20, 0x2c, 0x32, 0xa2, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x24, 0x20, 0x20, 0x2c, 0x32, 0xa2, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x8c, 0x70, 0x40, 0x80, 0x80, 0x80, 0x41, 0x3e, 0x00, 0x00},
+	{0x00, 0x40, 0x00, 0x00, 0x70, 0x80, 0x8c, 0x70, 0x40, 0x80, 0x80, 0x80, 0x41, 0x3e, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x04, 0x00, 0x06, 0x49, 0x85, 0x83, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0a, 0x00, 0x06, 0x09, 0x09, 0x47, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x19, 0x21, 0x19, 0x21, 0x01, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x42, 0x82, 0x82, 0x84, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x0c, 0x12, 0x12, 0x3c, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00},
+	{0x00, 0x00, 0x08, 0x00, 0x00, 0x41, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x40, 0x30, 0x4e, 0x49, 0x39, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x88, 0x86, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x88, 0x86, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x24, 0x00},
+	{0x0c, 0x30, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x12, 0xca, 0x2c, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x30, 0x0c, 0x30, 0x00, 0x00},
+	{0x0c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x08, 0x14, 0x0c, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x30, 0x00, 0x00},
+	{0x0a, 0x2a, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x01, 0x7e, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x10, 0x0c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x10, 0x0c, 0x10},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x78, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x20, 0x70, 0x70, 0x38, 0x18, 0x18, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x44, 0xfc, 0xf8, 0x60, 0x30, 0x30, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x4a, 0xfe, 0xf4, 0x60, 0x30, 0x30, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x20, 0x40, 0x30, 0x10, 0x20, 0x42, 0x7c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x38, 0x2c, 0x44, 0x42, 0x82, 0x82, 0xfe, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x80, 0xf8, 0x78, 0x08, 0x08, 0x08, 0x0c, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x82, 0xc6, 0xc6, 0x6c, 0x28, 0x38, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x10, 0x10, 0x38, 0x28, 0x6c, 0xc6, 0xc6, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x70, 0xf8, 0x88, 0xf8, 0x78, 0x08, 0x0c, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x60, 0x91, 0x92, 0x64, 0x08, 0x10, 0x26, 0x49, 0x89, 0x06, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0x00, 0x00},
+	{0x00, 0x10, 0x38, 0x18, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x10, 0x10, 0x38, 0xfe, 0x7c, 0x38, 0x6c, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x06, 0x29, 0x5e, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x06, 0x28, 0x5e, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x06, 0x28, 0x5e, 0x00, 0x00, 0x00},
+	{0x00, 0x07, 0x08, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x03, 0x04, 0x03, 0x14, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x03, 0x04, 0x03, 0x04, 0x00, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x23, 0x54, 0x33, 0x24, 0x40, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x03, 0x04, 0x03, 0x04, 0x00, 0x07, 0x08, 0x88, 0x86, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x1c, 0x14, 0x38, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x08, 0x00, 0x08, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x14, 0x40, 0x81, 0x81, 0x7e, 0x08, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x14, 0x00, 0x08, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00},
+	{0x00, 0x14, 0x00, 0x14, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00},
+	{0x06, 0x08, 0x06, 0x08, 0x70, 0x8f, 0x30, 0x40, 0x80, 0x80, 0x80, 0x41, 0x3e, 0x00, 0x00, 0x00},
+	{0x08, 0x00, 0x08, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x80, 0x80, 0x80, 0x41, 0x3e, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x80, 0x94, 0x80, 0x41, 0x3e, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x88, 0x80, 0x88, 0x41, 0x3e, 0x00, 0x00, 0x00},
+	{0x08, 0x00, 0x14, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x80, 0x80, 0x80, 0x41, 0x3e, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x94, 0x80, 0x88, 0x41, 0x3e, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x94, 0x80, 0x94, 0x41, 0x3e, 0x00, 0x00, 0x00},
+	{0x20, 0x38, 0x28, 0x70, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x08, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00},
+	{0x20, 0x38, 0x28, 0x70, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x14, 0x00, 0x00, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00},
+	{0x08, 0x00, 0x14, 0x00, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x14, 0x00, 0x08, 0x00, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x14, 0x00, 0x14, 0x00, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x1c, 0x14, 0x38, 0x00, 0x04, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x14, 0x08, 0x00, 0x00, 0x04, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x02, 0x04, 0x1c, 0x6a, 0x04, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x02, 0x04, 0x18, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x14, 0x08, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x12, 0x04, 0x18, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x14, 0x00, 0x00, 0x04, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x08, 0x00, 0x14, 0x00, 0x00, 0x04, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x14, 0x00, 0x14, 0x00, 0x00, 0x04, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x15, 0x88, 0x88, 0x8a, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x15, 0x88, 0x88, 0x90, 0x65, 0x00, 0x02, 0x00, 0x00, 0x00},
+	{0x00, 0x04, 0x00, 0x0a, 0x00, 0x01, 0x15, 0x88, 0x88, 0x90, 0x65, 0x00, 0x02, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x31, 0x9e, 0x88, 0x90, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x04, 0x00, 0x0a, 0x00, 0x06, 0x09, 0x31, 0x9e, 0x88, 0x88, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x04, 0x00, 0x2a, 0x20, 0x20, 0x2c, 0x32, 0xa2, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x20, 0x00, 0x50, 0x00, 0x70, 0x80, 0x8c, 0x70, 0x40, 0x80, 0x80, 0x80, 0x41, 0x3e, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x06, 0x49, 0x85, 0x83, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x06, 0x49, 0x85, 0x83, 0x7e, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x04, 0x00, 0x06, 0x49, 0x85, 0x83, 0x7e, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x04, 0x00, 0x0a, 0x00, 0x06, 0x49, 0x85, 0x83, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x06, 0x49, 0x85, 0x83, 0x7e, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x00, 0x00},
+	{0x0a, 0x00, 0x0a, 0x00, 0x06, 0x49, 0x85, 0x83, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x04, 0x00, 0x06, 0x09, 0x09, 0x47, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00},
+	{0x04, 0x00, 0x0a, 0x00, 0x06, 0x09, 0x09, 0x47, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00},
+	{0x00, 0x01, 0x02, 0x04, 0x08, 0x44, 0x82, 0x82, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x18, 0x20, 0x40, 0x3e, 0x01, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x01, 0x02, 0x05, 0x0b, 0x48, 0x84, 0x82, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x04, 0x00, 0x19, 0x21, 0x19, 0x21, 0x01, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x00, 0x29, 0x01, 0x19, 0x21, 0x19, 0xa1, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x19, 0x21, 0x19, 0x21, 0x01, 0x81, 0x7e, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00},
+	{0x04, 0x09, 0x12, 0x04, 0x08, 0x44, 0x82, 0x82, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x04, 0x09, 0x12, 0x05, 0x0b, 0x48, 0x84, 0x82, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0xa4, 0x09, 0x12, 0x04, 0x08, 0x44, 0x82, 0x82, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x04, 0x09, 0x12, 0x04, 0x08, 0x44, 0x82, 0x82, 0x7c, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x04, 0x09, 0x12, 0x04, 0x08, 0x44, 0x82, 0x82, 0x7c, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00},
+	{0x44, 0x09, 0xa2, 0x04, 0x08, 0x44, 0x82, 0x82, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x14, 0x08, 0x02, 0x02, 0x02, 0x02, 0x42, 0x82, 0x82, 0x84, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x08, 0x02, 0x02, 0x02, 0x02, 0x02, 0x42, 0x82, 0x82, 0x84, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x02, 0x2a, 0x02, 0x02, 0x02, 0x42, 0x82, 0x82, 0x84, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x42, 0x82, 0x82, 0x84, 0x78, 0x00, 0x14, 0x00, 0x08, 0x00},
+	{0x00, 0x08, 0x00, 0x00, 0x00, 0x41, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x04, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x1c, 0x14, 0x38, 0x00, 0x41, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x08, 0x00, 0x00, 0x41, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x08, 0x14, 0x08, 0x00, 0x00},
+	{0x08, 0x00, 0x14, 0x00, 0x00, 0x41, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x10, 0x38, 0x4c, 0x52, 0x32, 0x3c, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x94, 0x80, 0x88, 0x41, 0x3e, 0x00, 0x00, 0x00},
+	{0x38, 0x40, 0x38, 0x40, 0x18, 0x24, 0x22, 0x22, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x40, 0x38, 0x40, 0x00, 0x0c, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x0c, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x12, 0x0e, 0x12, 0x2c, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x12, 0x0e, 0x02, 0x3c, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x14, 0x08, 0x00, 0x00, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x28, 0x18, 0x10, 0x20, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x08, 0x08, 0x08, 0x08, 0x00, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x08, 0x14, 0x00, 0x00, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x14, 0x00, 0x00, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x08, 0x00, 0x14, 0x00, 0x00, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x88, 0x86, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x20, 0x47, 0x88, 0x08, 0x86, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x50, 0x20, 0x07, 0x08, 0x88, 0x86, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x08, 0x00, 0x00, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x88, 0x86, 0x81, 0x82, 0x7c, 0x00, 0x08, 0x00, 0x08},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x88, 0x86, 0x81, 0x82, 0x7c, 0x00, 0x14, 0x00, 0x08},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x14, 0x60, 0x80, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x60, 0x80, 0x60, 0x80, 0x08, 0x14, 0x60, 0x80, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x18, 0x24, 0x22, 0x22, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x40, 0x40, 0x43, 0x55, 0x7e, 0x80, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x2a, 0x20, 0x26, 0x2a, 0x7c, 0x80, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x0e, 0x1c, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x14, 0x14, 0x08, 0x14, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x2c, 0x10, 0x28, 0x22, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x08, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x15, 0x8a, 0x90, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x5a, 0xa5, 0x66, 0x5b, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x5a, 0x66, 0xa5, 0x5a, 0x00},
+	{0x00, 0x00, 0x18, 0x66, 0x42, 0x42, 0x81, 0x99, 0x99, 0x81, 0x42, 0x42, 0x66, 0x18, 0x00, 0x00},
+	{0x08, 0x1c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x26, 0x08, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x0c, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x8a, 0x90, 0x60},
+	{0x32, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x14, 0x0c, 0x04, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x30, 0x40, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x30, 0x40, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x08, 0x22, 0x22, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x28, 0x54, 0xaa, 0x92, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x82, 0xfe, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x14, 0x22, 0x14, 0x08},
+	{0x08, 0x14, 0x22, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x10, 0x10, 0x10},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x20, 0x70, 0x70, 0x38, 0x18, 0x18, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x44, 0xfc, 0xf8, 0x60, 0x30, 0x30, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x4a, 0xfe, 0xf4, 0x60, 0x30, 0x30, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x4e, 0xf0, 0xfe, 0x7c, 0x30, 0x30, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x30, 0x38, 0x2c, 0x44, 0x42, 0x82, 0x92, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x3c, 0x60, 0x7e, 0x3c, 0x30, 0x60, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x82, 0xc6, 0xc6, 0x6c, 0x28, 0x38, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x10, 0x10, 0x38, 0x28, 0x6c, 0xc6, 0xc6, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x70, 0xf8, 0x88, 0xf8, 0x78, 0x08, 0x0c, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x08, 0x00, 0x14, 0x00, 0x01, 0x15, 0x88, 0x88, 0x88, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x04, 0x00, 0x06, 0x09, 0x31, 0x9e, 0x88, 0x88, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x40, 0x00, 0x00, 0x70, 0x80, 0x8c, 0x70, 0x40, 0x80, 0x88, 0x80, 0x41, 0x3e, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x18, 0x24, 0x20, 0x1e, 0x20, 0x00, 0x14, 0x14, 0x14, 0x14, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x0c, 0x12, 0x12, 0x3c, 0x40, 0x54, 0x54, 0x54, 0x54, 0x40, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x92, 0x92, 0x92, 0x92, 0x92, 0x4c, 0x30, 0x4c, 0x02, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x92, 0x92, 0x92, 0x92, 0x92, 0x64, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xaa, 0xaa, 0xaa, 0x82, 0x82, 0x40, 0x30, 0x4c, 0x02, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x92, 0x92, 0x92, 0x82, 0x82, 0x44, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x92, 0x92, 0x92, 0x82, 0x82, 0x40, 0x30, 0x4c, 0x02, 0x00},
+	{0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x38, 0x6c, 0x38},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x38, 0x6c, 0x38},
+	{0x18, 0x18, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x66, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x0c, 0xec, 0x60, 0x60, 0x78, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x66, 0x66, 0x66, 0x66, 0xfc, 0x00, 0x18, 0x18, 0x00},
+	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x78, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x00, 0x18, 0x18, 0x00},
+	{0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x66, 0x66, 0x66, 0x66, 0xfc, 0x00, 0x7c, 0x00, 0x00},
+	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x78, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x00, 0x7c, 0x00, 0x00},
+	{0x0c, 0x18, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x18, 0x0c, 0x38, 0x00},
+	{0x00, 0x00, 0x0c, 0x18, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x18, 0x0c, 0x38, 0x00},
+	{0x30, 0x30, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00, 0x00, 0x00, 0x00},
+	{0x60, 0x60, 0x0c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00, 0x30, 0x30, 0x00},
+	{0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x30, 0x30, 0x00},
+	{0x00, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00, 0x7c, 0x00, 0x00},
+	{0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x7c, 0x00, 0x00},
+	{0x00, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x30, 0x18, 0x70, 0x00},
+	{0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x30, 0x18, 0x70, 0x00},
+	{0x00, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x10, 0x38, 0x6c, 0x00},
+	{0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x10, 0x38, 0x6c, 0x00},
+	{0x60, 0x30, 0x00, 0x7c, 0x00, 0xfe, 0x62, 0x68, 0x78, 0x68, 0x62, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x60, 0x30, 0x00, 0x7c, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x18, 0x00, 0x7c, 0x00, 0xfe, 0x62, 0x68, 0x78, 0x68, 0x62, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x18, 0x00, 0x7c, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x62, 0x66, 0xfe, 0x10, 0x38, 0x6c, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x10, 0x38, 0x6c, 0x00},
+	{0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x76, 0xdc, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x76, 0xdc, 0x00},
+	{0x6c, 0x38, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x18, 0x0c, 0x38, 0x00},
+	{0x00, 0x00, 0x6c, 0x38, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x18, 0x0c, 0x38, 0x00},
+	{0x18, 0x18, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
+	{0x30, 0x30, 0x00, 0x38, 0x6c, 0x64, 0xf0, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x7c, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xde, 0xc6, 0xc6, 0x66, 0x3a, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x7c, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78, 0x00},
+	{0x30, 0x30, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x0c, 0xe0, 0x60, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x30, 0x30, 0x00},
+	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x18, 0x18, 0x00},
+	{0x6c, 0x6c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x6c, 0x00, 0xe0, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x60, 0x30, 0xe0, 0x00},
+	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x30, 0x18, 0x70, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x6c, 0x38, 0x00},
+	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x6c, 0x38, 0x00},
+	{0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x76, 0xdc, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x76, 0xdc, 0x00},
+	{0x0c, 0x18, 0x66, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x18, 0x66, 0x66, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x18, 0x00, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x0c, 0xec, 0x60, 0x60, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x18, 0x18, 0x00},
+	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x18, 0x18, 0x00},
+	{0x00, 0x00, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x7c, 0x00, 0x00},
+	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x7c, 0x00, 0x00},
+	{0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x18, 0x18, 0x00},
+	{0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x18, 0x18, 0x00},
+	{0x00, 0x7c, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x18, 0x18, 0x00},
+	{0x00, 0x7c, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x18, 0x18, 0x00},
+	{0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x7c, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x7e, 0x00, 0x00},
+	{0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x10, 0x38, 0x6c, 0x00},
+	{0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x10, 0x38, 0x6c, 0x00},
+	{0x0c, 0x18, 0x00, 0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x18, 0x00, 0xec, 0xfe, 0xd6, 0xd6, 0xd6, 0xd6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x30, 0x30, 0x00, 0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x30, 0x30, 0x00, 0xec, 0xfe, 0xd6, 0xd6, 0xd6, 0xd6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x30, 0x30, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0xfe, 0xd6, 0xd6, 0xd6, 0xd6, 0xc6, 0x00, 0x30, 0x30, 0x00},
+	{0x30, 0x30, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x30, 0x30, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x18, 0x18, 0x00},
+	{0x00, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x7c, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x7c, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0xc6, 0x10, 0x38, 0x6c, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x10, 0x38, 0x6c, 0x00},
+	{0x0c, 0x18, 0x72, 0x9c, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x18, 0x76, 0xdc, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x00, 0x72, 0x9c, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x00, 0x76, 0xdc, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x60, 0x30, 0x7c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x60, 0x30, 0x00, 0x7c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x18, 0x7c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x18, 0x00, 0x7c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x18, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x18, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0, 0x00},
+	{0x18, 0x18, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0, 0x00},
+	{0x18, 0x18, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x18, 0x18, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x18, 0x18, 0x00},
+	{0x00, 0x7c, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x18, 0x18, 0x00},
+	{0x00, 0x00, 0x00, 0x7c, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x18, 0x18, 0x00},
+	{0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x7c, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x7c, 0x00, 0x00},
+	{0x30, 0x30, 0x00, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x30, 0x30, 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c, 0x06, 0xc6, 0xc6, 0x7c, 0x00, 0x30, 0x30, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x30, 0x30, 0x00},
+	{0x60, 0x6c, 0x18, 0x00, 0x7c, 0xc6, 0xc6, 0x70, 0x1c, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x60, 0x60, 0x0c, 0x18, 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x30, 0x44, 0x38, 0x10, 0x7c, 0xc6, 0xc6, 0x70, 0x1c, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x30, 0x30, 0x44, 0x38, 0x10, 0x7c, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x30, 0x30, 0x00, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0xc6, 0x7c, 0x00, 0x30, 0x30, 0x00},
+	{0x00, 0x00, 0x30, 0x30, 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x30, 0x30, 0x00},
+	{0x18, 0x18, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x06, 0x16, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x18, 0x18, 0x00},
+	{0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x18, 0x18, 0x00},
+	{0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x7e, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x7e, 0x00, 0x00},
+	{0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x10, 0x38, 0x6c, 0x00},
+	{0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x08, 0x1c, 0x36, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x6c, 0x6c, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x6c, 0x6c, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x76, 0xdc, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x76, 0xdc, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x10, 0x38, 0x6c, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x10, 0x38, 0x6c, 0x00},
+	{0x0c, 0x18, 0x72, 0x9c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x18, 0x76, 0xdc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x00, 0x7c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0xcc, 0xcc, 0x00, 0xfc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x76, 0xdc, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x76, 0xdc, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x10, 0x00, 0x30, 0x30, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x00, 0x18, 0x18, 0x00},
+	{0x60, 0x30, 0x00, 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0xee, 0x6c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x60, 0x30, 0x00, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x18, 0x00, 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0xee, 0x6c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x18, 0x00, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x6c, 0x00, 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0xee, 0x6c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0x00},
+	{0x30, 0x30, 0x00, 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0xee, 0x6c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x30, 0x30, 0x00, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0xee, 0x6c, 0x00, 0x30, 0x30, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x30, 0x30, 0x00},
+	{0x30, 0x30, 0x00, 0xc6, 0xc6, 0x6c, 0x7c, 0x38, 0x7c, 0x6c, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x30, 0x30, 0x00, 0xc6, 0x6c, 0x38, 0x38, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x6c, 0x00, 0xc6, 0xc6, 0x6c, 0x7c, 0x38, 0x7c, 0x6c, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0xc6, 0x6c, 0x38, 0x38, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x18, 0x00, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x30, 0x30, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00},
+	{0x10, 0x38, 0x44, 0xfe, 0xc6, 0x8c, 0x18, 0x30, 0x60, 0xc2, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x10, 0x38, 0x6c, 0x00, 0xfe, 0xcc, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0xc6, 0x86, 0x0c, 0x18, 0x30, 0x60, 0xc2, 0xc6, 0xfe, 0x00, 0x30, 0x30, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xcc, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x30, 0x30, 0x00},
+	{0x00, 0x00, 0xfe, 0xc6, 0x86, 0x0c, 0x18, 0x30, 0x60, 0xc2, 0xc6, 0xfe, 0x00, 0x7c, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xcc, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x7c, 0x00, 0x00},
+	{0x00, 0x00, 0xe0, 0x60, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x7c, 0x00, 0x00},
+	{0x6c, 0x6c, 0x00, 0x10, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x38, 0x6c, 0x38, 0x00, 0xc6, 0xc6, 0xd6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x38, 0x6c, 0x38, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00},
+	{0x00, 0x18, 0x0c, 0x18, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x30, 0x30, 0x00, 0x38, 0x6c, 0x64, 0x60, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x30, 0x30, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x30, 0x30, 0x00},
+	{0x38, 0x0c, 0x18, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x38, 0x0c, 0x18, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x03, 0x16, 0x38, 0x6c, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x03, 0x16, 0x38, 0x6c, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0xc0, 0x68, 0x1c, 0x36, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0xc0, 0x68, 0x1c, 0x36, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x0e, 0x13, 0x3a, 0x6c, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x0e, 0x13, 0x3a, 0x6c, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x76, 0xdc, 0x10, 0x28, 0x54, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x76, 0xdc, 0x10, 0x38, 0x44, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x38, 0x6c, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x30, 0x30, 0x00},
+	{0x00, 0x10, 0x38, 0x6c, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x30, 0x30, 0x00},
+	{0x0c, 0x18, 0x44, 0x38, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x18, 0x44, 0x38, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x60, 0x30, 0x44, 0x38, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x60, 0x30, 0x44, 0x38, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x30, 0x08, 0x54, 0x38, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x30, 0x08, 0x54, 0x38, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x72, 0x9c, 0x44, 0x38, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x72, 0x9c, 0x44, 0x38, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x6c, 0x38, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x30, 0x30, 0x00},
+	{0x00, 0x00, 0x6c, 0x38, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x30, 0x30, 0x00},
+	{0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x18, 0x18, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x30, 0x30, 0x00},
+	{0x38, 0x0c, 0x18, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x38, 0x0c, 0x18, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x76, 0xdc, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x76, 0xdc, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x23, 0x76, 0x88, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x03, 0x26, 0x70, 0xd8, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0xc4, 0x6e, 0x11, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0xc0, 0x64, 0x0e, 0x1b, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x0e, 0x13, 0x3a, 0x6c, 0x00, 0xfe, 0x62, 0x68, 0x78, 0x68, 0x62, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x0e, 0x13, 0x3a, 0x6c, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x76, 0xdc, 0x10, 0x38, 0x44, 0xfe, 0x62, 0x68, 0x78, 0x68, 0x62, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x76, 0xdc, 0x10, 0x38, 0x44, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x38, 0x44, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x18, 0x18, 0x00},
+	{0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x30, 0x30, 0x00},
+	{0x38, 0x0c, 0x18, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x38, 0x0c, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x18, 0x18, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x18, 0x18, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x30, 0x30, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x30, 0x30, 0x00},
+	{0x38, 0x0c, 0x18, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x38, 0x0c, 0x18, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x23, 0x76, 0x88, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x03, 0x26, 0x70, 0xd8, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0xc4, 0x6e, 0x11, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0xc0, 0x64, 0x0e, 0x1b, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x0e, 0x13, 0x3a, 0x44, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x0e, 0x13, 0x3a, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x76, 0xdc, 0x10, 0x28, 0x44, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x76, 0xdc, 0x10, 0x38, 0x44, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x38, 0x44, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x30, 0x30, 0x00},
+	{0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x30, 0x30, 0x00},
+	{0x18, 0x33, 0x03, 0x7a, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x1b, 0x33, 0x06, 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x60, 0x33, 0x03, 0x7a, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x63, 0x33, 0x06, 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x70, 0x1b, 0x33, 0x7a, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x70, 0x1b, 0x33, 0x06, 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x68, 0xb3, 0x03, 0x7a, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x68, 0xb3, 0x03, 0x06, 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x03, 0x03, 0x7a, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x30, 0x30, 0x00},
+	{0x00, 0x00, 0x03, 0x03, 0x06, 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x30, 0x30, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x30, 0x30, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x30, 0x30, 0x00},
+	{0x38, 0x0c, 0x18, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x70, 0x18, 0x30, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x33, 0x03, 0xce, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x1b, 0x33, 0x06, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x60, 0x33, 0x03, 0xce, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x63, 0x33, 0x06, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x70, 0x1b, 0x33, 0xce, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x70, 0x1b, 0x33, 0x06, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x68, 0xb3, 0x03, 0xce, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x68, 0xb3, 0x03, 0x06, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x03, 0x03, 0xce, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x30, 0x30, 0x00},
+	{0x00, 0x00, 0x03, 0x03, 0x06, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x30, 0x30, 0x00},
+	{0x30, 0x18, 0x00, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x60, 0x30, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00},
+	{0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x18, 0x18, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x0c, 0x18, 0xf6, 0x06, 0x00},
+	{0x38, 0x0c, 0x18, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x38, 0x0c, 0x18, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00},
+	{0x3a, 0x5c, 0x00, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x76, 0xdc, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00},
+	{0x00, 0x18, 0x18, 0x30, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x30, 0x30, 0x18, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x60, 0x6c, 0xc6, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0xc0, 0xcc, 0x66, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x60, 0x66, 0xcc, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0xc0, 0xc6, 0x6c, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x34, 0x58, 0x0c, 0x18, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x34, 0x58, 0x30, 0x18, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0xfe, 0x00, 0xa4, 0xaa, 0xea, 0xea, 0xa6, 0x00, 0x6c, 0x8a, 0x4c, 0x28, 0xc8, 0x00, 0xfe, 0x00},
+	{0xfe, 0x00, 0xa4, 0xea, 0xaa, 0xaa, 0xa6, 0x00, 0x6c, 0x8a, 0x4c, 0x28, 0xc8, 0x00, 0xfe, 0x00},
+	{0xfe, 0x00, 0xea, 0x8a, 0xce, 0x8e, 0xea, 0x00, 0x6c, 0x8a, 0x4c, 0x28, 0xc8, 0x00, 0xfe, 0x00},
+	{0xfe, 0x00, 0xea, 0x8e, 0xca, 0x8a, 0xea, 0x00, 0x6c, 0x8a, 0x4c, 0x28, 0xc8, 0x00, 0xfe, 0x00},
+	{0xfe, 0x00, 0xca, 0x2e, 0x4a, 0x2a, 0xca, 0x00, 0x6c, 0x8a, 0x4c, 0x28, 0xc8, 0x00, 0xfe, 0x00},
+	{0xfe, 0x00, 0xaa, 0xae, 0xea, 0x2a, 0x2a, 0x00, 0x6c, 0x8a, 0x4c, 0x28, 0xc8, 0x00, 0xfe, 0x00},
+	{0xfe, 0x00, 0x6a, 0x8e, 0xca, 0xaa, 0x4a, 0x00, 0x6c, 0x8a, 0x4c, 0x28, 0xc8, 0x00, 0xfe, 0x00},
+	{0xfe, 0x00, 0x38, 0x20, 0x30, 0x20, 0x20, 0x00, 0x6c, 0x8a, 0x4c, 0x28, 0xc8, 0x00, 0xfe, 0x00},
+	{0xfe, 0x00, 0x30, 0x28, 0x30, 0x20, 0x20, 0x00, 0x6c, 0x8a, 0x4c, 0x28, 0xc8, 0x00, 0xfe, 0x00},
+	{0xfe, 0x00, 0xea, 0x4a, 0x4e, 0x4a, 0x4a, 0x00, 0x6c, 0x8a, 0x4c, 0x28, 0xc8, 0x00, 0xfe, 0x00},
+	{0xfe, 0x00, 0x28, 0x28, 0x38, 0x28, 0x28, 0x00, 0x6c, 0x8a, 0x4c, 0x28, 0xc8, 0x00, 0xfe, 0x00},
+	{0xfe, 0x00, 0xea, 0x2a, 0x4e, 0x8e, 0xee, 0x00, 0x6c, 0x8a, 0x4c, 0x28, 0xc8, 0x00, 0xfe, 0x00},
+	{0xfe, 0x00, 0xea, 0x2a, 0x4e, 0x8e, 0xee, 0x00, 0xa2, 0xa2, 0xe2, 0xea, 0xa4, 0x00, 0xfe, 0x00},
+	{0xfe, 0x00, 0xea, 0x2a, 0x4e, 0x8e, 0xee, 0x00, 0x08, 0x08, 0x08, 0x28, 0x10, 0x00, 0xfe, 0x00},
+	{0xfe, 0x00, 0x80, 0x80, 0x80, 0xf0, 0x28, 0x30, 0x28, 0x0a, 0x0e, 0x0e, 0x0a, 0x00, 0xfe, 0x00},
+	{0xfe, 0x00, 0xc0, 0xa0, 0xc0, 0xa0, 0x20, 0x20, 0x38, 0x0a, 0x0e, 0x0e, 0x0a, 0x00, 0xfe, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x9c, 0xd2, 0xbc, 0x92, 0x9c, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0xfe, 0x00},
+	{0x00, 0x18, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00},
+	{0x00, 0x30, 0x30, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x66, 0xcc, 0xcc, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x66, 0x66, 0x66, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0xcc, 0x00, 0x00},
+	{0x00, 0xcc, 0xcc, 0xcc, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x20, 0x30, 0x38, 0x3c, 0x38, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdb, 0xdb, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xc0, 0xc6, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xc0, 0xc6, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x6b, 0x6b, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x6c, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xdb, 0xdb, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x6c, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xdb, 0xdb, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x0c, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x60, 0x30, 0x18, 0x0c, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x92, 0x44, 0x28, 0x92, 0x28, 0x44, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7e, 0xc3, 0xdb, 0x1b, 0x1e, 0x1c, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x7c, 0x00, 0x00},
+	{0x7c, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0c, 0x18, 0x38, 0x6c, 0x00},
+	{0x00, 0x00, 0x00, 0x10, 0x38, 0x28, 0x00, 0x00, 0x44, 0xee, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x30, 0x30, 0x30, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x0c, 0x0c, 0x0c, 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7b, 0xcf, 0xcf, 0x1b, 0x33, 0x33, 0x33, 0x00, 0x33, 0x33, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xde, 0xf3, 0xf3, 0xc6, 0xcc, 0xcc, 0xcc, 0x00, 0xcc, 0xcc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x06, 0x06, 0x0c, 0x0c, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0xdb, 0xdb, 0xdb, 0xde, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x3e, 0x72, 0xf2, 0xf2, 0xf2, 0x72, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xf8, 0x9c, 0x9e, 0x9e, 0x9e, 0x9c, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x70, 0xd8, 0xd8, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x18, 0x38, 0x78, 0xd8, 0xfc, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0xf8, 0xc0, 0xf0, 0x18, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x78, 0xc0, 0xf0, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0xf8, 0xd8, 0x30, 0x30, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x70, 0xd8, 0x70, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x70, 0xd8, 0xd8, 0x78, 0x18, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x30, 0x60, 0x60, 0x60, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x60, 0x30, 0x30, 0x30, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xb0, 0xd8, 0xd8, 0xd8, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xd8, 0xd8, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x70, 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xd8, 0x30, 0x60, 0xc8, 0xf8, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xd8, 0x30, 0x18, 0xd8, 0x70, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x38, 0x78, 0xd8, 0xfc, 0x18, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xc0, 0xf0, 0x18, 0xd8, 0x70, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xc0, 0xf0, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xd8, 0x30, 0x30, 0x60, 0x60, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xd8, 0x70, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xd8, 0xd8, 0x78, 0x18, 0xf0, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0x60, 0x60, 0x60, 0x30, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x30, 0x30, 0x30, 0x30, 0x60, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xd8, 0xd8, 0xd8, 0xd8, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x78, 0xcc, 0xc0, 0xcf, 0xcc, 0xcc, 0x7f, 0x0c, 0x0c, 0x0f, 0x00, 0x00, 0x00, 0x00},
+	{0x04, 0x04, 0x7c, 0xce, 0xc8, 0xc8, 0xd0, 0xd0, 0xd0, 0xe0, 0xe6, 0x7c, 0x40, 0x40, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xd6, 0xd8, 0xd8, 0xd8, 0xde, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xf8, 0xc0, 0xc0, 0xc0, 0xf0, 0xcd, 0xce, 0xcc, 0xcc, 0xcc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x6c, 0x60, 0xf8, 0x60, 0xf8, 0x60, 0x60, 0xe6, 0xfc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x02, 0xec, 0xd6, 0xde, 0xd6, 0xd6, 0xf6, 0xd6, 0x40, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x66, 0x66, 0x76, 0xff, 0x76, 0x6e, 0xff, 0x6e, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfc, 0x66, 0x66, 0x7c, 0x62, 0x66, 0x6f, 0x66, 0x66, 0xf3, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xf8, 0xcc, 0xcc, 0xcc, 0xf8, 0xe0, 0xf3, 0xd6, 0xdb, 0xce, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x81, 0x81, 0x81, 0x5a, 0xff, 0x5a, 0xff, 0x24, 0x24, 0x24, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xf2, 0x8a, 0xaa, 0xaa, 0xaa, 0xaa, 0xa2, 0xbc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x3e, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x7c, 0x00, 0x00},
+	{0x00, 0x00, 0x1c, 0x36, 0x60, 0xfc, 0x60, 0xf8, 0x60, 0x60, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xe6, 0x66, 0x6c, 0x78, 0xfe, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x1e, 0x78, 0x1e, 0x78, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x10, 0x7c, 0xb6, 0x36, 0x33, 0x33, 0x33, 0x63, 0x66, 0xf6, 0xdc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x70, 0xd0, 0xd2, 0xd6, 0x7c, 0x18, 0x30, 0x6e, 0xd8, 0x98, 0x18, 0x0e, 0x00, 0x00, 0x00},
+	{0x00, 0x70, 0xd0, 0xd2, 0xd6, 0x7c, 0x18, 0x30, 0x6e, 0xd8, 0x8c, 0x06, 0x1c, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x62, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0x62, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x4e, 0xb9, 0x58, 0x18, 0x18, 0x18, 0x18, 0x18, 0x19, 0x0e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x18, 0x7c, 0xda, 0xd8, 0xd8, 0xda, 0x7c, 0x19, 0x3f, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x70, 0xc0, 0xc2, 0xc6, 0x7c, 0x18, 0x30, 0x6e, 0xdb, 0x9b, 0x1b, 0x0e, 0x00, 0x00, 0x00},
+	{0x00, 0x70, 0xc0, 0xc2, 0xc6, 0x7c, 0x18, 0x30, 0x7b, 0xdb, 0x9b, 0x1b, 0x0d, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0xc2, 0xc0, 0x78, 0xc0, 0xc0, 0xc2, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x78, 0xcc, 0x86, 0x26, 0x3e, 0x26, 0x06, 0x86, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7f, 0xb9, 0x58, 0x1a, 0x1e, 0x1a, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x66, 0x46, 0x87, 0x8c, 0x8c, 0x7c, 0x98, 0x98, 0x70, 0x00},
+	{0x00, 0x00, 0x52, 0xb5, 0x15, 0x16, 0x2c, 0x34, 0x68, 0xa9, 0xaa, 0x4c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x48, 0xb0, 0x80, 0x48, 0x7c, 0x66, 0x26, 0x26, 0xa6, 0x46, 0x06, 0x34, 0x48, 0x00},
+	{0x00, 0x00, 0xe2, 0xa2, 0xa2, 0xa2, 0xbe, 0xa2, 0xa2, 0xa2, 0xa2, 0xe2, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x18, 0x18, 0x36, 0x3b, 0x3b, 0x33, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x1e, 0x18, 0x76, 0x3b, 0x3b, 0x33, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x33, 0x4e, 0x06, 0x06, 0x0c, 0x0c, 0x1f, 0x6c, 0x88, 0x70, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x71, 0x8e, 0x04, 0x0c, 0x06, 0x03, 0x63, 0xc3, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x46, 0x49, 0x39, 0x1e, 0x18, 0x30, 0x70, 0xb1, 0xba, 0x6c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0e, 0x19, 0x31, 0x32, 0x64, 0x68, 0x70, 0xe1, 0x66, 0x38, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xd8, 0xff, 0xd8, 0xde, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xde, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xe2, 0xa2, 0xb2, 0xb2, 0xaa, 0xaa, 0xa6, 0xa6, 0xa2, 0xe2, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xcc, 0xcf, 0xed, 0xff, 0xfc, 0xdf, 0xcc, 0xcc, 0xcc, 0xcc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x42, 0xb9, 0xa5, 0xa5, 0xb9, 0xa1, 0xa1, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x40, 0x8e, 0x93, 0xa3, 0x63, 0x4b, 0x6a, 0xa4, 0xb0, 0xb0, 0x60, 0x00},
+	{0x00, 0x00, 0xfc, 0xa2, 0xa2, 0xa2, 0xa2, 0xbc, 0xa0, 0xa0, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xaa, 0xa6, 0x7e, 0x01, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3e, 0x4d, 0x4d, 0x19, 0x1e, 0x1c, 0x34, 0x34, 0xb5, 0x62, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x58, 0xa6, 0xa3, 0x6c, 0xb8, 0x26, 0x26, 0x26, 0xa7, 0xc2, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfc, 0xa2, 0xa2, 0xa2, 0xa2, 0xbc, 0xb0, 0xa8, 0xa4, 0xe2, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, 0x6d, 0x67, 0x66, 0xee, 0x08, 0x00, 0x00, 0x00},
+	{0x30, 0x0c, 0xfc, 0xc6, 0xc6, 0xc6, 0xfc, 0xd8, 0xdc, 0xdc, 0xe6, 0xe6, 0x20, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x71, 0xdb, 0x35, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x52, 0x5a, 0x52, 0x5f, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xf1, 0x5b, 0x55, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x60, 0x18, 0xce, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xe6, 0x6c, 0x38, 0x50, 0x40, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0x0a, 0x14, 0x14, 0x28, 0x28, 0x50, 0x50, 0xa0, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0x9c, 0x30, 0xfe, 0x0c, 0x18, 0x38, 0x0c, 0x06, 0x06, 0xc6, 0xc6, 0x7c, 0x00},
+	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x6c, 0x6c, 0x6c, 0xee, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xee, 0x6c, 0x6c, 0x6c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x26, 0x03, 0x13, 0x0c, 0x13, 0x03, 0x03, 0x66, 0x98, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x18, 0x18, 0x18, 0x18, 0x1c, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00},
+	{0x38, 0x6c, 0x38, 0x10, 0x38, 0x38, 0x6c, 0x6c, 0xc6, 0xfe, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x1e, 0x2d, 0x2d, 0x1a, 0x1e, 0x1b, 0x31, 0x31, 0xb2, 0x6c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x14, 0x6b, 0xc8, 0xcc, 0xc6, 0xc6, 0xcc, 0xc0, 0x63, 0x1c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0xe7, 0xff, 0xe0, 0x67, 0x3e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x26, 0x44, 0xf8, 0xc0, 0xc8, 0x70, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x4c, 0x52, 0x3c, 0x10, 0x3c, 0x60, 0xc0, 0xc3, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x73, 0xce, 0x18, 0x3a, 0x5c, 0x18, 0x30, 0x30, 0xb0, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0c, 0x2c, 0x3c, 0x2c, 0x8c, 0xcc, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x12, 0x12, 0x12, 0x16, 0x36, 0x3e, 0x3a, 0x5a, 0x52, 0x91, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x26, 0x46, 0xc6, 0xc4, 0xc8, 0x70, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x42, 0xc6, 0xe7, 0x7a, 0x38, 0x5c, 0xce, 0xe7, 0x63, 0xe2, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x80, 0xfc, 0x7e, 0x06, 0x06, 0x06, 0x06, 0x0c, 0x7e, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x40, 0x78, 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x1e, 0x7e, 0xf2, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x80, 0xfe, 0x7e, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x1c, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x38, 0x00, 0x78, 0x38, 0x38, 0x38, 0x38, 0x38, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0xff, 0x83, 0x86, 0x82, 0xfe, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0xc0, 0xc0, 0xc2, 0xc6, 0xcc, 0x18, 0x30, 0x60, 0xdc, 0x86, 0x1c, 0x06, 0x1c, 0x00, 0x00},
+	{0x00, 0xe0, 0x30, 0x62, 0xc6, 0xfc, 0x18, 0x30, 0x60, 0xdc, 0x86, 0x1c, 0x06, 0x1c, 0x00, 0x00},
+	{0x00, 0xc0, 0xc0, 0xc2, 0xc6, 0xcc, 0x18, 0x30, 0x60, 0xde, 0x98, 0x1c, 0x06, 0x1c, 0x00, 0x00},
+	{0x00, 0xe0, 0x30, 0x62, 0xc6, 0xfc, 0x18, 0x30, 0x60, 0xde, 0x98, 0x1c, 0x06, 0x1c, 0x00, 0x00},
+	{0x00, 0xe0, 0x30, 0x62, 0x36, 0xec, 0x18, 0x30, 0x60, 0xde, 0x98, 0x1c, 0x06, 0x1c, 0x00, 0x00},
+	{0x00, 0x30, 0x70, 0xb2, 0xf6, 0x3c, 0x18, 0x30, 0x60, 0xde, 0x98, 0x1c, 0x06, 0x1c, 0x00, 0x00},
+	{0x00, 0xc0, 0xc0, 0xc2, 0xc6, 0xcc, 0x18, 0x30, 0x60, 0xdc, 0xb0, 0x3c, 0x36, 0x1c, 0x00, 0x00},
+	{0x00, 0xf0, 0xc0, 0xe2, 0x36, 0xec, 0x18, 0x30, 0x60, 0xdc, 0xb0, 0x3c, 0x36, 0x1c, 0x00, 0x00},
+	{0x00, 0xc0, 0xc0, 0xc2, 0xc6, 0xcc, 0x18, 0x30, 0x60, 0xdc, 0xb6, 0x1c, 0x36, 0x1c, 0x00, 0x00},
+	{0x00, 0xe0, 0x30, 0x62, 0x36, 0xec, 0x18, 0x30, 0x60, 0xdc, 0xb6, 0x1c, 0x36, 0x1c, 0x00, 0x00},
+	{0x00, 0xf0, 0x80, 0xe2, 0x36, 0xec, 0x18, 0x30, 0x60, 0xdc, 0xb6, 0x1c, 0x36, 0x1c, 0x00, 0x00},
+	{0x00, 0xf0, 0x30, 0x62, 0x66, 0x6c, 0x18, 0x30, 0x60, 0xdc, 0xb6, 0x1c, 0x36, 0x1c, 0x00, 0x00},
+	{0x00, 0xc0, 0xc0, 0xc2, 0xc6, 0xcc, 0x18, 0x30, 0x60, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xff, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xff, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xce, 0xce, 0xc4, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0x73, 0x73, 0x23, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x65, 0x65, 0x65, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xdb, 0xdb, 0xdb, 0xce, 0xce, 0xce, 0xdb, 0xdb, 0xdb, 0xdb, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0x6c, 0x7c, 0x38, 0x38, 0x7c, 0x6c, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xdb, 0xdb, 0xdb, 0x73, 0x73, 0x73, 0xdb, 0xdb, 0xdb, 0xdb, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x95, 0x95, 0x95, 0x65, 0x65, 0x65, 0x95, 0x95, 0x95, 0x95, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x6c, 0x00, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xdb, 0xdb, 0x00, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc0, 0xc0, 0x00, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xce, 0xc4, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x03, 0x03, 0x00, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0x73, 0x23, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x05, 0x05, 0x00, 0x95, 0x95, 0x95, 0x95, 0x95, 0x65, 0x65, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x15, 0x15, 0x00, 0xb5, 0xb5, 0xb5, 0xb5, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc0, 0xc0, 0x00, 0xdb, 0xdb, 0xce, 0xce, 0xce, 0xdb, 0xdb, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x6c, 0x38, 0x38, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x03, 0x03, 0x00, 0xdb, 0xdb, 0x73, 0x73, 0x73, 0xdb, 0xdb, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x05, 0x05, 0x00, 0x95, 0x95, 0x65, 0x65, 0x95, 0x95, 0x95, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0xfe, 0xd6, 0xd6, 0xd6, 0xd6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x5a, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0x5a, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xf8, 0xcc, 0xe6, 0xd6, 0xd6, 0xd6, 0xd6, 0xe6, 0xcc, 0xf8, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x5a, 0x99, 0xbd, 0xdb, 0xdb, 0xbd, 0x99, 0x5a, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x78, 0xcc, 0x86, 0x06, 0x06, 0x06, 0x06, 0x86, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0xff, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x06, 0xff, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x66, 0xff, 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xf0, 0xe0, 0xb0, 0x18, 0x0c, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x0f, 0x07, 0x0d, 0x18, 0x30, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x30, 0x18, 0x0d, 0x07, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x0c, 0x18, 0xb0, 0xe0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x62, 0xff, 0x64, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x26, 0xff, 0x46, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xce, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x73, 0xdd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x6c, 0xff, 0x6c, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x36, 0xff, 0x36, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x66, 0xfc, 0x66, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x66, 0x3f, 0x66, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x63, 0xff, 0x63, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xc6, 0xff, 0xc6, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x06, 0x33, 0x63, 0xfe, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x60, 0xcc, 0xc6, 0x7f, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x06, 0x3b, 0x6b, 0xfe, 0x68, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x60, 0xdc, 0xd6, 0x7f, 0x16, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x5a, 0xff, 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x6e, 0xff, 0x76, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x30, 0x30, 0x60, 0x63, 0xff, 0xc6, 0x16, 0x1c, 0x1c, 0x1e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x30, 0x60, 0xfe, 0x66, 0x36, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x18, 0x0c, 0xfe, 0xcc, 0xd8, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x36, 0x66, 0xfe, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xd8, 0xcc, 0xfe, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x0c, 0x0c, 0x3f, 0x1e, 0x0c, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x36, 0x66, 0xfe, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x1e, 0x33, 0x33, 0x33, 0x30, 0xfc, 0x78, 0x30, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x78, 0xcc, 0xcc, 0xcc, 0x0c, 0x3f, 0x1e, 0x0c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xff, 0x00, 0xf0, 0xe0, 0xb0, 0x18, 0x0c, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x98, 0xb0, 0xff, 0xb0, 0x98, 0x19, 0x0d, 0xff, 0x0d, 0x19, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x1e, 0x1c, 0x16, 0x03, 0xc3, 0xc3, 0xc3, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x78, 0x38, 0x68, 0xc0, 0xc3, 0xc3, 0xc3, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x1c, 0x1e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x38, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x06, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1e, 0x1c, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x78, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x06, 0xff, 0x06, 0x0c, 0x30, 0x60, 0xff, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x24, 0x2e, 0x3f, 0x24, 0x24, 0x24, 0x24, 0xfc, 0x74, 0x24, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x30, 0x60, 0xff, 0x60, 0x30, 0x0c, 0x06, 0xff, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x30, 0x60, 0xfe, 0x60, 0x30, 0x00, 0x30, 0x60, 0xfe, 0x60, 0x30, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x24, 0x7e, 0xff, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x0c, 0xfe, 0x0c, 0x18, 0x00, 0x18, 0x0c, 0xfe, 0x0c, 0x18, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0xff, 0x7e, 0x24, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0xff, 0x00, 0xff, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x0c, 0x06, 0xff, 0x00, 0xff, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x7f, 0xc4, 0x7f, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x7e, 0xcb, 0x7e, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0xfe, 0x23, 0xfe, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x7f, 0xc0, 0x7f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x7c, 0xee, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xfe, 0x03, 0xfe, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xee, 0x7c, 0x38, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x7e, 0xc3, 0x7e, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x7c, 0xee, 0x6c, 0x6c, 0x6c, 0x6c, 0xee, 0x7c, 0x38, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xf0, 0xe0, 0xb0, 0xd8, 0xec, 0xb6, 0x1b, 0x0c, 0x04, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x0f, 0x07, 0x0d, 0x1b, 0x37, 0x6d, 0xd8, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x20, 0x30, 0xd8, 0x6d, 0x37, 0x1b, 0x0d, 0x07, 0x0f, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x04, 0x0c, 0x1b, 0xb6, 0xec, 0xd8, 0xb0, 0xe0, 0xf0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x10, 0x3f, 0x60, 0xff, 0x60, 0x3f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x08, 0xfc, 0x06, 0xff, 0x06, 0xfc, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x6a, 0xff, 0x65, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xa6, 0xff, 0x56, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x3c, 0x18, 0x3c, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x3c, 0x18, 0x3c, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0xd5, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x3c, 0x66, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x06, 0xab, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x66, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0xb0, 0xff, 0xb0, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x0d, 0xff, 0x0d, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x10, 0x3f, 0x41, 0x81, 0x41, 0x3f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x28, 0x44, 0xc6, 0x44, 0x44, 0x44, 0x44, 0x44, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x08, 0xfc, 0x82, 0x81, 0x82, 0xfc, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0x44, 0x44, 0x44, 0x44, 0x44, 0xc6, 0x44, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x28, 0x44, 0xc6, 0x44, 0x44, 0x7c, 0x00, 0x7c, 0x44, 0x7c, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x28, 0x44, 0xc6, 0x44, 0x44, 0x44, 0xc6, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x28, 0x7c, 0xc6, 0x44, 0x44, 0x44, 0xc6, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x38, 0x54, 0xd6, 0x54, 0x54, 0x54, 0xd6, 0x92, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x10, 0x28, 0x54, 0xee, 0x44, 0xc6, 0x44, 0x44, 0x44, 0x44, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x10, 0x28, 0x54, 0xee, 0x44, 0xc6, 0x44, 0x44, 0xc6, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xe8, 0xbc, 0x82, 0x81, 0x82, 0xbc, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xff, 0x80, 0xbc, 0xb8, 0xac, 0x86, 0x83, 0x81, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x01, 0x81, 0xc1, 0x61, 0x35, 0x1d, 0x3d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x28, 0x44, 0xc6, 0x44, 0x44, 0x44, 0xc6, 0x44, 0x28, 0x10, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0xfe, 0xc6, 0x6c, 0x6c, 0x38, 0x38, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x60, 0x60, 0x60, 0x60, 0x60, 0x66, 0x3c, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x6c, 0x06, 0x06, 0x3e, 0x66, 0xc6, 0xc6, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0x06, 0x06, 0x06, 0x7e, 0x06, 0x06, 0x06, 0x06, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x08, 0xfe, 0x16, 0x16, 0x16, 0x7e, 0x16, 0x26, 0x26, 0x26, 0xfe, 0x40, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x03, 0x3e, 0x66, 0xcf, 0xdb, 0xdb, 0xf3, 0x66, 0x7c, 0xc0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x10, 0x38, 0x38, 0x6c, 0x6c, 0xc6, 0xc6, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0xc6, 0xc6, 0xc6, 0x6c, 0x6c, 0x38, 0x38, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x3e, 0x60, 0xc0, 0xc0, 0xfe, 0xc0, 0xc0, 0x60, 0x3e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x04, 0x3e, 0x64, 0xc8, 0xc8, 0xfe, 0xc8, 0xd0, 0x70, 0x3e, 0x20, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x3e, 0x60, 0xc0, 0xfe, 0xc0, 0x60, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xf8, 0x0c, 0x06, 0x06, 0xfe, 0x06, 0x06, 0x0c, 0xf8, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x08, 0xf8, 0x1c, 0x16, 0x26, 0xfe, 0x26, 0x26, 0x4c, 0xf8, 0x40, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xf8, 0x0c, 0x06, 0xfe, 0x06, 0x0c, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xff, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xe7, 0x00, 0x00},
+	{0x00, 0x00, 0xe7, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xff, 0x00, 0x00},
+	{0x00, 0x00, 0xff, 0xc1, 0x60, 0x30, 0x18, 0x0c, 0x0c, 0x18, 0x30, 0x60, 0xc1, 0xff, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0xc0, 0xc0, 0x00, 0x00, 0x00},
+	{0x00, 0xc0, 0xc0, 0x60, 0x60, 0x30, 0x30, 0x18, 0x18, 0x0c, 0x0c, 0x06, 0x06, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x18, 0x7e, 0x18, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x24, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x03, 0x03, 0x06, 0x06, 0x06, 0x0c, 0xcc, 0x6c, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xe3, 0x33, 0x66, 0x36, 0xe6, 0x0c, 0xcc, 0x6c, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x33, 0x73, 0xb6, 0xf6, 0x36, 0x0c, 0xcc, 0x6c, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xd8, 0xd8, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdb, 0xdb, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xff, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x16, 0x0c, 0x1c, 0x34, 0x62, 0xff, 0x02, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x38, 0xe8, 0x38, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x18, 0x1a, 0x1c, 0x38, 0x58, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6c, 0x6c, 0x6c, 0x6e, 0x7c, 0xec, 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x38, 0x38, 0x6c, 0x6c, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0x6c, 0x6c, 0x38, 0x38, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x1a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x58, 0x30, 0x00, 0x00},
+	{0x33, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xcc, 0x00, 0x00},
+	{0x2a, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0xa8, 0x00, 0x00},
+	{0x0c, 0x1a, 0x18, 0x18, 0x3c, 0x5a, 0x99, 0x99, 0x5a, 0x3c, 0x18, 0x18, 0x58, 0x30, 0x00, 0x00},
+	{0x33, 0x66, 0x66, 0x66, 0x7e, 0xe7, 0xe7, 0xe7, 0xe7, 0x7e, 0x66, 0x66, 0x66, 0xcc, 0x00, 0x00},
+	{0x2a, 0x54, 0x54, 0x54, 0x7c, 0xd6, 0xd6, 0xd6, 0xd6, 0x7c, 0x54, 0x54, 0x54, 0xa8, 0x00, 0x00},
+	{0x18, 0x34, 0x30, 0x30, 0x38, 0x35, 0x33, 0x37, 0x30, 0x30, 0x30, 0x30, 0xb0, 0x60, 0x00, 0x00},
+	{0x0c, 0x1a, 0x18, 0x18, 0x3c, 0x5a, 0xfa, 0x5a, 0x5a, 0x3c, 0x18, 0x18, 0x58, 0x30, 0x00, 0x00},
+	{0x0c, 0x1a, 0x18, 0x18, 0x3c, 0x5a, 0x5f, 0x5a, 0x5a, 0x3c, 0x18, 0x18, 0x58, 0x30, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0xfc, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x7e, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x76, 0xdc, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xdb, 0xdb, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x70, 0xd8, 0xdb, 0xdb, 0x1b, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x1c, 0x30, 0x30, 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x38, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x08, 0x08, 0x10, 0x76, 0xdc, 0x10, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x08, 0x08, 0x76, 0xdc, 0x10, 0xfe, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x08, 0xfe, 0x10, 0xfe, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x08, 0x08, 0x76, 0xdc, 0x10, 0xfe, 0x20, 0xfe, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x08, 0x08, 0x76, 0xdc, 0x10, 0x76, 0xdc, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x00, 0x76, 0xdc, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x76, 0xdc, 0x00, 0x76, 0xdc, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x7c, 0x00, 0x7c, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x18, 0x66, 0x00, 0x00, 0x66, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x18, 0x66, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x00, 0x7e, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x00, 0x7e, 0x00, 0x00, 0x7e, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x60, 0x60, 0x00, 0x7e, 0x00, 0x00, 0x7e, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x06, 0x06, 0x00, 0x7e, 0x00, 0x00, 0x7e, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xc0, 0xdf, 0x00, 0x00, 0xdf, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x03, 0xfb, 0x00, 0x00, 0xfb, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x28, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x28, 0x10, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x38, 0x44, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x28, 0x44, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x44, 0x28, 0x10, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x10, 0x10, 0x7c, 0x28, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x10, 0x28, 0x44, 0x7c, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x26, 0x7c, 0xb4, 0x6c, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x68, 0x54, 0x54, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x30, 0x08, 0x10, 0x00, 0x10, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x04, 0x08, 0x7e, 0x08, 0x10, 0x7e, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0xfe, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x04, 0x08, 0xfe, 0x08, 0x10, 0xfe, 0x10, 0x20, 0xfe, 0x20, 0x40, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0x00, 0x00, 0xfe, 0x00, 0x00, 0xfe, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x0e, 0x38, 0xe0, 0x38, 0x0e, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xe0, 0x38, 0x0e, 0x38, 0xe0, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x0e, 0x38, 0xe0, 0x38, 0x0e, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xe0, 0x38, 0x0e, 0x38, 0xe0, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x0e, 0x38, 0xe0, 0x38, 0x0e, 0x08, 0xfe, 0x10, 0xfe, 0x20, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xe0, 0x38, 0x0e, 0x38, 0xe0, 0x08, 0xfe, 0x10, 0xfe, 0x20, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x1b, 0x36, 0x6c, 0xd8, 0x6c, 0x36, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xd8, 0x6c, 0x36, 0x1b, 0x36, 0x6c, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x66, 0x18, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x66, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x08, 0xce, 0x7c, 0x10, 0x7c, 0xe6, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x04, 0x04, 0x0e, 0x38, 0xe8, 0x38, 0x0e, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x10, 0xe0, 0x38, 0x2e, 0x38, 0xe0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x04, 0x04, 0x0e, 0x38, 0xe8, 0x38, 0x0e, 0x10, 0xfe, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x10, 0xe0, 0x38, 0x2e, 0x38, 0xe0, 0x40, 0xfe, 0x40, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x0e, 0x38, 0xe0, 0x38, 0x0e, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xe0, 0x38, 0x0e, 0x38, 0xe0, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x04, 0x04, 0x0e, 0x38, 0xe8, 0x38, 0x0e, 0x10, 0x76, 0xdc, 0x20, 0x20, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x10, 0xe0, 0x38, 0x2e, 0x38, 0xe0, 0x40, 0x76, 0xdc, 0x80, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0e, 0x38, 0xe0, 0x38, 0x0e, 0xe0, 0x38, 0x0e, 0x38, 0xe0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xe0, 0x38, 0x0e, 0x38, 0xe0, 0x0e, 0x38, 0xe0, 0x38, 0x0e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x08, 0x0e, 0x38, 0xe8, 0x38, 0x1e, 0xf0, 0x38, 0x2e, 0x38, 0xe0, 0x20, 0x00, 0x00, 0x00},
+	{0x00, 0x08, 0xe8, 0x38, 0x0e, 0x38, 0xf0, 0x1e, 0x38, 0xe0, 0x38, 0x2e, 0x20, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x02, 0x06, 0x1c, 0xf0, 0x1c, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x80, 0xc0, 0x70, 0x1e, 0x70, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x02, 0x06, 0x1c, 0xf0, 0x1c, 0x06, 0xf2, 0x1c, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x80, 0xc0, 0x70, 0x1e, 0x70, 0xc0, 0x9e, 0x70, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x02, 0x06, 0x1c, 0xf0, 0x1c, 0x06, 0x02, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x80, 0xc0, 0x70, 0x1e, 0x70, 0xc0, 0x80, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x04, 0x06, 0x0c, 0x38, 0xe8, 0x38, 0x1c, 0x16, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0xd0, 0x70, 0x38, 0x2e, 0x38, 0x60, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x7e, 0xc0, 0xc0, 0xc0, 0xc0, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xfc, 0x06, 0x06, 0x06, 0x06, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x04, 0x7e, 0xc8, 0xc8, 0xd0, 0xd0, 0x7e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x08, 0xfc, 0x16, 0x16, 0x26, 0x26, 0xfc, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x7e, 0xc0, 0xc0, 0xc0, 0xc0, 0x7e, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xfc, 0x06, 0x06, 0x06, 0x06, 0xfc, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x04, 0x7e, 0xc8, 0xc8, 0xd0, 0xd0, 0x7e, 0x20, 0xfe, 0x40, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x08, 0xfc, 0x16, 0x16, 0x26, 0x26, 0xfc, 0x40, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x7e, 0xc0, 0xc0, 0xc0, 0xc0, 0x7e, 0x08, 0xfe, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xfc, 0x06, 0x06, 0x06, 0x06, 0xfc, 0x10, 0xfe, 0x20, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x82, 0x92, 0xa2, 0xfa, 0xa2, 0x92, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x82, 0x82, 0x92, 0xba, 0xba, 0x92, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x82, 0x82, 0x92, 0xba, 0x92, 0x82, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0x06, 0x06, 0x06, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xfe, 0x06, 0x06, 0x06, 0x06, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x38, 0x54, 0x92, 0xfe, 0x92, 0x54, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x82, 0xfe, 0x82, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0xaa, 0x92, 0xaa, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x8a, 0x92, 0xa2, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x92, 0xba, 0x92, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x92, 0xaa, 0x92, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x38, 0x54, 0xd6, 0xba, 0xd6, 0x54, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0xba, 0x82, 0xba, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x82, 0xba, 0x82, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xfe, 0x92, 0x92, 0xfe, 0x92, 0x92, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xfe, 0x82, 0x82, 0xfe, 0x82, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xfe, 0xc6, 0xaa, 0x92, 0xaa, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xfe, 0x82, 0x92, 0xba, 0x92, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0xff, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x7e, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x7e, 0x60, 0x7e, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xd8, 0xd8, 0xd8, 0xd8, 0xdf, 0xd8, 0xd8, 0xd8, 0xd8, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xa8, 0xa8, 0xa8, 0xa8, 0xaf, 0xa8, 0xa8, 0xa8, 0xa8, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xd8, 0xd8, 0xd8, 0xdf, 0xd8, 0xdf, 0xd8, 0xd8, 0xd8, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xc0, 0xc2, 0xc4, 0xc4, 0xff, 0xc8, 0xc8, 0xd0, 0xc0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xc0, 0xc4, 0xc4, 0xff, 0xc8, 0xff, 0xd0, 0xd0, 0xc0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xd8, 0xd9, 0xda, 0xda, 0xdf, 0xda, 0xda, 0xdc, 0xd8, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xd8, 0xd9, 0xda, 0xdf, 0xda, 0xdf, 0xda, 0xdc, 0xd8, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x0c, 0x06, 0x1c, 0xf0, 0x1c, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x60, 0xc0, 0x70, 0x1e, 0x70, 0xc0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x06, 0x1e, 0x76, 0xc6, 0x76, 0x1e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xc0, 0xf0, 0xdc, 0xc6, 0xdc, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x06, 0x1e, 0x76, 0xc6, 0x76, 0x1e, 0x06, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc0, 0xf0, 0xdc, 0xc6, 0xdc, 0xf0, 0xc0, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xbf, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xfd, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x7d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0xc6, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc6, 0xc6, 0x6c, 0x6c, 0x38, 0x38, 0x10, 0x10, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0x00, 0x10, 0x10, 0x38, 0x38, 0x6c, 0x6c, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0x00, 0xc6, 0xc6, 0x6c, 0x6c, 0x38, 0x38, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xf0, 0xc8, 0xc4, 0xc4, 0xff, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0b, 0x13, 0x23, 0x43, 0x83, 0xff, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x10, 0x10, 0x38, 0x38, 0x6c, 0x6c, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xc6, 0xc6, 0x6c, 0x6c, 0x38, 0x38, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x7c, 0x38, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x92, 0x44, 0x28, 0x92, 0x28, 0x44, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x82, 0xc6, 0xaa, 0x92, 0xaa, 0xc6, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x82, 0xc4, 0xa8, 0x90, 0xa8, 0xc4, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x82, 0x46, 0x2a, 0x12, 0x2a, 0x46, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x28, 0x44, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x08, 0x10, 0x28, 0x44, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x38, 0x38, 0x6c, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xc6, 0x6c, 0x6c, 0x38, 0x38, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x3e, 0x60, 0xce, 0xd8, 0xd8, 0xce, 0x60, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xf8, 0x0c, 0xe6, 0x36, 0x36, 0xe6, 0x0c, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x38, 0x44, 0x92, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x92, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x10, 0x38, 0x54, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x18, 0x30, 0x64, 0xce, 0x64, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x4c, 0xe6, 0x4c, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x15, 0x2a, 0x54, 0xa8, 0x54, 0x2a, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xa8, 0x54, 0x2a, 0x15, 0x2a, 0x54, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x0e, 0x38, 0xe0, 0x38, 0x0e, 0x00, 0xfe, 0x00, 0xe0, 0x38, 0x0e, 0x38, 0xe0, 0x00, 0x00},
+	{0x00, 0xe0, 0x38, 0x0e, 0x38, 0xe0, 0x00, 0xfe, 0x00, 0x0e, 0x38, 0xe0, 0x38, 0x0e, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x0e, 0x38, 0xe0, 0x38, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0xe0, 0x38, 0x0e, 0x38, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x02, 0x06, 0x1c, 0xf2, 0x06, 0x1c, 0xf0, 0x1c, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x80, 0xc0, 0x70, 0x9e, 0xc0, 0x70, 0x1e, 0x70, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0a, 0x0e, 0x1c, 0xf0, 0x1c, 0x16, 0xf2, 0x1c, 0x26, 0x22, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x88, 0xc8, 0x70, 0x1e, 0x70, 0xd0, 0x9e, 0x70, 0xe0, 0xa0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x04, 0xfe, 0xc8, 0xc8, 0xd0, 0xd0, 0xfe, 0x20, 0xfe, 0x40, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x08, 0xfe, 0x16, 0x16, 0x26, 0x26, 0xfe, 0x40, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0xfe, 0x08, 0xfe, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xfe, 0x06, 0x06, 0x06, 0x06, 0xfe, 0x10, 0xfe, 0x20, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x0e, 0x38, 0xe0, 0x38, 0x0e, 0x10, 0x76, 0xdc, 0x10, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xe0, 0x38, 0x0e, 0x38, 0xe0, 0x10, 0x76, 0xdc, 0x10, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x02, 0x06, 0x1c, 0xf0, 0x1c, 0x06, 0x02, 0x10, 0x76, 0xdc, 0x10, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x80, 0xc0, 0x70, 0x1e, 0x70, 0xc0, 0x80, 0x10, 0x76, 0xdc, 0x10, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x08, 0x0e, 0x1e, 0x76, 0xd6, 0x76, 0x1e, 0x26, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x08, 0xc8, 0xf0, 0xdc, 0xd6, 0xdc, 0xf0, 0xe0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x08, 0x0e, 0x1e, 0x76, 0xd6, 0x76, 0x1e, 0x26, 0x20, 0xfe, 0x40, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x08, 0xc8, 0xf0, 0xdc, 0xd6, 0xdc, 0xf0, 0xe0, 0x20, 0xfe, 0x40, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdb, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x3d, 0x66, 0xc7, 0xcb, 0xd3, 0xe3, 0x66, 0xbc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x1e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x00, 0x00, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1e, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x42, 0xa5, 0x7e, 0x24, 0x24, 0x7e, 0xa5, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x38, 0x38, 0x54, 0x8a, 0xf6, 0x82, 0x54, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0xfe, 0xfe, 0x44, 0x44, 0x28, 0x10, 0x28, 0x44, 0x44, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0e, 0x1b, 0x1b, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xd8, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x0c, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0x30, 0x30, 0x18, 0x18, 0x0c, 0x0c, 0x00, 0x00},
+	{0x60, 0x60, 0x30, 0x30, 0x18, 0x18, 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0x00, 0x00},
+	{0x00, 0x03, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30},
+	{0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30},
+	{0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x06, 0x03, 0x00, 0x00},
+	{0x00, 0xc0, 0x60, 0x30, 0x30, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c},
+	{0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c},
+	{0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x18, 0x18, 0x30, 0x30, 0x60, 0xc0, 0x00, 0x00},
+	{0x00, 0x3f, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30},
+	{0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30},
+	{0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3f, 0x00, 0x00},
+	{0x00, 0xfc, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c},
+	{0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c},
+	{0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xfc, 0x00, 0x00},
+	{0x00, 0x07, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x30, 0xe0, 0x30, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x07, 0x00, 0x00},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x00, 0xe0, 0x30, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x07, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x30, 0xe0, 0x00, 0x00},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x07, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x30, 0xe0},
+	{0xe0, 0x30, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x07},
+	{0x00, 0x00, 0xff, 0xc1, 0xc0, 0x60, 0x60, 0x60, 0x60, 0x30, 0x30, 0x30, 0x30, 0x18, 0x18, 0x18},
+	{0x18, 0x18, 0x18, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0x60, 0xc0, 0xc1, 0xff, 0x00, 0x00},
+	{0x00, 0x00, 0xff, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xff, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xff, 0x00, 0xff, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xd8, 0xd8, 0x78, 0x78, 0x38, 0x38, 0x18, 0x18, 0x00, 0x00},
+	{0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0},
+	{0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03},
+	{0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x07, 0x05, 0x05, 0x05, 0x05, 0x25, 0x79, 0xc2, 0x7c, 0x20, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xd8, 0xd8, 0xf8, 0xd8, 0xd8, 0x0f, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xf0, 0x0f, 0x0c, 0x0e, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xd8, 0xd8, 0xf8, 0x70, 0x20, 0x0f, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xf0, 0xc0, 0xe0, 0xc0, 0xc0, 0x0f, 0x0c, 0x0e, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x70, 0xc0, 0xc0, 0xc0, 0x70, 0x1e, 0x1b, 0x1e, 0x1b, 0x1b, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x98, 0xd8, 0xf8, 0xd8, 0xd8, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7c, 0xfe, 0xc6, 0xc6, 0x60, 0x30, 0x30, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00},
+	{0x1c, 0x1c, 0x1c, 0x1c, 0x00, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x00, 0x1c, 0x1c, 0x1c, 0x1c, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00},
+	{0x1c, 0x1c, 0x1c, 0x00, 0x1c, 0x1c, 0x1c, 0x00, 0x1c, 0x1c, 0x1c, 0x00, 0x1c, 0x1c, 0x1c, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
+	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1f, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
+	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1f, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x1f, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
+	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1f, 0x1f, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xfc, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xfc, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
+	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xfc, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
+	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xfc, 0xfc, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xfc, 0xfc, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
+	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xfc, 0xfc, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x1f, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
+	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
+	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0xfc, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0xfc, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x1f, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
+	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0xff, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
+	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0xfc, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
+	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0x1f, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
+	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0xff, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00},
+	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x00, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0xf6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, 0x06, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36},
+	{0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36},
+	{0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, 0x06, 0xf6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xf7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xf7, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xff, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36},
+	{0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xf7, 0x00, 0xf7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0e, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x70, 0x30, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x30, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80},
+	{0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01},
+	{0x81, 0x81, 0x42, 0x42, 0x24, 0x24, 0x18, 0x18, 0x18, 0x18, 0x24, 0x24, 0x42, 0x42, 0x81, 0x81},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},
+	{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
+	{0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
+	{0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
+	{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
+	{0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe},
+	{0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc},
+	{0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8},
+	{0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0},
+	{0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0},
+	{0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0},
+	{0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80},
+	{0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f},
+	{0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44},
+	{0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa},
+	{0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77},
+	{0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01},
+	{0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xfe, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x7c, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xfe, 0x82, 0xba, 0xba, 0xba, 0xba, 0xba, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xfe, 0x82, 0xfe, 0x82, 0xfe, 0x82, 0xfe, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xfe, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xfe, 0xaa, 0xfe, 0xaa, 0xfe, 0xaa, 0xfe, 0xaa, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xfe, 0x8a, 0xc6, 0xa2, 0x92, 0x8a, 0xc6, 0xa2, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xfe, 0xa2, 0xc6, 0x8a, 0x92, 0xa2, 0xc6, 0x8a, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xfe, 0xaa, 0xc6, 0xaa, 0x92, 0xaa, 0xc6, 0xaa, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x44, 0x44, 0x44, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x82, 0x82, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0xfe, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x7e, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x42, 0x42, 0x84, 0x84, 0xfc, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x38, 0x7c, 0x7c, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x28, 0x44, 0x44, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x38, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x28, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x80, 0xc0, 0xa0, 0x90, 0x88, 0x84, 0x88, 0x90, 0xa0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x70, 0x78, 0x70, 0x40, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x70, 0x48, 0x70, 0x40, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf8, 0xfe, 0xf8, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x98, 0x86, 0x98, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0xfe, 0x7c, 0x7c, 0x38, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0x82, 0x44, 0x44, 0x28, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x38, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x28, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x02, 0x06, 0x0e, 0x1e, 0x3e, 0x7e, 0x3e, 0x1e, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x02, 0x06, 0x0a, 0x12, 0x22, 0x42, 0x22, 0x12, 0x0a, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x38, 0x78, 0x38, 0x08, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x38, 0x48, 0x38, 0x08, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x3e, 0xfe, 0x3e, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x32, 0xc2, 0x32, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x38, 0x7c, 0x7c, 0xfe, 0xfe, 0x7c, 0x7c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x28, 0x44, 0x44, 0x82, 0x82, 0x44, 0x44, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x28, 0x44, 0x54, 0xba, 0xba, 0x54, 0x44, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x42, 0x99, 0xbd, 0xbd, 0xbd, 0xbd, 0x99, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x28, 0x28, 0x44, 0x82, 0x82, 0x44, 0x28, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x42, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x14, 0x40, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x02, 0x28, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x42, 0x99, 0xa5, 0xa5, 0xa5, 0xa5, 0x99, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7e, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x72, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0x72, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x4e, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x4e, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x42, 0x81, 0x81, 0x81, 0xff, 0xff, 0xff, 0x7e, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x7e, 0xff, 0xff, 0xff, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x4e, 0x8f, 0x8f, 0x8f, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x4e, 0x8f, 0x8f, 0x8f, 0xff, 0xff, 0xff, 0x7e, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x30, 0x70, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0x70, 0x30, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x0c, 0x00, 0x00, 0x00, 0x00},
+	{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xc3, 0xc3, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
+	{0xff, 0xff, 0xc3, 0xbd, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0xbd, 0xc3, 0xff, 0xff, 0xff, 0xff},
+	{0xff, 0xff, 0xc3, 0xbd, 0x7e, 0x7e, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x7e, 0xbd, 0xc3, 0xff, 0xff, 0xff, 0xff},
+	{0x00, 0x00, 0x30, 0x40, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0c, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x0c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x30, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x42, 0x81, 0x81, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x01, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0f, 0x0f, 0x1f, 0x1f, 0x3f, 0x3f, 0x7f, 0x7f, 0xff, 0xff},
+	{0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0xf0, 0xf0, 0xf8, 0xf8, 0xfc, 0xfc, 0xfe, 0xfe, 0xff, 0xff},
+	{0xff, 0xff, 0xfe, 0xfe, 0xfc, 0xfc, 0xf8, 0xf8, 0xf0, 0xf0, 0xe0, 0xe0, 0xc0, 0xc0, 0x80, 0x80},
+	{0xff, 0xff, 0x7f, 0x7f, 0x3f, 0x3f, 0x1f, 0x1f, 0x0f, 0x0f, 0x07, 0x07, 0x03, 0x03, 0x01, 0x01},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x42, 0x42, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xff, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xff, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xff, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0xff, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xff, 0xff, 0xfd, 0xf9, 0xf1, 0xf1, 0xe1, 0xc1, 0x81, 0xff, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xff, 0x81, 0x83, 0x87, 0x8f, 0x8f, 0x9f, 0xbf, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xff, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xff, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x10, 0x10, 0x28, 0x28, 0x44, 0x44, 0x92, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x10, 0x10, 0x38, 0x38, 0x74, 0x74, 0xf2, 0xf2, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x10, 0x10, 0x38, 0x38, 0x5c, 0x5c, 0x9e, 0x9e, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x42, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xfe, 0x92, 0x92, 0x92, 0xf2, 0x82, 0x82, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xfe, 0x82, 0x82, 0x82, 0xf2, 0x92, 0x92, 0x92, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xfe, 0x82, 0x82, 0x82, 0x9e, 0x92, 0x92, 0x92, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xfe, 0x92, 0x92, 0x92, 0x9e, 0x82, 0x82, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x4a, 0x89, 0x89, 0x89, 0xf9, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x42, 0x81, 0x81, 0xf9, 0x89, 0x89, 0x89, 0x4a, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x42, 0x81, 0x81, 0x9f, 0x91, 0x91, 0x91, 0x52, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x52, 0x91, 0x91, 0x91, 0x9f, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x10, 0x10, 0x54, 0x38, 0xfe, 0x38, 0x54, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x30, 0x7c, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x38, 0x7c, 0xfe, 0x10, 0x10, 0x10, 0x10, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x10, 0x10, 0x38, 0xfe, 0x7c, 0x38, 0x6c, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x10, 0x10, 0x28, 0xee, 0x44, 0x54, 0x6c, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x08, 0x18, 0x30, 0x60, 0xc0, 0x60, 0x34, 0x1c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0xc6, 0xcc, 0xd8, 0xf0, 0xd8, 0xcd, 0xc7, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x82, 0x92, 0x82, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x18, 0x24, 0x42, 0x42, 0x42, 0xa5, 0xa5, 0x42, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x42, 0xa5, 0xa5, 0x42, 0x42, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0c, 0x78, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x1c, 0x36, 0x36, 0x1c, 0x18, 0x30, 0x70, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xfe, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xfe, 0x82, 0x86, 0x8a, 0xba, 0x92, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0xfe, 0x82, 0xee, 0xba, 0xba, 0xee, 0x82, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x82, 0xc6, 0x6c, 0x7c, 0x38, 0x7c, 0x6c, 0xc6, 0x82, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x7c, 0x82, 0xaa, 0x82, 0x44, 0x7c, 0x44, 0x38, 0x00, 0x44, 0xc6, 0x38, 0xc6, 0x44, 0x00},
+	{0x00, 0x00, 0x00, 0x38, 0x44, 0xee, 0xfe, 0x92, 0xba, 0x7c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x7e, 0x18, 0x18, 0xff, 0x18, 0x1e, 0x78, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x7e, 0x18, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x38, 0x10, 0x10, 0x92, 0xfe, 0x92, 0x10, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x72, 0xe0, 0xc4, 0xdf, 0xce, 0xca, 0xe0, 0x72, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x54, 0x28, 0x54, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x5a, 0x99, 0x99, 0x99, 0xbd, 0xff, 0xdb, 0x5a, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x42, 0x81, 0x85, 0xb1, 0xf9, 0xff, 0xdf, 0x7e, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xee, 0xee, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0xee, 0xee, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xee, 0xee, 0x00, 0x00, 0xee, 0xee, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0xee, 0xee, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xee, 0xee, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0xee, 0xee, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0xee, 0xee, 0x00, 0x00, 0xee, 0xee, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xee, 0xee, 0x00, 0x00, 0xee, 0xee, 0x00, 0x00, 0xee, 0xee, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7e, 0x81, 0xa5, 0x81, 0x81, 0x81, 0x99, 0xa5, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7e, 0x81, 0xa5, 0x81, 0x81, 0xa5, 0x99, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7e, 0xff, 0xdb, 0xff, 0xff, 0xdb, 0xe7, 0xff, 0xff, 0x7e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x10, 0x10, 0x54, 0x28, 0xc6, 0x28, 0x54, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x78, 0x14, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x14, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x1e, 0x28, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x28, 0x1e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x66, 0x66, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x1e, 0x06, 0x0e, 0x1a, 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x03, 0x03, 0x7b, 0xcf, 0xcf, 0xcf, 0x0f, 0x1b, 0x33, 0xff, 0x03, 0x03, 0x03, 0x00, 0x00},
+	{0x00, 0x00, 0x60, 0xf0, 0x60, 0x6e, 0x73, 0x63, 0x63, 0x66, 0x66, 0x63, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xd6, 0x54, 0x54, 0x7c, 0x54, 0x54, 0xd6, 0x38, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x3c, 0xdb, 0xdb, 0xdb, 0xdb, 0x7e, 0x3c, 0x18, 0x3c, 0x18, 0x18, 0x00, 0x00},
+	{0x00, 0x00, 0xf8, 0xcc, 0xcc, 0xcc, 0xcc, 0xf8, 0xc0, 0xc0, 0xc0, 0xc0, 0xfe, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x42, 0xa5, 0xa5, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0xc3, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00},
+	{0x00, 0x00, 0xc3, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7e, 0xc3, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7e, 0xdb, 0xd8, 0x70, 0x00, 0x00, 0x0e, 0x1b, 0xdb, 0x7e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x1e, 0x33, 0x33, 0x33, 0x33, 0x1b, 0x7b, 0xdb, 0xdb, 0x73, 0x03, 0x01, 0x00, 0x00},
+	{0x00, 0x00, 0x94, 0x7c, 0x55, 0x57, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x06, 0x0b, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x24, 0xe7, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x94, 0x7c, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x04, 0x03, 0x00, 0x00},
+	{0x00, 0x00, 0x1f, 0x07, 0x8f, 0xdb, 0x73, 0x70, 0xd8, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x90, 0x50, 0x70, 0x68, 0x48, 0x48, 0x4e, 0x49, 0x09, 0x0e, 0x10, 0x20, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x2a, 0x7e, 0xaa, 0x00, 0x00, 0x2a, 0x7e, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc3, 0x66, 0x66, 0x66, 0x66, 0xff, 0x66, 0x66, 0x66, 0x66, 0xc3, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x18, 0x3c, 0x7e, 0xff, 0xff, 0x7e, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x6c, 0x92, 0x82, 0x82, 0x82, 0x44, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x44, 0x82, 0x44, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0xe7, 0xe7, 0xe7, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x18, 0x24, 0x42, 0x81, 0x81, 0x66, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x6c, 0xfe, 0xfe, 0xfe, 0xfe, 0x7c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x7c, 0xfe, 0x7c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x18, 0x24, 0x3c, 0xe7, 0xa5, 0xe7, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, 0x78, 0x70, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x30, 0x3c, 0x3e, 0x32, 0x30, 0x30, 0x30, 0x70, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x70, 0x7f, 0x6f, 0x63, 0x63, 0x63, 0x63, 0xe3, 0xe7, 0xc7, 0x06, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x7f, 0x63, 0x7f, 0x63, 0x63, 0x63, 0x63, 0x63, 0xe7, 0xe7, 0xc6, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xcc, 0xde, 0xe6, 0xc4, 0xd8, 0xe0, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x40, 0x40, 0x44, 0x5c, 0x74, 0x44, 0x44, 0x5c, 0x74, 0x44, 0x04, 0x04, 0x00, 0x00},
+	{0x00, 0x00, 0x04, 0x04, 0x46, 0x5c, 0x74, 0xc4, 0x46, 0x5c, 0x74, 0xc4, 0x40, 0x40, 0x00, 0x00},
+	{0x00, 0x00, 0x3b, 0x66, 0x66, 0x66, 0xff, 0x66, 0x66, 0x66, 0x66, 0xff, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3c, 0x6e, 0x66, 0x60, 0xfe, 0x66, 0x66, 0x66, 0x66, 0xff, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x3e, 0x6e, 0x66, 0x66, 0xfe, 0x66, 0x66, 0x66, 0x66, 0xff, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6e, 0xdb, 0xdb, 0xd8, 0xff, 0xdb, 0xdb, 0xdb, 0xdb, 0xff, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x6f, 0xdb, 0xdb, 0xdb, 0xff, 0xdb, 0xdb, 0xdb, 0xdb, 0xff, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x38, 0x6c, 0x6c, 0x6f, 0x6c, 0x6c, 0x6c, 0x6c, 0x6d, 0xf6, 0x00, 0x00, 0x00, 0x00},
+	{0x06, 0x29, 0x5e, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x06, 0x29, 0x5e, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x81, 0x7e, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0xf7, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x81, 0x7e, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0xf7, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x81, 0x7e, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0xf7, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00},
+	{0x00, 0x08, 0x00, 0x08, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x08, 0x00, 0x08, 0x00, 0x40, 0x80, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x08, 0x08, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x14, 0x00, 0x14, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x14, 0x00, 0x14, 0x00, 0x40, 0x80, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x08, 0x08, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x1c, 0x14, 0x38, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x1c, 0x14, 0x38, 0x00, 0x40, 0x80, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x1c, 0x14, 0x38, 0x00, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x1c, 0x14, 0x38, 0x00, 0x00, 0x08, 0x08, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x04, 0x00, 0x0a, 0x00, 0x06, 0x49, 0x85, 0x83, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x04, 0x00, 0x0a, 0x00, 0x06, 0x49, 0x89, 0x86, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x08, 0x00, 0x14, 0x00, 0x0c, 0x12, 0x0a, 0x06, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x08, 0x00, 0x14, 0x00, 0x0c, 0x12, 0x12, 0x0c, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x0a, 0x00, 0x0a, 0x00, 0x06, 0x49, 0x85, 0x83, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x0a, 0x00, 0x0a, 0x00, 0x06, 0x49, 0x89, 0x86, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x14, 0x00, 0x14, 0x00, 0x0c, 0x12, 0x0a, 0x06, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x14, 0x00, 0x14, 0x00, 0x0c, 0x12, 0x12, 0x0c, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x88, 0x80, 0x88, 0x41, 0x3e, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x32, 0x41, 0x88, 0x80, 0x88, 0x40, 0x3e, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x47, 0x18, 0xe0, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x32, 0xc1, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x80, 0x94, 0x80, 0x41, 0x3e, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x32, 0x41, 0x80, 0x94, 0x80, 0x40, 0x3e, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x47, 0x18, 0xe0, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x32, 0xc1, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x94, 0x80, 0x88, 0x41, 0x3e, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x32, 0x41, 0x94, 0x80, 0x88, 0x40, 0x3e, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x47, 0x18, 0xe0, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x32, 0xc1, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x94, 0x80, 0x94, 0x41, 0x3e, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x32, 0x41, 0x94, 0x80, 0x94, 0x40, 0x3e, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x47, 0x18, 0xe0, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x32, 0xc1, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x04, 0x46, 0x39, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x28, 0x00, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x28, 0x00, 0x08, 0x08, 0x04, 0x46, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x00, 0x28, 0x00, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x00, 0x28, 0x00, 0x08, 0x08, 0x04, 0x46, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x20, 0x38, 0x28, 0x70, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x20, 0x38, 0x28, 0x70, 0x08, 0x08, 0x04, 0x46, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x08, 0x00, 0x14, 0x00, 0x00, 0x04, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x00, 0x04, 0x07, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x1c, 0x14, 0x38, 0x00, 0x04, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x1c, 0x14, 0x38, 0x00, 0x00, 0x00, 0x04, 0x07, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x01, 0x02, 0x04, 0x08, 0x44, 0x82, 0x82, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x01, 0x02, 0x04, 0x08, 0x48, 0x84, 0x82, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x06, 0x18, 0x20, 0x10, 0x08, 0x08, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x06, 0x18, 0x20, 0x20, 0x10, 0x08, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x04, 0x09, 0x12, 0x04, 0x08, 0x44, 0x82, 0x82, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x04, 0x09, 0x12, 0x04, 0x08, 0x48, 0x84, 0x82, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x30, 0x46, 0x18, 0x20, 0x10, 0x08, 0x08, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x30, 0x46, 0x18, 0x20, 0x20, 0x10, 0x08, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x04, 0x09, 0x12, 0x04, 0x08, 0x44, 0x82, 0x82, 0x7c, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00},
+	{0x04, 0x09, 0x12, 0x04, 0x08, 0x48, 0x84, 0x82, 0x7d, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00},
+	{0x0c, 0x30, 0x46, 0x18, 0x20, 0x10, 0x08, 0x08, 0xf0, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00},
+	{0x0c, 0x30, 0x46, 0x18, 0x20, 0x20, 0x10, 0x08, 0xf7, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00},
+	{0xa4, 0x09, 0x12, 0x04, 0x08, 0x44, 0x82, 0x82, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0xa4, 0x09, 0x12, 0x04, 0x08, 0x48, 0x84, 0x82, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0xa2, 0x0c, 0x13, 0x0c, 0x10, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0xa2, 0x0c, 0x13, 0x0c, 0x10, 0x10, 0x08, 0x04, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x41, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00},
+	{0x10, 0x1c, 0x14, 0x38, 0x00, 0x41, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x1c, 0x14, 0x38, 0x00, 0x00, 0x00, 0x01, 0x41, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00},
+	{0x10, 0x1c, 0x14, 0x38, 0x00, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x1c, 0x14, 0x38, 0x00, 0x00, 0x08, 0x08, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x38, 0x40, 0x38, 0x40, 0x18, 0x24, 0x22, 0x22, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x70, 0x80, 0x70, 0x80, 0x10, 0x68, 0x88, 0x74, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x18, 0x24, 0x22, 0x22, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xf0, 0x10, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xf7, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x10, 0x38, 0x4c, 0x52, 0x32, 0x3d, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x10, 0x38, 0x4c, 0x52, 0x32, 0x3d, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x10, 0x38, 0x4c, 0x52, 0x32, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x10, 0x38, 0x4c, 0x52, 0x32, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x14, 0x60, 0x80, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x20, 0x3f, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x70, 0x80, 0x70, 0x80, 0x08, 0x14, 0x60, 0x80, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x1c, 0x20, 0x1c, 0x20, 0x00, 0x00, 0x07, 0x18, 0x20, 0x3f, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x00, 0x29, 0x01, 0x19, 0x21, 0x19, 0xa1, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x00, 0x2a, 0x02, 0x32, 0x42, 0x32, 0xc6, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x40, 0x00, 0xa3, 0x0c, 0x10, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x40, 0x00, 0xa3, 0x0c, 0x10, 0x10, 0x08, 0x04, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x28, 0x18, 0x10, 0x20, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x28, 0x18, 0x10, 0x20, 0x00, 0x0c, 0x12, 0x0f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00},
+	{0x00, 0x14, 0x08, 0x00, 0x00, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x14, 0x08, 0x00, 0x00, 0x00, 0x0c, 0x12, 0x0f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00},
+	{0x08, 0x08, 0x08, 0x08, 0x00, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x0c, 0x12, 0x0f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00},
+	{0x23, 0x54, 0x33, 0x24, 0x40, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x08, 0x00, 0x14, 0x00, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x0c, 0x12, 0x0f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x12, 0x0e, 0x02, 0x3c, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x14, 0x08, 0x00, 0x00, 0x00, 0x0c, 0x12, 0x0f, 0x02, 0x3c, 0x18, 0x60, 0x00, 0x00, 0x00},
+	{0x00, 0x08, 0x14, 0x00, 0x00, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x08, 0x14, 0x00, 0x00, 0x00, 0x0c, 0x12, 0x0f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x88, 0x86, 0x81, 0x81, 0x7e, 0x00, 0x10, 0x00, 0x10},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x88, 0x87, 0x81, 0x7e, 0x10, 0x00, 0x10},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0xf7, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x88, 0x86, 0x81, 0x82, 0x7c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x88, 0x87, 0x81, 0x7e, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0xf7, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00},
+	{0x20, 0x20, 0x20, 0x20, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x10, 0x10, 0x10, 0x00, 0x04, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x10, 0x10, 0x10, 0x00, 0x07, 0x08, 0x88, 0x86, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x24, 0x98, 0x60, 0xc2, 0x12, 0x92, 0x9c, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x02, 0x92, 0x9c, 0x60, 0x0e, 0x70, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x60, 0x04, 0x54, 0x58, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x28, 0x10, 0x60, 0x04, 0x54, 0x58, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x04, 0x54, 0x58, 0x20, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x10, 0x04, 0x54, 0x58, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x07, 0x88, 0x87, 0x81, 0x7e, 0x00, 0x00, 0x00},
+	{0x0e, 0xf0, 0x02, 0x92, 0x9c, 0x60, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x24, 0x18, 0x60, 0x02, 0x92, 0x9c, 0x60, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x02, 0x12, 0x9c, 0x60, 0x0e, 0x70, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x10, 0x28, 0x50, 0x28, 0x08, 0x08, 0x08, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x08, 0x14, 0x28, 0x14, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x04, 0x08, 0x10, 0x54, 0x38, 0x54, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x20, 0x10, 0x08, 0x2a, 0x1c, 0x2a, 0x08, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x2a, 0x14, 0x00, 0x21, 0x69, 0xa9, 0x69, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x24, 0x08, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x10, 0x10, 0x20, 0x10, 0x10, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x08, 0x08, 0x04, 0x08, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x10, 0x10, 0x10, 0x10, 0x10, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x08, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x7c, 0x28, 0x7c, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x28, 0x10, 0x2a, 0x24, 0x1a, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x7c, 0x38, 0x38, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x7c, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x20, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x54, 0x30, 0x18, 0x54, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x08, 0x08, 0x10, 0x10, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x54, 0x58, 0x40, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x30, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x06, 0x18, 0x60, 0x06, 0x18, 0x60, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x12, 0xca, 0x2c, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x30, 0x0c, 0x30, 0x00, 0x00},
+	{0x0c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x06, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x08, 0x14, 0x0c, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x24, 0x14, 0x18, 0x60, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x30, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x06, 0x18, 0x60, 0x00, 0x00},
+	{0x0a, 0x2a, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x02, 0x12, 0x92, 0x9c, 0x60, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x24, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x18, 0x24, 0x20, 0x1e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x02, 0x3c, 0x40, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x01, 0x3e, 0x40, 0x08, 0x08, 0x08, 0x08, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x18, 0x20, 0x1c, 0x20, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x0c, 0x10, 0x0e, 0x10, 0x04, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x1c, 0x20, 0x1c, 0x20, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x1c, 0x20, 0x1c, 0x20, 0x00, 0x0c, 0x12, 0x0f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x0c, 0x10, 0x0e, 0x10, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x00, 0x0c, 0x10, 0x0e, 0x10, 0x00, 0x00},
+	{0x00, 0x30, 0x40, 0x38, 0x40, 0x07, 0x08, 0x88, 0x86, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x30, 0x40, 0x38, 0x40, 0x00, 0x00, 0x00, 0x07, 0x88, 0x87, 0x81, 0x7e, 0x00, 0x00, 0x00},
+	{0x00, 0x1c, 0x20, 0x1c, 0x20, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x1c, 0x20, 0x1c, 0x20, 0x00, 0x08, 0x08, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x81, 0x7e, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0xf7, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x28, 0x00, 0x00, 0x18, 0x24, 0x22, 0x22, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x50, 0x00, 0x10, 0x10, 0x68, 0x88, 0x74, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x14, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x14, 0x00, 0x40, 0x80, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x14, 0x00, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x08, 0x08, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x08, 0x00, 0x14, 0x00, 0x40, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x08, 0x00, 0x14, 0x00, 0x40, 0x80, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x08, 0x00, 0x14, 0x00, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x08, 0x00, 0x14, 0x00, 0x00, 0x08, 0x08, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x80, 0x88, 0x80, 0x41, 0x3e, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x32, 0x41, 0x80, 0x88, 0x80, 0x40, 0x3e, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x47, 0x18, 0xe0, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x32, 0xc1, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x80, 0x80, 0x80, 0x41, 0x3e, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x32, 0x41, 0x80, 0x80, 0x80, 0x40, 0x3e, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x47, 0x18, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8f, 0x32, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x20, 0x00, 0x00, 0x70, 0x8f, 0x30, 0x40, 0x80, 0x80, 0x80, 0x41, 0x3e, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x20, 0x00, 0x00, 0x70, 0x8f, 0x32, 0x41, 0x80, 0x80, 0x80, 0x40, 0x3e, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x10, 0x00, 0x38, 0x47, 0x18, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x00, 0x00, 0x70, 0x8f, 0x32, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x04, 0x46, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x00, 0x08, 0x04, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x00, 0x08, 0x08, 0x04, 0x46, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x07, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x08, 0x00, 0x00, 0x04, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x04, 0x07, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x15, 0x88, 0x84, 0x84, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x15, 0x88, 0x84, 0x84, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x15, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xd5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x08, 0x00, 0x14, 0x00, 0x01, 0x15, 0x88, 0x84, 0x84, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x01, 0x15, 0x88, 0x84, 0x84, 0x78, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x01, 0x15, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x08, 0x00, 0x14, 0x00, 0x00, 0x00, 0x2a, 0xd5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x31, 0x9e, 0x88, 0x88, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x31, 0x9e, 0x88, 0x88, 0x70, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x29, 0x31, 0xde, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x29, 0x31, 0xde, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x04, 0x00, 0x06, 0x09, 0x31, 0x9e, 0x88, 0x88, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x04, 0x00, 0x06, 0x09, 0x31, 0x9e, 0x88, 0x88, 0x70, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x04, 0x00, 0x00, 0x06, 0x29, 0x31, 0xde, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x04, 0x00, 0x00, 0x06, 0x29, 0x31, 0xde, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x20, 0x20, 0x20, 0x2c, 0x32, 0xa2, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x20, 0x20, 0x20, 0x2c, 0x32, 0xa2, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x20, 0x20, 0x20, 0x2c, 0x32, 0x22, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x20, 0x20, 0x20, 0x2c, 0x32, 0x22, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x24, 0x20, 0x20, 0x2c, 0x32, 0xa2, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x24, 0x20, 0x20, 0x2c, 0x32, 0xa2, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x24, 0x20, 0x20, 0x2c, 0x32, 0x22, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x24, 0x20, 0x20, 0x2c, 0x32, 0x22, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x8c, 0x70, 0x40, 0x80, 0x80, 0x80, 0x41, 0x3e, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x1e, 0x22, 0x1c, 0x22, 0x41, 0x80, 0x80, 0x80, 0x41, 0x3e, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x10, 0x10, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x22, 0x1c, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x40, 0x00, 0x00, 0x70, 0x80, 0x8c, 0x70, 0x40, 0x80, 0x80, 0x80, 0x41, 0x3e, 0x00, 0x00},
+	{0x00, 0x08, 0x00, 0x00, 0x1e, 0x22, 0x1c, 0x22, 0x41, 0x80, 0x80, 0x80, 0x41, 0x3e, 0x00, 0x00},
+	{0x00, 0x00, 0x10, 0x00, 0x00, 0x0e, 0x10, 0x10, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x08, 0x00, 0x00, 0x1e, 0x22, 0x1c, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x04, 0x00, 0x06, 0x49, 0x85, 0x83, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x04, 0x00, 0x06, 0x49, 0x89, 0x86, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x08, 0x00, 0x0c, 0x12, 0x0a, 0x06, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x08, 0x00, 0x0c, 0x12, 0x12, 0x0c, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0a, 0x00, 0x06, 0x09, 0x09, 0x47, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x0a, 0x00, 0x00, 0x06, 0x09, 0x49, 0x87, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00},
+	{0x00, 0x14, 0x00, 0x00, 0x0c, 0x12, 0x0a, 0x06, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x14, 0x00, 0x00, 0x0c, 0x12, 0x12, 0x0c, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x19, 0x21, 0x19, 0x21, 0x01, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x32, 0x42, 0x32, 0x42, 0x02, 0x86, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x06, 0x18, 0x20, 0x10, 0x08, 0x08, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x06, 0x18, 0x20, 0x20, 0x10, 0x08, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x42, 0x82, 0x82, 0x84, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x42, 0x82, 0x82, 0x84, 0x78, 0x00, 0x00},
+	{0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x0c, 0x12, 0x12, 0x3c, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x3c, 0x4b, 0x4a, 0x44, 0x40, 0x40, 0x40, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x12, 0x32, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x12, 0x32, 0xcd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x08, 0x00, 0x00, 0x41, 0x81, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x01, 0x41, 0x81, 0x81, 0x42, 0x3c, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x08, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x18, 0x24, 0x22, 0x22, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x10, 0x10, 0x68, 0x88, 0x74, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x40, 0x30, 0x4e, 0x49, 0x39, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x08, 0x14, 0x24, 0x28, 0xf3, 0x24, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x12, 0x0e, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x12, 0x0f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x88, 0x86, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x88, 0x87, 0x81, 0x7e, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x88, 0x86, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x24, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x88, 0x87, 0x81, 0x7e, 0x00, 0x24, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0xf7, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00},
+	{0x68, 0x90, 0x02, 0x22, 0x12, 0x0a, 0x04, 0x0c, 0x12, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x68, 0x90, 0x02, 0x32, 0x12, 0x0a, 0x0a, 0x0e, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x60, 0x80, 0x72, 0xa2, 0x12, 0x0a, 0x04, 0x0c, 0x12, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x30, 0x40, 0x3a, 0x52, 0x12, 0x0a, 0x0a, 0x0e, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x42, 0x22, 0x12, 0x0a, 0x04, 0x0c, 0x12, 0x3c, 0x00, 0x18, 0x20, 0x1c, 0x20, 0x00},
+	{0x00, 0x00, 0x22, 0x12, 0x12, 0x0a, 0x0a, 0x0e, 0x3d, 0x00, 0x00, 0x18, 0x20, 0x1c, 0x20, 0x00},
+	{0x00, 0x00, 0x42, 0x22, 0x12, 0x0a, 0x04, 0x0c, 0x12, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0x00, 0x00, 0x22, 0x12, 0x12, 0x0a, 0x0a, 0x0e, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+	{0xf1, 0x35, 0x55, 0x8a, 0xe0, 0x06, 0x95, 0xd6, 0xb5, 0x97, 0x00, 0xee, 0x8a, 0xee, 0x28, 0xe8},
+	{0x00, 0x38, 0x7c, 0x7c, 0xc6, 0x92, 0xf2, 0xe6, 0xfe, 0xe6, 0x7c, 0x7c, 0x38, 0x00, 0x00, 0x00},
+	
+	/* Special glyph for unknown character */
+	{0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x0c, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00}
+};
+
+/** @}
+ */
Index: uspace/srv/hid/fb/font-8x16.h
===================================================================
--- uspace/srv/hid/fb/font-8x16.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/fb/font-8x16.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2005 Martin Decky
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup genarch
+ * @{
+ */
+/** @file
+ */
+
+#ifndef FONT_8X16_H_
+#define FONT_8X16_H_
+
+#define FONT_GLYPHS     2899
+#define FONT_WIDTH      8
+#define FONT_SCANLINES  16
+
+#include <sys/types.h>
+
+extern uint16_t fb_font_glyph(const wchar_t ch);
+extern uint8_t fb_font[FONT_GLYPHS][FONT_SCANLINES];
+
+#endif
+
+/** @}
+ */
Index: uspace/srv/hid/fb/main.c
===================================================================
--- uspace/srv/hid/fb/main.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/fb/main.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2006 Ondrej Palkovsky
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+#include <ipc/ipc.h>
+#include <ipc/services.h>
+#include <sysinfo.h>
+#include <async.h>
+#include <as.h>
+#include <align.h>
+#include <errno.h>
+#include <stdio.h>
+
+#include "fb.h"
+#include "ega.h"
+#include "msim.h"
+#include "ski.h"
+#include "sgcn.h"
+#include "main.h"
+
+#define NAME "fb"
+
+void receive_comm_area(ipc_callid_t callid, ipc_call_t *call, void **area)
+{
+	void *dest;
+	
+	dest = as_get_mappable_page(IPC_GET_ARG2(*call));
+	if (ipc_answer_1(callid, EOK, (sysarg_t) dest) == 0) {
+		if (*area)
+			as_area_destroy(*area);
+		*area = dest;
+	}
+}
+
+int main(int argc, char *argv[])
+{
+	printf(NAME ": HelenOS Framebuffer service\n");
+	
+	ipcarg_t phonead;
+	bool initialized = false;
+	
+#ifdef FB_ENABLED
+	if (sysinfo_value("fb.kind") == 1) {
+		if (fb_init() == 0)
+			initialized = true;
+	}
+#endif
+#ifdef EGA_ENABLED
+	if ((!initialized) && (sysinfo_value("fb.kind") == 2)) {
+		if (ega_init() == 0)
+			initialized = true;
+	}
+#endif
+#ifdef MSIM_ENABLED
+	if ((!initialized) && (sysinfo_value("fb.kind") == 3)) {
+		if (msim_init() == 0)
+			initialized = true;
+	}
+#endif
+#ifdef SGCN_ENABLED
+	if ((!initialized) && (sysinfo_value("fb.kind") == 4)) {
+		if (sgcn_init() == 0)
+			initialized = true;
+	}
+#endif
+#ifdef SKI_ENABLED
+	if ((!initialized) && (sysinfo_value("fb") != true)) {
+		if (ski_init() == 0)
+			initialized = true;
+	}
+#endif
+
+	if (!initialized)
+		return -1;
+	
+	if (ipc_connect_to_me(PHONE_NS, SERVICE_VIDEO, 0, 0, &phonead) != 0) 
+		return -1;
+	
+	printf(NAME ": Accepting connections\n");
+	async_manager();
+	
+	/* Never reached */
+	return 0;
+}
Index: uspace/srv/hid/fb/main.h
===================================================================
--- uspace/srv/hid/fb/main.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/fb/main.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2006 Ondrej Palkovsky
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+#ifndef FB_MAIN_H_
+#define FB_MAIN_H_
+
+extern void receive_comm_area(ipc_callid_t, ipc_call_t *, void **);
+
+#endif
Index: uspace/srv/hid/fb/msim.c
===================================================================
--- uspace/srv/hid/fb/msim.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/fb/msim.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2006 Ondrej Palkovsky
+ * Copyright (c) 2008 Martin Decky
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @defgroup msimfb MSIM text console
+ * @brief	HelenOS MSIM text console.
+ * @ingroup fbs
+ * @{
+ */ 
+/** @file
+ */
+
+#include <async.h>
+#include <libc.h>
+#include <sysinfo.h>
+#include <as.h>
+#include <ddi.h>
+
+#include "serial_console.h"
+#include "msim.h"
+
+#define WIDTH 80
+#define HEIGHT 24
+
+static char *virt_addr;
+
+static void msim_putc(const char c)
+{
+	*virt_addr = c;
+}
+
+int msim_init(void)
+{
+	void *phys_addr = (void *) sysinfo_value("fb.address.physical");
+	virt_addr = (char *) as_get_mappable_page(1);
+	
+	if (physmem_map(phys_addr, virt_addr, 1, AS_AREA_READ | AS_AREA_WRITE) != 0)
+		return -1;
+	
+	serial_console_init(msim_putc, WIDTH, HEIGHT);
+	
+	async_set_client_connection(serial_client_connection);
+	return 0;
+}
+
+/** 
+ * @}
+ */
Index: uspace/srv/hid/fb/msim.h
===================================================================
--- uspace/srv/hid/fb/msim.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/fb/msim.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2006 Ondrej Palkovsky
+ * Copyright (c) 2008 Martin Decky
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup msimfb
+ * @brief	HelenOS MSIM text console.
+ * @ingroup fbs
+ * @{
+ */ 
+/** @file
+ */
+
+#ifndef FB_MSIM_H_
+#define FB_MSIM_H_
+
+extern int msim_init(void);
+
+#endif
+
+/** @}
+ */
+
Index: uspace/srv/hid/fb/pointer.xbm
===================================================================
--- uspace/srv/hid/fb/pointer.xbm	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/fb/pointer.xbm	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,6 @@
+#define pointer_width 11
+#define pointer_height 18
+static unsigned char pointer_bits[] = {
+   0x01, 0x00, 0x03, 0x00, 0x05, 0x00, 0x09, 0x00, 0x11, 0x00, 0x21, 0x00,
+   0x41, 0x00, 0x81, 0x00, 0x01, 0x01, 0x01, 0x02, 0x01, 0x04, 0x01, 0x03,
+   0x81, 0x00, 0x89, 0x00, 0x15, 0x01, 0x23, 0x01, 0x21, 0x01, 0xc0, 0x00 };
Index: uspace/srv/hid/fb/pointer_mask.xbm
===================================================================
--- uspace/srv/hid/fb/pointer_mask.xbm	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/fb/pointer_mask.xbm	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,6 @@
+#define pointer_mask_width 11
+#define pointer_mask_height 18
+static unsigned char pointer_mask_bits[] = {
+   0x01, 0x00, 0x03, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x1f, 0x00, 0x3f, 0x00,
+   0x7f, 0x00, 0xff, 0x00, 0xff, 0x01, 0xff, 0x03, 0xff, 0x07, 0xff, 0x03,
+   0xff, 0x00, 0xff, 0x00, 0xf7, 0x01, 0xe3, 0x01, 0xe1, 0x01, 0xc0, 0x00 };
Index: uspace/srv/hid/fb/ppm.c
===================================================================
--- uspace/srv/hid/fb/ppm.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/fb/ppm.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,130 @@
+/*
+ * Copyright (c) 2006 Ondrej Palkovsky
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+#include <sys/types.h>
+#include <errno.h>
+
+#include "ppm.h"
+
+static void skip_whitespace(unsigned char **data)
+{
+retry:
+	while (**data == ' ' || **data == '\t' || **data == '\n' ||
+	    **data == '\r')
+		(*data)++;
+	if (**data == '#') {
+		while (1) {
+			if (**data == '\n' || **data == '\r')
+				break;
+			(*data)++;
+		}
+		goto retry;
+	}
+}
+
+static void read_num(unsigned char **data, unsigned int *num)
+{
+	*num = 0;
+	while (**data >= '0' && **data <= '9') {
+		*num *= 10;
+		*num += **data - '0';
+		(*data)++;
+	}
+}
+
+int ppm_get_data(unsigned char *data, size_t dtsz, unsigned int *width,
+    unsigned int *height)
+{
+	/* Read magic */
+	if (data[0] != 'P' || data[1] != '6')
+		return EINVAL;
+
+	data+=2;
+	skip_whitespace(&data);
+	read_num(&data, width);
+	skip_whitespace(&data);
+	read_num(&data,height);
+
+	return 0;
+}
+
+/** Draw PPM pixmap
+ *
+ * @param data Pointer to PPM data
+ * @param datasz Maximum data size
+ * @param sx Coordinate of upper left corner
+ * @param sy Coordinate of upper left corner
+ * @param maxwidth Maximum allowed width for picture
+ * @param maxheight Maximum allowed height for picture
+ * @param putpixel Putpixel function used to print bitmap
+ */
+int ppm_draw(unsigned char *data, size_t datasz, unsigned int sx,
+    unsigned int sy, unsigned int maxwidth, unsigned int maxheight,
+    putpixel_cb_t putpixel, void *vport)
+{
+	unsigned int width, height;
+	unsigned int maxcolor;
+	unsigned int i;
+	unsigned int color;
+	unsigned int coef;
+	
+	/* Read magic */
+	if ((data[0] != 'P') || (data[1] != '6'))
+		return EINVAL;
+	
+	data += 2;
+	skip_whitespace(&data);
+	read_num(&data, &width);
+	skip_whitespace(&data);
+	read_num(&data, &height);
+	skip_whitespace(&data);
+	read_num(&data, &maxcolor);
+	data++;
+	
+	if ((maxcolor == 0) || (maxcolor > 255) || (width * height > datasz))
+		return EINVAL;
+	
+	coef = 255 / maxcolor;
+	if (coef * maxcolor > 255)
+		coef -= 1;
+	
+	for (i = 0; i < width * height; i++) {
+		/* Crop picture if we don't fit into region */
+		if (i % width > maxwidth || i / width > maxheight) {
+			data += 3;
+			continue;
+		}
+		color = ((data[0] * coef) << 16) + ((data[1] * coef) << 8) +
+		    data[2] * coef;
+		
+		(*putpixel)(vport, sx + (i % width), sy + (i / width), color);
+		data += 3;
+	}
+	
+	return 0;
+}
Index: uspace/srv/hid/fb/ppm.h
===================================================================
--- uspace/srv/hid/fb/ppm.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/fb/ppm.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2006 Ondrej Palkovsky
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+#ifndef FB_PPM_H_
+#define FB_PPM_H_
+
+#include "fb.h"
+#include <sys/types.h>
+
+extern int ppm_draw(unsigned char *, size_t, unsigned int, unsigned int, 
+    unsigned int, unsigned int, putpixel_cb_t, void *);
+extern int ppm_get_data(unsigned char *, size_t, unsigned int *, unsigned int *);
+
+#endif
Index: uspace/srv/hid/fb/serial_console.c
===================================================================
--- uspace/srv/hid/fb/serial_console.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/fb/serial_console.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,462 @@
+/*
+ * Copyright (c) 2006 Ondrej Palkovsky
+ * Copyright (c) 2008 Martin Decky
+ * Copyright (c) 2008 Pavel Rimsky
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/**
+ * @defgroup serial Serial console
+ * @brief    Serial console services (putc, puts, clear screen, cursor goto,...)
+ * @{
+ */ 
+
+/** @file
+ */
+
+#include <stdio.h>
+#include <ipc/ipc.h>
+#include <async.h>
+#include <ipc/fb.h>
+#include <bool.h>
+#include <errno.h>
+#include <io/color.h>
+#include <io/style.h>
+#include <string.h>
+
+#include "../console/screenbuffer.h"
+#include "main.h"
+#include "serial_console.h"
+
+#define MAX_CONTROL 20
+
+static void serial_sgr(const unsigned int mode);
+void serial_putchar(wchar_t ch);
+
+static int scr_width;
+static int scr_height;
+static bool color = true;	/** True if producing color output. */
+static bool utf8 = false;	/** True if producing UTF8 output. */
+static putc_function_t putc_function;
+
+/* Allow only 1 connection */
+static int client_connected = 0;
+
+enum sgr_color_index {
+	CI_BLACK	= 0,
+	CI_RED		= 1,
+	CI_GREEN	= 2,
+	CI_BROWN	= 3,
+	CI_BLUE		= 4,
+	CI_MAGENTA	= 5,
+	CI_CYAN		= 6,
+	CI_WHITE	= 7,
+};
+
+enum sgr_command {
+	SGR_RESET	= 0,
+	SGR_BOLD	= 1,
+	SGR_BLINK	= 5,
+	SGR_REVERSE	= 7,
+	SGR_NORMAL_INT	= 22,
+	SGR_BLINK_OFF	= 25,
+	SGR_REVERSE_OFF = 27,
+	SGR_FGCOLOR	= 30,
+	SGR_BGCOLOR	= 40
+};
+
+static int color_map[] = {
+	[COLOR_BLACK]	= CI_BLACK,
+	[COLOR_BLUE]	= CI_RED,
+	[COLOR_GREEN]	= CI_GREEN,
+	[COLOR_CYAN]	= CI_CYAN,
+	[COLOR_RED]	= CI_RED,
+	[COLOR_MAGENTA] = CI_MAGENTA,
+	[COLOR_YELLOW]	= CI_BROWN,
+	[COLOR_WHITE]	= CI_WHITE
+};
+
+void serial_puts(char *str)
+{
+	while (*str)
+		putc_function(*(str++));
+}
+
+void serial_putchar(wchar_t ch)
+{
+	uint8_t buf[STR_BOUNDS(1)];
+	size_t offs;
+	size_t i;
+
+	if (utf8 != true) {
+		if (ch >= 0 && ch < 128)
+			(*putc_function)((uint8_t) ch);
+		else 
+			(*putc_function)('?');
+		return;
+	}
+
+	offs = 0;
+	if (chr_encode(ch, buf, &offs, STR_BOUNDS(1)) == EOK) {
+		for (i = 0; i < offs; i++)
+			(*putc_function)(buf[i]);
+	} else {
+		(*putc_function)('?');
+	}
+
+}
+
+void serial_goto(const unsigned int col, const unsigned int row)
+{
+	if ((col > scr_width) || (row > scr_height))
+		return;
+	
+	char control[MAX_CONTROL];
+	snprintf(control, MAX_CONTROL, "\033[%u;%uf", row + 1, col + 1);
+	serial_puts(control);
+}
+
+void serial_clrscr(void)
+{
+	/* Initialize graphic rendition attributes. */
+	serial_sgr(SGR_RESET);
+	if (color) {
+		serial_sgr(SGR_FGCOLOR + CI_BLACK);
+		serial_sgr(SGR_BGCOLOR + CI_WHITE);
+	}
+
+	serial_puts("\033[2J");
+}
+
+void serial_scroll(int i)
+{
+	if (i > 0) {
+		serial_goto(0, scr_height - 1);
+		while (i--)
+			serial_puts("\033D");
+	} else if (i < 0) {
+		serial_goto(0, 0);
+		while (i++)
+			serial_puts("\033M");
+	}
+}
+
+/** ECMA-48 Set Graphics Rendition. */
+static void serial_sgr(const unsigned int mode)
+{
+	char control[MAX_CONTROL];
+	snprintf(control, MAX_CONTROL, "\033[%um", mode);
+	serial_puts(control);
+}
+
+/** Set scrolling region. */
+void serial_set_scroll_region(unsigned last_row)
+{
+	char control[MAX_CONTROL];
+	snprintf(control, MAX_CONTROL, "\033[0;%ur", last_row);
+	serial_puts(control);
+}
+
+void serial_cursor_disable(void)
+{
+	serial_puts("\033[?25l");
+}
+
+void serial_cursor_enable(void)
+{
+	serial_puts("\033[?25h");
+}
+
+void serial_console_init(putc_function_t putc_fn, uint32_t w, uint32_t h)
+{
+	scr_width = w;
+	scr_height = h;
+	putc_function = putc_fn;
+}
+
+static void serial_set_style(int style)
+{
+	if (style == STYLE_EMPHASIS) {
+		if (color) {
+			serial_sgr(SGR_RESET);
+			serial_sgr(SGR_FGCOLOR + CI_RED);
+			serial_sgr(SGR_BGCOLOR + CI_WHITE);
+		}
+		serial_sgr(SGR_BOLD);
+	} else {
+		if (color) {
+			serial_sgr(SGR_RESET);
+			serial_sgr(SGR_FGCOLOR + CI_BLACK);
+			serial_sgr(SGR_BGCOLOR + CI_WHITE);
+		}
+		serial_sgr(SGR_NORMAL_INT);
+	}
+}
+
+static void serial_set_idx(unsigned fgcolor, unsigned bgcolor,
+    unsigned flags)
+{
+	if (color) {
+		serial_sgr(SGR_RESET);
+		serial_sgr(SGR_FGCOLOR + color_map[fgcolor]);
+		serial_sgr(SGR_BGCOLOR + color_map[bgcolor]);
+	} else {
+		if (fgcolor < bgcolor)
+			serial_sgr(SGR_RESET);
+		else
+			serial_sgr(SGR_REVERSE);
+	}	
+}
+
+static void serial_set_rgb(uint32_t fgcolor, uint32_t bgcolor)
+{
+	if (fgcolor < bgcolor)
+		serial_sgr(SGR_REVERSE_OFF);
+	else
+		serial_sgr(SGR_REVERSE);
+}
+
+static void serial_set_attrs(const attrs_t *a)
+{
+	switch (a->t) {
+	case at_style:
+		serial_set_style(a->a.s.style);
+		break;
+	case at_rgb:
+		serial_set_rgb(a->a.r.fg_color, a->a.r.bg_color);
+		break;
+	case at_idx:
+		serial_set_idx(a->a.i.fg_color,
+		    a->a.i.bg_color, a->a.i.flags);
+		break;
+	default:
+		break;
+	}
+}
+
+/** Draw text data to viewport.
+ *
+ * @param vport Viewport id
+ * @param data  Text data.
+ * @param x	Leftmost column of the area.
+ * @param y	Topmost row of the area.
+ * @param w	Number of rows.
+ * @param h	Number of columns.
+ */
+static void draw_text_data(keyfield_t *data, unsigned int x,
+    unsigned int y, unsigned int w, unsigned int h)
+{
+	unsigned int i, j;
+	keyfield_t *field;
+	attrs_t *a0, *a1;
+
+	serial_goto(x, y);
+	a0 = &data[0].attrs;
+	serial_set_attrs(a0);
+
+	for (j = 0; j < h; j++) {
+		if (j > 0 && w != scr_width)
+			serial_goto(x, j);
+
+		for (i = 0; i < w; i++) {
+			field = &data[j * w + i];
+
+			a1 = &field->attrs;
+			if (!attrs_same(*a0, *a1))
+				serial_set_attrs(a1);
+			serial_putchar(field->character);
+			a0 = a1;
+		}
+	}
+}
+
+int lastcol = 0;
+int lastrow = 0;
+
+/**
+ * Main function of the thread serving client connections.
+ */
+void serial_client_connection(ipc_callid_t iid, ipc_call_t *icall)
+{
+	int retval;
+	ipc_callid_t callid;
+	ipc_call_t call;
+	keyfield_t *interbuf = NULL;
+	size_t intersize = 0;
+
+	wchar_t c;
+	int col, row, w, h;
+	int i;
+
+	attrs_t cur_attr;
+	
+	if (client_connected) {
+		ipc_answer_0(iid, ELIMIT);
+		return;
+	}
+	
+	client_connected = 1;
+	ipc_answer_0(iid, EOK);
+
+	cur_attr.t = at_style;
+	cur_attr.a.s.style = STYLE_NORMAL;
+	
+	/* Clear the terminal, set scrolling region
+	   to 0 - height rows. */
+	serial_clrscr();
+	serial_goto(0, 0);
+	serial_set_scroll_region(scr_height);
+	
+	while (true) {
+		callid = async_get_call(&call);
+		switch (IPC_GET_METHOD(call)) {
+		case IPC_M_PHONE_HUNGUP:
+			client_connected = 0;
+			ipc_answer_0(callid, EOK);
+			return;
+		case IPC_M_SHARE_OUT:
+			/* We accept one area for data interchange */
+			intersize = IPC_GET_ARG2(call);
+			if (intersize >= scr_width * scr_height *
+			    sizeof(*interbuf)) {
+				receive_comm_area(callid, &call,
+				    (void *) &interbuf);
+				continue;
+			}
+			retval = EINVAL;
+			break;
+		case FB_DRAW_TEXT_DATA:
+			col = IPC_GET_ARG1(call);
+			row = IPC_GET_ARG2(call);
+			w = IPC_GET_ARG3(call);
+			h = IPC_GET_ARG4(call);
+			if (!interbuf) {
+				retval = EINVAL;
+				break;
+			}
+			if (col + w > scr_width || row + h > scr_height) {
+				retval = EINVAL;
+				break;
+			}
+			draw_text_data(interbuf, col, row, w, h);
+			lastcol = col + w;
+			lastrow = row + h - 1;
+			retval = 0;
+			break;
+		case FB_PUTCHAR:
+			c = IPC_GET_ARG1(call);
+			col = IPC_GET_ARG2(call);
+			row = IPC_GET_ARG3(call);
+			if ((lastcol != col) || (lastrow != row))
+				serial_goto(col, row);
+			lastcol = col + 1;
+			lastrow = row;
+			serial_putchar(c);
+			retval = 0;
+			break;
+		case FB_CURSOR_GOTO:
+			col = IPC_GET_ARG1(call);
+			row = IPC_GET_ARG2(call);
+			serial_goto(col, row);
+			lastcol = col;
+			lastrow = row;
+			retval = 0;
+			break;
+		case FB_GET_CSIZE:
+			ipc_answer_2(callid, EOK, scr_width, scr_height);
+			continue;
+		case FB_GET_COLOR_CAP:
+			ipc_answer_1(callid, EOK, color ? FB_CCAP_INDEXED :
+			    FB_CCAP_STYLE);
+			continue;
+		case FB_CLEAR:
+			serial_clrscr();
+			retval = 0;
+			break;
+		case FB_SET_STYLE:
+			cur_attr.t = at_style;
+			cur_attr.a.s.style = IPC_GET_ARG1(call);
+			cur_attr.a.i.bg_color = IPC_GET_ARG2(call);
+			serial_set_attrs(&cur_attr);
+
+			retval = 0;
+			break;
+		case FB_SET_COLOR:
+			cur_attr.t = at_idx;
+			cur_attr.a.i.fg_color = IPC_GET_ARG1(call);
+			cur_attr.a.i.bg_color = IPC_GET_ARG2(call);
+			cur_attr.a.i.flags = IPC_GET_ARG3(call);
+			serial_set_attrs(&cur_attr);
+
+			retval = 0;
+			break;
+		case FB_SET_RGB_COLOR:
+			cur_attr.t = at_rgb;
+			cur_attr.a.i.fg_color = IPC_GET_ARG1(call);
+			cur_attr.a.i.bg_color = IPC_GET_ARG2(call);
+			serial_set_attrs(&cur_attr);
+
+			retval = 0;
+			break;
+		case FB_SCROLL:
+			i = IPC_GET_ARG1(call);
+			if ((i > scr_height) || (i < -scr_height)) {
+				retval = EINVAL;
+				break;
+			}
+			serial_scroll(i);
+			serial_goto(lastcol, lastrow);
+			retval = 0;
+			break;
+		case FB_CURSOR_VISIBILITY:
+			if(IPC_GET_ARG1(call))
+				serial_cursor_enable();
+			else
+				serial_cursor_disable();
+			retval = 0;
+			break;
+		case FB_SCREEN_YIELD:
+			serial_sgr(SGR_RESET);
+			serial_puts("\033[2J");
+			serial_goto(0, 0);
+			serial_cursor_enable();
+			retval = 0;
+			break;
+		case FB_SCREEN_RECLAIM:
+			serial_clrscr();
+			serial_set_attrs(&cur_attr);
+			retval = 0;
+			break;
+		default:
+			retval = ENOENT;
+		}
+		ipc_answer_0(callid, retval);
+	}
+}
+
+/**
+ * @}
+ */
Index: uspace/srv/hid/fb/serial_console.h
===================================================================
--- uspace/srv/hid/fb/serial_console.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/fb/serial_console.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2008 Pavel Rimsky
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/**
+ * @defgroup serial Serial console
+ * @brief    Serial console services (putc, puts, clear screen, cursor goto,...)
+ * @{
+ */ 
+
+/** @file
+ */
+
+#ifndef FB_SERIAL_CONSOLE_H_
+#define FB_SERIAL_CONSOLE_H_
+
+#include <ipc/ipc.h>
+
+typedef void (*putc_function_t)(char);
+
+void serial_puts(char *str);
+void serial_goto(const unsigned int col, const unsigned int row);
+void serial_clrscr(void);
+void serial_scroll(int i);
+void serial_cursor_disable(void);
+void serial_cursor_enable(void);
+void serial_set_scroll_region(unsigned height);
+void serial_console_init(putc_function_t putc_fn, uint32_t w, uint32_t h);
+void serial_client_connection(ipc_callid_t iid, ipc_call_t *icall);
+
+
+#endif
Index: uspace/srv/hid/fb/sgcn.c
===================================================================
--- uspace/srv/hid/fb/sgcn.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/fb/sgcn.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,142 @@
+/*
+ * Copyright (c) 2006 Ondrej Palkovsky
+ * Copyright (c) 2008 Martin Decky
+ * Copyright (c) 2008 Pavel Rimsky
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @defgroup sgcnfb SGCN
+ * @brief	userland driver of the Serengeti console output
+ * @{
+ */ 
+/** @file
+ */
+
+#include <async.h>
+#include <sysinfo.h>
+#include <as.h>
+#include <errno.h>
+#include <stdio.h>
+#include <ddi.h>
+
+#include "serial_console.h"
+#include "sgcn.h"
+
+#define WIDTH 80
+#define HEIGHT 24
+
+/**
+ * Virtual address mapped to SRAM.
+ */
+static uintptr_t sram_virt_addr;
+
+/**
+ * SGCN buffer offset within SGCN.
+ */
+static uintptr_t sram_buffer_offset;
+
+/**
+ * SGCN buffer header. It is placed at the very beginning of the SGCN
+ * buffer. 
+ */
+typedef struct {
+	/** hard-wired to "CON" */
+	char magic[4];
+	
+	/** we don't need this */
+	char unused[24];
+
+	/** offset within the SGCN buffer of the output buffer start */
+	uint32_t out_begin;
+	
+	/** offset within the SGCN buffer of the output buffer end */
+	uint32_t out_end;
+	
+	/** offset within the SGCN buffer of the output buffer read pointer */
+	uint32_t out_rdptr;
+	
+	/** offset within the SGCN buffer of the output buffer write pointer */
+	uint32_t out_wrptr;
+} __attribute__ ((packed)) sgcn_buffer_header_t;
+
+
+/*
+ * Returns a pointer to the object of a given type which is placed at the given
+ * offset from the console buffer beginning.
+ */
+#define SGCN_BUFFER(type, offset) \
+		((type *) (sram_virt_addr + sram_buffer_offset + (offset)))
+
+/** Returns a pointer to the console buffer header. */
+#define SGCN_BUFFER_HEADER	(SGCN_BUFFER(sgcn_buffer_header_t, 0))
+
+/**
+ * Pushes the character to the SGCN serial.
+ * @param c	character to be pushed
+ */
+static void sgcn_putc(char c)
+{
+	uint32_t begin = SGCN_BUFFER_HEADER->out_begin;
+	uint32_t end = SGCN_BUFFER_HEADER->out_end;
+	uint32_t size = end - begin;
+	
+	/* we need pointers to volatile variables */
+	volatile char *buf_ptr = (volatile char *)
+		SGCN_BUFFER(char, SGCN_BUFFER_HEADER->out_wrptr);
+	volatile uint32_t *out_wrptr_ptr = &(SGCN_BUFFER_HEADER->out_wrptr);
+	volatile uint32_t *out_rdptr_ptr = &(SGCN_BUFFER_HEADER->out_rdptr);
+
+	uint32_t new_wrptr = (((*out_wrptr_ptr) - begin + 1) % size) + begin;
+	while (*out_rdptr_ptr == new_wrptr)
+		;
+	*buf_ptr = c;
+	*out_wrptr_ptr = new_wrptr;
+}
+
+/**
+ * Initializes the SGCN serial driver.
+ */
+int sgcn_init(void)
+{
+	sram_virt_addr = (uintptr_t) as_get_mappable_page(sysinfo_value("sram.area.size"));
+	
+	if (physmem_map((void *) sysinfo_value("sram.address.physical"),
+	    (void *) sram_virt_addr, sysinfo_value("sram.area.size") / PAGE_SIZE,
+	    AS_AREA_READ | AS_AREA_WRITE) != 0)
+		return -1;
+	
+	serial_console_init(sgcn_putc, WIDTH, HEIGHT);
+	
+	sram_buffer_offset = sysinfo_value("sram.buffer.offset");
+	
+	async_set_client_connection(serial_client_connection);
+	return 0;
+}
+
+/** 
+ * @}
+ */
+ 
Index: uspace/srv/hid/fb/sgcn.h
===================================================================
--- uspace/srv/hid/fb/sgcn.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/fb/sgcn.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2008 Pavel Rimsky
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @defgroup sgcnfb SGCN
+ * @brief	userland driver of the Serengeti console output
+ * @{
+ */
+ 
+/** @file
+ */
+
+#ifndef FB_SGCN_H_
+#define FB_SGCN_H_
+
+int sgcn_init(void);
+
+#endif
+
+/** 
+ * @}
+ */
Index: uspace/srv/hid/fb/ski.c
===================================================================
--- uspace/srv/hid/fb/ski.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/fb/ski.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2005 Jakub Jermar
+ * Copyright (c) 2008 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @defgroup msimfb MSIM text console
+ * @brief	HelenOS MSIM text console.
+ * @ingroup fbs
+ * @{
+ */ 
+/** @file
+ */
+
+#include <async.h>
+#include <libc.h>
+#include <sysinfo.h>
+#include <as.h>
+#include <ddi.h>
+
+#include "serial_console.h"
+#include "ski.h"
+
+#define SKI_PUTCHAR		31
+
+#define WIDTH 80
+#define HEIGHT 24
+
+/** Display character on ski debug console
+ *
+ * Use SSC (Simulator System Call) to
+ * display character on debug console.
+ *
+ * @param ch Character to be printed.
+ */
+static void ski_putc(const char ch)
+{
+	asm volatile (
+		"mov r15 = %0\n"
+		"mov r32 = %1\n"	/* r32 is in0 */
+		"break 0x80000\n"	/* modifies r8 */
+		:
+		: "i" (SKI_PUTCHAR), "r" (ch)
+		: "r15", "in0", "r8"
+	);
+	
+	if (ch == '\n')
+		ski_putc('\r');
+}
+
+int ski_init(void)
+{
+	serial_console_init(ski_putc, WIDTH, HEIGHT);
+	
+	async_set_client_connection(serial_client_connection);
+	return 0;
+}
+
+/** 
+ * @}
+ */
Index: uspace/srv/hid/fb/ski.h
===================================================================
--- uspace/srv/hid/fb/ski.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/fb/ski.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2008 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup skifb
+ * @brief	HelenOS ski text console.
+ * @ingroup fbs
+ * @{
+ */ 
+/** @file
+ */
+
+#ifndef FB_SKI_H_
+#define FB_SKI_H_
+
+extern int ski_init(void);
+
+#endif
+
+/** @}
+ */
+
Index: uspace/srv/hid/kbd/Makefile
===================================================================
--- uspace/srv/hid/kbd/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/kbd/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,40 @@
+#
+# Copyright (c) 2005 Martin Decky
+# Copyright (c) 2007 Jakub Jermar
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+include Makefile.common
+
+.PHONY: all clean
+
+all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
+	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
+
+clean:
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
+	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/srv/hid/kbd/Makefile.build
===================================================================
--- uspace/srv/hid/kbd/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/kbd/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,167 @@
+#
+# Copyright (c) 2005 Martin Decky
+# Copyright (c) 2007 Jakub Jermar
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+## Setup toolchain
+#
+
+include Makefile.common
+include $(LIBC_PREFIX)/Makefile.toolchain
+
+CFLAGS += -Iinclude
+
+## Sources
+#
+
+SOURCES = \
+	generic/kbd.c \
+	genarch/gsp.c \
+	genarch/stroke.c \
+	layout/cz.c \
+	layout/us_qwerty.c \
+	layout/us_dvorak.c
+
+ifeq ($(UARCH),amd64)
+	SOURCES += \
+		port/chardev.c \
+		ctl/pc.c
+endif
+
+ifeq ($(UARCH),arm32)
+	ifeq ($(MACHINE),testarm)
+		SOURCES += \
+			port/gxemul.c
+		
+		ifeq ($(CONFIG_FB),y)
+			SOURCES += \
+				ctl/gxe_fb.c
+		else
+			SOURCES += \
+				ctl/stty.c
+		endif
+	endif
+	ifeq ($(MACHINE),integratorcp)
+		SOURCES += \
+			port/pl050.c \
+			ctl/pl050.c
+	endif
+endif
+
+ifeq ($(UARCH),ia32)
+	SOURCES += \
+		port/chardev.c \
+		ctl/pc.c
+endif
+
+ifeq ($(MACHINE),i460GX)
+	SOURCES += \
+		port/chardev.c \
+		ctl/pc.c
+endif
+
+ifeq ($(MACHINE),ski)
+	SOURCES += \
+		port/ski.c \
+		ctl/stty.c
+endif
+
+ifeq ($(MACHINE),msim)
+	SOURCES += \
+		port/msim.c \
+		ctl/stty.c
+endif
+
+ifeq ($(MACHINE),lgxemul)
+	SOURCES += \
+		port/gxemul.c
+	
+	ifeq ($(CONFIG_FB),y)
+		SOURCES += \
+			ctl/gxe_fb.c
+	else
+		SOURCES += \
+			ctl/stty.c
+	endif
+endif
+
+ifeq ($(MACHINE),bgxemul)
+	SOURCES += \
+		port/gxemul.c
+	
+	ifeq ($(CONFIG_FB),y)
+		SOURCES += \
+			ctl/gxe_fb.c
+	else
+		SOURCES += \
+			ctl/stty.c
+	endif
+endif
+
+ifeq ($(UARCH),ppc32)
+	SOURCES += \
+		port/dummy.c \
+		ctl/stty.c
+endif
+
+ifeq ($(UARCH),sparc64)
+	ifeq ($(MACHINE),serengeti)
+		SOURCES += \
+			port/sgcn.c \
+			ctl/stty.c
+	else
+		SOURCES += \
+			port/sun.c \
+			port/z8530.c \
+			port/ns16550.c \
+			ctl/sun.c
+	endif
+endif
+
+OBJECTS := $(addsuffix .o,$(basename $(SOURCES)))
+
+.PHONY: all
+
+all: $(OUTPUT) $(OUTPUT).disasm
+
+-include $(DEPEND)
+
+$(OUTPUT).disasm: $(OUTPUT)
+	$(OBJDUMP) -d $< > $@
+
+$(OUTPUT): $(OBJECTS) $(LIBS)
+	$(LD) -T $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
+
+%.o: %.c $(DEPEND)
+	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
+
+$(DEPEND):
+	makedepend -f - -- $(DEPEND_DEFS) $(CFLAGS) -- $(SOURCES) > $@ 2> /dev/null
+	-[ -f $(DEPEND_PREV) ] && diff -q $(DEPEND_PREV) $@ && mv -f $(DEPEND_PREV) $@
Index: uspace/srv/hid/kbd/Makefile.common
===================================================================
--- uspace/srv/hid/kbd/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/kbd/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,40 @@
+#
+# Copyright (c) 2005 Martin Decky
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+
+## Common names
+#
+
+LIBC_PREFIX = ../../../lib/libc
+SOFTINT_PREFIX = ../../../lib/softint
+LIBS = $(LIBC_PREFIX)/libc.a
+
+DEPEND = Makefile.depend
+DEPEND_PREV = $(DEPEND).prev
+JOB = kbd.job
+OUTPUT = kbd
Index: uspace/srv/hid/kbd/ctl/gxe_fb.c
===================================================================
--- uspace/srv/hid/kbd/ctl/gxe_fb.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/kbd/ctl/gxe_fb.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,234 @@
+/*
+ * Copyright (c) 2009 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup kbd_ctl
+ * @ingroup kbd
+ * @{
+ */
+/**
+ * @file
+ * @brief	GXEmul framebuffer-mode keyboard controller driver.
+ */
+
+#include <kbd.h>
+#include <io/console.h>
+#include <io/keycode.h>
+#include <kbd_ctl.h>
+#include <gsp.h>
+#include <stroke.h>
+
+/** Scancode parser */
+static gsp_t sp;
+
+/** Current parser state */
+static int ds;
+
+#include <stdio.h>
+
+int seq_defs[] = {
+	/* Not shifted */
+
+	0,	KC_BACKTICK,	0x60, GSP_END,
+
+	0,	KC_1,		0x31, GSP_END,
+	0,	KC_2,		0x32, GSP_END,
+	0,	KC_3,		0x33, GSP_END,
+	0,	KC_4,		0x34, GSP_END,
+	0,	KC_5,		0x35, GSP_END,
+	0,	KC_6,		0x36, GSP_END,
+	0,	KC_7,		0x37, GSP_END,
+	0,	KC_8,		0x38, GSP_END,
+	0,	KC_9,		0x39, GSP_END,
+	0,	KC_0,		0x30, GSP_END,
+
+	0,	KC_MINUS,	0x2d, GSP_END,
+	0,	KC_EQUALS,	0x3d, GSP_END,
+	0,	KC_BACKSPACE,	0x08, GSP_END,
+
+	0,	KC_TAB,		0x09, GSP_END,
+
+	0,	KC_Q,		0x71, GSP_END,
+	0,	KC_W,		0x77, GSP_END,
+	0,	KC_E,		0x65, GSP_END,
+	0,	KC_R,		0x72, GSP_END,
+	0,	KC_T,		0x74, GSP_END,
+	0,	KC_Y,		0x79, GSP_END,
+	0,	KC_U,		0x75, GSP_END,
+	0,	KC_I,		0x69, GSP_END,
+	0,	KC_O,		0x6f, GSP_END,
+	0,	KC_P,		0x70, GSP_END,
+
+	0,	KC_LBRACKET,	0x5b, GSP_END,
+	0,	KC_RBRACKET,	0x5d, GSP_END,
+
+	0,	KC_A,		0x61, GSP_END,
+	0,	KC_S,		0x73, GSP_END,
+	0,	KC_D,		0x64, GSP_END,
+	0,	KC_F,		0x66, GSP_END,
+	0,	KC_G,		0x67, GSP_END,
+	0,	KC_H,		0x68, GSP_END,
+	0,	KC_J,		0x6a, GSP_END,
+	0,	KC_K,		0x6b, GSP_END,
+	0,	KC_L,		0x6c, GSP_END,
+
+	0,	KC_SEMICOLON,	0x3b, GSP_END,
+	0,	KC_QUOTE,	0x27, GSP_END,
+	0,	KC_BACKSLASH,	0x5c, GSP_END,
+
+	0,	KC_Z,		0x7a, GSP_END,
+	0,	KC_X,		0x78, GSP_END,
+	0,	KC_C,		0x63, GSP_END,
+	0,	KC_V,		0x76, GSP_END,
+	0,	KC_B,		0x62, GSP_END,
+	0,	KC_N,		0x6e, GSP_END,
+	0,	KC_M,		0x6d, GSP_END,
+
+	0,	KC_COMMA,	0x2c, GSP_END,
+	0,	KC_PERIOD,	0x2e, GSP_END,
+	0,	KC_SLASH,	0x2f, GSP_END,
+
+	/* Shifted */
+
+	KM_SHIFT,	KC_BACKTICK,	0x7e, GSP_END,
+
+	KM_SHIFT,	KC_1,		0x21, GSP_END,
+	KM_SHIFT,	KC_2,		0x40, GSP_END,
+	KM_SHIFT,	KC_3,		0x23, GSP_END,
+	KM_SHIFT,	KC_4,		0x24, GSP_END,
+	KM_SHIFT,	KC_5,		0x25, GSP_END,
+	KM_SHIFT,	KC_6,		0x5e, GSP_END,
+	KM_SHIFT,	KC_7,		0x26, GSP_END,
+	KM_SHIFT,	KC_8,		0x2a, GSP_END,
+	KM_SHIFT,	KC_9,		0x28, GSP_END,
+	KM_SHIFT,	KC_0,		0x29, GSP_END,
+
+	KM_SHIFT,	KC_MINUS,	0x5f, GSP_END,
+	KM_SHIFT,	KC_EQUALS,	0x2b, GSP_END,
+
+	KM_SHIFT,	KC_Q,		0x51, GSP_END,
+	KM_SHIFT,	KC_W,		0x57, GSP_END,
+	KM_SHIFT,	KC_E,		0x45, GSP_END,
+	KM_SHIFT,	KC_R,		0x52, GSP_END,
+	KM_SHIFT,	KC_T,		0x54, GSP_END,
+	KM_SHIFT,	KC_Y,		0x59, GSP_END,
+	KM_SHIFT,	KC_U,		0x55, GSP_END,
+	KM_SHIFT,	KC_I,		0x49, GSP_END,
+	KM_SHIFT,	KC_O,		0x4f, GSP_END,
+	KM_SHIFT,	KC_P,		0x50, GSP_END,
+
+	KM_SHIFT,	KC_LBRACKET,	0x7b, GSP_END,
+	KM_SHIFT,	KC_RBRACKET,	0x7d, GSP_END,
+
+	KM_SHIFT,	KC_A,		0x41, GSP_END,
+	KM_SHIFT,	KC_S,		0x53, GSP_END,
+	KM_SHIFT,	KC_D,		0x44, GSP_END,
+	KM_SHIFT,	KC_F,		0x46, GSP_END,
+	KM_SHIFT,	KC_G,		0x47, GSP_END,
+	KM_SHIFT,	KC_H,		0x48, GSP_END,
+	KM_SHIFT,	KC_J,		0x4a, GSP_END,
+	KM_SHIFT,	KC_K,		0x4b, GSP_END,
+	KM_SHIFT,	KC_L,		0x4c, GSP_END,
+
+	KM_SHIFT,	KC_SEMICOLON,	0x3a, GSP_END,
+	KM_SHIFT,	KC_QUOTE,	0x22, GSP_END,
+	KM_SHIFT,	KC_BACKSLASH,	0x7c, GSP_END,
+
+	KM_SHIFT,	KC_Z,		0x5a, GSP_END,
+	KM_SHIFT,	KC_X,		0x58, GSP_END,
+	KM_SHIFT,	KC_C,		0x43, GSP_END,
+	KM_SHIFT,	KC_V,		0x56, GSP_END,
+	KM_SHIFT,	KC_B,		0x42, GSP_END,
+	KM_SHIFT,	KC_N,		0x4e, GSP_END,
+	KM_SHIFT,	KC_M,		0x4d, GSP_END,
+
+	KM_SHIFT,	KC_COMMA,	0x3c, GSP_END,
+	KM_SHIFT,	KC_PERIOD,	0x3e, GSP_END,
+	KM_SHIFT,	KC_SLASH,	0x3f, GSP_END,
+
+	/* ... */
+
+	0,	KC_SPACE,	0x20, GSP_END,
+	0,	KC_ENTER,	0x0a, GSP_END,
+	0,	KC_ENTER,	0x0d, GSP_END,
+
+	0,	KC_ESCAPE,	0x1b, 0x1b, GSP_END,
+
+	0,	KC_F1,		0x1b, 0x5b, 0x4f, 0x50, GSP_END,
+	0,	KC_F2,		0x1b, 0x5b, 0x4f, 0x51, GSP_END,
+	0,	KC_F3,		0x1b, 0x5b, 0x4f, 0x52, GSP_END,
+	0,	KC_F4,		0x1b, 0x5b, 0x4f, 0x53, GSP_END,
+	0,	KC_F5,		0x1b, 0x5b, 0x31, 0x35, GSP_END,
+	0,	KC_F6,		0x1b, 0x5b, 0x31, 0x37, GSP_END,
+	0,	KC_F7,		0x1b, 0x5b, 0x31, 0x38, GSP_END,
+	0,	KC_F8,		0x1b, 0x5b, 0x31, 0x39, GSP_END,
+	0,	KC_F9,		0x1b, 0x5b, 0x32, 0x38, GSP_END,
+	0,	KC_F10,		0x1b, 0x5b, 0x32, 0x39, GSP_END,
+	0,	KC_F11,		0x1b, 0x5b, 0x32, 0x33, GSP_END,
+	0,	KC_F12,		0x1b, 0x5b, 0x32, 0x34, GSP_END,
+
+	0,	KC_INSERT,	0x1b, 0x5b, 0x32, 0x7e, GSP_END,
+	0,	KC_HOME,	0x1b, 0x5b, 0x48, GSP_END,
+	0,	KC_PAGE_UP,	0x1b, 0x5b, 0x35, 0x7e, GSP_END,
+	0,	KC_DELETE,	0x1b, 0x5b, 0x33, 0x7e, GSP_END,
+	0,	KC_END,		0x1b, 0x5b, 0x46, GSP_END,
+	0,	KC_PAGE_DOWN,	0x1b, 0x5b, 0x36, 0x7e, GSP_END,
+
+	0,	KC_UP,		0x1b, 0x5b, 0x41, GSP_END,
+	0,	KC_LEFT,	0x1b, 0x5b, 0x44, GSP_END,
+	0,	KC_DOWN,	0x1b, 0x5b, 0x42, GSP_END,
+	0,	KC_RIGHT,	0x1b, 0x5b, 0x43, GSP_END,
+
+	0,	0
+};
+
+int kbd_ctl_init(void)
+{
+	ds = 0;
+
+	gsp_init(&sp);
+	return gsp_insert_defs(&sp, seq_defs);
+}
+
+void kbd_ctl_parse_scancode(int scancode)
+{
+	unsigned mods, key;
+
+	ds = gsp_step(&sp, ds, scancode, &mods, &key);
+	if (key != 0) {
+		stroke_sim(mods, key);
+	}
+}
+
+void kbd_ctl_set_ind(unsigned mods)
+{
+	(void) mods;
+}
+
+/**
+ * @}
+ */ 
Index: uspace/srv/hid/kbd/ctl/pc.c
===================================================================
--- uspace/srv/hid/kbd/ctl/pc.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/kbd/ctl/pc.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,273 @@
+/*
+ * Copyright (c) 2009 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup kbd_ctl
+ * @ingroup kbd
+ * @{
+ */
+/**
+ * @file
+ * @brief PC keyboard controller driver.
+ */
+
+#include <kbd.h>
+#include <io/console.h>
+#include <io/keycode.h>
+#include <kbd_ctl.h>
+#include <kbd_port.h>
+#include <gsp.h>
+
+enum dec_state {
+	ds_s,
+	ds_e
+};
+
+enum special_code {
+	SC_ACK = 0xfa,
+	SC_NAK = 0xfe
+};
+
+enum lock_ind_bits {
+	LI_SCROLL	= 0x01,
+	LI_NUM		= 0x02,
+	LI_CAPS		= 0x04
+};
+
+enum kbd_command {
+	KBD_CMD_SET_LEDS = 0xed
+};
+
+static enum dec_state ds;
+
+static int scanmap_simple[] = {
+
+	[0x29] = KC_BACKTICK,
+
+	[0x02] = KC_1,
+	[0x03] = KC_2,
+	[0x04] = KC_3,
+	[0x05] = KC_4,
+	[0x06] = KC_5,
+	[0x07] = KC_6,
+	[0x08] = KC_7,
+	[0x09] = KC_8,
+	[0x0a] = KC_9,
+	[0x0b] = KC_0,
+
+	[0x0c] = KC_MINUS,
+	[0x0d] = KC_EQUALS,
+	[0x0e] = KC_BACKSPACE,
+
+	[0x0f] = KC_TAB,
+
+	[0x10] = KC_Q,
+	[0x11] = KC_W,
+	[0x12] = KC_E,
+	[0x13] = KC_R,
+	[0x14] = KC_T,
+	[0x15] = KC_Y,
+	[0x16] = KC_U,
+	[0x17] = KC_I,
+	[0x18] = KC_O,
+	[0x19] = KC_P,
+
+	[0x1a] = KC_LBRACKET,
+	[0x1b] = KC_RBRACKET,
+
+	[0x3a] = KC_CAPS_LOCK,
+
+	[0x1e] = KC_A,
+	[0x1f] = KC_S,
+	[0x20] = KC_D,
+	[0x21] = KC_F,
+	[0x22] = KC_G,
+	[0x23] = KC_H,
+	[0x24] = KC_J,
+	[0x25] = KC_K,
+	[0x26] = KC_L,
+
+	[0x27] = KC_SEMICOLON,
+	[0x28] = KC_QUOTE,
+	[0x2b] = KC_BACKSLASH,
+
+	[0x2a] = KC_LSHIFT,
+
+	[0x2c] = KC_Z,
+	[0x2d] = KC_X,
+	[0x2e] = KC_C,
+	[0x2f] = KC_V,
+	[0x30] = KC_B,
+	[0x31] = KC_N,
+	[0x32] = KC_M,
+
+	[0x33] = KC_COMMA,
+	[0x34] = KC_PERIOD,
+	[0x35] = KC_SLASH,
+
+	[0x36] = KC_RSHIFT,
+
+	[0x1d] = KC_LCTRL,
+	[0x38] = KC_LALT,
+	[0x39] = KC_SPACE,
+
+	[0x01] = KC_ESCAPE,
+
+	[0x3b] = KC_F1,
+	[0x3c] = KC_F2,
+	[0x3d] = KC_F3,
+	[0x3e] = KC_F4,
+	[0x3f] = KC_F5,
+	[0x40] = KC_F6,
+	[0x41] = KC_F7,
+
+	[0x42] = KC_F8,
+	[0x43] = KC_F9,
+	[0x44] = KC_F10,
+
+	[0x57] = KC_F11,
+	[0x58] = KC_F12,
+
+	[0x46] = KC_SCROLL_LOCK,
+
+	[0x1c] = KC_ENTER,
+
+	[0x45] = KC_NUM_LOCK,
+	[0x37] = KC_NTIMES,
+	[0x4a] = KC_NMINUS,
+	[0x4e] = KC_NPLUS,
+	[0x47] = KC_N7,
+	[0x48] = KC_N8,
+	[0x49] = KC_N9,
+	[0x4b] = KC_N4,
+	[0x4c] = KC_N5,
+	[0x4d] = KC_N6,
+	[0x4f] = KC_N1,
+	[0x50] = KC_N2,
+	[0x51] = KC_N3,
+	[0x52] = KC_N0,
+	[0x53] = KC_NPERIOD
+};
+
+static int scanmap_e0[] = {
+	[0x38] = KC_RALT,
+	[0x1d] = KC_RSHIFT,
+
+	[0x37] = KC_PRTSCR,
+
+	[0x52] = KC_INSERT,
+	[0x47] = KC_HOME,
+	[0x49] = KC_PAGE_UP,
+
+	[0x53] = KC_DELETE,
+	[0x4f] = KC_END,
+	[0x51] = KC_PAGE_DOWN,
+
+	[0x48] = KC_UP,
+	[0x4b] = KC_LEFT,
+	[0x50] = KC_DOWN,
+	[0x4d] = KC_RIGHT,
+
+	[0x35] = KC_NSLASH,
+	[0x1c] = KC_NENTER
+};
+
+int kbd_ctl_init(void)
+{
+	ds = ds_s;
+	return 0;
+}
+
+void kbd_ctl_parse_scancode(int scancode)
+{
+	console_ev_type_t type;
+	unsigned int key;
+	int *map;
+	size_t map_length;
+
+	/*
+	 * ACK/NAK are returned as response to us sending a command.
+	 * We are not interested in them.
+	 */
+	if (scancode == SC_ACK || scancode == SC_NAK)
+		return;
+
+	if (scancode == 0xe0) {
+		ds = ds_e;
+		return;
+	}
+
+	switch (ds) {
+	case ds_s:
+		map = scanmap_simple;
+		map_length = sizeof(scanmap_simple) / sizeof(int);
+		break;
+	case ds_e:
+		map = scanmap_e0;
+		map_length = sizeof(scanmap_e0) / sizeof(int);
+		break;
+	default:
+		map = NULL;
+		map_length = 0;
+	}
+
+	ds = ds_s;
+
+	if (scancode & 0x80) {
+		scancode &= ~0x80;
+		type = KEY_RELEASE;
+	} else {
+		type = KEY_PRESS;
+	}
+
+	if ((scancode < 0) || ((size_t) scancode >= map_length))
+		return;
+
+	key = map[scancode];
+	if (key != 0)
+		kbd_push_ev(type, key);
+}
+
+void kbd_ctl_set_ind(unsigned mods)
+{
+	uint8_t b;
+
+	b = 0;
+	if ((mods & KM_CAPS_LOCK) != 0)
+		b = b | LI_CAPS;
+	if ((mods & KM_NUM_LOCK) != 0)
+		b = b | LI_NUM;
+	if ((mods & KM_SCROLL_LOCK) != 0)
+		b = b | LI_SCROLL;
+
+	kbd_port_write(KBD_CMD_SET_LEDS);
+	kbd_port_write(b);
+}
+
+/**
+ * @}
+ */ 
Index: uspace/srv/hid/kbd/ctl/pl050.c
===================================================================
--- uspace/srv/hid/kbd/ctl/pl050.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/kbd/ctl/pl050.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,267 @@
+/*
+ * Copyright (c) 2009 Vineeth Pillai
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup kbd_ctl
+ * @ingroup kbd
+ * @{
+ */
+/**
+ * @file
+ * @brief PL050 keyboard controller driver.
+ */
+
+#include <kbd.h>
+#include <io/console.h>
+#include <io/keycode.h>
+#include <kbd_ctl.h>
+#include <gsp.h>
+#include <stdio.h>
+
+#define PL050_CAPS_SCAN_CODE 0x58
+#define PL050_NUM_SCAN_CODE 0x77
+#define PL050_SCROLL_SCAN_CODE 0x7E
+
+static bool is_lock_key(int);
+enum dec_state {
+	ds_s,
+	ds_e
+};
+
+static enum dec_state ds;
+
+static int scanmap_simple[] = {
+
+	[0x0e] = KC_BACKTICK,
+
+	[0x16] = KC_1,
+	[0x1e] = KC_2,
+	[0x26] = KC_3,
+	[0x25] = KC_4,
+	[0x2e] = KC_5,
+	[0x36] = KC_6,
+	[0x3d] = KC_7,
+	[0x3e] = KC_8,
+	[0x46] = KC_9,
+	[0x45] = KC_0,
+
+	[0x4e] = KC_MINUS,
+	[0x55] = KC_EQUALS,
+	[0x66] = KC_BACKSPACE,
+
+	[0x0d] = KC_TAB,
+
+	[0x15] = KC_Q,
+	[0x1d] = KC_W,
+	[0x24] = KC_E,
+	[0x2d] = KC_R,
+	[0x2c] = KC_T,
+	[0x35] = KC_Y,
+	[0x3c] = KC_U,
+	[0x43] = KC_I,
+	[0x44] = KC_O,
+	[0x4d] = KC_P,
+
+	[0x54] = KC_LBRACKET,
+	[0x5b] = KC_RBRACKET,
+
+	[0x58] = KC_CAPS_LOCK,
+
+	[0x1c] = KC_A,
+	[0x1b] = KC_S,
+	[0x23] = KC_D,
+	[0x2b] = KC_F,
+	[0x34] = KC_G,
+	[0x33] = KC_H,
+	[0x3b] = KC_J,
+	[0x42] = KC_K,
+	[0x4b] = KC_L,
+
+	[0x4c] = KC_SEMICOLON,
+	[0x52] = KC_QUOTE,
+	[0x5d] = KC_BACKSLASH,
+
+	[0x12] = KC_LSHIFT,
+
+	[0x1a] = KC_Z,
+	[0x22] = KC_X,
+	[0x21] = KC_C,
+	[0x2a] = KC_V,
+	[0x32] = KC_B,
+	[0x31] = KC_N,
+	[0x3a] = KC_M,
+
+	[0x41] = KC_COMMA,
+	[0x49] = KC_PERIOD,
+	[0x4a] = KC_SLASH,
+
+	[0x59] = KC_RSHIFT,
+
+	[0x14] = KC_LCTRL,
+	[0x11] = KC_LALT,
+	[0x29] = KC_SPACE,
+
+	[0x76] = KC_ESCAPE,
+
+	[0x05] = KC_F1,
+	[0x06] = KC_F2,
+	[0x04] = KC_F3,
+	[0x0c] = KC_F4,
+	[0x03] = KC_F5,
+	[0x0b] = KC_F6,
+	[0x02] = KC_F7,
+
+	[0x0a] = KC_F8,
+	[0x01] = KC_F9,
+	[0x09] = KC_F10,
+
+	[0x78] = KC_F11,
+	[0x07] = KC_F12,
+
+	[0x60] = KC_SCROLL_LOCK,
+
+	[0x5a] = KC_ENTER,
+
+	[0x77] = KC_NUM_LOCK,
+	[0x7c] = KC_NTIMES,
+	[0x7b] = KC_NMINUS,
+	[0x79] = KC_NPLUS,
+	[0x6c] = KC_N7,
+	[0x75] = KC_N8,
+	[0x7d] = KC_N9,
+	[0x6b] = KC_N4,
+	[0x73] = KC_N5,
+	[0x74] = KC_N6,
+	[0x69] = KC_N1,
+	[0x72] = KC_N2,
+	[0x7a] = KC_N3,
+	[0x70] = KC_N0,
+	[0x71] = KC_NPERIOD
+};
+
+static int scanmap_e0[] = {
+	[0x65] = KC_RALT,
+	[0x59] = KC_RSHIFT,
+
+	[0x64] = KC_PRTSCR,
+
+	[0x70] = KC_INSERT,
+	[0x6c] = KC_HOME,
+	[0x7d] = KC_PAGE_UP,
+
+	[0x71] = KC_DELETE,
+	[0x69] = KC_END,
+	[0x7a] = KC_PAGE_DOWN,
+
+	[0x75] = KC_UP,
+	[0x6b] = KC_LEFT,
+	[0x72] = KC_DOWN,
+	[0x74] = KC_RIGHT,
+
+	[0x4a] = KC_NSLASH,
+	[0x5a] = KC_NENTER
+};
+
+int kbd_ctl_init(void)
+{
+	ds = ds_s;
+	return 0;
+}
+
+void kbd_ctl_parse_scancode(int scancode)
+{
+	static int key_release_flag = 0;
+	static int is_locked = 0;
+	console_ev_type_t type;
+	unsigned int key;
+	int *map;
+	size_t map_length;
+
+	if (scancode == 0xe0) {
+		ds = ds_e;
+		return;
+	}
+
+	switch (ds) {
+	case ds_s:
+		map = scanmap_simple;
+		map_length = sizeof(scanmap_simple) / sizeof(int);
+		break;
+	case ds_e:
+		map = scanmap_e0;
+		map_length = sizeof(scanmap_e0) / sizeof(int);
+		break;
+	default:
+		map = NULL;
+		map_length = 0;
+	}
+
+	ds = ds_s;
+	if (scancode == 0xf0) {
+		key_release_flag = 1;
+		return;
+	} else {
+		if (key_release_flag) {
+			type = KEY_RELEASE;
+			key_release_flag = 0;
+			if (is_lock_key(scancode)) {
+				if (!is_locked) {
+					is_locked = 1;
+				} else {
+					is_locked = 0;
+					return;
+				}
+			}
+		} else {
+			if (is_lock_key(scancode) && is_locked)
+				return;
+			type = KEY_PRESS;
+		}
+	}
+
+	if (scancode < 0)
+		return;
+
+	key = map[scancode];
+	if (key != 0)
+		kbd_push_ev(type, key);
+}
+
+static bool is_lock_key(int sc)
+{
+	return ((sc == PL050_CAPS_SCAN_CODE) || (sc == PL050_NUM_SCAN_CODE) ||
+	    (sc == PL050_SCROLL_SCAN_CODE));
+}
+
+void kbd_ctl_set_ind(unsigned mods)
+{
+	(void) mods;
+}
+
+/**
+ * @}
+ */ 
Index: uspace/srv/hid/kbd/ctl/stty.c
===================================================================
--- uspace/srv/hid/kbd/ctl/stty.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/kbd/ctl/stty.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,233 @@
+/*
+ * Copyright (c) 2009 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup kbd_ctl
+ * @ingroup kbd
+ * @{
+ */
+/**
+ * @file
+ * @brief	Serial TTY-like keyboard controller driver.
+ */
+
+#include <kbd.h>
+#include <io/keycode.h>
+#include <kbd_ctl.h>
+#include <gsp.h>
+#include <stroke.h>
+
+/** Scancode parser */
+static gsp_t sp;
+
+/** Current parser state */
+static int ds;
+
+#include <stdio.h>
+
+int seq_defs[] = {
+	/* Not shifted */
+
+	0,	KC_BACKTICK,	0x60, GSP_END,
+
+	0,	KC_1,		0x31, GSP_END,
+	0,	KC_2,		0x32, GSP_END,
+	0,	KC_3,		0x33, GSP_END,
+	0,	KC_4,		0x34, GSP_END,
+	0,	KC_5,		0x35, GSP_END,
+	0,	KC_6,		0x36, GSP_END,
+	0,	KC_7,		0x37, GSP_END,
+	0,	KC_8,		0x38, GSP_END,
+	0,	KC_9,		0x39, GSP_END,
+	0,	KC_0,		0x30, GSP_END,
+
+	0,	KC_MINUS,	0x2d, GSP_END,
+	0,	KC_EQUALS,	0x3d, GSP_END,
+	0,	KC_BACKSPACE,	0x08, GSP_END,
+
+	0,	KC_TAB,		0x09, GSP_END,
+
+	0,	KC_Q,		0x71, GSP_END,
+	0,	KC_W,		0x77, GSP_END,
+	0,	KC_E,		0x65, GSP_END,
+	0,	KC_R,		0x72, GSP_END,
+	0,	KC_T,		0x74, GSP_END,
+	0,	KC_Y,		0x79, GSP_END,
+	0,	KC_U,		0x75, GSP_END,
+	0,	KC_I,		0x69, GSP_END,
+	0,	KC_O,		0x6f, GSP_END,
+	0,	KC_P,		0x70, GSP_END,
+
+	0,	KC_LBRACKET,	0x5b, GSP_END,
+	0,	KC_RBRACKET,	0x5d, GSP_END,
+
+	0,	KC_A,		0x61, GSP_END,
+	0,	KC_S,		0x73, GSP_END,
+	0,	KC_D,		0x64, GSP_END,
+	0,	KC_F,		0x66, GSP_END,
+	0,	KC_G,		0x67, GSP_END,
+	0,	KC_H,		0x68, GSP_END,
+	0,	KC_J,		0x6a, GSP_END,
+	0,	KC_K,		0x6b, GSP_END,
+	0,	KC_L,		0x6c, GSP_END,
+
+	0,	KC_SEMICOLON,	0x3b, GSP_END,
+	0,	KC_QUOTE,	0x27, GSP_END,
+	0,	KC_BACKSLASH,	0x5c, GSP_END,
+
+	0,	KC_Z,		0x7a, GSP_END,
+	0,	KC_X,		0x78, GSP_END,
+	0,	KC_C,		0x63, GSP_END,
+	0,	KC_V,		0x76, GSP_END,
+	0,	KC_B,		0x62, GSP_END,
+	0,	KC_N,		0x6e, GSP_END,
+	0,	KC_M,		0x6d, GSP_END,
+
+	0,	KC_COMMA,	0x2c, GSP_END,
+	0,	KC_PERIOD,	0x2e, GSP_END,
+	0,	KC_SLASH,	0x2f, GSP_END,
+
+	/* Shifted */
+
+	KM_SHIFT,	KC_BACKTICK,	0x7e, GSP_END,
+
+	KM_SHIFT,	KC_1,		0x21, GSP_END,
+	KM_SHIFT,	KC_2,		0x40, GSP_END,
+	KM_SHIFT,	KC_3,		0x23, GSP_END,
+	KM_SHIFT,	KC_4,		0x24, GSP_END,
+	KM_SHIFT,	KC_5,		0x25, GSP_END,
+	KM_SHIFT,	KC_6,		0x5e, GSP_END,
+	KM_SHIFT,	KC_7,		0x26, GSP_END,
+	KM_SHIFT,	KC_8,		0x2a, GSP_END,
+	KM_SHIFT,	KC_9,		0x28, GSP_END,
+	KM_SHIFT,	KC_0,		0x29, GSP_END,
+
+	KM_SHIFT,	KC_MINUS,	0x5f, GSP_END,
+	KM_SHIFT,	KC_EQUALS,	0x2b, GSP_END,
+
+	KM_SHIFT,	KC_Q,		0x51, GSP_END,
+	KM_SHIFT,	KC_W,		0x57, GSP_END,
+	KM_SHIFT,	KC_E,		0x45, GSP_END,
+	KM_SHIFT,	KC_R,		0x52, GSP_END,
+	KM_SHIFT,	KC_T,		0x54, GSP_END,
+	KM_SHIFT,	KC_Y,		0x59, GSP_END,
+	KM_SHIFT,	KC_U,		0x55, GSP_END,
+	KM_SHIFT,	KC_I,		0x49, GSP_END,
+	KM_SHIFT,	KC_O,		0x4f, GSP_END,
+	KM_SHIFT,	KC_P,		0x50, GSP_END,
+
+	KM_SHIFT,	KC_LBRACKET,	0x7b, GSP_END,
+	KM_SHIFT,	KC_RBRACKET,	0x7d, GSP_END,
+
+	KM_SHIFT,	KC_A,		0x41, GSP_END,
+	KM_SHIFT,	KC_S,		0x53, GSP_END,
+	KM_SHIFT,	KC_D,		0x44, GSP_END,
+	KM_SHIFT,	KC_F,		0x46, GSP_END,
+	KM_SHIFT,	KC_G,		0x47, GSP_END,
+	KM_SHIFT,	KC_H,		0x48, GSP_END,
+	KM_SHIFT,	KC_J,		0x4a, GSP_END,
+	KM_SHIFT,	KC_K,		0x4b, GSP_END,
+	KM_SHIFT,	KC_L,		0x4c, GSP_END,
+
+	KM_SHIFT,	KC_SEMICOLON,	0x3a, GSP_END,
+	KM_SHIFT,	KC_QUOTE,	0x22, GSP_END,
+	KM_SHIFT,	KC_BACKSLASH,	0x7c, GSP_END,
+
+	KM_SHIFT,	KC_Z,		0x5a, GSP_END,
+	KM_SHIFT,	KC_X,		0x58, GSP_END,
+	KM_SHIFT,	KC_C,		0x43, GSP_END,
+	KM_SHIFT,	KC_V,		0x56, GSP_END,
+	KM_SHIFT,	KC_B,		0x42, GSP_END,
+	KM_SHIFT,	KC_N,		0x4e, GSP_END,
+	KM_SHIFT,	KC_M,		0x4d, GSP_END,
+
+	KM_SHIFT,	KC_COMMA,	0x3c, GSP_END,
+	KM_SHIFT,	KC_PERIOD,	0x3e, GSP_END,
+	KM_SHIFT,	KC_SLASH,	0x3f, GSP_END,
+
+	/* ... */
+
+	0,	KC_SPACE,	0x20, GSP_END,
+	0,	KC_ENTER,	0x0a, GSP_END,
+	0,	KC_ENTER,	0x0d, GSP_END,
+
+	0,	KC_ESCAPE,	0x1b, 0x1b, GSP_END,
+
+	0,	KC_F1,		0x1b, 0x4f, 0x50, GSP_END,
+	0,	KC_F2,		0x1b, 0x4f, 0x51, GSP_END,
+	0,	KC_F3,		0x1b, 0x4f, 0x52, GSP_END,
+	0,	KC_F4,		0x1b, 0x4f, 0x53, GSP_END,
+	0,	KC_F5,		0x1b, 0x5b, 0x31, 0x35, 0x7e, GSP_END,
+	0,	KC_F6,		0x1b, 0x5b, 0x31, 0x37, 0x7e, GSP_END,
+	0,	KC_F7,		0x1b, 0x5b, 0x31, 0x38, 0x7e, GSP_END,
+	0,	KC_F8,		0x1b, 0x5b, 0x31, 0x39, 0x7e, GSP_END,
+	0,	KC_F9,		0x1b, 0x5b, 0x32, 0x30, 0x7e, GSP_END,
+	0,	KC_F10,		0x1b, 0x5b, 0x32, 0x31, 0x7e, GSP_END,
+	0,	KC_F11,		0x1b, 0x5b, 0x32, 0x33, 0x7e, GSP_END,
+	0,	KC_F12,		0x1b, 0x5b, 0x32, 0x34, 0x7e, GSP_END,
+
+	0,	KC_INSERT,	0x1b, 0x5b, 0x32, 0x7e, GSP_END,
+	0,	KC_HOME,	0x1b, 0x5b, 0x48, GSP_END,
+	0,	KC_PAGE_UP,	0x1b, 0x5b, 0x35, 0x7e, GSP_END,
+	0,	KC_DELETE,	0x1b, 0x5b, 0x33, 0x7e, GSP_END,
+	0,	KC_END,		0x1b, 0x5b, 0x46, GSP_END,
+	0,	KC_PAGE_DOWN,	0x1b, 0x5b, 0x36, 0x7e, GSP_END,
+
+	0,	KC_UP,		0x1b, 0x5b, 0x41, GSP_END,
+	0,	KC_LEFT,	0x1b, 0x5b, 0x44, GSP_END,
+	0,	KC_DOWN,	0x1b, 0x5b, 0x42, GSP_END,
+	0,	KC_RIGHT,	0x1b, 0x5b, 0x43, GSP_END,
+
+	0,	0
+};
+
+int kbd_ctl_init(void)
+{
+	ds = 0;
+
+	gsp_init(&sp);
+	return gsp_insert_defs(&sp, seq_defs);
+}
+
+void kbd_ctl_parse_scancode(int scancode)
+{
+	unsigned mods, key;
+
+	ds = gsp_step(&sp, ds, scancode, &mods, &key);
+	if (key != 0) {
+		stroke_sim(mods, key);
+	}
+}
+
+void kbd_ctl_set_ind(unsigned mods)
+{
+	(void) mods;
+}
+
+/**
+ * @}
+ */ 
Index: uspace/srv/hid/kbd/ctl/sun.c
===================================================================
--- uspace/srv/hid/kbd/ctl/sun.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/kbd/ctl/sun.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,214 @@
+/*
+ * Copyright (c) 2006 Jakub Jermar
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup kbd_ctl
+ * @ingroup kbd
+ * @{
+ */
+/**
+ * @file
+ * @brief	Sun keyboard controller driver.
+ */
+
+#include <kbd.h>
+#include <io/console.h>
+#include <io/keycode.h>
+#include <kbd_ctl.h>
+
+#define KBD_KEY_RELEASE		0x80
+#define KBD_ALL_KEYS_UP		0x7f
+
+static int scanmap_simple[];
+
+int kbd_ctl_init(void)
+{
+	return 0;
+}
+
+void kbd_ctl_parse_scancode(int scancode)
+{
+	console_ev_type_t type;
+	unsigned int key;
+
+	if (scancode < 0 || scancode >= 0x100)
+		return;
+
+	if (scancode == KBD_ALL_KEYS_UP)
+		return;
+
+	if (scancode & KBD_KEY_RELEASE) {
+		scancode &= ~KBD_KEY_RELEASE;
+		type = KEY_RELEASE;
+	} else {
+		type = KEY_PRESS;
+	}
+
+	key = scanmap_simple[scancode];
+	if (key != 0)
+		kbd_push_ev(type, key);
+}
+
+void kbd_ctl_set_ind(unsigned mods)
+{
+	(void) mods;
+}
+
+/** Primary meaning of scancodes. */
+static int scanmap_simple[] = {
+	[0x00] = 0,
+	[0x01] = 0,
+	[0x02] = 0,
+	[0x03] = 0,
+	[0x04] = 0,
+	[0x05] = KC_F1,
+	[0x06] = KC_F2,
+	[0x07] = KC_F10,
+	[0x08] = KC_F3,
+	[0x09] = KC_F11,
+	[0x0a] = KC_F4,
+	[0x0b] = KC_F12,
+	[0x0c] = KC_F5,
+	[0x0d] = KC_RALT,
+	[0x0e] = KC_F6,
+	[0x0f] = 0,
+	[0x10] = KC_F7,
+	[0x11] = KC_F8,
+	[0x12] = KC_F9,
+	[0x13] = KC_LALT,
+	[0x14] = KC_UP,
+	[0x15] = KC_PAUSE,
+	[0x16] = 0,
+	[0x17] = KC_SCROLL_LOCK,
+	[0x18] = KC_LEFT,
+	[0x19] = 0,
+	[0x1a] = 0,
+	[0x1b] = KC_DOWN,
+	[0x1c] = KC_RIGHT,
+	[0x1d] = KC_ESCAPE,
+	[0x1e] = KC_1,
+	[0x1f] = KC_2,
+	[0x20] = KC_3,
+	[0x21] = KC_4,
+	[0x22] = KC_5,
+	[0x23] = KC_6,
+	[0x24] = KC_7,
+	[0x25] = KC_8,
+	[0x26] = KC_9,
+	[0x27] = KC_0,
+	[0x28] = KC_MINUS,
+	[0x29] = KC_EQUALS,
+	[0x2a] = KC_BACKTICK,
+	[0x2b] = KC_BACKSPACE,
+	[0x2c] = KC_INSERT,
+	[0x2d] = 0,
+	[0x2e] = KC_NSLASH,
+	[0x2f] = KC_NTIMES,
+	[0x30] = 0,
+	[0x31] = 0,
+	[0x32] = KC_NPERIOD,
+	[0x33] = 0,
+	[0x34] = KC_HOME,
+	[0x35] = KC_TAB,
+	[0x36] = KC_Q,
+	[0x37] = KC_W,
+	[0x38] = KC_E,
+	[0x39] = KC_R,
+	[0x3a] = KC_T,
+	[0x3b] = KC_Y,
+	[0x3c] = KC_U,
+	[0x3d] = KC_I,
+	[0x3e] = KC_O,
+	[0x3f] = KC_P,
+	[0x40] = KC_LBRACKET,
+	[0x41] = KC_RBRACKET,
+	[0x42] = KC_DELETE,
+	[0x43] = 0,
+	[0x44] = KC_N7,
+	[0x45] = KC_N8,
+	[0x46] = KC_N9,
+	[0x47] = KC_NMINUS,
+	[0x48] = 0,
+	[0x49] = 0,
+	[0x4a] = KC_END,
+	[0x4b] = 0,
+	[0x4c] = KC_LCTRL,
+	[0x4d] = KC_A,
+	[0x4e] = KC_S,
+	[0x4f] = KC_D,
+	[0x50] = KC_F,
+	[0x51] = KC_G,
+	[0x52] = KC_H,
+	[0x53] = KC_J,
+	[0x54] = KC_K,
+	[0x55] = KC_L,
+	[0x56] = KC_SEMICOLON,
+	[0x57] = KC_QUOTE,
+	[0x58] = KC_BACKSLASH,
+	[0x59] = KC_ENTER,
+	[0x5a] = KC_NENTER,
+	[0x5b] = KC_N4,
+	[0x5c] = KC_N5,
+	[0x5d] = KC_N6,
+	[0x5e] = KC_N0,
+	[0x5f] = 0,
+	[0x60] = KC_PAGE_UP,
+	[0x61] = 0,
+	[0x62] = KC_NUM_LOCK,
+	[0x63] = KC_LSHIFT,
+	[0x64] = KC_Z,
+	[0x65] = KC_X,
+	[0x66] = KC_C,
+	[0x67] = KC_V,
+	[0x68] = KC_B,
+	[0x69] = KC_N,
+	[0x6a] = KC_M,
+	[0x6b] = KC_COMMA,
+	[0x6c] = KC_PERIOD,
+	[0x6d] = KC_SLASH,
+	[0x6e] = KC_RSHIFT,
+	[0x6f] = 0,
+	[0x70] = KC_N1,
+	[0x71] = KC_N2,
+	[0x72] = KC_N3,
+	[0x73] = 0,
+	[0x74] = 0,
+	[0x75] = 0,
+	[0x76] = 0,
+	[0x77] = KC_CAPS_LOCK,
+	[0x78] = 0,
+	[0x79] = KC_SPACE,
+	[0x7a] = 0,
+	[0x7b] = KC_PAGE_DOWN,
+	[0x7c] = 0,
+	[0x7d] = KC_NPLUS,
+	[0x7e] = 0,
+	[0x7f] = 0
+};
+
+/** @}
+ */
Index: uspace/srv/hid/kbd/genarch/gsp.c
===================================================================
--- uspace/srv/hid/kbd/genarch/gsp.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/kbd/genarch/gsp.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,289 @@
+/*
+ * Copyright (c) 2009 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/**
+ * @addtogroup kbdgen generic
+ * @ingroup  kbd
+ * @{
+ */ 
+/** @file
+ * @brief	Generic scancode parser.
+ *
+ * The scancode parser is a simple finite state machine. It is described
+ * using sequences of input symbols (scancodes) and the corresponding output
+ * value (mods, key pair). When the parser recognizes a sequence,
+ * it outputs the value and restarts. If a transition is undefined,
+ * the parser restarts, too.
+ *
+ * Apart from precise values, GSP_DEFAULT allows to catch general cases.
+ * I.e. if we knew that after 0x1b 0x4f there always follow two more
+ * scancodes, we can define (0x1b, 0x4f, GSP_DEFAULT, GSP_DEFAULT, GSP_END)
+ * with null output. This will force the parser to read the entire sequence,
+ * not leaving garbage on the input if it does not recognize the specific
+ * sequence.
+ */
+
+#include <gsp.h>
+#include <adt/hash_table.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#define TRANS_TABLE_CHAINS 256
+
+/*
+ * Hash table operations for the transition function.
+ */
+
+static hash_index_t trans_op_hash(unsigned long key[]);
+static int trans_op_compare(unsigned long key[], hash_count_t keys,
+    link_t *item);
+static void trans_op_remove_callback(link_t *item);
+
+static hash_table_operations_t trans_ops = {
+	.hash = trans_op_hash,
+	.compare = trans_op_compare,
+	.remove_callback = trans_op_remove_callback
+};
+
+static gsp_trans_t *trans_lookup(gsp_t *p, int state, int input);
+static void trans_insert(gsp_t *p, gsp_trans_t *t);
+static gsp_trans_t *trans_new(void);
+
+/** Initialise scancode parser. */
+void gsp_init(gsp_t *p)
+{
+	p->states = 1;
+	hash_table_create(&p->trans, TRANS_TABLE_CHAINS, 2, &trans_ops);
+}
+
+/** Insert a series of definitions into the parser.
+ *
+ * @param p	The parser.
+ * @param defs	Definition list. Each definition starts with two output values
+ *		(mods, key) and continues with a sequence of input values
+ *		terminated with GSP_END. The definition list is terminated
+ *		with two zeroes (0, 0) for output values.
+ */
+int gsp_insert_defs(gsp_t *p, const int *defs)
+{
+	unsigned mods, key;
+	const int *dp;
+	int rc;
+
+	dp = defs;
+
+	while (1) {
+		/* Read the output values. */
+		mods = *dp++;
+		key = *dp++;
+		if (key == 0) break;
+
+		/* Insert one sequence. */		
+		rc = gsp_insert_seq(p, dp, mods, key);
+		if (rc != 0)
+			return rc;
+
+		/* Skip to the next definition. */
+		while (*dp != GSP_END)
+			++dp;
+		++dp;
+	}
+
+	return 0;
+}
+
+/** Insert one sequence into the parser.
+ *
+ * @param p	The parser.
+ * @param seq	Sequence of input values terminated with GSP_END.
+ * @param mods	Corresponsing output value.
+ * @param key	Corresponsing output value.
+ */
+int gsp_insert_seq(gsp_t *p, const int *seq, unsigned mods, unsigned key)
+{
+	int state;
+	gsp_trans_t *t;
+
+	state = 0;
+	t = NULL;
+
+	/* Input sequence must be non-empty. */
+	if (*seq == GSP_END)
+		return -1;
+
+	while (*(seq + 1) != GSP_END) {
+		t = trans_lookup(p, state, *seq);
+		if (t == NULL) {
+			/* Create new state. */
+			t = trans_new();
+			t->old_state = state;
+			t->input = *seq;
+			t->new_state = p->states++;
+
+			t->out_mods = 0;
+			t->out_key = 0;
+
+			trans_insert(p, t);
+		}
+		state = t->new_state;
+		++seq;
+	}
+
+	/* Process the last transition. */
+	t = trans_lookup(p, state, *seq);
+	if (t != NULL) {
+		exit(1);
+		return -1;	/* Conflicting definition. */
+	}
+
+	t = trans_new();
+	t->old_state = state;
+	t->input = *seq;
+	t->new_state = 0;
+
+	t->out_mods = mods;
+	t->out_key = key;
+
+	trans_insert(p, t);
+
+	return 0;
+}
+
+/** Compute one parser step.
+ *
+ * Computes the next state and output values for a given state and input.
+ * This handles everything including restarts and default branches.
+ *
+ * @param p		The parser.
+ * @param state		Old state.
+ * @param input		Input symbol (scancode).
+ * @param mods		Output value (modifier).
+ * @param key		Output value (key).
+ * @return		New state.
+ */
+int gsp_step(gsp_t *p, int state, int input, unsigned *mods, unsigned *key)
+{
+	gsp_trans_t *t;
+
+	t = trans_lookup(p, state, input);
+	if (t == NULL) {
+		t = trans_lookup(p, state, GSP_DEFAULT);
+	}
+
+	if (t == NULL) {
+		printf("gsp_step: not found\n");
+		*mods = NULL;
+		*key = NULL;
+		return 0;
+	}
+
+	*mods = t->out_mods;
+	*key = t->out_key;
+	return t->new_state;
+}
+
+/** Transition function lookup.
+ *
+ * Returns the value of the transition function for the given state
+ * and input. Note that the transition must be specified precisely,
+ * to obtain the default branch use input = GSP_DEFAULT.
+ *
+ * @param p		Parser.
+ * @param state		Current state.
+ * @param input		Input value.
+ * @return		The transition or @c NULL if not defined.
+ */
+static gsp_trans_t *trans_lookup(gsp_t *p, int state, int input)
+{
+	link_t *item;
+	unsigned long key[2];
+
+	key[0] = state;
+	key[1] = input;
+
+	item = hash_table_find(&p->trans, key);
+	if (item == NULL) return NULL;
+
+	return hash_table_get_instance(item, gsp_trans_t, link);
+}
+
+/** Define a new transition.
+ *
+ * @param p	The parser.
+ * @param t	Transition with all fields defined.
+ */
+static void trans_insert(gsp_t *p, gsp_trans_t *t)
+{
+	unsigned long key[2];
+
+	key[0] = t->old_state;
+	key[1] = t->input;
+
+	hash_table_insert(&p->trans, key, &t->link);
+}
+
+/** Allocate transition structure. */
+static gsp_trans_t *trans_new(void)
+{
+	gsp_trans_t *t;
+
+	t = malloc(sizeof(gsp_trans_t));
+	if (t == NULL) {
+		printf("Memory allocation failed.\n");
+		exit(1);
+	}
+
+	return t;
+}
+
+/*
+ * Transition function hash table operations.
+ */
+
+static hash_index_t trans_op_hash(unsigned long key[])
+{
+	return (key[0] * 17 + key[1]) % TRANS_TABLE_CHAINS;
+}
+
+static int trans_op_compare(unsigned long key[], hash_count_t keys,
+    link_t *item)
+{
+	gsp_trans_t *t;
+
+	t = hash_table_get_instance(item, gsp_trans_t, link);
+	return ((key[0] == (unsigned long) t->old_state)
+	    && (key[1] == (unsigned long) t->input));
+}
+
+static void trans_op_remove_callback(link_t *item)
+{
+}
+
+/**
+ * @}
+ */ 
Index: uspace/srv/hid/kbd/genarch/stroke.c
===================================================================
--- uspace/srv/hid/kbd/genarch/stroke.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/kbd/genarch/stroke.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2009 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup kbd
+ * @{
+ */
+/**
+ * @file
+ * @brief Stroke simulator.
+ *
+ * When simulating a keyboard using a serial TTY we need to convert the
+ * recognized strokes (such as Shift-A) to sequences of key presses and
+ * releases (such as 'press Shift, press A, release A, release Shift').
+ *
+ */
+
+#include <stroke.h>
+#include <kbd.h>
+#include <io/console.h>
+#include <io/keycode.h>
+
+/** Correspondence between modifers and the modifier keycodes. */
+static unsigned int mods_keys[][2] = {
+	{ KM_LSHIFT, KC_LSHIFT },
+	{ 0, 0 }
+};
+
+/** Simulate keystroke using sequences of key presses and releases. */
+void stroke_sim(unsigned mod, unsigned key)
+{
+	int i;
+
+	/* Simulate modifier presses. */
+	i = 0;
+	while (mods_keys[i][0] != 0) {
+		if (mod & mods_keys[i][0]) {
+			kbd_push_ev(KEY_PRESS, mods_keys[i][1]);
+		}
+		++i;
+	}
+
+	/* Simulate key press and release. */
+	if (key != 0) {
+		kbd_push_ev(KEY_PRESS, key);
+		kbd_push_ev(KEY_RELEASE, key);
+	}
+
+	/* Simulate modifier releases. */
+	i = 0;
+	while (mods_keys[i][0] != 0) {
+		if (mod & mods_keys[i][0]) {
+			kbd_push_ev(KEY_RELEASE, mods_keys[i][1]);
+		}
+		++i;
+	}
+}
+
+/**
+ * @}
+ */
Index: uspace/srv/hid/kbd/generic/kbd.c
===================================================================
--- uspace/srv/hid/kbd/generic/kbd.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/kbd/generic/kbd.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,264 @@
+/*
+ * Copyright (c) 2006 Josef Cejka
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/**
+ * @addtogroup kbdgen generic
+ * @brief HelenOS generic uspace keyboard handler.
+ * @ingroup kbd
+ * @{
+ */
+/** @file
+ */
+
+#include <ipc/ipc.h>
+#include <ipc/services.h>
+#include <ipc/kbd.h>
+#include <sysinfo.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <ipc/ns.h>
+#include <async.h>
+#include <errno.h>
+#include <adt/fifo.h>
+#include <io/console.h>
+#include <io/keycode.h>
+#include <devmap.h>
+
+#include <kbd.h>
+#include <kbd_port.h>
+#include <kbd_ctl.h>
+#include <layout.h>
+
+#define NAME       "kbd"
+#define NAMESPACE  "hid_in"
+
+int client_phone = -1;
+
+/** Currently active modifiers. */
+static unsigned mods = KM_NUM_LOCK;
+
+/** Currently pressed lock keys. We track these to tackle autorepeat. */
+static unsigned lock_keys;
+
+int cir_service = 0;
+int cir_phone = -1;
+
+#define NUM_LAYOUTS 3
+
+static layout_op_t *layout[NUM_LAYOUTS] = {
+	&us_qwerty_op,
+	&us_dvorak_op,
+	&cz_op
+};
+
+static int active_layout = 0;
+
+void kbd_push_scancode(int scancode)
+{
+/*	printf("scancode: 0x%x\n", scancode);*/
+	kbd_ctl_parse_scancode(scancode);
+}
+
+void kbd_push_ev(int type, unsigned int key)
+{
+	console_event_t ev;
+	unsigned mod_mask;
+
+	switch (key) {
+	case KC_LCTRL: mod_mask = KM_LCTRL; break;
+	case KC_RCTRL: mod_mask = KM_RCTRL; break;
+	case KC_LSHIFT: mod_mask = KM_LSHIFT; break;
+	case KC_RSHIFT: mod_mask = KM_RSHIFT; break;
+	case KC_LALT: mod_mask = KM_LALT; break;
+	case KC_RALT: mod_mask = KM_RALT; break;
+	default: mod_mask = 0; break;
+	}
+
+	if (mod_mask != 0) {
+		if (type == KEY_PRESS)
+			mods = mods | mod_mask;
+		else
+			mods = mods & ~mod_mask;
+	}
+
+	switch (key) {
+	case KC_CAPS_LOCK: mod_mask = KM_CAPS_LOCK; break;
+	case KC_NUM_LOCK: mod_mask = KM_NUM_LOCK; break;
+	case KC_SCROLL_LOCK: mod_mask = KM_SCROLL_LOCK; break;
+	default: mod_mask = 0; break;
+	}
+
+	if (mod_mask != 0) {
+		if (type == KEY_PRESS) {
+			/*
+			 * Only change lock state on transition from released
+			 * to pressed. This prevents autorepeat from messing
+			 * up the lock state.
+			 */
+			mods = mods ^ (mod_mask & ~lock_keys);
+			lock_keys = lock_keys | mod_mask;
+
+			/* Update keyboard lock indicator lights. */
+			kbd_ctl_set_ind(mods);
+		} else {
+			lock_keys = lock_keys & ~mod_mask;
+		}
+	}
+/*
+	printf("type: %d\n", type);
+	printf("mods: 0x%x\n", mods);
+	printf("keycode: %u\n", key);
+*/
+	if (type == KEY_PRESS && (mods & KM_LCTRL) &&
+		key == KC_F1) {
+		active_layout = 0;
+		layout[active_layout]->reset();
+		return;
+	}
+
+	if (type == KEY_PRESS && (mods & KM_LCTRL) &&
+		key == KC_F2) {
+		active_layout = 1;
+		layout[active_layout]->reset();
+		return;
+	}
+
+	if (type == KEY_PRESS && (mods & KM_LCTRL) &&
+		key == KC_F3) {
+		active_layout = 2;
+		layout[active_layout]->reset();
+		return;
+	}
+
+	ev.type = type;
+	ev.key = key;
+	ev.mods = mods;
+
+	ev.c = layout[active_layout]->parse_ev(&ev);
+
+	async_msg_4(client_phone, KBD_EVENT, ev.type, ev.key, ev.mods, ev.c);
+}
+
+static void client_connection(ipc_callid_t iid, ipc_call_t *icall)
+{
+	ipc_callid_t callid;
+	ipc_call_t call;
+	int retval;
+
+	ipc_answer_0(iid, EOK);
+
+	while (1) {
+		callid = async_get_call(&call);
+		switch (IPC_GET_METHOD(call)) {
+		case IPC_M_PHONE_HUNGUP:
+			if (client_phone != -1) {
+				ipc_hangup(client_phone);
+				client_phone = -1;
+			}
+			
+			ipc_answer_0(callid, EOK);
+			return;
+		case IPC_M_CONNECT_TO_ME:
+			if (client_phone != -1) {
+				retval = ELIMIT;
+				break;
+			}
+			client_phone = IPC_GET_ARG5(call);
+			retval = 0;
+			break;
+		case KBD_YIELD:
+			kbd_port_yield();
+			retval = 0;
+			break;
+		case KBD_RECLAIM:
+			kbd_port_reclaim();
+			retval = 0;
+			break;
+		default:
+			retval = EINVAL;
+		}
+		ipc_answer_0(callid, retval);
+	}	
+}
+
+
+int main(int argc, char **argv)
+{
+	printf(NAME ": HelenOS Keyboard service\n");
+	
+	if (sysinfo_value("kbd.cir.fhc") == 1)
+		cir_service = SERVICE_FHC;
+	else if (sysinfo_value("kbd.cir.obio") == 1)
+		cir_service = SERVICE_OBIO;
+	
+	if (cir_service) {
+		while (cir_phone < 0) {
+			cir_phone = ipc_connect_me_to_blocking(PHONE_NS, cir_service,
+			    0, 0);
+		}
+	}
+	
+	/* Initialize port driver. */
+	if (kbd_port_init() != 0)
+		return -1;
+
+	/* Initialize controller driver. */
+	if (kbd_ctl_init() != 0)
+		return -1;
+
+	/* Initialize (reset) layout. */
+	layout[active_layout]->reset();
+	
+	/* Register driver */
+	int rc = devmap_driver_register(NAME, client_connection);
+	if (rc < 0) {
+		printf(NAME ": Unable to register driver (%d)\n", rc);
+		return -1;
+	}
+	
+	char kbd[DEVMAP_NAME_MAXLEN + 1];
+	snprintf(kbd, DEVMAP_NAME_MAXLEN, "%s/%s", NAMESPACE, NAME);
+	
+	dev_handle_t dev_handle;
+	if (devmap_device_register(kbd, &dev_handle) != EOK) {
+		printf(NAME ": Unable to register device %s\n", kbd);
+		return -1;
+	}
+
+	printf(NAME ": Accepting connections\n");
+	async_manager();
+
+	/* Not reached. */
+	return 0;
+}
+
+/**
+ * @}
+ */ 
Index: uspace/srv/hid/kbd/include/gsp.h
===================================================================
--- uspace/srv/hid/kbd/include/gsp.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/kbd/include/gsp.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2009 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup kbdgen generic
+ * @brief	Generic scancode parser.
+ * @ingroup  kbd
+ * @{
+ */ 
+/** @file
+ */
+
+#ifndef KBD_GSP_H_
+#define KBD_GSP_H_
+
+#include <adt/hash_table.h>
+
+enum {
+	GSP_END		= -1,	/**< Terminates a sequence. */
+	GSP_DEFAULT	= -2	/**< Wildcard, catches unhandled cases. */
+};
+
+/** Scancode parser description */
+typedef struct {
+	/** Transition table, (state, input) -> (state, output) */
+	hash_table_t trans;
+
+	/** Number of states */
+	int states;
+} gsp_t;
+
+/** Scancode parser transition. */
+typedef struct {
+	link_t link;		/**< Link to hash table in @c gsp_t */ 
+
+	/* Preconditions */
+
+	int old_state;		/**< State before transition */
+	int input;		/**< Input symbol (scancode) */
+
+	/* Effects */
+
+	int new_state;		/**< State after transition */
+
+	/* Output emitted during transition */
+
+	unsigned out_mods;	/**< Modifier to emit */
+	unsigned out_key;	/**< Keycode to emit */
+} gsp_trans_t;
+
+extern void gsp_init(gsp_t *);
+extern int gsp_insert_defs(gsp_t *, const int *);
+extern int gsp_insert_seq(gsp_t *, const int *, unsigned, unsigned);
+extern int gsp_step(gsp_t *, int, int, unsigned *, unsigned *);
+
+#endif
+
+/**
+ * @}
+ */ 
Index: uspace/srv/hid/kbd/include/kbd.h
===================================================================
--- uspace/srv/hid/kbd/include/kbd.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/kbd/include/kbd.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2006 Josef Cejka
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup kbdgen generic
+ * @brief HelenOS generic uspace keyboard handler.
+ * @ingroup kbd
+ * @{
+ */
+/** @file
+ */
+
+#ifndef KBD_KBD_H_
+#define KBD_KBD_H_
+
+extern int cir_service;
+extern int cir_phone;
+
+extern void kbd_push_scancode(int);
+extern void kbd_push_ev(int, unsigned int);
+
+#endif
+
+/**
+ * @}
+ */
Index: uspace/srv/hid/kbd/include/kbd_ctl.h
===================================================================
--- uspace/srv/hid/kbd/include/kbd_ctl.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/kbd/include/kbd_ctl.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2009 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup kbdgen generic
+ * @brief	HelenOS generic uspace keyboard handler.
+ * @ingroup  kbd
+ * @{
+ */ 
+/** @file
+ */
+
+#ifndef KBD_CTL_H_
+#define KBD_CTL_H_
+
+extern void kbd_ctl_parse_scancode(int);
+extern int kbd_ctl_init(void);
+extern void kbd_ctl_set_ind(unsigned);
+
+#endif
+
+/**
+ * @}
+ */ 
+
Index: uspace/srv/hid/kbd/include/kbd_port.h
===================================================================
--- uspace/srv/hid/kbd/include/kbd_port.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/kbd/include/kbd_port.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2009 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup kbdgen generic
+ * @brief	HelenOS generic uspace keyboard handler.
+ * @ingroup  kbd
+ * @{
+ */ 
+/** @file
+ */
+
+#ifndef KBD_PORT_H_
+#define KBD_PORT_H_
+
+#include <sys/types.h>
+
+extern int kbd_port_init(void);
+extern void kbd_port_yield(void);
+extern void kbd_port_reclaim(void);
+extern void kbd_port_write(uint8_t);
+
+#endif
+
+/**
+ * @}
+ */ 
+
Index: uspace/srv/hid/kbd/include/layout.h
===================================================================
--- uspace/srv/hid/kbd/include/layout.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/kbd/include/layout.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2009 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup kbdgen generic
+ * @brief HelenOS generic uspace keyboard handler.
+ * @ingroup kbd
+ * @{
+ */
+/** @file
+ */
+
+#ifndef KBD_LAYOUT_H_
+#define KBD_LAYOUT_H_
+
+#include <sys/types.h>
+#include <io/console.h>
+
+typedef struct {
+	void (*reset)(void);
+	wchar_t (*parse_ev)(console_event_t *);
+} layout_op_t;
+
+extern layout_op_t us_qwerty_op;
+extern layout_op_t us_dvorak_op;
+extern layout_op_t cz_op;
+
+#endif
+
+/**
+ * @}
+ */
Index: uspace/srv/hid/kbd/include/stroke.h
===================================================================
--- uspace/srv/hid/kbd/include/stroke.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/kbd/include/stroke.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2009 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup kbdgen generic
+ * @brief	Generic scancode parser.
+ * @ingroup  kbd
+ * @{
+ */ 
+/** @file
+ */
+
+#ifndef KBD_STROKE_H_
+#define KBD_STROKE_H_
+
+extern void stroke_sim(unsigned, unsigned);
+
+#endif
+
+/**
+ * @}
+ */ 
+
Index: uspace/srv/hid/kbd/include/sun.h
===================================================================
--- uspace/srv/hid/kbd/include/sun.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/kbd/include/sun.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2009 Martin Decky
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup kbdgen generic
+ * @brief Sun keyboard virtual port driver.
+ * @ingroup kbd
+ * @{
+ */
+/** @file
+ */
+
+#ifndef KBD_SUN_H_
+#define KBD_SUN_H_
+
+extern int ns16550_port_init(void);
+extern int z8530_port_init(void);
+
+#endif
+
+/**
+ * @}
+ */
Index: uspace/srv/hid/kbd/layout/cz.c
===================================================================
--- uspace/srv/hid/kbd/layout/cz.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/kbd/layout/cz.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,408 @@
+/*
+ * Copyright (c) 2009 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup kbd
+ * @brief Czech QWERTZ layout.
+ * @{
+ */
+
+#include <kbd.h>
+#include <io/console.h>
+#include <io/keycode.h>
+#include <bool.h>
+#include <layout.h>
+
+static void layout_reset(void);
+static wchar_t layout_parse_ev(console_event_t *ev);
+
+enum m_state {
+	ms_start,
+	ms_hacek,
+	ms_carka
+};
+
+static enum m_state mstate;
+
+layout_op_t cz_op = {
+	layout_reset,
+	layout_parse_ev
+};
+
+static wchar_t map_lcase[] = {
+	[KC_Q] = 'q',
+	[KC_W] = 'w',
+	[KC_E] = 'e',
+	[KC_R] = 'r',
+	[KC_T] = 't',
+	[KC_Y] = 'z',
+	[KC_U] = 'u',
+	[KC_I] = 'i',
+	[KC_O] = 'o',
+	[KC_P] = 'p',
+
+	[KC_A] = 'a',
+	[KC_S] = 's',
+	[KC_D] = 'd',
+	[KC_F] = 'f',
+	[KC_G] = 'g',
+	[KC_H] = 'h',
+	[KC_J] = 'j',
+	[KC_K] = 'k',
+	[KC_L] = 'l',
+
+	[KC_Z] = 'y',
+	[KC_X] = 'x',
+	[KC_C] = 'c',
+	[KC_V] = 'v',
+	[KC_B] = 'b',
+	[KC_N] = 'n',
+	[KC_M] = 'm',
+};
+
+static wchar_t map_ucase[] = {
+	[KC_Q] = 'Q',
+	[KC_W] = 'W',
+	[KC_E] = 'E',
+	[KC_R] = 'R',
+	[KC_T] = 'T',
+	[KC_Y] = 'Z',
+	[KC_U] = 'U',
+	[KC_I] = 'I',
+	[KC_O] = 'O',
+	[KC_P] = 'P',
+
+	[KC_A] = 'A',
+	[KC_S] = 'S',
+	[KC_D] = 'D',
+	[KC_F] = 'F',
+	[KC_G] = 'G',
+	[KC_H] = 'H',
+	[KC_J] = 'J',
+	[KC_K] = 'K',
+	[KC_L] = 'L',
+
+	[KC_Z] = 'Y',
+	[KC_X] = 'X',
+	[KC_C] = 'C',
+	[KC_V] = 'V',
+	[KC_B] = 'B',
+	[KC_N] = 'N',
+	[KC_M] = 'M',
+};
+
+static wchar_t map_not_shifted[] = {
+	[KC_BACKTICK] = ';',
+
+	[KC_1] = '+',
+
+	[KC_MINUS] = '=',
+
+	[KC_RBRACKET] = ')',
+
+	[KC_QUOTE] = L'§',
+
+	[KC_COMMA] = ',',
+	[KC_PERIOD] = '.',
+	[KC_SLASH] = '-',
+};
+
+static wchar_t map_shifted[] = {
+	[KC_1] = '1',
+	[KC_2] = '2',
+	[KC_3] = '3',
+	[KC_4] = '4',
+	[KC_5] = '5',
+	[KC_6] = '6',
+	[KC_7] = '7',
+	[KC_8] = '8',
+	[KC_9] = '9',
+	[KC_0] = '0',
+
+	[KC_MINUS] = '%',
+
+	[KC_LBRACKET] = '/',
+	[KC_RBRACKET] = '(',
+
+	[KC_SEMICOLON] = '"',
+	[KC_QUOTE] = '!',
+	[KC_BACKSLASH] = '\'',
+
+	[KC_COMMA] = '?',
+	[KC_PERIOD] = ':',
+	[KC_SLASH] = '_',
+};
+
+static wchar_t map_ns_nocaps[] = {
+	[KC_2] = L'ě',
+	[KC_3] = L'š',
+	[KC_4] = L'č',
+	[KC_5] = L'ř',
+	[KC_6] = L'ž',
+	[KC_7] = L'ý',
+	[KC_8] = L'á',
+	[KC_9] = L'í',
+	[KC_0] = L'é',
+
+	[KC_LBRACKET] = L'ú',
+	[KC_SEMICOLON] = L'ů'
+};
+
+static wchar_t map_ns_caps[] = {
+	[KC_2] = L'Ě',
+	[KC_3] = L'Š',
+	[KC_4] = L'Č',
+	[KC_5] = L'Ř',
+	[KC_6] = L'Ž',
+	[KC_7] = L'Ý',
+	[KC_8] = L'Á',
+	[KC_9] = L'Í',
+	[KC_0] = L'É',
+
+	[KC_LBRACKET] = L'Ú',
+	[KC_SEMICOLON] = L'Ů'
+};
+
+static wchar_t map_neutral[] = {
+	[KC_BACKSPACE] = '\b',
+	[KC_TAB] = '\t',
+	[KC_ENTER] = '\n',
+	[KC_SPACE] = ' ',
+
+	[KC_NSLASH] = '/',
+	[KC_NTIMES] = '*',
+	[KC_NMINUS] = '-',
+	[KC_NPLUS] = '+',
+	[KC_NENTER] = '\n'
+};
+
+static wchar_t map_numeric[] = {
+	[KC_N7] = '7',
+	[KC_N8] = '8',
+	[KC_N9] = '9',
+	[KC_N4] = '4',
+	[KC_N5] = '5',
+	[KC_N6] = '6',
+	[KC_N1] = '1',
+	[KC_N2] = '2',
+	[KC_N3] = '3',
+
+	[KC_N0] = '0',
+	[KC_NPERIOD] = '.'
+};
+
+static wchar_t map_hacek_lcase[] = {
+	[KC_E] = L'ě',
+	[KC_R] = L'ř',
+	[KC_T] = L'ť',
+	[KC_Y] = L'ž',
+	[KC_U] = L'ů',
+
+	[KC_S] = L'š',
+	[KC_D] = L'ď',
+
+	[KC_C] = L'č',
+	[KC_N] = L'ň'
+};
+
+static wchar_t map_hacek_ucase[] = {
+	[KC_E] = L'Ě',
+	[KC_R] = L'Ř',
+	[KC_T] = L'Ť',
+	[KC_Y] = L'Ž',
+	[KC_U] = L'Ů',
+
+	[KC_S] = L'Š',
+	[KC_D] = L'Ď',
+
+	[KC_C] = L'Č',
+	[KC_N] = L'Ň'
+};
+
+static wchar_t map_carka_lcase[] = {
+	[KC_E] = L'é',
+	[KC_U] = L'ú',
+	[KC_I] = L'í',
+	[KC_O] = L'ó',
+
+	[KC_A] = L'á',
+
+	[KC_Z] = L'ý',
+};
+
+static wchar_t map_carka_ucase[] = {
+	[KC_E] = L'É',
+	[KC_U] = L'Ú',
+	[KC_I] = L'Í',
+	[KC_O] = L'Ó',
+
+	[KC_A] = L'Á',
+
+	[KC_Z] = L'Ý',
+};
+
+static wchar_t translate(unsigned int key, wchar_t *map, size_t map_length)
+{
+	if (key >= map_length)
+		return 0;
+	return map[key];
+}
+
+static wchar_t parse_ms_hacek(console_event_t *ev)
+{
+	wchar_t c;
+
+	mstate = ms_start;
+
+	/* Produce no characters when Ctrl or Alt is pressed. */
+	if ((ev->mods & (KM_CTRL | KM_ALT)) != 0)
+		return 0;
+
+	if (((ev->mods & KM_SHIFT) != 0) ^ ((ev->mods & KM_CAPS_LOCK) != 0))
+		c = translate(ev->key, map_hacek_ucase, sizeof(map_hacek_ucase) / sizeof(wchar_t));
+	else
+		c = translate(ev->key, map_hacek_lcase, sizeof(map_hacek_lcase) / sizeof(wchar_t));
+
+	return c;
+}
+
+static wchar_t parse_ms_carka(console_event_t *ev)
+{
+	wchar_t c;
+
+	mstate = ms_start;
+
+	/* Produce no characters when Ctrl or Alt is pressed. */
+	if ((ev->mods & (KM_CTRL | KM_ALT)) != 0)
+		return 0;
+
+	if (((ev->mods & KM_SHIFT) != 0) ^ ((ev->mods & KM_CAPS_LOCK) != 0))
+		c = translate(ev->key, map_carka_ucase, sizeof(map_carka_ucase) / sizeof(wchar_t));
+	else
+		c = translate(ev->key, map_carka_lcase, sizeof(map_carka_lcase) / sizeof(wchar_t));
+
+	return c;
+}
+
+static wchar_t parse_ms_start(console_event_t *ev)
+{
+	wchar_t c;
+
+	/* Produce no characters when Ctrl or Alt is pressed. */
+	if ((ev->mods & (KM_CTRL | KM_ALT)) != 0)
+		return 0;
+
+	if (ev->key == KC_EQUALS) {
+		if ((ev->mods & KM_SHIFT) != 0)
+			mstate = ms_hacek;
+		else
+			mstate = ms_carka;
+
+		return 0;
+	}
+
+	c = translate(ev->key, map_neutral, sizeof(map_neutral) / sizeof(wchar_t));
+	if (c != 0)
+		return c;
+
+	if ((ev->mods & KM_SHIFT) == 0) {
+		if ((ev->mods & KM_CAPS_LOCK) != 0)
+			c = translate(ev->key, map_ns_caps, sizeof(map_ns_caps) / sizeof(wchar_t));
+		else
+			c = translate(ev->key, map_ns_nocaps, sizeof(map_ns_nocaps) / sizeof(wchar_t));
+
+		if (c != 0)
+			return c;
+	}	
+
+	if (((ev->mods & KM_SHIFT) != 0) ^ ((ev->mods & KM_CAPS_LOCK) != 0))
+		c = translate(ev->key, map_ucase, sizeof(map_ucase) / sizeof(wchar_t));
+	else
+		c = translate(ev->key, map_lcase, sizeof(map_lcase) / sizeof(wchar_t));
+
+	if (c != 0)
+		return c;
+
+	if ((ev->mods & KM_SHIFT) != 0)
+		c = translate(ev->key, map_shifted, sizeof(map_shifted) / sizeof(wchar_t));
+	else
+		c = translate(ev->key, map_not_shifted, sizeof(map_not_shifted) / sizeof(wchar_t));
+
+	if (c != 0)
+		return c;
+
+	if ((ev->mods & KM_NUM_LOCK) != 0)
+		c = translate(ev->key, map_numeric, sizeof(map_numeric) / sizeof(wchar_t));
+	else
+		c = 0;
+
+	return c;
+}
+
+static bool key_is_mod(unsigned key)
+{
+	switch (key) {
+	case KC_LSHIFT:
+	case KC_RSHIFT:
+	case KC_LALT:
+	case KC_RALT:
+	case KC_LCTRL:
+	case KC_RCTRL:
+		return true;
+	default:
+		return false;
+	}
+}
+
+static void layout_reset(void)
+{
+	mstate = ms_start;
+}
+
+static wchar_t layout_parse_ev(console_event_t *ev)
+{
+	if (ev->type != KEY_PRESS)
+		return 0;
+	
+	if (key_is_mod(ev->key))
+		return 0;
+	
+	switch (mstate) {
+	case ms_start:
+		return parse_ms_start(ev);
+	case ms_hacek:
+		return parse_ms_hacek(ev);
+	case ms_carka:
+		return parse_ms_carka(ev);
+	}
+	
+	return 0;
+}
+
+/**
+ * @}
+ */
Index: uspace/srv/hid/kbd/layout/us_dvorak.c
===================================================================
--- uspace/srv/hid/kbd/layout/us_dvorak.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/kbd/layout/us_dvorak.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,250 @@
+/*
+ * Copyright (c) 2009 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup kbd
+ * @brief US Dvorak Simplified Keyboard layout.
+ * @{
+ */
+
+#include <kbd.h>
+#include <io/console.h>
+#include <io/keycode.h>
+#include <layout.h>
+
+static void layout_reset(void);
+static wchar_t layout_parse_ev(console_event_t *ev);
+
+layout_op_t us_dvorak_op = {
+	layout_reset,
+	layout_parse_ev
+};
+
+static wchar_t map_lcase[] = {
+	[KC_R] = 'p',
+	[KC_T] = 'y',
+	[KC_Y] = 'f',
+	[KC_U] = 'g',
+	[KC_I] = 'c',
+	[KC_O] = 'r',
+	[KC_P] = 'l',
+
+	[KC_A] = 'a',
+	[KC_S] = 'o',
+	[KC_D] = 'e',
+	[KC_F] = 'u',
+	[KC_G] = 'i',
+	[KC_H] = 'd',
+	[KC_J] = 'h',
+	[KC_K] = 't',
+	[KC_L] = 'n',
+
+	[KC_SEMICOLON] = 's',
+
+	[KC_X] = 'q',
+	[KC_C] = 'j',
+	[KC_V] = 'k',
+	[KC_B] = 'x',
+	[KC_N] = 'b',
+	[KC_M] = 'm',
+
+	[KC_COMMA] = 'w',
+	[KC_PERIOD] = 'v',
+	[KC_SLASH] = 'z',
+};
+
+static wchar_t map_ucase[] = {
+	[KC_R] = 'P',
+	[KC_T] = 'Y',
+	[KC_Y] = 'F',
+	[KC_U] = 'G',
+	[KC_I] = 'C',
+	[KC_O] = 'R',
+	[KC_P] = 'L',
+
+	[KC_A] = 'A',
+	[KC_S] = 'O',
+	[KC_D] = 'E',
+	[KC_F] = 'U',
+	[KC_G] = 'I',
+	[KC_H] = 'D',
+	[KC_J] = 'H',
+	[KC_K] = 'T',
+	[KC_L] = 'N',
+
+	[KC_SEMICOLON] = 'S',
+
+	[KC_X] = 'Q',
+	[KC_C] = 'J',
+	[KC_V] = 'K',
+	[KC_B] = 'X',
+	[KC_N] = 'B',
+	[KC_M] = 'M',
+
+	[KC_COMMA] = 'W',
+	[KC_PERIOD] = 'V',
+	[KC_SLASH] = 'Z',
+};
+
+static wchar_t map_not_shifted[] = {
+	[KC_BACKTICK] = '`',
+
+	[KC_1] = '1',
+	[KC_2] = '2',
+	[KC_3] = '3',
+	[KC_4] = '4',
+	[KC_5] = '5',
+	[KC_6] = '6',
+	[KC_7] = '7',
+	[KC_8] = '8',
+	[KC_9] = '9',
+	[KC_0] = '0',
+
+	[KC_MINUS] = '[',
+	[KC_EQUALS] = ']',
+
+	[KC_Q] = '\'',
+	[KC_W] = ',',
+	[KC_E] = '.',
+
+	[KC_LBRACKET] = '/',
+	[KC_RBRACKET] = '=',
+
+	[KC_QUOTE] = '-',
+	[KC_BACKSLASH] = '\\',
+
+	[KC_Z] = ';',
+};
+
+static wchar_t map_shifted[] = {
+	[KC_BACKTICK] = '~',
+
+	[KC_1] = '!',
+	[KC_2] = '@',
+	[KC_3] = '#',
+	[KC_4] = '$',
+	[KC_5] = '%',
+	[KC_6] = '^',
+	[KC_7] = '&',
+	[KC_8] = '*',
+	[KC_9] = '(',
+	[KC_0] = ')',
+
+	[KC_MINUS] = '{',
+	[KC_EQUALS] = '}',
+
+	[KC_Q] = '"',
+	[KC_W] = '<',
+	[KC_E] = '>',
+
+	[KC_LBRACKET] = '?',
+	[KC_RBRACKET] = '+',
+
+	[KC_QUOTE] = '_',
+	[KC_BACKSLASH] = '|',
+
+	[KC_Z] = ':',
+};
+
+static wchar_t map_neutral[] = {
+	[KC_BACKSPACE] = '\b',
+	[KC_TAB] = '\t',
+	[KC_ENTER] = '\n',
+	[KC_SPACE] = ' ',
+
+	[KC_NSLASH] = '/',
+	[KC_NTIMES] = '*',
+	[KC_NMINUS] = '-',
+	[KC_NPLUS] = '+',
+	[KC_NENTER] = '\n'
+};
+
+static wchar_t map_numeric[] = {
+	[KC_N7] = '7',
+	[KC_N8] = '8',
+	[KC_N9] = '9',
+	[KC_N4] = '4',
+	[KC_N5] = '5',
+	[KC_N6] = '6',
+	[KC_N1] = '1',
+	[KC_N2] = '2',
+	[KC_N3] = '3',
+
+	[KC_N0] = '0',
+	[KC_NPERIOD] = '.'
+};
+
+static wchar_t translate(unsigned int key, wchar_t *map, size_t map_length)
+{
+	if (key >= map_length)
+		return 0;
+	return map[key];
+}
+
+static void layout_reset(void)
+{
+}
+
+static wchar_t layout_parse_ev(console_event_t *ev)
+{
+	wchar_t c;
+
+	/* Produce no characters when Ctrl or Alt is pressed. */
+	if ((ev->mods & (KM_CTRL | KM_ALT)) != 0)
+		return 0;
+
+	c = translate(ev->key, map_neutral, sizeof(map_neutral) / sizeof(wchar_t));
+	if (c != 0)
+		return c;
+
+	if (((ev->mods & KM_SHIFT) != 0) ^ ((ev->mods & KM_CAPS_LOCK) != 0))
+		c = translate(ev->key, map_ucase, sizeof(map_ucase) / sizeof(wchar_t));
+	else
+		c = translate(ev->key, map_lcase, sizeof(map_lcase) / sizeof(wchar_t));
+
+	if (c != 0)
+		return c;
+
+	if ((ev->mods & KM_SHIFT) != 0)
+		c = translate(ev->key, map_shifted, sizeof(map_shifted) / sizeof(wchar_t));
+	else
+		c = translate(ev->key, map_not_shifted, sizeof(map_not_shifted) / sizeof(wchar_t));
+
+	if (c != 0)
+		return c;
+
+	if ((ev->mods & KM_NUM_LOCK) != 0)
+		c = translate(ev->key, map_numeric, sizeof(map_numeric) / sizeof(wchar_t));
+	else
+		c = 0;
+
+	return c;
+}
+
+/**
+ * @}
+ */
Index: uspace/srv/hid/kbd/layout/us_qwerty.c
===================================================================
--- uspace/srv/hid/kbd/layout/us_qwerty.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/kbd/layout/us_qwerty.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,244 @@
+/*
+ * Copyright (c) 2009 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup kbd
+ * @brief	US QWERTY layout.
+ * @{
+ */ 
+
+#include <kbd.h>
+#include <io/console.h>
+#include <io/keycode.h>
+#include <layout.h>
+
+static void layout_reset(void);
+static wchar_t layout_parse_ev(console_event_t *ev);
+
+layout_op_t us_qwerty_op = {
+	layout_reset,
+	layout_parse_ev
+};
+
+static wchar_t map_lcase[] = {
+	[KC_Q] = 'q',
+	[KC_W] = 'w',
+	[KC_E] = 'e',
+	[KC_R] = 'r',
+	[KC_T] = 't',
+	[KC_Y] = 'y',
+	[KC_U] = 'u',
+	[KC_I] = 'i',
+	[KC_O] = 'o',
+	[KC_P] = 'p',
+
+	[KC_A] = 'a',
+	[KC_S] = 's',
+	[KC_D] = 'd',
+	[KC_F] = 'f',
+	[KC_G] = 'g',
+	[KC_H] = 'h',
+	[KC_J] = 'j',
+	[KC_K] = 'k',
+	[KC_L] = 'l',
+
+	[KC_Z] = 'z',
+	[KC_X] = 'x',
+	[KC_C] = 'c',
+	[KC_V] = 'v',
+	[KC_B] = 'b',
+	[KC_N] = 'n',
+	[KC_M] = 'm',
+};
+
+static wchar_t map_ucase[] = {
+	[KC_Q] = 'Q',
+	[KC_W] = 'W',
+	[KC_E] = 'E',
+	[KC_R] = 'R',
+	[KC_T] = 'T',
+	[KC_Y] = 'Y',
+	[KC_U] = 'U',
+	[KC_I] = 'I',
+	[KC_O] = 'O',
+	[KC_P] = 'P',
+
+	[KC_A] = 'A',
+	[KC_S] = 'S',
+	[KC_D] = 'D',
+	[KC_F] = 'F',
+	[KC_G] = 'G',
+	[KC_H] = 'H',
+	[KC_J] = 'J',
+	[KC_K] = 'K',
+	[KC_L] = 'L',
+
+	[KC_Z] = 'Z',
+	[KC_X] = 'X',
+	[KC_C] = 'C',
+	[KC_V] = 'V',
+	[KC_B] = 'B',
+	[KC_N] = 'N',
+	[KC_M] = 'M',
+};
+
+static wchar_t map_not_shifted[] = {
+	[KC_BACKTICK] = '`',
+
+	[KC_1] = '1',
+	[KC_2] = '2',
+	[KC_3] = '3',
+	[KC_4] = '4',
+	[KC_5] = '5',
+	[KC_6] = '6',
+	[KC_7] = '7',
+	[KC_8] = '8',
+	[KC_9] = '9',
+	[KC_0] = '0',
+
+	[KC_MINUS] = '-',
+	[KC_EQUALS] = '=',
+
+	[KC_LBRACKET] = '[',
+	[KC_RBRACKET] = ']',
+
+	[KC_SEMICOLON] = ';',
+	[KC_QUOTE] = '\'',
+	[KC_BACKSLASH] = '\\',
+
+	[KC_COMMA] = ',',
+	[KC_PERIOD] = '.',
+	[KC_SLASH] = '/',
+};
+
+static wchar_t map_shifted[] = {
+	[KC_BACKTICK] = '~',
+
+	[KC_1] = '!',
+	[KC_2] = '@',
+	[KC_3] = '#',
+	[KC_4] = '$',
+	[KC_5] = '%',
+	[KC_6] = '^',
+	[KC_7] = '&',
+	[KC_8] = '*',
+	[KC_9] = '(',
+	[KC_0] = ')',
+
+	[KC_MINUS] = '_',
+	[KC_EQUALS] = '+',
+
+	[KC_LBRACKET] = '{',
+	[KC_RBRACKET] = '}',
+
+	[KC_SEMICOLON] = ':',
+	[KC_QUOTE] = '"',
+	[KC_BACKSLASH] = '|',
+
+	[KC_COMMA] = '<',
+	[KC_PERIOD] = '>',
+	[KC_SLASH] = '?',
+};
+
+static wchar_t map_neutral[] = {
+	[KC_BACKSPACE] = '\b',
+	[KC_TAB] = '\t',
+	[KC_ENTER] = '\n',
+	[KC_SPACE] = ' ',
+
+	[KC_NSLASH] = '/',
+	[KC_NTIMES] = '*',
+	[KC_NMINUS] = '-',
+	[KC_NPLUS] = '+',
+	[KC_NENTER] = '\n'
+};
+
+static wchar_t map_numeric[] = {
+	[KC_N7] = '7',
+	[KC_N8] = '8',
+	[KC_N9] = '9',
+	[KC_N4] = '4',
+	[KC_N5] = '5',
+	[KC_N6] = '6',
+	[KC_N1] = '1',
+	[KC_N2] = '2',
+	[KC_N3] = '3',
+
+	[KC_N0] = '0',
+	[KC_NPERIOD] = '.'
+};
+
+static wchar_t translate(unsigned int key, wchar_t *map, size_t map_length)
+{
+	if (key >= map_length)
+		return 0;
+	return map[key];
+}
+
+static void layout_reset(void)
+{
+}
+
+static wchar_t layout_parse_ev(console_event_t *ev)
+{
+	wchar_t c;
+
+	/* Produce no characters when Ctrl or Alt is pressed. */
+	if ((ev->mods & (KM_CTRL | KM_ALT)) != 0)
+		return 0;
+
+	c = translate(ev->key, map_neutral, sizeof(map_neutral) / sizeof(wchar_t));
+	if (c != 0)
+		return c;
+
+	if (((ev->mods & KM_SHIFT) != 0) ^ ((ev->mods & KM_CAPS_LOCK) != 0))
+		c = translate(ev->key, map_ucase, sizeof(map_ucase) / sizeof(wchar_t));
+	else
+		c = translate(ev->key, map_lcase, sizeof(map_lcase) / sizeof(wchar_t));
+
+	if (c != 0)
+		return c;
+
+	if ((ev->mods & KM_SHIFT) != 0)
+		c = translate(ev->key, map_shifted, sizeof(map_shifted) / sizeof(wchar_t));
+	else
+		c = translate(ev->key, map_not_shifted, sizeof(map_not_shifted) / sizeof(wchar_t));
+
+	if (c != 0)
+		return c;
+
+	if ((ev->mods & KM_NUM_LOCK) != 0)
+		c = translate(ev->key, map_numeric, sizeof(map_numeric) / sizeof(wchar_t));
+	else
+		c = 0;
+
+	return c;
+}
+
+/**
+ * @}
+ */ 
Index: uspace/srv/hid/kbd/port/chardev.c
===================================================================
--- uspace/srv/hid/kbd/port/chardev.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/kbd/port/chardev.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,123 @@
+/*
+ * Copyright (c) 2009 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup kbd_port
+ * @ingroup kbd
+ * @{
+ */ 
+/** @file
+ * @brief Chardev keyboard port driver.
+ */
+
+#include <ipc/ipc.h>
+#include <ipc/char.h>
+#include <async.h>
+#include <kbd_port.h>
+#include <kbd.h>
+#include <vfs/vfs.h>
+#include <fcntl.h>
+#include <errno.h>
+
+static void kbd_port_events(ipc_callid_t iid, ipc_call_t *icall);
+
+static int dev_phone;
+
+#define NAME "kbd"
+
+int kbd_port_init(void)
+{
+	char *input = "/dev/char/ps2a";
+	int input_fd;
+
+	printf(NAME ": open %s\n", input);
+
+	input_fd = open(input, O_RDONLY);
+	if (input_fd < 0) {
+		printf(NAME ": Failed opening %s (%d)\n", input, input_fd);
+		return false;
+	}
+
+	dev_phone = fd_phone(input_fd);
+	if (dev_phone < 0) {
+		printf(NAME ": Failed to connect to device\n");
+		return false;
+	}
+
+	/* NB: The callback connection is slotted for removal */
+	ipcarg_t phonehash;
+	if (ipc_connect_to_me(dev_phone, 0, 0, 0, &phonehash) != 0) {
+		printf(NAME ": Failed to create callback from device\n");
+		return false;
+	}
+
+	async_new_connection(phonehash, 0, NULL, kbd_port_events);
+
+	return 0;
+}
+
+void kbd_port_yield(void)
+{
+}
+
+void kbd_port_reclaim(void)
+{
+}
+
+void kbd_port_write(uint8_t data)
+{
+	async_msg_1(dev_phone, CHAR_WRITE_BYTE, data);
+}
+
+static void kbd_port_events(ipc_callid_t iid, ipc_call_t *icall)
+{
+	/* Ignore parameters, the connection is already opened */
+	while (true) {
+
+		ipc_call_t call;
+		ipc_callid_t callid = async_get_call(&call);
+
+		int retval;
+
+		switch (IPC_GET_METHOD(call)) {
+		case IPC_M_PHONE_HUNGUP:
+			/* TODO: Handle hangup */
+			return;
+		case CHAR_NOTIF_BYTE:
+			kbd_push_scancode(IPC_GET_ARG1(call));
+			break;
+		default:
+			retval = ENOENT;
+		}
+		ipc_answer_0(callid, retval);
+	}
+}
+
+
+/**
+ * @}
+ */ 
Index: uspace/srv/hid/kbd/port/dummy.c
===================================================================
--- uspace/srv/hid/kbd/port/dummy.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/kbd/port/dummy.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2009 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup kbd_port
+ * @brief	Dummy keyboard port driver.
+ * @ingroup  kbd
+ * @{
+ */ 
+/** @file
+ */
+
+#include <kbd_port.h>
+#include <kbd.h>
+
+int kbd_port_init(void)
+{
+	return 0;
+}
+
+void kbd_port_yield(void)
+{
+}
+
+void kbd_port_reclaim(void)
+{
+}
+
+void kbd_port_write(uint8_t data)
+{
+	(void) data;
+}
+
+/** @}
+*/
Index: uspace/srv/hid/kbd/port/gxemul.c
===================================================================
--- uspace/srv/hid/kbd/port/gxemul.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/kbd/port/gxemul.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,100 @@
+/*
+ * Copyright (c) 2007 Michal Kebrt
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup kbd_port
+ * @{
+ * @ingroup  kbd
+ */ 
+/** @file
+ * @brief	GXEmul keyboard port driver.
+ */
+
+#include <ipc/ipc.h>
+#include <async.h>
+#include <sysinfo.h>
+#include <kbd_port.h>
+#include <kbd.h>
+#include <ddi.h>
+
+static irq_cmd_t gxemul_cmds[] = {
+	{ 
+		.cmd = CMD_PIO_READ_8, 
+		.addr = (void *) 0, 	/* will be patched in run-time */
+		.dstarg = 2,
+	},
+	{
+		.cmd = CMD_ACCEPT
+	}
+};
+
+static irq_code_t gxemul_kbd = {
+	sizeof(gxemul_cmds) / sizeof(irq_cmd_t),
+	gxemul_cmds
+};
+
+static void gxemul_irq_handler(ipc_callid_t iid, ipc_call_t *call);
+
+/** Initializes keyboard handler. */
+int kbd_port_init(void)
+{
+	async_set_interrupt_received(gxemul_irq_handler);
+	gxemul_cmds[0].addr = (void *) sysinfo_value("kbd.address.virtual");
+	ipc_register_irq(sysinfo_value("kbd.inr"), device_assign_devno(),
+	    0, &gxemul_kbd);
+	return 0;
+}
+
+void kbd_port_yield(void)
+{
+}
+
+void kbd_port_reclaim(void)
+{
+}
+
+void kbd_port_write(uint8_t data)
+{
+	(void) data;
+}
+
+/** Process data sent when a key is pressed.
+ *  
+ *  @param keybuffer Buffer of pressed keys.
+ *  @param call      IPC call.
+ *
+ *  @return Always 1.
+ */
+static void gxemul_irq_handler(ipc_callid_t iid, ipc_call_t *call)
+{
+	int scan_code = IPC_GET_ARG2(*call);
+
+	kbd_push_scancode(scan_code);
+}
+
+/** @}
+ */
Index: uspace/srv/hid/kbd/port/msim.c
===================================================================
--- uspace/srv/hid/kbd/port/msim.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/kbd/port/msim.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,92 @@
+/*
+ * Copyright (c) 2006 Josef Cejka
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup kbd_port
+ * @ingroup  kbd
+ * @{
+ */ 
+/** @file
+ * @brief	Msim keyboard port driver.
+ */
+
+#include <ipc/ipc.h>
+#include <async.h>
+#include <sysinfo.h>
+#include <kbd_port.h>
+#include <kbd.h>
+#include <ddi.h>
+
+irq_cmd_t msim_cmds[] = {
+	{
+		.cmd = CMD_PIO_READ_8,
+		.addr = (void *) 0,	/* will be patched in run-time */
+		.dstarg = 2
+	},
+	{
+		.cmd = CMD_ACCEPT
+	}
+	
+};
+
+irq_code_t msim_kbd = {
+	sizeof(msim_cmds) / sizeof(irq_cmd_t),
+	msim_cmds
+};
+
+static void msim_irq_handler(ipc_callid_t iid, ipc_call_t *call);
+
+int kbd_port_init(void)
+{
+	async_set_interrupt_received(msim_irq_handler);
+	msim_cmds[0].addr = sysinfo_value("kbd.address.virtual");
+	ipc_register_irq(sysinfo_value("kbd.inr"), device_assign_devno(),
+	    0, &msim_kbd);
+	return 0;
+}
+
+void kbd_port_yield(void)
+{
+}
+
+void kbd_port_reclaim(void)
+{
+}
+
+void kbd_port_write(uint8_t data)
+{
+	(void) data;
+}
+
+static void msim_irq_handler(ipc_callid_t iid, ipc_call_t *call)
+{
+	int scan_code = IPC_GET_ARG2(*call);
+	kbd_push_scancode(scan_code);
+}
+
+/** @}
+*/
Index: uspace/srv/hid/kbd/port/ns16550.c
===================================================================
--- uspace/srv/hid/kbd/port/ns16550.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/kbd/port/ns16550.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,129 @@
+/*
+ * Copyright (c) 2006 Josef Cejka
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup kbd_port
+ * @ingroup  kbd
+ * @{
+ */ 
+/** @file
+ * @brief	NS16550 port driver.
+ */
+
+#include <ipc/ipc.h>
+#include <ipc/bus.h>
+#include <async.h>
+#include <sysinfo.h>
+#include <kbd.h>
+#include <kbd_port.h>
+#include <sun.h>
+#include <ddi.h>
+
+/* NS16550 registers */
+#define RBR_REG		0	/** Receiver Buffer Register. */
+#define IER_REG		1	/** Interrupt Enable Register. */
+#define IIR_REG		2	/** Interrupt Ident Register (read). */
+#define FCR_REG		2	/** FIFO control register (write). */
+#define LCR_REG		3	/** Line Control register. */
+#define MCR_REG		4	/** Modem Control Register. */
+#define LSR_REG		5	/** Line Status Register. */
+
+#define LSR_DATA_READY	0x01
+
+static irq_cmd_t ns16550_cmds[] = {
+	{
+		.cmd = CMD_PIO_READ_8,
+		.addr = (void *) 0,	/* will be patched in run-time */
+		.dstarg = 1
+	},
+	{
+		.cmd = CMD_BTEST,
+		.value = LSR_DATA_READY,
+		.srcarg = 1,
+		.dstarg = 3
+	},
+	{
+		.cmd = CMD_PREDICATE,
+		.value = 2,
+		.srcarg = 3
+	},
+	{
+		.cmd = CMD_PIO_READ_8,
+		.addr = (void *) 0,	/* will be patched in run-time */
+		.dstarg = 2
+	},
+	{
+		.cmd = CMD_ACCEPT
+	}
+};
+
+irq_code_t ns16550_kbd = {
+	sizeof(ns16550_cmds) / sizeof(irq_cmd_t),
+	ns16550_cmds
+};
+
+static void ns16550_irq_handler(ipc_callid_t iid, ipc_call_t *call);
+
+static uintptr_t ns16550_physical;
+static uintptr_t ns16550_kernel; 
+
+int ns16550_port_init(void)
+{
+	void *vaddr;
+
+	async_set_interrupt_received(ns16550_irq_handler);
+
+	ns16550_physical = sysinfo_value("kbd.address.physical");
+	ns16550_kernel = sysinfo_value("kbd.address.kernel");
+	ns16550_kbd.cmds[0].addr = (void *) (ns16550_kernel + LSR_REG);
+	ns16550_kbd.cmds[3].addr = (void *) (ns16550_kernel + RBR_REG);
+	ipc_register_irq(sysinfo_value("kbd.inr"), device_assign_devno(),
+	    sysinfo_value("kbd.inr"), &ns16550_kbd);
+	return pio_enable((void *) ns16550_physical, 8, &vaddr);
+}
+
+void ns16550_port_yield(void)
+{
+}
+
+void ns16550_port_reclaim(void)
+{
+}
+
+static void ns16550_irq_handler(ipc_callid_t iid, ipc_call_t *call)
+{
+	int scan_code = IPC_GET_ARG2(*call);
+	kbd_push_scancode(scan_code);
+	
+	if (cir_service)
+		async_msg_1(cir_phone, BUS_CLEAR_INTERRUPT,
+		    IPC_GET_METHOD(*call));
+}
+
+/**
+ * @}
+ */
Index: uspace/srv/hid/kbd/port/pl050.c
===================================================================
--- uspace/srv/hid/kbd/port/pl050.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/kbd/port/pl050.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,119 @@
+/*
+ * Copyright (c) 2009 Vineeth Pillai
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup kbd_port
+ * @ingroup kbd
+ * @{
+ */ 
+/** @file
+ * @brief pl050 port driver.
+ */
+
+#include <ddi.h>
+#include <libarch/ddi.h>
+#include <ipc/ipc.h>
+#include <async.h>
+#include <unistd.h>
+#include <sysinfo.h>
+#include <kbd_port.h>
+#include <kbd.h>
+#include <ddi.h>
+#include <stdio.h>
+
+#define PL050_STAT_RXFULL (1 << 4)
+static irq_cmd_t pl050_cmds[] = {
+	{
+		.cmd = CMD_PIO_READ_8,
+		.addr = NULL,
+		.dstarg = 1
+	},
+	{
+		.cmd = CMD_BTEST,
+		.value = PL050_STAT_RXFULL,
+		.srcarg = 1,
+		.dstarg = 3
+	},
+	{
+		.cmd = CMD_PREDICATE,
+		.value = 2,
+		.srcarg = 3
+	},
+	{
+		.cmd = CMD_PIO_READ_8,
+		.addr = NULL,	/* will be patched in run-time */
+		.dstarg = 2
+	},
+	{
+		.cmd = CMD_ACCEPT
+	}
+};
+
+static irq_code_t pl050_kbd = {
+	sizeof(pl050_cmds) / sizeof(irq_cmd_t),
+	pl050_cmds
+};
+
+static void pl050_irq_handler(ipc_callid_t iid, ipc_call_t *call);
+
+int kbd_port_init(void)
+{
+
+	pl050_kbd.cmds[0].addr = (void *) sysinfo_value("kbd.address.status");
+	pl050_kbd.cmds[3].addr = (void *) sysinfo_value("kbd.address.data");
+
+	async_set_interrupt_received(pl050_irq_handler);
+
+	ipc_register_irq(sysinfo_value("kbd.inr"), device_assign_devno(), 0, &pl050_kbd);
+
+	return 0;
+}
+
+void kbd_port_yield(void)
+{
+}
+
+void kbd_port_reclaim(void)
+{
+}
+
+void kbd_port_write(uint8_t data)
+{
+	(void) data;
+}
+
+static void pl050_irq_handler(ipc_callid_t iid, ipc_call_t *call)
+{
+	int scan_code = IPC_GET_ARG2(*call);
+
+	kbd_push_scancode(scan_code);
+	return;
+}
+
+/**
+ * @}
+ */ 
Index: uspace/srv/hid/kbd/port/sgcn.c
===================================================================
--- uspace/srv/hid/kbd/port/sgcn.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/kbd/port/sgcn.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,181 @@
+/*
+ * Copyright (c) 2008 Pavel Rimsky
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup kbd_port
+ * @ingroup  kbd
+ * @{
+ */ 
+/** @file
+ * @brief	SGCN (Serengeti Console) keyboard port driver.
+ */
+
+#include <as.h>
+#include <ddi.h>
+#include <async.h>
+#include <kbd.h>
+#include <kbd_port.h>
+#include <sysinfo.h>
+#include <stdio.h>
+#include <thread.h>
+#include <bool.h>
+
+#define POLL_INTERVAL		10000
+
+/**
+ * SGCN buffer header. It is placed at the very beginning of the SGCN
+ * buffer. 
+ */
+typedef struct {
+	/** hard-wired to "CON" */
+	char magic[4];
+	
+	/** we don't need this */
+	char unused[8];
+	
+	/** offset within the SGCN buffer of the input buffer start */
+	uint32_t in_begin;
+	
+	/** offset within the SGCN buffer of the input buffer end */
+	uint32_t in_end;
+	
+	/** offset within the SGCN buffer of the input buffer read pointer */
+	uint32_t in_rdptr;
+	
+	/** offset within the SGCN buffer of the input buffer write pointer */
+	uint32_t in_wrptr;
+} __attribute__ ((packed)) sgcn_buffer_header_t;
+
+/*
+ * Returns a pointer to the object of a given type which is placed at the given
+ * offset from the console buffer beginning.
+ */
+#define SGCN_BUFFER(type, offset) \
+		((type *) (sram_virt_addr + sram_buffer_offset + (offset)))
+
+/** Returns a pointer to the console buffer header. */
+#define SGCN_BUFFER_HEADER	(SGCN_BUFFER(sgcn_buffer_header_t, 0))
+
+/**
+ * Virtual address mapped to SRAM.
+ */
+static uintptr_t sram_virt_addr;
+
+/**
+ * SGCN buffer offset within SGCN.
+ */
+static uintptr_t sram_buffer_offset;
+
+/* polling thread */
+static void *sgcn_thread_impl(void *arg);
+
+static volatile bool polling_disabled = false;
+
+/**
+ * Initializes the SGCN driver.
+ * Maps the physical memory (SRAM) and creates the polling thread. 
+ */
+int kbd_port_init(void)
+{
+	sram_virt_addr = (uintptr_t) as_get_mappable_page(sysinfo_value("sram.area.size"));
+	if (physmem_map((void *) sysinfo_value("sram.address.physical"),
+	    (void *) sram_virt_addr, sysinfo_value("sram.area.size") / PAGE_SIZE,
+	    AS_AREA_READ | AS_AREA_WRITE) != 0) {
+		printf("SGCN: uspace driver could not map physical memory.");
+		return -1;
+	}
+	
+	sram_buffer_offset = sysinfo_value("sram.buffer.offset");
+
+	thread_id_t tid;
+	int rc;
+
+	rc = thread_create(sgcn_thread_impl, NULL, "kbd_poll", &tid);
+	if (rc != 0) {
+		return rc;
+	}
+
+	return 0;
+}
+
+void kbd_port_yield(void)
+{
+	polling_disabled = true;
+}
+
+void kbd_port_reclaim(void)
+{
+	polling_disabled = false;
+}
+
+void kbd_port_write(uint8_t data)
+{
+	(void) data;
+}
+
+/**
+ * Handler of the "key pressed" event. Reads codes of all the pressed keys from
+ * the buffer. 
+ */
+static void sgcn_key_pressed(void)
+{
+	char c;
+	
+	uint32_t begin = SGCN_BUFFER_HEADER->in_begin;
+	uint32_t end = SGCN_BUFFER_HEADER->in_end;
+	uint32_t size = end - begin;
+	
+	volatile char *buf_ptr = (volatile char *)
+		SGCN_BUFFER(char, SGCN_BUFFER_HEADER->in_rdptr);
+	volatile uint32_t *in_wrptr_ptr = &(SGCN_BUFFER_HEADER->in_wrptr);
+	volatile uint32_t *in_rdptr_ptr = &(SGCN_BUFFER_HEADER->in_rdptr);
+	
+	while (*in_rdptr_ptr != *in_wrptr_ptr) {
+		c = *buf_ptr;
+		*in_rdptr_ptr = (((*in_rdptr_ptr) - begin + 1) % size) + begin;
+		buf_ptr = (volatile char *)
+			SGCN_BUFFER(char, SGCN_BUFFER_HEADER->in_rdptr);
+		kbd_push_scancode(c);
+	}
+}
+
+/**
+ * Thread to poll SGCN for keypresses.
+ */
+static void *sgcn_thread_impl(void *arg)
+{
+	(void) arg;
+
+	while (1) {
+		if (polling_disabled == false)
+			sgcn_key_pressed();
+		usleep(POLL_INTERVAL);
+	}
+}
+
+/** @}
+ */
Index: uspace/srv/hid/kbd/port/ski.c
===================================================================
--- uspace/srv/hid/kbd/port/ski.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/kbd/port/ski.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,128 @@
+/*
+ * Copyright (c) 2005 Jakub Jermar
+ * Copyright (c) 2009 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup kbd_port
+ * @ingroup  kbd
+ * @{
+ */ 
+/** @file
+ * @brief	Ski console keyboard port driver.
+ */
+
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <kbd.h>
+#include <kbd_port.h>
+#include <sys/types.h>
+#include <thread.h>
+#include <bool.h>
+
+#define SKI_GETCHAR		21
+
+#define POLL_INTERVAL		10000
+
+static void *ski_thread_impl(void *arg);
+static int32_t ski_getchar(void);
+
+static volatile bool polling_disabled = false;
+
+/** Initialize Ski port driver. */
+int kbd_port_init(void)
+{
+	thread_id_t tid;
+	int rc;
+
+	rc = thread_create(ski_thread_impl, NULL, "kbd_poll", &tid);
+	if (rc != 0) {
+		return rc;
+	}
+
+	return 0;
+}
+
+void kbd_port_yield(void)
+{
+	polling_disabled = true;
+}
+
+void kbd_port_reclaim(void)
+{
+	polling_disabled = false;
+}
+
+void kbd_port_write(uint8_t data)
+{
+	(void) data;
+}
+
+/** Thread to poll Ski for keypresses. */
+static void *ski_thread_impl(void *arg)
+{
+	int32_t c;
+	(void) arg;
+
+	while (1) {
+		while (polling_disabled == false) {
+			c = ski_getchar();
+			if (c == 0)
+				break;
+			kbd_push_scancode(c);
+		}
+
+		usleep(POLL_INTERVAL);
+	}
+}
+
+/** Ask Ski if a key was pressed.
+ *
+ * Use SSC (Simulator System Call) to get character from the debug console.
+ * This call is non-blocking.
+ *
+ * @return ASCII code of pressed key or 0 if no key pressed.
+ */
+static int32_t ski_getchar(void)
+{
+	uint64_t ch;
+	
+	asm volatile (
+		"mov r15 = %1\n"
+		"break 0x80000;;\n"	/* modifies r8 */
+		"mov %0 = r8;;\n"		
+
+		: "=r" (ch)
+		: "i" (SKI_GETCHAR)
+		: "r15", "r8"
+	);
+
+	return (int32_t) ch;
+}
+
+/** @}
+ */
Index: uspace/srv/hid/kbd/port/sun.c
===================================================================
--- uspace/srv/hid/kbd/port/sun.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/kbd/port/sun.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2009 Martin Decky
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup kbd_port
+ * @ingroup  kbd
+ * @{
+ */
+/** @file
+ * @brief Sun keyboard virtual port driver.
+ */
+
+#include <kbd.h>
+#include <kbd_port.h>
+#include <sun.h>
+#include <sysinfo.h>
+
+/** Sun keyboard virtual port driver.
+ *
+ * This is a virtual port driver which can use
+ * both ns16550_port_init and z8530_port_init
+ * according to the information passed from the
+ * kernel. This is just a temporal hack.
+ *
+ */
+int kbd_port_init(void)
+{
+	if (sysinfo_value("kbd.type.z8530")) {
+		if (z8530_port_init() == 0)
+			return 0;
+	}
+	
+	if (sysinfo_value("kbd.type.ns16550")) {
+		if (ns16550_port_init() == 0)
+			return 0;
+	}
+	
+	return -1;
+}
+
+void kbd_port_yield(void)
+{
+}
+
+void kbd_port_reclaim(void)
+{
+}
+
+void kbd_port_write(uint8_t data)
+{
+	(void) data;
+}
+
+/** @}
+*/
Index: uspace/srv/hid/kbd/port/z8530.c
===================================================================
--- uspace/srv/hid/kbd/port/z8530.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hid/kbd/port/z8530.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,117 @@
+/*
+ * Copyright (c) 2006 Martin Decky
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup kbd_port
+ * @ingroup  kbd
+ * @{
+ */ 
+/** @file
+ * @brief	Z8530 keyboard port driver.
+ */
+
+#include <ipc/ipc.h>
+#include <ipc/bus.h>
+#include <async.h>
+#include <sysinfo.h>
+#include <kbd.h>
+#include <kbd_port.h>
+#include <sun.h>
+#include <sys/types.h>
+#include <ddi.h>
+
+#define CHAN_A_STATUS	4
+#define CHAN_A_DATA	6
+
+#define RR0_RCA	1
+
+static irq_cmd_t z8530_cmds[] = {
+	{
+		.cmd = CMD_PIO_READ_8,
+		.addr = (void *) 0,	/* will be patched in run-time */
+		.dstarg = 1
+	},
+	{
+		.cmd = CMD_BTEST,
+		.value = RR0_RCA,
+		.srcarg = 1,
+		.dstarg = 3
+	},
+	{
+		.cmd = CMD_PREDICATE,
+		.value = 2,
+		.srcarg = 3
+	},
+	{
+		.cmd = CMD_PIO_READ_8,
+		.addr = (void *) 0,	/* will be patched in run-time */
+		.dstarg = 2
+	},
+	{
+		.cmd = CMD_ACCEPT
+	}
+};
+	
+irq_code_t z8530_kbd = {
+	sizeof(z8530_cmds) / sizeof(irq_cmd_t),
+	z8530_cmds
+};
+
+static void z8530_irq_handler(ipc_callid_t iid, ipc_call_t *call);
+
+int z8530_port_init(void)
+{
+	async_set_interrupt_received(z8530_irq_handler);
+	z8530_cmds[0].addr = (void *) sysinfo_value("kbd.address.kernel") +
+	    CHAN_A_STATUS;
+	z8530_cmds[3].addr = (void *) sysinfo_value("kbd.address.kernel") +
+	    CHAN_A_DATA;
+	ipc_register_irq(sysinfo_value("kbd.inr"), device_assign_devno(),
+	    sysinfo_value("kbd.inr"), &z8530_kbd);
+	return 0;
+}
+
+void z8530_port_yield(void)
+{
+}
+
+void z8530_port_reclaim(void)
+{
+}
+
+static void z8530_irq_handler(ipc_callid_t iid, ipc_call_t *call)
+{
+	int scan_code = IPC_GET_ARG2(*call);
+	kbd_push_scancode(scan_code);
+	
+	if (cir_service)
+		async_msg_1(cir_phone, BUS_CLEAR_INTERRUPT,
+		    IPC_GET_METHOD(*call));
+}
+
+/** @}
+ */
Index: uspace/srv/hw/bus/pci/COPYING
===================================================================
--- uspace/srv/hw/bus/pci/COPYING	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/bus/pci/COPYING	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,345 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
Index: uspace/srv/hw/bus/pci/Makefile
===================================================================
--- uspace/srv/hw/bus/pci/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/bus/pci/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,44 @@
+#
+# Copyright (c) 2005 Martin Decky
+# Copyright (c) 2007 Jakub Jermar
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+include Makefile.common
+
+.PHONY: all clean
+
+all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
+	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
+
+$(LIBPCI):
+	$(MAKE) -C libpci PRECHECK=$(PRECHECK)
+
+clean:
+	$(MAKE) -C libpci clean
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
+	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/srv/hw/bus/pci/Makefile.build
===================================================================
--- uspace/srv/hw/bus/pci/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/bus/pci/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,64 @@
+#
+# Copyright (c) 2005 Martin Decky
+# Copyright (c) 2007 Jakub Jermar
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+## Setup toolchain
+#
+
+include Makefile.common
+include $(LIBC_PREFIX)/Makefile.toolchain
+
+## Sources
+#
+
+SOURCES = \
+	pci.c
+
+OBJECTS := $(addsuffix .o,$(basename $(SOURCES)))
+
+.PHONY: all
+
+all: $(OUTPUT) $(OUTPUT).disasm
+
+-include $(DEPEND)
+
+$(OUTPUT).disasm: $(OUTPUT)
+	$(OBJDUMP) -d $< > $@
+
+$(OUTPUT): $(OBJECTS) $(LIBS)
+	$(LD) -T $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
+
+%.o: %.c $(DEPEND)
+	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
+
+$(DEPEND):
+	makedepend -f - -- $(DEPEND_DEFS) $(CFLAGS) -- $(SOURCES) > $@ 2> /dev/null
+	-[ -f $(DEPEND_PREV) ] && diff -q $(DEPEND_PREV) $@ && mv -f $(DEPEND_PREV) $@
Index: uspace/srv/hw/bus/pci/Makefile.common
===================================================================
--- uspace/srv/hw/bus/pci/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/bus/pci/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,41 @@
+#
+# Copyright (c) 2005 Martin Decky
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+
+## Common names
+#
+
+LIBC_PREFIX = ../../../../lib/libc
+SOFTINT_PREFIX = ../../../../lib/softint
+LIBPCI = libpci/libpci.a
+LIBS = $(LIBPCI) $(LIBC_PREFIX)/libc.a
+
+DEPEND = Makefile.depend
+DEPEND_PREV = $(DEPEND).prev
+JOB = pci.job
+OUTPUT = pci
Index: uspace/srv/hw/bus/pci/libpci/Makefile
===================================================================
--- uspace/srv/hw/bus/pci/libpci/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/bus/pci/libpci/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,40 @@
+#
+# Copyright (c) 2005 Martin Decky
+# Copyright (c) 2007 Jakub Jermar
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+include Makefile.common
+
+.PHONY: all clean
+
+all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBC_PREFIX)/libc.a
+	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
+
+clean:
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(LIBPCI)
+	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/srv/hw/bus/pci/libpci/Makefile.build
===================================================================
--- uspace/srv/hw/bus/pci/libpci/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/bus/pci/libpci/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,64 @@
+#
+# Copyright (c) 2005 Martin Decky
+# Copyright (c) 2007 Jakub Jermar
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+## Setup toolchain
+#
+
+include Makefile.common
+include $(LIBC_PREFIX)/Makefile.toolchain
+
+## Sources
+#
+
+SOURCES = \
+	access.c \
+	generic.c \
+	names.c \
+	i386-ports.c
+
+OBJECTS := $(addsuffix .o,$(basename $(SOURCES)))
+
+.PHONY: all
+
+all: $(LIBPCI)
+
+-include $(DEPEND)
+
+$(LIBPCI): $(OBJECTS)
+	$(AR) rc $@ $(OBJECTS)
+
+%.o: %.c $(DEPEND)
+	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
+
+$(DEPEND):
+	makedepend -f - -- $(DEPEND_DEFS) $(CFLAGS) -- $(SOURCES) > $@ 2> /dev/null
+	-[ -f $(DEPEND_PREV) ] && diff -q $(DEPEND_PREV) $@ && mv -f $(DEPEND_PREV) $@
Index: uspace/srv/hw/bus/pci/libpci/Makefile.common
===================================================================
--- uspace/srv/hw/bus/pci/libpci/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/bus/pci/libpci/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,37 @@
+#
+# Copyright (c) 2005 Martin Decky
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+
+## Common names
+#
+
+LIBC_PREFIX = ../../../../../lib/libc
+DEPEND = Makefile.depend
+DEPEND_PREV = $(DEPEND).prev
+JOB = libpci.job
+LIBPCI = libpci.a
Index: uspace/srv/hw/bus/pci/libpci/VERSION
===================================================================
--- uspace/srv/hw/bus/pci/libpci/VERSION	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/bus/pci/libpci/VERSION	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,2 @@
+This libpci has been ported from pciutils-2.2.3
+on May 8, 2006 by Jakub Jermar.
Index: uspace/srv/hw/bus/pci/libpci/access.c
===================================================================
--- uspace/srv/hw/bus/pci/libpci/access.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/bus/pci/libpci/access.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,270 @@
+/*
+ *	The PCI Library -- User Access
+ *
+ *	Copyright (c) 1997--2003 Martin Mares <mj@ucw.cz>
+ *
+ *	May 8, 2006 - Modified and ported to HelenOS by Jakub Jermar.
+ *
+ *	Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+
+#include "internal.h"
+
+static struct pci_methods *pci_methods[PCI_ACCESS_MAX] = {
+	&pm_intel_conf1,
+	&pm_intel_conf2,
+};
+
+struct pci_access *pci_alloc(void)
+{
+	struct pci_access *a = malloc(sizeof(struct pci_access));
+	int i;
+
+	if (!a)
+		return NULL;
+		
+	bzero(a, sizeof(*a));
+	for (i = 0; i < PCI_ACCESS_MAX; i++)
+		if (pci_methods[i] && pci_methods[i]->config)
+			pci_methods[i]->config(a);
+	return a;
+}
+
+void *pci_malloc(struct pci_access *a, int size)
+{
+	void *x = malloc(size);
+
+	if (!x)
+		a->error("Out of memory (allocation of %d bytes failed)", size);
+	return x;
+}
+
+void pci_mfree(void *x)
+{
+	if (x)
+		free(x);
+}
+
+static void pci_generic_error(char *msg, ...)
+{
+	va_list args;
+
+	va_start(args, msg);
+	puts("pcilib: ");
+	vprintf(msg, args);
+	putchar('\n');
+	exit(1);
+}
+
+static void pci_generic_warn(char *msg, ...)
+{
+	va_list args;
+
+	va_start(args, msg);
+	puts("pcilib: ");
+	vprintf(msg, args);
+	putchar('\n');
+}
+
+static void pci_generic_debug(char *msg, ...)
+{
+	va_list args;
+
+	va_start(args, msg);
+	vprintf(msg, args);
+	va_end(args);
+}
+
+static void pci_null_debug(char *msg UNUSED, ...)
+{
+}
+
+void pci_init(struct pci_access *a)
+{
+	if (!a->error)
+		a->error = pci_generic_error;
+	if (!a->warning)
+		a->warning = pci_generic_warn;
+	if (!a->debug)
+		a->debug = pci_generic_debug;
+	if (!a->debugging)
+		a->debug = pci_null_debug;
+
+	if (a->method) {
+		if (a->method >= PCI_ACCESS_MAX || !pci_methods[a->method])
+			a->error("This access method is not supported.");
+		a->methods = pci_methods[a->method];
+	} else {
+		unsigned int i;
+		for (i = 0; i < PCI_ACCESS_MAX; i++)
+			if (pci_methods[i]) {
+				a->debug("Trying method %d...", i);
+				if (pci_methods[i]->detect(a)) {
+					a->debug("...OK\n");
+					a->methods = pci_methods[i];
+					a->method = i;
+					break;
+				}
+				a->debug("...No.\n");
+			}
+		if (!a->methods)
+			a->error("Cannot find any working access method.");
+	}
+	a->debug("Decided to use %s\n", a->methods->name);
+	a->methods->init(a);
+}
+
+void pci_cleanup(struct pci_access *a)
+{
+	struct pci_dev *d, *e;
+
+	for (d = a->devices; d; d = e) {
+		e = d->next;
+		pci_free_dev(d);
+	}
+	if (a->methods)
+		a->methods->cleanup(a);
+	pci_free_name_list(a);
+	pci_mfree(a);
+}
+
+void pci_scan_bus(struct pci_access *a)
+{
+	a->methods->scan(a);
+}
+
+struct pci_dev *pci_alloc_dev(struct pci_access *a)
+{
+	struct pci_dev *d = pci_malloc(a, sizeof(struct pci_dev));
+
+	bzero(d, sizeof(*d));
+	d->access = a;
+	d->methods = a->methods;
+	d->hdrtype = -1;
+	if (d->methods->init_dev)
+		d->methods->init_dev(d);
+	return d;
+}
+
+int pci_link_dev(struct pci_access *a, struct pci_dev *d)
+{
+	d->next = a->devices;
+	a->devices = d;
+
+	return 1;
+}
+
+struct pci_dev *pci_get_dev(struct pci_access *a, int domain, int bus,
+			    int dev, int func)
+{
+	struct pci_dev *d = pci_alloc_dev(a);
+
+	d->domain = domain;
+	d->bus = bus;
+	d->dev = dev;
+	d->func = func;
+	return d;
+}
+
+void pci_free_dev(struct pci_dev *d)
+{
+	if (d->methods->cleanup_dev)
+		d->methods->cleanup_dev(d);
+	pci_mfree(d);
+}
+
+static inline void
+pci_read_data(struct pci_dev *d, void *buf, int pos, int len)
+{
+	if (pos & (len - 1))
+		d->access->error("Unaligned read: pos=%02x, len=%d", pos,
+				 len);
+	if (pos + len <= d->cache_len)
+		memcpy(buf, d->cache + pos, len);
+	else if (!d->methods->read(d, pos, buf, len))
+		memset(buf, 0xff, len);
+}
+
+byte pci_read_byte(struct pci_dev *d, int pos)
+{
+	byte buf;
+	pci_read_data(d, &buf, pos, 1);
+	return buf;
+}
+
+word pci_read_word(struct pci_dev * d, int pos)
+{
+	word buf;
+	pci_read_data(d, &buf, pos, 2);
+	return le16_to_cpu(buf);
+}
+
+u32 pci_read_long(struct pci_dev * d, int pos)
+{
+	u32 buf;
+	pci_read_data(d, &buf, pos, 4);
+	return le32_to_cpu(buf);
+}
+
+int pci_read_block(struct pci_dev *d, int pos, byte * buf, int len)
+{
+	return d->methods->read(d, pos, buf, len);
+}
+
+static inline int
+pci_write_data(struct pci_dev *d, void *buf, int pos, int len)
+{
+	if (pos & (len - 1))
+		d->access->error("Unaligned write: pos=%02x,len=%d", pos, len);
+	if (pos + len <= d->cache_len)
+		memcpy(d->cache + pos, buf, len);
+	return d->methods->write(d, pos, buf, len);
+}
+
+int pci_write_byte(struct pci_dev *d, int pos, byte data)
+{
+	return pci_write_data(d, &data, pos, 1);
+}
+
+int pci_write_word(struct pci_dev *d, int pos, word data)
+{
+	word buf = cpu_to_le16(data);
+	return pci_write_data(d, &buf, pos, 2);
+}
+
+int pci_write_long(struct pci_dev *d, int pos, u32 data)
+{
+	u32 buf = cpu_to_le32(data);
+	return pci_write_data(d, &buf, pos, 4);
+}
+
+int pci_write_block(struct pci_dev *d, int pos, byte * buf, int len)
+{
+	if (pos < d->cache_len) {
+		int l = (pos + len >= d->cache_len) ? (d->cache_len - pos) : len;
+		memcpy(d->cache + pos, buf, l);
+	}
+	return d->methods->write(d, pos, buf, len);
+}
+
+int pci_fill_info(struct pci_dev *d, int flags)
+{
+	if (flags & PCI_FILL_RESCAN) {
+		flags &= ~PCI_FILL_RESCAN;
+		d->known_fields = 0;
+	}
+	if (flags & ~d->known_fields)
+		d->known_fields |= d->methods->fill_info(d, flags & ~d->known_fields);
+	return d->known_fields;
+}
+
+void pci_setup_cache(struct pci_dev *d, byte * cache, int len)
+{
+	d->cache = cache;
+	d->cache_len = len;
+}
Index: uspace/srv/hw/bus/pci/libpci/generic.c
===================================================================
--- uspace/srv/hw/bus/pci/libpci/generic.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/bus/pci/libpci/generic.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,206 @@
+/*
+ *	The PCI Library -- Generic Direct Access Functions
+ *
+ *	Copyright (c) 1997--2000 Martin Mares <mj@ucw.cz>
+ *
+ *	May 8, 2006 - Modified and ported to HelenOS by Jakub Jermar.
+ *
+ *	Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#include <string.h>
+
+#include "internal.h"
+
+void pci_generic_scan_bus(struct pci_access *a, byte * busmap, int bus)
+{
+	int dev, multi, ht;
+	struct pci_dev *t;
+
+	a->debug("Scanning bus %02x for devices...\n", bus);
+	if (busmap[bus]) {
+		a->warning("Bus %02x seen twice (firmware bug). Ignored.",
+			   bus);
+		return;
+	}
+	busmap[bus] = 1;
+	t = pci_alloc_dev(a);
+	t->bus = bus;
+	for (dev = 0; dev < 32; dev++) {
+		t->dev = dev;
+		multi = 0;
+		for (t->func = 0; !t->func || (multi && t->func < 8);
+		     t->func++) {
+			u32 vd = pci_read_long(t, PCI_VENDOR_ID);
+			struct pci_dev *d;
+
+			if (!vd || vd == 0xffffffff)
+				continue;
+			ht = pci_read_byte(t, PCI_HEADER_TYPE);
+			if (!t->func)
+				multi = ht & 0x80;
+			ht &= 0x7f;
+			d = pci_alloc_dev(a);
+			d->bus = t->bus;
+			d->dev = t->dev;
+			d->func = t->func;
+			d->vendor_id = vd & 0xffff;
+			d->device_id = vd >> 16U;
+			d->known_fields = PCI_FILL_IDENT;
+			d->hdrtype = ht;
+			pci_link_dev(a, d);
+			switch (ht) {
+			case PCI_HEADER_TYPE_NORMAL:
+				break;
+			case PCI_HEADER_TYPE_BRIDGE:
+			case PCI_HEADER_TYPE_CARDBUS:
+				pci_generic_scan_bus(a, busmap,
+						     pci_read_byte(t,
+								   PCI_SECONDARY_BUS));
+				break;
+			default:
+				a->debug
+				    ("Device %04x:%02x:%02x.%d has unknown header type %02x.\n",
+				     d->domain, d->bus, d->dev, d->func,
+				     ht);
+			}
+		}
+	}
+	pci_free_dev(t);
+}
+
+void pci_generic_scan(struct pci_access *a)
+{
+	byte busmap[256];
+
+	bzero(busmap, sizeof(busmap));
+	pci_generic_scan_bus(a, busmap, 0);
+}
+
+int pci_generic_fill_info(struct pci_dev *d, int flags)
+{
+	struct pci_access *a = d->access;
+
+	if ((flags & (PCI_FILL_BASES | PCI_FILL_ROM_BASE))
+	    && d->hdrtype < 0)
+		d->hdrtype = pci_read_byte(d, PCI_HEADER_TYPE) & 0x7f;
+	if (flags & PCI_FILL_IDENT) {
+		d->vendor_id = pci_read_word(d, PCI_VENDOR_ID);
+		d->device_id = pci_read_word(d, PCI_DEVICE_ID);
+	}
+	if (flags & PCI_FILL_IRQ)
+		d->irq = pci_read_byte(d, PCI_INTERRUPT_LINE);
+	if (flags & PCI_FILL_BASES) {
+		int cnt = 0, i;
+		bzero(d->base_addr, sizeof(d->base_addr));
+		switch (d->hdrtype) {
+		case PCI_HEADER_TYPE_NORMAL:
+			cnt = 6;
+			break;
+		case PCI_HEADER_TYPE_BRIDGE:
+			cnt = 2;
+			break;
+		case PCI_HEADER_TYPE_CARDBUS:
+			cnt = 1;
+			break;
+		}
+		if (cnt) {
+			for (i = 0; i < cnt; i++) {
+				u32 x = pci_read_long(d, PCI_BASE_ADDRESS_0 + i * 4);
+				if (!x || x == (u32) ~ 0)
+					continue;
+				if ((x & PCI_BASE_ADDRESS_SPACE) == PCI_BASE_ADDRESS_SPACE_IO)
+					d->base_addr[i] = x;
+				else {
+					if ((x & PCI_BASE_ADDRESS_MEM_TYPE_MASK) != PCI_BASE_ADDRESS_MEM_TYPE_64)
+						d->base_addr[i] = x;
+					else if (i >= cnt - 1)
+						a->warning("%04x:%02x:%02x.%d: Invalid 64-bit address seen for BAR %d.",
+						     d->domain, d->bus,
+						     d->dev, d->func, i);
+					else {
+						u32 y = pci_read_long(d, PCI_BASE_ADDRESS_0 + (++i) * 4);
+#ifdef PCI_HAVE_64BIT_ADDRESS
+						d->base_addr[i - 1] = x | (((pciaddr_t) y) << 32);
+#else
+						if (y)
+							a->warning("%04x:%02x:%02x.%d 64-bit device address ignored.",
+							     d->domain,
+							     d->bus,
+							     d->dev,
+							     d->func);
+						else
+							d->base_addr[i - 1] = x;
+#endif
+					}
+				}
+			}
+		}
+	}
+	if (flags & PCI_FILL_ROM_BASE) {
+		int reg = 0;
+		d->rom_base_addr = 0;
+		switch (d->hdrtype) {
+		case PCI_HEADER_TYPE_NORMAL:
+			reg = PCI_ROM_ADDRESS;
+			break;
+		case PCI_HEADER_TYPE_BRIDGE:
+			reg = PCI_ROM_ADDRESS1;
+			break;
+		}
+		if (reg) {
+			u32 u = pci_read_long(d, reg);
+			if (u != 0xffffffff)
+				d->rom_base_addr = u;
+		}
+	}
+	return flags & ~PCI_FILL_SIZES;
+}
+
+static int
+pci_generic_block_op(struct pci_dev *d, int pos, byte * buf, int len,
+		     int (*r) (struct pci_dev * d, int pos, byte * buf,
+			       int len))
+{
+	if ((pos & 1) && len >= 1) {
+		if (!r(d, pos, buf, 1))
+			return 0;
+		pos++;
+		buf++;
+		len--;
+	}
+	if ((pos & 3) && len >= 2) {
+		if (!r(d, pos, buf, 2))
+			return 0;
+		pos += 2;
+		buf += 2;
+		len -= 2;
+	}
+	while (len >= 4) {
+		if (!r(d, pos, buf, 4))
+			return 0;
+		pos += 4;
+		buf += 4;
+		len -= 4;
+	}
+	if (len >= 2) {
+		if (!r(d, pos, buf, 2))
+			return 0;
+		pos += 2;
+		buf += 2;
+		len -= 2;
+	}
+	if (len && !r(d, pos, buf, 1))
+		return 0;
+	return 1;
+}
+
+int pci_generic_block_read(struct pci_dev *d, int pos, byte * buf, int len)
+{
+	return pci_generic_block_op(d, pos, buf, len, d->access->methods->read);
+}
+
+int pci_generic_block_write(struct pci_dev *d, int pos, byte * buf, int len)
+{
+	return pci_generic_block_op(d, pos, buf, len, d->access->methods->write);
+}
Index: uspace/srv/hw/bus/pci/libpci/header.h
===================================================================
--- uspace/srv/hw/bus/pci/libpci/header.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/bus/pci/libpci/header.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,937 @@
+/*
+ *	The PCI Library -- PCI Header Structure (based on <linux/pci.h>)
+ *
+ *	Copyright (c) 1997--2005 Martin Mares <mj@ucw.cz>
+ *
+ *	May 8, 2006 - Modified and ported to HelenOS by Jakub Jermar.
+ *
+ *	Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+/*
+ * Under PCI, each device has 256 bytes of configuration address space,
+ * of which the first 64 bytes are standardized as follows:
+ */
+#define PCI_VENDOR_ID		0x00	/* 16 bits */
+#define PCI_DEVICE_ID		0x02	/* 16 bits */
+#define PCI_COMMAND		0x04	/* 16 bits */
+#define  PCI_COMMAND_IO		0x1	/* Enable response in I/O space */
+#define  PCI_COMMAND_MEMORY	0x2	/* Enable response in Memory space */
+#define  PCI_COMMAND_MASTER	0x4	/* Enable bus mastering */
+#define  PCI_COMMAND_SPECIAL	0x8	/* Enable response to special cycles */
+#define  PCI_COMMAND_INVALIDATE	0x10	/* Use memory write and invalidate */
+#define  PCI_COMMAND_VGA_PALETTE 0x20	/* Enable palette snooping */
+#define  PCI_COMMAND_PARITY	0x40	/* Enable parity checking */
+#define  PCI_COMMAND_WAIT 	0x80	/* Enable address/data stepping */
+#define  PCI_COMMAND_SERR	0x100	/* Enable SERR */
+#define  PCI_COMMAND_FAST_BACK	0x200	/* Enable back-to-back writes */
+
+#define PCI_STATUS		0x06	/* 16 bits */
+#define  PCI_STATUS_CAP_LIST	0x10	/* Support Capability List */
+#define  PCI_STATUS_66MHZ	0x20	/* Support 66 Mhz PCI 2.1 bus */
+#define  PCI_STATUS_UDF		0x40	/* Support User Definable Features [obsolete] */
+#define  PCI_STATUS_FAST_BACK	0x80	/* Accept fast-back to back */
+#define  PCI_STATUS_PARITY	0x100	/* Detected parity error */
+#define  PCI_STATUS_DEVSEL_MASK	0x600	/* DEVSEL timing */
+#define  PCI_STATUS_DEVSEL_FAST	0x000
+#define  PCI_STATUS_DEVSEL_MEDIUM 0x200
+#define  PCI_STATUS_DEVSEL_SLOW 0x400
+#define  PCI_STATUS_SIG_TARGET_ABORT 0x800	/* Set on target abort */
+#define  PCI_STATUS_REC_TARGET_ABORT 0x1000	/* Master ack of " */
+#define  PCI_STATUS_REC_MASTER_ABORT 0x2000	/* Set on master abort */
+#define  PCI_STATUS_SIG_SYSTEM_ERROR 0x4000	/* Set when we drive SERR */
+#define  PCI_STATUS_DETECTED_PARITY 0x8000	/* Set on parity error */
+
+#define PCI_CLASS_REVISION	0x08	/* High 24 bits are class, low 8
+					   revision */
+#define PCI_REVISION_ID         0x08	/* Revision ID */
+#define PCI_CLASS_PROG          0x09	/* Reg. Level Programming Interface */
+#define PCI_CLASS_DEVICE        0x0a	/* Device class */
+
+#define PCI_CACHE_LINE_SIZE	0x0c	/* 8 bits */
+#define PCI_LATENCY_TIMER	0x0d	/* 8 bits */
+#define PCI_HEADER_TYPE		0x0e	/* 8 bits */
+#define  PCI_HEADER_TYPE_NORMAL	0
+#define  PCI_HEADER_TYPE_BRIDGE 1
+#define  PCI_HEADER_TYPE_CARDBUS 2
+
+#define PCI_BIST		0x0f	/* 8 bits */
+#define PCI_BIST_CODE_MASK	0x0f	/* Return result */
+#define PCI_BIST_START		0x40	/* 1 to start BIST, 2 secs or less */
+#define PCI_BIST_CAPABLE	0x80	/* 1 if BIST capable */
+
+/*
+ * Base addresses specify locations in memory or I/O space.
+ * Decoded size can be determined by writing a value of 
+ * 0xffffffff to the register, and reading it back.  Only 
+ * 1 bits are decoded.
+ */
+#define PCI_BASE_ADDRESS_0	0x10	/* 32 bits */
+#define PCI_BASE_ADDRESS_1	0x14	/* 32 bits [htype 0,1 only] */
+#define PCI_BASE_ADDRESS_2	0x18	/* 32 bits [htype 0 only] */
+#define PCI_BASE_ADDRESS_3	0x1c	/* 32 bits */
+#define PCI_BASE_ADDRESS_4	0x20	/* 32 bits */
+#define PCI_BASE_ADDRESS_5	0x24	/* 32 bits */
+#define  PCI_BASE_ADDRESS_SPACE	0x01	/* 0 = memory, 1 = I/O */
+#define  PCI_BASE_ADDRESS_SPACE_IO 0x01
+#define  PCI_BASE_ADDRESS_SPACE_MEMORY 0x00
+#define  PCI_BASE_ADDRESS_MEM_TYPE_MASK 0x06
+#define  PCI_BASE_ADDRESS_MEM_TYPE_32	0x00	/* 32 bit address */
+#define  PCI_BASE_ADDRESS_MEM_TYPE_1M	0x02	/* Below 1M [obsolete] */
+#define  PCI_BASE_ADDRESS_MEM_TYPE_64	0x04	/* 64 bit address */
+#define  PCI_BASE_ADDRESS_MEM_PREFETCH	0x08	/* prefetchable? */
+#define  PCI_BASE_ADDRESS_MEM_MASK	(~(pciaddr_t)0x0f)
+#define  PCI_BASE_ADDRESS_IO_MASK	(~(pciaddr_t)0x03)
+/* bit 1 is reserved if address_space = 1 */
+
+/* Header type 0 (normal devices) */
+#define PCI_CARDBUS_CIS		0x28
+#define PCI_SUBSYSTEM_VENDOR_ID	0x2c
+#define PCI_SUBSYSTEM_ID	0x2e
+#define PCI_ROM_ADDRESS		0x30	/* Bits 31..11 are address, 10..1 reserved */
+#define  PCI_ROM_ADDRESS_ENABLE	0x01
+#define PCI_ROM_ADDRESS_MASK	(~(pciaddr_t)0x7ff)
+
+#define PCI_CAPABILITY_LIST	0x34	/* Offset of first capability list entry */
+
+/* 0x35-0x3b are reserved */
+#define PCI_INTERRUPT_LINE	0x3c	/* 8 bits */
+#define PCI_INTERRUPT_PIN	0x3d	/* 8 bits */
+#define PCI_MIN_GNT		0x3e	/* 8 bits */
+#define PCI_MAX_LAT		0x3f	/* 8 bits */
+
+/* Header type 1 (PCI-to-PCI bridges) */
+#define PCI_PRIMARY_BUS		0x18	/* Primary bus number */
+#define PCI_SECONDARY_BUS	0x19	/* Secondary bus number */
+#define PCI_SUBORDINATE_BUS	0x1a	/* Highest bus number behind the bridge */
+#define PCI_SEC_LATENCY_TIMER	0x1b	/* Latency timer for secondary interface */
+#define PCI_IO_BASE		0x1c	/* I/O range behind the bridge */
+#define PCI_IO_LIMIT		0x1d
+#define  PCI_IO_RANGE_TYPE_MASK	0x0f	/* I/O bridging type */
+#define  PCI_IO_RANGE_TYPE_16	0x00
+#define  PCI_IO_RANGE_TYPE_32	0x01
+#define  PCI_IO_RANGE_MASK	~0x0f
+#define PCI_SEC_STATUS		0x1e	/* Secondary status register */
+#define PCI_MEMORY_BASE		0x20	/* Memory range behind */
+#define PCI_MEMORY_LIMIT	0x22
+#define  PCI_MEMORY_RANGE_TYPE_MASK 0x0f
+#define  PCI_MEMORY_RANGE_MASK	~0x0f
+#define PCI_PREF_MEMORY_BASE	0x24	/* Prefetchable memory range behind */
+#define PCI_PREF_MEMORY_LIMIT	0x26
+#define  PCI_PREF_RANGE_TYPE_MASK 0x0f
+#define  PCI_PREF_RANGE_TYPE_32	0x00
+#define  PCI_PREF_RANGE_TYPE_64	0x01
+#define  PCI_PREF_RANGE_MASK	~0x0f
+#define PCI_PREF_BASE_UPPER32	0x28	/* Upper half of prefetchable memory range */
+#define PCI_PREF_LIMIT_UPPER32	0x2c
+#define PCI_IO_BASE_UPPER16	0x30	/* Upper half of I/O addresses */
+#define PCI_IO_LIMIT_UPPER16	0x32
+/* 0x34 same as for htype 0 */
+/* 0x35-0x3b is reserved */
+#define PCI_ROM_ADDRESS1	0x38	/* Same as PCI_ROM_ADDRESS, but for htype 1 */
+/* 0x3c-0x3d are same as for htype 0 */
+#define PCI_BRIDGE_CONTROL	0x3e
+#define  PCI_BRIDGE_CTL_PARITY	0x01	/* Enable parity detection on secondary interface */
+#define  PCI_BRIDGE_CTL_SERR	0x02	/* The same for SERR forwarding */
+#define  PCI_BRIDGE_CTL_NO_ISA	0x04	/* Disable bridging of ISA ports */
+#define  PCI_BRIDGE_CTL_VGA	0x08	/* Forward VGA addresses */
+#define  PCI_BRIDGE_CTL_MASTER_ABORT 0x20	/* Report master aborts */
+#define  PCI_BRIDGE_CTL_BUS_RESET 0x40	/* Secondary bus reset */
+#define  PCI_BRIDGE_CTL_FAST_BACK 0x80	/* Fast Back2Back enabled on secondary interface */
+
+/* Header type 2 (CardBus bridges) */
+/* 0x14-0x15 reserved */
+#define PCI_CB_SEC_STATUS	0x16	/* Secondary status */
+#define PCI_CB_PRIMARY_BUS	0x18	/* PCI bus number */
+#define PCI_CB_CARD_BUS		0x19	/* CardBus bus number */
+#define PCI_CB_SUBORDINATE_BUS	0x1a	/* Subordinate bus number */
+#define PCI_CB_LATENCY_TIMER	0x1b	/* CardBus latency timer */
+#define PCI_CB_MEMORY_BASE_0	0x1c
+#define PCI_CB_MEMORY_LIMIT_0	0x20
+#define PCI_CB_MEMORY_BASE_1	0x24
+#define PCI_CB_MEMORY_LIMIT_1	0x28
+#define PCI_CB_IO_BASE_0	0x2c
+#define PCI_CB_IO_BASE_0_HI	0x2e
+#define PCI_CB_IO_LIMIT_0	0x30
+#define PCI_CB_IO_LIMIT_0_HI	0x32
+#define PCI_CB_IO_BASE_1	0x34
+#define PCI_CB_IO_BASE_1_HI	0x36
+#define PCI_CB_IO_LIMIT_1	0x38
+#define PCI_CB_IO_LIMIT_1_HI	0x3a
+#define  PCI_CB_IO_RANGE_MASK	~0x03
+/* 0x3c-0x3d are same as for htype 0 */
+#define PCI_CB_BRIDGE_CONTROL	0x3e
+#define  PCI_CB_BRIDGE_CTL_PARITY	0x01	/* Similar to standard bridge control register */
+#define  PCI_CB_BRIDGE_CTL_SERR		0x02
+#define  PCI_CB_BRIDGE_CTL_ISA		0x04
+#define  PCI_CB_BRIDGE_CTL_VGA		0x08
+#define  PCI_CB_BRIDGE_CTL_MASTER_ABORT	0x20
+#define  PCI_CB_BRIDGE_CTL_CB_RESET	0x40	/* CardBus reset */
+#define  PCI_CB_BRIDGE_CTL_16BIT_INT	0x80	/* Enable interrupt for 16-bit cards */
+#define  PCI_CB_BRIDGE_CTL_PREFETCH_MEM0 0x100	/* Prefetch enable for both memory regions */
+#define  PCI_CB_BRIDGE_CTL_PREFETCH_MEM1 0x200
+#define  PCI_CB_BRIDGE_CTL_POST_WRITES	0x400
+#define PCI_CB_SUBSYSTEM_VENDOR_ID 0x40
+#define PCI_CB_SUBSYSTEM_ID	0x42
+#define PCI_CB_LEGACY_MODE_BASE	0x44	/* 16-bit PC Card legacy mode base address (ExCa) */
+/* 0x48-0x7f reserved */
+
+/* Capability lists */
+
+#define PCI_CAP_LIST_ID		0	/* Capability ID */
+#define  PCI_CAP_ID_PM		0x01	/* Power Management */
+#define  PCI_CAP_ID_AGP		0x02	/* Accelerated Graphics Port */
+#define  PCI_CAP_ID_VPD		0x03	/* Vital Product Data */
+#define  PCI_CAP_ID_SLOTID	0x04	/* Slot Identification */
+#define  PCI_CAP_ID_MSI		0x05	/* Message Signalled Interrupts */
+#define  PCI_CAP_ID_CHSWP	0x06	/* CompactPCI HotSwap */
+#define  PCI_CAP_ID_PCIX        0x07	/* PCI-X */
+#define  PCI_CAP_ID_HT          0x08	/* HyperTransport */
+#define  PCI_CAP_ID_VNDR	0x09	/* Vendor specific */
+#define  PCI_CAP_ID_DBG		0x0A	/* Debug port */
+#define  PCI_CAP_ID_CCRC	0x0B	/* CompactPCI Central Resource Control */
+#define  PCI_CAP_ID_AGP3	0x0E	/* AGP 8x */
+#define  PCI_CAP_ID_EXP		0x10	/* PCI Express */
+#define  PCI_CAP_ID_MSIX	0x11	/* MSI-X */
+#define PCI_CAP_LIST_NEXT	1	/* Next capability in the list */
+#define PCI_CAP_FLAGS		2	/* Capability defined flags (16 bits) */
+#define PCI_CAP_SIZEOF		4
+
+/* Capabilities residing in the PCI Express extended configuration space */
+
+#define PCI_EXT_CAP_ID_AER	0x01	/* Advanced Error Reporting */
+#define PCI_EXT_CAP_ID_VC	0x02	/* Virtual Channel */
+#define PCI_EXT_CAP_ID_DSN	0x03	/* Device Serial Number */
+#define PCI_EXT_CAP_ID_PB	0x04	/* Power Budgeting */
+
+/* Power Management Registers */
+
+#define  PCI_PM_CAP_VER_MASK	0x0007	/* Version (2=PM1.1) */
+#define  PCI_PM_CAP_PME_CLOCK	0x0008	/* Clock required for PME generation */
+#define  PCI_PM_CAP_DSI		0x0020	/* Device specific initialization required */
+#define  PCI_PM_CAP_AUX_C_MASK	0x01c0	/* Maximum aux current required in D3cold */
+#define  PCI_PM_CAP_D1		0x0200	/* D1 power state support */
+#define  PCI_PM_CAP_D2		0x0400	/* D2 power state support */
+#define  PCI_PM_CAP_PME_D0	0x0800	/* PME can be asserted from D0 */
+#define  PCI_PM_CAP_PME_D1	0x1000	/* PME can be asserted from D1 */
+#define  PCI_PM_CAP_PME_D2	0x2000	/* PME can be asserted from D2 */
+#define  PCI_PM_CAP_PME_D3_HOT	0x4000	/* PME can be asserted from D3hot */
+#define  PCI_PM_CAP_PME_D3_COLD	0x8000	/* PME can be asserted from D3cold */
+#define PCI_PM_CTRL		4	/* PM control and status register */
+#define  PCI_PM_CTRL_STATE_MASK	0x0003	/* Current power state (D0 to D3) */
+#define  PCI_PM_CTRL_PME_ENABLE	0x0100	/* PME pin enable */
+#define  PCI_PM_CTRL_DATA_SEL_MASK	0x1e00	/* PM table data index */
+#define  PCI_PM_CTRL_DATA_SCALE_MASK	0x6000	/* PM table data scaling factor */
+#define  PCI_PM_CTRL_PME_STATUS	0x8000	/* PME pin status */
+#define PCI_PM_PPB_EXTENSIONS	6	/* PPB support extensions */
+#define  PCI_PM_PPB_B2_B3	0x40	/* If bridge enters D3hot, bus enters: 0=B3, 1=B2 */
+#define  PCI_PM_BPCC_ENABLE	0x80	/* Secondary bus is power managed */
+#define PCI_PM_DATA_REGISTER	7	/* PM table contents read here */
+#define PCI_PM_SIZEOF		8
+
+/* AGP registers */
+
+#define PCI_AGP_VERSION		2	/* BCD version number */
+#define PCI_AGP_RFU		3	/* Rest of capability flags */
+#define PCI_AGP_STATUS		4	/* Status register */
+#define  PCI_AGP_STATUS_RQ_MASK	0xff000000	/* Maximum number of requests - 1 */
+#define  PCI_AGP_STATUS_ISOCH	0x10000	/* Isochronous transactions supported */
+#define  PCI_AGP_STATUS_ARQSZ_MASK	0xe000	/* log2(optimum async req size in bytes) - 4 */
+#define  PCI_AGP_STATUS_CAL_MASK	0x1c00	/* Calibration cycle timing */
+#define  PCI_AGP_STATUS_SBA	0x0200	/* Sideband addressing supported */
+#define  PCI_AGP_STATUS_ITA_COH	0x0100	/* In-aperture accesses always coherent */
+#define  PCI_AGP_STATUS_GART64	0x0080	/* 64-bit GART entries supported */
+#define  PCI_AGP_STATUS_HTRANS	0x0040	/* If 0, core logic can xlate host CPU accesses thru aperture */
+#define  PCI_AGP_STATUS_64BIT	0x0020	/* 64-bit addressing cycles supported */
+#define  PCI_AGP_STATUS_FW	0x0010	/* Fast write transfers supported */
+#define  PCI_AGP_STATUS_AGP3	0x0008	/* AGP3 mode supported */
+#define  PCI_AGP_STATUS_RATE4	0x0004	/* 4x transfer rate supported (RFU in AGP3 mode) */
+#define  PCI_AGP_STATUS_RATE2	0x0002	/* 2x transfer rate supported (8x in AGP3 mode) */
+#define  PCI_AGP_STATUS_RATE1	0x0001	/* 1x transfer rate supported (4x in AGP3 mode) */
+#define PCI_AGP_COMMAND		8	/* Control register */
+#define  PCI_AGP_COMMAND_RQ_MASK 0xff000000	/* Master: Maximum number of requests */
+#define  PCI_AGP_COMMAND_ARQSZ_MASK	0xe000	/* log2(optimum async req size in bytes) - 4 */
+#define  PCI_AGP_COMMAND_CAL_MASK	0x1c00	/* Calibration cycle timing */
+#define  PCI_AGP_COMMAND_SBA	0x0200	/* Sideband addressing enabled */
+#define  PCI_AGP_COMMAND_AGP	0x0100	/* Allow processing of AGP transactions */
+#define  PCI_AGP_COMMAND_GART64	0x0080	/* 64-bit GART entries enabled */
+#define  PCI_AGP_COMMAND_64BIT	0x0020	/* Allow generation of 64-bit addr cycles */
+#define  PCI_AGP_COMMAND_FW	0x0010	/* Enable FW transfers */
+#define  PCI_AGP_COMMAND_RATE4	0x0004	/* Use 4x rate (RFU in AGP3 mode) */
+#define  PCI_AGP_COMMAND_RATE2	0x0002	/* Use 2x rate (8x in AGP3 mode) */
+#define  PCI_AGP_COMMAND_RATE1	0x0001	/* Use 1x rate (4x in AGP3 mode) */
+#define PCI_AGP_SIZEOF		12
+
+/* Slot Identification */
+
+#define PCI_SID_ESR		2	/* Expansion Slot Register */
+#define  PCI_SID_ESR_NSLOTS	0x1f	/* Number of expansion slots available */
+#define  PCI_SID_ESR_FIC	0x20	/* First In Chassis Flag */
+#define PCI_SID_CHASSIS_NR	3	/* Chassis Number */
+
+/* Message Signalled Interrupts registers */
+
+#define PCI_MSI_FLAGS		2	/* Various flags */
+#define  PCI_MSI_FLAGS_64BIT	0x80	/* 64-bit addresses allowed */
+#define  PCI_MSI_FLAGS_QSIZE	0x70	/* Message queue size configured */
+#define  PCI_MSI_FLAGS_QMASK	0x0e	/* Maximum queue size available */
+#define  PCI_MSI_FLAGS_ENABLE	0x01	/* MSI feature enabled */
+#define PCI_MSI_RFU		3	/* Rest of capability flags */
+#define PCI_MSI_ADDRESS_LO	4	/* Lower 32 bits */
+#define PCI_MSI_ADDRESS_HI	8	/* Upper 32 bits (if PCI_MSI_FLAGS_64BIT set) */
+#define PCI_MSI_DATA_32		8	/* 16 bits of data for 32-bit devices */
+#define PCI_MSI_DATA_64		12	/* 16 bits of data for 64-bit devices */
+
+/* PCI-X */
+#define PCI_PCIX_COMMAND                                                2	/* Command register offset */
+#define PCI_PCIX_COMMAND_DPERE                                     0x0001	/* Data Parity Error Recover Enable */
+#define PCI_PCIX_COMMAND_ERO                                       0x0002	/* Enable Relaxed Ordering */
+#define PCI_PCIX_COMMAND_MAX_MEM_READ_BYTE_COUNT                   0x000c	/* Maximum Memory Read Byte Count */
+#define PCI_PCIX_COMMAND_MAX_OUTSTANDING_SPLIT_TRANS               0x0070
+#define PCI_PCIX_COMMAND_RESERVED                                   0xf80
+#define PCI_PCIX_STATUS                                                 4	/* Status register offset */
+#define PCI_PCIX_STATUS_FUNCTION                               0x00000007
+#define PCI_PCIX_STATUS_DEVICE                                 0x000000f8
+#define PCI_PCIX_STATUS_BUS                                    0x0000ff00
+#define PCI_PCIX_STATUS_64BIT                                  0x00010000
+#define PCI_PCIX_STATUS_133MHZ                                 0x00020000
+#define PCI_PCIX_STATUS_SC_DISCARDED                           0x00040000	/* Split Completion Discarded */
+#define PCI_PCIX_STATUS_UNEXPECTED_SC                          0x00080000	/* Unexpected Split Completion */
+#define PCI_PCIX_STATUS_DEVICE_COMPLEXITY                      0x00100000	/* 0 = simple device, 1 = bridge device */
+#define PCI_PCIX_STATUS_DESIGNED_MAX_MEM_READ_BYTE_COUNT       0x00600000	/* 0 = 512 bytes, 1 = 1024, 2 = 2048, 3 = 4096 */
+#define PCI_PCIX_STATUS_DESIGNED_MAX_OUTSTANDING_SPLIT_TRANS   0x03800000
+#define PCI_PCIX_STATUS_DESIGNED_MAX_CUMULATIVE_READ_SIZE      0x1c000000
+#define PCI_PCIX_STATUS_RCVD_SC_ERR_MESS                       0x20000000	/* Received Split Completion Error Message */
+#define PCI_PCIX_STATUS_266MHZ				       0x40000000	/* 266 MHz capable */
+#define PCI_PCIX_STATUS_533MHZ				       0x80000000	/* 533 MHz capable */
+#define PCI_PCIX_SIZEOF		4
+
+/* PCI-X Bridges */
+#define PCI_PCIX_BRIDGE_SEC_STATUS                                      2	/* Secondary bus status register offset */
+#define PCI_PCIX_BRIDGE_SEC_STATUS_64BIT                           0x0001
+#define PCI_PCIX_BRIDGE_SEC_STATUS_133MHZ                          0x0002
+#define PCI_PCIX_BRIDGE_SEC_STATUS_SC_DISCARDED                    0x0004	/* Split Completion Discarded on secondary bus */
+#define PCI_PCIX_BRIDGE_SEC_STATUS_UNEXPECTED_SC                   0x0008	/* Unexpected Split Completion on secondary bus */
+#define PCI_PCIX_BRIDGE_SEC_STATUS_SC_OVERRUN                      0x0010	/* Split Completion Overrun on secondary bus */
+#define PCI_PCIX_BRIDGE_SEC_STATUS_SPLIT_REQUEST_DELAYED           0x0020
+#define PCI_PCIX_BRIDGE_SEC_STATUS_CLOCK_FREQ                      0x01c0
+#define PCI_PCIX_BRIDGE_SEC_STATUS_RESERVED                        0xfe00
+#define PCI_PCIX_BRIDGE_STATUS                                          4	/* Primary bus status register offset */
+#define PCI_PCIX_BRIDGE_STATUS_FUNCTION                        0x00000007
+#define PCI_PCIX_BRIDGE_STATUS_DEVICE                          0x000000f8
+#define PCI_PCIX_BRIDGE_STATUS_BUS                             0x0000ff00
+#define PCI_PCIX_BRIDGE_STATUS_64BIT                           0x00010000
+#define PCI_PCIX_BRIDGE_STATUS_133MHZ                          0x00020000
+#define PCI_PCIX_BRIDGE_STATUS_SC_DISCARDED                    0x00040000	/* Split Completion Discarded */
+#define PCI_PCIX_BRIDGE_STATUS_UNEXPECTED_SC                   0x00080000	/* Unexpected Split Completion */
+#define PCI_PCIX_BRIDGE_STATUS_SC_OVERRUN                      0x00100000	/* Split Completion Overrun */
+#define PCI_PCIX_BRIDGE_STATUS_SPLIT_REQUEST_DELAYED           0x00200000
+#define PCI_PCIX_BRIDGE_STATUS_RESERVED                        0xffc00000
+#define PCI_PCIX_BRIDGE_UPSTREAM_SPLIT_TRANS_CTRL                       8	/* Upstream Split Transaction Register offset */
+#define PCI_PCIX_BRIDGE_DOWNSTREAM_SPLIT_TRANS_CTRL                    12	/* Downstream Split Transaction Register offset */
+#define PCI_PCIX_BRIDGE_STR_CAPACITY                           0x0000ffff
+#define PCI_PCIX_BRIDGE_STR_COMMITMENT_LIMIT                   0xffff0000
+#define PCI_PCIX_BRIDGE_SIZEOF 12
+
+/* HyperTransport (as of spec rev. 2.00) */
+#define PCI_HT_CMD		2	/* Command Register */
+#define  PCI_HT_CMD_TYP_HI	0xe000	/* Capability Type high part */
+#define  PCI_HT_CMD_TYP_HI_PRI	0x0000	/* Slave or Primary Interface */
+#define  PCI_HT_CMD_TYP_HI_SEC	0x2000	/* Host or Secondary Interface */
+#define  PCI_HT_CMD_TYP		0xf800	/* Capability Type */
+#define  PCI_HT_CMD_TYP_SW	0x4000	/* Switch */
+#define  PCI_HT_CMD_TYP_IDC	0x8000	/* Interrupt Discovery and Configuration */
+#define  PCI_HT_CMD_TYP_RID	0x8800	/* Revision ID */
+#define  PCI_HT_CMD_TYP_UIDC	0x9000	/* UnitID Clumping */
+#define  PCI_HT_CMD_TYP_ECSA	0x9800	/* Extended Configuration Space Access */
+#define  PCI_HT_CMD_TYP_AM	0xa000	/* Address Mapping */
+#define  PCI_HT_CMD_TYP_MSIM	0xa800	/* MSI Mapping */
+#define  PCI_HT_CMD_TYP_DR	0xb000	/* DirectRoute */
+#define  PCI_HT_CMD_TYP_VCS	0xb800	/* VCSet */
+#define  PCI_HT_CMD_TYP_RM	0xc000	/* Retry Mode */
+#define  PCI_HT_CMD_TYP_X86	0xc800	/* X86 (reserved) */
+
+					/* Link Control Register */
+#define  PCI_HT_LCTR_CFLE	0x0002	/* CRC Flood Enable */
+#define  PCI_HT_LCTR_CST	0x0004	/* CRC Start Test */
+#define  PCI_HT_LCTR_CFE	0x0008	/* CRC Force Error */
+#define  PCI_HT_LCTR_LKFAIL	0x0010	/* Link Failure */
+#define  PCI_HT_LCTR_INIT	0x0020	/* Initialization Complete */
+#define  PCI_HT_LCTR_EOC	0x0040	/* End of Chain */
+#define  PCI_HT_LCTR_TXO	0x0080	/* Transmitter Off */
+#define  PCI_HT_LCTR_CRCERR	0x0f00	/* CRC Error */
+#define  PCI_HT_LCTR_ISOCEN	0x1000	/* Isochronous Flow Control Enable */
+#define  PCI_HT_LCTR_LSEN	0x2000	/* LDTSTOP# Tristate Enable */
+#define  PCI_HT_LCTR_EXTCTL	0x4000	/* Extended CTL Time */
+#define  PCI_HT_LCTR_64B	0x8000	/* 64-bit Addressing Enable */
+
+					/* Link Configuration Register */
+#define  PCI_HT_LCNF_MLWI	0x0007	/* Max Link Width In */
+#define  PCI_HT_LCNF_LW_8B	0x0	/* Link Width 8 bits */
+#define  PCI_HT_LCNF_LW_16B	0x1	/* Link Width 16 bits */
+#define  PCI_HT_LCNF_LW_32B	0x3	/* Link Width 32 bits */
+#define  PCI_HT_LCNF_LW_2B	0x4	/* Link Width 2 bits */
+#define  PCI_HT_LCNF_LW_4B	0x5	/* Link Width 4 bits */
+#define  PCI_HT_LCNF_LW_NC	0x7	/* Link physically not connected */
+#define  PCI_HT_LCNF_DFI	0x0008	/* Doubleword Flow Control In */
+#define  PCI_HT_LCNF_MLWO	0x0070	/* Max Link Width Out */
+#define  PCI_HT_LCNF_DFO	0x0080	/* Doubleword Flow Control Out */
+#define  PCI_HT_LCNF_LWI	0x0700	/* Link Width In */
+#define  PCI_HT_LCNF_DFIE	0x0800	/* Doubleword Flow Control In Enable */
+#define  PCI_HT_LCNF_LWO	0x7000	/* Link Width Out */
+#define  PCI_HT_LCNF_DFOE	0x8000	/* Doubleword Flow Control Out Enable */
+
+					/* Revision ID Register */
+#define  PCI_HT_RID_MIN		0x1f	/* Minor Revision */
+#define  PCI_HT_RID_MAJ		0xe0	/* Major Revision */
+
+					/* Link Frequency/Error Register */
+#define  PCI_HT_LFRER_FREQ	0x0f	/* Transmitter Clock Frequency */
+#define  PCI_HT_LFRER_200	0x00	/* 200MHz */
+#define  PCI_HT_LFRER_300	0x01	/* 300MHz */
+#define  PCI_HT_LFRER_400	0x02	/* 400MHz */
+#define  PCI_HT_LFRER_500	0x03	/* 500MHz */
+#define  PCI_HT_LFRER_600	0x04	/* 600MHz */
+#define  PCI_HT_LFRER_800	0x05	/* 800MHz */
+#define  PCI_HT_LFRER_1000	0x06	/* 1.0GHz */
+#define  PCI_HT_LFRER_1200	0x07	/* 1.2GHz */
+#define  PCI_HT_LFRER_1400	0x08	/* 1.4GHz */
+#define  PCI_HT_LFRER_1600	0x09	/* 1.6GHz */
+#define  PCI_HT_LFRER_VEND	0x0f	/* Vendor-Specific */
+#define  PCI_HT_LFRER_ERR	0xf0	/* Link Error */
+#define  PCI_HT_LFRER_PROT	0x10	/* Protocol Error */
+#define  PCI_HT_LFRER_OV	0x20	/* Overflow Error */
+#define  PCI_HT_LFRER_EOC	0x40	/* End of Chain Error */
+#define  PCI_HT_LFRER_CTLT	0x80	/* CTL Timeout */
+
+					/* Link Frequency Capability Register */
+#define  PCI_HT_LFCAP_200	0x0001	/* 200MHz */
+#define  PCI_HT_LFCAP_300	0x0002	/* 300MHz */
+#define  PCI_HT_LFCAP_400	0x0004	/* 400MHz */
+#define  PCI_HT_LFCAP_500	0x0008	/* 500MHz */
+#define  PCI_HT_LFCAP_600	0x0010	/* 600MHz */
+#define  PCI_HT_LFCAP_800	0x0020	/* 800MHz */
+#define  PCI_HT_LFCAP_1000	0x0040	/* 1.0GHz */
+#define  PCI_HT_LFCAP_1200	0x0080	/* 1.2GHz */
+#define  PCI_HT_LFCAP_1400	0x0100	/* 1.4GHz */
+#define  PCI_HT_LFCAP_1600	0x0200	/* 1.6GHz */
+#define  PCI_HT_LFCAP_VEND	0x8000	/* Vendor-Specific */
+
+					/* Feature Register */
+#define  PCI_HT_FTR_ISOCFC	0x0001	/* Isochronous Flow Control Mode */
+#define  PCI_HT_FTR_LDTSTOP	0x0002	/* LDTSTOP# Supported */
+#define  PCI_HT_FTR_CRCTM	0x0004	/* CRC Test Mode */
+#define  PCI_HT_FTR_ECTLT	0x0008	/* Extended CTL Time Required */
+#define  PCI_HT_FTR_64BA	0x0010	/* 64-bit Addressing */
+#define  PCI_HT_FTR_UIDRD	0x0020	/* UnitID Reorder Disable */
+
+					/* Error Handling Register */
+#define  PCI_HT_EH_PFLE		0x0001	/* Protocol Error Flood Enable */
+#define  PCI_HT_EH_OFLE		0x0002	/* Overflow Error Flood Enable */
+#define  PCI_HT_EH_PFE		0x0004	/* Protocol Error Fatal Enable */
+#define  PCI_HT_EH_OFE		0x0008	/* Overflow Error Fatal Enable */
+#define  PCI_HT_EH_EOCFE	0x0010	/* End of Chain Error Fatal Enable */
+#define  PCI_HT_EH_RFE		0x0020	/* Response Error Fatal Enable */
+#define  PCI_HT_EH_CRCFE	0x0040	/* CRC Error Fatal Enable */
+#define  PCI_HT_EH_SERRFE	0x0080	/* System Error Fatal Enable (B */
+#define  PCI_HT_EH_CF		0x0100	/* Chain Fail */
+#define  PCI_HT_EH_RE		0x0200	/* Response Error */
+#define  PCI_HT_EH_PNFE		0x0400	/* Protocol Error Nonfatal Enable */
+#define  PCI_HT_EH_ONFE		0x0800	/* Overflow Error Nonfatal Enable */
+#define  PCI_HT_EH_EOCNFE	0x1000	/* End of Chain Error Nonfatal Enable */
+#define  PCI_HT_EH_RNFE		0x2000	/* Response Error Nonfatal Enable */
+#define  PCI_HT_EH_CRCNFE	0x4000	/* CRC Error Nonfatal Enable */
+#define  PCI_HT_EH_SERRNFE	0x8000	/* System Error Nonfatal Enable */
+
+/* HyperTransport: Slave or Primary Interface */
+#define PCI_HT_PRI_CMD		2	/* Command Register */
+#define  PCI_HT_PRI_CMD_BUID	0x001f	/* Base UnitID */
+#define  PCI_HT_PRI_CMD_UC	0x03e0	/* Unit Count */
+#define  PCI_HT_PRI_CMD_MH	0x0400	/* Master Host */
+#define  PCI_HT_PRI_CMD_DD	0x0800	/* Default Direction */
+#define  PCI_HT_PRI_CMD_DUL	0x1000	/* Drop on Uninitialized Link */
+
+#define PCI_HT_PRI_LCTR0	4	/* Link Control 0 Register */
+#define PCI_HT_PRI_LCNF0	6	/* Link Config 0 Register */
+#define PCI_HT_PRI_LCTR1	8	/* Link Control 1 Register */
+#define PCI_HT_PRI_LCNF1	10	/* Link Config 1 Register */
+#define PCI_HT_PRI_RID		12	/* Revision ID Register */
+#define PCI_HT_PRI_LFRER0	13	/* Link Frequency/Error 0 Register */
+#define PCI_HT_PRI_LFCAP0	14	/* Link Frequency Capability 0 Register */
+#define PCI_HT_PRI_FTR		16	/* Feature Register */
+#define PCI_HT_PRI_LFRER1	17	/* Link Frequency/Error 1 Register */
+#define PCI_HT_PRI_LFCAP1	18	/* Link Frequency Capability 1 Register */
+#define PCI_HT_PRI_ES		20	/* Enumeration Scratchpad Register */
+#define PCI_HT_PRI_EH		22	/* Error Handling Register */
+#define PCI_HT_PRI_MBU		24	/* Memory Base Upper Register */
+#define PCI_HT_PRI_MLU		25	/* Memory Limit Upper Register */
+#define PCI_HT_PRI_BN		26	/* Bus Number Register */
+#define PCI_HT_PRI_SIZEOF	28
+
+/* HyperTransport: Host or Secondary Interface */
+#define PCI_HT_SEC_CMD		2	/* Command Register */
+#define  PCI_HT_SEC_CMD_WR	0x0001	/* Warm Reset */
+#define  PCI_HT_SEC_CMD_DE	0x0002	/* Double-Ended */
+#define  PCI_HT_SEC_CMD_DN	0x0076	/* Device Number */
+#define  PCI_HT_SEC_CMD_CS	0x0080	/* Chain Side */
+#define  PCI_HT_SEC_CMD_HH	0x0100	/* Host Hide */
+#define  PCI_HT_SEC_CMD_AS	0x0400	/* Act as Slave */
+#define  PCI_HT_SEC_CMD_HIECE	0x0800	/* Host Inbound End of Chain Error */
+#define  PCI_HT_SEC_CMD_DUL	0x1000	/* Drop on Uninitialized Link */
+
+#define PCI_HT_SEC_LCTR		4	/* Link Control Register */
+#define PCI_HT_SEC_LCNF		6	/* Link Config Register */
+#define PCI_HT_SEC_RID		8	/* Revision ID Register */
+#define PCI_HT_SEC_LFRER	9	/* Link Frequency/Error Register */
+#define PCI_HT_SEC_LFCAP	10	/* Link Frequency Capability Register */
+#define PCI_HT_SEC_FTR		12	/* Feature Register */
+#define  PCI_HT_SEC_FTR_EXTRS	0x0100	/* Extended Register Set */
+#define  PCI_HT_SEC_FTR_UCNFE	0x0200	/* Upstream Configuration Enable */
+#define PCI_HT_SEC_ES		16	/* Enumeration Scratchpad Register */
+#define PCI_HT_SEC_EH		18	/* Error Handling Register */
+#define PCI_HT_SEC_MBU		20	/* Memory Base Upper Register */
+#define PCI_HT_SEC_MLU		21	/* Memory Limit Upper Register */
+#define PCI_HT_SEC_SIZEOF	24
+
+/* HyperTransport: Switch */
+#define PCI_HT_SW_CMD		2	/* Switch Command Register */
+#define  PCI_HT_SW_CMD_VIBERR	0x0080	/* VIB Error */
+#define  PCI_HT_SW_CMD_VIBFL	0x0100	/* VIB Flood */
+#define  PCI_HT_SW_CMD_VIBFT	0x0200	/* VIB Fatal */
+#define  PCI_HT_SW_CMD_VIBNFT	0x0400	/* VIB Nonfatal */
+#define PCI_HT_SW_PMASK		4	/* Partition Mask Register */
+#define PCI_HT_SW_SWINF		8	/* Switch Info Register */
+#define  PCI_HT_SW_SWINF_DP	0x0000001f	/* Default Port */
+#define  PCI_HT_SW_SWINF_EN	0x00000020	/* Enable Decode */
+#define  PCI_HT_SW_SWINF_CR	0x00000040	/* Cold Reset */
+#define  PCI_HT_SW_SWINF_PCIDX	0x00000f00	/* Performance Counter Index */
+#define  PCI_HT_SW_SWINF_BLRIDX	0x0003f000	/* Base/Limit Range Index */
+#define  PCI_HT_SW_SWINF_SBIDX	0x00002000	/* Secondary Base Range Index */
+#define  PCI_HT_SW_SWINF_HP	0x00040000	/* Hot Plug */
+#define  PCI_HT_SW_SWINF_HIDE	0x00080000	/* Hide Port */
+#define PCI_HT_SW_PCD		12	/* Performance Counter Data Register */
+#define PCI_HT_SW_BLRD		16	/* Base/Limit Range Data Register */
+#define PCI_HT_SW_SBD		20	/* Secondary Base Data Register */
+#define PCI_HT_SW_SIZEOF	24
+
+					/* Counter indices */
+#define  PCI_HT_SW_PC_PCR	0x0	/* Posted Command Receive */
+#define  PCI_HT_SW_PC_NPCR	0x1	/* Nonposted Command Receive */
+#define  PCI_HT_SW_PC_RCR	0x2	/* Response Command Receive */
+#define  PCI_HT_SW_PC_PDWR	0x3	/* Posted DW Receive */
+#define  PCI_HT_SW_PC_NPDWR	0x4	/* Nonposted DW Receive */
+#define  PCI_HT_SW_PC_RDWR	0x5	/* Response DW Receive */
+#define  PCI_HT_SW_PC_PCT	0x6	/* Posted Command Transmit */
+#define  PCI_HT_SW_PC_NPCT	0x7	/* Nonposted Command Transmit */
+#define  PCI_HT_SW_PC_RCT	0x8	/* Response Command Transmit */
+#define  PCI_HT_SW_PC_PDWT	0x9	/* Posted DW Transmit */
+#define  PCI_HT_SW_PC_NPDWT	0xa	/* Nonposted DW Transmit */
+#define  PCI_HT_SW_PC_RDWT	0xb	/* Response DW Transmit */
+
+					/* Base/Limit Range indices */
+#define  PCI_HT_SW_BLR_BASE0_LO	0x0	/* Base 0[31:1], Enable */
+#define  PCI_HT_SW_BLR_BASE0_HI	0x1	/* Base 0 Upper */
+#define  PCI_HT_SW_BLR_LIM0_LO	0x2	/* Limit 0 Lower */
+#define  PCI_HT_SW_BLR_LIM0_HI	0x3	/* Limit 0 Upper */
+
+					/* Secondary Base indices */
+#define  PCI_HT_SW_SB_LO	0x0	/* Secondary Base[31:1], Enable */
+#define  PCI_HT_SW_S0_HI	0x1	/* Secondary Base Upper */
+
+/* HyperTransport: Interrupt Discovery and Configuration */
+#define PCI_HT_IDC_IDX		2	/* Index Register */
+#define PCI_HT_IDC_DATA		4	/* Data Register */
+#define PCI_HT_IDC_SIZEOF	8
+
+					/* Register indices */
+#define  PCI_HT_IDC_IDX_LINT	0x01	/* Last Interrupt Register */
+#define   PCI_HT_IDC_LINT	0x00ff0000	/* Last interrupt definition */
+#define  PCI_HT_IDC_IDX_IDR	0x10	/* Interrupt Definition Registers */
+					/* Low part (at index) */
+#define   PCI_HT_IDC_IDR_MASK	0x10000001	/* Mask */
+#define   PCI_HT_IDC_IDR_POL	0x10000002	/* Polarity */
+#define   PCI_HT_IDC_IDR_II_2	0x1000001c	/* IntrInfo[4:2]: Message Type */
+#define   PCI_HT_IDC_IDR_II_5	0x10000020	/* IntrInfo[5]: Request EOI */
+#define   PCI_HT_IDC_IDR_II_6	0x00ffffc0	/* IntrInfo[23:6] */
+#define   PCI_HT_IDC_IDR_II_24	0xff000000	/* IntrInfo[31:24] */
+					/* High part (at index + 1) */
+#define   PCI_HT_IDC_IDR_II_32	0x00ffffff	/* IntrInfo[55:32] */
+#define   PCI_HT_IDC_IDR_PASSPW	0x40000000	/* PassPW setting for messages */
+#define   PCI_HT_IDC_IDR_WEOI	0x80000000	/* Waiting for EOI */
+
+/* HyperTransport: Revision ID */
+#define PCI_HT_RID_RID		2	/* Revision Register */
+#define PCI_HT_RID_SIZEOF	4
+
+/* HyperTransport: UnitID Clumping */
+#define PCI_HT_UIDC_CS		4	/* Clumping Support Register */
+#define PCI_HT_UIDC_CE		8	/* Clumping Enable Register */
+#define PCI_HT_UIDC_SIZEOF	12
+
+/* HyperTransport: Extended Configuration Space Access */
+#define PCI_HT_ECSA_ADDR	4	/* Configuration Address Register */
+#define  PCI_HT_ECSA_ADDR_REG	0x00000ffc	/* Register */
+#define  PCI_HT_ECSA_ADDR_FUN	0x00007000	/* Function */
+#define  PCI_HT_ECSA_ADDR_DEV	0x000f1000	/* Device */
+#define  PCI_HT_ECSA_ADDR_BUS	0x0ff00000	/* Bus Number */
+#define  PCI_HT_ECSA_ADDR_TYPE	0x10000000	/* Access Type */
+#define PCI_HT_ECSA_DATA	8	/* Configuration Data Register */
+#define PCI_HT_ECSA_SIZEOF	12
+
+/* HyperTransport: Address Mapping */
+#define PCI_HT_AM_CMD		2	/* Command Register */
+#define  PCI_HT_AM_CMD_NDMA	0x000f	/* Number of DMA Mappings */
+#define  PCI_HT_AM_CMD_IOSIZ	0x01f0	/* I/O Size */
+#define  PCI_HT_AM_CMD_MT	0x0600	/* Map Type */
+#define  PCI_HT_AM_CMD_MT_40B	0x0000	/* 40-bit */
+#define  PCI_HT_AM_CMD_MT_64B	0x0200	/* 64-bit */
+
+					/* Window Control Register bits */
+#define  PCI_HT_AM_SBW_CTR_COMP	0x1	/* Compat */
+#define  PCI_HT_AM_SBW_CTR_NCOH	0x2	/* NonCoherent */
+#define  PCI_HT_AM_SBW_CTR_ISOC	0x4	/* Isochronous */
+#define  PCI_HT_AM_SBW_CTR_EN	0x8	/* Enable */
+
+/* HyperTransport: 40-bit Address Mapping */
+#define PCI_HT_AM40_SBNPW	4	/* Secondary Bus Non-Prefetchable Window Register */
+#define  PCI_HT_AM40_SBW_BASE	0x000fffff	/* Window Base */
+#define  PCI_HT_AM40_SBW_CTR	0xf0000000	/* Window Control */
+#define PCI_HT_AM40_SBPW	8	/* Secondary Bus Prefetchable Window Register */
+#define PCI_HT_AM40_DMA_PBASE0	12	/* DMA Window Primary Base 0 Register */
+#define PCI_HT_AM40_DMA_CTR0	15	/* DMA Window Control 0 Register */
+#define  PCI_HT_AM40_DMA_CTR_CTR 0xf0	/* Window Control */
+#define PCI_HT_AM40_DMA_SLIM0	16	/* DMA Window Secondary Limit 0 Register */
+#define PCI_HT_AM40_DMA_SBASE0	18	/* DMA Window Secondary Base 0 Register */
+#define PCI_HT_AM40_SIZEOF	12	/* size is variable: 12 + 8 * NDMA */
+
+/* HyperTransport: 64-bit Address Mapping */
+#define PCI_HT_AM64_IDX		4	/* Index Register */
+#define PCI_HT_AM64_DATA_LO	8	/* Data Lower Register */
+#define PCI_HT_AM64_DATA_HI	12	/* Data Upper Register */
+#define PCI_HT_AM64_SIZEOF	16
+
+					/* Register indices */
+#define  PCI_HT_AM64_IDX_SBNPW	0x00	/* Secondary Bus Non-Prefetchable Window Register */
+#define   PCI_HT_AM64_W_BASE_LO	0xfff00000	/* Window Base Lower */
+#define   PCI_HT_AM64_W_CTR	0x0000000f	/* Window Control */
+#define  PCI_HT_AM64_IDX_SBPW	0x01	/* Secondary Bus Prefetchable Window Register */
+#define   PCI_HT_AM64_IDX_PBNPW	0x02	/* Primary Bus Non-Prefetchable Window Register */
+#define   PCI_HT_AM64_IDX_DMAPB0 0x04	/* DMA Window Primary Base 0 Register */
+#define   PCI_HT_AM64_IDX_DMASB0 0x05	/* DMA Window Secondary Base 0 Register */
+#define   PCI_HT_AM64_IDX_DMASL0 0x06	/* DMA Window Secondary Limit 0 Register */
+
+/* HyperTransport: MSI Mapping */
+#define PCI_HT_MSIM_CMD		2	/* Command Register */
+#define  PCI_HT_MSIM_CMD_EN	0x0001	/* Mapping Active */
+#define  PCI_HT_MSIM_CMD_FIXD	0x0002	/* MSI Mapping Address Fixed */
+#define PCI_HT_MSIM_ADDR_LO	4	/* MSI Mapping Address Lower Register */
+#define PCI_HT_MSIM_ADDR_HI	8	/* MSI Mapping Address Upper Register */
+#define PCI_HT_MSIM_SIZEOF	12
+
+/* HyperTransport: DirectRoute */
+#define PCI_HT_DR_CMD		2	/* Command Register */
+#define  PCI_HT_DR_CMD_NDRS	0x000f	/* Number of DirectRoute Spaces */
+#define  PCI_HT_DR_CMD_IDX	0x01f0	/* Index */
+#define PCI_HT_DR_EN		4	/* Enable Vector Register */
+#define PCI_HT_DR_DATA		8	/* Data Register */
+#define PCI_HT_DR_SIZEOF	12
+
+					/* Register indices */
+#define  PCI_HT_DR_IDX_BASE_LO	0x00	/* DirectRoute Base Lower Register */
+#define   PCI_HT_DR_OTNRD	0x00000001	/* Opposite to Normal Request Direction */
+#define   PCI_HT_DR_BL_LO	0xffffff00	/* Base/Limit Lower */
+#define  PCI_HT_DR_IDX_BASE_HI	0x01	/* DirectRoute Base Upper Register */
+#define  PCI_HT_DR_IDX_LIMIT_LO	0x02	/* DirectRoute Limit Lower Register */
+#define  PCI_HT_DR_IDX_LIMIT_HI	0x03	/* DirectRoute Limit Upper Register */
+
+/* HyperTransport: VCSet */
+#define PCI_HT_VCS_SUP		4	/* VCSets Supported Register */
+#define PCI_HT_VCS_L1EN		5	/* Link 1 VCSets Enabled Register */
+#define PCI_HT_VCS_L0EN		6	/* Link 0 VCSets Enabled Register */
+#define PCI_HT_VCS_SBD		8	/* Stream Bucket Depth Register */
+#define PCI_HT_VCS_SINT		9	/* Stream Interval Register */
+#define PCI_HT_VCS_SSUP		10	/* Number of Streaming VCs Supported Register */
+#define  PCI_HT_VCS_SSUP_0	0x00	/* Streaming VC 0 */
+#define  PCI_HT_VCS_SSUP_3	0x01	/* Streaming VCs 0-3 */
+#define  PCI_HT_VCS_SSUP_15	0x02	/* Streaming VCs 0-15 */
+#define PCI_HT_VCS_NFCBD	12	/* Non-FC Bucket Depth Register */
+#define PCI_HT_VCS_NFCINT	13	/* Non-FC Bucket Interval Register */
+#define PCI_HT_VCS_SIZEOF	16
+
+/* HyperTransport: Retry Mode */
+#define PCI_HT_RM_CTR0		4	/* Control 0 Register */
+#define  PCI_HT_RM_CTR_LRETEN	0x01	/* Link Retry Enable */
+#define  PCI_HT_RM_CTR_FSER	0x02	/* Force Single Error */
+#define  PCI_HT_RM_CTR_ROLNEN	0x04	/* Rollover Nonfatal Enable */
+#define  PCI_HT_RM_CTR_FSS	0x08	/* Force Single Stomp */
+#define  PCI_HT_RM_CTR_RETNEN	0x10	/* Retry Nonfatal Enable */
+#define  PCI_HT_RM_CTR_RETFEN	0x20	/* Retry Fatal Enable */
+#define  PCI_HT_RM_CTR_AA	0xc0	/* Allowed Attempts */
+#define PCI_HT_RM_STS0		5	/* Status 0 Register */
+#define  PCI_HT_RM_STS_RETSNT	0x01	/* Retry Sent */
+#define  PCI_HT_RM_STS_CNTROL	0x02	/* Count Rollover */
+#define  PCI_HT_RM_STS_SRCV	0x04	/* Stomp Received */
+#define PCI_HT_RM_CTR1		6	/* Control 1 Register */
+#define PCI_HT_RM_STS1		7	/* Status 1 Register */
+#define PCI_HT_RM_CNT0		8	/* Retry Count 0 Register */
+#define PCI_HT_RM_CNT1		10	/* Retry Count 1 Register */
+#define PCI_HT_RM_SIZEOF	12
+
+/* PCI Express */
+#define PCI_EXP_FLAGS		0x2	/* Capabilities register */
+#define PCI_EXP_FLAGS_VERS	0x000f	/* Capability version */
+#define PCI_EXP_FLAGS_TYPE	0x00f0	/* Device/Port type */
+#define  PCI_EXP_TYPE_ENDPOINT	0x0	/* Express Endpoint */
+#define  PCI_EXP_TYPE_LEG_END	0x1	/* Legacy Endpoint */
+#define  PCI_EXP_TYPE_ROOT_PORT 0x4	/* Root Port */
+#define  PCI_EXP_TYPE_UPSTREAM	0x5	/* Upstream Port */
+#define  PCI_EXP_TYPE_DOWNSTREAM 0x6	/* Downstream Port */
+#define  PCI_EXP_TYPE_PCI_BRIDGE 0x7	/* PCI/PCI-X Bridge */
+#define PCI_EXP_FLAGS_SLOT	0x0100	/* Slot implemented */
+#define PCI_EXP_FLAGS_IRQ	0x3e00	/* Interrupt message number */
+#define PCI_EXP_DEVCAP		0x4	/* Device capabilities */
+#define  PCI_EXP_DEVCAP_PAYLOAD	0x07	/* Max_Payload_Size */
+#define  PCI_EXP_DEVCAP_PHANTOM	0x18	/* Phantom functions */
+#define  PCI_EXP_DEVCAP_EXT_TAG	0x20	/* Extended tags */
+#define  PCI_EXP_DEVCAP_L0S	0x1c0	/* L0s Acceptable Latency */
+#define  PCI_EXP_DEVCAP_L1	0xe00	/* L1 Acceptable Latency */
+#define  PCI_EXP_DEVCAP_ATN_BUT	0x1000	/* Attention Button Present */
+#define  PCI_EXP_DEVCAP_ATN_IND	0x2000	/* Attention Indicator Present */
+#define  PCI_EXP_DEVCAP_PWR_IND	0x4000	/* Power Indicator Present */
+#define  PCI_EXP_DEVCAP_PWR_VAL	0x3fc0000	/* Slot Power Limit Value */
+#define  PCI_EXP_DEVCAP_PWR_SCL	0xc000000	/* Slot Power Limit Scale */
+#define PCI_EXP_DEVCTL		0x8	/* Device Control */
+#define  PCI_EXP_DEVCTL_CERE	0x0001	/* Correctable Error Reporting En. */
+#define  PCI_EXP_DEVCTL_NFERE	0x0002	/* Non-Fatal Error Reporting Enable */
+#define  PCI_EXP_DEVCTL_FERE	0x0004	/* Fatal Error Reporting Enable */
+#define  PCI_EXP_DEVCTL_URRE	0x0008	/* Unsupported Request Reporting En. */
+#define  PCI_EXP_DEVCTL_RELAXED	0x0010	/* Enable Relaxed Ordering */
+#define  PCI_EXP_DEVCTL_PAYLOAD	0x00e0	/* Max_Payload_Size */
+#define  PCI_EXP_DEVCTL_EXT_TAG	0x0100	/* Extended Tag Field Enable */
+#define  PCI_EXP_DEVCTL_PHANTOM	0x0200	/* Phantom Functions Enable */
+#define  PCI_EXP_DEVCTL_AUX_PME	0x0400	/* Auxiliary Power PM Enable */
+#define  PCI_EXP_DEVCTL_NOSNOOP	0x0800	/* Enable No Snoop */
+#define  PCI_EXP_DEVCTL_READRQ	0x7000	/* Max_Read_Request_Size */
+#define PCI_EXP_DEVSTA		0xa	/* Device Status */
+#define  PCI_EXP_DEVSTA_CED	0x01	/* Correctable Error Detected */
+#define  PCI_EXP_DEVSTA_NFED	0x02	/* Non-Fatal Error Detected */
+#define  PCI_EXP_DEVSTA_FED	0x04	/* Fatal Error Detected */
+#define  PCI_EXP_DEVSTA_URD	0x08	/* Unsupported Request Detected */
+#define  PCI_EXP_DEVSTA_AUXPD	0x10	/* AUX Power Detected */
+#define  PCI_EXP_DEVSTA_TRPND	0x20	/* Transactions Pending */
+#define PCI_EXP_LNKCAP		0xc	/* Link Capabilities */
+#define  PCI_EXP_LNKCAP_SPEED	0x0000f	/* Maximum Link Speed */
+#define  PCI_EXP_LNKCAP_WIDTH	0x003f0	/* Maximum Link Width */
+#define  PCI_EXP_LNKCAP_ASPM	0x00c00	/* Active State Power Management */
+#define  PCI_EXP_LNKCAP_L0S	0x07000	/* L0s Acceptable Latency */
+#define  PCI_EXP_LNKCAP_L1	0x38000	/* L1 Acceptable Latency */
+#define  PCI_EXP_LNKCAP_PORT	0xff000000	/* Port Number */
+#define PCI_EXP_LNKCTL		0x10	/* Link Control */
+#define  PCI_EXP_LNKCTL_ASPM	0x0003	/* ASPM Control */
+#define  PCI_EXP_LNKCTL_RCB	0x0008	/* Read Completion Boundary */
+#define  PCI_EXP_LNKCTL_DISABLE	0x0010	/* Link Disable */
+#define  PCI_EXP_LNKCTL_RETRAIN	0x0020	/* Retrain Link */
+#define  PCI_EXP_LNKCTL_CLOCK	0x0040	/* Common Clock Configuration */
+#define  PCI_EXP_LNKCTL_XSYNCH	0x0080	/* Extended Synch */
+#define PCI_EXP_LNKSTA		0x12	/* Link Status */
+#define  PCI_EXP_LNKSTA_SPEED	0x000f	/* Negotiated Link Speed */
+#define  PCI_EXP_LNKSTA_WIDTH	0x03f0	/* Negotiated Link Width */
+#define  PCI_EXP_LNKSTA_TR_ERR	0x0400	/* Training Error */
+#define  PCI_EXP_LNKSTA_TRAIN	0x0800	/* Link Training */
+#define  PCI_EXP_LNKSTA_SL_CLK	0x1000	/* Slot Clock Configuration */
+#define PCI_EXP_SLTCAP		0x14	/* Slot Capabilities */
+#define  PCI_EXP_SLTCAP_ATNB	0x0001	/* Attention Button Present */
+#define  PCI_EXP_SLTCAP_PWRC	0x0002	/* Power Controller Present */
+#define  PCI_EXP_SLTCAP_MRL	0x0004	/* MRL Sensor Present */
+#define  PCI_EXP_SLTCAP_ATNI	0x0008	/* Attention Indicator Present */
+#define  PCI_EXP_SLTCAP_PWRI	0x0010	/* Power Indicator Present */
+#define  PCI_EXP_SLTCAP_HPS	0x0020	/* Hot-Plug Surprise */
+#define  PCI_EXP_SLTCAP_HPC	0x0040	/* Hot-Plug Capable */
+#define  PCI_EXP_SLTCAP_PWR_VAL	0x00007f80	/* Slot Power Limit Value */
+#define  PCI_EXP_SLTCAP_PWR_SCL	0x00018000	/* Slot Power Limit Scale */
+#define  PCI_EXP_SLTCAP_PSN	0xfff80000	/* Physical Slot Number */
+#define PCI_EXP_SLTCTL		0x18	/* Slot Control */
+#define  PCI_EXP_SLTCTL_ATNB	0x0001	/* Attention Button Pressed Enable */
+#define  PCI_EXP_SLTCTL_PWRF	0x0002	/* Power Fault Detected Enable */
+#define  PCI_EXP_SLTCTL_MRLS	0x0004	/* MRL Sensor Changed Enable */
+#define  PCI_EXP_SLTCTL_PRSD	0x0008	/* Presence Detect Changed Enable */
+#define  PCI_EXP_SLTCTL_CMDC	0x0010	/* Command Completed Interrupt Enable */
+#define  PCI_EXP_SLTCTL_HPIE	0x0020	/* Hot-Plug Interrupt Enable */
+#define  PCI_EXP_SLTCTL_ATNI	0x00C0	/* Attention Indicator Control */
+#define  PCI_EXP_SLTCTL_PWRI	0x0300	/* Power Indicator Control */
+#define  PCI_EXP_SLTCTL_PWRC	0x0400	/* Power Controller Control */
+#define PCI_EXP_SLTSTA		0x1a	/* Slot Status */
+#define PCI_EXP_RTCTL		0x1c	/* Root Control */
+#define  PCI_EXP_RTCTL_SECEE	0x1	/* System Error on Correctable Error */
+#define  PCI_EXP_RTCTL_SENFEE	0x1	/* System Error on Non-Fatal Error */
+#define  PCI_EXP_RTCTL_SEFEE	0x1	/* System Error on Fatal Error */
+#define  PCI_EXP_RTCTL_PMEIE	0x1	/* PME Interrupt Enable */
+#define PCI_EXP_RTSTA		0x20	/* Root Status */
+
+/* MSI-X */
+#define  PCI_MSIX_ENABLE	0x8000
+#define  PCI_MSIX_MASK		0x4000
+#define  PCI_MSIX_TABSIZE	0x03ff
+#define PCI_MSIX_TABLE		4
+#define PCI_MSIX_PBA		8
+#define  PCI_MSIX_BIR		0x7
+
+/* Advanced Error Reporting */
+#define PCI_ERR_UNCOR_STATUS	4	/* Uncorrectable Error Status */
+#define  PCI_ERR_UNC_TRAIN	0x00000001	/* Training */
+#define  PCI_ERR_UNC_DLP	0x00000010	/* Data Link Protocol */
+#define  PCI_ERR_UNC_POISON_TLP	0x00001000	/* Poisoned TLP */
+#define  PCI_ERR_UNC_FCP	0x00002000	/* Flow Control Protocol */
+#define  PCI_ERR_UNC_COMP_TIME	0x00004000	/* Completion Timeout */
+#define  PCI_ERR_UNC_COMP_ABORT	0x00008000	/* Completer Abort */
+#define  PCI_ERR_UNC_UNX_COMP	0x00010000	/* Unexpected Completion */
+#define  PCI_ERR_UNC_RX_OVER	0x00020000	/* Receiver Overflow */
+#define  PCI_ERR_UNC_MALF_TLP	0x00040000	/* Malformed TLP */
+#define  PCI_ERR_UNC_ECRC	0x00080000	/* ECRC Error Status */
+#define  PCI_ERR_UNC_UNSUP	0x00100000	/* Unsupported Request */
+#define PCI_ERR_UNCOR_MASK	8	/* Uncorrectable Error Mask */
+	/* Same bits as above */
+#define PCI_ERR_UNCOR_SEVER	12	/* Uncorrectable Error Severity */
+	/* Same bits as above */
+#define PCI_ERR_COR_STATUS	16	/* Correctable Error Status */
+#define  PCI_ERR_COR_RCVR	0x00000001	/* Receiver Error Status */
+#define  PCI_ERR_COR_BAD_TLP	0x00000040	/* Bad TLP Status */
+#define  PCI_ERR_COR_BAD_DLLP	0x00000080	/* Bad DLLP Status */
+#define  PCI_ERR_COR_REP_ROLL	0x00000100	/* REPLAY_NUM Rollover */
+#define  PCI_ERR_COR_REP_TIMER	0x00001000	/* Replay Timer Timeout */
+#define PCI_ERR_COR_MASK	20	/* Correctable Error Mask */
+	/* Same bits as above */
+#define PCI_ERR_CAP		24	/* Advanced Error Capabilities */
+#define  PCI_ERR_CAP_FEP(x)	((x) & 31)	/* First Error Pointer */
+#define  PCI_ERR_CAP_ECRC_GENC	0x00000020	/* ECRC Generation Capable */
+#define  PCI_ERR_CAP_ECRC_GENE	0x00000040	/* ECRC Generation Enable */
+#define  PCI_ERR_CAP_ECRC_CHKC	0x00000080	/* ECRC Check Capable */
+#define  PCI_ERR_CAP_ECRC_CHKE	0x00000100	/* ECRC Check Enable */
+#define PCI_ERR_HEADER_LOG	28	/* Header Log Register (16 bytes) */
+#define PCI_ERR_ROOT_COMMAND	44	/* Root Error Command */
+#define PCI_ERR_ROOT_STATUS	48
+#define PCI_ERR_ROOT_COR_SRC	52
+#define PCI_ERR_ROOT_SRC	54
+
+/* Virtual Channel */
+#define PCI_VC_PORT_REG1	4
+#define PCI_VC_PORT_REG2	8
+#define PCI_VC_PORT_CTRL	12
+#define PCI_VC_PORT_STATUS	14
+#define PCI_VC_RES_CAP		16
+#define PCI_VC_RES_CTRL		20
+#define PCI_VC_RES_STATUS	26
+
+/* Power Budgeting */
+#define PCI_PWR_DSR		4	/* Data Select Register */
+#define PCI_PWR_DATA		8	/* Data Register */
+#define  PCI_PWR_DATA_BASE(x)	((x) & 0xff)	/* Base Power */
+#define  PCI_PWR_DATA_SCALE(x)	(((x) >> 8) & 3)	/* Data Scale */
+#define  PCI_PWR_DATA_PM_SUB(x)	(((x) >> 10) & 7)	/* PM Sub State */
+#define  PCI_PWR_DATA_PM_STATE(x) (((x) >> 13) & 3)	/* PM State */
+#define  PCI_PWR_DATA_TYPE(x)	(((x) >> 15) & 7)	/* Type */
+#define  PCI_PWR_DATA_RAIL(x)	(((x) >> 18) & 7)	/* Power Rail */
+#define PCI_PWR_CAP		12	/* Capability */
+#define  PCI_PWR_CAP_BUDGET(x)	((x) & 1)	/* Included in system budget */
+
+/*
+ * The PCI interface treats multi-function devices as independent
+ * devices.  The slot/function address of each device is encoded
+ * in a single byte as follows:
+ *
+ *	7:3 = slot
+ *	2:0 = function
+ */
+#define PCI_DEVFN(slot,func)	((((slot) & 0x1f) << 3) | ((func) & 0x07))
+#define PCI_SLOT(devfn)		(((devfn) >> 3) & 0x1f)
+#define PCI_FUNC(devfn)		((devfn) & 0x07)
+
+/* Device classes and subclasses */
+
+#define PCI_CLASS_NOT_DEFINED		0x0000
+#define PCI_CLASS_NOT_DEFINED_VGA	0x0001
+
+#define PCI_BASE_CLASS_STORAGE		0x01
+#define PCI_CLASS_STORAGE_SCSI		0x0100
+#define PCI_CLASS_STORAGE_IDE		0x0101
+#define PCI_CLASS_STORAGE_FLOPPY	0x0102
+#define PCI_CLASS_STORAGE_IPI		0x0103
+#define PCI_CLASS_STORAGE_RAID		0x0104
+#define PCI_CLASS_STORAGE_OTHER		0x0180
+
+#define PCI_BASE_CLASS_NETWORK		0x02
+#define PCI_CLASS_NETWORK_ETHERNET	0x0200
+#define PCI_CLASS_NETWORK_TOKEN_RING	0x0201
+#define PCI_CLASS_NETWORK_FDDI		0x0202
+#define PCI_CLASS_NETWORK_ATM		0x0203
+#define PCI_CLASS_NETWORK_OTHER		0x0280
+
+#define PCI_BASE_CLASS_DISPLAY		0x03
+#define PCI_CLASS_DISPLAY_VGA		0x0300
+#define PCI_CLASS_DISPLAY_XGA		0x0301
+#define PCI_CLASS_DISPLAY_OTHER		0x0380
+
+#define PCI_BASE_CLASS_MULTIMEDIA	0x04
+#define PCI_CLASS_MULTIMEDIA_VIDEO	0x0400
+#define PCI_CLASS_MULTIMEDIA_AUDIO	0x0401
+#define PCI_CLASS_MULTIMEDIA_OTHER	0x0480
+
+#define PCI_BASE_CLASS_MEMORY		0x05
+#define  PCI_CLASS_MEMORY_RAM		0x0500
+#define  PCI_CLASS_MEMORY_FLASH		0x0501
+#define  PCI_CLASS_MEMORY_OTHER		0x0580
+
+#define PCI_BASE_CLASS_BRIDGE		0x06
+#define  PCI_CLASS_BRIDGE_HOST		0x0600
+#define  PCI_CLASS_BRIDGE_ISA		0x0601
+#define  PCI_CLASS_BRIDGE_EISA		0x0602
+#define  PCI_CLASS_BRIDGE_MC		0x0603
+#define  PCI_CLASS_BRIDGE_PCI		0x0604
+#define  PCI_CLASS_BRIDGE_PCMCIA	0x0605
+#define  PCI_CLASS_BRIDGE_NUBUS		0x0606
+#define  PCI_CLASS_BRIDGE_CARDBUS	0x0607
+#define  PCI_CLASS_BRIDGE_OTHER		0x0680
+
+#define PCI_BASE_CLASS_COMMUNICATION	0x07
+#define PCI_CLASS_COMMUNICATION_SERIAL	0x0700
+#define PCI_CLASS_COMMUNICATION_PARALLEL 0x0701
+#define PCI_CLASS_COMMUNICATION_OTHER	0x0780
+
+#define PCI_BASE_CLASS_SYSTEM		0x08
+#define PCI_CLASS_SYSTEM_PIC		0x0800
+#define PCI_CLASS_SYSTEM_DMA		0x0801
+#define PCI_CLASS_SYSTEM_TIMER		0x0802
+#define PCI_CLASS_SYSTEM_RTC		0x0803
+#define PCI_CLASS_SYSTEM_OTHER		0x0880
+
+#define PCI_BASE_CLASS_INPUT		0x09
+#define PCI_CLASS_INPUT_KEYBOARD	0x0900
+#define PCI_CLASS_INPUT_PEN		0x0901
+#define PCI_CLASS_INPUT_MOUSE		0x0902
+#define PCI_CLASS_INPUT_OTHER		0x0980
+
+#define PCI_BASE_CLASS_DOCKING		0x0a
+#define PCI_CLASS_DOCKING_GENERIC	0x0a00
+#define PCI_CLASS_DOCKING_OTHER		0x0a01
+
+#define PCI_BASE_CLASS_PROCESSOR	0x0b
+#define PCI_CLASS_PROCESSOR_386		0x0b00
+#define PCI_CLASS_PROCESSOR_486		0x0b01
+#define PCI_CLASS_PROCESSOR_PENTIUM	0x0b02
+#define PCI_CLASS_PROCESSOR_ALPHA	0x0b10
+#define PCI_CLASS_PROCESSOR_POWERPC	0x0b20
+#define PCI_CLASS_PROCESSOR_CO		0x0b40
+
+#define PCI_BASE_CLASS_SERIAL		0x0c
+#define PCI_CLASS_SERIAL_FIREWIRE	0x0c00
+#define PCI_CLASS_SERIAL_ACCESS		0x0c01
+#define PCI_CLASS_SERIAL_SSA		0x0c02
+#define PCI_CLASS_SERIAL_USB		0x0c03
+#define PCI_CLASS_SERIAL_FIBER		0x0c04
+
+#define PCI_CLASS_OTHERS		0xff
+
+/* Several ID's we need in the library */
+
+#define PCI_VENDOR_ID_INTEL		0x8086
+#define PCI_VENDOR_ID_COMPAQ		0x0e11
Index: uspace/srv/hw/bus/pci/libpci/i386-ports.c
===================================================================
--- uspace/srv/hw/bus/pci/libpci/i386-ports.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/bus/pci/libpci/i386-ports.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,274 @@
+/*
+ *	The PCI Library -- Direct Configuration access via i386 Ports
+ *
+ *	Copyright (c) 1997--2004 Martin Mares <mj@ucw.cz>
+ *
+ *	May 8, 2006 - Modified and ported to HelenOS by Jakub Jermar.
+ *
+ *	Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#include <unistd.h>
+
+#include "internal.h"
+
+static inline void outb(u8 b, u16 port)
+{
+	asm volatile ("outb %0, %1\n" :: "a" (b), "d" (port));
+}
+
+static inline void outw(u16 w, u16 port)
+{
+	asm volatile ("outw %0, %1\n" :: "a" (w), "d" (port));
+}
+
+static inline void outl(u32 l, u16 port)
+{
+	asm volatile ("outl %0, %1\n" :: "a" (l), "d" (port));
+}
+
+static inline u8 inb(u16 port)
+{
+	u8 val;
+
+	asm volatile ("inb %1, %0 \n" : "=a" (val) : "d"(port));
+	return val;
+}
+
+static inline u16 inw(u16 port)
+{
+	u16 val;
+
+	asm volatile ("inw %1, %0 \n" : "=a" (val) : "d"(port));
+	return val;
+}
+
+static inline u32 inl(u16 port)
+{
+	u32 val;
+
+	asm volatile ("inl %1, %0 \n" : "=a" (val) : "d"(port));
+	return val;
+}
+
+static void conf12_init(struct pci_access *a)
+{
+}
+
+static void conf12_cleanup(struct pci_access *a UNUSED)
+{
+}
+
+/*
+ * Before we decide to use direct hardware access mechanisms, we try to do some
+ * trivial checks to ensure it at least _seems_ to be working -- we just test
+ * whether bus 00 contains a host bridge (this is similar to checking
+ * techniques used in XFree86, but ours should be more reliable since we
+ * attempt to make use of direct access hints provided by the PCI BIOS).
+ *
+ * This should be close to trivial, but it isn't, because there are buggy
+ * chipsets (yes, you guessed it, by Intel and Compaq) that have no class ID.
+ */
+
+static int intel_sanity_check(struct pci_access *a, struct pci_methods *m)
+{
+	struct pci_dev d;
+
+	a->debug("...sanity check");
+	d.bus = 0;
+	d.func = 0;
+	for (d.dev = 0; d.dev < 32; d.dev++) {
+		u16 class, vendor;
+		if ((m->read(&d, PCI_CLASS_DEVICE, (byte *) & class,
+			 sizeof(class))
+		    && (class == cpu_to_le16(PCI_CLASS_BRIDGE_HOST)
+			|| class == cpu_to_le16(PCI_CLASS_DISPLAY_VGA)))
+		    || (m->read(&d, PCI_VENDOR_ID, (byte *) & vendor,
+			       sizeof(vendor))
+		    && (vendor == cpu_to_le16(PCI_VENDOR_ID_INTEL)
+			|| vendor == cpu_to_le16(PCI_VENDOR_ID_COMPAQ)))) {
+			a->debug("...outside the Asylum at 0/%02x/0",
+				 d.dev);
+			return 1;
+		}
+	}
+	a->debug("...insane");
+	return 0;
+}
+
+/*
+ *	Configuration type 1
+ */
+
+#define CONFIG_CMD(bus, device_fn, where)   (0x80000000 | (bus << 16) | (device_fn << 8) | (where & ~3))
+
+static int conf1_detect(struct pci_access *a)
+{
+	unsigned int tmp;
+	int res = 0;
+
+	outb(0x01, 0xCFB);
+	tmp = inl(0xCF8);
+	outl(0x80000000, 0xCF8);
+	if (inl(0xCF8) == 0x80000000)
+		res = 1;
+	outl(tmp, 0xCF8);
+	if (res)
+		res = intel_sanity_check(a, &pm_intel_conf1);
+	return res;
+}
+
+static int conf1_read(struct pci_dev *d, int pos, byte * buf, int len)
+{
+	int addr = 0xcfc + (pos & 3);
+
+	if (pos >= 256)
+		return 0;
+
+	outl(0x80000000 | ((d->bus & 0xff) << 16) |
+	     (PCI_DEVFN(d->dev, d->func) << 8) | (pos & ~3), 0xcf8);
+
+	switch (len) {
+	case 1:
+		buf[0] = inb(addr);
+		break;
+	case 2:
+		((u16 *) buf)[0] = cpu_to_le16(inw(addr));
+		break;
+	case 4:
+		((u32 *) buf)[0] = cpu_to_le32(inl(addr));
+		break;
+	default:
+		return pci_generic_block_read(d, pos, buf, len);
+	}
+	return 1;
+}
+
+static int conf1_write(struct pci_dev *d, int pos, byte * buf, int len)
+{
+	int addr = 0xcfc + (pos & 3);
+
+	if (pos >= 256)
+		return 0;
+
+	outl(0x80000000 | ((d->bus & 0xff) << 16) |
+	     (PCI_DEVFN(d->dev, d->func) << 8) | (pos & ~3), 0xcf8);
+
+	switch (len) {
+	case 1:
+		outb(buf[0], addr);
+		break;
+	case 2:
+		outw(le16_to_cpu(((u16 *) buf)[0]), addr);
+		break;
+	case 4:
+		outl(le32_to_cpu(((u32 *) buf)[0]), addr);
+		break;
+	default:
+		return pci_generic_block_write(d, pos, buf, len);
+	}
+	return 1;
+}
+
+/*
+ *	Configuration type 2. Obsolete and brain-damaged, but existing.
+ */
+
+static int conf2_detect(struct pci_access *a)
+{
+	/* This is ugly and tends to produce false positives. Beware. */
+	outb(0x00, 0xCFB);
+	outb(0x00, 0xCF8);
+	outb(0x00, 0xCFA);
+	if (inb(0xCF8) == 0x00 && inb(0xCFA) == 0x00)
+		return intel_sanity_check(a, &pm_intel_conf2);
+	else
+		return 0;
+}
+
+static int conf2_read(struct pci_dev *d, int pos, byte * buf, int len)
+{
+	int addr = 0xc000 | (d->dev << 8) | pos;
+
+	if (pos >= 256)
+		return 0;
+
+	if (d->dev >= 16)
+		/* conf2 supports only 16 devices per bus */
+		return 0;
+	outb((d->func << 1) | 0xf0, 0xcf8);
+	outb(d->bus, 0xcfa);
+	switch (len) {
+	case 1:
+		buf[0] = inb(addr);
+		break;
+	case 2:
+		((u16 *) buf)[0] = cpu_to_le16(inw(addr));
+		break;
+	case 4:
+		((u32 *) buf)[0] = cpu_to_le32(inl(addr));
+		break;
+	default:
+		outb(0, 0xcf8);
+		return pci_generic_block_read(d, pos, buf, len);
+	}
+	outb(0, 0xcf8);
+	return 1;
+}
+
+static int conf2_write(struct pci_dev *d, int pos, byte * buf, int len)
+{
+	int addr = 0xc000 | (d->dev << 8) | pos;
+
+	if (pos >= 256)
+		return 0;
+
+	if (d->dev >= 16)
+		d->access->error("conf2_write: only first 16 devices exist.");
+	outb((d->func << 1) | 0xf0, 0xcf8);
+	outb(d->bus, 0xcfa);
+	switch (len) {
+	case 1:
+		outb(buf[0], addr);
+		break;
+	case 2:
+		outw(le16_to_cpu(*(u16 *) buf), addr);
+		break;
+	case 4:
+		outl(le32_to_cpu(*(u32 *) buf), addr);
+		break;
+	default:
+		outb(0, 0xcf8);
+		return pci_generic_block_write(d, pos, buf, len);
+	}
+	outb(0, 0xcf8);
+	return 1;
+}
+
+struct pci_methods pm_intel_conf1 = {
+	"Intel-conf1",
+	NULL,			/* config */
+	conf1_detect,
+	conf12_init,
+	conf12_cleanup,
+	pci_generic_scan,
+	pci_generic_fill_info,
+	conf1_read,
+	conf1_write,
+	NULL,			/* init_dev */
+	NULL			/* cleanup_dev */
+};
+
+struct pci_methods pm_intel_conf2 = {
+	"Intel-conf2",
+	NULL,			/* config */
+	conf2_detect,
+	conf12_init,
+	conf12_cleanup,
+	pci_generic_scan,
+	pci_generic_fill_info,
+	conf2_read,
+	conf2_write,
+	NULL,			/* init_dev */
+	NULL			/* cleanup_dev */
+};
Index: uspace/srv/hw/bus/pci/libpci/internal.h
===================================================================
--- uspace/srv/hw/bus/pci/libpci/internal.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/bus/pci/libpci/internal.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,43 @@
+/*
+ *	The PCI Library -- Internal Stuff
+ *
+ *	Copyright (c) 1997--2004 Martin Mares <mj@ucw.cz>
+ *
+ *	May 8, 2006 - Modified and ported to HelenOS by Jakub Jermar.
+ *
+ *	Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#include "pci.h"
+#include "sysdep.h"
+
+struct pci_methods {
+	char *name;
+	void (*config) (struct pci_access *);
+	int (*detect) (struct pci_access *);
+	void (*init) (struct pci_access *);
+	void (*cleanup) (struct pci_access *);
+	void (*scan) (struct pci_access *);
+	int (*fill_info) (struct pci_dev *, int flags);
+	int (*read) (struct pci_dev *, int pos, byte * buf, int len);
+	int (*write) (struct pci_dev *, int pos, byte * buf, int len);
+	void (*init_dev) (struct pci_dev *);
+	void (*cleanup_dev) (struct pci_dev *);
+};
+
+void pci_generic_scan_bus(struct pci_access *, byte * busmap, int bus);
+void pci_generic_scan(struct pci_access *);
+int pci_generic_fill_info(struct pci_dev *, int flags);
+int pci_generic_block_read(struct pci_dev *, int pos, byte * buf, int len);
+int pci_generic_block_write(struct pci_dev *, int pos, byte * buf,
+			    int len);
+
+void *pci_malloc(struct pci_access *, int);
+void pci_mfree(void *);
+
+struct pci_dev *pci_alloc_dev(struct pci_access *);
+int pci_link_dev(struct pci_access *, struct pci_dev *);
+
+extern struct pci_methods pm_intel_conf1, pm_intel_conf2, pm_linux_proc,
+    pm_fbsd_device, pm_aix_device, pm_nbsd_libpci, pm_obsd_device,
+    pm_dump, pm_linux_sysfs;
Index: uspace/srv/hw/bus/pci/libpci/names.c
===================================================================
--- uspace/srv/hw/bus/pci/libpci/names.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/bus/pci/libpci/names.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,456 @@
+/*
+ *	The PCI Library -- ID to Name Translation
+ *
+ *	Copyright (c) 1997--2005 Martin Mares <mj@ucw.cz>
+ *
+ *	May 8, 2006 - Modified and ported to HelenOS by Jakub Jermar.
+ *
+ *	Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <errno.h>
+
+#include "internal.h"
+#include "pci_ids.h"
+
+struct id_entry {
+	struct id_entry *next;
+	u32 id12, id34;
+	byte cat;
+	byte name[1];
+};
+
+enum id_entry_type {
+	ID_UNKNOWN,
+	ID_VENDOR,
+	ID_DEVICE,
+	ID_SUBSYSTEM,
+	ID_GEN_SUBSYSTEM,
+	ID_CLASS,
+	ID_SUBCLASS,
+	ID_PROGIF
+};
+
+struct id_bucket {
+	struct id_bucket *next;
+	unsigned int full;
+};
+
+#define MAX_LINE 1024
+#define BUCKET_SIZE 8192
+#define HASH_SIZE 4099
+
+#ifdef __GNUC__
+#define BUCKET_ALIGNMENT __alignof__(struct id_bucket)
+#else
+union id_align {
+	struct id_bucket *next;
+	unsigned int full;
+};
+#define BUCKET_ALIGNMENT sizeof(union id_align)
+#endif
+#define BUCKET_ALIGN(n) ((n)+BUCKET_ALIGNMENT-(n)%BUCKET_ALIGNMENT)
+
+static void *id_alloc(struct pci_access *a, unsigned int size)
+{
+	struct id_bucket *buck = a->current_id_bucket;
+	unsigned int pos;
+	if (!buck || buck->full + size > BUCKET_SIZE) {
+		buck = pci_malloc(a, BUCKET_SIZE);
+		buck->next = a->current_id_bucket;
+		a->current_id_bucket = buck;
+		buck->full = BUCKET_ALIGN(sizeof(struct id_bucket));
+	}
+	pos = buck->full;
+	buck->full = BUCKET_ALIGN(buck->full + size);
+	return (byte *) buck + pos;
+}
+
+static inline u32 id_pair(unsigned int x, unsigned int y)
+{
+	return ((x << 16) | y);
+}
+
+static inline unsigned int id_hash(int cat, u32 id12, u32 id34)
+{
+	unsigned int h;
+
+	h = id12 ^ (id34 << 3) ^ (cat << 5);
+	return h % HASH_SIZE;
+}
+
+static struct id_entry *id_lookup(struct pci_access *a, int cat, int id1,
+				  int id2, int id3, int id4)
+{
+	struct id_entry *n;
+	u32 id12 = id_pair(id1, id2);
+	u32 id34 = id_pair(id3, id4);
+
+	n = a->id_hash[id_hash(cat, id12, id34)];
+	while (n && (n->id12 != id12 || n->id34 != id34 || n->cat != cat))
+		n = n->next;
+	return n;
+}
+
+static int id_insert(struct pci_access *a, int cat, int id1, int id2,
+		     int id3, int id4, byte * text)
+{
+	u32 id12 = id_pair(id1, id2);
+	u32 id34 = id_pair(id3, id4);
+	unsigned int h = id_hash(cat, id12, id34);
+	struct id_entry *n = a->id_hash[h];
+	int len = str_size((char *) text);
+
+	while (n && (n->id12 != id12 || n->id34 != id34 || n->cat != cat))
+		n = n->next;
+	if (n)
+		return 1;
+	n = id_alloc(a, sizeof(struct id_entry) + len);
+	n->id12 = id12;
+	n->id34 = id34;
+	n->cat = cat;
+	memcpy(n->name, text, len + 1);
+	n->next = a->id_hash[h];
+	a->id_hash[h] = n;
+	return 0;
+}
+
+static int id_hex(byte * p, int cnt)
+{
+	int x = 0;
+	while (cnt--) {
+		x <<= 4;
+		if (*p >= '0' && *p <= '9')
+			x += (*p - '0');
+		else if (*p >= 'a' && *p <= 'f')
+			x += (*p - 'a' + 10);
+		else if (*p >= 'A' && *p <= 'F')
+			x += (*p - 'A' + 10);
+		else
+			return -1;
+		p++;
+	}
+	return x;
+}
+
+static inline int id_white_p(int c)
+{
+	return (c == ' ') || (c == '\t');
+}
+
+static const char *id_parse_list(struct pci_access *a, int *lino)
+{
+	byte *line;
+	byte *p;
+	int id1 = 0, id2 = 0, id3 = 0, id4 = 0;
+	int cat = -1;
+	int nest;
+	static const char parse_error[] = "Parse error";
+	size_t i;
+
+	*lino = 0;
+	for (i = 0; i < sizeof(pci_ids) / sizeof(char *); i++) {
+		line = (byte *) pci_ids[i];
+		(*lino)++;
+		p = line;
+		while (*p)
+			p++;
+		if (p > line && (p[-1] == ' ' || p[-1] == '\t'))
+			*--p = 0;
+
+		p = line;
+		while (id_white_p(*p))
+			p++;
+		if (!*p || *p == '#')
+			continue;
+
+		p = line;
+		while (*p == '\t')
+			p++;
+		nest = p - line;
+
+		if (!nest) {	/* Top-level entries */
+			if (p[0] == 'C' && p[1] == ' ') {	/* Class block */
+				if ((id1 = id_hex(p + 2, 2)) < 0 || !id_white_p(p[4]))
+					return parse_error;
+				cat = ID_CLASS;
+				p += 5;
+			} else if (p[0] == 'S' && p[1] == ' ') {	/* Generic subsystem block */
+				if ((id1 = id_hex(p + 2, 4)) < 0 || p[6])
+					return parse_error;
+				if (!id_lookup(a, ID_VENDOR, id1, 0, 0, 0))
+					return "Vendor does not exist";
+				cat = ID_GEN_SUBSYSTEM;
+				continue;
+			} else if (p[0] >= 'A' && p[0] <= 'Z' && p[1] == ' ') {	/* Unrecognized block (RFU) */
+				cat = ID_UNKNOWN;
+				continue;
+			} else {	/* Vendor ID */
+
+				if ((id1 = id_hex(p, 4)) < 0 || !id_white_p(p[4]))
+					return parse_error;
+				cat = ID_VENDOR;
+				p += 5;
+			}
+			id2 = id3 = id4 = 0;
+		} else if (cat == ID_UNKNOWN)	/* Nested entries in RFU blocks are skipped */
+			continue;
+		else if (nest == 1)	/* Nesting level 1 */
+			switch (cat) {
+			case ID_VENDOR:
+			case ID_DEVICE:
+			case ID_SUBSYSTEM:
+				if ((id2 = id_hex(p, 4)) < 0 || !id_white_p(p[4]))
+					return parse_error;
+				p += 5;
+				cat = ID_DEVICE;
+				id3 = id4 = 0;
+				break;
+			case ID_GEN_SUBSYSTEM:
+				if ((id2 = id_hex(p, 4)) < 0 || !id_white_p(p[4]))
+					return parse_error;
+				p += 5;
+				id3 = id4 = 0;
+				break;
+			case ID_CLASS:
+			case ID_SUBCLASS:
+			case ID_PROGIF:
+				if ((id2 = id_hex(p, 2)) < 0 || !id_white_p(p[2]))
+					return parse_error;
+				p += 3;
+				cat = ID_SUBCLASS;
+				id3 = id4 = 0;
+				break;
+			default:
+				return parse_error;
+		} else if (nest == 2)	/* Nesting level 2 */
+			switch (cat) {
+			case ID_DEVICE:
+			case ID_SUBSYSTEM:
+				if ((id3 = id_hex(p, 4)) < 0 || !id_white_p(p[4])
+				    || (id4 = id_hex(p + 5, 4)) < 0 || !id_white_p(p[9]))
+					return parse_error;
+				p += 10;
+				cat = ID_SUBSYSTEM;
+				break;
+			case ID_CLASS:
+			case ID_SUBCLASS:
+			case ID_PROGIF:
+				if ((id3 = id_hex(p, 2)) < 0 || !id_white_p(p[2]))
+					return parse_error;
+				p += 3;
+				cat = ID_PROGIF;
+				id4 = 0;
+				break;
+			default:
+				return parse_error;
+		} else		/* Nesting level 3 or more */
+			return parse_error;
+		while (id_white_p(*p))
+			p++;
+		if (!*p)
+			return parse_error;
+		if (id_insert(a, cat, id1, id2, id3, id4, p))
+			return "Duplicate entry";
+	}
+	return NULL;
+}
+
+int pci_load_name_list(struct pci_access *a)
+{
+	int lino;
+	const char *err;
+
+	pci_free_name_list(a);
+	a->id_hash = pci_malloc(a, sizeof(struct id_entry *) * HASH_SIZE);
+	bzero(a->id_hash, sizeof(struct id_entry *) * HASH_SIZE);
+	err = id_parse_list(a, &lino);
+	if (err)
+		a->error("%s at %s, element %d\n", err, "pci_ids.h", lino);
+	return 1;
+}
+
+void pci_free_name_list(struct pci_access *a)
+{
+	pci_mfree(a->id_hash);
+	a->id_hash = NULL;
+	while (a->current_id_bucket) {
+		struct id_bucket *buck = a->current_id_bucket;
+		a->current_id_bucket = buck->next;
+		pci_mfree(buck);
+	}
+}
+
+static struct id_entry *id_lookup_subsys(struct pci_access *a, int iv,
+					 int id, int isv, int isd)
+{
+	struct id_entry *d = NULL;
+	if (iv > 0 && id > 0)	/* Per-device lookup */
+		d = id_lookup(a, ID_SUBSYSTEM, iv, id, isv, isd);
+	if (!d)			/* Generic lookup */
+		d = id_lookup(a, ID_GEN_SUBSYSTEM, isv, isd, 0, 0);
+	if (!d && iv == isv && id == isd)	/* Check for subsystem == device */
+		d = id_lookup(a, ID_DEVICE, iv, id, 0, 0);
+	return d;
+}
+
+char *pci_lookup_name(struct pci_access *a, char *buf, int size, int flags,
+		      ...)
+{
+	va_list args;
+	int num, res, synth;
+	struct id_entry *v, *d, *cls, *pif;
+	int iv, id, isv, isd, icls, ipif;
+
+	va_start(args, flags);
+
+	num = 0;
+	if ((flags & PCI_LOOKUP_NUMERIC) || a->numeric_ids) {
+		flags &= ~PCI_LOOKUP_NUMERIC;
+		num = 1;
+	} else if (!a->id_hash) {
+		if (!pci_load_name_list(a))
+			num = a->numeric_ids = 1;
+	}
+
+	if (flags & PCI_LOOKUP_NO_NUMBERS) {
+		flags &= ~PCI_LOOKUP_NO_NUMBERS;
+		synth = 0;
+		if (num)
+			return NULL;
+	} else
+		synth = 1;
+
+	switch (flags) {
+	case PCI_LOOKUP_VENDOR:
+		iv = va_arg(args, int);
+		if (num)
+			res = snprintf(buf, size, "%04x", iv);
+		else if ((v = id_lookup(a, ID_VENDOR, iv, 0, 0, 0)) != 0)
+			return (char *) v->name;
+		else
+			res = snprintf(buf, size, "Unknown vendor %04x", iv);
+		break;
+	case PCI_LOOKUP_DEVICE:
+		iv = va_arg(args, int);
+		id = va_arg(args, int);
+		if (num)
+			res = snprintf(buf, size, "%04x", id);
+		else if ((d = id_lookup(a, ID_DEVICE, iv, id, 0, 0)) != 0)
+			return (char *) d->name;
+		else if (synth)
+			res = snprintf(buf, size, "Unknown device %04x", id);
+		else
+			return NULL;
+		break;
+	case PCI_LOOKUP_VENDOR | PCI_LOOKUP_DEVICE:
+		iv = va_arg(args, int);
+		id = va_arg(args, int);
+		if (num)
+			res = snprintf(buf, size, "%04x:%04x", iv, id);
+		else {
+			v = id_lookup(a, ID_VENDOR, iv, 0, 0, 0);
+			d = id_lookup(a, ID_DEVICE, iv, id, 0, 0);
+			if (v && d)
+				res = snprintf(buf, size, "%s %s", v->name,
+					     d->name);
+			else if (!synth)
+				return NULL;
+			else if (!v)
+				res = snprintf(buf, size, "Unknown device %04x:%04x", iv, id);
+			else	/* !d */
+				res = snprintf(buf, size, "%s Unknown device %04x", v->name, id);
+		}
+		break;
+	case PCI_LOOKUP_SUBSYSTEM | PCI_LOOKUP_VENDOR:
+		isv = va_arg(args, int);
+		if (num)
+			res = snprintf(buf, size, "%04x", isv);
+		else if ((v = id_lookup(a, ID_VENDOR, isv, 0, 0, 0)) != 0)
+			return (char *) v->name;
+		else if (synth)
+			res = snprintf(buf, size, "Unknown vendor %04x", isv);
+		else
+			return NULL;
+		break;
+	case PCI_LOOKUP_SUBSYSTEM | PCI_LOOKUP_DEVICE:
+		iv = va_arg(args, int);
+		id = va_arg(args, int);
+		isv = va_arg(args, int);
+		isd = va_arg(args, int);
+		if (num)
+			res = snprintf(buf, size, "%04x", isd);
+		else if ((d = id_lookup_subsys(a, iv, id, isv, isd)) != 0)
+			return (char *) d->name;
+		else if (synth)
+			res = snprintf(buf, size, "Unknown device %04x", isd);
+		else
+			return NULL;
+		break;
+	case PCI_LOOKUP_VENDOR | PCI_LOOKUP_DEVICE | PCI_LOOKUP_SUBSYSTEM:
+		iv = va_arg(args, int);
+		id = va_arg(args, int);
+		isv = va_arg(args, int);
+		isd = va_arg(args, int);
+		if (num)
+			res = snprintf(buf, size, "%04x:%04x", isv, isd);
+		else {
+			v = id_lookup(a, ID_VENDOR, isv, 0, 0, 0);
+			d = id_lookup_subsys(a, iv, id, isv, isd);
+			if (v && d)
+				res = snprintf(buf, size, "%s %s", v->name, d->name);
+			else if (!synth)
+				return NULL;
+			else if (!v)
+				res = snprintf(buf, size, "Unknown device %04x:%04x", isv, isd);
+			else	/* !d */
+				res = snprintf(buf, size, "%s Unknown device %04x", v->name, isd);
+		}
+		break;
+	case PCI_LOOKUP_CLASS:
+		icls = va_arg(args, int);
+		if (num)
+			res = snprintf(buf, size, "%04x", icls);
+		else if ((cls = id_lookup(a, ID_SUBCLASS, icls >> 8, icls & 0xff, 0, 0)) != 0)
+			return (char *) cls->name;
+		else if ((cls = id_lookup(a, ID_CLASS, icls, 0, 0, 0)) != 0)
+			res = snprintf(buf, size, "%s [%04x]", cls->name, icls);
+		else if (synth)
+			res = snprintf(buf, size, "Class %04x", icls);
+		else
+			return NULL;
+		break;
+	case PCI_LOOKUP_PROGIF:
+		icls = va_arg(args, int);
+		ipif = va_arg(args, int);
+		if (num)
+			res = snprintf(buf, size, "%02x", ipif);
+		else if ((pif = id_lookup(a, ID_PROGIF, icls >> 8, icls & 0xff, ipif, 0)) != 0)
+			return (char *) pif->name;
+		else if (icls == 0x0101 && !(ipif & 0x70)) {
+			/* IDE controllers have complex prog-if semantics */
+			res = snprintf(buf, size, "%s%s%s%s%s",
+				       (ipif & 0x80) ? "Master " : "",
+				       (ipif & 0x08) ? "SecP " : "",
+				       (ipif & 0x04) ? "SecO " : "",
+				       (ipif & 0x02) ? "PriP " : "",
+				       (ipif & 0x01) ? "PriO " : "");
+			if (res > 0 && res < size)
+				buf[--res] = 0;
+		} else if (synth)
+			res = snprintf(buf, size, "ProgIf %02x", ipif);
+		else
+			return NULL;
+		break;
+	default:
+		return "<pci_lookup_name: invalid request>";
+	}
+	if (res < 0 || res >= size)
+		return "<pci_lookup_name: buffer too small>";
+	else
+		return buf;
+}
Index: uspace/srv/hw/bus/pci/libpci/pci.h
===================================================================
--- uspace/srv/hw/bus/pci/libpci/pci.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/bus/pci/libpci/pci.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,146 @@
+/*
+ *	The PCI Library
+ *
+ *	Copyright (c) 1997--2005 Martin Mares <mj@ucw.cz>
+ *
+ *	May 8, 2006 - Modified and ported to HelenOS by Jakub Jermar.
+ *
+ *	Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#ifndef _PCI_LIB_H
+#define _PCI_LIB_H
+
+#include "header.h"
+#include "types.h"
+
+#define PCI_LIB_VERSION 0x020200
+
+/*
+ *	PCI Access Structure
+ */
+
+struct pci_methods;
+
+enum pci_access_type {
+	/* Known access methods, remember to update access.c as well */
+	PCI_ACCESS_I386_TYPE1,	/* i386 ports, type 1 (params: none) */
+	PCI_ACCESS_I386_TYPE2,	/* i386 ports, type 2 (params: none) */
+	PCI_ACCESS_MAX
+};
+
+struct pci_access {
+	/* Options you can change: */
+	unsigned int method;	/* Access method */
+	char *method_params[PCI_ACCESS_MAX];	/* Parameters for the methods */
+	int writeable;		/* Open in read/write mode */
+	int buscentric;		/* Bus-centric view of the world */
+	int numeric_ids;	/* Don't resolve device IDs to names */
+	int debugging;		/* Turn on debugging messages */
+
+	/* Functions you can override: */
+	void (*error) (char *msg, ...);	/* Write error message and quit */
+	void (*warning) (char *msg, ...);	/* Write a warning message */
+	void (*debug) (char *msg, ...);	/* Write a debugging message */
+
+	struct pci_dev *devices;	/* Devices found on this bus */
+
+	/* Fields used internally: */
+	struct pci_methods *methods;
+	struct id_entry **id_hash;	/* names.c */
+	struct id_bucket *current_id_bucket;
+};
+
+/* Initialize PCI access */
+struct pci_access *pci_alloc(void);
+void pci_init(struct pci_access *);
+void pci_cleanup(struct pci_access *);
+
+/* Scanning of devices */
+void pci_scan_bus(struct pci_access *acc);
+struct pci_dev *pci_get_dev(struct pci_access *acc, int domain, int bus, int dev, int func);	/* Raw access to specified device */
+void pci_free_dev(struct pci_dev *);
+
+/*
+ *	Devices
+ */
+
+struct pci_dev {
+	struct pci_dev *next;	/* Next device in the chain */
+	u16 domain;		/* PCI domain (host bridge) */
+	u8 bus, dev, func;	/* Bus inside domain, device and function */
+
+	/* These fields are set by pci_fill_info() */
+	int known_fields;	/* Set of info fields already known */
+	u16 vendor_id, device_id;	/* Identity of the device */
+	int irq;		/* IRQ number */
+	pciaddr_t base_addr[6];	/* Base addresses */
+	pciaddr_t size[6];	/* Region sizes */
+	pciaddr_t rom_base_addr;	/* Expansion ROM base address */
+	pciaddr_t rom_size;	/* Expansion ROM size */
+
+	/* Fields used internally: */
+	struct pci_access *access;
+	struct pci_methods *methods;
+	u8 *cache;		/* Cached config registers */
+	int cache_len;
+	int hdrtype;		/* Cached low 7 bits of header type, -1 if unknown */
+	void *aux;		/* Auxillary data */
+};
+
+#define PCI_ADDR_IO_MASK (~(pciaddr_t) 0x3)
+#define PCI_ADDR_MEM_MASK (~(pciaddr_t) 0xf)
+
+u8 pci_read_byte(struct pci_dev *, int pos);	/* Access to configuration space */
+u16 pci_read_word(struct pci_dev *, int pos);
+u32 pci_read_long(struct pci_dev *, int pos);
+int pci_read_block(struct pci_dev *, int pos, u8 * buf, int len);
+int pci_write_byte(struct pci_dev *, int pos, u8 data);
+int pci_write_word(struct pci_dev *, int pos, u16 data);
+int pci_write_long(struct pci_dev *, int pos, u32 data);
+int pci_write_block(struct pci_dev *, int pos, u8 * buf, int len);
+
+int pci_fill_info(struct pci_dev *, int flags);	/* Fill in device information */
+
+#define PCI_FILL_IDENT		1
+#define PCI_FILL_IRQ		2
+#define PCI_FILL_BASES		4
+#define PCI_FILL_ROM_BASE	8
+#define PCI_FILL_SIZES		16
+#define PCI_FILL_RESCAN		0x10000
+
+void pci_setup_cache(struct pci_dev *, u8 * cache, int len);
+
+/*
+ *	Conversion of PCI ID's to names (according to the pci.ids file)
+ *
+ *	Call pci_lookup_name() to identify different types of ID's:
+ *
+ *	VENDOR				(vendorID) -> vendor
+ *	DEVICE				(vendorID, deviceID) -> device
+ *	VENDOR | DEVICE			(vendorID, deviceID) -> combined vendor and device
+ *	SUBSYSTEM | VENDOR		(subvendorID) -> subsystem vendor
+ *	SUBSYSTEM | DEVICE		(vendorID, deviceID, subvendorID, subdevID) -> subsystem device
+ *	SUBSYSTEM | VENDOR | DEVICE	(vendorID, deviceID, subvendorID, subdevID) -> combined subsystem v+d
+ *	SUBSYSTEM | ...			(-1, -1, subvendorID, subdevID) -> generic subsystem
+ *	CLASS				(classID) -> class
+ *	PROGIF				(classID, progif) -> programming interface
+ */
+
+char *pci_lookup_name(struct pci_access *a, char *buf, int size, int flags,
+		      ...);
+
+int pci_load_name_list(struct pci_access *a);	/* Called automatically by pci_lookup_*() when needed; returns success */
+void pci_free_name_list(struct pci_access *a);	/* Called automatically by pci_cleanup() */
+
+enum pci_lookup_mode {
+	PCI_LOOKUP_VENDOR = 1,	/* Vendor name (args: vendorID) */
+	PCI_LOOKUP_DEVICE = 2,	/* Device name (args: vendorID, deviceID) */
+	PCI_LOOKUP_CLASS = 4,	/* Device class (args: classID) */
+	PCI_LOOKUP_SUBSYSTEM = 8,
+	PCI_LOOKUP_PROGIF = 16,	/* Programming interface (args: classID, prog_if) */
+	PCI_LOOKUP_NUMERIC = 0x10000,	/* Want only formatted numbers; default if access->numeric_ids is set */
+	PCI_LOOKUP_NO_NUMBERS = 0x20000	/* Return NULL if not found in the database; default is to print numerically */
+};
+
+#endif
Index: uspace/srv/hw/bus/pci/libpci/pci_ids.h
===================================================================
--- uspace/srv/hw/bus/pci/libpci/pci_ids.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/bus/pci/libpci/pci_ids.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,11934 @@
+/* DO NOT EDIT, THIS FILE IS AUTOMATICALLY GENERATED */
+char *pci_ids[] = {
+"0000  Gammagraphx, Inc.",
+"001a  Ascend Communications, Inc.",
+"0033  Paradyne corp.",
+"003d  Lockheed Martin-Marietta Corp",
+"0059  Tiger Jet Network Inc. (Wrong ID)",
+"0070  Hauppauge computer works Inc.",
+"0071  Nebula Electronics Ltd.",
+"0095  Silicon Image, Inc. (Wrong ID)",
+"	0680  Ultra ATA/133 IDE RAID CONTROLLER CARD",
+"00a7  Teles AG (Wrong ID)",
+"00f5  BFG Technologies, Inc.",
+"0100  Ncipher Corp Ltd",
+"0123  General Dynamics",
+"018a  LevelOne",
+"	0106  FPC-0106TX misprogrammed [RTL81xx]",
+"021b  Compaq Computer Corporation",
+"	8139  HNE-300 (RealTek RTL8139c) [iPaq Networking]",
+"0270  Hauppauge computer works Inc. (Wrong ID)",
+"0291  Davicom Semiconductor, Inc.",
+"	8212  DM9102A(DM9102AE, SM9102AF) Ethernet 100/10 MBit(Rev 40)",
+"02ac  SpeedStream",
+"	1012  1012 PCMCIA 10/100 Ethernet Card [RTL81xx]",
+"0315  SK-Electronics Co., Ltd.",
+"0357  TTTech AG",
+"	000a  TTP-Monitoring Card V2.0",
+"0432  SCM Microsystems, Inc.",
+"	0001  Pluto2 DVB-T Receiver for PCMCIA [EasyWatch MobilSet]",
+"045e  Microsoft",
+"	006e  MN-510 802.11b wireless USB paddle",
+"	00c2  MN-710 wireless USB paddle",
+"04cf  Myson Century, Inc",
+"	8818  CS8818 USB2.0-to-ATAPI Bridge Controller with Embedded PHY",
+"050d  Belkin",
+"	0109  F5U409-CU USB/Serial Portable Adapter",
+"	7050  F5D7050 802.11g Wireless USB Adapter",
+"05e3  CyberDoor",
+"	0701  CBD516",
+"066f  Sigmatel Inc.",
+"	3410  SMTP3410",
+"	3500  SMTP3500",
+"0675  Dynalink",
+"	1700  IS64PH ISDN Adapter",
+"	1702  IS64PH ISDN Adapter",
+"	1703  ISDN Adapter (PCI Bus, DV, W)",
+"	1704  ISDN Adapter (PCI Bus, D, C)",
+"067b  Prolific Technology, Inc.",
+"	3507  PL-3507 Hi-Speed USB & IEEE 1394 Combo to IDE Bridge Controller",
+"0721  Sapphire, Inc.",
+"07e2  ELMEG Communication Systems GmbH",
+"0925  VIA Technologies, Inc. (Wrong ID)",
+"09c1  Arris",
+"	0704  CM 200E Cable Modem",
+"0a89  BREA Technologies Inc",
+"0b0b  Rhino Equiment Corp.",
+"	0105  Rhino R1T1",
+"	0205  Rhino R4FXO",
+"	0305  Rhino R4T1",
+"	0405  Rhino R8FXX",
+"	0505  Rhino R24FXX",
+"	0506  Rhino R2T1",
+"0b49  ASCII Corporation",
+"	064f  Trance Vibrator",
+"0e11  Compaq Computer Corporation",
+"	0001  PCI to EISA Bridge",
+"	0002  PCI to ISA Bridge",
+"	0046  Smart Array 64xx",
+"		0e11 409a  Smart Array 641",
+"		0e11 409b  Smart Array 642",
+"		0e11 409c  Smart Array 6400",
+"		0e11 409d  Smart Array 6400 EM",
+"	0049  NC7132 Gigabit Upgrade Module",
+"	004a  NC6136 Gigabit Server Adapter",
+"	005a  Remote Insight II board - Lights-Out",
+"	007c  NC7770 1000BaseTX",
+"	007d  NC6770 1000BaseTX",
+"	0085  NC7780 1000BaseTX",
+"	00b1  Remote Insight II board - PCI device",
+"	00bb  NC7760",
+"	00ca  NC7771",
+"	00cb  NC7781",
+"	00cf  NC7772",
+"	00d0  NC7782",
+"	00d1  NC7783",
+"	00e3  NC7761",
+"	0508  Netelligent 4/16 Token Ring",
+"	1000  Triflex/Pentium Bridge, Model 1000",
+"	2000  Triflex/Pentium Bridge, Model 2000",
+"	3032  QVision 1280/p",
+"	3033  QVision 1280/p",
+"	3034  QVision 1280/p",
+"	4000  4000 [Triflex]",
+"	4030  SMART-2/P",
+"	4031  SMART-2SL",
+"	4032  Smart Array 3200",
+"	4033  Smart Array 3100ES",
+"	4034  Smart Array 221",
+"	4040  Integrated Array",
+"	4048  Compaq Raid LC2",
+"	4050  Smart Array 4200",
+"	4051  Smart Array 4250ES",
+"	4058  Smart Array 431",
+"	4070  Smart Array 5300",
+"	4080  Smart Array 5i",
+"	4082  Smart Array 532",
+"	4083  Smart Array 5312",
+"	4091  Smart Array 6i",
+"	409a  Smart Array 641",
+"	409b  Smart Array 642",
+"	409c  Smart Array 6400",
+"	409d  Smart Array 6400 EM",
+"	6010  HotPlug PCI Bridge 6010",
+"	7020  USB Controller",
+"	a0ec  Fibre Channel Host Controller",
+"	a0f0  Advanced System Management Controller",
+"	a0f3  Triflex PCI to ISA Bridge",
+"	a0f7  PCI Hotplug Controller",
+"		8086 002a  PCI Hotplug Controller A",
+"		8086 002b  PCI Hotplug Controller B",
+"	a0f8  ZFMicro Chipset USB",
+"	a0fc  FibreChannel HBA Tachyon",
+"	ae10  Smart-2/P RAID Controller",
+"		0e11 4030  Smart-2/P Array Controller",
+"		0e11 4031  Smart-2SL Array Controller",
+"		0e11 4032  Smart Array Controller",
+"		0e11 4033  Smart 3100ES Array Controller",
+"	ae29  MIS-L",
+"	ae2a  MPC",
+"	ae2b  MIS-E",
+"	ae31  System Management Controller",
+"	ae32  Netelligent 10/100 TX PCI UTP",
+"	ae33  Triflex Dual EIDE Controller",
+"	ae34  Netelligent 10 T PCI UTP",
+"	ae35  Integrated NetFlex-3/P",
+"	ae40  Netelligent Dual 10/100 TX PCI UTP",
+"	ae43  Netelligent Integrated 10/100 TX UTP",
+"	ae69  CETUS-L",
+"	ae6c  Northstar",
+"	ae6d  NorthStar CPU to PCI Bridge",
+"	b011  Netelligent 10/100 TX Embedded UTP",
+"	b012  Netelligent 10 T/2 PCI UTP/Coax",
+"	b01e  NC3120 Fast Ethernet NIC",
+"	b01f  NC3122 Fast Ethernet NIC",
+"	b02f  NC1120 Ethernet NIC",
+"	b030  Netelligent 10/100 TX UTP",
+"	b04a  10/100 TX PCI Intel WOL UTP Controller",
+"	b060  Smart Array 5300 Controller",
+"	b0c6  NC3161 Fast Ethernet NIC",
+"	b0c7  NC3160 Fast Ethernet NIC",
+"	b0d7  NC3121 Fast Ethernet NIC",
+"	b0dd  NC3131 Fast Ethernet NIC",
+"	b0de  NC3132 Fast Ethernet Module",
+"	b0df  NC6132 Gigabit Module",
+"	b0e0  NC6133 Gigabit Module",
+"	b0e1  NC3133 Fast Ethernet Module",
+"	b123  NC6134 Gigabit NIC",
+"	b134  NC3163 Fast Ethernet NIC",
+"	b13c  NC3162 Fast Ethernet NIC",
+"	b144  NC3123 Fast Ethernet NIC",
+"	b163  NC3134 Fast Ethernet NIC",
+"	b164  NC3165 Fast Ethernet Upgrade Module",
+"	b178  Smart Array 5i/532",
+"		0e11 4080  Smart Array 5i",
+"		0e11 4082  Smart Array 532",
+"		0e11 4083  Smart Array 5312",
+"	b1a4  NC7131 Gigabit Server Adapter",
+"	b200  Memory Hot-Plug Controller",
+"	b203  Integrated Lights Out Controller",
+"	b204  Integrated Lights Out  Processor",
+"	f130  NetFlex-3/P ThunderLAN 1.0",
+"	f150  NetFlex-3/P ThunderLAN 2.3",
+"0e21  Cowon Systems, Inc.",
+"0e55  HaSoTec GmbH",
+"1000  LSI Logic / Symbios Logic",
+"	0001  53c810",
+"		1000 1000  LSI53C810AE PCI to SCSI I/O Processor",
+"	0002  53c820",
+"	0003  53c825",
+"		1000 1000  LSI53C825AE PCI to SCSI I/O Processor (Ultra Wide)",
+"	0004  53c815",
+"	0005  53c810AP",
+"	0006  53c860",
+"		1000 1000  LSI53C860E PCI to Ultra SCSI I/O Processor",
+"	000a  53c1510",
+"		1000 1000  LSI53C1510 PCI to Dual Channel Wide Ultra2 SCSI Controller (Nonintelligent mode)",
+"	000b  53C896/897",
+"		0e11 6004  EOB003 Series SCSI host adapter",
+"		1000 1000  LSI53C896/7 PCI to Dual Channel Ultra2 SCSI Multifunction Controller",
+"		1000 1010  LSI22910 PCI to Dual Channel Ultra2 SCSI host adapter",
+"		1000 1020  LSI21002 PCI to Dual Channel Ultra2 SCSI host adapter",
+"		13e9 1000  6221L-4U",
+"	000c  53c895",
+"		1000 1010  LSI8951U PCI to Ultra2 SCSI host adapter",
+"		1000 1020  LSI8952U PCI to Ultra2 SCSI host adapter",
+"		1de1 3906  DC-390U2B SCSI adapter",
+"		1de1 3907  DC-390U2W",
+"	000d  53c885",
+"	000f  53c875",
+"		0e11 7004  Embedded Ultra Wide SCSI Controller",
+"		1000 1000  LSI53C876/E PCI to Dual Channel SCSI Controller",
+"		1000 1010  LSI22801 PCI to Dual Channel Ultra SCSI host adapter",
+"		1000 1020  LSI22802 PCI to Dual Channel Ultra SCSI host adapter",
+"		1092 8760  FirePort 40 Dual SCSI Controller",
+"		1de1 3904  DC390F/U Ultra Wide SCSI Adapter",
+"		4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard",
+"		4c53 1050  CT7 mainboard",
+"	0010  53C1510",
+"		0e11 4040  Integrated Array Controller",
+"		0e11 4048  RAID LC2 Controller",
+"		1000 1000  53C1510 PCI to Dual Channel Wide Ultra2 SCSI Controller (Intelligent mode)",
+"	0012  53c895a",
+"		1000 1000  LSI53C895A PCI to Ultra2 SCSI Controller",
+"	0013  53c875a",
+"		1000 1000  LSI53C875A PCI to Ultra SCSI Controller",
+"	0020  53c1010 Ultra3 SCSI Adapter",
+"		1000 1000  LSI53C1010-33 PCI to Dual Channel Ultra160 SCSI Controller",
+"		1de1 1020  DC-390U3W",
+"	0021  53c1010 66MHz  Ultra3 SCSI Adapter",
+"		1000 1000  LSI53C1000/1000R/1010R/1010-66 PCI to Ultra160 SCSI Controller",
+"		1000 1010  Asus TR-DLS onboard 53C1010-66",
+"		124b 1070  PMC-USCSI3",
+"		4c53 1080  CT8 mainboard",
+"		4c53 1300  P017 mezzanine (32-bit PMC)",
+"		4c53 1310  P017 mezzanine (64-bit PMC)",
+"	0030  53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI",
+"		0e11 00da  ProLiant ML 350",
+"		1028 0123  PowerEdge 2600",
+"		1028 014a  PowerEdge 1750",
+"		1028 016c  PowerEdge 1850 MPT Fusion SCSI/RAID (Perc 4)",
+"		1028 0183  PowerEdge 1800",
+"		1028 1010  LSI U320 SCSI Controller",
+"		124b 1170  PMC-USCSI320",
+"		1734 1052  Primergy RX300 S2",
+"	0031  53c1030ZC PCI-X Fusion-MPT Dual Ultra320 SCSI",
+"	0032  53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI",
+"		1000 1000  LSI53C1020/1030 PCI-X to Ultra320 SCSI Controller",
+"	0033  1030ZC_53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI",
+"	0040  53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI",
+"		1000 0033  MegaRAID SCSI 320-2XR",
+"		1000 0066  MegaRAID SCSI 320-2XRWS",
+"	0041  53C1035ZC PCI-X Fusion-MPT Dual Ultra320 SCSI",
+"	0050  SAS1064 PCI-X Fusion-MPT SAS",
+"	0054  SAS1068 PCI-X Fusion-MPT SAS",
+"	0056  SAS1064E PCI-Express Fusion-MPT SAS",
+"	0058  SAS1068E PCI-Express Fusion-MPT SAS",
+"	005a  SAS1066E PCI-Express Fusion-MPT SAS",
+"	005c  SAS1064A PCI-X Fusion-MPT SAS",
+"	005e  SAS1066 PCI-X Fusion-MPT SAS",
+"	0060  SAS1078 PCI-X Fusion-MPT SAS",
+"	0062  SAS1078 PCI-Express Fusion-MPT SAS",
+"		1000 0062  SAS1078 PCI-Express Fusion-MPT SAS",
+"	008f  53c875J",
+"		1092 8000  FirePort 40 SCSI Controller",
+"		1092 8760  FirePort 40 Dual SCSI Host Adapter",
+"	0407  MegaRAID",
+"		1000 0530  MegaRAID 530 SCSI 320-0X RAID Controller",
+"		1000 0531  MegaRAID 531 SCSI 320-4X RAID Controller",
+"		1000 0532  MegaRAID 532 SCSI 320-2X RAID Controller",
+"		1028 0531  PowerEdge Expandable RAID Controller 4/QC",
+"		1028 0533  PowerEdge Expandable RAID Controller 4/QC",
+"		8086 0530  MegaRAID Intel RAID Controller SRCZCRX",
+"		8086 0532  MegaRAID Intel RAID Controller SRCU42X",
+"	0408  MegaRAID",
+"		1000 0001  MegaRAID SCSI 320-1E RAID Controller",
+"		1000 0002  MegaRAID SCSI 320-2E RAID Controller",
+"		1025 004d  MegaRAID ACER ROMB-2E RAID Controller",
+"		1028 0001  PowerEdge RAID Controller PERC4e/SC",
+"		1028 0002  PowerEdge RAID Controller PERC4e/DC",
+"		1734 1065  FSC MegaRAID PCI Express ROMB",
+"		8086 0002  MegaRAID Intel RAID Controller SRCU42E",
+"	0409  MegaRAID",
+"		1000 3004  MegaRAID SATA 300-4X RAID Controller",
+"		1000 3008  MegaRAID SATA 300-8X RAID Controller",
+"		8086 3008  MegaRAID RAID Controller SRCS28X",
+"		8086 3431  MegaRAID RAID Controller Alief SROMBU42E",
+"		8086 3499  MegaRAID RAID Controller Harwich SROMBU42E",
+"	0621  FC909 Fibre Channel Adapter",
+"	0622  FC929 Fibre Channel Adapter",
+"		1000 1020  44929 O Dual Fibre Channel card",
+"	0623  FC929 LAN",
+"	0624  FC919 Fibre Channel Adapter",
+"	0625  FC919 LAN",
+"	0626  FC929X Fibre Channel Adapter",
+"		1000 1010  7202-XP-LC Dual Fibre Channel card",
+"	0627  FC929X LAN",
+"	0628  FC919X Fibre Channel Adapter",
+"	0629  FC919X LAN",
+"	0640  FC949X Fibre Channel Adapter",
+"	0642  FC939X Fibre Channel Adapter",
+"	0646  FC949ES Fibre Channel Adapter",
+"	0701  83C885 NT50 DigitalScape Fast Ethernet",
+"	0702  Yellowfin G-NIC gigabit ethernet",
+"		1318 0000  PEI100X",
+"	0804  SA2010",
+"	0805  SA2010ZC",
+"	0806  SA2020",
+"	0807  SA2020ZC",
+"	0901  61C102",
+"	1000  63C815",
+"	1960  MegaRAID",
+"		1000 0518  MegaRAID 518 SCSI 320-2 Controller",
+"		1000 0520  MegaRAID 520 SCSI 320-1 Controller",
+"		1000 0522  MegaRAID 522 i4 133 RAID Controller",
+"		1000 0523  MegaRAID SATA 150-6 RAID Controller",
+"		1000 4523  MegaRAID SATA 150-4 RAID Controller",
+"		1000 a520  MegaRAID ZCR SCSI 320-0 Controller",
+"		1028 0518  MegaRAID 518 DELL PERC 4/DC RAID Controller",
+"		1028 0520  MegaRAID 520 DELL PERC 4/SC RAID Controller",
+"		1028 0531  PowerEdge Expandable RAID Controller 4/QC",
+"		1028 0533  PowerEdge Expandable RAID Controller 4/QC",
+"		8086 0520  MegaRAIDRAID Controller SRCU41L",
+"		8086 0523  MegaRAID RAID Controller SRCS16",
+"1001  Kolter Electronic",
+"	0010  PCI 1616 Measurement card with 32 digital I/O lines",
+"	0011  OPTO-PCI Opto-Isolated digital I/O board",
+"	0012  PCI-AD/DA Analogue I/O board",
+"	0013  PCI-OPTO-RELAIS Digital I/O board with relay outputs",
+"	0014  PCI-Counter/Timer Counter Timer board",
+"	0015  PCI-DAC416 Analogue output board",
+"	0016  PCI-MFB Analogue I/O board",
+"	0017  PROTO-3 PCI Prototyping board",
+"	9100  INI-9100/9100W SCSI Host",
+"1002  ATI Technologies Inc",
+"	3150  M24 1P [Radeon Mobility X600]",
+"	3152  M22 [Radeon Mobility X300]",
+"	3154  M24 1T [FireGL M24 GL]",
+"	3e50  RV380 0x3e50 [Radeon X600]",
+"	3e54  RV380 0x3e54 [FireGL V3200]",
+"	3e70  RV380 [Radeon X600] Secondary",
+"	4136  Radeon IGP 320 M",
+"	4137  Radeon IGP330/340/350",
+"	4144  R300 AD [Radeon 9500 Pro]",
+"	4145  R300 AE [Radeon 9700 Pro]",
+"	4146  R300 AF [Radeon 9700 Pro]",
+"	4147  R300 AG [FireGL Z1/X1]",
+"	4148  R350 AH [Radeon 9800]",
+"	4149  R350 AI [Radeon 9800]",
+"	414a  R350 AJ [Radeon 9800]",
+"	414b  R350 AK [Fire GL X2]",
+"	4150  RV350 AP [Radeon 9600]",
+"		1002 0002  R9600 Pro primary (Asus OEM for HP)",
+"		1002 0003  R9600 Pro secondary (Asus OEM for HP)",
+"		1002 4722  All-in-Wonder 2006 AGP Edition",
+"		1458 4024  Giga-Byte GV-R96128D Primary",
+"		148c 2064  PowerColor R96A-C3N",
+"		148c 2066  PowerColor R96A-C3N",
+"		174b 7c19  Sapphire Atlantis Radeon 9600 Pro",
+"		174b 7c29  GC-R9600PRO Primary [Sapphire]",
+"		17ee 2002  Radeon 9600 256Mb Primary",
+"		18bc 0101  GC-R9600PRO Primary",
+"	4151  RV350 AQ [Radeon 9600]",
+"		1043 c004  A9600SE",
+"	4152  RV350 AR [Radeon 9600]",
+"		1002 0002  Radeon 9600XT",
+"		1002 4772  All-in-Wonder 9600 XT",
+"		1043 c002  Radeon 9600 XT TVD",
+"		1043 c01a  A9600XT/TD",
+"		174b 7c29  Sapphire Radeon 9600XT",
+"		1787 4002  Radeon 9600 XT",
+"	4153  RV350 AS [Radeon 9550]",
+"		1462 932c  865PE Neo2-V (MS-6788) mainboard",
+"	4154  RV350 AT [Fire GL T2]",
+"	4155  RV350 AU [Fire GL T2]",
+"	4156  RV350 AV [Fire GL T2]",
+"	4157  RV350 AW [Fire GL T2]",
+"	4158  68800AX [Mach32]",
+"	4164  R300 AD [Radeon 9500 Pro] (Secondary)",
+"	4165  R300 AE [Radeon 9700 Pro] (Secondary)",
+"	4166  R300 AF [Radeon 9700 Pro] (Secondary)",
+"	4168  Radeon R350 [Radeon 9800] (Secondary)",
+"	4170  RV350 AP [Radeon 9600] (Secondary)",
+"		1002 0003  R9600 Pro secondary (Asus OEM for HP)",
+"		1002 4723  All-in-Wonder 2006 AGP Edition (Secondary)",
+"		1458 4025  Giga-Byte GV-R96128D Secondary",
+"		148c 2067  PowerColor R96A-C3N (Secondary)",
+"		174b 7c28  GC-R9600PRO Secondary [Sapphire]",
+"		17ee 2003  Radeon 9600 256Mb Secondary",
+"		18bc 0100  GC-R9600PRO Secondary",
+"	4171  RV350 AQ [Radeon 9600] (Secondary)",
+"		1043 c005  A9600SE (Secondary)",
+"	4172  RV350 AR [Radeon 9600] (Secondary)",
+"		1002 0003  Radeon 9600XT (Secondary)",
+"		1002 4773  All-in-Wonder 9600 XT (Secondary)",
+"		1043 c003  A9600XT (Secondary)",
+"		1043 c01b  A9600XT/TD (Secondary)",
+"		174b 7c28  Sapphire Radeon 9600XT (Secondary)",
+"		1787 4003  Radeon 9600 XT (Secondary)",
+"	4173  RV350 \?\? [Radeon 9550] (Secondary)",
+"	4237  Radeon 7000 IGP",
+"	4242  R200 BB [Radeon All in Wonder 8500DV]",
+"		1002 02aa  Radeon 8500 AIW DV Edition",
+"	4243  R200 BC [Radeon All in Wonder 8500]",
+"	4336  Radeon Mobility U1",
+"		1002 4336  Pavilion ze4300 ATI Radeon Mobility U1 (IGP 320 M)",
+"		103c 0024  Pavilion ze4400 builtin Video",
+"		161f 2029  eMachines M5312 builtin Video",
+"	4337  Radeon IGP 330M/340M/350M",
+"		1014 053a  ThinkPad R40e (2684-HVG) builtin VGA controller",
+"		103c 0850  Radeon IGP 345M",
+"	4341  IXP150 AC'97 Audio Controller",
+"	4345  EHCI USB Controller",
+"	4347  OHCI USB Controller #1",
+"	4348  OHCI USB Controller #2",
+"	4349  ATI Dual Channel Bus Master PCI IDE Controller",
+"	434d  IXP AC'97 Modem",
+"	4353  ATI SMBus",
+"	4354  215CT [Mach64 CT]",
+"	4358  210888CX [Mach64 CX]",
+"	4363  ATI SMBus",
+"	436e  ATI 436E Serial ATA Controller",
+"	4370  IXP SB400 AC'97 Audio Controller",
+"		1025 0079  Aspire 5024WLMMi",
+"		103c 308b  MX6125",
+"		107b 0300  MX6421",
+"	4371  IXP SB400 PCI-PCI Bridge",
+"		103c 308b  MX6125",
+"	4372  IXP SB400 SMBus Controller",
+"		1025 0080  Aspire 5024WLMMi",
+"		103c 308b  MX6125",
+"	4373  IXP SB400 USB2 Host Controller",
+"		1025 0080  Aspire 5024WLMMi",
+"		103c 308b  MX6125",
+"	4374  IXP SB400 USB Host Controller",
+"		103c 308b  MX6125",
+"	4375  IXP SB400 USB Host Controller",
+"		1025 0080  Aspire 5024WLMMi",
+"		103c 308b  MX6125",
+"	4376  Standard Dual Channel PCI IDE Controller ATI",
+"		1025 0080  Aspire 5024WLMMi",
+"		103c 308b  MX6125",
+"	4377  IXP SB400 PCI-ISA Bridge",
+"		1025 0080  Aspire 5024WLMi",
+"		103c 308b  MX6125",
+"	4378  ATI SB400 - AC'97 Modem Controller",
+"		1025 0080  Aspire 5024WLMMi",
+"		103c 308b  MX6125",
+"	4379  ATI 4379 Serial ATA Controller",
+"	437a  ATI 437A Serial ATA Controller",
+"	437b  SB450 HDA Audio",
+"	4380  SB600 Non-Raid-5 SATA",
+"	4381  SB600 Raid-5 SATA",
+"	4382  SB600 AC97 Audio",
+"	4383  SB600 Azalia",
+"	4384  SB600 PCI to PCI Bridge",
+"	4385  SB600 SMBus",
+"	4386  SB600 USB Controller (EHCI)",
+"	4387  SB600 USB (OHCI0)",
+"	4388  SB600 USB (OHCI1)",
+"	4389  SB600 USB (OHCI2)",
+"	438a  SB600 USB (OHCI3)",
+"	438b  SB600 USB (OHCI4)",
+"	438c  SB600 IDE",
+"	438d  SB600 PCI to LPC Bridge",
+"	438e  SB600 AC97 Modem",
+"	4437  Radeon Mobility 7000 IGP",
+"	4554  210888ET [Mach64 ET]",
+"	4654  Mach64 VT",
+"	4742  3D Rage Pro AGP 1X/2X",
+"		1002 0040  Rage Pro Turbo AGP 2X",
+"		1002 0044  Rage Pro Turbo AGP 2X",
+"		1002 0061  Rage Pro AIW AGP 2X",
+"		1002 0062  Rage Pro AIW AGP 2X",
+"		1002 0063  Rage Pro AIW AGP 2X",
+"		1002 0080  Rage Pro Turbo AGP 2X",
+"		1002 0084  Rage Pro Turbo AGP 2X",
+"		1002 4742  Rage Pro Turbo AGP 2X",
+"		1002 8001  Rage Pro Turbo AGP 2X",
+"		1028 0082  Rage Pro Turbo AGP 2X",
+"		1028 4082  Optiplex GX1 Onboard Display Adapter",
+"		1028 8082  Rage Pro Turbo AGP 2X",
+"		1028 c082  Rage Pro Turbo AGP 2X",
+"		8086 4152  Xpert 98D AGP 2X",
+"		8086 464a  Rage Pro Turbo AGP 2X",
+"	4744  3D Rage Pro AGP 1X",
+"		1002 4744  Rage Pro Turbo AGP",
+"	4747  3D Rage Pro",
+"	4749  3D Rage Pro",
+"		1002 0061  Rage Pro AIW",
+"		1002 0062  Rage Pro AIW",
+"	474c  Rage XC",
+"	474d  Rage XL AGP 2X",
+"		1002 0004  Xpert 98 RXL AGP 2X",
+"		1002 0008  Xpert 98 RXL AGP 2X",
+"		1002 0080  Rage XL AGP 2X",
+"		1002 0084  Xpert 98 AGP 2X",
+"		1002 474d  Rage XL AGP",
+"		1033 806a  Rage XL AGP",
+"	474e  Rage XC AGP",
+"		1002 474e  Rage XC AGP",
+"	474f  Rage XL",
+"		1002 0008  Rage XL",
+"		1002 474f  Rage XL",
+"	4750  3D Rage Pro 215GP",
+"		1002 0040  Rage Pro Turbo",
+"		1002 0044  Rage Pro Turbo",
+"		1002 0080  Rage Pro Turbo",
+"		1002 0084  Rage Pro Turbo",
+"		1002 4750  Rage Pro Turbo",
+"	4751  3D Rage Pro 215GQ",
+"	4752  Rage XL",
+"		0e11 001e  Proliant Rage XL",
+"		1002 0008  Rage XL",
+"		1002 4752  Proliant Rage XL",
+"		1002 8008  Rage XL",
+"		1028 00ce  PowerEdge 1400",
+"		1028 00d1  PowerEdge 2550",
+"		1028 00d9  PowerEdge 2500",
+"		1028 0134  Poweredge SC600",
+"		103c 10e1  NetServer Rage XL",
+"		1734 007a  Primergy RX300",
+"		8086 3411  SDS2 Mainboard",
+"		8086 3427  S875WP1-E mainboard",
+"	4753  Rage XC",
+"		1002 4753  Rage XC",
+"	4754  3D Rage I/II 215GT [Mach64 GT]",
+"	4755  3D Rage II+ 215GTB [Mach64 GTB]",
+"	4756  3D Rage IIC 215IIC [Mach64 GT IIC]",
+"		1002 4756  Rage IIC",
+"	4757  3D Rage IIC AGP",
+"		1002 4757  Rage IIC AGP",
+"		1028 0089  Rage 3D IIC",
+"		1028 008e  PowerEdge 1300 onboard video",
+"		1028 4082  Rage 3D IIC",
+"		1028 8082  Rage 3D IIC",
+"		1028 c082  Rage 3D IIC",
+"	4758  210888GX [Mach64 GX]",
+"	4759  3D Rage IIC",
+"	475a  3D Rage IIC AGP",
+"		1002 0084  Rage 3D Pro AGP 2x XPERT 98",
+"		1002 0087  Rage 3D IIC",
+"		1002 475a  Rage IIC AGP",
+"	4964  Radeon RV250 Id [Radeon 9000]",
+"	4965  Radeon RV250 Ie [Radeon 9000]",
+"	4966  Radeon RV250 If [Radeon 9000]",
+"		10f1 0002  RV250 If [Tachyon G9000 PRO]",
+"		148c 2039  RV250 If [Radeon 9000 Pro 'Evil Commando']",
+"		1509 9a00  RV250 If [Radeon 9000 'AT009']",
+"		1681 0040  RV250 If [3D prophet 9000]",
+"		174b 7176  RV250 If [Sapphire Radeon 9000 Pro]",
+"		174b 7192  RV250 If [Radeon 9000 'Atlantis']",
+"		17af 2005  RV250 If [Excalibur Radeon 9000 Pro]",
+"		17af 2006  RV250 If [Excalibur Radeon 9000]",
+"	4967  Radeon RV250 Ig [Radeon 9000]",
+"	496e  Radeon RV250 [Radeon 9000] (Secondary)",
+"	4a48  R420 JH [Radeon X800]",
+"	4a49  R420 JI [Radeon X800PRO]",
+"	4a4a  R420 JJ [Radeon X800SE]",
+"	4a4b  R420 JK [Radeon X800]",
+"	4a4c  R420 JL [Radeon X800]",
+"	4a4d  R420 JM [FireGL X3]",
+"	4a4e  M18 JN [Radeon Mobility 9800]",
+"	4a50  R420 JP [Radeon X800XT]",
+"	4a70  R420 [X800XT-PE] (Secondary)",
+"	4b49  R480 [Radeon X850XT]",
+"	4b4b  R480 [Radeon X850Pro]",
+"	4b4c  R481 [Radeon X850XT-PE]",
+"	4b69  R480 [Radeon X850XT] (Secondary)",
+"	4b6b  R480 [Radeon X850Pro] (Secondary)",
+"	4b6c  R481 [Radeon X850XT-PE] (Secondary)",
+"	4c42  3D Rage LT Pro AGP-133",
+"		0e11 b0e7  Rage LT Pro (Compaq Presario 5240)",
+"		0e11 b0e8  Rage 3D LT Pro",
+"		0e11 b10e  3D Rage LT Pro (Compaq Armada 1750)",
+"		1002 0040  Rage LT Pro AGP 2X",
+"		1002 0044  Rage LT Pro AGP 2X",
+"		1002 4c42  Rage LT Pro AGP 2X",
+"		1002 8001  Rage LT Pro AGP 2X",
+"		1028 0085  Rage 3D LT Pro",
+"	4c44  3D Rage LT Pro AGP-66",
+"	4c45  Rage Mobility M3 AGP",
+"	4c46  Rage Mobility M3 AGP 2x",
+"		1028 00b1  Latitude C600",
+"	4c47  3D Rage LT-G 215LG",
+"	4c49  3D Rage LT Pro",
+"		1002 0004  Rage LT Pro",
+"		1002 0040  Rage LT Pro",
+"		1002 0044  Rage LT Pro",
+"		1002 4c49  Rage LT Pro",
+"	4c4d  Rage Mobility P/M AGP 2x",
+"		0e11 b111  Armada M700",
+"		0e11 b160  Armada E500",
+"		1002 0084  Xpert 98 AGP 2X (Mobility)",
+"		1014 0154  ThinkPad A20m/A21m",
+"		1028 00aa  Latitude CPt",
+"		1028 00bb  Latitude CPx",
+"		10e1 10cf  Fujitsu Siemens LifeBook C Series",
+"		1179 ff00  Satellite 1715XCDS laptop",
+"		13bd 1019  PC-AR10",
+"	4c4e  Rage Mobility L AGP 2x",
+"	4c50  3D Rage LT Pro",
+"		1002 4c50  Rage LT Pro",
+"	4c51  3D Rage LT Pro",
+"	4c52  Rage Mobility P/M",
+"		1033 8112  Versa Note VXi",
+"	4c53  Rage Mobility L",
+"	4c54  264LT [Mach64 LT]",
+"	4c57  Radeon Mobility M7 LW [Radeon Mobility 7500]",
+"		1014 0517  ThinkPad T30",
+"		1028 00e6  Radeon Mobility M7 LW (Dell Inspiron 8100)",
+"		1028 012a  Latitude C640",
+"		144d c006  Radeon Mobility M7 LW in vpr Matrix 170B4",
+"	4c58  Radeon RV200 LX [Mobility FireGL 7800 M7]",
+"	4c59  Radeon Mobility M6 LY",
+"		0e11 b111  Evo N600c",
+"		1014 0235  ThinkPad A30/A30p (2652/2653)",
+"		1014 0239  ThinkPad X22/X23/X24",
+"		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP",
+"		104d 8140  PCG-Z1SP laptop",
+"		1509 1930  Medion MD9703",
+"	4c5a  Radeon Mobility M6 LZ",
+"	4c64  Radeon R250 Ld [Radeon Mobility 9000 M9]",
+"	4c65  Radeon R250 Le [Radeon Mobility 9000 M9]",
+"	4c66  Radeon R250 [Radeon Mobility 9200]",
+"	4c67  Radeon R250 Lg [Radeon Mobility 9000 M9]",
+"	4c6e  Radeon R250 Ln [Radeon Mobility 9000 M9] [Secondary]",
+"	4d46  Rage Mobility M4 AGP",
+"	4d4c  Rage Mobility M4 AGP",
+"	4e44  Radeon R300 ND [Radeon 9700 Pro]",
+"		1002 515e  Radeon ES1000",
+"		1002 5965  Radeon ES1000",
+"	4e45  Radeon R300 NE [Radeon 9500 Pro]",
+"		1002 0002  Radeon R300 NE [Radeon 9500 Pro]",
+"		1681 0002  Hercules 3D Prophet 9500 PRO [Radeon 9500 Pro]",
+"	4e46  RV350 NF [Radeon 9600]",
+"	4e47  Radeon R300 NG [FireGL X1]",
+"	4e48  Radeon R350 [Radeon 9800 Pro]",
+"	4e49  Radeon R350 [Radeon 9800]",
+"	4e4a  RV350 NJ [Radeon 9800 XT]",
+"	4e4b  R350 NK [Fire GL X2]",
+"	4e50  RV350 [Mobility Radeon 9600 M10]",
+"		1025 005a  TravelMate 290",
+"		103c 088c  NC8000 laptop",
+"		103c 0890  NC6000 laptop",
+"		1462 0311  MSI M510A",
+"		1734 1055  Amilo M1420W",
+"	4e51  M10 NQ [Radeon Mobility 9600]",
+"	4e52  RV350 [Mobility Radeon 9600 M10]",
+"	4e53  M10 NS [Radeon Mobility 9600]",
+"	4e54  M10 NT [FireGL Mobility T2]",
+"	4e56  M11 NV [FireGL Mobility T2e]",
+"	4e64  Radeon R300 [Radeon 9700 Pro] (Secondary)",
+"	4e65  Radeon R300 [Radeon 9500 Pro] (Secondary)",
+"		1002 0003  Radeon R300 NE [Radeon 9500 Pro]",
+"		1681 0003  Hercules 3D Prophet 9500 PRO [Radeon 9500 Pro] (Secondary)",
+"	4e66  RV350 NF [Radeon 9600] (Secondary)",
+"	4e67  Radeon R300 [FireGL X1] (Secondary)",
+"	4e68  Radeon R350 [Radeon 9800 Pro] (Secondary)",
+"	4e69  Radeon R350 [Radeon 9800] (Secondary)",
+"	4e6a  RV350 NJ [Radeon 9800 XT] (Secondary)",
+"		1002 4e71  ATI Technologies Inc M10 NQ [Radeon Mobility 9600]",
+"	4e71  M10 NQ [Radeon Mobility 9600] (Secondary)",
+"	4f72  RV250 [Radeon 9000 Series]",
+"	4f73  Radeon RV250 [Radeon 9000 Series] (Secondary)",
+"	5041  Rage 128 PA/PRO",
+"	5042  Rage 128 PB/PRO AGP 2x",
+"	5043  Rage 128 PC/PRO AGP 4x",
+"	5044  Rage 128 PD/PRO TMDS",
+"		1002 0028  Rage 128 AIW",
+"		1002 0029  Rage 128 AIW",
+"	5045  Rage 128 PE/PRO AGP 2x TMDS",
+"	5046  Rage 128 PF/PRO AGP 4x TMDS",
+"		1002 0004  Rage Fury Pro",
+"		1002 0008  Rage Fury Pro/Xpert 2000 Pro",
+"		1002 0014  Rage Fury Pro",
+"		1002 0018  Rage Fury Pro/Xpert 2000 Pro",
+"		1002 0028  Rage 128 Pro AIW AGP",
+"		1002 002a  Rage 128 Pro AIW AGP",
+"		1002 0048  Rage Fury Pro",
+"		1002 2000  Rage Fury MAXX AGP 4x (TMDS) (VGA device)",
+"		1002 2001  Rage Fury MAXX AGP 4x (TMDS) (Extra device\?!)",
+"	5047  Rage 128 PG/PRO",
+"	5048  Rage 128 PH/PRO AGP 2x",
+"	5049  Rage 128 PI/PRO AGP 4x",
+"	504a  Rage 128 PJ/PRO TMDS",
+"	504b  Rage 128 PK/PRO AGP 2x TMDS",
+"	504c  Rage 128 PL/PRO AGP 4x TMDS",
+"	504d  Rage 128 PM/PRO",
+"	504e  Rage 128 PN/PRO AGP 2x",
+"	504f  Rage 128 PO/PRO AGP 4x",
+"	5050  Rage 128 PP/PRO TMDS [Xpert 128]",
+"		1002 0008  Xpert 128",
+"	5051  Rage 128 PQ/PRO AGP 2x TMDS",
+"	5052  Rage 128 PR/PRO AGP 4x TMDS",
+"	5053  Rage 128 PS/PRO",
+"	5054  Rage 128 PT/PRO AGP 2x",
+"	5055  Rage 128 PU/PRO AGP 4x",
+"	5056  Rage 128 PV/PRO TMDS",
+"	5057  Rage 128 PW/PRO AGP 2x TMDS",
+"	5058  Rage 128 PX/PRO AGP 4x TMDS",
+"	5144  Radeon R100 QD [Radeon 7200]",
+"		1002 0008  Radeon 7000/Radeon VE",
+"		1002 0009  Radeon 7000/Radeon",
+"		1002 000a  Radeon 7000/Radeon",
+"		1002 001a  Radeon 7000/Radeon",
+"		1002 0029  Radeon AIW",
+"		1002 0038  Radeon 7000/Radeon",
+"		1002 0039  Radeon 7000/Radeon",
+"		1002 008a  Radeon 7000/Radeon",
+"		1002 00ba  Radeon 7000/Radeon",
+"		1002 0139  Radeon 7000/Radeon",
+"		1002 028a  Radeon 7000/Radeon",
+"		1002 02aa  Radeon AIW",
+"		1002 053a  Radeon 7000/Radeon",
+"	5145  Radeon R100 QE",
+"	5146  Radeon R100 QF",
+"	5147  Radeon R100 QG",
+"	5148  Radeon R200 QH [Radeon 8500]",
+"		1002 010a  FireGL 8800 64Mb",
+"		1002 0152  FireGL 8800 128Mb",
+"		1002 0162  FireGL 8700 32Mb",
+"		1002 0172  FireGL 8700 64Mb",
+"	5149  Radeon R200 QI",
+"	514a  Radeon R200 QJ",
+"	514b  Radeon R200 QK",
+"	514c  Radeon R200 QL [Radeon 8500 LE]",
+"		1002 003a  Radeon R200 QL [Radeon 8500 LE]",
+"		1002 013a  Radeon 8500",
+"		148c 2026  R200 QL [Radeon 8500 Evil Master II Multi Display Edition]",
+"		1681 0010  Radeon 8500 [3D Prophet 8500 128Mb]",
+"		174b 7149  Radeon R200 QL [Sapphire Radeon 8500 LE]",
+"	514d  Radeon R200 QM [Radeon 9100]",
+"	514e  Radeon R200 QN [Radeon 8500LE]",
+"	514f  Radeon R200 QO [Radeon 8500LE]",
+"	5154  R200 QT [Radeon 8500]",
+"	5155  R200 QU [Radeon 9100]",
+"	5157  Radeon RV200 QW [Radeon 7500]",
+"		1002 013a  Radeon 7500",
+"		1002 103a  Dell Optiplex GX260",
+"		1458 4000  RV200 QW [RADEON 7500 PRO MAYA AR]",
+"		148c 2024  RV200 QW [Radeon 7500LE Dual Display]",
+"		148c 2025  RV200 QW [Radeon 7500 Evil Master Multi Display Edition]",
+"		148c 2036  RV200 QW [Radeon 7500 PCI Dual Display]",
+"		174b 7146  RV200 QW [Radeon 7500 LE]",
+"		174b 7147  RV200 QW [Sapphire Radeon 7500LE]",
+"		174b 7161  Radeon RV200 QW [Radeon 7500 LE]",
+"		17af 0202  RV200 QW [Excalibur Radeon 7500LE]",
+"	5158  Radeon RV200 QX [Radeon 7500]",
+"	5159  Radeon RV100 QY [Radeon 7000/VE]",
+"		1002 000a  Radeon 7000/Radeon VE",
+"		1002 000b  Radeon 7000",
+"		1002 0038  Radeon 7000/Radeon VE",
+"		1002 003a  Radeon 7000/Radeon VE",
+"		1002 00ba  Radeon 7000/Radeon VE",
+"		1002 013a  Radeon 7000/Radeon VE",
+"		1002 0908  XVR-100 (supplied by Sun)",
+"		1014 029a  Remote Supervisor Adapter II (RSA2)",
+"		1014 02c8  IBM eServer xSeries server mainboard",
+"		1028 019a  PowerEdge SC1425",
+"		1458 4002  RV100 QY [RADEON 7000 PRO MAYA AV Series]",
+"		148c 2003  RV100 QY [Radeon 7000 Multi-Display Edition]",
+"		148c 2023  RV100 QY [Radeon 7000 Evil Master Multi-Display]",
+"		174b 7112  RV100 QY [Sapphire Radeon VE 7000]",
+"		174b 7c28  Sapphire Radeon VE 7000 DDR",
+"		1787 0202  RV100 QY [Excalibur Radeon 7000]",
+"	515a  Radeon RV100 QZ [Radeon 7000/VE]",
+"	515e  ES1000",
+"	515f  ES1000",
+"	5168  Radeon R200 Qh",
+"	5169  Radeon R200 Qi",
+"	516a  Radeon R200 Qj",
+"	516b  Radeon R200 Qk",
+"	516c  Radeon R200 Ql",
+"	5245  Rage 128 RE/SG",
+"		1002 0008  Xpert 128",
+"		1002 0028  Rage 128 AIW",
+"		1002 0029  Rage 128 AIW",
+"		1002 0068  Rage 128 AIW",
+"	5246  Rage 128 RF/SG AGP",
+"		1002 0004  Magnum/Xpert 128/Xpert 99",
+"		1002 0008  Magnum/Xpert128/X99/Xpert2000",
+"		1002 0028  Rage 128 AIW AGP",
+"		1002 0044  Rage Fury/Xpert 128/Xpert 2000",
+"		1002 0068  Rage 128 AIW AGP",
+"		1002 0448  Rage Fury",
+"	5247  Rage 128 RG",
+"	524b  Rage 128 RK/VR",
+"	524c  Rage 128 RL/VR AGP",
+"		1002 0008  Xpert 99/Xpert 2000",
+"		1002 0088  Xpert 99",
+"	5345  Rage 128 SE/4x",
+"	5346  Rage 128 SF/4x AGP 2x",
+"		1002 0048  RAGE 128 16MB VGA TVOUT AMC PAL",
+"	5347  Rage 128 SG/4x AGP 4x",
+"	5348  Rage 128 SH",
+"	534b  Rage 128 SK/4x",
+"	534c  Rage 128 SL/4x AGP 2x",
+"	534d  Rage 128 SM/4x AGP 4x",
+"		1002 0008  Xpert 99/Xpert 2000",
+"		1002 0018  Xpert 2000",
+"	534e  Rage 128 4x",
+"	5354  Mach 64 VT",
+"		1002 5654  Mach 64 reference",
+"	5446  Rage 128 Pro Ultra TF",
+"		1002 0004  Rage Fury Pro",
+"		1002 0008  Rage Fury Pro/Xpert 2000 Pro",
+"		1002 0018  Rage Fury Pro/Xpert 2000 Pro",
+"		1002 0028  Rage 128 AIW Pro AGP",
+"		1002 0029  Rage 128 AIW",
+"		1002 002a  Rage 128 AIW Pro AGP",
+"		1002 002b  Rage 128 AIW",
+"		1002 0048  Xpert 2000 Pro",
+"	544c  Rage 128 Pro Ultra TL",
+"	5452  Rage 128 Pro Ultra TR",
+"		1002 001c  Rage 128 Pro 4XL",
+"		103c 1279  Rage 128 Pro 4XL",
+"	5453  Rage 128 Pro Ultra TS",
+"	5454  Rage 128 Pro Ultra TT",
+"	5455  Rage 128 Pro Ultra TU",
+"	5460  M22 [Radeon Mobility M300]",
+"	5462  M24 [Radeon Mobility X600]",
+"	5464  M22 [FireGL GL]",
+"	5548  R423 UH [Radeon X800 (PCIE)]",
+"	5549  R423 UI [Radeon X800PRO (PCIE)]",
+"	554a  R423 UJ [Radeon X800LE (PCIE)]",
+"	554b  R423 UK [Radeon X800SE (PCIE)]",
+"	554d  R430 [Radeon X800 XL] (PCIe)",
+"	554f  R430 [Radeon X800 (PCIE)]",
+"	5550  R423 [Fire GL V7100]",
+"	5551  R423 UQ [FireGL V7200 (PCIE)]",
+"	5552  R423 UR [FireGL V5100 (PCIE)]",
+"	5554  R423 UT [FireGL V7100 (PCIE)]",
+"	556b  Radeon R423 UK (PCIE) [X800 SE] (Secondary)",
+"	556d  R430 [Radeon X800 XL] (PCIe) Secondary",
+"	556f  R430 [Radeon X800 (PCIE) Secondary]",
+"	564a  M26 [Mobility FireGL V5000]",
+"	564b  M26 [Mobility FireGL V5000]",
+"	564f  M26 [Radeon Mobility X700 XL] (PCIE)",
+"	5652  M26 [Radeon Mobility X700]",
+"	5653  Radeon Mobility X700 (PCIE)",
+"		1025 0080  Aspire 5024WLMi",
+"	5654  264VT [Mach64 VT]",
+"		1002 5654  Mach64VT Reference",
+"	5655  264VT3 [Mach64 VT3]",
+"	5656  264VT4 [Mach64 VT4]",
+"	5830  RS300 Host Bridge",
+"	5831  RS300 Host Bridge",
+"	5832  RS300 Host Bridge",
+"	5833  Radeon 9100 IGP Host Bridge",
+"	5834  Radeon 9100 IGP",
+"	5835  RS300M AGP [Radeon Mobility 9100IGP]",
+"	5838  Radeon 9100 IGP AGP Bridge",
+"	5940  RV280 [Radeon 9200 PRO] (Secondary)",
+"	5941  RV280 [Radeon 9200] (Secondary)",
+"		1458 4019  Gigabyte Radeon 9200",
+"		174b 7c12  Sapphire Radeon 9200",
+"		17af 200d  Excalibur Radeon 9200",
+"		18bc 0050  GeXcube GC-R9200-C3 (Secondary)",
+"	5944  RV280 [Radeon 9200 SE (PCI)]",
+"	5950  RS480 Host Bridge",
+"		1025 0080  Aspire 5024WLMMi",
+"		103c 308b  MX6125",
+"	5951  ATI Radeon Xpress 200 (RS480/RS482/RX480/RX482) Chipset - Host bridge",
+"	5954  RS480 [Radeon Xpress 200G Series]",
+"		1002 5954  RV370 [Radeon Xpress 200G Series]",
+"	5955  ATI Radeon XPRESS 200M 5955 (PCIE)",
+"		1002 5955  RS480 0x5955 [ATI Radeon XPRESS 200M 5955 (PCIE)]",
+"		103c 308b  MX6125",
+"	5960  RV280 [Radeon 9200 PRO]",
+"	5961  RV280 [Radeon 9200]",
+"		1002 2f72  All-in-Wonder 9200 Series",
+"		1019 4c30  Radeon 9200 VIVO",
+"		12ab 5961  YUAN SMARTVGA Radeon 9200",
+"		1458 4018  Gigabyte Radeon 9200",
+"		174b 7c13  Sapphire Radeon 9200",
+"		17af 200c  Excalibur Radeon 9200",
+"		18bc 0050  Radeon 9200 Game Buster",
+"		18bc 0051  GeXcube GC-R9200-C3",
+"		18bc 0053  Radeon 9200 Game Buster VIVO",
+"	5962  RV280 [Radeon 9200]",
+"	5964  RV280 [Radeon 9200 SE]",
+"		1043 c006  ASUS Radeon 9200 SE / TD / 128M",
+"		1458 4018  Radeon 9200 SE",
+"		1458 4032  Radeon 9200 SE 128MB",
+"		147b 6191  R9200SE-DT",
+"		148c 2073  CN-AG92E",
+"		174b 7c13  Sapphire Radeon 9200 SE",
+"		1787 5964  Excalibur 9200SE VIVO 128M",
+"		17af 2012  Radeon 9200 SE Excalibur",
+"		18bc 0170  Sapphire Radeon 9200 SE 128MB Game Buster",
+"		18bc 0173  GC-R9200L(SE)-C3H [Radeon 9200 Game Buster]",
+"	5969  ES1000",
+"	5974  RS482 [Radeon Xpress 200]",
+"	5975  RS482 [Radeon Xpress 200M]",
+"	5a34  RS480 PCI-X Root Port",
+"	5a36  RS480 PCI Bridge",
+"	5a38  RS480 PCI Bridge",
+"	5a39  RS480 PCI Bridge",
+"	5a3f  RS480 PCI Bridge",
+"	5a41  RS400 [Radeon Xpress 200]",
+"	5a42  RS400 [Radeon Xpress 200M]",
+"	5a61  RC410 [Radeon Xpress 200]",
+"	5a62  RC410 [Radeon Xpress 200M]",
+"	5b60  RV370 5B60 [Radeon X300 (PCIE)]",
+"		1043 002a  Extreme AX300SE-X",
+"		1043 032e  Extreme AX300/TD",
+"		1462 0400  RX300SE-TD128E (MS-8940 REV:200)",
+"		1462 0402  RX300SE-TD128E (MS-8940)",
+"	5b62  RV370 5B62 [Radeon X600 (PCIE)]",
+"	5b63  RV370 [Sapphire X550 Silent]",
+"	5b64  RV370 5B64 [FireGL V3100 (PCIE)]",
+"	5b65  RV370 5B65 [FireGL D1100 (PCIE)]",
+"	5b70  RV370 [Radeon X300SE]",
+"		1462 0403  RX300SE-TD128E (MS-8940) (secondary display)",
+"	5b72  Radeon X600(RV380)",
+"	5b73  RV370 secondary [Sapphire X550 Silent]",
+"	5b74  RV370 5B64 [FireGL V3100 (PCIE)] (Secondary)",
+"	5c61  M9+ 5C61 [Radeon Mobility 9200 (AGP)]",
+"	5c63  M9+ 5C63 [Radeon Mobility 9200 (AGP)]",
+"		1002 5c63  Apple iBook G4 2004",
+"	5d44  RV280 [Radeon 9200 SE] (Secondary)",
+"		1458 4019  Radeon 9200 SE (Secondary)",
+"		1458 4032  Radeon 9200 SE 128MB",
+"		174b 7c12  Sapphire Radeon 9200 SE (Secondary)",
+"		1787 5965  Excalibur 9200SE VIVO 128M (Secondary)",
+"		17af 2013  Radeon 9200 SE Excalibur (Secondary)",
+"		18bc 0171  Radeon 9200 SE 128MB Game Buster (Secondary)",
+"		18bc 0172  GC-R9200L(SE)-C3H [Radeon 9200 Game Buster]",
+"	5d48  M28 [Radeon Mobility X800XT]",
+"	5d49  M28 [Mobility FireGL V5100]",
+"	5d4a  Mobility Radeon X800",
+"	5d4d  R480 [Radeon X850XT Platinum (PCIE)]",
+"	5d4f  R480 [Radeon X800 GTO (PCIE)]",
+"	5d52  R480 [Radeon X850XT (PCIE)] (Primary)",
+"		1002 0b12  PowerColor X850XT PCIe Primary",
+"		1002 0b13  PowerColor X850XT PCIe Secondary",
+"	5d57  R423 5F57 [Radeon X800XT (PCIE)]",
+"	5d6d  R480 [Radeon X850XT Platinum (PCIE)] (Secondary)",
+"	5d6f  R480 [Radeon X800 GTO (PCIE)] (Secondary)",
+"	5d72  R480 [Radeon X850XT (PCIE)] (Secondary)",
+"	5d77  R423 5F57 [Radeon X800XT (PCIE)] (Secondary)",
+"	5e48  RV410 [FireGL V5000]",
+"	5e49  RV410 [FireGL V3300]",
+"	5e4a  RV410 [Radeon X700XT]",
+"	5e4b  RV410 [Radeon X700 Pro (PCIE)]",
+"	5e4c  RV410 [Radeon X700SE]",
+"	5e4d  RV410 [Radeon X700 (PCIE)]",
+"		148c 2116  PowerColor Bravo X700",
+"	5e4f  RV410 [Radeon X700]",
+"	5e6b  RV410 [Radeon X700 Pro (PCIE)] Secondary",
+"	5e6d  RV410 [Radeon X700 (PCIE)] (Secondary)",
+"		148c 2117  PowerColor Bravo X700",
+"	5f57  R423 [Radeon X800XT (PCIE)]",
+"	700f  PCI Bridge [IGP 320M]",
+"	7010  PCI Bridge [IGP 340M]",
+"	7100  R520 [Radeon X1800]",
+"	7105  R520 [FireGL]",
+"	7109  R520 [Radeon X1800]",
+"		1002 0322  All-in-Wonder X1800XL",
+"		1002 0d02  Radeon X1800 CrossFire Edition",
+"	7120  R520 [Radeon X1800] (Secondary)",
+"	7129  R520 [Radeon X1800] (Secondary)",
+"		1002 0323  All-in-Wonder X1800XL (Secondary)",
+"		1002 0d03  Radeon X1800 CrossFire Edition (Secondary)",
+"	7142  RV515 [Radeon X1300]",
+"		1002 0322  All-in-Wonder 2006 PCI-E Edition",
+"	7145  Radeon Mobility X1400",
+"	7146  RV515 [Radeon X1300]",
+"		1002 0322  All-in-Wonder 2006 PCI-E Edition",
+"	7149  M52 [ATI Mobility Radeon X1300]",
+"	714a  M52 [ATI Mobility Radeon X1300]",
+"	714b  M52 [ATI Mobility Radeon X1300]",
+"	714c  M52 [ATI Mobility Radeon X1300]",
+"	7162  RV515 [Radeon X1300] (Secondary)",
+"		1002 0323  All-in-Wonder 2006 PCI-E Edition (Secondary)",
+"	7166  RV515 [Radeon X1300] (Secondary)",
+"		1002 0323  All-in-Wonder 2006 PCI-E Edition (Secondary)",
+"	71c0  RV530 [Radeon X1600]",
+"	71c2  RV530 [Radeon X1600]",
+"	71c4  M56GL [ATI Mobility FireGL V5200]",
+"	71c5  M56P [Radeon Mobility X1600]",
+"	71e0  RV530 [Radeon X1600] (Secondary)",
+"	71e2  RV530 [Radeon X1600] (Secondary)",
+"	7833  Radeon 9100 IGP Host Bridge",
+"	7834  Radeon 9100 PRO IGP",
+"	7835  Radeon Mobility 9200 IGP",
+"	7838  Radeon 9100 IGP PCI/AGP Bridge",
+"	7c37  RV350 AQ [Radeon 9600 SE]",
+"	cab0  AGP Bridge [IGP 320M]",
+"	cab2  RS200/RS200M AGP Bridge [IGP 340M]",
+"	cab3  R200 AGP Bridge [Mobility Radeon 7000 IGP]",
+"	cbb2  RS200/RS200M AGP Bridge [IGP 340M]",
+"1003  ULSI Systems",
+"	0201  US201",
+"1004  VLSI Technology Inc",
+"	0005  82C592-FC1",
+"	0006  82C593-FC1",
+"	0007  82C594-AFC2",
+"	0008  82C596/7 [Wildcat]",
+"	0009  82C597-AFC2",
+"	000c  82C541 [Lynx]",
+"	000d  82C543 [Lynx]",
+"	0101  82C532",
+"	0102  82C534 [Eagle]",
+"	0103  82C538",
+"	0104  82C535",
+"	0105  82C147",
+"	0200  82C975",
+"	0280  82C925",
+"	0304  QSound ThunderBird PCI Audio",
+"		1004 0304  QSound ThunderBird PCI Audio",
+"		122d 1206  DSP368 Audio",
+"		1483 5020  XWave Thunder 3D Audio",
+"	0305  QSound ThunderBird PCI Audio Gameport",
+"		1004 0305  QSound ThunderBird PCI Audio Gameport",
+"		122d 1207  DSP368 Audio Gameport",
+"		1483 5021  XWave Thunder 3D Audio Gameport",
+"	0306  QSound ThunderBird PCI Audio Support Registers",
+"		1004 0306  QSound ThunderBird PCI Audio Support Registers",
+"		122d 1208  DSP368 Audio Support Registers",
+"		1483 5022  XWave Thunder 3D Audio Support Registers",
+"	0307  Thunderbird",
+"	0308  Thunderbird",
+"	0702  VAS96011 [Golden Gate II]",
+"	0703  Tollgate",
+"1005  Avance Logic Inc. [ALI]",
+"	2064  ALG2032/2064",
+"	2128  ALG2364A",
+"	2301  ALG2301",
+"	2302  ALG2302",
+"	2364  ALG2364",
+"	2464  ALG2364A",
+"	2501  ALG2564A/25128A",
+"1006  Reply Group",
+"1007  NetFrame Systems Inc",
+"1008  Epson",
+"100a  Phoenix Technologies",
+"100b  National Semiconductor Corporation",
+"	0001  DP83810",
+"	0002  87415/87560 IDE",
+"	000e  87560 Legacy I/O",
+"	000f  FireWire Controller",
+"	0011  NS87560 National PCI System I/O",
+"	0012  USB Controller",
+"	0020  DP83815 (MacPhyter) Ethernet Controller",
+"		103c 0024  Pavilion ze4400 builtin Network",
+"		12d9 000c  Aculab E1/T1 PMXc cPCI carrier card",
+"		1385 f311  FA311 / FA312 (FA311 with WoL HW)",
+"	0021  PC87200 PCI to ISA Bridge",
+"	0022  DP83820 10/100/1000 Ethernet Controller",
+"	0028  Geode GX2 Host Bridge",
+"	002a  CS5535 South Bridge",
+"	002b  CS5535 ISA bridge",
+"	002d  CS5535 IDE",
+"	002e  CS5535 Audio",
+"	002f  CS5535 USB",
+"	0030  Geode GX2 Graphics Processor",
+"	0035  DP83065 [Saturn] 10/100/1000 Ethernet Controller",
+"	0500  SCx200 Bridge",
+"	0501  SCx200 SMI",
+"	0502  SCx200 IDE",
+"	0503  SCx200 Audio",
+"	0504  SCx200 Video",
+"	0505  SCx200 XBus",
+"	0510  SC1100 Bridge",
+"	0511  SC1100 SMI",
+"	0515  SC1100 XBus",
+"	d001  87410 IDE",
+"100c  Tseng Labs Inc",
+"	3202  ET4000/W32p rev A",
+"	3205  ET4000/W32p rev B",
+"	3206  ET4000/W32p rev C",
+"	3207  ET4000/W32p rev D",
+"	3208  ET6000",
+"	4702  ET6300",
+"100d  AST Research Inc",
+"100e  Weitek",
+"	9000  P9000 Viper",
+"	9001  P9000 Viper",
+"	9002  P9000 Viper",
+"	9100  P9100 Viper Pro/SE",
+"1010  Video Logic, Ltd.",
+"1011  Digital Equipment Corporation",
+"	0001  DECchip 21050",
+"	0002  DECchip 21040 [Tulip]",
+"	0004  DECchip 21030 [TGA]",
+"	0007  NVRAM [Zephyr NVRAM]",
+"	0008  KZPSA [KZPSA]",
+"	0009  DECchip 21140 [FasterNet]",
+"		1025 0310  21140 Fast Ethernet",
+"		10b8 2001  SMC9332BDT EtherPower 10/100",
+"		10b8 2002  SMC9332BVT EtherPower T4 10/100",
+"		10b8 2003  SMC9334BDT EtherPower 10/100 (1-port)",
+"		1109 2400  ANA-6944A/TX Fast Ethernet",
+"		1112 2300  RNS2300 Fast Ethernet",
+"		1112 2320  RNS2320 Fast Ethernet",
+"		1112 2340  RNS2340 Fast Ethernet",
+"		1113 1207  EN-1207-TX Fast Ethernet",
+"		1186 1100  DFE-500TX Fast Ethernet",
+"		1186 1112  DFE-570TX Fast Ethernet",
+"		1186 1140  DFE-660 Cardbus Ethernet 10/100",
+"		1186 1142  DFE-660 Cardbus Ethernet 10/100",
+"		11f6 0503  Freedomline Fast Ethernet",
+"		1282 9100  AEF-380TXD Fast Ethernet",
+"		1385 1100  FA310TX Fast Ethernet",
+"		2646 0001  KNE100TX Fast Ethernet",
+"	000a  21230 Video Codec",
+"	000d  PBXGB [TGA2]",
+"	000f  PCI-to-PDQ Interface Chip [PFI]",
+"		1011 def1  FDDI controller (DEFPA)",
+"		103c def1  FDDI controller (3X-DEFPA)",
+"	0014  DECchip 21041 [Tulip Pass 3]",
+"		1186 0100  DE-530+",
+"	0016  DGLPB [OPPO]",
+"	0017  PV-PCI Graphics Controller (ZLXp-L)",
+"	0019  DECchip 21142/43",
+"		1011 500a  DE500A Fast Ethernet",
+"		1011 500b  DE500B Fast Ethernet",
+"		1014 0001  10/100 EtherJet Cardbus",
+"		1025 0315  ALN315 Fast Ethernet",
+"		1033 800c  PC-9821-CS01 100BASE-TX Interface Card",
+"		1033 800d  PC-9821NR-B06 100BASE-TX Interface Card",
+"		108d 0016  Rapidfire 2327 10/100 Ethernet",
+"		108d 0017  GoCard 2250 Ethernet 10/100 Cardbus",
+"		10b8 2005  SMC8032DT Extreme Ethernet 10/100",
+"		10b8 8034  SMC8034 Extreme Ethernet 10/100",
+"		10ef 8169  Cardbus Fast Ethernet",
+"		1109 2a00  ANA-6911A/TX Fast Ethernet",
+"		1109 2b00  ANA-6911A/TXC Fast Ethernet",
+"		1109 3000  ANA-6922/TX Fast Ethernet",
+"		1113 1207  Cheetah Fast Ethernet",
+"		1113 2220  Cardbus Fast Ethernet",
+"		115d 0002  Cardbus Ethernet 10/100",
+"		1179 0203  Fast Ethernet",
+"		1179 0204  Cardbus Fast Ethernet",
+"		1186 1100  DFE-500TX Fast Ethernet",
+"		1186 1101  DFE-500TX Fast Ethernet",
+"		1186 1102  DFE-500TX Fast Ethernet",
+"		1186 1112  DFE-570TX Quad Fast Ethernet",
+"		1259 2800  AT-2800Tx Fast Ethernet",
+"		1266 0004  Eagle Fast EtherMAX",
+"		12af 0019  NetFlyer Cardbus Fast Ethernet",
+"		1374 0001  Cardbus Ethernet Card 10/100",
+"		1374 0002  Cardbus Ethernet Card 10/100",
+"		1374 0007  Cardbus Ethernet Card 10/100",
+"		1374 0008  Cardbus Ethernet Card 10/100",
+"		1385 2100  FA510",
+"		1395 0001  10/100 Ethernet CardBus PC Card",
+"		13d1 ab01  EtherFast 10/100 Cardbus (PCMPC200)",
+"		14cb 0100  LNDL-100N 100Base-TX Ethernet PC Card",
+"		8086 0001  EtherExpress PRO/100 Mobile CardBus 32",
+"	001a  Farallon PN9000SX Gigabit Ethernet",
+"	0021  DECchip 21052",
+"	0022  DECchip 21150",
+"	0023  DECchip 21150",
+"	0024  DECchip 21152",
+"	0025  DECchip 21153",
+"	0026  DECchip 21154",
+"	0034  56k Modem Cardbus",
+"		1374 0003  56k Modem Cardbus",
+"	0045  DECchip 21553",
+"	0046  DECchip 21554",
+"		0e11 4050  Integrated Smart Array",
+"		0e11 4051  Integrated Smart Array",
+"		0e11 4058  Integrated Smart Array",
+"		103c 10c2  Hewlett-Packard NetRAID-4M",
+"		12d9 000a  IP Telephony card",
+"		4c53 1050  CT7 mainboard",
+"		4c53 1051  CE7 mainboard",
+"		9005 0364  5400S (Mustang)",
+"		9005 0365  5400S (Mustang)",
+"		9005 1364  Dell PowerEdge RAID Controller 2",
+"		9005 1365  Dell PowerEdge RAID Controller 2",
+"		e4bf 1000  CC8-1-BLUES",
+"	1065  StrongARM DC21285",
+"		1069 0020  DAC960P / DAC1164P",
+"1012  Micronics Computers Inc",
+"1013  Cirrus Logic",
+"	0038  GD 7548",
+"	0040  GD 7555 Flat Panel GUI Accelerator",
+"	004c  GD 7556 Video/Graphics LCD/CRT Ctrlr",
+"	00a0  GD 5430/40 [Alpine]",
+"	00a2  GD 5432 [Alpine]",
+"	00a4  GD 5434-4 [Alpine]",
+"	00a8  GD 5434-8 [Alpine]",
+"	00ac  GD 5436 [Alpine]",
+"	00b0  GD 5440",
+"	00b8  GD 5446",
+"	00bc  GD 5480",
+"		1013 00bc  CL-GD5480",
+"	00d0  GD 5462",
+"	00d2  GD 5462 [Laguna I]",
+"	00d4  GD 5464 [Laguna]",
+"	00d5  GD 5464 BD [Laguna]",
+"	00d6  GD 5465 [Laguna]",
+"		13ce 8031  Barco Metheus 2 Megapixel, Dual Head",
+"		13cf 8031  Barco Metheus 2 Megapixel, Dual Head",
+"	00e8  GD 5436U",
+"	1100  CL 6729",
+"	1110  PD 6832 PCMCIA/CardBus Ctrlr",
+"	1112  PD 6834 PCMCIA/CardBus Ctrlr",
+"	1113  PD 6833 PCMCIA/CardBus Ctrlr",
+"	1200  GD 7542 [Nordic]",
+"	1202  GD 7543 [Viking]",
+"	1204  GD 7541 [Nordic Light]",
+"	4000  MD 5620 [CLM Data Fax Voice]",
+"	4400  CD 4400",
+"	6001  CS 4610/11 [CrystalClear SoundFusion Audio Accelerator]",
+"		1014 1010  CS4610 SoundFusion Audio Accelerator",
+"	6003  CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator]",
+"		1013 4280  Crystal SoundFusion PCI Audio Accelerator",
+"		1014 0153  ThinkPad A20m",
+"		153b 1136  SiXPack 5.1+",
+"		1681 0050  Game Theater XP",
+"		1681 a011  Fortissimo III 7.1",
+"	6004  CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator]",
+"	6005  Crystal CS4281 PCI Audio",
+"		1013 4281  Crystal CS4281 PCI Audio",
+"		10cf 10a8  Crystal CS4281 PCI Audio",
+"		10cf 10a9  Crystal CS4281 PCI Audio",
+"		10cf 10aa  Crystal CS4281 PCI Audio",
+"		10cf 10ab  Crystal CS4281 PCI Audio",
+"		10cf 10ac  Crystal CS4281 PCI Audio",
+"		10cf 10ad  Crystal CS4281 PCI Audio",
+"		10cf 10b4  Crystal CS4281 PCI Audio",
+"		1179 0001  Crystal CS4281 PCI Audio",
+"		14c0 000c  Crystal CS4281 PCI Audio",
+"1014  IBM",
+"	0002  PCI to MCA Bridge",
+"	0005  Alta Lite",
+"	0007  Alta MP",
+"	000a  Fire Coral",
+"	0017  CPU to PCI Bridge",
+"	0018  TR Auto LANstreamer",
+"	001b  GXT-150P",
+"	001c  Carrera",
+"	001d  82G2675",
+"	0020  GXT1000 Graphics Adapter",
+"	0022  IBM27-82351",
+"	002d  Python",
+"	002e  SCSI RAID Adapter [ServeRAID]",
+"		1014 002e  ServeRAID-3x",
+"		1014 022e  ServeRAID-4H",
+"	0031  2 Port Serial Adapter",
+"		1014 0031  2721 WAN IOA - 2 Port Sync Serial Adapter",
+"	0036  Miami",
+"	0037  82660 CPU to PCI Bridge",
+"	003a  CPU to PCI Bridge",
+"	003c  GXT250P/GXT255P Graphics Adapter",
+"	003e  16/4 Token ring UTP/STP controller",
+"		1014 003e  Token-Ring Adapter",
+"		1014 00cd  Token-Ring Adapter + Wake-On-LAN",
+"		1014 00ce  16/4 Token-Ring Adapter 2",
+"		1014 00cf  16/4 Token-Ring Adapter Special",
+"		1014 00e4  High-Speed 100/16/4 Token-Ring Adapter",
+"		1014 00e5  16/4 Token-Ring Adapter 2 + Wake-On-LAN",
+"		1014 016d  iSeries 2744 Card",
+"	0045  SSA Adapter",
+"	0046  MPIC interrupt controller",
+"	0047  PCI to PCI Bridge",
+"	0048  PCI to PCI Bridge",
+"	0049  Warhead SCSI Controller",
+"	004e  ATM Controller (14104e00)",
+"	004f  ATM Controller (14104f00)",
+"	0050  ATM Controller (14105000)",
+"	0053  25 MBit ATM Controller",
+"	0054  GXT500P/GXT550P Graphics Adapter",
+"	0057  MPEG PCI Bridge",
+"	005c  i82557B 10/100",
+"	005e  GXT800P Graphics Adapter",
+"	007c  ATM Controller (14107c00)",
+"	007d  3780IDSP [MWave]",
+"	008b  EADS PCI to PCI Bridge",
+"	008e  GXT3000P Graphics Adapter",
+"	0090  GXT 3000P",
+"		1014 008e  GXT-3000P",
+"	0091  SSA Adapter",
+"	0095  20H2999 PCI Docking Bridge",
+"	0096  Chukar chipset SCSI controller",
+"		1014 0097  iSeries 2778 DASD IOA",
+"		1014 0098  iSeries 2763 DASD IOA",
+"		1014 0099  iSeries 2748 DASD IOA",
+"	009f  PCI 4758 Cryptographic Accelerator",
+"	00a5  ATM Controller (1410a500)",
+"	00a6  ATM 155MBPS MM Controller (1410a600)",
+"	00b7  256-bit Graphics Rasterizer [Fire GL1]",
+"		1092 00b8  FireGL1 AGP 32Mb",
+"	00b8  GXT2000P Graphics Adapter",
+"	00be  ATM 622MBPS Controller (1410be00)",
+"	00dc  Advanced Systems Management Adapter (ASMA)",
+"	00fc  CPC710 Dual Bridge and Memory Controller (PCI-64)",
+"	0104  Gigabit Ethernet-SX Adapter",
+"	0105  CPC710 Dual Bridge and Memory Controller (PCI-32)",
+"	010f  Remote Supervisor Adapter (RSA)",
+"	0142  Yotta Video Compositor Input",
+"		1014 0143  Yotta Input Controller (ytin)",
+"	0144  Yotta Video Compositor Output",
+"		1014 0145  Yotta Output Controller (ytout)",
+"	0156  405GP PLB to PCI Bridge",
+"	015e  622Mbps ATM PCI Adapter",
+"	0160  64bit/66MHz PCI ATM 155 MMF",
+"	016e  GXT4000P Graphics Adapter",
+"	0170  GXT6000P Graphics Adapter",
+"	017d  GXT300P Graphics Adapter",
+"	0180  Snipe chipset SCSI controller",
+"		1014 0241  iSeries 2757 DASD IOA",
+"		1014 0264  Quad Channel PCI-X U320 SCSI RAID Adapter (2780)",
+"	0188  EADS-X PCI-X to PCI-X Bridge",
+"	01a7  PCI-X to PCI-X Bridge",
+"	01bd  ServeRAID Controller",
+"		1014 01be  ServeRAID-4M",
+"		1014 01bf  ServeRAID-4L",
+"		1014 0208  ServeRAID-4Mx",
+"		1014 020e  ServeRAID-4Lx",
+"		1014 022e  ServeRAID-4H",
+"		1014 0258  ServeRAID-5i",
+"		1014 0259  ServeRAID-5i",
+"	01c1  64bit/66MHz PCI ATM 155 UTP",
+"	01e6  Cryptographic Accelerator",
+"	01ff  10/100 Mbps Ethernet",
+"	0219  Multiport Serial Adapter",
+"		1014 021a  Dual RVX",
+"		1014 0251  Internal Modem/RVX",
+"		1014 0252  Quad Internal Modem",
+"	021b  GXT6500P Graphics Adapter",
+"	021c  GXT4500P Graphics Adapter",
+"	0233  GXT135P Graphics Adapter",
+"	0266  PCI-X Dual Channel SCSI",
+"	0268  Gigabit Ethernet-SX Adapter (PCI-X)",
+"	0269  10/100/1000 Base-TX Ethernet Adapter (PCI-X)",
+"	028c  Citrine chipset SCSI controller",
+"		1014 028d  Dual Channel PCI-X DDR SAS RAID Adapter (572E)",
+"		1014 02be  Dual Channel PCI-X DDR U320 SCSI RAID Adapter (571B)",
+"		1014 02c0  Dual Channel PCI-X DDR U320 SCSI Adapter (571A)",
+"		1014 030d  PCI-X DDR Auxiliary Cache Adapter (575B)",
+"	02a1  Calgary PCI-X Host Bridge",
+"	02bd  Obsidian chipset SCSI controller",
+"		1014 02c1  PCI-X DDR 3Gb SAS Adapter (572A/572C)",
+"		1014 02c2  PCI-X DDR 3Gb SAS RAID Adapter (572B/571D)",
+"	0302  Winnipeg PCI-X Host Bridge",
+"	0314  ZISC 036 Neural accelerator card",
+"	3022  QLA3022 Network Adapter",
+"	4022  QLA3022 Network Adapter",
+"	ffff  MPIC-2 interrupt controller",
+"1015  LSI Logic Corp of Canada",
+"1016  ICL Personal Systems",
+"1017  SPEA Software AG",
+"	5343  SPEA 3D Accelerator",
+"1018  Unisys Systems",
+"1019  Elitegroup Computer Systems",
+"101a  AT&T GIS (NCR)",
+"	0005  100VG ethernet",
+"101b  Vitesse Semiconductor",
+"101c  Western Digital",
+"	0193  33C193A",
+"	0196  33C196A",
+"	0197  33C197A",
+"	0296  33C296A",
+"	3193  7193",
+"	3197  7197",
+"	3296  33C296A",
+"	4296  34C296",
+"	9710  Pipeline 9710",
+"	9712  Pipeline 9712",
+"	c24a  90C",
+"101e  American Megatrends Inc.",
+"	0009  MegaRAID 428 Ultra RAID Controller (rev 03)",
+"	1960  MegaRAID",
+"		101e 0471  MegaRAID 471 Enterprise 1600 RAID Controller",
+"		101e 0475  MegaRAID 475 Express 500/500LC RAID Controller",
+"		101e 0477  MegaRAID 477 Elite 3100 RAID Controller",
+"		101e 0493  MegaRAID 493 Elite 1600 RAID Controller",
+"		101e 0494  MegaRAID 494 Elite 1650 RAID Controller",
+"		101e 0503  MegaRAID 503 Enterprise 1650 RAID Controller",
+"		101e 0511  MegaRAID 511 i4 IDE RAID Controller",
+"		101e 0522  MegaRAID 522 i4133 RAID Controller",
+"		1028 0471  PowerEdge RAID Controller 3/QC",
+"		1028 0475  PowerEdge RAID Controller 3/SC",
+"		1028 0493  PowerEdge RAID Controller 3/DC",
+"		1028 0511  PowerEdge Cost Effective RAID Controller ATA100/4Ch",
+"		103c 60e7  NetRAID-1M",
+"	9010  MegaRAID 428 Ultra RAID Controller",
+"	9030  EIDE Controller",
+"	9031  EIDE Controller",
+"	9032  EIDE & SCSI Controller",
+"	9033  SCSI Controller",
+"	9040  Multimedia card",
+"	9060  MegaRAID 434 Ultra GT RAID Controller",
+"	9063  MegaRAC",
+"		101e 0767  Dell Remote Assistant Card 2",
+"101f  PictureTel",
+"1020  Hitachi Computer Products",
+"1021  OKI Electric Industry Co. Ltd.",
+"1022  Advanced Micro Devices [AMD]",
+"	1100  K8 [Athlon64/Opteron] HyperTransport Technology Configuration",
+"	1101  K8 [Athlon64/Opteron] Address Map",
+"	1102  K8 [Athlon64/Opteron] DRAM Controller",
+"	1103  K8 [Athlon64/Opteron] Miscellaneous Control",
+"	2000  79c970 [PCnet32 LANCE]",
+"		1014 2000  NetFinity 10/100 Fast Ethernet",
+"		1022 2000  PCnet - Fast 79C971",
+"		103c 104c  Ethernet with LAN remote power Adapter",
+"		103c 1064  Ethernet with LAN remote power Adapter",
+"		103c 1065  Ethernet with LAN remote power Adapter",
+"		103c 106c  Ethernet with LAN remote power Adapter",
+"		103c 106e  Ethernet with LAN remote power Adapter",
+"		103c 10ea  Ethernet with LAN remote power Adapter",
+"		1113 1220  EN1220 10/100 Fast Ethernet",
+"		1259 2450  AT-2450 10/100 Fast Ethernet",
+"		1259 2454  AT-2450v4 10Mb Ethernet Adapter",
+"		1259 2700  AT-2700TX 10/100 Fast Ethernet",
+"		1259 2701  AT-2700FX 100Mb Ethernet",
+"		1259 2702  AT-2700FTX 10/100 Mb Fiber/Copper Fast Ethernet",
+"		1259 2703  AT-2701FX",
+"		4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard",
+"		4c53 1010  CP5/CR6 mainboard",
+"		4c53 1020  VR6 mainboard",
+"		4c53 1030  PC5 mainboard",
+"		4c53 1040  CL7 mainboard",
+"		4c53 1060  PC7 mainboard",
+"	2001  79c978 [HomePNA]",
+"		1092 0a78  Multimedia Home Network Adapter",
+"		1668 0299  ActionLink Home Network Adapter",
+"	2003  Am 1771 MBW [Alchemy]",
+"	2020  53c974 [PCscsi]",
+"	2040  79c974",
+"	2081  Geode LX Video",
+"	2082  Geode LX AES Security Block",
+"	208f  CS5536 GeodeLink PCI South Bridge",
+"	2090  CS5536 [Geode companion] ISA",
+"	2091  CS5536 [Geode companion] FLASH",
+"	2093  CS5536 [Geode companion] Audio",
+"	2094  CS5536 [Geode companion] OHC",
+"	2095  CS5536 [Geode companion] EHC",
+"	2096  CS5536 [Geode companion] UDC",
+"	2097  CS5536 [Geode companion] UOC",
+"	209a  CS5536 [Geode companion] IDE",
+"	3000  ELanSC520 Microcontroller",
+"	7006  AMD-751 [Irongate] System Controller",
+"	7007  AMD-751 [Irongate] AGP Bridge",
+"	700a  AMD-IGR4 AGP Host to PCI Bridge",
+"	700b  AMD-IGR4 PCI to PCI Bridge",
+"	700c  AMD-760 MP [IGD4-2P] System Controller",
+"	700d  AMD-760 MP [IGD4-2P] AGP Bridge",
+"	700e  AMD-760 [IGD4-1P] System Controller",
+"	700f  AMD-760 [IGD4-1P] AGP Bridge",
+"	7400  AMD-755 [Cobra] ISA",
+"	7401  AMD-755 [Cobra] IDE",
+"	7403  AMD-755 [Cobra] ACPI",
+"	7404  AMD-755 [Cobra] USB",
+"	7408  AMD-756 [Viper] ISA",
+"	7409  AMD-756 [Viper] IDE",
+"	740b  AMD-756 [Viper] ACPI",
+"	740c  AMD-756 [Viper] USB",
+"	7410  AMD-766 [ViperPlus] ISA",
+"	7411  AMD-766 [ViperPlus] IDE",
+"	7413  AMD-766 [ViperPlus] ACPI",
+"	7414  AMD-766 [ViperPlus] USB",
+"	7440  AMD-768 [Opus] ISA",
+"		1043 8044  A7M-D Mainboard",
+"	7441  AMD-768 [Opus] IDE",
+"	7443  AMD-768 [Opus] ACPI",
+"		1043 8044  A7M-D Mainboard",
+"	7445  AMD-768 [Opus] Audio",
+"	7446  AMD-768 [Opus] MC97 Modem (Smart Link HAMR5600 compatible)",
+"	7448  AMD-768 [Opus] PCI",
+"	7449  AMD-768 [Opus] USB",
+"	7450  AMD-8131 PCI-X Bridge",
+"	7451  AMD-8131 PCI-X IOAPIC",
+"	7454  AMD-8151 System Controller",
+"	7455  AMD-8151 AGP Bridge",
+"	7458  AMD-8132 PCI-X Bridge",
+"	7459  AMD-8132 PCI-X IOAPIC",
+"	7460  AMD-8111 PCI",
+"		161f 3017  HDAMB",
+"	7461  AMD-8111 USB",
+"	7462  AMD-8111 Ethernet",
+"	7464  AMD-8111 USB",
+"		161f 3017  HDAMB",
+"	7468  AMD-8111 LPC",
+"		161f 3017  HDAMB",
+"	7469  AMD-8111 IDE",
+"		1022 2b80  AMD-8111 IDE [Quartet]",
+"		161f 3017  HDAMB",
+"	746a  AMD-8111 SMBus 2.0",
+"	746b  AMD-8111 ACPI",
+"		161f 3017  HDAMB",
+"	746d  AMD-8111 AC97 Audio",
+"		161f 3017  HDAMB",
+"	746e  AMD-8111 MC97 Modem",
+"	756b  AMD-8111 ACPI",
+"1023  Trident Microsystems",
+"	0194  82C194",
+"	2000  4DWave DX",
+"	2001  4DWave NX",
+"		122d 1400  Trident PCI288-Q3DII (NX)",
+"	2100  CyberBlade XP4m32",
+"	2200  XGI Volari XP5",
+"	8400  CyberBlade/i7",
+"		1023 8400  CyberBlade i7 AGP",
+"	8420  CyberBlade/i7d",
+"		0e11 b15a  CyberBlade i7 AGP",
+"	8500  CyberBlade/i1",
+"	8520  CyberBlade i1",
+"		0e11 b16e  CyberBlade i1 AGP",
+"		1023 8520  CyberBlade i1 AGP",
+"	8620  CyberBlade/i1",
+"		1014 0502  ThinkPad R30/T30",
+"		1014 1025  Travelmate 352TE",
+"	8820  CyberBlade XPAi1",
+"	9320  TGUI 9320",
+"	9350  GUI Accelerator",
+"	9360  Flat panel GUI Accelerator",
+"	9382  Cyber 9382 [Reference design]",
+"	9383  Cyber 9383 [Reference design]",
+"	9385  Cyber 9385 [Reference design]",
+"	9386  Cyber 9386",
+"	9388  Cyber 9388",
+"	9397  Cyber 9397",
+"	939a  Cyber 9397DVD",
+"	9420  TGUI 9420",
+"	9430  TGUI 9430",
+"	9440  TGUI 9440",
+"	9460  TGUI 9460",
+"	9470  TGUI 9470",
+"	9520  Cyber 9520",
+"	9525  Cyber 9525",
+"		10cf 1094  Lifebook C6155",
+"	9540  Cyber 9540",
+"	9660  TGUI 9660/938x/968x",
+"	9680  TGUI 9680",
+"	9682  TGUI 9682",
+"	9683  TGUI 9683",
+"	9685  ProVIDIA 9685",
+"	9750  3DImage 9750",
+"		1014 9750  3DImage 9750",
+"		1023 9750  3DImage 9750",
+"	9753  TGUI 9753",
+"	9754  TGUI 9754",
+"	9759  TGUI 975",
+"	9783  TGUI 9783",
+"	9785  TGUI 9785",
+"	9850  3DImage 9850",
+"	9880  Blade 3D PCI/AGP",
+"		1023 9880  Blade 3D",
+"	9910  CyberBlade/XP",
+"	9930  CyberBlade/XPm",
+"1024  Zenith Data Systems",
+"1025  Acer Incorporated [ALI]",
+"	1435  M1435",
+"	1445  M1445",
+"	1449  M1449",
+"	1451  M1451",
+"	1461  M1461",
+"	1489  M1489",
+"	1511  M1511",
+"	1512  ALI M1512 Aladdin",
+"	1513  M1513",
+"	1521  ALI M1521 Aladdin III CPU Bridge",
+"		10b9 1521  ALI M1521 Aladdin III CPU Bridge",
+"	1523  ALI M1523 ISA Bridge",
+"		10b9 1523  ALI M1523 ISA Bridge",
+"	1531  M1531 Northbridge [Aladdin IV/IV+]",
+"	1533  M1533 PCI-to-ISA Bridge",
+"		10b9 1533  ALI M1533 Aladdin IV/V ISA South Bridge",
+"	1535  M1535 PCI Bridge + Super I/O + FIR",
+"	1541  M1541 Northbridge [Aladdin V]",
+"		10b9 1541  ALI M1541 Aladdin V/V+ AGP+PCI North Bridge",
+"	1542  M1542 Northbridge [Aladdin V]",
+"	1543  M1543 PCI-to-ISA Bridge + Super I/O + FIR",
+"	1561  M1561 Northbridge [Aladdin 7]",
+"	1621  M1621 Northbridge [Aladdin-Pro II]",
+"	1631  M1631 Northbridge+3D Graphics [Aladdin TNT2]",
+"	1641  M1641 Northbridge [Aladdin-Pro IV]",
+"	1647  M1647 [MaGiK1] PCI North Bridge",
+"	1671  M1671 Northbridge [ALADDiN-P4]",
+"	1672  Northbridge [CyberALADDiN-P4]",
+"	3141  M3141",
+"	3143  M3143",
+"	3145  M3145",
+"	3147  M3147",
+"	3149  M3149",
+"	3151  M3151",
+"	3307  M3307 MPEG-I Video Controller",
+"	3309  M3309 MPEG-II Video w/ Software Audio Decoder",
+"	3321  M3321 MPEG-II Audio/Video Decoder",
+"	5212  M4803",
+"	5215  ALI PCI EIDE Controller",
+"	5217  M5217H",
+"	5219  M5219",
+"	5225  M5225",
+"	5229  M5229",
+"	5235  M5235",
+"	5237  M5237 PCI USB Host Controller",
+"	5240  EIDE Controller",
+"	5241  PCMCIA Bridge",
+"	5242  General Purpose Controller",
+"	5243  PCI to PCI Bridge Controller",
+"	5244  Floppy Disk Controller",
+"	5247  M1541 PCI to PCI Bridge",
+"	5251  M5251 P1394 Controller",
+"	5427  PCI to AGP Bridge",
+"	5451  M5451 PCI AC-Link Controller Audio Device",
+"	5453  M5453 PCI AC-Link Controller Modem Device",
+"	7101  M7101 PCI PMU Power Management Controller",
+"		10b9 7101  M7101 PCI PMU Power Management Controller",
+"1028  Dell",
+"	0001  PowerEdge Expandable RAID Controller 2/Si",
+"		1028 0001  PowerEdge 2400",
+"	0002  PowerEdge Expandable RAID Controller 3/Di",
+"		1028 0002  PowerEdge 4400",
+"	0003  PowerEdge Expandable RAID Controller 3/Si",
+"		1028 0003  PowerEdge 2450",
+"	0006  PowerEdge Expandable RAID Controller 3/Di",
+"	0007  Remote Access Card III",
+"	0008  Remote Access Card III",
+"	0009  Remote Access Card III: BMC/SMIC device not present",
+"	000a  PowerEdge Expandable RAID Controller 3/Di",
+"	000c  Embedded Remote Access or ERA/O",
+"	000d  Embedded Remote Access: BMC/SMIC device",
+"	000e  PowerEdge Expandable RAID controller 4/Di",
+"	000f  PowerEdge Expandable RAID controller 4/Di",
+"	0010  Remote Access Card 4",
+"	0011  Remote Access Card 4 Daughter Card",
+"	0012  Remote Access Card 4 Daughter Card Virtual UART",
+"	0013  PowerEdge Expandable RAID controller 4",
+"		1028 016c  PowerEdge Expandable RAID Controller 4e/Si",
+"		1028 016d  PowerEdge Expandable RAID Controller 4e/Di",
+"		1028 016e  PowerEdge Expandable RAID Controller 4e/Di",
+"		1028 016f  PowerEdge Expandable RAID Controller 4e/Di",
+"		1028 0170  PowerEdge Expandable RAID Controller 4e/Di",
+"	0014  Remote Access Card 4 Daughter Card SMIC interface",
+"	0015  PowerEdge Expandable RAID controller 5",
+"1029  Siemens Nixdorf IS",
+"102a  LSI Logic",
+"	0000  HYDRA",
+"	0010  ASPEN",
+"	001f  AHA-2940U2/U2W /7890/7891 SCSI Controllers",
+"		9005 000f  2940U2W SCSI Controller",
+"		9005 0106  2940U2W SCSI Controller",
+"		9005 a180  2940U2W SCSI Controller",
+"	00c5  AIC-7899 U160/m SCSI Controller",
+"		1028 00c5  PowerEdge 2550/2650/4600",
+"	00cf  AIC-7899P U160/m",
+"		1028 0106  PowerEdge 4600",
+"		1028 0121  PowerEdge 2650",
+"102b  Matrox Graphics, Inc.",
+"	0010  MGA-I [Impression\?]",
+"	0100  MGA 1064SG [Mystique]",
+"	0518  MGA-II [Athena]",
+"	0519  MGA 2064W [Millennium]",
+"	051a  MGA 1064SG [Mystique]",
+"		102b 0100  MGA-1064SG Mystique",
+"		102b 1100  MGA-1084SG Mystique",
+"		102b 1200  MGA-1084SG Mystique",
+"		1100 102b  MGA-1084SG Mystique",
+"		110a 0018  Scenic Pro C5 (D1025)",
+"	051b  MGA 2164W [Millennium II]",
+"		102b 051b  MGA-2164W Millennium II",
+"		102b 1100  MGA-2164W Millennium II",
+"		102b 1200  MGA-2164W Millennium II",
+"	051e  MGA 1064SG [Mystique] AGP",
+"	051f  MGA 2164W [Millennium II] AGP",
+"	0520  MGA G200",
+"		102b dbc2  G200 Multi-Monitor",
+"		102b dbc8  G200 Multi-Monitor",
+"		102b dbe2  G200 Multi-Monitor",
+"		102b dbe8  G200 Multi-Monitor",
+"		102b ff03  Millennium G200 SD",
+"		102b ff04  Marvel G200",
+"	0521  MGA G200 AGP",
+"		1014 ff03  Millennium G200 AGP",
+"		102b 48e9  Mystique G200 AGP",
+"		102b 48f8  Millennium G200 SD AGP",
+"		102b 4a60  Millennium G200 LE AGP",
+"		102b 4a64  Millennium G200 AGP",
+"		102b c93c  Millennium G200 AGP",
+"		102b c9b0  Millennium G200 AGP",
+"		102b c9bc  Millennium G200 AGP",
+"		102b ca60  Millennium G250 LE AGP",
+"		102b ca6c  Millennium G250 AGP",
+"		102b dbbc  Millennium G200 AGP",
+"		102b dbc2  Millennium G200 MMS (Dual G200)",
+"		102b dbc3  G200 Multi-Monitor",
+"		102b dbc8  Millennium G200 MMS (Dual G200)",
+"		102b dbd2  G200 Multi-Monitor",
+"		102b dbd3  G200 Multi-Monitor",
+"		102b dbd4  G200 Multi-Monitor",
+"		102b dbd5  G200 Multi-Monitor",
+"		102b dbd8  G200 Multi-Monitor",
+"		102b dbd9  G200 Multi-Monitor",
+"		102b dbe2  Millennium G200 MMS (Quad G200)",
+"		102b dbe3  G200 Multi-Monitor",
+"		102b dbe8  Millennium G200 MMS (Quad G200)",
+"		102b dbf2  G200 Multi-Monitor",
+"		102b dbf3  G200 Multi-Monitor",
+"		102b dbf4  G200 Multi-Monitor",
+"		102b dbf5  G200 Multi-Monitor",
+"		102b dbf8  G200 Multi-Monitor",
+"		102b dbf9  G200 Multi-Monitor",
+"		102b f806  Mystique G200 Video AGP",
+"		102b ff00  MGA-G200 AGP",
+"		102b ff02  Mystique G200 AGP",
+"		102b ff03  Millennium G200 AGP",
+"		102b ff04  Marvel G200 AGP",
+"		110a 0032  MGA-G200 AGP",
+"	0522  MGA G200e [Pilot] ServerEngines (SEP1)",
+"	0525  MGA G400/G450",
+"		0e11 b16f  MGA-G400 AGP",
+"		102b 0328  Millennium G400 16Mb SDRAM",
+"		102b 0338  Millennium G400 16Mb SDRAM",
+"		102b 0378  Millennium G400 32Mb SDRAM",
+"		102b 0541  Millennium G450 Dual Head",
+"		102b 0542  Millennium G450 Dual Head LX",
+"		102b 0543  Millennium G450 Single Head LX",
+"		102b 0641  Millennium G450 32Mb SDRAM Dual Head",
+"		102b 0642  Millennium G450 32Mb SDRAM Dual Head LX",
+"		102b 0643  Millennium G450 32Mb SDRAM Single Head LX",
+"		102b 07c0  Millennium G450 Dual Head LE",
+"		102b 07c1  Millennium G450 SDR Dual Head LE",
+"		102b 0d41  Millennium G450 Dual Head PCI",
+"		102b 0d42  Millennium G450 Dual Head LX PCI",
+"		102b 0d43  Millennium G450 32Mb Dual Head PCI",
+"		102b 0e00  Marvel G450 eTV",
+"		102b 0e01  Marvel G450 eTV",
+"		102b 0e02  Marvel G450 eTV",
+"		102b 0e03  Marvel G450 eTV",
+"		102b 0f80  Millennium G450 Low Profile",
+"		102b 0f81  Millennium G450 Low Profile",
+"		102b 0f82  Millennium G450 Low Profile DVI",
+"		102b 0f83  Millennium G450 Low Profile DVI",
+"		102b 19d8  Millennium G400 16Mb SGRAM",
+"		102b 19f8  Millennium G400 32Mb SGRAM",
+"		102b 2159  Millennium G400 Dual Head 16Mb",
+"		102b 2179  Millennium G400 MAX/Dual Head 32Mb",
+"		102b 217d  Millennium G400 Dual Head Max",
+"		102b 23c0  Millennium G450",
+"		102b 23c1  Millennium G450",
+"		102b 23c2  Millennium G450 DVI",
+"		102b 23c3  Millennium G450 DVI",
+"		102b 2f58  Millennium G400",
+"		102b 2f78  Millennium G400",
+"		102b 3693  Marvel G400 AGP",
+"		102b 5dd0  4Sight II",
+"		102b 5f50  4Sight II",
+"		102b 5f51  4Sight II",
+"		102b 5f52  4Sight II",
+"		102b 9010  Millennium G400 Dual Head",
+"		1458 0400  GA-G400",
+"		1705 0001  Millennium G450 32MB SGRAM",
+"		1705 0002  Millennium G450 16MB SGRAM",
+"		1705 0003  Millennium G450 32MB",
+"		1705 0004  Millennium G450 16MB",
+"	0527  MGA Parhelia AGP",
+"		102b 0840  Parhelia 128Mb",
+"		102b 0850  Parhelia 256MB AGP 4X",
+"	0528  Parhelia 8X",
+"		102b 1020  Parhelia 128MB",
+"		102b 1030  Parhelia 256 MB Dual DVI",
+"		102b 14e1  Parhelia PCI 256MB",
+"		102b 2021  QID Pro",
+"	0d10  MGA Ultima/Impression",
+"	1000  MGA G100 [Productiva]",
+"		102b ff01  Productiva G100",
+"		102b ff05  Productiva G100 Multi-Monitor",
+"	1001  MGA G100 [Productiva] AGP",
+"		102b 1001  MGA-G100 AGP",
+"		102b ff00  MGA-G100 AGP",
+"		102b ff01  MGA-G100 Productiva AGP",
+"		102b ff03  Millennium G100 AGP",
+"		102b ff04  MGA-G100 AGP",
+"		102b ff05  MGA-G100 Productiva AGP Multi-Monitor",
+"		110a 001e  MGA-G100 AGP",
+"	2007  MGA Mistral",
+"	2527  MGA G550 AGP",
+"		102b 0f83  Millennium G550",
+"		102b 0f84  Millennium G550 Dual Head DDR 32Mb",
+"		102b 1e41  Millennium G550",
+"	2537  Millenium P650/P750",
+"		102b 1820  Millennium P750 64MB",
+"		102b 1830  Millennium P650 64MB",
+"		102b 1c10  QID 128MB",
+"		102b 2811  Millennium P650 Low-profile PCI 64MB",
+"		102b 2c11  QID Low-profile PCI",
+"	2538  Millenium P650 PCIe",
+"		102b 08c7  Millennium P650 PCIe 128MB",
+"		102b 0907  Millennium P650 PCIe 64MB",
+"		102b 1047  Millennium P650 LP PCIe 128MB",
+"		102b 1087  Millennium P650 LP PCIe 64MB",
+"		102b 2538  Parhelia APVe",
+"		102b 3007  QID Low-profile PCIe",
+"	4536  VIA Framegrabber",
+"	6573  Shark 10/100 Multiport SwitchNIC",
+"102c  Chips and Technologies",
+"	00b8  F64310",
+"	00c0  F69000 HiQVideo",
+"		102c 00c0  F69000 HiQVideo",
+"		4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard",
+"		4c53 1010  CP5/CR6 mainboard",
+"		4c53 1020  VR6 mainboard",
+"		4c53 1030  PC5 mainboard",
+"		4c53 1050  CT7 mainboard",
+"		4c53 1051  CE7 mainboard",
+"	00d0  F65545",
+"	00d8  F65545",
+"	00dc  F65548",
+"	00e0  F65550",
+"	00e4  F65554",
+"	00e5  F65555 HiQVPro",
+"		0e11 b049  Armada 1700 Laptop Display Controller",
+"		1179 0001  Satellite Pro",
+"	00f0  F68554",
+"	00f4  F68554 HiQVision",
+"	00f5  F68555",
+"	0c30  F69030",
+"		4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard",
+"		4c53 1050  CT7 mainboard",
+"		4c53 1051  CE7 mainboard",
+"		4c53 1080  CT8 mainboard",
+"102d  Wyse Technology Inc.",
+"	50dc  3328 Audio",
+"102e  Olivetti Advanced Technology",
+"102f  Toshiba America",
+"	0009  r4x00",
+"	000a  TX3927 MIPS RISC PCI Controller",
+"	0020  ATM Meteor 155",
+"		102f 00f8  ATM Meteor 155",
+"	0030  TC35815CF PCI 10/100 Mbit Ethernet Controller",
+"	0031  TC35815CF PCI 10/100 Mbit Ethernet Controller with WOL",
+"	0105  TC86C001 [goku-s] IDE",
+"	0106  TC86C001 [goku-s] USB 1.1 Host",
+"	0107  TC86C001 [goku-s] USB Device Controller",
+"	0108  TC86C001 [goku-s] I2C/SIO/GPIO Controller",
+"	0180  TX4927/38 MIPS RISC PCI Controller",
+"	0181  TX4925 MIPS RISC PCI Controller",
+"	0182  TX4937 MIPS RISC PCI Controller",
+"1030  TMC Research",
+"1031  Miro Computer Products AG",
+"	5601  DC20 ASIC",
+"	5607  Video I/O & motion JPEG compressor",
+"	5631  Media 3D",
+"	6057  MiroVideo DC10/DC30+",
+"1032  Compaq",
+"1033  NEC Corporation",
+"	0000  Vr4181A USB Host or Function Control Unit",
+"	0001  PCI to 486-like bus Bridge",
+"	0002  PCI to VL98 Bridge",
+"	0003  ATM Controller",
+"	0004  R4000 PCI Bridge",
+"	0005  PCI to 486-like bus Bridge",
+"	0006  PC-9800 Graphic Accelerator",
+"	0007  PCI to UX-Bus Bridge",
+"	0008  PC-9800 Graphic Accelerator",
+"	0009  PCI to PC9800 Core-Graph Bridge",
+"	0016  PCI to VL Bridge",
+"	001a  [Nile II]",
+"	0021  Vrc4373 [Nile I]",
+"	0029  PowerVR PCX1",
+"	002a  PowerVR 3D",
+"	002c  Star Alpha 2",
+"	002d  PCI to C-bus Bridge",
+"	0035  USB",
+"		1033 0035  Hama USB 2.0 CardBus",
+"		1179 0001  USB",
+"		12ee 7000  Root Hub",
+"		14c2 0105  PTI-205N USB 2.0 Host Controller",
+"		1799 0001  Root Hub",
+"		1931 000a  GlobeTrotter Fusion Quad Lite (PPP data)",
+"		1931 000b  GlobeTrotter Fusion Quad Lite (GSM data)",
+"		807d 0035  PCI-USB2 (OHCI subsystem)",
+"	003b  PCI to C-bus Bridge",
+"	003e  NAPCCARD Cardbus Controller",
+"	0046  PowerVR PCX2 [midas]",
+"	005a  Vrc5074 [Nile 4]",
+"	0063  Firewarden",
+"	0067  PowerVR Neon 250 Chipset",
+"		1010 0020  PowerVR Neon 250 AGP 32Mb",
+"		1010 0080  PowerVR Neon 250 AGP 16Mb",
+"		1010 0088  PowerVR Neon 250 16Mb",
+"		1010 0090  PowerVR Neon 250 AGP 16Mb",
+"		1010 0098  PowerVR Neon 250 16Mb",
+"		1010 00a0  PowerVR Neon 250 AGP 32Mb",
+"		1010 00a8  PowerVR Neon 250 32Mb",
+"		1010 0120  PowerVR Neon 250 AGP 32Mb",
+"	0072  uPD72874 IEEE1394 OHCI 1.1 3-port PHY-Link Ctrlr",
+"	0074  56k Voice Modem",
+"		1033 8014  RCV56ACF 56k Voice Modem",
+"	009b  Vrc5476",
+"	00a5  VRC4173",
+"	00a6  VRC5477 AC97",
+"	00cd  IEEE 1394 [OrangeLink] Host Controller",
+"		12ee 8011  Root hub",
+"	00ce  IEEE 1394 Host Controller",
+"	00df  Vr4131",
+"	00e0  USB 2.0",
+"		12ee 7001  Root hub",
+"		14c2 0205  PTI-205N USB 2.0 Host Controller",
+"		1799 0002  Root Hub",
+"		807d 1043  PCI-USB2 (EHCI subsystem)",
+"	00e7  IEEE 1394 Host Controller",
+"	00f2  uPD72874 IEEE1394 OHCI 1.1 3-port PHY-Link Ctrlr",
+"	00f3  uPD6113x Multimedia Decoder/Processor [EMMA2]",
+"	010c  VR7701",
+"	0125  uPD720400 PCI Express - PCI/PCI-X Bridge",
+"1034  Framatome Connectors USA Inc.",
+"1035  Comp. & Comm. Research Lab",
+"1036  Future Domain Corp.",
+"	0000  TMC-18C30 [36C70]",
+"1037  Hitachi Micro Systems",
+"1038  AMP, Inc",
+"1039  Silicon Integrated Systems [SiS]",
+"	0001  Virtual PCI-to-PCI bridge (AGP)",
+"	0002  SG86C202",
+"	0003  SiS AGP Port (virtual PCI-to-PCI bridge)",
+"	0004  PCI-to-PCI bridge",
+"	0006  85C501/2/3",
+"	0008  SiS85C503/5513 (LPC Bridge)",
+"	0009  ACPI",
+"	000a  PCI-to-PCI bridge",
+"	0016  SiS961/2 SMBus Controller",
+"	0018  SiS85C503/5513 (LPC Bridge)",
+"	0180  RAID bus controller 180 SATA/PATA  [SiS]",
+"	0181  SATA",
+"	0182  182 SATA/RAID Controller",
+"	0190  190 Gigabit Ethernet Adapter",
+"	0191  191 Gigabit Ethernet Adapter",
+"	0200  5597/5598/6326 VGA",
+"		1039 0000  SiS5597 SVGA (Shared RAM)",
+"	0204  82C204",
+"	0205  SG86C205",
+"	0300  300/305 PCI/AGP VGA Display Adapter",
+"		107d 2720  Leadtek WinFast VR300",
+"	0310  315H PCI/AGP VGA Display Adapter",
+"	0315  315 PCI/AGP VGA Display Adapter",
+"	0325  315PRO PCI/AGP VGA Display Adapter",
+"	0330  330 [Xabre] PCI/AGP VGA Display Adapter",
+"	0406  85C501/2",
+"	0496  85C496",
+"	0530  530 Host",
+"	0540  540 Host",
+"	0550  550 Host",
+"	0597  5513C",
+"	0601  85C601",
+"	0620  620 Host",
+"	0630  630 Host",
+"	0633  633 Host",
+"	0635  635 Host",
+"	0645  SiS645 Host & Memory & AGP Controller",
+"	0646  SiS645DX Host & Memory & AGP Controller",
+"	0648  645xx",
+"	0650  650/M650 Host",
+"	0651  651 Host",
+"	0655  655 Host",
+"	0660  660 Host",
+"	0661  661FX/M661FX/M661MX Host",
+"	0730  730 Host",
+"	0733  733 Host",
+"	0735  735 Host",
+"	0740  740 Host",
+"	0741  741/741GX/M741 Host",
+"	0745  745 Host",
+"	0746  746 Host",
+"	0755  755 Host",
+"	0760  760/M760 Host",
+"	0761  761/M761 Host",
+"	0900  SiS900 PCI Fast Ethernet",
+"		1019 0a14  K7S5A motherboard",
+"		1039 0900  SiS900 10/100 Ethernet Adapter",
+"		1043 8035  CUSI-FX motherboard",
+"	0961  SiS961 [MuTIOL Media IO]",
+"	0962  SiS962 [MuTIOL Media IO]",
+"	0963  SiS963 [MuTIOL Media IO]",
+"	0964  SiS964 [MuTIOL Media IO]",
+"	0965  SiS965 [MuTIOL Media IO]",
+"	3602  83C602",
+"	5107  5107",
+"	5300  SiS540 PCI Display Adapter",
+"	5315  550 PCI/AGP VGA Display Adapter",
+"	5401  486 PCI Chipset",
+"	5511  5511/5512",
+"	5513  5513 [IDE]",
+"		1019 0970  P6STP-FL motherboard",
+"		1039 5513  SiS5513 EIDE Controller (A,B step)",
+"		1043 8035  CUSI-FX motherboard",
+"	5517  5517",
+"	5571  5571",
+"	5581  5581 Pentium Chipset",
+"	5582  5582",
+"	5591  5591/5592 Host",
+"	5596  5596 Pentium Chipset",
+"	5597  5597 [SiS5582]",
+"	5600  5600 Host",
+"	6204  Video decoder & MPEG interface",
+"	6205  VGA Controller",
+"	6236  6236 3D-AGP",
+"	6300  630/730 PCI/AGP VGA Display Adapter",
+"		1019 0970  P6STP-FL motherboard",
+"		1043 8035  CUSI-FX motherboard",
+"	6306  530/620 PCI/AGP VGA Display Adapter",
+"		1039 6306  SiS530,620 GUI Accelerator+3D",
+"	6325  65x/M650/740 PCI/AGP VGA Display Adapter",
+"	6326  86C326 5598/6326",
+"		1039 6326  SiS6326 GUI Accelerator",
+"		1092 0a50  SpeedStar A50",
+"		1092 0a70  SpeedStar A70",
+"		1092 4910  SpeedStar A70",
+"		1092 4920  SpeedStar A70",
+"		1569 6326  SiS6326 GUI Accelerator",
+"	6330  661/741/760/761 PCI/AGP VGA Display Adapter",
+"		1039 6330  [M]661xX/[M]741[GX]/[M]760 PCI/AGP VGA Adapter",
+"	7001  USB 1.0 Controller",
+"		1019 0a14  K7S5A motherboard",
+"		1039 7000  Onboard USB Controller",
+"		1462 5470  K7SOM+ 5.2C Motherboard",
+"	7002  USB 2.0 Controller",
+"		1509 7002  Onboard USB Controller",
+"	7007  FireWire Controller",
+"	7012  AC'97 Sound Controller",
+"		15bd 1001  DFI 661FX motherboard",
+"	7013  AC'97 Modem Controller",
+"	7016  SiS7016 PCI Fast Ethernet Adapter",
+"		1039 7016  SiS7016 10/100 Ethernet Adapter",
+"	7018  SiS PCI Audio Accelerator",
+"		1014 01b6  SiS PCI Audio Accelerator",
+"		1014 01b7  SiS PCI Audio Accelerator",
+"		1019 7018  SiS PCI Audio Accelerator",
+"		1025 000e  SiS PCI Audio Accelerator",
+"		1025 0018  SiS PCI Audio Accelerator",
+"		1039 7018  SiS PCI Audio Accelerator",
+"		1043 800b  SiS PCI Audio Accelerator",
+"		1054 7018  SiS PCI Audio Accelerator",
+"		107d 5330  SiS PCI Audio Accelerator",
+"		107d 5350  SiS PCI Audio Accelerator",
+"		1170 3209  SiS PCI Audio Accelerator",
+"		1462 400a  SiS PCI Audio Accelerator",
+"		14a4 2089  SiS PCI Audio Accelerator",
+"		14cd 2194  SiS PCI Audio Accelerator",
+"		14ff 1100  SiS PCI Audio Accelerator",
+"		152d 8808  SiS PCI Audio Accelerator",
+"		1558 1103  SiS PCI Audio Accelerator",
+"		1558 2200  SiS PCI Audio Accelerator",
+"		1563 7018  SiS PCI Audio Accelerator",
+"		15c5 0111  SiS PCI Audio Accelerator",
+"		270f a171  SiS PCI Audio Accelerator",
+"		a0a0 0022  SiS PCI Audio Accelerator",
+"	7019  SiS7019 Audio Accelerator",
+"103a  Seiko Epson Corporation",
+"103b  Tatung Co. of America",
+"103c  Hewlett-Packard Company",
+"	002a  NX9000 Notebook",
+"	1005  A4977A Visualize EG",
+"	1008  Visualize FX",
+"	1028  Tach TL Fibre Channel Host Adapter",
+"	1029  Tach XL2 Fibre Channel Host Adapter",
+"		107e 000f  Interphase 5560 Fibre Channel Adapter",
+"		9004 9210  1Gb/2Gb Family Fibre Channel Controller",
+"		9004 9211  1Gb/2Gb Family Fibre Channel Controller",
+"	102a  Tach TS Fibre Channel Host Adapter",
+"		107e 000e  Interphase 5540/5541 Fibre Channel Adapter",
+"		9004 9110  1Gb/2Gb Family Fibre Channel Controller",
+"		9004 9111  1Gb/2Gb Family Fibre Channel Controller",
+"	1030  J2585A DeskDirect 10/100VG NIC",
+"	1031  J2585B HP 10/100VG PCI LAN Adapter",
+"		103c 1040  J2973A DeskDirect 10BaseT NIC",
+"		103c 1041  J2585B DeskDirect 10/100VG NIC",
+"		103c 1042  J2970A DeskDirect 10BaseT/2 NIC",
+"	1040  J2973A DeskDirect 10BaseT NIC",
+"	1041  J2585B DeskDirect 10/100 NIC",
+"	1042  J2970A DeskDirect 10BaseT/2 NIC",
+"	1048  Diva Serial [GSP] Multiport UART",
+"		103c 1049  Tosca Console",
+"		103c 104a  Tosca Secondary",
+"		103c 104b  Maestro SP2",
+"		103c 1223  Superdome Console",
+"		103c 1226  Keystone SP2",
+"		103c 1227  Powerbar SP2",
+"		103c 1282  Everest SP2",
+"		103c 1301  Diva RMP3",
+"	1054  PCI Local Bus Adapter",
+"	1064  79C970 PCnet Ethernet Controller",
+"	108b  Visualize FXe",
+"	10c1  NetServer Smart IRQ Router",
+"	10ed  TopTools Remote Control",
+"	10f0  rio System Bus Adapter",
+"	10f1  rio I/O Controller",
+"	1200  82557B 10/100 NIC",
+"	1219  NetServer PCI Hot-Plug Controller",
+"	121a  NetServer SMIC Controller",
+"	121b  NetServer Legacy COM Port Decoder",
+"	121c  NetServer PCI COM Port Decoder",
+"	1229  zx1 System Bus Adapter",
+"	122a  zx1 I/O Controller",
+"	122e  zx1 Local Bus Adapter",
+"	127c  sx1000 I/O Controller",
+"	1290  Auxiliary Diva Serial Port",
+"	1291  Auxiliary Diva Serial Port",
+"	12b4  zx1 QuickSilver AGP8x Local Bus Adapter",
+"	12f8  Broadcom BCM4306 802.11b/g Wireless LAN",
+"	12fa  BCM4306 802.11b/g Wireless LAN Controller",
+"	2910  E2910A PCIBus Exerciser",
+"	2925  E2925A 32 Bit, 33 MHzPCI Exerciser & Analyzer",
+"	3080  Pavilion ze2028ea",
+"	3085  Realtek RTL8139/8139C/8139C+",
+"	3220  Hewlett-Packard Smart Array P600",
+"	3230  Hewlett-Packard Smart Array Controller",
+"103e  Solliday Engineering",
+"103f  Synopsys/Logic Modeling Group",
+"1040  Accelgraphics Inc.",
+"1041  Computrend",
+"1042  Micron",
+"	1000  PC Tech RZ1000",
+"	1001  PC Tech RZ1001",
+"	3000  Samurai_0",
+"	3010  Samurai_1",
+"	3020  Samurai_IDE",
+"1043  ASUSTeK Computer Inc.",
+"	0675  ISDNLink P-IN100-ST-D",
+"		0675 1704  ISDN Adapter (PCI Bus, D, C)",
+"		0675 1707  ISDN Adapter (PCI Bus, DV, W)",
+"		10cf 105e  ISDN Adapter (PCI Bus, DV, W)",
+"	0c11  A7N8X Motherboard nForce2 IDE/USB/SMBus",
+"	4015  v7100 SDRAM [GeForce2 MX]",
+"	4021  v7100 Combo Deluxe [GeForce2 MX + TV tuner]",
+"	4057  v8200 GeForce 3",
+"	8043  v8240 PAL 128M [P4T] Motherboard",
+"	807b  v9280/TD [Geforce4 TI4200 8X With TV-Out and DVI]",
+"	8095  A7N8X Motherboard nForce2 AC97 Audio",
+"	80ac  A7N8X Motherboard nForce2 AGP/Memory",
+"	80bb  v9180 Magic/T [GeForce4 MX440 AGP 8x 64MB TV-out]",
+"	80c5  nForce3 chipset motherboard [SK8N]",
+"	80df  v9520 Magic/T",
+"	8187  802.11a/b/g Wireless LAN Card",
+"	8188  Tiger Hybrid TV Capture Device",
+"1044  Adaptec (formerly DPT)",
+"	1012  Domino RAID Engine",
+"	a400  SmartCache/Raid I-IV Controller",
+"	a500  PCI Bridge",
+"	a501  SmartRAID V Controller",
+"		1044 c001  PM1554U2 Ultra2 Single Channel",
+"		1044 c002  PM1654U2 Ultra2 Single Channel",
+"		1044 c003  PM1564U3 Ultra3 Single Channel",
+"		1044 c004  PM1564U3 Ultra3 Dual Channel",
+"		1044 c005  PM1554U2 Ultra2 Single Channel (NON ACPI)",
+"		1044 c00a  PM2554U2 Ultra2 Single Channel",
+"		1044 c00b  PM2654U2 Ultra2 Single Channel",
+"		1044 c00c  PM2664U3 Ultra3 Single Channel",
+"		1044 c00d  PM2664U3 Ultra3 Dual Channel",
+"		1044 c00e  PM2554U2 Ultra2 Single Channel (NON ACPI)",
+"		1044 c00f  PM2654U2 Ultra2 Single Channel (NON ACPI)",
+"		1044 c014  PM3754U2 Ultra2 Single Channel (NON ACPI)",
+"		1044 c015  PM3755U2B Ultra2 Single Channel (NON ACPI)",
+"		1044 c016  PM3755F Fibre Channel (NON ACPI)",
+"		1044 c01e  PM3757U2 Ultra2 Single Channel",
+"		1044 c01f  PM3757U2 Ultra2 Dual Channel",
+"		1044 c020  PM3767U3 Ultra3 Dual Channel",
+"		1044 c021  PM3767U3 Ultra3 Quad Channel",
+"		1044 c028  PM2865U3 Ultra3 Single Channel",
+"		1044 c029  PM2865U3 Ultra3 Dual Channel",
+"		1044 c02a  PM2865F Fibre Channel",
+"		1044 c03c  2000S Ultra3 Single Channel",
+"		1044 c03d  2000S Ultra3 Dual Channel",
+"		1044 c03e  2000F Fibre Channel",
+"		1044 c046  3000S Ultra3 Single Channel",
+"		1044 c047  3000S Ultra3 Dual Channel",
+"		1044 c048  3000F Fibre Channel",
+"		1044 c050  5000S Ultra3 Single Channel",
+"		1044 c051  5000S Ultra3 Dual Channel",
+"		1044 c052  5000F Fibre Channel",
+"		1044 c05a  2400A UDMA Four Channel",
+"		1044 c05b  2400A UDMA Four Channel DAC",
+"		1044 c064  3010S Ultra3 Dual Channel",
+"		1044 c065  3410S Ultra160 Four Channel",
+"		1044 c066  3010S Fibre Channel",
+"	a511  SmartRAID V Controller",
+"		1044 c032  ASR-2005S I2O Zero Channel",
+"		1044 c035  ASR-2010S I2O Zero Channel",
+"1045  OPTi Inc.",
+"	a0f8  82C750 [Vendetta] USB Controller",
+"	c101  92C264",
+"	c178  92C178",
+"	c556  82X556 [Viper]",
+"	c557  82C557 [Viper-M]",
+"	c558  82C558 [Viper-M ISA+IDE]",
+"	c567  82C750 [Vendetta], device 0",
+"	c568  82C750 [Vendetta], device 1",
+"	c569  82C579 [Viper XPress+ Chipset]",
+"	c621  82C621 [Viper-M/N+]",
+"	c700  82C700 [FireStar]",
+"	c701  82C701 [FireStar Plus]",
+"	c814  82C814 [Firebridge 1]",
+"	c822  82C822",
+"	c824  82C824",
+"	c825  82C825 [Firebridge 2]",
+"	c832  82C832",
+"	c861  82C861",
+"	c895  82C895",
+"	c935  EV1935 ECTIVA MachOne PCIAudio",
+"	d568  82C825 [Firebridge 2]",
+"	d721  IDE [FireStar]",
+"1046  IPC Corporation, Ltd.",
+"1047  Genoa Systems Corp",
+"1048  Elsa AG",
+"	0c60  Gladiac MX",
+"	0d22  Quadro4 900XGL [ELSA GLoria4 900XGL]",
+"	1000  QuickStep 1000",
+"	3000  QuickStep 3000",
+"	8901  Gloria XL",
+"		1048 0935  GLoria XL (Virge)",
+"1049  Fountain Technologies, Inc.",
+"104a  STMicroelectronics",
+"	0008  STG 2000X",
+"	0009  STG 1764X",
+"	0010  STG4000 [3D Prophet Kyro Series]",
+"	0209  STPC Consumer/Industrial North- and Southbridge",
+"	020a  STPC Atlas/ConsumerS/Consumer IIA Northbridge",
+"	0210  STPC Atlas ISA Bridge",
+"	021a  STPC Consumer S Southbridge",
+"	021b  STPC Consumer IIA Southbridge",
+"	0500  ST70137 [Unicorn] ADSL DMT Transceiver",
+"	0564  STPC Client Northbridge",
+"	0981  21x4x DEC-Tulip compatible 10/100 Ethernet",
+"	1746  STG 1764X",
+"	2774  21x4x DEC-Tulip compatible 10/100 Ethernet",
+"	3520  MPEG-II decoder card",
+"	55cc  STPC Client Southbridge",
+"104b  BusLogic",
+"	0140  BT-946C (old) [multimaster  01]",
+"	1040  BT-946C (BA80C30) [MultiMaster 10]",
+"	8130  Flashpoint LT",
+"104c  Texas Instruments",
+"	0500  100 MBit LAN Controller",
+"	0508  TMS380C2X Compressor Interface",
+"	1000  Eagle i/f AS",
+"	104c  PCI1510 PC card Cardbus Controller",
+"	3d04  TVP4010 [Permedia]",
+"	3d07  TVP4020 [Permedia 2]",
+"		1011 4d10  Comet",
+"		1040 000f  AccelStar II",
+"		1040 0011  AccelStar II",
+"		1048 0a31  WINNER 2000",
+"		1048 0a32  GLoria Synergy",
+"		1048 0a34  GLoria Synergy",
+"		1048 0a35  GLoria Synergy",
+"		1048 0a36  GLoria Synergy",
+"		1048 0a43  GLoria Synergy",
+"		1048 0a44  GLoria Synergy",
+"		107d 2633  WinFast 3D L2300",
+"		1092 0127  FIRE GL 1000 PRO",
+"		1092 0136  FIRE GL 1000 PRO",
+"		1092 0141  FIRE GL 1000 PRO",
+"		1092 0146  FIRE GL 1000 PRO",
+"		1092 0148  FIRE GL 1000 PRO",
+"		1092 0149  FIRE GL 1000 PRO",
+"		1092 0152  FIRE GL 1000 PRO",
+"		1092 0154  FIRE GL 1000 PRO",
+"		1092 0155  FIRE GL 1000 PRO",
+"		1092 0156  FIRE GL 1000 PRO",
+"		1092 0157  FIRE GL 1000 PRO",
+"		1097 3d01  Jeronimo Pro",
+"		1102 100f  Graphics Blaster Extreme",
+"		3d3d 0100  Reference Permedia 2 3D",
+"	8000  PCILynx/PCILynx2 IEEE 1394 Link Layer Controller",
+"		e4bf 1010  CF1-1-SNARE",
+"		e4bf 1020  CF1-2-SNARE",
+"	8009  FireWire Controller",
+"		104d 8032  8032 OHCI i.LINK (IEEE 1394) Controller",
+"	8017  PCI4410 FireWire Controller",
+"	8019  TSB12LV23 IEEE-1394 Controller",
+"		11bd 000a  Studio DV500-1394",
+"		11bd 000e  Studio DV",
+"		e4bf 1010  CF2-1-CYMBAL",
+"	8020  TSB12LV26 IEEE-1394 Controller (Link)",
+"		11bd 000f  Studio DV500-1394",
+"	8021  TSB43AA22 IEEE-1394 Controller (PHY/Link Integrated)",
+"		104d 80df  Vaio PCG-FX403",
+"		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP",
+"	8022  TSB43AB22 IEEE-1394a-2000 Controller (PHY/Link)",
+"	8023  TSB43AB22/A IEEE-1394a-2000 Controller (PHY/Link)",
+"		103c 088c  NC8000 laptop",
+"		1043 808b  K8N4-E Mainboard",
+"	8024  TSB43AB23 IEEE-1394a-2000 Controller (PHY/Link)",
+"	8025  TSB82AA2 IEEE-1394b Link Layer Controller",
+"		1458 1000  GA-K8N Ultra-9 Mainboard",
+"	8026  TSB43AB21 IEEE-1394a-2000 Controller (PHY/Link)",
+"		1025 003c  Aspire 2001WLCi (Compaq CL50 motherboard)",
+"		103c 006a  NX9500",
+"		1043 808d  A7V333 mainboard.",
+"	8027  PCI4451 IEEE-1394 Controller",
+"		1028 00e6  PCI4451 IEEE-1394 Controller (Dell Inspiron 8100)",
+"	8029  PCI4510 IEEE-1394 Controller",
+"		1028 0163  Latitude D505",
+"		1028 0196  Inspiron 5160",
+"		1071 8160  MIM2900",
+"	802b  PCI7410,7510,7610 OHCI-Lynx Controller",
+"		1028 0139  Latitude D400",
+"		1028 014e  PCI7410,7510,7610 OHCI-Lynx Controller (Dell Latitude D800)",
+"	802e  PCI7x20 1394a-2000 OHCI Two-Port PHY/Link-Layer Controller",
+"	8031  PCIxx21/x515 Cardbus Controller",
+"		1025 0080  Aspire 5024WLMi",
+"		103c 099c  NX6110/NC6120",
+"		103c 308b  MX6125",
+"	8032  OHCI Compliant IEEE 1394 Host Controller",
+"		1025 0080  Aspire 5024WLMi",
+"		103c 099c  NX6110/NC6120",
+"		103c 308b  MX6125",
+"	8033  PCIxx21 Integrated FlashMedia Controller",
+"		1025 0080  Aspire 5024WLMi",
+"		103c 099c  NX6110/NC6120",
+"		103c 308b  MX6125",
+"	8034  PCI6411, PCI6421, PCI6611, PCI6621, PCI7411, PCI7421, PCI7611, PCI7621 Secure Digital (SD) Controller",
+"		1025 0080  Aspire 5024WLMi",
+"		103c 099c  NX6110/NC6120",
+"		103c 308b  MX6125",
+"	8035  PCI6411, PCI6421, PCI6611, PCI6621, PCI7411, PCI7421, PCI7611, PCI7621 Smart Card Controller (SMC)",
+"		103c 099c  NX6110/NC6120",
+"	8036  PCI6515 Cardbus Controller",
+"	8038  PCI6515 SmartCard Controller",
+"	803b  5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD)",
+"	8201  PCI1620 Firmware Loading Function",
+"	8204  PCI7410,7510,7610 PCI Firmware Loading Function",
+"		1028 0139  Latitude D400",
+"		1028 014e  Latitude D800",
+"	8231  XIO2000(A)/XIO2200 PCI Express-to-PCI Bridge",
+"	8235  XIO2200 IEEE-1394a-2000 Controller (PHY/Link)",
+"	8400  ACX 100 22Mbps Wireless Interface",
+"		1186 3b00  DWL-650+ PC Card cardbus 22Mbs Wireless Adapter [AirPlus]",
+"		1186 3b01  DWL-520+ 22Mbps PCI Wireless Adapter",
+"		16ab 8501  WL-8305 IEEE802.11b+ Wireless LAN PCI Adapter",
+"	8401  ACX 100 22Mbps Wireless Interface",
+"	9000  Wireless Interface (of unknown type)",
+"	9065  TMS320DM642",
+"	9066  ACX 111 54Mbps Wireless Interface",
+"		104c 9066  Trendnet TEW-421PC Wireless PCI Adapter",
+"		1186 3b04  DWL-G520+ Wireless PCI Adapter",
+"		1186 3b05  DWL-G650+ AirPlusG+ CardBus Wireless LAN",
+"		13d1 aba0  SWLMP-54108 108Mbps Wireless mini PCI card 802.11g+",
+"		1737 0033  WPC54G Ver.2 802.11G PC Card",
+"	a001  TDC1570",
+"	a100  TDC1561",
+"	a102  TNETA1575 HyperSAR Plus w/PCI Host i/f & UTOPIA i/f",
+"	a106  TMS320C6414 TMS320C6415 TMS320C6416",
+"		175c 5000  ASI50xx Audio Adapter",
+"		175c 6400  ASI6400 Cobranet series",
+"		175c 8700  ASI87xx Radio Tuner card",
+"	ac10  PCI1050",
+"	ac11  PCI1053",
+"	ac12  PCI1130",
+"	ac13  PCI1031",
+"	ac15  PCI1131",
+"	ac16  PCI1250",
+"		1014 0092  ThinkPad 600",
+"	ac17  PCI1220",
+"	ac18  PCI1260",
+"	ac19  PCI1221",
+"	ac1a  PCI1210",
+"	ac1b  PCI1450",
+"		0e11 b113  Armada M700",
+"		1014 0130  Thinkpad T20/T22/A21m",
+"	ac1c  PCI1225",
+"		0e11 b121  Armada E500",
+"		1028 0088  Latitude CPi A400XT",
+"	ac1d  PCI1251A",
+"	ac1e  PCI1211",
+"	ac1f  PCI1251B",
+"	ac20  TI 2030",
+"	ac21  PCI2031",
+"	ac22  PCI2032 PCI Docking Bridge",
+"	ac23  PCI2250 PCI-to-PCI Bridge",
+"	ac28  PCI2050 PCI-to-PCI Bridge",
+"	ac30  PCI1260 PC card Cardbus Controller",
+"	ac40  PCI4450 PC card Cardbus Controller",
+"	ac41  PCI4410 PC card Cardbus Controller",
+"	ac42  PCI4451 PC card Cardbus Controller",
+"		1028 00e6  PCI4451 PC card CardBus Controller (Dell Inspiron 8100)",
+"	ac44  PCI4510 PC card Cardbus Controller",
+"		1028 0163  Latitude D505",
+"		1028 0196  Inspiron 5160",
+"		1071 8160  MIM2000",
+"	ac46  PCI4520 PC card Cardbus Controller",
+"	ac47  PCI7510 PC card Cardbus Controller",
+"		1028 0139  Latitude D400",
+"		1028 013f  Precision M60",
+"		1028 014e  Latitude D800",
+"	ac4a  PCI7510,7610 PC card Cardbus Controller",
+"		1028 0139  Latitude D400",
+"		1028 014e  Latitude D800",
+"	ac50  PCI1410 PC card Cardbus Controller",
+"	ac51  PCI1420",
+"		0e11 004e  Evo N600c",
+"		1014 0148  ThinkPad A20m",
+"		1014 023b  ThinkPad T23 (2647-4MG)",
+"		1028 00b1  Latitude C600",
+"		1028 012a  Latitude C640",
+"		1033 80cd  Versa Note VXi",
+"		1095 10cf  Fujitsu-Siemens LifeBook C Series",
+"		10cf 1095  Lifebook S-4510/C6155",
+"		e4bf 1000  CP2-2-HIPHOP",
+"	ac52  PCI1451 PC card Cardbus Controller",
+"	ac53  PCI1421 PC card Cardbus Controller",
+"	ac54  PCI1620 PC Card Controller",
+"	ac55  PCI1520 PC card Cardbus Controller",
+"		1014 0512  ThinkPad T30/T40",
+"	ac56  PCI1510 PC card Cardbus Controller",
+"		1014 0528  ThinkPad R40e (2684-HVG) Cardbus Controller",
+"	ac60  PCI2040 PCI to DSP Bridge Controller",
+"		175c 5100  ASI51xx Audio Adapter",
+"		175c 6100  ASI61xx Audio Adapter",
+"		175c 6200  ASI62xx Audio Adapter",
+"		175c 8800  ASI88xx Audio Adapter",
+"	ac8d  PCI 7620",
+"	ac8e  PCI7420 CardBus Controller",
+"	ac8f  PCI7420/PCI7620 Dual Socket CardBus and Smart Card Cont. w/ 1394a-2000 OHCI Two-Port  PHY/Link-Layer Cont. and SD/MS-Pro Sockets",
+"	fe00  FireWire Host Controller",
+"	fe03  12C01A FireWire Host Controller",
+"104d  Sony Corporation",
+"	8004  DTL-H2500 [Playstation development board]",
+"	8009  CXD1947Q i.LINK Controller",
+"	8039  CXD3222 i.LINK Controller",
+"	8056  Rockwell HCF 56K modem",
+"	808a  Memory Stick Controller",
+"104e  Oak Technology, Inc",
+"	0017  OTI-64017",
+"	0107  OTI-107 [Spitfire]",
+"	0109  Video Adapter",
+"	0111  OTI-64111 [Spitfire]",
+"	0217  OTI-64217",
+"	0317  OTI-64317",
+"104f  Co-time Computer Ltd",
+"1050  Winbond Electronics Corp",
+"	0000  NE2000",
+"	0001  W83769F",
+"	0033  W89C33D 802.11 a/b/g BB/MAC",
+"	0105  W82C105",
+"	0840  W89C840",
+"		1050 0001  W89C840 Ethernet Adapter",
+"		1050 0840  W89C840 Ethernet Adapter",
+"	0940  W89C940",
+"	5a5a  W89C940F",
+"	6692  W6692",
+"		1043 1702  ISDN Adapter (PCI Bus, D, W)",
+"		1043 1703  ISDN Adapter (PCI Bus, DV, W)",
+"		1043 1707  ISDN Adapter (PCI Bus, DV, W)",
+"		144f 1702  ISDN Adapter (PCI Bus, D, W)",
+"		144f 1703  ISDN Adapter (PCI Bus, DV, W)",
+"		144f 1707  ISDN Adapter (PCI Bus, DV, W)",
+"	9921  W99200F MPEG-1 Video Encoder",
+"	9922  W99200F/W9922PF MPEG-1/2 Video Encoder",
+"	9970  W9970CF",
+"1051  Anigma, Inc.",
+"1052  \?Young Micro Systems",
+"1053  Young Micro Systems",
+"1054  Hitachi, Ltd",
+"1055  Efar Microsystems",
+"	9130  SLC90E66 [Victory66] IDE",
+"	9460  SLC90E66 [Victory66] ISA",
+"	9462  SLC90E66 [Victory66] USB",
+"	9463  SLC90E66 [Victory66] ACPI",
+"1056  ICL",
+"1057  Motorola",
+"	0001  MPC105 [Eagle]",
+"	0002  MPC106 [Grackle]",
+"	0003  MPC8240 [Kahlua]",
+"	0004  MPC107",
+"	0006  MPC8245 [Unity]",
+"	0008  MPC8540",
+"	0009  MPC8560",
+"	0100  MC145575 [HFC-PCI]",
+"	0431  KTI829c 100VG",
+"	1801  DSP56301 Digital Signal Processor",
+"		14fb 0101  Transas Radar Imitator Board [RIM]",
+"		14fb 0102  Transas Radar Imitator Board [RIM-2]",
+"		14fb 0202  Transas Radar Integrator Board [RIB-2]",
+"		14fb 0611  1 channel CAN bus Controller [CanPci-1]",
+"		14fb 0612  2 channels CAN bus Controller [CanPci-2]",
+"		14fb 0613  3 channels CAN bus Controller [CanPci-3]",
+"		14fb 0614  4 channels CAN bus Controller [CanPci-4]",
+"		14fb 0621  1 channel CAN bus Controller [CanPci2-1]",
+"		14fb 0622  2 channels CAN bus Controller [CanPci2-2]",
+"		14fb 0810  Transas VTS Radar Integrator Board [RIB-4]",
+"		175c 4200  ASI4215 Audio Adapter",
+"		175c 4300  ASI43xx Audio Adapter",
+"		175c 4400  ASI4401 Audio Adapter",
+"		ecc0 0010  Darla",
+"		ecc0 0020  Gina",
+"		ecc0 0030  Layla rev.0",
+"		ecc0 0031  Layla rev.1",
+"		ecc0 0040  Darla24 rev.0",
+"		ecc0 0041  Darla24 rev.1",
+"		ecc0 0050  Gina24 rev.0",
+"		ecc0 0051  Gina24 rev.1",
+"		ecc0 0070  Mona rev.0",
+"		ecc0 0071  Mona rev.1",
+"		ecc0 0072  Mona rev.2",
+"	18c0  MPC8265A/8266/8272",
+"	18c1  MPC8271/MPC8272",
+"	3410  DSP56361 Digital Signal Processor",
+"		ecc0 0050  Gina24 rev.0",
+"		ecc0 0051  Gina24 rev.1",
+"		ecc0 0060  Layla24",
+"		ecc0 0070  Mona rev.0",
+"		ecc0 0071  Mona rev.1",
+"		ecc0 0072  Mona rev.2",
+"		ecc0 0080  Mia rev.0",
+"		ecc0 0081  Mia rev.1",
+"		ecc0 0090  Indigo",
+"		ecc0 00a0  Indigo IO",
+"		ecc0 00b0  Indigo DJ",
+"		ecc0 0100  3G",
+"	4801  Raven",
+"	4802  Falcon",
+"	4803  Hawk",
+"	4806  CPX8216",
+"	4d68  20268",
+"	5600  SM56 PCI Modem",
+"		1057 0300  SM56 PCI Speakerphone Modem",
+"		1057 0301  SM56 PCI Voice Modem",
+"		1057 0302  SM56 PCI Fax Modem",
+"		1057 5600  SM56 PCI Voice modem",
+"		13d2 0300  SM56 PCI Speakerphone Modem",
+"		13d2 0301  SM56 PCI Voice modem",
+"		13d2 0302  SM56 PCI Fax Modem",
+"		1436 0300  SM56 PCI Speakerphone Modem",
+"		1436 0301  SM56 PCI Voice modem",
+"		1436 0302  SM56 PCI Fax Modem",
+"		144f 100c  SM56 PCI Fax Modem",
+"		1494 0300  SM56 PCI Speakerphone Modem",
+"		1494 0301  SM56 PCI Voice modem",
+"		14c8 0300  SM56 PCI Speakerphone Modem",
+"		14c8 0302  SM56 PCI Fax Modem",
+"		1668 0300  SM56 PCI Speakerphone Modem",
+"		1668 0302  SM56 PCI Fax Modem",
+"	5608  Wildcard X100P",
+"	5803  MPC5200",
+"	5806  MCF54 Coldfire",
+"	5808  MPC8220",
+"	5809  MPC5200B",
+"	6400  MPC190 Security Processor (S1 family, encryption)",
+"	6405  MPC184 Security Processor (S1 family)",
+"1058  Electronics & Telecommunications RSH",
+"1059  Teknor Industrial Computers Inc",
+"105a  Promise Technology, Inc.",
+"	0d30  PDC20265 (FastTrak100 Lite/Ultra100)",
+"		105a 4d33  Ultra100",
+"	0d38  20263",
+"		105a 4d39  Fasttrak66",
+"	1275  20275",
+"	3318  PDC20318 (SATA150 TX4)",
+"	3319  PDC20319 (FastTrak S150 TX4)",
+"		8086 3427  S875WP1-E mainboard",
+"	3371  PDC20371 (FastTrak S150 TX2plus)",
+"	3373  PDC20378 (FastTrak 378/SATA 378)",
+"		1043 80f5  K8V Deluxe/PC-DL Deluxe motherboard",
+"		1462 702e  K8T NEO FIS2R motherboard",
+"	3375  PDC20375 (SATA150 TX2plus)",
+"	3376  PDC20376 (FastTrak 376)",
+"		1043 809e  A7V8X motherboard",
+"	3515  PDC40719 [FastTrak TX4300/TX4310]",
+"	3519  PDC40519 (FastTrak TX4200)",
+"	3570  20771 (FastTrak TX2300)",
+"	3571  PDC20571 (FastTrak TX2200)",
+"	3574  PDC20579 SATAII 150 IDE Controller",
+"	3577  PDC40779 (SATA 300 779)",
+"	3d17  PDC40718 (SATA 300 TX4)",
+"	3d18  PDC20518/PDC40518 (SATAII 150 TX4)",
+"	3d73  PDC40775 (SATA 300 TX2plus)",
+"	3d75  PDC20575 (SATAII150 TX2plus)",
+"	4d30  PDC20267 (FastTrak100/Ultra100)",
+"		105a 4d33  Ultra100",
+"		105a 4d39  FastTrak100",
+"	4d33  20246",
+"		105a 4d33  20246 IDE Controller",
+"	4d38  PDC20262 (FastTrak66/Ultra66)",
+"		105a 4d30  Ultra Device on SuperTrak",
+"		105a 4d33  Ultra66",
+"		105a 4d39  FastTrak66",
+"	4d68  PDC20268 (Ultra100 TX2)",
+"		105a 4d68  Ultra100TX2",
+"	4d69  20269",
+"		105a 4d68  Ultra133TX2",
+"	5275  PDC20276 (MBFastTrak133 Lite)",
+"		1043 807e  A7V333 motherboard.",
+"		105a 0275  SuperTrak SX6000 IDE",
+"		105a 1275  MBFastTrak133 Lite (tm) Controller (RAID mode)",
+"		1458 b001  MBUltra 133",
+"	5300  DC5300",
+"	6268  PDC20270 (FastTrak100 LP/TX2/TX4)",
+"		105a 4d68  FastTrak100 TX2",
+"	6269  PDC20271 (FastTrak TX2000)",
+"		105a 6269  FastTrak TX2/TX2000",
+"	6621  PDC20621 (FastTrak S150 SX4/FastTrak SX4000 lite)",
+"	6622  PDC20621 [SATA150 SX4] 4 Channel IDE RAID Controller",
+"	6624  PDC20621 [FastTrak SX4100]",
+"	6626  PDC20618 (Ultra 618)",
+"	6629  PDC20619 (FastTrak TX4000)",
+"	7275  PDC20277 (SBFastTrak133 Lite)",
+"	8002  SATAII150 SX8",
+"105b  Foxconn International, Inc.",
+"105c  Wipro Infotech Limited",
+"105d  Number 9 Computer Company",
+"	2309  Imagine 128",
+"	2339  Imagine 128-II",
+"		105d 0000  Imagine 128 series 2 4Mb VRAM",
+"		105d 0001  Imagine 128 series 2 4Mb VRAM",
+"		105d 0002  Imagine 128 series 2 4Mb VRAM",
+"		105d 0003  Imagine 128 series 2 4Mb VRAM",
+"		105d 0004  Imagine 128 series 2 4Mb VRAM",
+"		105d 0005  Imagine 128 series 2 4Mb VRAM",
+"		105d 0006  Imagine 128 series 2 4Mb VRAM",
+"		105d 0007  Imagine 128 series 2 4Mb VRAM",
+"		105d 0008  Imagine 128 series 2e 4Mb DRAM",
+"		105d 0009  Imagine 128 series 2e 4Mb DRAM",
+"		105d 000a  Imagine 128 series 2 8Mb VRAM",
+"		105d 000b  Imagine 128 series 2 8Mb H-VRAM",
+"		11a4 000a  Barco Metheus 5 Megapixel",
+"		13cc 0000  Barco Metheus 5 Megapixel",
+"		13cc 0004  Barco Metheus 5 Megapixel",
+"		13cc 0005  Barco Metheus 5 Megapixel",
+"		13cc 0006  Barco Metheus 5 Megapixel",
+"		13cc 0008  Barco Metheus 5 Megapixel",
+"		13cc 0009  Barco Metheus 5 Megapixel",
+"		13cc 000a  Barco Metheus 5 Megapixel",
+"		13cc 000c  Barco Metheus 5 Megapixel",
+"	493d  Imagine 128 T2R [Ticket to Ride]",
+"		11a4 000a  Barco Metheus 5 Megapixel, Dual Head",
+"		11a4 000b  Barco Metheus 5 Megapixel, Dual Head",
+"		13cc 0002  Barco Metheus 4 Megapixel, Dual Head",
+"		13cc 0003  Barco Metheus 5 Megapixel, Dual Head",
+"		13cc 0007  Barco Metheus 5 Megapixel, Dual Head",
+"		13cc 0008  Barco Metheus 5 Megapixel, Dual Head",
+"		13cc 0009  Barco Metheus 5 Megapixel, Dual Head",
+"		13cc 000a  Barco Metheus 5 Megapixel, Dual Head",
+"	5348  Revolution 4",
+"		105d 0037  Revolution IV-FP AGP (For SGI 1600SW)",
+"		11a4 0028  PVS5600M",
+"		11a4 0038  PVS5600D",
+"105e  Vtech Computers Ltd",
+"105f  Infotronic America Inc",
+"1060  United Microelectronics [UMC]",
+"	0001  UM82C881",
+"	0002  UM82C886",
+"	0101  UM8673F",
+"	0881  UM8881",
+"	0886  UM8886F",
+"	0891  UM8891A",
+"	1001  UM886A",
+"	673a  UM8886BF",
+"	673b  EIDE Master/DMA",
+"	8710  UM8710",
+"	886a  UM8886A",
+"	8881  UM8881F",
+"	8886  UM8886F",
+"	888a  UM8886A",
+"	8891  UM8891A",
+"	9017  UM9017F",
+"	9018  UM9018",
+"	9026  UM9026",
+"	e881  UM8881N",
+"	e886  UM8886N",
+"	e88a  UM8886N",
+"	e891  UM8891N",
+"1061  I.I.T.",
+"	0001  AGX016",
+"	0002  IIT3204/3501",
+"1062  Maspar Computer Corp",
+"1063  Ocean Office Automation",
+"1064  Alcatel",
+"1065  Texas Microsystems",
+"1066  PicoPower Technology",
+"	0000  PT80C826",
+"	0001  PT86C521 [Vesuvius v1] Host Bridge",
+"	0002  PT86C523 [Vesuvius v3] PCI-ISA Bridge Master",
+"	0003  PT86C524 [Nile] PCI-to-PCI Bridge",
+"	0004  PT86C525 [Nile-II] PCI-to-PCI Bridge",
+"	0005  National PC87550 System Controller",
+"	8002  PT86C523 [Vesuvius v3] PCI-ISA Bridge Slave",
+"1067  Mitsubishi Electric",
+"	0301  AccelGraphics AccelECLIPSE",
+"	0304  AccelGALAXY A2100 [OEM Evans & Sutherland]",
+"	0308  Tornado 3000 [OEM Evans & Sutherland]",
+"	1002  VG500 [VolumePro Volume Rendering Accelerator]",
+"1068  Diversified Technology",
+"1069  Mylex Corporation",
+"	0001  DAC960P",
+"	0002  DAC960PD",
+"	0010  DAC960PG",
+"	0020  DAC960LA",
+"	0050  AcceleRAID 352/170/160 support Device",
+"		1069 0050  AcceleRAID 352 support Device",
+"		1069 0052  AcceleRAID 170 support Device",
+"		1069 0054  AcceleRAID 160 support Device",
+"	b166  AcceleRAID 600/500/400/Sapphire support Device",
+"		1014 0242  iSeries 2872 DASD IOA",
+"		1014 0266  Dual Channel PCI-X U320 SCSI Adapter",
+"		1014 0278  Dual Channel PCI-X U320 SCSI RAID Adapter",
+"		1014 02d3  Dual Channel PCI-X U320 SCSI Adapter",
+"		1014 02d4  Dual Channel PCI-X U320 SCSI RAID Adapter",
+"		1069 0200  AcceleRAID 400, Single Channel, PCI-X, U320, SCSI RAID",
+"		1069 0202  AcceleRAID Sapphire, Dual Channel, PCI-X, U320, SCSI RAID",
+"		1069 0204  AcceleRAID 500, Dual Channel, Low-Profile, PCI-X, U320, SCSI RAID",
+"		1069 0206  AcceleRAID 600, Dual Channel, PCI-X, U320, SCSI RAID",
+"	ba55  eXtremeRAID 1100 support Device",
+"	ba56  eXtremeRAID 2000/3000 support Device",
+"		1069 0030  eXtremeRAID 3000 support Device",
+"		1069 0040  eXtremeRAID 2000 support Device",
+"	ba57  eXtremeRAID 4000/5000 support Device",
+"		1069 0072  eXtremeRAID 5000 support Device",
+"106a  Aten Research Inc",
+"106b  Apple Computer Inc.",
+"	0001  Bandit PowerPC host bridge",
+"	0002  Grand Central I/O",
+"	0003  Control Video",
+"	0004  PlanB Video-In",
+"	0007  O'Hare I/O",
+"	000c  DOS on Mac",
+"	000e  Hydra Mac I/O",
+"	0010  Heathrow Mac I/O",
+"	0017  Paddington Mac I/O",
+"	0018  UniNorth FireWire",
+"	0019  KeyLargo USB",
+"	001e  UniNorth Internal PCI",
+"	001f  UniNorth PCI",
+"	0020  UniNorth AGP",
+"	0021  UniNorth GMAC (Sun GEM)",
+"	0022  KeyLargo Mac I/O",
+"	0024  UniNorth/Pangea GMAC (Sun GEM)",
+"	0025  KeyLargo/Pangea Mac I/O",
+"	0026  KeyLargo/Pangea USB",
+"	0027  UniNorth/Pangea AGP",
+"	0028  UniNorth/Pangea PCI",
+"	0029  UniNorth/Pangea Internal PCI",
+"	002d  UniNorth 1.5 AGP",
+"	002e  UniNorth 1.5 PCI",
+"	002f  UniNorth 1.5 Internal PCI",
+"	0030  UniNorth/Pangea FireWire",
+"	0031  UniNorth 2 FireWire",
+"		106b 5811  iBook G4 2004",
+"	0032  UniNorth 2 GMAC (Sun GEM)",
+"	0033  UniNorth 2 ATA/100",
+"	0034  UniNorth 2 AGP",
+"	0035  UniNorth 2 PCI",
+"	0036  UniNorth 2 Internal PCI",
+"	003b  UniNorth/Intrepid ATA/100",
+"	003e  KeyLargo/Intrepid Mac I/O",
+"	003f  KeyLargo/Intrepid USB",
+"	0040  K2 KeyLargo USB",
+"	0041  K2 KeyLargo Mac/IO",
+"	0042  K2 FireWire",
+"	0043  K2 ATA/100",
+"	0045  K2 HT-PCI Bridge",
+"	0046  K2 HT-PCI Bridge",
+"	0047  K2 HT-PCI Bridge",
+"	0048  K2 HT-PCI Bridge",
+"	0049  K2 HT-PCI Bridge",
+"	004b  U3 AGP",
+"	004c  K2 GMAC (Sun GEM)",
+"	004f  Shasta Mac I/O",
+"	0050  Shasta IDE",
+"	0051  Shasta (Sun GEM)",
+"	0052  Shasta Firewire",
+"	0053  Shasta PCI Bridge",
+"	0054  Shasta PCI Bridge",
+"	0055  Shasta PCI Bridge",
+"	0058  U3L AGP Bridge",
+"	0059  U3H AGP Bridge",
+"	0066  Intrepid2 AGP Bridge",
+"	0067  Intrepid2 PCI Bridge",
+"	0068  Intrepid2 PCI Bridge",
+"	0069  Intrepid2 ATA/100",
+"	006a  Intrepid2 Firewire",
+"	006b  Intrepid2 GMAC (Sun GEM)",
+"	1645  Tigon3 Gigabit Ethernet NIC (BCM5701)",
+"106c  Hynix Semiconductor",
+"	8801  Dual Pentium ISA/PCI Motherboard",
+"	8802  PowerPC ISA/PCI Motherboard",
+"	8803  Dual Window Graphics Accelerator",
+"	8804  LAN Controller",
+"	8805  100-BaseT LAN",
+"106d  Sequent Computer Systems",
+"106e  DFI, Inc",
+"106f  City Gate Development Ltd",
+"1070  Daewoo Telecom Ltd",
+"1071  Mitac",
+"	8160  Mitac 8060B Mobile Platform",
+"1072  GIT Co Ltd",
+"1073  Yamaha Corporation",
+"	0001  3D GUI Accelerator",
+"	0002  YGV615 [RPA3 3D-Graphics Controller]",
+"	0003  YMF-740",
+"	0004  YMF-724",
+"		1073 0004  YMF724-Based PCI Audio Adapter",
+"	0005  DS1 Audio",
+"		1073 0005  DS-XG PCI Audio CODEC",
+"	0006  DS1 Audio",
+"	0008  DS1 Audio",
+"		1073 0008  DS-XG PCI Audio CODEC",
+"	000a  DS1L Audio",
+"		1073 0004  DS-XG PCI Audio CODEC",
+"		1073 000a  DS-XG PCI Audio CODEC",
+"	000c  YMF-740C [DS-1L Audio Controller]",
+"		107a 000c  DS-XG PCI Audio CODEC",
+"	000d  YMF-724F [DS-1 Audio Controller]",
+"		1073 000d  DS-XG PCI Audio CODEC",
+"	0010  YMF-744B [DS-1S Audio Controller]",
+"		1073 0006  DS-XG PCI Audio CODEC",
+"		1073 0010  DS-XG PCI Audio CODEC",
+"	0012  YMF-754 [DS-1E Audio Controller]",
+"		1073 0012  DS-XG PCI Audio Codec",
+"	0020  DS-1 Audio",
+"	2000  DS2416 Digital Mixing Card",
+"		1073 2000  DS2416 Digital Mixing Card",
+"1074  NexGen Microsystems",
+"	4e78  82c500/1",
+"1075  Advanced Integrations Research",
+"1076  Chaintech Computer Co. Ltd",
+"1077  QLogic Corp.",
+"	1016  ISP10160 Single Channel Ultra3 SCSI Processor",
+"	1020  ISP1020 Fast-wide SCSI",
+"	1022  ISP1022 Fast-wide SCSI",
+"	1080  ISP1080 SCSI Host Adapter",
+"	1216  ISP12160 Dual Channel Ultra3 SCSI Processor",
+"		101e 8471  QLA12160 on AMI MegaRAID",
+"		101e 8493  QLA12160 on AMI MegaRAID",
+"	1240  ISP1240 SCSI Host Adapter",
+"	1280  ISP1280 SCSI Host Adapter",
+"	2020  ISP2020A Fast!SCSI Basic Adapter",
+"	2100  QLA2100 64-bit Fibre Channel Adapter",
+"		1077 0001  QLA2100 64-bit Fibre Channel Adapter",
+"	2200  QLA2200 64-bit Fibre Channel Adapter",
+"		1077 0002  QLA2200",
+"	2300  QLA2300 64-bit Fibre Channel Adapter",
+"	2312  QLA2312 Fibre Channel Adapter",
+"	2322  QLA2322 Fibre Channel Adapter",
+"	2422  QLA2422 Fibre Channel Adapter",
+"	2432  QLA2432 Fibre Channel Adapter",
+"	3010  QLA3010 Network Adapter",
+"	3022  QLA3022 Network Adapter",
+"	4010  QLA4010 iSCSI TOE Adapter",
+"	4022  QLA4022 iSCSI TOE Adapter",
+"	6312  QLA6312 Fibre Channel Adapter",
+"	6322  QLA6322 Fibre Channel Adapter",
+"1078  Cyrix Corporation",
+"	0000  5510 [Grappa]",
+"	0001  PCI Master",
+"	0002  5520 [Cognac]",
+"	0100  5530 Legacy [Kahlua]",
+"	0101  5530 SMI [Kahlua]",
+"	0102  5530 IDE [Kahlua]",
+"	0103  5530 Audio [Kahlua]",
+"	0104  5530 Video [Kahlua]",
+"	0400  ZFMicro PCI Bridge",
+"	0401  ZFMicro Chipset SMI",
+"	0402  ZFMicro Chipset IDE",
+"	0403  ZFMicro Expansion Bus",
+"1079  I-Bus",
+"107a  NetWorth",
+"107b  Gateway 2000",
+"107c  LG Electronics [Lucky Goldstar Co. Ltd]",
+"107d  LeadTek Research Inc.",
+"	0000  P86C850",
+"	204d  [GeForce 7800 GTX] Winfast PX7800 GTX TDH",
+"	2134  WinFast 3D S320 II",
+"	2971  [GeForce FX 5900] WinFast A350 TDH MyViVo",
+"107e  Interphase Corporation",
+"	0001  5515 ATM Adapter [Flipper]",
+"	0002  100 VG AnyLan Controller",
+"	0004  5526 Fibre Channel Host Adapter",
+"	0005  x526 Fibre Channel Host Adapter",
+"	0008  5525/5575 ATM Adapter (155 Mbit) [Atlantic]",
+"	9003  5535-4P-BRI-ST",
+"	9007  5535-4P-BRI-U",
+"	9008  5535-1P-SR",
+"	900c  5535-1P-SR-ST",
+"	900e  5535-1P-SR-U",
+"	9011  5535-1P-PRI",
+"	9013  5535-2P-PRI",
+"	9023  5536-4P-BRI-ST",
+"	9027  5536-4P-BRI-U",
+"	9031  5536-1P-PRI",
+"	9033  5536-2P-PRI",
+"107f  Data Technology Corporation",
+"	0802  SL82C105",
+"1080  Contaq Microsystems",
+"	0600  82C599",
+"	c691  Cypress CY82C691",
+"	c693  82c693",
+"1081  Supermac Technology",
+"	0d47  Radius PCI to NuBUS Bridge",
+"1082  EFA Corporation of America",
+"1083  Forex Computer Corporation",
+"	0001  FR710",
+"1084  Parador",
+"1085  Tulip Computers Int.B.V.",
+"1086  J. Bond Computer Systems",
+"1087  Cache Computer",
+"1088  Microcomputer Systems (M) Son",
+"1089  Data General Corporation",
+"108a  SBS Technologies",
+"	0001  VME Bridge Model 617",
+"	0010  VME Bridge Model 618",
+"	0040  dataBLIZZARD",
+"	3000  VME Bridge Model 2706",
+"108c  Oakleigh Systems Inc.",
+"108d  Olicom",
+"	0001  Token-Ring 16/4 PCI Adapter (3136/3137)",
+"	0002  16/4 Token Ring",
+"	0004  RapidFire 3139 Token-Ring 16/4 PCI Adapter",
+"		108d 0004  OC-3139/3140 RapidFire Token-Ring 16/4 Adapter",
+"	0005  GoCard 3250 Token-Ring 16/4 CardBus PC Card",
+"	0006  OC-3530 RapidFire Token-Ring 100",
+"	0007  RapidFire 3141 Token-Ring 16/4 PCI Fiber Adapter",
+"		108d 0007  OC-3141 RapidFire Token-Ring 16/4 Adapter",
+"	0008  RapidFire 3540 HSTR 100/16/4 PCI Adapter",
+"		108d 0008  OC-3540 RapidFire HSTR 100/16/4 Adapter",
+"	0011  OC-2315",
+"	0012  OC-2325",
+"	0013  OC-2183/2185",
+"	0014  OC-2326",
+"	0019  OC-2327/2250 10/100 Ethernet Adapter",
+"		108d 0016  OC-2327 Rapidfire 10/100 Ethernet Adapter",
+"		108d 0017  OC-2250 GoCard 10/100 Ethernet Adapter",
+"	0021  OC-6151/6152 [RapidFire ATM 155]",
+"	0022  ATM Adapter",
+"108e  Sun Microsystems Computer Corp.",
+"	0001  EBUS",
+"	1000  EBUS",
+"	1001  Happy Meal",
+"	1100  RIO EBUS",
+"	1101  RIO GEM",
+"	1102  RIO 1394",
+"	1103  RIO USB",
+"	1648  [bge] Gigabit Ethernet",
+"	2bad  GEM",
+"	5000  Simba Advanced PCI Bridge",
+"	5043  SunPCI Co-processor",
+"	8000  Psycho PCI Bus Module",
+"	8001  Schizo PCI Bus Module",
+"	8002  Schizo+ PCI Bus Module",
+"	a000  Ultra IIi",
+"	a001  Ultra IIe",
+"	a801  Tomatillo PCI Bus Module",
+"	abba  Cassini 10/100/1000",
+"108f  Systemsoft",
+"1090  Compro Computer Services, Inc.",
+"1091  Intergraph Corporation",
+"	0020  3D graphics processor",
+"	0021  3D graphics processor w/Texturing",
+"	0040  3D graphics frame buffer",
+"	0041  3D graphics frame buffer",
+"	0060  Proprietary bus bridge",
+"	00e4  Powerstorm 4D50T",
+"	0720  Motion JPEG codec",
+"	07a0  Sun Expert3D-Lite Graphics Accelerator",
+"	1091  Sun Expert3D Graphics Accelerator",
+"1092  Diamond Multimedia Systems",
+"	00a0  Speedstar Pro SE",
+"	00a8  Speedstar 64",
+"	0550  Viper V550",
+"	08d4  Supra 2260 Modem",
+"	094c  SupraExpress 56i Pro",
+"	1092  Viper V330",
+"	6120  Maximum DVD",
+"	8810  Stealth SE",
+"	8811  Stealth 64/SE",
+"	8880  Stealth",
+"	8881  Stealth",
+"	88b0  Stealth 64",
+"	88b1  Stealth 64",
+"	88c0  Stealth 64",
+"	88c1  Stealth 64",
+"	88d0  Stealth 64",
+"	88d1  Stealth 64",
+"	88f0  Stealth 64",
+"	88f1  Stealth 64",
+"	9999  DMD-I0928-1 'Monster sound' sound chip",
+"1093  National Instruments",
+"	0160  PCI-DIO-96",
+"	0162  PCI-MIO-16XE-50",
+"	1150  PCI-DIO-32HS High Speed Digital I/O Board",
+"	1170  PCI-MIO-16XE-10",
+"	1180  PCI-MIO-16E-1",
+"	1190  PCI-MIO-16E-4",
+"	1310  PCI-6602",
+"	1330  PCI-6031E",
+"	1350  PCI-6071E",
+"	14e0  PCI-6110",
+"	14f0  PCI-6111",
+"	17d0  PCI-6503",
+"	1870  PCI-6713",
+"	1880  PCI-6711",
+"	18b0  PCI-6052E",
+"	2410  PCI-6733",
+"	2890  PCI-6036E",
+"	2a60  PCI-6023E",
+"	2a70  PCI-6024E",
+"	2a80  PCI-6025E",
+"	2c80  PCI-6035E",
+"	2ca0  PCI-6034E",
+"	70a9  PCI-6528 (Digital I/O at 60V)",
+"	70b8  PCI-6251 [M Series - High Speed Multifunction DAQ]",
+"	b001  IMAQ-PCI-1408",
+"	b011  IMAQ-PXI-1408",
+"	b021  IMAQ-PCI-1424",
+"	b031  IMAQ-PCI-1413",
+"	b041  IMAQ-PCI-1407",
+"	b051  IMAQ-PXI-1407",
+"	b061  IMAQ-PCI-1411",
+"	b071  IMAQ-PCI-1422",
+"	b081  IMAQ-PXI-1422",
+"	b091  IMAQ-PXI-1411",
+"	c801  PCI-GPIB",
+"	c831  PCI-GPIB bridge",
+"1094  First International Computers [FIC]",
+"1095  Silicon Image, Inc.",
+"	0240  Adaptec AAR-1210SA SATA HostRAID Controller",
+"	0640  PCI0640",
+"	0643  PCI0643",
+"	0646  PCI0646",
+"	0647  PCI0647",
+"	0648  PCI0648",
+"		1043 8025  CUBX motherboard",
+"	0649  SiI 0649 Ultra ATA/100 PCI to ATA Host Controller",
+"		0e11 005d  Integrated Ultra ATA-100 Dual Channel Controller",
+"		0e11 007e  Integrated Ultra ATA-100 IDE RAID Controller",
+"		101e 0649  AMI MegaRAID IDE 100 Controller",
+"	0650  PBC0650A",
+"	0670  USB0670",
+"		1095 0670  USB0670",
+"	0673  USB0673",
+"	0680  PCI0680 Ultra ATA-133 Host Controller",
+"		1095 3680  Winic W-680 (Silicon Image 680 based)",
+"	3112  SiI 3112 [SATALink/SATARaid] Serial ATA Controller",
+"		1095 3112  SiI 3112 SATALink Controller",
+"		1095 6112  SiI 3112 SATARaid Controller",
+"		9005 0250  SATAConnect 1205SA Host Controller",
+"	3114  SiI 3114 [SATALink/SATARaid] Serial ATA Controller",
+"		1095 3114  SiI 3114 SATALink Controller",
+"		1095 6114  SiI 3114 SATARaid Controller",
+"	3124  SiI 3124 PCI-X Serial ATA Controller",
+"		1095 3124  SiI 3124 PCI-X Serial ATA Controller",
+"	3132  SiI 3132 Serial ATA Raid II Controller",
+"	3512  SiI 3512 [SATALink/SATARaid] Serial ATA Controller",
+"		1095 3512  SiI 3512 SATALink Controller",
+"		1095 6512  SiI 3512 SATARaid Controller",
+"1096  Alacron",
+"1097  Appian Technology",
+"1098  Quantum Designs (H.K.) Ltd",
+"	0001  QD-8500",
+"	0002  QD-8580",
+"1099  Samsung Electronics Co., Ltd",
+"109a  Packard Bell",
+"109b  Gemlight Computer Ltd.",
+"109c  Megachips Corporation",
+"109d  Zida Technologies Ltd.",
+"109e  Brooktree Corporation",
+"	032e  Bt878 Video Capture",
+"	0350  Bt848 Video Capture",
+"	0351  Bt849A Video capture",
+"	0369  Bt878 Video Capture",
+"		1002 0001  TV-Wonder",
+"		1002 0003  TV-Wonder/VE",
+"	036c  Bt879(\?\?) Video Capture",
+"		13e9 0070  Win/TV (Video Section)",
+"	036e  Bt878 Video Capture",
+"		0070 13eb  WinTV Series",
+"		0070 ff01  Viewcast Osprey 200",
+"		0071 0101  DigiTV PCI",
+"		107d 6606  WinFast TV 2000",
+"		11bd 0012  PCTV pro (TV + FM stereo receiver)",
+"		11bd 001c  PCTV Sat (DBC receiver)",
+"		127a 0001  Bt878 Mediastream Controller NTSC",
+"		127a 0002  Bt878 Mediastream Controller PAL BG",
+"		127a 0003  Bt878a Mediastream Controller PAL BG",
+"		127a 0048  Bt878/832 Mediastream Controller",
+"		144f 3000  MagicTView CPH060 - Video",
+"		1461 0002  TV98 Series (TV/No FM/Remote)",
+"		1461 0003  AverMedia UltraTV PCI 350",
+"		1461 0004  AVerTV WDM Video Capture",
+"		1461 0761  AverTV DVB-T",
+"		14f1 0001  Bt878 Mediastream Controller NTSC",
+"		14f1 0002  Bt878 Mediastream Controller PAL BG",
+"		14f1 0003  Bt878a Mediastream Controller PAL BG",
+"		14f1 0048  Bt878/832 Mediastream Controller",
+"		1822 0001  VisionPlus DVB card",
+"		1851 1850  FlyVideo'98 - Video",
+"		1851 1851  FlyVideo II",
+"		1852 1852  FlyVideo'98 - Video (with FM Tuner)",
+"		18ac d500  DViCO FusionHDTV5 Lite",
+"		270f fc00  Digitop DTT-1000",
+"		bd11 1200  PCTV pro (TV + FM stereo receiver)",
+"	036f  Bt879 Video Capture",
+"		127a 0044  Bt879 Video Capture NTSC",
+"		127a 0122  Bt879 Video Capture PAL I",
+"		127a 0144  Bt879 Video Capture NTSC",
+"		127a 0222  Bt879 Video Capture PAL BG",
+"		127a 0244  Bt879a Video Capture NTSC",
+"		127a 0322  Bt879 Video Capture NTSC",
+"		127a 0422  Bt879 Video Capture NTSC",
+"		127a 1122  Bt879 Video Capture PAL I",
+"		127a 1222  Bt879 Video Capture PAL BG",
+"		127a 1322  Bt879 Video Capture NTSC",
+"		127a 1522  Bt879a Video Capture PAL I",
+"		127a 1622  Bt879a Video Capture PAL BG",
+"		127a 1722  Bt879a Video Capture NTSC",
+"		14f1 0044  Bt879 Video Capture NTSC",
+"		14f1 0122  Bt879 Video Capture PAL I",
+"		14f1 0144  Bt879 Video Capture NTSC",
+"		14f1 0222  Bt879 Video Capture PAL BG",
+"		14f1 0244  Bt879a Video Capture NTSC",
+"		14f1 0322  Bt879 Video Capture NTSC",
+"		14f1 0422  Bt879 Video Capture NTSC",
+"		14f1 1122  Bt879 Video Capture PAL I",
+"		14f1 1222  Bt879 Video Capture PAL BG",
+"		14f1 1322  Bt879 Video Capture NTSC",
+"		14f1 1522  Bt879a Video Capture PAL I",
+"		14f1 1622  Bt879a Video Capture PAL BG",
+"		14f1 1722  Bt879a Video Capture NTSC",
+"		1851 1850  FlyVideo'98 - Video",
+"		1851 1851  FlyVideo II",
+"		1852 1852  FlyVideo'98 - Video (with FM Tuner)",
+"	0370  Bt880 Video Capture",
+"		1851 1850  FlyVideo'98",
+"		1851 1851  FlyVideo'98 EZ - video",
+"		1852 1852  FlyVideo'98 (with FM Tuner)",
+"	0878  Bt878 Audio Capture",
+"		0070 13eb  WinTV Series",
+"		0070 ff01  Viewcast Osprey 200",
+"		0071 0101  DigiTV PCI",
+"		1002 0001  TV-Wonder",
+"		1002 0003  TV-Wonder/VE",
+"		11bd 0012  PCTV pro (TV + FM stereo receiver, audio section)",
+"		11bd 001c  PCTV Sat (DBC receiver)",
+"		127a 0001  Bt878 Video Capture (Audio Section)",
+"		127a 0002  Bt878 Video Capture (Audio Section)",
+"		127a 0003  Bt878 Video Capture (Audio Section)",
+"		127a 0048  Bt878 Video Capture (Audio Section)",
+"		13e9 0070  Win/TV (Audio Section)",
+"		144f 3000  MagicTView CPH060 - Audio",
+"		1461 0002  Avermedia PCTV98 Audio Capture",
+"		1461 0004  AVerTV WDM Audio Capture",
+"		1461 0761  AVerTV DVB-T",
+"		14f1 0001  Bt878 Video Capture (Audio Section)",
+"		14f1 0002  Bt878 Video Capture (Audio Section)",
+"		14f1 0003  Bt878 Video Capture (Audio Section)",
+"		14f1 0048  Bt878 Video Capture (Audio Section)",
+"		1822 0001  VisionPlus DVB Card",
+"		18ac d500  DViCO FusionHDTV5 Lite",
+"		270f fc00  Digitop DTT-1000",
+"		bd11 1200  PCTV pro (TV + FM stereo receiver, audio section)",
+"	0879  Bt879 Audio Capture",
+"		127a 0044  Bt879 Video Capture (Audio Section)",
+"		127a 0122  Bt879 Video Capture (Audio Section)",
+"		127a 0144  Bt879 Video Capture (Audio Section)",
+"		127a 0222  Bt879 Video Capture (Audio Section)",
+"		127a 0244  Bt879 Video Capture (Audio Section)",
+"		127a 0322  Bt879 Video Capture (Audio Section)",
+"		127a 0422  Bt879 Video Capture (Audio Section)",
+"		127a 1122  Bt879 Video Capture (Audio Section)",
+"		127a 1222  Bt879 Video Capture (Audio Section)",
+"		127a 1322  Bt879 Video Capture (Audio Section)",
+"		127a 1522  Bt879 Video Capture (Audio Section)",
+"		127a 1622  Bt879 Video Capture (Audio Section)",
+"		127a 1722  Bt879 Video Capture (Audio Section)",
+"		14f1 0044  Bt879 Video Capture (Audio Section)",
+"		14f1 0122  Bt879 Video Capture (Audio Section)",
+"		14f1 0144  Bt879 Video Capture (Audio Section)",
+"		14f1 0222  Bt879 Video Capture (Audio Section)",
+"		14f1 0244  Bt879 Video Capture (Audio Section)",
+"		14f1 0322  Bt879 Video Capture (Audio Section)",
+"		14f1 0422  Bt879 Video Capture (Audio Section)",
+"		14f1 1122  Bt879 Video Capture (Audio Section)",
+"		14f1 1222  Bt879 Video Capture (Audio Section)",
+"		14f1 1322  Bt879 Video Capture (Audio Section)",
+"		14f1 1522  Bt879 Video Capture (Audio Section)",
+"		14f1 1622  Bt879 Video Capture (Audio Section)",
+"		14f1 1722  Bt879 Video Capture (Audio Section)",
+"	0880  Bt880 Audio Capture",
+"	2115  BtV 2115 Mediastream controller",
+"	2125  BtV 2125 Mediastream controller",
+"	2164  BtV 2164",
+"	2165  BtV 2165",
+"	8230  Bt8230 ATM Segment/Reassembly Ctrlr (SRC)",
+"	8472  Bt8472",
+"	8474  Bt8474",
+"109f  Trigem Computer Inc.",
+"10a0  Meidensha Corporation",
+"10a1  Juko Electronics Ind. Co. Ltd",
+"10a2  Quantum Corporation",
+"10a3  Everex Systems Inc",
+"10a4  Globe Manufacturing Sales",
+"10a5  Smart Link Ltd.",
+"	3052  SmartPCI562 56K Modem",
+"	5449  SmartPCI561 modem",
+"10a6  Informtech Industrial Ltd.",
+"10a7  Benchmarq Microelectronics",
+"10a8  Sierra Semiconductor",
+"	0000  STB Horizon 64",
+"10a9  Silicon Graphics, Inc.",
+"	0001  Crosstalk to PCI Bridge",
+"	0002  Linc I/O controller",
+"	0003  IOC3 I/O controller",
+"	0004  O2 MACE",
+"	0005  RAD Audio",
+"	0006  HPCEX",
+"	0007  RPCEX",
+"	0008  DiVO VIP",
+"	0009  AceNIC Gigabit Ethernet",
+"		10a9 8002  AceNIC Gigabit Ethernet",
+"	0010  AMP Video I/O",
+"	0011  GRIP",
+"	0012  SGH PSHAC GSN",
+"	1001  Magic Carpet",
+"	1002  Lithium",
+"	1003  Dual JPEG 1",
+"	1004  Dual JPEG 2",
+"	1005  Dual JPEG 3",
+"	1006  Dual JPEG 4",
+"	1007  Dual JPEG 5",
+"	1008  Cesium",
+"	100a  IOC4 I/O controller",
+"	2001  Fibre Channel",
+"	2002  ASDE",
+"	4001  TIO-CE PCI Express Bridge",
+"	4002  TIO-CE PCI Express Port",
+"	8001  O2 1394",
+"	8002  G-net NT",
+"	8010  Broadcom e-net [SGI IO9/IO10 BaseIO]",
+"	8018  Broadcom e-net [SGI A330 Server BaseIO]",
+"10aa  ACC Microelectronics",
+"	0000  ACCM 2188",
+"10ab  Digicom",
+"10ac  Honeywell IAC",
+"10ad  Symphony Labs",
+"	0001  W83769F",
+"	0003  SL82C103",
+"	0005  SL82C105",
+"	0103  SL82c103",
+"	0105  SL82c105",
+"	0565  W83C553",
+"10ae  Cornerstone Technology",
+"10af  Micro Computer Systems Inc",
+"10b0  CardExpert Technology",
+"10b1  Cabletron Systems Inc",
+"10b2  Raytheon Company",
+"10b3  Databook Inc",
+"	3106  DB87144",
+"	b106  DB87144",
+"10b4  STB Systems Inc",
+"	1b1d  Velocity 128 3D",
+"		10b4 237e  Velocity 4400",
+"10b5  PLX Technology, Inc.",
+"	0001  i960 PCI bus interface",
+"	1042  Brandywine / jxi2, Inc. - PMC-SyncClock32, IRIG A & B, Nasa 36",
+"	1076  VScom 800 8 port serial adaptor",
+"	1077  VScom 400 4 port serial adaptor",
+"	1078  VScom 210 2 port serial and 1 port parallel adaptor",
+"	1103  VScom 200 2 port serial adaptor",
+"	1146  VScom 010 1 port parallel adaptor",
+"	1147  VScom 020 2 port parallel adaptor",
+"	2540  IXXAT CAN-Interface PC-I 04/PCI",
+"	2724  Thales PCSM Security Card",
+"	6540  PCI6540/6466 PCI-PCI bridge (transparent mode)",
+"		4c53 10e0  PSL09 PrPMC",
+"	6541  PCI6540/6466 PCI-PCI bridge (non-transparent mode, primary side)",
+"		4c53 10e0  PSL09 PrPMC",
+"	6542  PCI6540/6466 PCI-PCI bridge (non-transparent mode, secondary side)",
+"		4c53 10e0  PSL09 PrPMC",
+"	8111  PEX 8111 PCI Express-to-PCI Bridge",
+"	8114  PEX 8114 PCI Express-to-PCI/PCI-X Bridge",
+"	8516  PEX 8516  Versatile PCI Express Switch",
+"	8532  PEX 8532  Versatile PCI Express Switch",
+"	9030  PCI <-> IOBus Bridge Hot Swap",
+"		10b5 2862  Alpermann+Velte PCL PCI LV (3V/5V): Timecode Reader Board",
+"		10b5 2906  Alpermann+Velte PCI TS (3V/5V): Time Synchronisation Board",
+"		10b5 2940  Alpermann+Velte PCL PCI D (3V/5V): Timecode Reader Board",
+"		10b5 2977  IXXAT iPC-I XC16/PCI CAN Board",
+"		10b5 2978  SH ARC-PCIu SOHARD ARCNET card",
+"		10b5 3025  Alpermann+Velte PCL PCI L (3V/5V): Timecode Reader Board",
+"		10b5 3068  Alpermann+Velte PCL PCI HD (3V/5V): Timecode Reader Board",
+"		1397 3136  4xS0-ISDN PCI Adapter",
+"		1397 3137  S2M-E1-ISDN PCI Adapter",
+"		1518 0200  Kontron ThinkIO-C",
+"		15ed 1002  MCCS 8-port Serial Hot Swap",
+"		15ed 1003  MCCS 16-port Serial Hot Swap",
+"	9036  9036",
+"	9050  PCI <-> IOBus Bridge",
+"		10b5 1067  IXXAT CAN i165",
+"		10b5 1172  IK220 (Heidenhain)",
+"		10b5 2036  SatPak GPS",
+"		10b5 2221  Alpermann+Velte PCL PCI LV: Timecode Reader Board",
+"		10b5 2273  SH ARC-PCI SOHARD ARCNET card",
+"		10b5 2431  Alpermann+Velte PCL PCI D: Timecode Reader Board",
+"		10b5 2905  Alpermann+Velte PCI TS: Time Synchronisation Board",
+"		10b5 9050  MP9050",
+"		1498 0362  TPMC866 8 Channel Serial Card",
+"		1522 0001  RockForce 4 Port V.90 Data/Fax/Voice Modem",
+"		1522 0002  RockForce 2 Port V.90 Data/Fax/Voice Modem",
+"		1522 0003  RockForce 6 Port V.90 Data/Fax/Voice Modem",
+"		1522 0004  RockForce 8 Port V.90 Data/Fax/Voice Modem",
+"		1522 0010  RockForce2000 4 Port V.90 Data/Fax/Voice Modem",
+"		1522 0020  RockForce2000 2 Port V.90 Data/Fax/Voice Modem",
+"		15ed 1000  Macrolink MCCS 8-port Serial",
+"		15ed 1001  Macrolink MCCS 16-port Serial",
+"		15ed 1002  Macrolink MCCS 8-port Serial Hot Swap",
+"		15ed 1003  Macrolink MCCS 16-port Serial Hot Swap",
+"		5654 2036  OpenSwitch 6 Telephony card",
+"		5654 3132  OpenSwitch 12 Telephony card",
+"		5654 5634  OpenLine4 Telephony Card",
+"		d531 c002  PCIntelliCAN 2xSJA1000 CAN bus",
+"		d84d 4006  EX-4006 1P",
+"		d84d 4008  EX-4008 1P EPP/ECP",
+"		d84d 4014  EX-4014 2P",
+"		d84d 4018  EX-4018 3P EPP/ECP",
+"		d84d 4025  EX-4025 1S(16C550) RS-232",
+"		d84d 4027  EX-4027 1S(16C650) RS-232",
+"		d84d 4028  EX-4028 1S(16C850) RS-232",
+"		d84d 4036  EX-4036 2S(16C650) RS-232",
+"		d84d 4037  EX-4037 2S(16C650) RS-232",
+"		d84d 4038  EX-4038 2S(16C850) RS-232",
+"		d84d 4052  EX-4052 1S(16C550) RS-422/485",
+"		d84d 4053  EX-4053 2S(16C550) RS-422/485",
+"		d84d 4055  EX-4055 4S(16C550) RS-232",
+"		d84d 4058  EX-4055 4S(16C650) RS-232",
+"		d84d 4065  EX-4065 8S(16C550) RS-232",
+"		d84d 4068  EX-4068 8S(16C650) RS-232",
+"		d84d 4078  EX-4078 2S(16C552) RS-232+1P",
+"	9054  PCI <-> IOBus Bridge",
+"		10b5 2455  Wessex Techology PHIL-PCI",
+"		10b5 2696  Innes Corp AM Radcap card",
+"		10b5 2717  Innes Corp Auricon card",
+"		10b5 2844  Innes Corp TVS Encoder card",
+"		12c7 4001  Intel Dialogic DM/V960-4T1 PCI",
+"		12d9 0002  PCI Prosody Card rev 1.5",
+"		16df 0011  PIKA PrimeNet MM PCI",
+"		16df 0012  PIKA PrimeNet MM cPCI 8",
+"		16df 0013  PIKA PrimeNet MM cPCI 8 (without CAS Signaling)",
+"		16df 0014  PIKA PrimeNet MM cPCI 4",
+"		16df 0015  PIKA Daytona MM",
+"		16df 0016  PIKA InLine MM",
+"	9056  Francois",
+"		10b5 2979  CellinkBlade 11 - CPCI board VoATM AAL1",
+"	9060  9060",
+"	906d  9060SD",
+"		125c 0640  Aries 16000P",
+"	906e  9060ES",
+"	9080  9080",
+"		103c 10eb  (Agilent) E2777B 83K Series Optical Communication Interface",
+"		103c 10ec  (Agilent) E6978-66442 PCI CIC",
+"		10b5 9080  9080 [real subsystem ID not set]",
+"		129d 0002  Aculab PCI Prosidy card",
+"		12d9 0002  PCI Prosody Card",
+"		12df 4422  4422PCI ['Do-All' Telemetry Data Aquisition System]",
+"	bb04  B&B 3PCIOSD1A Isolated PCI Serial",
+"10b6  Madge Networks",
+"	0001  Smart 16/4 PCI Ringnode",
+"	0002  Smart 16/4 PCI Ringnode Mk2",
+"		10b6 0002  Smart 16/4 PCI Ringnode Mk2",
+"		10b6 0006  16/4 CardBus Adapter",
+"	0003  Smart 16/4 PCI Ringnode Mk3",
+"		0e11 b0fd  Compaq NC4621 PCI, 4/16, WOL",
+"		10b6 0003  Smart 16/4 PCI Ringnode Mk3",
+"		10b6 0007  Presto PCI Plus Adapter",
+"	0004  Smart 16/4 PCI Ringnode Mk1",
+"	0006  16/4 Cardbus Adapter",
+"		10b6 0006  16/4 CardBus Adapter",
+"	0007  Presto PCI Adapter",
+"		10b6 0007  Presto PCI",
+"	0009  Smart 100/16/4 PCI-HS Ringnode",
+"		10b6 0009  Smart 100/16/4 PCI-HS Ringnode",
+"	000a  Smart 100/16/4 PCI Ringnode",
+"		10b6 000a  Smart 100/16/4 PCI Ringnode",
+"	000b  16/4 CardBus Adapter Mk2",
+"		10b6 0008  16/4 CardBus Adapter Mk2",
+"		10b6 000b  16/4 Cardbus Adapter Mk2",
+"	000c  RapidFire 3140V2 16/4 TR Adapter",
+"		10b6 000c  RapidFire 3140V2 16/4 TR Adapter",
+"	1000  Collage 25/155 ATM Client Adapter",
+"	1001  Collage 155 ATM Server Adapter",
+"10b7  3Com Corporation",
+"	0001  3c985 1000BaseSX (SX/TX)",
+"	0013  AR5212 802.11abg NIC (3CRDAG675)",
+"		10b7 2031  3CRDAG675 11a/b/g Wireless PCI Adapter",
+"	0910  3C910-A01",
+"	1006  MINI PCI type 3B Data Fax Modem",
+"	1007  Mini PCI 56k Winmodem",
+"		10b7 615c  Mini PCI 56K Modem",
+"	1201  3c982-TXM 10/100baseTX Dual Port A [Hydra]",
+"	1202  3c982-TXM 10/100baseTX Dual Port B [Hydra]",
+"	1700  3c940 10/100/1000Base-T [Marvell]",
+"		1043 80eb  A7V600/P4P800/K8V motherboard",
+"		10b7 0010  3C940 Gigabit LOM Ethernet Adapter",
+"		10b7 0020  3C941 Gigabit LOM Ethernet Adapter",
+"		147b 1407  KV8-MAX3 motherboard",
+"	3390  3c339 TokenLink Velocity",
+"	3590  3c359 TokenLink Velocity XL",
+"		10b7 3590  TokenLink Velocity XL Adapter (3C359/359B)",
+"	4500  3c450 HomePNA [Tornado]",
+"	5055  3c555 Laptop Hurricane",
+"	5057  3c575 Megahertz 10/100 LAN CardBus [Boomerang]",
+"		10b7 5a57  3C575 Megahertz 10/100 LAN Cardbus PC Card",
+"	5157  3cCFE575BT Megahertz 10/100 LAN CardBus [Cyclone]",
+"		10b7 5b57  3C575 Megahertz 10/100 LAN Cardbus PC Card",
+"	5257  3cCFE575CT CardBus [Cyclone]",
+"		10b7 5c57  FE575C-3Com 10/100 LAN CardBus-Fast Ethernet",
+"	5900  3c590 10BaseT [Vortex]",
+"	5920  3c592 EISA 10mbps Demon/Vortex",
+"	5950  3c595 100BaseTX [Vortex]",
+"	5951  3c595 100BaseT4 [Vortex]",
+"	5952  3c595 100Base-MII [Vortex]",
+"	5970  3c597 EISA Fast Demon/Vortex",
+"	5b57  3c595 Megahertz 10/100 LAN CardBus [Boomerang]",
+"		10b7 5b57  3C575 Megahertz 10/100 LAN Cardbus PC Card",
+"	6000  3CRSHPW796 [OfficeConnect Wireless CardBus]",
+"	6001  3com 3CRWE154G72 [Office Connect Wireless LAN Adapter]",
+"	6055  3c556 Hurricane CardBus [Cyclone]",
+"	6056  3c556B CardBus [Tornado]",
+"		10b7 6556  10/100 Mini PCI Ethernet Adapter",
+"	6560  3cCFE656 CardBus [Cyclone]",
+"		10b7 656a  3CCFEM656 10/100 LAN+56K Modem CardBus",
+"	6561  3cCFEM656 10/100 LAN+56K Modem CardBus",
+"		10b7 656b  3CCFEM656 10/100 LAN+56K Modem CardBus",
+"	6562  3cCFEM656B 10/100 LAN+Winmodem CardBus [Cyclone]",
+"		10b7 656b  3CCFEM656B 10/100 LAN+56K Modem CardBus",
+"	6563  3cCFEM656B 10/100 LAN+56K Modem CardBus",
+"		10b7 656b  3CCFEM656 10/100 LAN+56K Modem CardBus",
+"	6564  3cXFEM656C 10/100 LAN+Winmodem CardBus [Tornado]",
+"	7646  3cSOHO100-TX Hurricane",
+"	7770  3CRWE777 PCI(PLX) Wireless Adaptor [Airconnect]",
+"	7940  3c803 FDDILink UTP Controller",
+"	7980  3c804 FDDILink SAS Controller",
+"	7990  3c805 FDDILink DAS Controller",
+"	80eb  3c940B 10/100/1000Base-T",
+"	8811  Token ring",
+"	9000  3c900 10BaseT [Boomerang]",
+"	9001  3c900 10Mbps Combo [Boomerang]",
+"	9004  3c900B-TPO Etherlink XL [Cyclone]",
+"		10b7 9004  3C900B-TPO Etherlink XL TPO 10Mb",
+"	9005  3c900B-Combo Etherlink XL [Cyclone]",
+"		10b7 9005  3C900B-Combo Etherlink XL Combo",
+"	9006  3c900B-TPC Etherlink XL [Cyclone]",
+"	900a  3c900B-FL 10base-FL [Cyclone]",
+"	9050  3c905 100BaseTX [Boomerang]",
+"	9051  3c905 100BaseT4 [Boomerang]",
+"	9055  3c905B 100BaseTX [Cyclone]",
+"		1028 0080  3C905B Fast Etherlink XL 10/100",
+"		1028 0081  3C905B Fast Etherlink XL 10/100",
+"		1028 0082  3C905B Fast Etherlink XL 10/100",
+"		1028 0083  3C905B Fast Etherlink XL 10/100",
+"		1028 0084  3C905B Fast Etherlink XL 10/100",
+"		1028 0085  3C905B Fast Etherlink XL 10/100",
+"		1028 0086  3C905B Fast Etherlink XL 10/100",
+"		1028 0087  3C905B Fast Etherlink XL 10/100",
+"		1028 0088  3C905B Fast Etherlink XL 10/100",
+"		1028 0089  3C905B Fast Etherlink XL 10/100",
+"		1028 0090  3C905B Fast Etherlink XL 10/100",
+"		1028 0091  3C905B Fast Etherlink XL 10/100",
+"		1028 0092  3C905B Fast Etherlink XL 10/100",
+"		1028 0093  3C905B Fast Etherlink XL 10/100",
+"		1028 0094  3C905B Fast Etherlink XL 10/100",
+"		1028 0095  3C905B Fast Etherlink XL 10/100",
+"		1028 0096  3C905B Fast Etherlink XL 10/100",
+"		1028 0097  3C905B Fast Etherlink XL 10/100",
+"		1028 0098  3C905B Fast Etherlink XL 10/100",
+"		1028 0099  3C905B Fast Etherlink XL 10/100",
+"		10b7 9055  3C905B Fast Etherlink XL 10/100",
+"	9056  3c905B-T4 Fast EtherLink XL [Cyclone]",
+"	9058  3c905B Deluxe Etherlink 10/100/BNC [Cyclone]",
+"	905a  3c905B-FX Fast Etherlink XL FX 100baseFx [Cyclone]",
+"	9200  3c905C-TX/TX-M [Tornado]",
+"		1028 0095  3C920 Integrated Fast Ethernet Controller",
+"		1028 0097  3C920 Integrated Fast Ethernet Controller",
+"		1028 00fe  Optiplex GX240",
+"		1028 012a  3C920 Integrated Fast Ethernet Controller [Latitude C640]",
+"		10b7 1000  3C905C-TX Fast Etherlink for PC Management NIC",
+"		10b7 7000  10/100 Mini PCI Ethernet Adapter",
+"		10f1 2466  Tiger MPX S2466 (3C920 Integrated Fast Ethernet Controller)",
+"	9201  3C920B-EMB Integrated Fast Ethernet Controller [Tornado]",
+"		1043 80ab  A7N8X Deluxe onboard 3C920B-EMB Integrated Fast Ethernet Controller",
+"	9202  3Com 3C920B-EMB-WNM Integrated Fast Ethernet Controller",
+"	9210  3C920B-EMB-WNM Integrated Fast Ethernet Controller",
+"	9300  3CSOHO100B-TX 910-A01 [tulip]",
+"	9800  3c980-TX Fast Etherlink XL Server Adapter [Cyclone]",
+"		10b7 9800  3c980-TX Fast Etherlink XL Server Adapter",
+"	9805  3c980-C 10/100baseTX NIC [Python-T]",
+"		10b7 1201  EtherLink Server 10/100 Dual Port A",
+"		10b7 1202  EtherLink Server 10/100 Dual Port B",
+"		10b7 9805  3c980 10/100baseTX NIC [Python-T]",
+"		10f1 2462  Thunder K7 S2462",
+"	9900  3C990-TX [Typhoon]",
+"	9902  3CR990-TX-95 [Typhoon 56-bit]",
+"	9903  3CR990-TX-97 [Typhoon 168-bit]",
+"	9904  3C990B-TX-M/3C990BSVR [Typhoon2]",
+"		10b7 1000  3CR990B-TX-M [Typhoon2]",
+"		10b7 2000  3CR990BSVR [Typhoon2 Server]",
+"	9905  3CR990-FX-95/97/95 [Typhon Fiber]",
+"		10b7 1101  3CR990-FX-95 [Typhoon Fiber 56-bit]",
+"		10b7 1102  3CR990-FX-97 [Typhoon Fiber 168-bit]",
+"		10b7 2101  3CR990-FX-95 Server [Typhoon Fiber 56-bit]",
+"		10b7 2102  3CR990-FX-97 Server [Typhoon Fiber 168-bit]",
+"	9908  3CR990SVR95 [Typhoon Server 56-bit]",
+"	9909  3CR990SVR97 [Typhoon Server 168-bit]",
+"	990a  3C990SVR [Typhoon Server]",
+"	990b  3C990SVR [Typhoon Server]",
+"10b8  Standard Microsystems Corp [SMC]",
+"	0005  83c170 EPIC/100 Fast Ethernet Adapter",
+"		1055 e000  LANEPIC 10/100 [EVB171Q-PCI]",
+"		1055 e002  LANEPIC 10/100 [EVB171G-PCI]",
+"		10b8 a011  EtherPower II 10/100",
+"		10b8 a014  EtherPower II 10/100",
+"		10b8 a015  EtherPower II 10/100",
+"		10b8 a016  EtherPower II 10/100",
+"		10b8 a017  EtherPower II 10/100",
+"	0006  83c175 EPIC/100 Fast Ethernet Adapter",
+"		1055 e100  LANEPIC Cardbus Fast Ethernet Adapter",
+"		1055 e102  LANEPIC Cardbus Fast Ethernet Adapter",
+"		1055 e300  LANEPIC Cardbus Fast Ethernet Adapter",
+"		1055 e302  LANEPIC Cardbus Fast Ethernet Adapter",
+"		10b8 a012  LANEPIC Cardbus Fast Ethernet Adapter",
+"		13a2 8002  LANEPIC Cardbus Fast Ethernet Adapter",
+"		13a2 8006  LANEPIC Cardbus Fast Ethernet Adapter",
+"	1000  FDC 37c665",
+"	1001  FDC 37C922",
+"	2802  SMC2802W [EZ Connect g]",
+"	a011  83C170QF",
+"	b106  SMC34C90",
+"10b9  ALi Corporation",
+"	0101  CMI8338/C3DX PCI Audio Device",
+"	0111  C-Media CMI8738/C3DX Audio Device (OEM)",
+"		10b9 0111  C-Media CMI8738/C3DX Audio Device (OEM)",
+"	0780  Multi-IO Card",
+"	0782  Multi-IO Card",
+"	1435  M1435",
+"	1445  M1445",
+"	1449  M1449",
+"	1451  M1451",
+"	1461  M1461",
+"	1489  M1489",
+"	1511  M1511 [Aladdin]",
+"	1512  M1512 [Aladdin]",
+"	1513  M1513 [Aladdin]",
+"	1521  M1521 [Aladdin III]",
+"		10b9 1521  ALI M1521 Aladdin III CPU Bridge",
+"	1523  M1523",
+"		10b9 1523  ALI M1523 ISA Bridge",
+"	1531  M1531 [Aladdin IV]",
+"	1533  M1533/M1535 PCI to ISA Bridge [Aladdin IV/V/V+]",
+"		1014 053b  ThinkPad R40e (2684-HVG) PCI to ISA Bridge",
+"		10b9 1533  ALi M1533 Aladdin IV/V ISA Bridge",
+"	1541  M1541",
+"		10b9 1541  ALI M1541 Aladdin V/V+ AGP System Controller",
+"	1543  M1543",
+"	1563  M1563 HyperTransport South Bridge",
+"	1573  PCI to LPC Controller",
+"	1621  M1621",
+"	1631  ALI M1631 PCI North Bridge Aladdin Pro III",
+"	1632  M1632M Northbridge+Trident",
+"	1641  ALI M1641 PCI North Bridge Aladdin Pro IV",
+"	1644  M1644/M1644T Northbridge+Trident",
+"	1646  M1646 Northbridge+Trident",
+"	1647  M1647 Northbridge [MAGiK 1 / MobileMAGiK 1]",
+"	1651  M1651/M1651T Northbridge [Aladdin-Pro 5/5M,Aladdin-Pro 5T/5TM]",
+"	1671  M1671 Super P4 Northbridge [AGP4X,PCI and SDR/DDR]",
+"	1672  M1672 Northbridge [CyberALADDiN-P4]",
+"	1681  M1681 P4 Northbridge [AGP8X,HyperTransport and SDR/DDR]",
+"	1687  M1687 K8 Northbridge [AGP8X and HyperTransport]",
+"	1689  M1689 K8 Northbridge [Super K8 Single Chip]",
+"	1695  M1695 K8 Northbridge [PCI Express and HyperTransport]",
+"	1697  M1697 HTT Host Bridge",
+"	3141  M3141",
+"	3143  M3143",
+"	3145  M3145",
+"	3147  M3147",
+"	3149  M3149",
+"	3151  M3151",
+"	3307  M3307",
+"	3309  M3309",
+"	3323  M3325 Video/Audio Decoder",
+"	5212  M4803",
+"	5215  MS4803",
+"	5217  M5217H",
+"	5219  M5219",
+"	5225  M5225",
+"	5228  M5228 ALi ATA/RAID Controller",
+"	5229  M5229 IDE",
+"		1014 050f  ThinkPad R30",
+"		1014 053d  ThinkPad R40e (2684-HVG) builtin IDE",
+"		103c 0024  Pavilion ze4400 builtin IDE",
+"		1043 8053  A7A266 Motherboard IDE",
+"	5235  M5225",
+"	5237  USB 1.1 Controller",
+"		1014 0540  ThinkPad R40e (2684-HVG) builtin USB",
+"		103c 0024  Pavilion ze4400 builtin USB",
+"		104d 810f  VAIO PCG-U1 USB/OHCI Revision 1.0",
+"	5239  USB 2.0 Controller",
+"	5243  M1541 PCI to AGP Controller",
+"	5246  AGP8X Controller",
+"	5247  PCI to AGP Controller",
+"	5249  M5249 HTT to PCI Bridge",
+"	524b  PCI Express Root Port",
+"	524c  PCI Express Root Port",
+"	524d  PCI Express Root Port",
+"	524e  PCI Express Root Port",
+"	5251  M5251 P1394 OHCI 1.0 Controller",
+"	5253  M5253 P1394 OHCI 1.1 Controller",
+"	5261  M5261 Ethernet Controller",
+"	5263  M5263 Ethernet Controller",
+"	5281  ALi M5281 Serial ATA / RAID Host Controller",
+"	5287  ULi 5287 SATA",
+"	5288  ULi M5288 SATA",
+"	5289  ULi 5289 SATA",
+"	5450  Lucent Technologies Soft Modem AMR",
+"	5451  M5451 PCI AC-Link Controller Audio Device",
+"		1014 0506  ThinkPad R30",
+"		1014 053e  ThinkPad R40e (2684-HVG) builtin Audio",
+"		103c 0024  Pavilion ze4400 builtin Audio",
+"		10b9 5451  HP Compaq nc4010 (DY885AA#ABN)",
+"	5453  M5453 PCI AC-Link Controller Modem Device",
+"	5455  M5455 PCI AC-Link Controller Audio Device",
+"	5457  M5457 AC'97 Modem Controller",
+"		1014 0535  ThinkPad R40e (2684-HVG) builtin modem",
+"		103c 0024  Pavilion ze4400 builtin Modem Device",
+"	5459  SmartLink SmartPCI561 56K Modem",
+"	545a  SmartLink SmartPCI563 56K Modem",
+"	5461  High Definition Audio/AC'97 Host Controller",
+"	5471  M5471 Memory Stick Controller",
+"	5473  M5473 SD-MMC Controller",
+"	7101  M7101 Power Management Controller [PMU]",
+"		1014 0510  ThinkPad R30",
+"		1014 053c  ThinkPad R40e (2684-HVG) Power Management Controller",
+"		103c 0024  Pavilion ze4400",
+"10ba  Mitsubishi Electric Corp.",
+"	0301  AccelGraphics AccelECLIPSE",
+"	0304  AccelGALAXY A2100 [OEM Evans & Sutherland]",
+"	0308  Tornado 3000 [OEM Evans & Sutherland]",
+"	1002  VG500 [VolumePro Volume Rendering Accelerator]",
+"10bb  Dapha Electronics Corporation",
+"10bc  Advanced Logic Research",
+"10bd  Surecom Technology",
+"	0e34  NE-34",
+"10be  Tseng Labs International Co.",
+"10bf  Most Inc",
+"10c0  Boca Research Inc.",
+"10c1  ICM Co., Ltd.",
+"10c2  Auspex Systems Inc.",
+"10c3  Samsung Semiconductors, Inc.",
+"	1100  Smartether100 SC1100 LAN Adapter (i82557B)",
+"10c4  Award Software International Inc.",
+"10c5  Xerox Corporation",
+"10c6  Rambus Inc.",
+"10c7  Media Vision",
+"10c8  Neomagic Corporation",
+"	0001  NM2070 [MagicGraph 128]",
+"	0002  NM2090 [MagicGraph 128V]",
+"	0003  NM2093 [MagicGraph 128ZV]",
+"	0004  NM2160 [MagicGraph 128XD]",
+"		1014 00ba  MagicGraph 128XD",
+"		1025 1007  MagicGraph 128XD",
+"		1028 0074  MagicGraph 128XD",
+"		1028 0075  MagicGraph 128XD",
+"		1028 007d  MagicGraph 128XD",
+"		1028 007e  MagicGraph 128XD",
+"		1033 802f  MagicGraph 128XD",
+"		104d 801b  MagicGraph 128XD",
+"		104d 802f  MagicGraph 128XD",
+"		104d 830b  MagicGraph 128XD",
+"		10ba 0e00  MagicGraph 128XD",
+"		10c8 0004  MagicGraph 128XD",
+"		10cf 1029  MagicGraph 128XD",
+"		10f7 8308  MagicGraph 128XD",
+"		10f7 8309  MagicGraph 128XD",
+"		10f7 830b  MagicGraph 128XD",
+"		10f7 830d  MagicGraph 128XD",
+"		10f7 8312  MagicGraph 128XD",
+"	0005  NM2200 [MagicGraph 256AV]",
+"		1014 00dd  ThinkPad 570",
+"		1028 0088  Latitude CPi A",
+"	0006  NM2360 [MagicMedia 256ZX]",
+"	0016  NM2380 [MagicMedia 256XL+]",
+"		10c8 0016  MagicMedia 256XL+",
+"	0025  NM2230 [MagicGraph 256AV+]",
+"	0083  NM2093 [MagicGraph 128ZV+]",
+"	8005  NM2200 [MagicMedia 256AV Audio]",
+"		0e11 b0d1  MagicMedia 256AV Audio Device on Discovery",
+"		0e11 b126  MagicMedia 256AV Audio Device on Durango",
+"		1014 00dd  MagicMedia 256AV Audio Device on BlackTip Thinkpad",
+"		1025 1003  MagicMedia 256AV Audio Device on TravelMate 720",
+"		1028 0088  Latitude CPi A",
+"		1028 008f  MagicMedia 256AV Audio Device on Colorado Inspiron",
+"		103c 0007  MagicMedia 256AV Audio Device on Voyager II",
+"		103c 0008  MagicMedia 256AV Audio Device on Voyager III",
+"		103c 000d  MagicMedia 256AV Audio Device on Omnibook 900",
+"		10c8 8005  MagicMedia 256AV Audio Device on FireAnt",
+"		110a 8005  MagicMedia 256AV Audio Device",
+"		14c0 0004  MagicMedia 256AV Audio Device",
+"	8006  NM2360 [MagicMedia 256ZX Audio]",
+"	8016  NM2380 [MagicMedia 256XL+ Audio]",
+"10c9  Dataexpert Corporation",
+"10ca  Fujitsu Microelectr., Inc.",
+"10cb  Omron Corporation",
+"10cc  Mai Logic Incorporated",
+"	0660  Articia S Host Bridge",
+"	0661  Articia S PCI Bridge",
+"10cd  Advanced System Products, Inc",
+"	1100  ASC1100",
+"	1200  ASC1200 [(abp940) Fast SCSI-II]",
+"	1300  ABP940-U / ABP960-U",
+"		10cd 1310  ASC1300 SCSI Adapter",
+"	2300  ABP940-UW",
+"	2500  ABP940-U2W",
+"10ce  Radius",
+"10cf  Fujitsu Limited.",
+"	2001  mb86605",
+"10d1  FuturePlus Systems Corp.",
+"10d2  Molex Incorporated",
+"10d3  Jabil Circuit Inc",
+"10d4  Hualon Microelectronics",
+"10d5  Autologic Inc.",
+"10d6  Cetia",
+"10d7  BCM Advanced Research",
+"10d8  Advanced Peripherals Labs",
+"10d9  Macronix, Inc. [MXIC]",
+"	0431  MX98715",
+"	0512  MX98713",
+"	0531  MX987x5",
+"		1186 1200  DFE-540TX ProFAST 10/100 Adapter",
+"	8625  MX86250",
+"	8626  Macronix MX86251 + 3Dfx Voodoo Rush",
+"	8888  MX86200",
+"10da  Compaq IPG-Austin",
+"	0508  TC4048 Token Ring 4/16",
+"	3390  Tl3c3x9",
+"10db  Rohm LSI Systems, Inc.",
+"10dc  CERN/ECP/EDU",
+"	0001  STAR/RD24 SCI-PCI (PMC)",
+"	0002  TAR/RD24 SCI-PCI (PMC)",
+"	0021  HIPPI destination",
+"	0022  HIPPI source",
+"	10dc  ATT2C15-3 FPGA",
+"10dd  Evans & Sutherland",
+"	0100  Lightning 1200",
+"10de  nVidia Corporation",
+"	0008  NV1 [EDGE 3D]",
+"	0009  NV1 [EDGE 3D]",
+"	0010  NV2 [Mutara V08]",
+"	0020  NV4 [RIVA TNT]",
+"		1043 0200  V3400 TNT",
+"		1048 0c18  Erazor II SGRAM",
+"		1048 0c19  Erazor II",
+"		1048 0c1b  Erazor II",
+"		1048 0c1c  Erazor II",
+"		1092 0550  Viper V550",
+"		1092 0552  Viper V550",
+"		1092 4804  Viper V550",
+"		1092 4808  Viper V550",
+"		1092 4810  Viper V550",
+"		1092 4812  Viper V550",
+"		1092 4815  Viper V550",
+"		1092 4820  Viper V550 with TV out",
+"		1092 4822  Viper V550",
+"		1092 4904  Viper V550",
+"		1092 4914  Viper V550",
+"		1092 8225  Viper V550",
+"		10b4 273d  Velocity 4400",
+"		10b4 273e  Velocity 4400",
+"		10b4 2740  Velocity 4400",
+"		10de 0020  Riva TNT",
+"		1102 1015  Graphics Blaster CT6710",
+"		1102 1016  Graphics Blaster RIVA TNT",
+"	0028  NV5 [RIVA TNT2/TNT2 Pro]",
+"		1043 0200  AGP-V3800 SGRAM",
+"		1043 0201  AGP-V3800 SDRAM",
+"		1043 0205  PCI-V3800",
+"		1043 4000  AGP-V3800PRO",
+"		1048 0c21  Synergy II",
+"		1048 0c28  Erazor III",
+"		1048 0c29  Erazor III",
+"		1048 0c2a  Erazor III",
+"		1048 0c2b  Erazor III",
+"		1048 0c31  Erazor III Pro",
+"		1048 0c32  Erazor III Pro",
+"		1048 0c33  Erazor III Pro",
+"		1048 0c34  Erazor III Pro",
+"		107d 2134  WinFast 3D S320 II + TV-Out",
+"		1092 4804  Viper V770",
+"		1092 4a00  Viper V770",
+"		1092 4a02  Viper V770 Ultra",
+"		1092 5a00  RIVA TNT2/TNT2 Pro",
+"		1092 6a02  Viper V770 Ultra",
+"		1092 7a02  Viper V770 Ultra",
+"		10de 0005  RIVA TNT2 Pro",
+"		10de 000f  Compaq NVIDIA TNT2 Pro",
+"		1102 1020  3D Blaster RIVA TNT2",
+"		1102 1026  3D Blaster RIVA TNT2 Digital",
+"		14af 5810  Maxi Gamer Xentor",
+"	0029  NV5 [RIVA TNT2 Ultra]",
+"		1043 0200  AGP-V3800 Deluxe",
+"		1043 0201  AGP-V3800 Ultra SDRAM",
+"		1043 0205  PCI-V3800 Ultra",
+"		1048 0c2e  Erazor III Ultra",
+"		1048 0c2f  Erazor III Ultra",
+"		1048 0c30  Erazor III Ultra",
+"		1102 1021  3D Blaster RIVA TNT2 Ultra",
+"		1102 1029  3D Blaster RIVA TNT2 Ultra",
+"		1102 102f  3D Blaster RIVA TNT2 Ultra",
+"		14af 5820  Maxi Gamer Xentor 32",
+"	002a  NV5 [Riva TnT2]",
+"	002b  NV5 [Riva TnT2]",
+"	002c  NV6 [Vanta/Vanta LT]",
+"		1043 0200  AGP-V3800 Combat SDRAM",
+"		1043 0201  AGP-V3800 Combat",
+"		1048 0c20  TNT2 Vanta",
+"		1048 0c21  TNT2 Vanta",
+"		1092 6820  Viper V730",
+"		1102 1031  CT6938 VANTA 8MB",
+"		1102 1034  CT6894 VANTA 16MB",
+"		14af 5008  Maxi Gamer Phoenix 2",
+"	002d  NV5M64 [RIVA TNT2 Model 64/Model 64 Pro]",
+"		1043 0200  AGP-V3800M",
+"		1043 0201  AGP-V3800M",
+"		1048 0c3a  Erazor III LT",
+"		1048 0c3b  Erazor III LT",
+"		10de 001e  M64 AGP4x",
+"		1102 1023  CT6892 RIVA TNT2 Value",
+"		1102 1024  CT6932 RIVA TNT2 Value 32Mb",
+"		1102 102c  CT6931 RIVA TNT2 Value [Jumper]",
+"		1462 8808  MSI-8808",
+"		1554 1041  Pixelview RIVA TNT2 M64",
+"		1569 002d  Palit Microsystems Daytona TNT2 M64",
+"	002e  NV6 [Vanta]",
+"	002f  NV6 [Vanta]",
+"	0034  MCP04 SMBus",
+"	0035  MCP04 IDE",
+"	0036  MCP04 Serial ATA Controller",
+"	0037  MCP04 Ethernet Controller",
+"	0038  MCP04 Ethernet Controller",
+"	003a  MCP04 AC'97 Audio Controller",
+"	003b  MCP04 USB Controller",
+"	003c  MCP04 USB Controller",
+"	003d  MCP04 PCI Bridge",
+"	003e  MCP04 Serial ATA Controller",
+"	0040  NV40 [GeForce 6800 Ultra]",
+"	0041  NV40 [GeForce 6800]",
+"		1043 817b  V9999 Gamer Edition",
+"	0042  NV40.2 [GeForce 6800 LE]",
+"	0043  NV40.3",
+"	0044  NV40 [GeForce 6800 XT]",
+"	0045  NV40 [GeForce 6800 GT]",
+"	0047  NV40 [GeForce 6800 GS]",
+"		1682 2109  GeForce 6800 GS",
+"	0049  NV40GL",
+"	004e  NV40GL [Quadro FX 4000]",
+"	0050  CK804 ISA Bridge",
+"		1043 815a  K8N4-E Mainboard",
+"		1458 0c11  GA-K8N Ultra-9 Mainboard",
+"		1462 7100  MSI K8N Diamond",
+"	0051  CK804 ISA Bridge",
+"	0052  CK804 SMBus",
+"		1043 815a  K8N4-E Mainboard",
+"		1458 0c11  GA-K8N Ultra-9 Mainboard",
+"		1462 7100  MSI K8N Diamond",
+"	0053  CK804 IDE",
+"		1043 815a  K8N4-E Mainboard",
+"		1458 5002  GA-K8N Ultra-9 Mainboard",
+"		1462 7100  MSI K8N Diamond",
+"	0054  CK804 Serial ATA Controller",
+"		1458 b003  GA-K8N Ultra-9 Mainboard",
+"		1462 7100  MSI K8N Diamond",
+"	0055  CK804 Serial ATA Controller",
+"		1043 815a  K8N4-E Mainboard",
+"		1458 b003  GA-K8N Ultra-9 Mainboard",
+"	0056  CK804 Ethernet Controller",
+"	0057  CK804 Ethernet Controller",
+"		1043 8141  K8N4-E Mainboard",
+"		1458 e000  GA-K8N Ultra-9 Mainboard",
+"		1462 7100  MSI K8N Diamond",
+"	0058  CK804 AC'97 Modem",
+"	0059  CK804 AC'97 Audio Controller",
+"		1043 812a  K8N4-E Mainboard",
+"	005a  CK804 USB Controller",
+"		1043 815a  K8N4-E Mainboard",
+"		1458 5004  GA-K8N Ultra-9 Mainboard",
+"		1462 7100  MSI K8N Diamond",
+"	005b  CK804 USB Controller",
+"		1043 815a  K8N4-E Mainboard",
+"		1458 5004  GA-K8N Ultra-9 Mainboard",
+"		1462 7100  MSI K8N Diamond",
+"	005c  CK804 PCI Bridge",
+"	005d  CK804 PCIE Bridge",
+"	005e  CK804 Memory Controller",
+"		10f1 2891  Thunder K8SRE Mainboard",
+"		1458 5000  GA-K8N Ultra-9 Mainboard",
+"		1462 7100  MSI K8N Diamond",
+"	005f  CK804 Memory Controller",
+"	0060  nForce2 ISA Bridge",
+"		1043 80ad  A7N8X Mainboard",
+"		a0a0 03ba  UK79G-1394 motherboard",
+"	0064  nForce2 SMBus (MCP)",
+"		a0a0 03bb  UK79G-1394 motherboard",
+"	0065  nForce2 IDE",
+"		a0a0 03b2  UK79G-1394 motherboard",
+"	0066  nForce2 Ethernet Controller",
+"		1043 80a7  A7N8X Mainboard onboard nForce2 Ethernet",
+"	0067  nForce2 USB Controller",
+"		1043 0c11  A7N8X Mainboard",
+"	0068  nForce2 USB Controller",
+"		1043 0c11  A7N8X Mainboard",
+"		a0a0 03b4  UK79G-1394 motherboard",
+"	006a  nForce2 AC97 Audio Controler (MCP)",
+"		a0a0 0304  UK79G-1394 motherboard",
+"	006b  nForce Audio Processing Unit",
+"		10de 006b  nForce2 MCP Audio Processing Unit",
+"	006c  nForce2 External PCI Bridge",
+"	006d  nForce2 PCI Bridge",
+"	006e  nForce2 FireWire (IEEE 1394) Controller",
+"		a0a0 0306  UK79G-1394 motherboard",
+"	0080  MCP2A ISA bridge",
+"		147b 1c09  NV7 Motherboard",
+"	0084  MCP2A SMBus",
+"		147b 1c09  NV7 Motherboard",
+"	0085  MCP2A IDE",
+"		147b 1c09  NV7 Motherboard",
+"	0086  MCP2A Ethernet Controller",
+"	0087  MCP2A USB Controller",
+"		147b 1c09  NV7 Motherboard",
+"	0088  MCP2A USB Controller",
+"		147b 1c09  NV7 Motherboard",
+"	008a  MCP2S AC'97 Audio Controller",
+"		147b 1c09  NV7 Motherboard",
+"	008b  MCP2A PCI Bridge",
+"	008c  MCP2A Ethernet Controller",
+"	008e  nForce2 Serial ATA Controller",
+"	0090  G70 [GeForce 7800 GTX]",
+"	0091  G70 [GeForce 7800 GTX]",
+"	0092  G70 [GeForce 7800 GT]",
+"	0093  G70 [GeForce 7800 GS]",
+"	0098  GeForce Go 7800",
+"	0099  GE Force Go 7800 GTX",
+"	009d  G70GL [Quadro FX4500]",
+"	00a0  NV5 [Aladdin TNT2]",
+"		14af 5810  Maxi Gamer Xentor",
+"	00c0  NV41 [GeForce 6800 GS]",
+"	00c1  NV41.1 [GeForce 6800]",
+"	00c2  NV41.2 [GeForce 6800 LE]",
+"	00c3  NV42 [Geforce 6800 XT]",
+"	00c8  NV41.8 [GeForce Go 6800]",
+"	00c9  NV41.9 [GeForce Go 6800 Ultra]",
+"	00cc  NV41 [Quadro FX Go1400]",
+"	00cd  NV41 [Quadro FX 3450/4000 SDI]",
+"	00ce  NV41GL [Quadro FX 1400]",
+"	00d0  nForce3 LPC Bridge",
+"	00d1  nForce3 Host Bridge",
+"	00d2  nForce3 AGP Bridge",
+"	00d3  CK804 Memory Controller",
+"	00d4  nForce3 SMBus",
+"	00d5  nForce3 IDE",
+"	00d6  nForce3 Ethernet",
+"	00d7  nForce3 USB 1.1",
+"	00d8  nForce3 USB 2.0",
+"	00d9  nForce3 Audio",
+"	00da  nForce3 Audio",
+"	00dd  nForce3 PCI Bridge",
+"	00df  CK8S Ethernet Controller",
+"		147b 1c0b  NF8 Mainboard",
+"	00e0  nForce3 250Gb LPC Bridge",
+"		147b 1c0b  NF8 Mainboard",
+"	00e1  nForce3 250Gb Host Bridge",
+"		147b 1c0b  NF8 Mainboard",
+"	00e2  nForce3 250Gb AGP Host to PCI Bridge",
+"	00e3  CK8S Serial ATA Controller (v2.5)",
+"		147b 1c0b  NF8 Mainboard",
+"	00e4  nForce 250Gb PCI System Management",
+"		147b 1c0b  NF8 Mainboard",
+"	00e5  CK8S Parallel ATA Controller (v2.5)",
+"		147b 1c0b  NF8 Mainboard",
+"	00e6  CK8S Ethernet Controller",
+"	00e7  CK8S USB Controller",
+"		147b 1c0b  NF8 Mainboard",
+"	00e8  nForce3 EHCI USB 2.0 Controller",
+"		147b 1c0b  NF8 Mainboard",
+"	00ea  nForce3 250Gb AC'97 Audio Controller",
+"		147b 1c0b  NF8 Mainboard",
+"	00ed  nForce3 250Gb PCI-to-PCI Bridge",
+"	00ee  CK8S Serial ATA Controller (v2.5)",
+"	00f0  NV40 [GeForce 6800/GeForce 6800 Ultra]",
+"	00f1  NV43 [GeForce 6600/GeForce 6600 GT]",
+"		1043 81a6  N6600GT TD 128M AGP",
+"		1682 2119  GeForce 6600 GT AGP 128MB DDR3 DUAL DVI TV",
+"	00f2  NV43 [GeForce 6600/GeForce 6600 GT]",
+"		1682 211c  GeForce 6600 256MB DDR DUAL DVI TV",
+"	00f3  NV43 [GeForce 6200]",
+"	00f4  NV43 [GeForce 6600 LE]",
+"	00f5  G70 [GeForce 7800 GS]",
+"	00f6  NV43 [GeForce 6600 GS]",
+"	00f8  NV45GL [Quadro FX 3400/4400]",
+"	00f9  NV40 [GeForce 6800 Ultra/GeForce 6800 GT]",
+"		1682 2120  GEFORCE 6800 GT PCI-E",
+"	00fa  NV36 [GeForce PCX 5750]",
+"	00fb  NV35 [GeForce PCX 5900]",
+"	00fc  NV37GL [Quadro FX 330/GeForce PCX 5300]",
+"	00fd  NV37GL [Quadro FX 330/Quadro NVS280]",
+"	00fe  NV38GL [Quadro FX 1300]",
+"	00ff  NV18 [GeForce PCX 4300]",
+"	0100  NV10 [GeForce 256 SDR]",
+"		1043 0200  AGP-V6600 SGRAM",
+"		1043 0201  AGP-V6600 SDRAM",
+"		1043 4008  AGP-V6600 SGRAM",
+"		1043 4009  AGP-V6600 SDRAM",
+"		1048 0c41  Erazor X",
+"		1048 0c43  ERAZOR X PCI",
+"		1048 0c48  Synergy Force",
+"		1102 102d  CT6941 GeForce 256",
+"		14af 5022  3D Prophet SE",
+"	0101  NV10DDR [GeForce 256 DDR]",
+"		1043 0202  AGP-V6800 DDR",
+"		1043 400a  AGP-V6800 DDR SGRAM",
+"		1043 400b  AGP-V6800 DDR SDRAM",
+"		1048 0c42  Erazor X",
+"		107d 2822  WinFast GeForce 256",
+"		1102 102e  CT6971 GeForce 256 DDR",
+"		14af 5021  3D Prophet DDR-DVI",
+"	0103  NV10GL [Quadro]",
+"		1048 0c40  GLoria II-64",
+"		1048 0c44  GLoria II",
+"		1048 0c45  GLoria II",
+"		1048 0c4a  GLoria II-64 Pro",
+"		1048 0c4b  GLoria II-64 Pro DVII",
+"	0110  NV11 [GeForce2 MX/MX 400]",
+"		1043 4015  AGP-V7100 Pro",
+"		1043 4031  V7100 Pro with TV output",
+"		1048 0c60  Gladiac MX",
+"		1048 0c61  Gladiac 511PCI",
+"		1048 0c63  Gladiac 511TV-OUT 32MB",
+"		1048 0c64  Gladiac 511TV-OUT 64MB",
+"		1048 0c65  Gladiac 511TWIN",
+"		1048 0c66  Gladiac 311",
+"		10de 0091  Dell OEM GeForce 2 MX 400",
+"		10de 00a1  Apple OEM GeForce2 MX",
+"		1462 8817  MSI GeForce2 MX400 Pro32S [MS-8817]",
+"		14af 7102  3D Prophet II MX",
+"		14af 7103  3D Prophet II MX Dual-Display",
+"	0111  NV11DDR [GeForce2 MX 100 DDR/200 DDR]",
+"	0112  NV11 [GeForce2 Go]",
+"	0113  NV11GL [Quadro2 MXR/EX/Go]",
+"	0140  NV43 [GeForce 6600 GT]",
+"	0141  NV43 [GeForce 6600]",
+"		1458 3124  GV-NX66128DP Turbo Force Edition",
+"	0142  NV43 [GeForce 6600 PCIe]",
+"	0144  NV43 [GeForce Go 6600]",
+"	0145  NV43 [GeForce 6610 XL]",
+"	0146  NV43 [Geforce Go 6600TE/6200TE]",
+"	0148  NV43 [GeForce Go 6600]",
+"	0149  NV43 [GeForce Go 6600 GT]",
+"	014a  Quadro NVS 440",
+"	014c  Quadro FX 550",
+"	014e  NV43GL [Quadro FX 540]",
+"	014f  NV43 [GeForce 6200]",
+"	0150  NV15 [GeForce2 GTS/Pro]",
+"		1043 4016  V7700 AGP Video Card",
+"		1048 0c50  Gladiac",
+"		1048 0c52  Gladiac-64",
+"		107d 2840  WinFast GeForce2 GTS with TV output",
+"		107d 2842  WinFast GeForce 2 Pro",
+"		1462 8831  Creative GeForce2 Pro",
+"	0151  NV15DDR [GeForce2 Ti]",
+"		1043 405f  V7700Ti",
+"		1462 5506  Creative 3D Blaster Geforce2 Titanium",
+"	0152  NV15BR [GeForce2 Ultra, Bladerunner]",
+"		1048 0c56  GLADIAC Ultra",
+"	0153  NV15GL [Quadro2 Pro]",
+"	0161  GeForce 6200 TurboCache(TM)",
+"	0162  NV43 [GeForce 6200 SE]",
+"	0164  NV44 [GeForce Go 6200]",
+"	0165  NV44 [Quadro NVS 285]",
+"	0166  NV43 [GeForce Go 6400]",
+"	0167  GeForce Go 6200 TurboCache",
+"	0168  NV43 [GeForce Go 6200 TurboCache]",
+"	0170  NV17 [GeForce4 MX 460]",
+"	0171  NV17 [GeForce4 MX 440]",
+"		10b0 0002  Gainward Pro/600 TV",
+"		10de 0008  Apple OEM GeForce4 MX 440",
+"		1462 8661  G4MX440-VTP",
+"		1462 8730  MX440SES-T (MS-8873)",
+"		1462 8852  GeForce4 MX440 PCI",
+"		147b 8f00  Abit Siluro GeForce4MX440",
+"	0172  NV17 [GeForce4 MX 420]",
+"	0173  NV17 [GeForce4 MX 440-SE]",
+"	0174  NV17 [GeForce4 440 Go]",
+"	0175  NV17 [GeForce4 420 Go]",
+"	0176  NV17 [GeForce4 420 Go 32M]",
+"		4c53 1090  Cx9 / Vx9 mainboard",
+"	0177  NV17 [GeForce4 460 Go]",
+"	0178  NV17GL [Quadro4 550 XGL]",
+"	0179  NV17 [GeForce4 420 Go 32M]",
+"		10de 0179  GeForce4 MX (Mac)",
+"	017a  NV17GL [Quadro4 200/400 NVS]",
+"	017b  NV17GL [Quadro4 550 XGL]",
+"	017c  NV17GL [Quadro4 500 GoGL]",
+"	017d  NV17 [GeForce4 410 Go 16M]",
+"	0181  NV18 [GeForce4 MX 440 AGP 8x]",
+"		1043 806f  V9180 Magic",
+"		1462 8880  MS-StarForce GeForce4 MX 440 with AGP8X",
+"		1462 8900  MS-8890 GeForce 4 MX440 AGP8X",
+"		1462 9350  MSI Geforce4 MX T8X with AGP8X",
+"		147b 8f0d  Siluro GF4 MX-8X",
+"	0182  NV18 [GeForce4 MX 440SE AGP 8x]",
+"	0183  NV18 [GeForce4 MX 420 AGP 8x]",
+"	0185  NV18 [GeForce4 MX 4000 AGP 8x]",
+"	0186  NV18M [GeForce4 448 Go]",
+"	0187  NV18M [GeForce4 488 Go]",
+"	0188  NV18GL [Quadro4 580 XGL]",
+"	018a  NV18GL [Quadro4 NVS AGP 8x]",
+"	018b  NV18GL [Quadro4 380 XGL]",
+"	018c  Quadro NVS 50 PCI",
+"	018d  NV18M [GeForce4 448 Go]",
+"	01a0  NVCrush11 [GeForce2 MX Integrated Graphics]",
+"	01a4  nForce CPU bridge",
+"	01ab  nForce 420 Memory Controller (DDR)",
+"	01ac  nForce 220/420 Memory Controller",
+"	01ad  nForce 220/420 Memory Controller",
+"	01b0  nForce Audio",
+"	01b1  nForce Audio",
+"	01b2  nForce ISA Bridge",
+"	01b4  nForce PCI System Management",
+"	01b7  nForce AGP to PCI Bridge",
+"	01b8  nForce PCI-to-PCI bridge",
+"	01bc  nForce IDE",
+"	01c1  nForce AC'97 Modem Controller",
+"	01c2  nForce USB Controller",
+"	01c3  nForce Ethernet Controller",
+"	01d1  GeForce 7300 LE",
+"	01d7  Quadro NVS 110M / GeForce Go 7300",
+"	01d8  GeForce Go 7400",
+"	01da  Quadro NVS 110M",
+"	01de  Quadro FX 350",
+"		10de 01dc  Quadro  FX Go350M",
+"	01df  GeForce 7300 GS",
+"	01e0  nForce2 AGP (different version\?)",
+"		147b 1c09  NV7 Motherboard",
+"	01e8  nForce2 AGP",
+"	01ea  nForce2 Memory Controller 0",
+"		a0a0 03b9  UK79G-1394 motherboard",
+"	01eb  nForce2 Memory Controller 1",
+"		a0a0 03b9  UK79G-1394 motherboard",
+"	01ec  nForce2 Memory Controller 2",
+"		a0a0 03b9  UK79G-1394 motherboard",
+"	01ed  nForce2 Memory Controller 3",
+"		a0a0 03b9  UK79G-1394 motherboard",
+"	01ee  nForce2 Memory Controller 4",
+"		a0a0 03b9  UK79G-1394 motherboard",
+"	01ef  nForce2 Memory Controller 5",
+"		a0a0 03b9  UK79G-1394 motherboard",
+"	01f0  NV18 [GeForce4 MX - nForce GPU]",
+"		a0a0 03b5  UK79G-1394 motherboard",
+"	0200  NV20 [GeForce3]",
+"		1043 402f  AGP-V8200 DDR",
+"		1048 0c70  GLADIAC 920",
+"	0201  NV20 [GeForce3 Ti 200]",
+"	0202  NV20 [GeForce3 Ti 500]",
+"		1043 405b  V8200 T5",
+"		1545 002f  Xtasy 6964",
+"	0203  NV20DCC [Quadro DCC]",
+"	0211  NV40 [GeForce 6800]",
+"	0212  NV40 [GeForce 6800 LE]",
+"	0215  NV40 [GeForce 6800 GT]",
+"	0218  NV40 [GeForce 6800 XT]",
+"	0221  NV43 [GeForce 6200]",
+"	0240  C51PV [GeForce 6150]",
+"		1462 7207  K8NGM2 series",
+"	0241  C51 PCI Express Bridge",
+"	0242  C51G [GeForce 6100]",
+"	0243  C51 PCI Express Bridge",
+"	0244  C51 PCI Express Bridge",
+"	0245  C51 PCI Express Bridge",
+"	0246  C51 PCI Express Bridge",
+"	0247  C51 PCI Express Bridge",
+"	0248  C51 PCI Express Bridge",
+"	0249  C51 PCI Express Bridge",
+"	024a  C51 PCI Express Bridge",
+"	024b  C51 PCI Express Bridge",
+"	024c  C51 PCI Express Bridge",
+"	024d  C51 PCI Express Bridge",
+"	024e  C51 PCI Express Bridge",
+"	024f  C51 PCI Express Bridge",
+"	0250  NV25 [GeForce4 Ti 4600]",
+"	0251  NV25 [GeForce4 Ti 4400]",
+"		1043 8023  v8440 GeForce 4 Ti4400",
+"	0252  NV25 [GeForce4 Ti]",
+"	0253  NV25 [GeForce4 Ti 4200]",
+"		107d 2896  WinFast A250 LE TD (Dual VGA/TV-out/DVI)",
+"		147b 8f09  Siluro (Dual VGA/TV-out/DVI)",
+"	0258  NV25GL [Quadro4 900 XGL]",
+"	0259  NV25GL [Quadro4 750 XGL]",
+"	025b  NV25GL [Quadro4 700 XGL]",
+"	0260  MCP51 LPC Bridge",
+"		1462 7207  K8NGM2 series",
+"	0261  MCP51 LPC Bridge",
+"	0262  MCP51 LPC Bridge",
+"	0263  MCP51 LPC Bridge",
+"	0264  MCP51 SMBus",
+"		1462 7207  K8NGM2 series",
+"	0265  MCP51 IDE",
+"		1462 7207  K8NGM2 series",
+"	0266  MCP51 Serial ATA Controller",
+"		1462 7207  K8NGM2 series",
+"	0267  MCP51 Serial ATA Controller",
+"		1462 7207  K8NGM2 series",
+"	0268  MCP51 Ethernet Controller",
+"	0269  MCP51 Ethernet Controller",
+"		1462 7207  K8NGM2 series",
+"	026a  MCP51 MCI",
+"	026b  MCP51 AC97 Audio Controller",
+"	026c  MCP51 High Definition Audio",
+"		1462 7207  K8NGM2 series",
+"	026d  MCP51 USB Controller",
+"		1462 7207  K8NGM2 series",
+"	026e  MCP51 USB Controller",
+"		1462 7207  K8NGM2 series",
+"	026f  MCP51 PCI Bridge",
+"	0270  MCP51 Host Bridge",
+"		1462 7207  K8NGM2 series",
+"	0271  MCP51 PMU",
+"	0272  MCP51 Memory Controller 0",
+"	027e  C51 Memory Controller 2",
+"		1462 7207  K8NGM2 series",
+"	027f  C51 Memory Controller 3",
+"		1462 7207  K8NGM2 series",
+"	0280  NV28 [GeForce4 Ti 4800]",
+"	0281  NV28 [GeForce4 Ti 4200 AGP 8x]",
+"	0282  NV28 [GeForce4 Ti 4800 SE]",
+"	0286  NV28 [GeForce4 Ti 4200 Go AGP 8x]",
+"	0288  NV28GL [Quadro4 980 XGL]",
+"	0289  NV28GL [Quadro4 780 XGL]",
+"	028c  NV28GLM [Quadro4 700 GoGL]",
+"	0290  GeForce 7900 GTX",
+"	0291  GeForce 7900 GT",
+"	029a  G71 [Quadro FX 2500M]",
+"	029b  G71 [Quadro FX 1500M]",
+"	029c  Quadro FX 5500",
+"	029d  Quadro FX 3500",
+"	029e  Quadro FX 1500",
+"	02a0  NV2A [XGPU]",
+"	02e1  GeForce 7600 GS",
+"	02f0  C51 Host Bridge",
+"		1462 7207  K8NGM2 series",
+"	02f1  C51 Host Bridge",
+"	02f2  C51 Host Bridge",
+"	02f3  C51 Host Bridge",
+"	02f4  C51 Host Bridge",
+"	02f5  C51 Host Bridge",
+"	02f6  C51 Host Bridge",
+"	02f7  C51 Host Bridge",
+"	02f8  C51 Memory Controller 5",
+"		1462 7207  K8NGM2 series",
+"	02f9  C51 Memory Controller 4",
+"		1462 7207  K8NGM2 series",
+"	02fa  C51 Memory Controller 0",
+"		1462 7207  K8NGM2 series",
+"	02fb  C51 PCI Express Bridge",
+"	02fc  C51 PCI Express Bridge",
+"	02fd  C51 PCI Express Bridge",
+"	02fe  C51 Memory Controller 1",
+"		1462 7207  K8NGM2 series",
+"	02ff  C51 Host Bridge",
+"		1462 7207  K8NGM2 series",
+"	0300  NV30 [GeForce FX]",
+"	0301  NV30 [GeForce FX 5800 Ultra]",
+"	0302  NV30 [GeForce FX 5800]",
+"	0308  NV30GL [Quadro FX 2000]",
+"	0309  NV30GL [Quadro FX 1000]",
+"	0311  NV31 [GeForce FX 5600 Ultra]",
+"	0312  NV31 [GeForce FX 5600]",
+"	0313  NV31",
+"	0314  NV31 [GeForce FX 5600XT]",
+"		1043 814a  V9560XT/TD",
+"	0316  NV31M",
+"	0317  NV31M Pro",
+"	031a  NV31M [GeForce FX Go5600]",
+"	031b  NV31M [GeForce FX Go5650]",
+"	031c  NVIDIA Quadro FX Go700",
+"	031d  NV31GLM",
+"	031e  NV31GLM Pro",
+"	031f  NV31GLM Pro",
+"	0320  NV34 [GeForce FX 5200]",
+"	0321  NV34 [GeForce FX 5200 Ultra]",
+"	0322  NV34 [GeForce FX 5200]",
+"		1462 9171  MS-8917 (FX5200-T128)",
+"		1462 9360  MS-8936 (FX5200-T128)",
+"	0323  NV34 [GeForce FX 5200LE]",
+"	0324  NV34M [GeForce FX Go5200]",
+"		1028 0196  Inspiron 5160",
+"		1071 8160  MIM2000",
+"	0325  NV34M [GeForce FX Go5250]",
+"	0326  NV34 [GeForce FX 5500]",
+"	0327  NV34 [GeForce FX 5100]",
+"	0328  NV34M [GeForce FX Go5200 32M/64M]",
+"	0329  NV34M [GeForce FX Go5200]",
+"	032a  NV34GL [Quadro NVS 280 PCI]",
+"	032b  NV34GL [Quadro FX 500/600 PCI]",
+"	032c  NV34GLM [GeForce FX Go 5300]",
+"	032d  NV34 [GeForce FX Go5100]",
+"	032f  NV34GL",
+"	0330  NV35 [GeForce FX 5900 Ultra]",
+"	0331  NV35 [GeForce FX 5900]",
+"		1043 8145  V9950GE",
+"	0332  NV35 [GeForce FX 5900XT]",
+"	0333  NV38 [GeForce FX 5950 Ultra]",
+"	0334  NV35 [GeForce FX 5900ZT]",
+"	0338  NV35GL [Quadro FX 3000]",
+"	033f  NV35GL [Quadro FX 700]",
+"	0341  NV36.1 [GeForce FX 5700 Ultra]",
+"	0342  NV36.2 [GeForce FX 5700]",
+"	0343  NV36 [GeForce FX 5700LE]",
+"	0344  NV36.4 [GeForce FX 5700VE]",
+"	0345  NV36.5",
+"	0347  NV36 [GeForce FX Go5700]",
+"		103c 006a  NX9500",
+"	0348  NV36 [GeForce FX Go5700]",
+"	0349  NV36M Pro",
+"	034b  NV36MAP",
+"	034c  NV36 [Quadro FX Go1000]",
+"	034e  NV36GL [Quadro FX 1100]",
+"	034f  NV36GL",
+"	0360  MCP55 LPC Bridge",
+"	0361  MCP55 LPC Bridge",
+"	0362  MCP55 LPC Bridge",
+"	0363  MCP55 LPC Bridge",
+"	0364  MCP55 LPC Bridge",
+"	0365  MCP55 LPC Bridge",
+"	0366  MCP55 LPC Bridge",
+"	0367  MCP55 LPC Bridge",
+"	0368  MCP55 SMBus",
+"	0369  MCP55 Memory Controller",
+"	036a  MCP55 Memory Controller",
+"	036c  MCP55 USB Controller",
+"	036d  MCP55 USB Controller",
+"	036e  MCP55 IDE",
+"	0371  MCP55 High Definition Audio",
+"	0372  MCP55 Ethernet",
+"	0373  MCP55 Ethernet",
+"	037a  MCP55 Memory Controller",
+"	037e  MCP55 SATA Controller",
+"	037f  MCP55 SATA Controller",
+"	0391  G70 [GeForce 7600 GT]",
+"	0392  G70 [GeForce 7600 GS]",
+"	0398  G70 [GeForce Go 7600]",
+"	039e  Quadro FX 560",
+"	03e0  MCP61 LPC Bridge",
+"	03e1  MCP61 LPC Bridge",
+"	03e2  MCP61 LPC Bridge",
+"	03e3  MCP61 LPC Bridge",
+"	03e4  MCP61 High Definition Audio",
+"	03e5  MCP61 Ethernet",
+"	03e6  MCP61 Ethernet",
+"	03e7  MCP61 SATA Controller",
+"	03ea  MCP61 Memory Controller",
+"	03eb  MCP61 SMBus",
+"	03ec  MCP61 IDE",
+"	03ee  MCP61 Ethernet",
+"	03ef  MCP61 Ethernet",
+"	03f0  MCP61 High Definition Audio",
+"	03f1  MCP61 USB Controller",
+"	03f2  MCP61 USB Controller",
+"	03f5  MCP61 Memory Controller",
+"	03f6  MCP61 SATA Controller",
+"	03f7  MCP61 SATA Controller",
+"10df  Emulex Corporation",
+"	1ae5  LP6000 Fibre Channel Host Adapter",
+"	f085  LP850 Fibre Channel Host Adapter",
+"	f095  LP952 Fibre Channel Host Adapter",
+"	f098  LP982 Fibre Channel Host Adapter",
+"	f0a1  Thor LightPulse Fibre Channel Host Adapter",
+"	f0a5  Thor LightPulse Fibre Channel Host Adapter",
+"	f0b5  Viper LightPulse Fibre Channel Host Adapter",
+"	f0d1  Helios LightPulse Fibre Channel Host Adapter",
+"	f0d5  Helios LightPulse Fibre Channel Host Adapter",
+"	f0e1  Zephyr LightPulse Fibre Channel Host Adapter",
+"	f0e5  Zephyr LightPulse Fibre Channel Host Adapter",
+"	f0f5  Neptune LightPulse Fibre Channel Host Adapter",
+"	f700  LP7000 Fibre Channel Host Adapter",
+"	f701  LP7000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2)",
+"	f800  LP8000 Fibre Channel Host Adapter",
+"	f801  LP8000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2)",
+"	f900  LP9000 Fibre Channel Host Adapter",
+"	f901  LP9000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2)",
+"	f980  LP9802 Fibre Channel Host Adapter",
+"	f981  LP9802 Fibre Channel Host Adapter Alternate ID",
+"	f982  LP9802 Fibre Channel Host Adapter Alternate ID",
+"	fa00  Thor-X LightPulse Fibre Channel Host Adapter",
+"	fb00  Viper LightPulse Fibre Channel Host Adapter",
+"	fc00  Thor-X LightPulse Fibre Channel Host Adapter",
+"	fc10  Helios-X LightPulse Fibre Channel Host Adapter",
+"	fc20  Zephyr-X LightPulse Fibre Channel Host Adapter",
+"	fd00  Helios-X LightPulse Fibre Channel Host Adapter",
+"	fe00  Zephyr-X LightPulse Fibre Channel Host Adapter",
+"	ff00  Neptune LightPulse Fibre Channel Host Adapter",
+"10e0  Integrated Micro Solutions Inc.",
+"	5026  IMS5026/27/28",
+"	5027  IMS5027",
+"	5028  IMS5028",
+"	8849  IMS8849",
+"	8853  IMS8853",
+"	9128  IMS9128 [Twin turbo 128]",
+"10e1  Tekram Technology Co.,Ltd.",
+"	0391  TRM-S1040",
+"		10e1 0391  DC-315U SCSI-3 Host Adapter",
+"	690c  DC-690c",
+"	dc29  DC-290",
+"10e2  Aptix Corporation",
+"10e3  Tundra Semiconductor Corp.",
+"	0000  CA91C042 [Universe]",
+"	0148  Tsi148 [Tempe]",
+"	0860  CA91C860 [QSpan]",
+"	0862  CA91C862A [QSpan-II]",
+"	8260  CA91L8200B [Dual PCI PowerSpan II]",
+"	8261  CA91L8260B [Single PCI PowerSpan II]",
+"10e4  Tandem Computers",
+"	8029  Realtek 8029 Network Card",
+"10e5  Micro Industries Corporation",
+"10e6  Gainbery Computer Products Inc.",
+"10e7  Vadem",
+"10e8  Applied Micro Circuits Corp.",
+"	1072  INES GPIB-PCI (AMCC5920 based)",
+"	2011  Q-Motion Video Capture/Edit board",
+"	4750  S5930 [Matchmaker]",
+"	5920  S5920",
+"	8043  LANai4.x [Myrinet LANai interface chip]",
+"	8062  S5933_PARASTATION",
+"	807d  S5933 [Matchmaker]",
+"	8088  Kongsberg Spacetec Format Synchronizer",
+"	8089  Kongsberg Spacetec Serial Output Board",
+"	809c  S5933_HEPC3",
+"	80d7  PCI-9112",
+"	80d9  PCI-9118",
+"	80da  PCI-9812",
+"	811a  PCI-IEEE1355-DS-DE Interface",
+"	814c  Fastcom ESCC-PCI (Commtech, Inc.)",
+"	8170  S5933 [Matchmaker] (Chipset Development Tool)",
+"	81e6  Multimedia video controller",
+"	8291  Fastcom 232/8-PCI (Commtech, Inc.)",
+"	82c4  Fastcom 422/4-PCI (Commtech, Inc.)",
+"	82c5  Fastcom 422/2-PCI (Commtech, Inc.)",
+"	82c6  Fastcom IG422/1-PCI (Commtech, Inc.)",
+"	82c7  Fastcom IG232/2-PCI (Commtech, Inc.)",
+"	82ca  Fastcom 232/4-PCI (Commtech, Inc.)",
+"	82db  AJA HDNTV HD SDI Framestore",
+"	82e2  Fastcom DIO24H-PCI (Commtech, Inc.)",
+"	8851  S5933 on Innes Corp FM Radio Capture card",
+"10e9  Alps Electric Co., Ltd.",
+"10ea  Intergraphics Systems",
+"	1680  IGA-1680",
+"	1682  IGA-1682",
+"	1683  IGA-1683",
+"	2000  CyberPro 2000",
+"	2010  CyberPro 2000A",
+"	5000  CyberPro 5000",
+"	5050  CyberPro 5050",
+"	5202  CyberPro 5202",
+"	5252  CyberPro5252",
+"10eb  Artists Graphics",
+"	0101  3GA",
+"	8111  Twist3 Frame Grabber",
+"10ec  Realtek Semiconductor Co., Ltd.",
+"	0139  Zonet Zen3200",
+"	8029  RTL-8029(AS)",
+"		10b8 2011  EZ-Card (SMC1208)",
+"		10ec 8029  RTL-8029(AS)",
+"		1113 1208  EN1208",
+"		1186 0300  DE-528",
+"		1259 2400  AT-2400",
+"	8129  RTL-8129",
+"		10ec 8129  RT8129 Fast Ethernet Adapter",
+"	8138  RT8139 (B/C) Cardbus Fast Ethernet Adapter",
+"		10ec 8138  RT8139 (B/C) Fast Ethernet Adapter",
+"	8139  RTL-8139/8139C/8139C+",
+"		0357 000a  TTP-Monitoring Card V2.0",
+"		1025 005a  TravelMate 290",
+"		1025 8920  ALN-325",
+"		1025 8921  ALN-325",
+"		103c 006a  NX9500",
+"		1043 8109  P5P800-MX Mainboard",
+"		1071 8160  MIM2000",
+"		10bd 0320  EP-320X-R",
+"		10ec 8139  RT8139",
+"		1113 ec01  FNC-0107TX",
+"		1186 1300  DFE-538TX",
+"		1186 1320  SN5200",
+"		1186 8139  DRN-32TX",
+"		11f6 8139  FN22-3(A) LinxPRO Ethernet Adapter",
+"		1259 2500  AT-2500TX",
+"		1259 2503  AT-2500TX/ACPI",
+"		1429 d010  ND010",
+"		1432 9130  EN-9130TX",
+"		1436 8139  RT8139",
+"		1458 e000  GA-7VM400M/7VT600 Motherboard",
+"		1462 788c  865PE Neo2-V Mainboard",
+"		146c 1439  FE-1439TX",
+"		1489 6001  GF100TXRII",
+"		1489 6002  GF100TXRA",
+"		149c 139a  LFE-8139ATX",
+"		149c 8139  LFE-8139TX",
+"		14cb 0200  LNR-100 Family 10/100 Base-TX Ethernet",
+"		1695 9001  Onboard RTL8101L 10/100 MBit",
+"		1799 5000  F5D5000 PCI Card/Desktop Network PCI Card",
+"		1904 8139  RTL8139D Fast Ethernet Adapter",
+"		2646 0001  EtheRx",
+"		8e2e 7000  KF-230TX",
+"		8e2e 7100  KF-230TX/2",
+"		a0a0 0007  ALN-325C",
+"	8169  RTL-8169 Gigabit Ethernet",
+"		1025 0079  Aspire 5024WLMi",
+"		1259 c107  CG-LAPCIGT",
+"		1371 434e  ProG-2000L",
+"		1458 e000  GA-8I915ME-G Mainboard",
+"		1462 702c  K8T NEO 2 motherboard",
+"	8180  RTL8180L 802.11b MAC",
+"	8185  RTL-8185 IEEE 802.11a/b/g Wireless LAN Controller",
+"	8197  SmartLAN56 56K Modem",
+"10ed  Ascii Corporation",
+"	7310  V7310",
+"10ee  Xilinx Corporation",
+"	0205  Wildcard TE205P",
+"	0210  Wildcard TE210P",
+"	0314  Wildcard TE405P/TE410P (1st Gen)",
+"	0405  Wildcard TE405P (2nd Gen)",
+"	0410  Wildcard TE410P (2nd Gen)",
+"	3fc0  RME Digi96",
+"	3fc1  RME Digi96/8",
+"	3fc2  RME Digi96/8 Pro",
+"	3fc3  RME Digi96/8 Pad",
+"	3fc4  RME Digi9652 (Hammerfall)",
+"	3fc5  RME Hammerfall DSP",
+"	3fc6  RME Hammerfall DSP MADI",
+"	8381  Ellips Santos Frame Grabber",
+"	d154  Copley Controls CAN card (PCI-CAN-02)",
+"10ef  Racore Computer Products, Inc.",
+"	8154  M815x Token Ring Adapter",
+"10f0  Peritek Corporation",
+"10f1  Tyan Computer",
+"	2865  Tyan Thunder K8E S2865",
+"10f2  Achme Computer, Inc.",
+"10f3  Alaris, Inc.",
+"10f4  S-MOS Systems, Inc.",
+"10f5  NKK Corporation",
+"	a001  NDR4000 [NR4600 Bridge]",
+"10f6  Creative Electronic Systems SA",
+"10f7  Matsushita Electric Industrial Co., Ltd.",
+"10f8  Altos India Ltd",
+"10f9  PC Direct",
+"10fa  Truevision",
+"	000c  TARGA 1000",
+"10fb  Thesys Gesellschaft fuer Mikroelektronik mbH",
+"	186f  TH 6255",
+"10fc  I-O Data Device, Inc.",
+"	0003  Cardbus IDE Controller",
+"	0005  Cardbus SCSI CBSC II",
+"10fd  Soyo Computer, Inc",
+"10fe  Fast Multimedia AG",
+"10ff  NCube",
+"1100  Jazz Multimedia",
+"1101  Initio Corporation",
+"	1060  INI-A100U2W",
+"	9100  INI-9100/9100W",
+"	9400  INI-940",
+"	9401  INI-950",
+"	9500  360P",
+"	9502  Initio INI-9100UW Ultra Wide SCSI Controller INIC-950P chip",
+"1102  Creative Labs",
+"	0002  SB Live! EMU10k1",
+"		1102 0020  CT4850 SBLive! Value",
+"		1102 0021  CT4620 SBLive!",
+"		1102 002f  SBLive! mainboard implementation",
+"		1102 100a  SB Live! 5.1 Digital OEM [SB0220]",
+"		1102 4001  E-mu APS",
+"		1102 8022  CT4780 SBLive! Value",
+"		1102 8023  CT4790 SoundBlaster PCI512",
+"		1102 8024  CT4760 SBLive!",
+"		1102 8025  SBLive! Mainboard Implementation",
+"		1102 8026  CT4830 SBLive! Value",
+"		1102 8027  CT4832 SBLive! Value",
+"		1102 8028  CT4760 SBLive! OEM version",
+"		1102 8031  CT4831 SBLive! Value",
+"		1102 8040  CT4760 SBLive!",
+"		1102 8051  CT4850 SBLive! Value",
+"		1102 8061  SBLive! Player 5.1",
+"		1102 8064  SBLive! 5.1 Model SB0100",
+"		1102 8065  SBLive! 5.1 Digital Model SB0220",
+"		1102 8067  SBLive! 5.1 eMicro 28028",
+"	0004  SB Audigy",
+"		1102 0051  SB0090 Audigy Player",
+"		1102 0053  SB0090 Audigy Player/OEM",
+"		1102 0058  SB0090 Audigy Player/OEM",
+"		1102 1007  SB0240 Audigy 2 Platinum 6.1",
+"		1102 2002  SB Audigy 2 ZS (SB0350)",
+"	0006  [SB Live! Value] EMU10k1X",
+"	0007  SB Audigy LS",
+"		1102 0007  SBLive! 24bit",
+"		1102 1001  SB0310 Audigy LS",
+"		1102 1002  SB0312 Audigy LS",
+"		1102 1006  SB0410 SBLive! 24-bit",
+"		1462 1009  K8N Diamond",
+"	0008  SB0400 Audigy2 Value",
+"		1102 0008  EMU0404 Digital Audio System",
+"	4001  SB Audigy FireWire Port",
+"		1102 0010  SB Audigy FireWire Port",
+"	7002  SB Live! Game Port",
+"		1102 0020  Gameport Joystick",
+"	7003  SB Audigy Game Port",
+"		1102 0040  SB Audigy MIDI/Game Port",
+"	7004  [SB Live! Value] Input device controller",
+"	7005  SB Audigy LS Game Port",
+"		1102 1001  SB0310 Audigy LS MIDI/Game port",
+"		1102 1002  SB0312 Audigy LS MIDI/Game port",
+"	8064  SB0100 [SBLive! 5.1 OEM]",
+"	8938  Ectiva EV1938",
+"		1033 80e5  SlimTower-Jim (NEC)",
+"		1071 7150  Mitac 7150",
+"		110a 5938  Siemens Scenic Mobile 510PIII",
+"		13bd 100c  Ceres-C (Sharp, Intel BX)",
+"		13bd 100d  Sharp, Intel Banister",
+"		13bd 100e  TwinHead P09S/P09S3 (Sharp)",
+"		13bd f6f1  Marlin (Sharp)",
+"		14ff 0e70  P88TE (TWINHEAD INTERNATIONAL Corp)",
+"		14ff c401  Notebook 9100/9200/2000 (TWINHEAD INTERNATIONAL Corp)",
+"		156d b400  G400 - Geo (AlphaTop (Taiwan))",
+"		156d b550  G560  (AlphaTop (Taiwan))",
+"		156d b560  G560  (AlphaTop (Taiwan))",
+"		156d b700  G700/U700  (AlphaTop (Taiwan))",
+"		156d b795  G795  (AlphaTop (Taiwan))",
+"		156d b797  G797  (AlphaTop (Taiwan))",
+"1103  Triones Technologies, Inc.",
+"	0003  HPT343/345/346/363",
+"	0004  HPT366/368/370/370A/372/372N",
+"		1103 0001  HPT370A",
+"		1103 0004  HPT366 UDMA66 (r1) / HPT368 UDMA66 (r2) / HPT370 UDMA100 (r3) / HPT370 UDMA100 RAID (r4)",
+"		1103 0005  HPT370 UDMA100",
+"	0005  HPT372A/372N",
+"	0006  HPT302/302N",
+"	0007  HPT371/371N",
+"	0008  HPT374",
+"	0009  HPT372N",
+"1104  RasterOps Corp.",
+"1105  Sigma Designs, Inc.",
+"	1105  REALmagic Xcard MPEG 1/2/3/4 DVD Decoder",
+"	8300  REALmagic Hollywood Plus DVD Decoder",
+"	8400  EM840x REALmagic DVD/MPEG-2 Audio/Video Decoder",
+"	8401  EM8401 REALmagic DVD/MPEG-2 A/V Decoder",
+"	8470  EM8470 REALmagic DVD/MPEG-4 A/V Decoder",
+"	8471  EM8471 REALmagic DVD/MPEG-4 A/V Decoder",
+"	8475  EM8475 REALmagic DVD/MPEG-4 A/V Decoder",
+"		1105 0001  REALmagic X-Card",
+"	8476  EM8476 REALmagic DVD/MPEG-4 A/V Decoder",
+"		127d 0000  CineView II",
+"	8485  EM8485 REALmagic DVD/MPEG-4 A/V Decoder",
+"	8486  EM8486 REALmagic DVD/MPEG-4 A/V Decoder",
+"1106  VIA Technologies, Inc.",
+"	0102  Embedded VIA Ethernet Controller",
+"	0130  VT6305 1394.A Controller",
+"	0204  K8M800 Host Bridge",
+"	0208  PT890 Host Bridge",
+"	0238  K8T890 Host Bridge",
+"	0258  PT880 Host Bridge",
+"	0259  CN400/PM880 Host Bridge",
+"	0269  KT880 Host Bridge",
+"	0282  K8T800Pro Host Bridge",
+"		1043 80a3  A8V Deluxe",
+"	0290  K8M890 Host Bridge",
+"	0293  PM896 Host Bridge",
+"	0296  P4M800 Host Bridge",
+"	0305  VT8363/8365 [KT133/KM133]",
+"		1019 0987  K7VZA Mainboard",
+"		1043 8033  A7V Mainboard",
+"		1043 803e  A7V-E Mainboard",
+"		1043 8042  A7V133/A7V133-C Mainboard",
+"		147b a401  KT7/KT7-RAID/KT7A/KT7A-RAID Mainboard",
+"	0308  PT894 Host Bridge",
+"	0314  CN700/VN800/P4M800CE/Pro Host Bridge",
+"	0324  CX700 Host Bridge",
+"	0327  P4M890 Host Bridge",
+"	0336  K8M890CE Host Bridge",
+"	0340  PT900 Host Bridge",
+"	0351  VT3351 Host Bridge",
+"	0364  P4M900 Host Bridge",
+"	0391  VT8371 [KX133]",
+"	0501  VT8501 [Apollo MVP4]",
+"	0505  VT82C505",
+"	0561  VT82C576MV",
+"	0571  VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE",
+"		1019 0985  P6VXA Motherboard",
+"		1019 0a81  L7VTA v1.0 Motherboard (KT400-8235)",
+"		1043 8052  VT8233A Bus Master ATA100/66/33 IDE",
+"		1043 808c  A7V8X / A7V333 motherboard",
+"		1043 80a1  A7V8X-X motherboard rev. 1.01",
+"		1043 80ed  A7V600/K8V-X/A8V Deluxe motherboard",
+"		1106 0571  VT82C586/B/VT82C686/A/B/VT8233/A/C/VT8235 PIPC Bus Master IDE",
+"		1179 0001  Magnia Z310",
+"		1297 f641  FX41 motherboard",
+"		1458 5002  GA-7VAX Mainboard",
+"		1462 7020  K8T NEO 2 motherboard",
+"		147b 1407  KV8-MAX3 motherboard",
+"		1849 0571  K7VT2/K7VT6 motherboard",
+"	0576  VT82C576 3V [Apollo Master]",
+"	0585  VT82C585VP [Apollo VP1/VPX]",
+"	0586  VT82C586/A/B PCI-to-ISA [Apollo VP]",
+"		1106 0000  MVP3 ISA Bridge",
+"	0591  VT8237A SATA 2-Port Controller",
+"	0595  VT82C595 [Apollo VP2]",
+"	0596  VT82C596 ISA [Mobile South]",
+"		1106 0000  VT82C596/A/B PCI to ISA Bridge",
+"		1458 0596  VT82C596/A/B PCI to ISA Bridge",
+"	0597  VT82C597 [Apollo VP3]",
+"	0598  VT82C598 [Apollo MVP3]",
+"	0601  VT8601 [Apollo ProMedia]",
+"	0605  VT8605 [ProSavage PM133]",
+"		1043 802c  CUV4X mainboard",
+"	0680  VT82C680 [Apollo P6]",
+"	0686  VT82C686 [Apollo Super South]",
+"		1019 0985  P6VXA Motherboard",
+"		1043 802c  CUV4X mainboard",
+"		1043 8033  A7V Mainboard",
+"		1043 803e  A7V-E Mainboard",
+"		1043 8040  A7M266 Mainboard",
+"		1043 8042  A7V133/A7V133-C Mainboard",
+"		1106 0000  VT82C686/A PCI to ISA Bridge",
+"		1106 0686  VT82C686/A PCI to ISA Bridge",
+"		1179 0001  Magnia Z310",
+"		147b a702  KG7-Lite Mainboard",
+"	0691  VT82C693A/694x [Apollo PRO133x]",
+"		1019 0985  P6VXA Motherboard",
+"		1179 0001  Magnia Z310",
+"		1458 0691  VT82C691 Apollo Pro System Controller",
+"	0693  VT82C693 [Apollo Pro Plus]",
+"	0698  VT82C693A [Apollo Pro133 AGP]",
+"	0926  VT82C926 [Amazon]",
+"	1000  VT82C570MV",
+"	1106  VT82C570MV",
+"	1204  K8M800 Host Bridge",
+"	1208  PT890 Host Bridge",
+"	1238  K8T890 Host Bridge",
+"	1258  PT880 Host Bridge",
+"	1259  CN400/PM880 Host Bridge",
+"	1269  KT880 Host Bridge",
+"	1282  K8T800Pro Host Bridge",
+"	1290  K8M890 Host Bridge",
+"	1293  PM896 Host Bridge",
+"	1296  P4M800 Host Bridge",
+"	1308  PT894 Host Bridge",
+"	1314  CN700/VN800/P4M800CE/Pro Host Bridge",
+"	1324  CX700 Host Bridge",
+"	1327  P4M890 Host Bridge",
+"	1336  K8M890CE Host Bridge",
+"	1340  PT900 Host Bridge",
+"	1351  VT3351 Host Bridge",
+"	1364  P4M900 Host Bridge",
+"	1571  VT82C576M/VT82C586",
+"	1595  VT82C595/97 [Apollo VP2/97]",
+"	2204  K8M800 Host Bridge",
+"	2208  PT890 Host Bridge",
+"	2238  K8T890 Host Bridge",
+"	2258  PT880 Host Bridge",
+"	2259  CN400/PM880 Host Bridge",
+"	2269  KT880 Host Bridge",
+"	2282  K8T800Pro Host Bridge",
+"	2290  K8M890 Host Bridge",
+"	2293  PM896 Host Bridge",
+"	2296  P4M800 Host Bridge",
+"	2308  PT894 Host Bridge",
+"	2314  CN700/VN800/P4M800CE/Pro Host Bridge",
+"	2324  CX700 Host Bridge",
+"	2327  P4M890 Host Bridge",
+"	2336  K8M890CE Host Bridge",
+"	2340  PT900 Host Bridge",
+"	2351  VT3351 Host Bridge",
+"	2364  P4M900 Host Bridge",
+"	287a  VT8251 PCI to PCI Bridge",
+"	287b  VT8251 Host Bridge",
+"	287c  VT8251 PCIE Root Port",
+"	287d  VT8251 PCIE Root Port",
+"	287e  VT8251 Ultra VLINK Controller",
+"	3022  CLE266",
+"	3038  VT82xxxxx UHCI USB 1.1 Controller",
+"		0925 1234  USB Controller",
+"		1019 0985  P6VXA Motherboard",
+"		1019 0a81  L7VTA v1.0 Motherboard (KT400-8235)",
+"		1043 8080  A7V333 motherboard",
+"		1043 808c  VT6202 USB2.0 4 port controller",
+"		1043 80a1  A7V8X-X motherboard",
+"		1043 80ed  A7V600/K8V-X/A8V Deluxe motherboard",
+"		1179 0001  Magnia Z310",
+"		1458 5004  GA-7VAX Mainboard",
+"		1462 7020  K8T NEO 2 motherboard",
+"		147b 1407  KV8-MAX3 motherboard",
+"		182d 201d  CN-029 USB2.0 4 port PCI Card",
+"		1849 3038  K7VT6",
+"	3040  VT82C586B ACPI",
+"	3043  VT86C100A [Rhine]",
+"		10bd 0000  VT86C100A Fast Ethernet Adapter",
+"		1106 0100  VT86C100A Fast Ethernet Adapter",
+"		1186 1400  DFE-530TX rev A",
+"	3044  IEEE 1394 Host Controller",
+"		1025 005a  TravelMate 290",
+"		1043 808a  A8V Deluxe",
+"		1458 1000  GA-7VT600-1394 Motherboard",
+"		1462 207d  K8NGM2 series motherboard",
+"		1462 702d  K8T NEO 2 motherboard",
+"		1462 971d  MS-6917",
+"	3050  VT82C596 Power Management",
+"	3051  VT82C596 Power Management",
+"	3053  VT6105M [Rhine-III]",
+"	3057  VT82C686 [Apollo Super ACPI]",
+"		1019 0985  P6VXA Motherboard",
+"		1019 0987  K7VZA Motherboard",
+"		1043 8033  A7V Mainboard",
+"		1043 803e  A7V-E Mainboard",
+"		1043 8040  A7M266 Mainboard",
+"		1043 8042  A7V133/A7V133-C Mainboard",
+"		1179 0001  Magnia Z310",
+"	3058  VT82C686 AC97 Audio Controller",
+"		0e11 0097  SoundMax Digital Integrated Audio",
+"		0e11 b194  Soundmax integrated digital audio",
+"		1019 0985  P6VXA Motherboard",
+"		1019 0987  K7VZA Motherboard",
+"		1043 1106  A7V133/A7V133-C Mainboard",
+"		1106 4511  Onboard Audio on EP7KXA",
+"		1458 7600  Onboard Audio",
+"		1462 3091  MS-6309 Onboard Audio",
+"		1462 3300  MS-6330 Onboard Audio",
+"		15dd 7609  Onboard Audio",
+"	3059  VT8233/A/8235/8237 AC97 Audio Controller",
+"		1019 0a81  L7VTA v1.0 Motherboard (KT400-8235)",
+"		1043 8095  A7V8X Motherboard (Realtek ALC650 codec)",
+"		1043 80a1  A7V8X-X Motherboard",
+"		1043 80b0  A7V600/K8V Deluxe motherboard (ADI AD1980 codec [SoundMAX])",
+"		1043 812a  A8V Deluxe motherboard (Realtek ALC850 codec)",
+"		1106 3059  L7VMM2 Motherboard",
+"		1106 4161  K7VT2 motherboard",
+"		1106 4170  PCPartner P4M800-8237R Motherboard",
+"		1106 4552  Soyo KT-600 Dragon Plus (Realtek ALC 650)",
+"		1297 c160  FX41 motherboard (Realtek ALC650 codec)",
+"		1458 a002  GA-7VAX Onboard Audio (Realtek ALC650)",
+"		1462 0080  K8T NEO 2 motherboard",
+"		1462 3800  KT266 onboard audio",
+"		147b 1407  KV8-MAX3 motherboard",
+"		1849 9761  K7VT6 motherboard",
+"		4005 4710  MSI K7T266 Pro2-RU (MSI-6380 v2) onboard audio (Realtek/ALC 200/200P)",
+"		a0a0 01b6  AK77-8XN onboard audio",
+"	3065  VT6102 [Rhine-II]",
+"		1043 80a1  A7V8X-X Motherboard",
+"		1106 0102  VT6102 [Rhine II] Embeded Ethernet Controller on VT8235",
+"		1186 1400  DFE-530TX rev A",
+"		1186 1401  DFE-530TX rev B",
+"		13b9 1421  LD-10/100AL PCI Fast Ethernet Adapter (rev.B)",
+"		147b 1c09  NV7 Motherboard",
+"		1695 3005  VT6103",
+"		1695 300c  Realtek ALC655 sound chip",
+"		1849 3065  K7VT6 motherboard",
+"	3068  AC'97 Modem Controller",
+"		1462 309e  MS-6309 Saturn Motherboard",
+"	3074  VT8233 PCI to ISA Bridge",
+"		1043 8052  VT8233A",
+"	3091  VT8633 [Apollo Pro266]",
+"	3099  VT8366/A/7 [Apollo KT266/A/333]",
+"		1043 8064  A7V266-E Mainboard",
+"		1043 807f  A7V333 Mainboard",
+"		1849 3099  K7VT2 motherboard",
+"	3101  VT8653 Host Bridge",
+"	3102  VT8662 Host Bridge",
+"	3103  VT8615 Host Bridge",
+"	3104  USB 2.0",
+"		1019 0a81  L7VTA v1.0 Motherboard (KT400-8235)",
+"		1043 808c  A7V8X motherboard",
+"		1043 80a1  A7V8X-X motherboard rev 1.01",
+"		1043 80ed  A7V600/K8V-X/A8V Deluxe motherboard",
+"		1297 f641  FX41 motherboard",
+"		1458 5004  GA-7VAX Mainboard",
+"		1462 7020  K8T NEO 2 motherboard",
+"		147b 1407  KV8-MAX3 motherboard",
+"		182d 201d  CN-029 USB 2.0 4 port PCI Card",
+"		1849 3104  K7VT6 motherboard",
+"	3106  VT6105 [Rhine-III]",
+"		1186 1403  DFE-530TX rev C",
+"	3108  S3 Unichrome Pro VGA Adapter",
+"	3109  VT8233C PCI to ISA Bridge",
+"	3112  VT8361 [KLE133] Host Bridge",
+"	3113  VPX/VPX2 PCI to PCI Bridge Controller",
+"	3116  VT8375 [KM266/KL266] Host Bridge",
+"		1297 f641  FX41 motherboard",
+"	3118  S3 Unichrome Pro VGA Adapter",
+"	3119  VT6120/VT6121/VT6122 Gigabit Ethernet Adapter",
+"	3122  VT8623 [Apollo CLE266] integrated CastleRock graphics",
+"	3123  VT8623 [Apollo CLE266]",
+"	3128  VT8753 [P4X266 AGP]",
+"	3133  VT3133 Host Bridge",
+"	3147  VT8233A ISA Bridge",
+"		1043 808c  A7V333 motherboard",
+"	3148  P4M266 Host Bridge",
+"	3149  VIA VT6420 SATA RAID Controller",
+"		1043 80ed  A7V600/K8V Deluxe/K8V-X/A8V Deluxe motherboard",
+"		1458 b003  GA-7VM400AM(F) Motherboard",
+"		1462 7020  K8T Neo 2 Motherboard",
+"		147b 1407  KV8-MAX3 motherboard",
+"		147b 1408  KV7",
+"		1849 3149  K7VT6 motherboard",
+"	3156  P/KN266 Host Bridge",
+"	3164  VT6410 ATA133 RAID controller",
+"		1043 80f4  P4P800 Mainboard Deluxe ATX",
+"		1462 7028  915P/G Neo2",
+"	3168  VT8374 P4X400 Host Controller/AGP Bridge",
+"	3177  VT8235 ISA Bridge",
+"		1019 0a81  L7VTA v1.0 Motherboard (KT400-8235)",
+"		1043 808c  A7V8X motherboard",
+"		1043 80a1  A7V8X-X motherboard",
+"		1297 f641  FX41 motherboard",
+"		1458 5001  GA-7VAX Mainboard",
+"		1849 3177  K7VT2 motherboard",
+"	3178  ProSavageDDR P4N333 Host Bridge",
+"	3188  VT8385 [K8T800 AGP] Host Bridge",
+"		1043 80a3  K8V Deluxe/K8V-X motherboard",
+"		147b 1407  KV8-MAX3 motherboard",
+"	3189  VT8377 [KT400/KT600 AGP] Host Bridge",
+"		1043 807f  A7V8X motherboard",
+"		1458 5000  GA-7VAX Mainboard",
+"		1849 3189  K7VT6 motherboard",
+"	3204  K8M800 Host Bridge",
+"	3205  VT8378 [KM400/A] Chipset Host Bridge",
+"		1458 5000  GA-7VM400M Motherboard",
+"	3208  PT890 Host Bridge",
+"	3213  VPX/VPX2 PCI to PCI Bridge Controller",
+"	3218  K8T800M Host Bridge",
+"	3227  VT8237 ISA bridge [KT600/K8T800/K8T890 South]",
+"		1043 80ed  A7V600/K8V-X/A8V Deluxe motherboard",
+"		1106 3227  DFI KT600-AL Motherboard",
+"		1458 5001  GA-7VT600 Motherboard",
+"		147b 1407  KV8-MAX3 motherboard",
+"		1849 3227  K7VT4 motherboard",
+"	3238  K8T890 Host Bridge",
+"	3249  VT6421 IDE RAID Controller",
+"	324a  CX700 PCI to PCI Bridge",
+"	324b  CX700 Host Bridge",
+"	324e  CX700 Internal Module Bus",
+"	3258  PT880 Host Bridge",
+"	3259  CN400/PM880 Host Bridge",
+"	3269  KT880 Host Bridge",
+"	3282  K8T800Pro Host Bridge",
+"	3287  VT8251 PCI to ISA Bridge",
+"	3288  VIA High Definition Audio Controller",
+"	3290  K8M890 Host Bridge",
+"	3296  P4M800 Host Bridge",
+"	3324  CX700 Host Bridge",
+"	3327  P4M890 Host Bridge",
+"	3336  K8M890CE Host Bridge",
+"	3337  VT8237A PCI to ISA Bridge",
+"	3340  PT900 Host Bridge",
+"	3344  UniChrome Pro IGP",
+"	3349  VT8251 AHCI/SATA 4-Port Controller",
+"	3351  VT3351 Host Bridge",
+"	3364  P4M900 Host Bridge",
+"	337a  VT8237A PCI to PCI Bridge",
+"	337b  VT8237A Host Bridge",
+"	4149  VIA VT6420 (ATA133) Controller",
+"	4204  K8M800 Host Bridge",
+"	4208  PT890 Host Bridge",
+"	4238  K8T890 Host Bridge",
+"	4258  PT880 Host Bridge",
+"	4259  CN400/PM880 Host Bridge",
+"	4269  KT880 Host Bridge",
+"	4282  K8T800Pro Host Bridge",
+"	4290  K8M890 Host Bridge",
+"	4293  PM896 Host Bridge",
+"	4296  P4M800 Host Bridge",
+"	4308  PT894 Host Bridge",
+"	4314  CN700/VN800/P4M800CE/Pro Host Bridge",
+"	4324  CX700 Host Bridge",
+"	4327  P4M890 Host Bridge",
+"	4336  K8M890CE Host Bridge",
+"	4340  PT900 Host Bridge",
+"	4351  VT3351 Host Bridge",
+"	4364  P4M900 Host Bridge",
+"	5030  VT82C596 ACPI [Apollo PRO]",
+"	5208  PT890 I/O APIC Interrupt Controller",
+"	5238  K8T890 I/O APIC Interrupt Controller",
+"	5290  K8M890 I/O APIC Interrupt Controller",
+"	5308  PT894 I/O APIC Interrupt Controller",
+"	5327  P4M890 I/O APIC Interrupt Controller",
+"	5336  K8M890CE I/O APIC Interrupt Controller",
+"	5340  PT900 I/O APIC Interrupt Controller",
+"	5351  VT3351 I/O APIC Interrupt Controller",
+"	5364  P4M900 I/O APIC Interrupt Controller",
+"	6100  VT85C100A [Rhine II]",
+"	6327  P4M890 Security Device",
+"	7204  K8M800 Host Bridge",
+"	7205  VT8378 [S3 UniChrome] Integrated Video",
+"		1458 d000  Gigabyte GA-7VM400(A)M(F) Motherboard",
+"	7208  PT890 Host Bridge",
+"	7238  K8T890 Host Bridge",
+"	7258  PT880 Host Bridge",
+"	7259  CN400/PM880 Host Bridge",
+"	7269  KT880 Host Bridge",
+"	7282  K8T800Pro Host Bridge",
+"	7290  K8M890 Host Bridge",
+"	7293  PM896 Host Bridge",
+"	7296  P4M800 Host Bridge",
+"	7308  PT894 Host Bridge",
+"	7314  CN700/VN800/P4M800CE/Pro Host Bridge",
+"	7324  CX700 Host Bridge",
+"	7327  P4M890 Host Bridge",
+"	7336  K8M890CE Host Bridge",
+"	7340  PT900 Host Bridge",
+"	7351  VT3351 Host Bridge",
+"	7364  P4M900 Host Bridge",
+"	8231  VT8231 [PCI-to-ISA Bridge]",
+"	8235  VT8235 ACPI",
+"	8305  VT8363/8365 [KT133/KM133 AGP]",
+"	8324  CX700 PCI to ISA Bridge",
+"	8391  VT8371 [KX133 AGP]",
+"	8501  VT8501 [Apollo MVP4 AGP]",
+"	8596  VT82C596 [Apollo PRO AGP]",
+"	8597  VT82C597 [Apollo VP3 AGP]",
+"	8598  VT82C598/694x [Apollo MVP3/Pro133x AGP]",
+"		1019 0985  P6VXA Motherboard",
+"	8601  VT8601 [Apollo ProMedia AGP]",
+"	8605  VT8605 [PM133 AGP]",
+"	8691  VT82C691 [Apollo Pro]",
+"	8693  VT82C693 [Apollo Pro Plus] PCI Bridge",
+"	a208  PT890 PCI to PCI Bridge Controller",
+"	a238  K8T890 PCI to PCI Bridge Controller",
+"	a327  P4M890 PCI to PCI Bridge Controller",
+"	a364  P4M900 PCI to PCI Bridge Controller",
+"	b091  VT8633 [Apollo Pro266 AGP]",
+"	b099  VT8366/A/7 [Apollo KT266/A/333 AGP]",
+"	b101  VT8653 AGP Bridge",
+"	b102  VT8362 AGP Bridge",
+"	b103  VT8615 AGP Bridge",
+"	b112  VT8361 [KLE133] AGP Bridge",
+"	b113  VPX/VPX2 I/O APIC Interrupt Controller",
+"	b115  VT8363/8365 [KT133/KM133] PCI Bridge",
+"	b168  VT8235 PCI Bridge",
+"	b188  VT8237 PCI bridge [K8T800/K8T890 South]",
+"		147b 1407  KV8-MAX3 motherboard",
+"	b198  VT8237 PCI Bridge",
+"	b213  VPX/VPX2 I/O APIC Interrupt Controller",
+"	b999  [K8T890 North / VT8237 South] PCI Bridge",
+"	c208  PT890 PCI to PCI Bridge Controller",
+"	c238  K8T890 PCI to PCI Bridge Controller",
+"	c327  P4M890 PCI to PCI Bridge Controller",
+"	c340  PT900 PCI to PCI Bridge Controller",
+"	c364  P4M900 PCI to PCI Bridge Controller",
+"	d104  VT8237 Integrated Fast Ethernet Controller",
+"	d208  PT890 PCI to PCI Bridge Controller",
+"	d213  VPX/VPX2 PCI to PCI Bridge Controller",
+"	d238  K8T890 PCI to PCI Bridge Controller",
+"	d340  PT900 PCI to PCI Bridge Controller",
+"	e208  PT890 PCI to PCI Bridge Controller",
+"	e238  K8T890 PCI to PCI Bridge Controller",
+"	e340  PT900 PCI to PCI Bridge Controller",
+"	f208  PT890 PCI to PCI Bridge Controller",
+"	f238  K8T890 PCI to PCI Bridge Controller",
+"	f340  PT900 PCI to PCI Bridge Controller",
+"1107  Stratus Computers",
+"	0576  VIA VT82C570MV [Apollo] (Wrong vendor ID!)",
+"1108  Proteon, Inc.",
+"	0100  p1690plus_AA",
+"	0101  p1690plus_AB",
+"	0105  P1690Plus",
+"	0108  P1690Plus",
+"	0138  P1690Plus",
+"	0139  P1690Plus",
+"	013c  P1690Plus",
+"	013d  P1690Plus",
+"1109  Cogent Data Technologies, Inc.",
+"	1400  EM110TX [EX110TX]",
+"110a  Siemens Nixdorf AG",
+"	0002  Pirahna 2-port",
+"	0005  Tulip controller, power management, switch extender",
+"	0006  FSC PINC (I/O-APIC)",
+"	0015  FSC Multiprocessor Interrupt Controller",
+"	001d  FSC Copernicus Management Controller",
+"	007b  FSC Remote Service Controller, mailbox device",
+"	007c  FSC Remote Service Controller, shared memory device",
+"	007d  FSC Remote Service Controller, SMIC device",
+"	2101  HST SAPHIR V Primary PCI (ISDN/PMx)",
+"	2102  DSCC4 PEB/PEF 20534 DMA Supported Serial Communication Controller with 4 Channels",
+"	2104  Eicon Diva 2.02 compatible passive ISDN card",
+"	3142  SIMATIC NET CP 5613A1 (Profibus Adapter)",
+"	4021  SIMATIC NET CP 5512 (Profibus and MPI Cardbus Adapter)",
+"	4029  SIMATIC NET CP 5613A2 (Profibus Adapter)",
+"	4942  FPGA I-Bus Tracer for MBD",
+"	6120  SZB6120",
+"110b  Chromatic Research Inc.",
+"	0001  Mpact Media Processor",
+"	0004  Mpact 2",
+"110c  Mini-Max Technology, Inc.",
+"110d  Znyx Advanced Systems",
+"110e  CPU Technology",
+"110f  Ross Technology",
+"1110  Powerhouse Systems",
+"	6037  Firepower Powerized SMP I/O ASIC",
+"	6073  Firepower Powerized SMP I/O ASIC",
+"1111  Santa Cruz Operation",
+"1112  Osicom Technologies Inc",
+"	2200  FDDI Adapter",
+"	2300  Fast Ethernet Adapter",
+"	2340  4 Port Fast Ethernet Adapter",
+"	2400  ATM Adapter",
+"1113  Accton Technology Corporation",
+"	1211  SMC2-1211TX",
+"		103c 1207  EN-1207D Fast Ethernet Adapter",
+"		1113 1211  EN-1207D Fast Ethernet Adapter",
+"	1216  EN-1216 Ethernet Adapter",
+"		1113 2242  EN2242 10/100 Ethernet Mini-PCI Card",
+"		111a 1020  SpeedStream 1020 PCI 10/100 Ethernet Adaptor [EN-1207F-TX \?]",
+"	1217  EN-1217 Ethernet Adapter",
+"	5105  10Mbps Network card",
+"	9211  EN-1207D Fast Ethernet Adapter",
+"		1113 9211  EN-1207D Fast Ethernet Adapter",
+"	9511  21x4x DEC-Tulip compatible Fast Ethernet",
+"	d301  CPWNA100 (Philips wireless PCMCIA)",
+"	ec02  SMC 1244TX v3",
+"1114  Atmel Corporation",
+"	0506  at76c506 802.11b Wireless Network Adaptor",
+"1115  3D Labs",
+"1116  Data Translation",
+"	0022  DT3001",
+"	0023  DT3002",
+"	0024  DT3003",
+"	0025  DT3004",
+"	0026  DT3005",
+"	0027  DT3001-PGL",
+"	0028  DT3003-PGL",
+"1117  Datacube, Inc",
+"	9500  Max-1C SVGA card",
+"	9501  Max-1C image processing",
+"1118  Berg Electronics",
+"1119  ICP Vortex Computersysteme GmbH",
+"	0000  GDT 6000/6020/6050",
+"	0001  GDT 6000B/6010",
+"	0002  GDT 6110/6510",
+"	0003  GDT 6120/6520",
+"	0004  GDT 6530",
+"	0005  GDT 6550",
+"	0006  GDT 6117/6517",
+"	0007  GDT 6127/6527",
+"	0008  GDT 6537",
+"	0009  GDT 6557/6557-ECC",
+"	000a  GDT 6115/6515",
+"	000b  GDT 6125/6525",
+"	000c  GDT 6535",
+"	000d  GDT 6555",
+"	0010  GDT 6115/6515",
+"	0011  GDT 6125/6525",
+"	0012  GDT 6535",
+"	0013  GDT 6555/6555-ECC",
+"	0100  GDT 6117RP/6517RP",
+"	0101  GDT 6127RP/6527RP",
+"	0102  GDT 6537RP",
+"	0103  GDT 6557RP",
+"	0104  GDT 6111RP/6511RP",
+"	0105  GDT 6121RP/6521RP",
+"	0110  GDT 6117RD/6517RD",
+"	0111  GDT 6127RD/6527RD",
+"	0112  GDT 6537RD",
+"	0113  GDT 6557RD",
+"	0114  GDT 6111RD/6511RD",
+"	0115  GDT 6121RD/6521RD",
+"	0118  GDT 6118RD/6518RD/6618RD",
+"	0119  GDT 6128RD/6528RD/6628RD",
+"	011a  GDT 6538RD/6638RD",
+"	011b  GDT 6558RD/6658RD",
+"	0120  GDT 6117RP2/6517RP2",
+"	0121  GDT 6127RP2/6527RP2",
+"	0122  GDT 6537RP2",
+"	0123  GDT 6557RP2",
+"	0124  GDT 6111RP2/6511RP2",
+"	0125  GDT 6121RP2/6521RP2",
+"	0136  GDT 6113RS/6513RS",
+"	0137  GDT 6123RS/6523RS",
+"	0138  GDT 6118RS/6518RS/6618RS",
+"	0139  GDT 6128RS/6528RS/6628RS",
+"	013a  GDT 6538RS/6638RS",
+"	013b  GDT 6558RS/6658RS",
+"	013c  GDT 6533RS/6633RS",
+"	013d  GDT 6543RS/6643RS",
+"	013e  GDT 6553RS/6653RS",
+"	013f  GDT 6563RS/6663RS",
+"	0166  GDT 7113RN/7513RN/7613RN",
+"	0167  GDT 7123RN/7523RN/7623RN",
+"	0168  GDT 7118RN/7518RN/7518RN",
+"	0169  GDT 7128RN/7528RN/7628RN",
+"	016a  GDT 7538RN/7638RN",
+"	016b  GDT 7558RN/7658RN",
+"	016c  GDT 7533RN/7633RN",
+"	016d  GDT 7543RN/7643RN",
+"	016e  GDT 7553RN/7653RN",
+"	016f  GDT 7563RN/7663RN",
+"	01d6  GDT 4x13RZ",
+"	01d7  GDT 4x23RZ",
+"	01f6  GDT 8x13RZ",
+"	01f7  GDT 8x23RZ",
+"	01fc  GDT 8x33RZ",
+"	01fd  GDT 8x43RZ",
+"	01fe  GDT 8x53RZ",
+"	01ff  GDT 8x63RZ",
+"	0210  GDT 6519RD/6619RD",
+"	0211  GDT 6529RD/6629RD",
+"	0260  GDT 7519RN/7619RN",
+"	0261  GDT 7529RN/7629RN",
+"	02ff  GDT MAXRP",
+"	0300  GDT NEWRX",
+"111a  Efficient Networks, Inc",
+"	0000  155P-MF1 (FPGA)",
+"	0002  155P-MF1 (ASIC)",
+"	0003  ENI-25P ATM",
+"		111a 0000  ENI-25p Miniport ATM Adapter",
+"	0005  SpeedStream (LANAI)",
+"		111a 0001  ENI-3010 ATM",
+"		111a 0009  ENI-3060 ADSL (VPI=0)",
+"		111a 0101  ENI-3010 ATM",
+"		111a 0109  ENI-3060CO ADSL (VPI=0)",
+"		111a 0809  ENI-3060 ADSL (VPI=0 or 8)",
+"		111a 0909  ENI-3060CO ADSL (VPI=0 or 8)",
+"		111a 0a09  ENI-3060 ADSL (VPI=<0..15>)",
+"	0007  SpeedStream ADSL",
+"		111a 1001  ENI-3061 ADSL [ASIC]",
+"	1203  SpeedStream 1023 Wireless PCI Adapter",
+"111b  Teledyne Electronic Systems",
+"111c  Tricord Systems Inc.",
+"	0001  Powerbis Bridge",
+"111d  Integrated Device Technology, Inc.",
+"	0001  IDT77201/77211 155Mbps ATM SAR Controller [NICStAR]",
+"	0003  IDT77222/77252 155Mbps ATM MICRO ABR SAR Controller",
+"	0004  IDT77V252 155Mbps ATM MICRO ABR SAR Controller",
+"	0005  IDT77V222 155Mbps ATM MICRO ABR SAR Controller",
+"111e  Eldec",
+"111f  Precision Digital Images",
+"	4a47  Precision MX Video engine interface",
+"	5243  Frame capture bus interface",
+"1120  EMC Corporation",
+"1121  Zilog",
+"1122  Multi-tech Systems, Inc.",
+"1123  Excellent Design, Inc.",
+"1124  Leutron Vision AG",
+"	2581  Picport Monochrome",
+"1125  Eurocore",
+"1126  Vigra",
+"1127  FORE Systems Inc",
+"	0200  ForeRunner PCA-200 ATM",
+"	0210  PCA-200PC",
+"	0250  ATM",
+"	0300  ForeRunner PCA-200EPC ATM",
+"	0310  ATM",
+"	0400  ForeRunnerHE ATM Adapter",
+"		1127 0400  ForeRunnerHE ATM",
+"1129  Firmworks",
+"112a  Hermes Electronics Company, Ltd.",
+"112b  Linotype - Hell AG",
+"112c  Zenith Data Systems",
+"112d  Ravicad",
+"112e  Infomedia Microelectronics Inc.",
+"112f  Imaging Technology Inc",
+"	0000  MVC IC-PCI",
+"	0001  MVC IM-PCI Video frame grabber/processor",
+"	0008  PC-CamLink PCI framegrabber",
+"1130  Computervision",
+"1131  Philips Semiconductors",
+"	1561  USB 1.1 Host Controller",
+"	1562  USB 2.0 Host Controller",
+"	3400  SmartPCI56(UCB1500) 56K Modem",
+"	5400  TriMedia TM1000/1100",
+"	5402  TriMedia TM-1300",
+"		1244 0f00  Fritz!Card DSL",
+"	5405  TriMedia TM1500",
+"	5406  TriMedia TM1700",
+"	7130  SAA7130 Video Broadcast Decoder",
+"		102b 48d0  Matrox CronosPlus",
+"		1048 226b  ELSA EX-VISION 300TV",
+"		1131 2001  10MOONS PCI TV CAPTURE CARD",
+"		1131 2005  Techcom (India) TV Tuner Card (SSD-TV-670)",
+"		1461 050c  Nagase Sangyo TransGear 3000TV",
+"		1461 10ff  AVerMedia DVD EZMaker",
+"		1461 2108  AverMedia AverTV/305",
+"		1461 2115  AverMedia AverTV Studio 305",
+"		153b 1152  Terratec Cinergy 200 TV",
+"		185b c100  Compro VideoMate TV PVR/FM",
+"		185b c901  Videomate DVB-T200",
+"		5168 0138  LifeView FlyVIDEO2000",
+"	7133  SAA7133/SAA7135 Video Broadcast Decoder",
+"		0000 4091  Beholder BeholdTV 409 FM",
+"		1019 4cb5  Elitegroup ECS TVP3XP FM1236 Tuner Card (NTSC,FM)",
+"		1043 0210  FlyTV mini Asus Digimatrix",
+"		1043 4843  ASUS TV-FM 7133",
+"		1043 4845  TV-FM 7135",
+"		1043 4862  P7131 Dual",
+"		1131 2001  Proteus Pro [philips reference design]",
+"		1131 2018  Tiger reference design",
+"		1131 4ee9  MonsterTV Mobile",
+"		11bd 002b  PCTV Stereo",
+"		11bd 002e  PCTV 110i (saa7133)",
+"		12ab 0800  PURPLE TV",
+"		1421 0335  Instant TV DVB-T Cardbus",
+"		1421 1370  Instant TV (saa7135)",
+"		1435 7330  VFG7330",
+"		1435 7350  VFG7350",
+"		1461 1044  AVerTVHD MCE A180",
+"		1461 f31f  Avermedia AVerTV GO 007 FM",
+"		1462 6231  TV@Anywhere plus",
+"		1489 0214  LifeView FlyTV Platinum FM",
+"		14c0 1212  LifeView FlyTV Platinum Mini2",
+"		153b 1160  Cinergy 250 PCI TV",
+"		153b 1162  Terratec Cinergy 400 mobile",
+"		185b c100  VideoMate TV",
+"		5168 0306  LifeView FlyDVB-T DUO",
+"		5168 0319  LifeView FlyDVB Trio",
+"	7134  SAA7134/SAA7135HL Video Broadcast Decoder",
+"		1019 4cb4  Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM)",
+"		1043 0210  Digimatrix TV",
+"		1043 4840  ASUS TV-FM 7134",
+"		1131 2004  EUROPA V3 reference design",
+"		1131 4e85  SKNet Monster TV",
+"		1131 6752  EMPRESS",
+"		11bd 002b  PCTV Stereo",
+"		11bd 002d  PCTV 300i DVB-T + PAL",
+"		1461 2c00  AverTV Hybrid+FM PCI",
+"		1461 9715  AVerTV Studio 307",
+"		1461 a70a  Avermedia AVerTV 307",
+"		1461 a70b  AverMedia M156 / Medion 2819",
+"		1461 d6ee  Cardbus TV/Radio (E500)",
+"		1471 b7e9  AVerTV Cardbus plus",
+"		153b 1142  Terratec Cinergy 400 TV",
+"		153b 1143  Terratec Cinergy 600 TV",
+"		153b 1158  Terratec Cinergy 600 TV MK3",
+"		1540 9524  ProVideo PV952",
+"		16be 0003  Medion 7134",
+"		185b c200  Compro VideoMate Gold+ Pal",
+"		185b c900  Videomate DVB-T300",
+"		1894 a006  KNC One TV-Station DVR",
+"		1894 fe01  KNC One TV-Station RDS / Typhoon TV Tuner RDS",
+"	7145  SAA7145",
+"	7146  SAA7146",
+"		110a 0000  Fujitsu/Siemens DVB-C card rev1.5",
+"		110a ffff  Fujitsu/Siemens DVB-C card rev1.5",
+"		1131 4f56  KNC1 DVB-S Budget",
+"		1131 4f60  Fujitsu-Siemens Activy DVB-S Budget Rev AL",
+"		1131 4f61  Activy DVB-S Budget Rev GR",
+"		1131 5f61  Activy DVB-T Budget",
+"		114b 2003  DVRaptor Video Edit/Capture Card",
+"		11bd 0006  DV500 Overlay",
+"		11bd 000a  DV500 Overlay",
+"		11bd 000f  DV500 Overlay",
+"		13c2 0000  Siemens/Technotrend/Hauppauge DVB card rev1.3 or rev1.5",
+"		13c2 0001  Technotrend/Hauppauge DVB card rev1.3 or rev1.6",
+"		13c2 0002  Technotrend/Hauppauge DVB card rev2.1",
+"		13c2 0003  Technotrend/Hauppauge DVB card rev2.1",
+"		13c2 0004  Technotrend/Hauppauge DVB card rev2.1",
+"		13c2 0006  Technotrend/Hauppauge DVB card rev1.3 or rev1.6",
+"		13c2 0008  Technotrend/Hauppauge DVB-T",
+"		13c2 000a  Octal/Technotrend DVB-C for iTV",
+"		13c2 1003  Technotrend-Budget/Hauppauge WinTV-NOVA-S DVB card",
+"		13c2 1004  Technotrend-Budget/Hauppauge WinTV-NOVA-C DVB card",
+"		13c2 1005  Technotrend-Budget/Hauppauge WinTV-NOVA-T DVB card",
+"		13c2 100c  Technotrend-Budget/Hauppauge WinTV-NOVA-CI DVB card",
+"		13c2 100f  Technotrend-Budget/Hauppauge WinTV-NOVA-CI DVB card",
+"		13c2 1011  Technotrend-Budget/Hauppauge WinTV-NOVA-T DVB card",
+"		13c2 1013  SATELCO Multimedia DVB",
+"		13c2 1016  WinTV-NOVA-SE DVB card",
+"		13c2 1102  Technotrend/Hauppauge DVB card rev2.1",
+"		153b 1156  Terratec Cynergy 1200C",
+"	9730  SAA9730 Integrated Multimedia and Peripheral Controller",
+"1132  Mitel Corp.",
+"1133  Eicon Networks Corporation",
+"	7901  EiconCard S90",
+"	7902  EiconCard S90",
+"	7911  EiconCard S91",
+"	7912  EiconCard S91",
+"	7941  EiconCard S94",
+"	7942  EiconCard S94",
+"	7943  EiconCard S94",
+"	7944  EiconCard S94",
+"	b921  EiconCard P92",
+"	b922  EiconCard P92",
+"	b923  EiconCard P92",
+"	e001  Diva Pro 2.0 S/T",
+"	e002  Diva 2.0 S/T PCI",
+"	e003  Diva Pro 2.0 U",
+"	e004  Diva 2.0 U PCI",
+"	e005  Diva 2.01 S/T PCI",
+"	e006  Diva CT S/T PCI",
+"	e007  Diva CT U PCI",
+"	e008  Diva CT Lite S/T PCI",
+"	e009  Diva CT Lite U PCI",
+"	e00a  Diva ISDN+V.90 PCI",
+"	e00b  Diva 2.02 PCI S/T",
+"	e00c  Diva 2.02 PCI U",
+"	e00d  Diva ISDN Pro 3.0 PCI",
+"	e00e  Diva ISDN+CT S/T PCI Rev 2",
+"	e010  Diva Server BRI-2M PCI",
+"		110a 0021  Fujitsu Siemens ISDN S0",
+"	e011  Diva Server BRI S/T Rev 2",
+"	e012  Diva Server 4BRI-8M PCI",
+"	e013  Diva Server 4BRI Rev 2",
+"		1133 1300  Diva Server V-4BRI-8",
+"		1133 e013  Diva Server 4BRI-8M 2.0 PCI",
+"	e014  Diva Server PRI-30M PCI",
+"	e015  DIVA Server PRI Rev 2",
+"		1133 e015  Diva Server PRI 2.0 PCI",
+"	e016  Diva Server Voice 4BRI PCI",
+"	e017  Diva Server Voice 4BRI Rev 2",
+"		1133 e017  Diva Server Voice 4BRI-8M 2.0 PCI",
+"	e018  Diva Server BRI-2M 2.0 PCI",
+"		1133 1800  Diva Server V-BRI-2",
+"		1133 e018  Diva Server BRI-2M 2.0 PCI",
+"	e019  Diva Server Voice PRI Rev 2",
+"		1133 e019  Diva Server Voice PRI 2.0 PCI",
+"	e01a  Diva Server 2FX",
+"	e01b  Diva Server Voice BRI-2M 2.0 PCI",
+"		1133 e01b  Diva Server Voice BRI-2M 2.0 PCI",
+"	e01c  Diva Server PRI Rev 3",
+"		1133 1c01  Diva Server PRI/E1/T1-8",
+"		1133 1c02  Diva Server PRI/T1-24",
+"		1133 1c03  Diva Server PRI/E1-30",
+"		1133 1c04  Diva Server PRI/E1/T1",
+"		1133 1c05  Diva Server V-PRI/T1-24",
+"		1133 1c06  Diva Server V-PRI/E1-30",
+"		1133 1c07  Diva Server PRI/E1/T1-8 Cornet NQ",
+"		1133 1c08  Diva Server PRI/T1-24 Cornet NQ",
+"		1133 1c09  Diva Server PRI/E1-30 Cornet NQ",
+"		1133 1c0a  Diva Server PRI/E1/T1 Cornet NQ",
+"		1133 1c0b  Diva Server V-PRI/T1-24 Cornet NQ",
+"		1133 1c0c  Diva Server V-PRI/E1-30 Cornet NQ",
+"	e01e  Diva Server 2PRI",
+"	e020  Diva Server 4PRI",
+"	e022  Diva Server Analog-2P",
+"	e024  Diva Server Analog-4P",
+"		1133 2400  Diva Server V-Analog-4P",
+"		1133 e024  Diva Server Analog-4P",
+"	e028  Diva Server Analog-8P",
+"		1133 2800  Diva Server V-Analog-8P",
+"		1133 e028  Diva Server Analog-8P",
+"	e02a  Diva Server IPM-300",
+"	e02c  Diva Server IPM-600",
+"1134  Mercury Computer Systems",
+"	0001  Raceway Bridge",
+"	0002  Dual PCI to RapidIO Bridge",
+"1135  Fuji Xerox Co Ltd",
+"	0001  Printer controller",
+"1136  Momentum Data Systems",
+"1137  Cisco Systems Inc",
+"1138  Ziatech Corporation",
+"	8905  8905 [STD 32 Bridge]",
+"1139  Dynamic Pictures, Inc",
+"	0001  VGA Compatable 3D Graphics",
+"113a  FWB Inc",
+"113b  Network Computing Devices",
+"113c  Cyclone Microsystems, Inc.",
+"	0000  PCI-9060 i960 Bridge",
+"	0001  PCI-SDK [PCI i960 Evaluation Platform]",
+"	0911  PCI-911 [i960Jx-based Intelligent I/O Controller]",
+"	0912  PCI-912 [i960CF-based Intelligent I/O Controller]",
+"	0913  PCI-913",
+"	0914  PCI-914 [I/O Controller w/ secondary PCI bus]",
+"113d  Leading Edge Products Inc",
+"113e  Sanyo Electric Co - Computer Engineering Dept",
+"113f  Equinox Systems, Inc.",
+"	0808  SST-64P Adapter",
+"	1010  SST-128P Adapter",
+"	80c0  SST-16P DB Adapter",
+"	80c4  SST-16P RJ Adapter",
+"	80c8  SST-16P Adapter",
+"	8888  SST-4P Adapter",
+"	9090  SST-8P Adapter",
+"1140  Intervoice Inc",
+"1141  Crest Microsystem Inc",
+"1142  Alliance Semiconductor Corporation",
+"	3210  AP6410",
+"	6422  ProVideo 6422",
+"	6424  ProVideo 6424",
+"	6425  ProMotion AT25",
+"	643d  ProMotion AT3D",
+"1143  NetPower, Inc",
+"1144  Cincinnati Milacron",
+"	0001  Noservo controller",
+"1145  Workbit Corporation",
+"	8007  NinjaSCSI-32 Workbit",
+"	f007  NinjaSCSI-32 KME",
+"	f010  NinjaSCSI-32 Workbit",
+"	f012  NinjaSCSI-32 Logitec",
+"	f013  NinjaSCSI-32 Logitec",
+"	f015  NinjaSCSI-32 Melco",
+"	f020  NinjaSCSI-32 Sony PCGA-DVD51",
+"1146  Force Computers",
+"1147  Interface Corp",
+"1148  SysKonnect",
+"	4000  FDDI Adapter",
+"		0e11 b03b  Netelligent 100 FDDI DAS Fibre SC",
+"		0e11 b03c  Netelligent 100 FDDI SAS Fibre SC",
+"		0e11 b03d  Netelligent 100 FDDI DAS UTP",
+"		0e11 b03e  Netelligent 100 FDDI SAS UTP",
+"		0e11 b03f  Netelligent 100 FDDI SAS Fibre MIC",
+"		1148 5521  FDDI SK-5521 (SK-NET FDDI-UP)",
+"		1148 5522  FDDI SK-5522 (SK-NET FDDI-UP DAS)",
+"		1148 5541  FDDI SK-5541 (SK-NET FDDI-FP)",
+"		1148 5543  FDDI SK-5543 (SK-NET FDDI-LP)",
+"		1148 5544  FDDI SK-5544 (SK-NET FDDI-LP DAS)",
+"		1148 5821  FDDI SK-5821 (SK-NET FDDI-UP64)",
+"		1148 5822  FDDI SK-5822 (SK-NET FDDI-UP64 DAS)",
+"		1148 5841  FDDI SK-5841 (SK-NET FDDI-FP64)",
+"		1148 5843  FDDI SK-5843 (SK-NET FDDI-LP64)",
+"		1148 5844  FDDI SK-5844 (SK-NET FDDI-LP64 DAS)",
+"	4200  Token Ring adapter",
+"	4300  SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link)",
+"		1148 9821  SK-9821 Gigabit Ethernet Server Adapter (SK-NET GE-T)",
+"		1148 9822  SK-9822 Gigabit Ethernet Server Adapter (SK-NET GE-T dual link)",
+"		1148 9841  SK-9841 Gigabit Ethernet Server Adapter (SK-NET GE-LX)",
+"		1148 9842  SK-9842 Gigabit Ethernet Server Adapter (SK-NET GE-LX dual link)",
+"		1148 9843  SK-9843 Gigabit Ethernet Server Adapter (SK-NET GE-SX)",
+"		1148 9844  SK-9844 Gigabit Ethernet Server Adapter (SK-NET GE-SX dual link)",
+"		1148 9861  SK-9861 Gigabit Ethernet Server Adapter (SK-NET GE-SX Volition)",
+"		1148 9862  SK-9862 Gigabit Ethernet Server Adapter (SK-NET GE-SX Volition dual link)",
+"		1148 9871  SK-9871 Gigabit Ethernet Server Adapter (SK-NET GE-ZX)",
+"		1148 9872  SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link)",
+"		1259 2970  AT-2970SX Gigabit Ethernet Adapter",
+"		1259 2971  AT-2970LX Gigabit Ethernet Adapter",
+"		1259 2972  AT-2970TX Gigabit Ethernet Adapter",
+"		1259 2973  AT-2971SX Gigabit Ethernet Adapter",
+"		1259 2974  AT-2971T Gigabit Ethernet Adapter",
+"		1259 2975  AT-2970SX/2SC Gigabit Ethernet Adapter",
+"		1259 2976  AT-2970LX/2SC Gigabit Ethernet Adapter",
+"		1259 2977  AT-2970TX/2TX Gigabit Ethernet Adapter",
+"	4320  SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter, PCI64, Fiber ZX/SC",
+"		1148 0121  Marvell RDK-8001 Adapter",
+"		1148 0221  Marvell RDK-8002 Adapter",
+"		1148 0321  Marvell RDK-8003 Adapter",
+"		1148 0421  Marvell RDK-8004 Adapter",
+"		1148 0621  Marvell RDK-8006 Adapter",
+"		1148 0721  Marvell RDK-8007 Adapter",
+"		1148 0821  Marvell RDK-8008 Adapter",
+"		1148 0921  Marvell RDK-8009 Adapter",
+"		1148 1121  Marvell RDK-8011 Adapter",
+"		1148 1221  Marvell RDK-8012 Adapter",
+"		1148 3221  SK-9521 V2.0 10/100/1000Base-T Adapter",
+"		1148 5021  SK-9821 V2.0 Gigabit Ethernet 10/100/1000Base-T Adapter",
+"		1148 5041  SK-9841 V2.0 Gigabit Ethernet 1000Base-LX Adapter",
+"		1148 5043  SK-9843 V2.0 Gigabit Ethernet 1000Base-SX Adapter",
+"		1148 5051  SK-9851 V2.0 Gigabit Ethernet 1000Base-SX Adapter",
+"		1148 5061  SK-9861 V2.0 Gigabit Ethernet 1000Base-SX Adapter",
+"		1148 5071  SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter",
+"		1148 9521  SK-9521 10/100/1000Base-T Adapter",
+"	4400  SK-9Dxx Gigabit Ethernet Adapter",
+"	4500  SK-9Mxx Gigabit Ethernet Adapter",
+"	9000  SK-9S21 10/100/1000Base-T Server Adapter, PCI-X, Copper RJ-45",
+"	9843  [Fujitsu] Gigabit Ethernet",
+"	9e00  SK-9E21D 10/100/1000Base-T Adapter, Copper RJ-45",
+"		1148 2100  SK-9E21 Server Adapter",
+"		1148 21d0  SK-9E21D 10/100/1000Base-T Adapter",
+"		1148 2200  SK-9E22 Server Adapter",
+"		1148 8100  SK-9E81 Server Adapter",
+"		1148 8200  SK-9E82 Server Adapter",
+"		1148 9100  SK-9E91 Server Adapter",
+"		1148 9200  SK-9E92 Server Adapter",
+"1149  Win System Corporation",
+"114a  VMIC",
+"	5579  VMIPCI-5579 (Reflective Memory Card)",
+"	5587  VMIPCI-5587 (Reflective Memory Card)",
+"	6504  VMIC PCI 7755 FPGA",
+"	7587  VMIVME-7587",
+"114b  Canopus Co., Ltd",
+"114c  Annabooks",
+"114d  IC Corporation",
+"114e  Nikon Systems Inc",
+"114f  Digi International",
+"	0002  AccelePort EPC",
+"	0003  RightSwitch SE-6",
+"	0004  AccelePort Xem",
+"	0005  AccelePort Xr",
+"	0006  AccelePort Xr,C/X",
+"	0009  AccelePort Xr/J",
+"	000a  AccelePort EPC/J",
+"	000c  DataFirePRIme T1 (1-port)",
+"	000d  SyncPort 2-Port (x.25/FR)",
+"	0011  AccelePort 8r EIA-232 (IBM)",
+"	0012  AccelePort 8r EIA-422",
+"	0014  AccelePort 8r EIA-422",
+"	0015  AccelePort Xem",
+"	0016  AccelePort EPC/X",
+"	0017  AccelePort C/X",
+"	001a  DataFirePRIme E1 (1-port)",
+"	001b  AccelePort C/X (IBM)",
+"	001d  DataFire RAS T1/E1/PRI",
+"		114f 0050  DataFire RAS E1 Adapter",
+"		114f 0051  DataFire RAS Dual E1 Adapter",
+"		114f 0052  DataFire RAS T1 Adapter",
+"		114f 0053  DataFire RAS Dual T1 Adapter",
+"	0023  AccelePort RAS",
+"	0024  DataFire RAS B4 ST/U",
+"		114f 0030  DataFire RAS BRI U Adapter",
+"		114f 0031  DataFire RAS BRI S/T Adapter",
+"	0026  AccelePort 4r 920",
+"	0027  AccelePort Xr 920",
+"	0028  ClassicBoard 4",
+"	0029  ClassicBoard 8",
+"	0034  AccelePort 2r 920",
+"	0035  DataFire DSP T1/E1/PRI cPCI",
+"	0040  AccelePort Xp",
+"	0042  AccelePort 2p",
+"	0043  AccelePort 4p",
+"	0044  AccelePort 8p",
+"	0045  AccelePort 16p",
+"	004e  AccelePort 32p",
+"	0070  Datafire Micro V IOM2 (Europe)",
+"	0071  Datafire Micro V (Europe)",
+"	0072  Datafire Micro V IOM2 (North America)",
+"	0073  Datafire Micro V (North America)",
+"	00b0  Digi Neo 4",
+"	00b1  Digi Neo 8",
+"	00c8  Digi Neo 2 DB9",
+"	00c9  Digi Neo 2 DB9 PRI",
+"	00ca  Digi Neo 2 RJ45",
+"	00cb  Digi Neo 2 RJ45 PRI",
+"	00d0  ClassicBoard 4 422",
+"	00d1  ClassicBoard 8 422",
+"	6001  Avanstar",
+"1150  Thinking Machines Corp",
+"1151  JAE Electronics Inc.",
+"1152  Megatek",
+"1153  Land Win Electronic Corp",
+"1154  Melco Inc",
+"1155  Pine Technology Ltd",
+"1156  Periscope Engineering",
+"1157  Avsys Corporation",
+"1158  Voarx R & D Inc",
+"	3011  Tokenet/vg 1001/10m anylan",
+"	9050  Lanfleet/Truevalue",
+"	9051  Lanfleet/Truevalue",
+"1159  Mutech Corp",
+"	0001  MV-1000",
+"115a  Harlequin Ltd",
+"115b  Parallax Graphics",
+"115c  Photron Ltd.",
+"115d  Xircom",
+"	0003  Cardbus Ethernet 10/100",
+"		1014 0181  10/100 EtherJet Cardbus Adapter",
+"		1014 1181  10/100 EtherJet Cardbus Adapter",
+"		1014 8181  10/100 EtherJet Cardbus Adapter",
+"		1014 9181  10/100 EtherJet Cardbus Adapter",
+"		115d 0181  Cardbus Ethernet 10/100",
+"		115d 0182  RealPort2 CardBus Ethernet 10/100 (R2BE-100)",
+"		115d 1181  Cardbus Ethernet 10/100",
+"		1179 0181  Cardbus Ethernet 10/100",
+"		8086 8181  EtherExpress PRO/100 Mobile CardBus 32 Adapter",
+"		8086 9181  EtherExpress PRO/100 Mobile CardBus 32 Adapter",
+"	0005  Cardbus Ethernet 10/100",
+"		1014 0182  10/100 EtherJet Cardbus Adapter",
+"		1014 1182  10/100 EtherJet Cardbus Adapter",
+"		115d 0182  Cardbus Ethernet 10/100",
+"		115d 1182  Cardbus Ethernet 10/100",
+"	0007  Cardbus Ethernet 10/100",
+"		1014 0182  10/100 EtherJet Cardbus Adapter",
+"		1014 1182  10/100 EtherJet Cardbus Adapter",
+"		115d 0182  Cardbus Ethernet 10/100",
+"		115d 1182  Cardbus Ethernet 10/100",
+"	000b  Cardbus Ethernet 10/100",
+"		1014 0183  10/100 EtherJet Cardbus Adapter",
+"		115d 0183  Cardbus Ethernet 10/100",
+"	000c  Mini-PCI V.90 56k Modem",
+"	000f  Cardbus Ethernet 10/100",
+"		1014 0183  10/100 EtherJet Cardbus Adapter",
+"		115d 0183  Cardbus Ethernet 10/100",
+"	00d4  Mini-PCI K56Flex Modem",
+"	0101  Cardbus 56k modem",
+"		115d 1081  Cardbus 56k Modem",
+"	0103  Cardbus Ethernet + 56k Modem",
+"		1014 9181  Cardbus 56k Modem",
+"		1115 1181  Cardbus Ethernet 100 + 56k Modem",
+"		115d 1181  CBEM56G-100 Ethernet + 56k Modem",
+"		8086 9181  PRO/100 LAN + Modem56 CardBus",
+"115e  Peer Protocols Inc",
+"115f  Maxtor Corporation",
+"1160  Megasoft Inc",
+"1161  PFU Limited",
+"1162  OA Laboratory Co Ltd",
+"1163  Rendition",
+"	0001  Verite 1000",
+"	2000  Verite V2000/V2100/V2200",
+"		1092 2000  Stealth II S220",
+"1164  Advanced Peripherals Technologies",
+"1165  Imagraph Corporation",
+"	0001  Motion TPEG Recorder/Player with audio",
+"1166  Broadcom",
+"	0000  CMIC-LE",
+"	0005  CNB20-LE Host Bridge",
+"	0006  CNB20HE Host Bridge",
+"	0007  CNB20-LE Host Bridge",
+"	0008  CNB20HE Host Bridge",
+"	0009  CNB20LE Host Bridge",
+"	0010  CIOB30",
+"	0011  CMIC-HE",
+"	0012  CMIC-WS Host Bridge (GC-LE chipset)",
+"	0013  CNB20-HE Host Bridge",
+"	0014  CMIC-LE Host Bridge (GC-LE chipset)",
+"	0015  CMIC-GC Host Bridge",
+"	0016  CMIC-GC Host Bridge",
+"	0017  GCNB-LE Host Bridge",
+"	0036  HT1000 PCI/PCI-X bridge",
+"	0101  CIOB-X2 PCI-X I/O Bridge",
+"	0104  HT1000 PCI/PCI-X bridge",
+"	0110  CIOB-E I/O Bridge with Gigabit Ethernet",
+"	0130  HT1000 PCI-X bridge",
+"	0132  HT1000 PCI-Express bridge",
+"	0200  OSB4 South Bridge",
+"	0201  CSB5 South Bridge",
+"		4c53 1080  CT8 mainboard",
+"	0203  CSB6 South Bridge",
+"		1734 1012  Primergy RX300",
+"	0205  HT1000 Legacy South Bridge",
+"	0211  OSB4 IDE Controller",
+"	0212  CSB5 IDE Controller",
+"		4c53 1080  CT8 mainboard",
+"	0213  CSB6 RAID/IDE Controller",
+"		1028 c134  Poweredge SC600",
+"		1734 1012  Primergy RX300",
+"	0214  HT1000 Legacy IDE controller",
+"	0217  CSB6 IDE Controller",
+"		1028 4134  Poweredge SC600",
+"	0220  OSB4/CSB5 OHCI USB Controller",
+"		4c53 1080  CT8 mainboard",
+"	0221  CSB6 OHCI USB Controller",
+"		1734 1012  Primergy RX300",
+"	0223  HT1000 USB Controller",
+"	0225  CSB5 LPC bridge",
+"	0227  GCLE-2 Host Bridge",
+"		1734 1012  Primergy RX300",
+"	0230  CSB5 LPC bridge",
+"		4c53 1080  CT8 mainboard",
+"	0234  HT1000 LPC Bridge",
+"	0240  K2 SATA",
+"	0241  RAIDCore RC4000",
+"	0242  RAIDCore BC4000",
+"	024a  BCM5785 (HT1000) SATA Native SATA Mode",
+"	024b  BCM5785 (HT1000) PATA/IDE Mode",
+"1167  Mutoh Industries Inc",
+"1168  Thine Electronics Inc",
+"1169  Centre for Development of Advanced Computing",
+"116a  Polaris Communications",
+"	6100  Bus/Tag Channel",
+"	6800  Escon Channel",
+"	7100  Bus/Tag Channel",
+"	7800  Escon Channel",
+"116b  Connectware Inc",
+"116c  Intelligent Resources Integrated Systems",
+"116d  Martin-Marietta",
+"116e  Electronics for Imaging",
+"116f  Workstation Technology",
+"1170  Inventec Corporation",
+"1171  Loughborough Sound Images Plc",
+"1172  Altera Corporation",
+"1173  Adobe Systems, Inc",
+"1174  Bridgeport Machines",
+"1175  Mitron Computer Inc.",
+"1176  SBE Incorporated",
+"1177  Silicon Engineering",
+"1178  Alfa, Inc.",
+"	afa1  Fast Ethernet Adapter",
+"1179  Toshiba America Info Systems",
+"	0102  Extended IDE Controller",
+"	0103  EX-IDE Type-B",
+"	0404  DVD Decoder card",
+"	0406  Tecra Video Capture device",
+"	0407  DVD Decoder card (Version 2)",
+"	0601  CPU to PCI bridge",
+"		1179 0001  Satellite Pro",
+"	0603  ToPIC95 PCI to CardBus Bridge for Notebooks",
+"	060a  ToPIC95",
+"		1179 0001  Satellite Pro",
+"	060f  ToPIC97",
+"	0617  ToPIC100 PCI to Cardbus Bridge with ZV Support",
+"	0618  CPU to PCI and PCI to ISA bridge",
+"	0701  FIR Port",
+"	0804  TC6371AF SmartMedia Controller",
+"	0805  SD TypA Controller",
+"	0d01  FIR Port Type-DO",
+"		1179 0001  FIR Port Type-DO",
+"117a  A-Trend Technology",
+"117b  L G Electronics, Inc.",
+"117c  Atto Technology",
+"	0030  Ultra320 SCSI Host Adapter",
+"		117c 8013  ExpressPCI UL4D",
+"		117c 8014  ExpressPCI UL4S",
+"117d  Becton & Dickinson",
+"117e  T/R Systems",
+"117f  Integrated Circuit Systems",
+"1180  Ricoh Co Ltd",
+"	0465  RL5c465",
+"	0466  RL5c466",
+"	0475  RL5c475",
+"		144d c006  vpr Matrix 170B4 CardBus bridge",
+"	0476  RL5c476 II",
+"		1014 0185  ThinkPad A/T/X Series",
+"		1028 0188  Inspiron 6000 laptop",
+"		1043 1967  V6800V",
+"		1043 1987  Asus A4K and Z81K notebooks, possibly others ( mid-2005 machines )",
+"		104d 80df  Vaio PCG-FX403",
+"		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP",
+"		144d c00c  P35 notebook",
+"		14ef 0220  PCD-RP-220S",
+"		17aa 201c  Thinkpad X60s",
+"	0477  RL5c477",
+"	0478  RL5c478",
+"		1014 0184  ThinkPad A30p (2653-64G)",
+"	0511  R5C511",
+"	0522  R5C522 IEEE 1394 Controller",
+"		1014 01cf  ThinkPad A30p (2653-64G)",
+"		1043 1967  V6800V",
+"	0551  R5C551 IEEE 1394 Controller",
+"		144d c006  vpr Matrix 170B4",
+"	0552  R5C552 IEEE 1394 Controller",
+"		1014 0511  ThinkPad A/T/X Series",
+"		1028 0188  Inspiron 6000 laptop",
+"		144d c00c  P35 notebook",
+"		17aa 201e  Thinkpad X60s",
+"	0554  R5C554",
+"	0575  R5C575 SD Bus Host Adapter",
+"	0576  R5C576 SD Bus Host Adapter",
+"	0592  R5C592 Memory Stick Bus Host Adapter",
+"		1043 1967  V6800V",
+"		144d c018  X20 IV",
+"	0811  R5C811",
+"	0822  R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter",
+"		1014 0556  Thinkpad X40",
+"		1014 0598  Thinkpad Z60m",
+"		1028 0188  Inspiron 6000 laptop",
+"		1028 01a2  Inspiron 9200",
+"		1043 1967  ASUS V6800V",
+"		144d c018  X20 IV",
+"		17aa 201d  Thinkpad X60s",
+"	0841  R5C841 CardBus/SD/SDIO/MMC/MS/MSPro/xD/IEEE1394",
+"	0852  xD-Picture Card Controller",
+"		1043 1967  V6800V",
+"1181  Telmatics International",
+"1183  Fujikura Ltd",
+"1184  Forks Inc",
+"1185  Dataworld International Ltd",
+"1186  D-Link System Inc",
+"	0100  DC21041",
+"	1002  DL10050 Sundance Ethernet",
+"		1186 1002  DFE-550TX",
+"		1186 1012  DFE-580TX",
+"	1025  AirPlus Xtreme G DWL-G650 Adapter",
+"	1026  AirXpert DWL-AG650 Wireless Cardbus Adapter",
+"	1043  AirXpert DWL-AG650 Wireless Cardbus Adapter",
+"	1300  RTL8139 Ethernet",
+"		1186 1300  DFE-538TX 10/100 Ethernet Adapter",
+"		1186 1301  DFE-530TX+ 10/100 Ethernet Adapter",
+"		1186 1303  DFE-528TX 10/100 Fast Ethernet PCI Adapter",
+"	1340  DFE-690TXD CardBus PC Card",
+"	1541  DFE-680TXD CardBus PC Card",
+"	1561  DRP-32TXD Cardbus PC Card",
+"	2027  AirPlus Xtreme G DWL-G520 Adapter",
+"	3203  AirPlus Xtreme G DWL-G520 Adapter",
+"	3300  DWL-510 2.4GHz Wireless PCI Adapter",
+"	3a03  AirPro DWL-A650 Wireless Cardbus Adapter(rev.B)",
+"	3a04  AirPro DWL-AB650 Multimode Wireless Cardbus Adapter",
+"	3a05  AirPro DWL-AB520 Multimode Wireless PCI Adapter",
+"	3a07  AirXpert DWL-AG650 Wireless Cardbus Adapter",
+"	3a08  AirXpert DWL-AG520 Wireless PCI Adapter",
+"	3a10  AirXpert DWL-AG650 Wireless Cardbus Adapter(rev.B)",
+"	3a11  AirXpert DWL-AG520 Wireless PCI Adapter(rev.B)",
+"	3a12  AirPlus DWL-G650 Wireless Cardbus Adapter(rev.C)",
+"	3a13  AirPlus DWL-G520 Wireless PCI Adapter(rev.B)",
+"	3a14  AirPremier DWL-AG530 Wireless PCI Adapter",
+"	3a63  AirXpert DWL-AG660 Wireless Cardbus Adapter",
+"	4000  DL2000-based Gigabit Ethernet",
+"	4300  DGE-528T Gigabit Ethernet Adapter",
+"	4b01  DGE-530T Gigabit Ethernet Adapter (rev 11)",
+"	4c00  Gigabit Ethernet Adapter",
+"		1186 4c00  DGE-530T Gigabit Ethernet Adapter",
+"	8400  D-Link DWL-650+ CardBus PC Card",
+"1187  Advanced Technology Laboratories, Inc.",
+"1188  Shima Seiki Manufacturing Ltd.",
+"1189  Matsushita Electronics Co Ltd",
+"118a  Hilevel Technology",
+"118b  Hypertec Pty Limited",
+"118c  Corollary, Inc",
+"	0014  PCIB [C-bus II to PCI bus host bridge chip]",
+"	1117  Intel 8-way XEON Profusion Chipset [Cache Coherency Filter]",
+"118d  BitFlow Inc",
+"	0001  Raptor-PCI framegrabber",
+"	0012  Model 12 Road Runner Frame Grabber",
+"	0014  Model 14 Road Runner Frame Grabber",
+"	0024  Model 24 Road Runner Frame Grabber",
+"	0044  Model 44 Road Runner Frame Grabber",
+"	0112  Model 12 Road Runner Frame Grabber",
+"	0114  Model 14 Road Runner Frame Grabber",
+"	0124  Model 24 Road Runner Frame Grabber",
+"	0144  Model 44 Road Runner Frame Grabber",
+"	0212  Model 12 Road Runner Frame Grabber",
+"	0214  Model 14 Road Runner Frame Grabber",
+"	0224  Model 24 Road Runner Frame Grabber",
+"	0244  Model 44 Road Runner Frame Grabber",
+"	0312  Model 12 Road Runner Frame Grabber",
+"	0314  Model 14 Road Runner Frame Grabber",
+"	0324  Model 24 Road Runner Frame Grabber",
+"	0344  Model 44 Road Runner Frame Grabber",
+"118e  Hermstedt GmbH",
+"118f  Green Logic",
+"1190  Tripace",
+"	c731  TP-910/920/940 PCI Ultra(Wide) SCSI Adapter",
+"1191  Artop Electronic Corp",
+"	0003  SCSI Cache Host Adapter",
+"	0004  ATP8400",
+"	0005  ATP850UF",
+"	0006  ATP860 NO-BIOS",
+"	0007  ATP860",
+"	0008  ATP865 NO-ROM",
+"	0009  ATP865",
+"	8002  AEC6710 SCSI-2 Host Adapter",
+"	8010  AEC6712UW SCSI",
+"	8020  AEC6712U SCSI",
+"	8030  AEC6712S SCSI",
+"	8040  AEC6712D SCSI",
+"	8050  AEC6712SUW SCSI",
+"	8060  AEC6712 SCSI",
+"	8080  AEC67160 SCSI",
+"	8081  AEC67160S SCSI",
+"	808a  AEC67162 2-ch. LVD SCSI",
+"1192  Densan Company Ltd",
+"1193  Zeitnet Inc.",
+"	0001  1221",
+"	0002  1225",
+"1194  Toucan Technology",
+"1195  Ratoc System Inc",
+"1196  Hytec Electronics Ltd",
+"1197  Gage Applied Sciences, Inc.",
+"	010c  CompuScope 82G 8bit 2GS/s Analog Input Card",
+"1198  Lambda Systems Inc",
+"1199  Attachmate Corporation",
+"119a  Mind Share, Inc.",
+"119b  Omega Micro Inc.",
+"	1221  82C092G",
+"119c  Information Technology Inst.",
+"119d  Bug, Inc. Sapporo Japan",
+"119e  Fujitsu Microelectronics Ltd.",
+"	0001  FireStream 155",
+"	0003  FireStream 50",
+"119f  Bull HN Information Systems",
+"11a0  Convex Computer Corporation",
+"11a1  Hamamatsu Photonics K.K.",
+"11a2  Sierra Research and Technology",
+"11a3  Deuretzbacher GmbH & Co. Eng. KG",
+"11a4  Barco Graphics NV",
+"11a5  Microunity Systems Eng. Inc",
+"11a6  Pure Data Ltd.",
+"11a7  Power Computing Corp.",
+"11a8  Systech Corp.",
+"11a9  InnoSys Inc.",
+"	4240  AMCC S933Q Intelligent Serial Card",
+"11aa  Actel",
+"11ab  Marvell Technology Group Ltd.",
+"	0146  GT-64010/64010A System Controller",
+"	138f  W8300 802.11 Adapter (rev 07)",
+"	1fa6  Marvell W8300 802.11 Adapter",
+"	1fa7  88W8310 and 88W8000G [Libertas] 802.11g client chipset",
+"	1faa  88w8335 [Libertas] 802.11b/g Wireless",
+"		1385 4e00  WG511 v2 54MBit/ Wireless PC-Card",
+"	4320  88E8001 Gigabit Ethernet Controller",
+"		1019 0f38  Marvell 88E8001 Gigabit Ethernet Controller (ECS)",
+"		1019 8001  Marvell 88E8001 Gigabit Ethernet Controller (ECS)",
+"		1043 173c  Marvell 88E8001 Gigabit Ethernet Controller (Asus)",
+"		1043 811a  Marvell 88E8001 Gigabit Ethernet Controller (Asus)",
+"		105b 0c19  Marvell 88E8001 Gigabit Ethernet Controller (Foxconn)",
+"		10b8 b452  EZ Card 1000 (SMC9452TXV.2)",
+"		11ab 0121  Marvell RDK-8001",
+"		11ab 0321  Marvell RDK-8003",
+"		11ab 1021  Marvell RDK-8010",
+"		11ab 4320  Marvell Yukon Gigabit Ethernet 10/100/1000Baset-T Constroller (Asus)",
+"		11ab 5021  Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Controller (64 bit)",
+"		11ab 9521  Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Controller (32 bit)",
+"		1458 e000  Marvell 88E8001 Gigabit Ethernet Controller (Gigabyte)",
+"		147b 1406  Marvell 88E8001 Gigabit Ethernet Controller (Abit)",
+"		15d4 0047  Marvell 88E8001 Gigabit Ethernet Controller (Iwill)",
+"		1695 9025  Marvell 88E8001 Gigabit Ethernet Controller (Epox)",
+"		17f2 1c03  Marvell 88E8001 Gigabit Ethernet Controller (Albatron)",
+"		270f 2803  Marvell 88E8001 Gigabit Ethernet Controller (Chaintech)",
+"	4340  88E8021 PCI-X IPMI Gigabit Ethernet Controller",
+"	4341  88E8022 PCI-X IPMI Gigabit Ethernet Controller",
+"	4342  88E8061 PCI-E IPMI Gigabit Ethernet Controller",
+"	4343  88E8062 PCI-E IPMI Gigabit Ethernet Controller",
+"	4344  88E8021 PCI-X IPMI Gigabit Ethernet Controller",
+"	4345  88E8022 PCI-X IPMI Gigabit Ethernet Controller",
+"	4346  88E8061 PCI-E IPMI Gigabit Ethernet Controller",
+"	4347  88E8062 PCI-E IPMI Gigabit Ethernet Controller",
+"	4350  88E8035 PCI-E Fast Ethernet Controller",
+"		1179 0001  Marvell 88E8035 Fast Ethernet Controller (Toshiba)",
+"		11ab 3521  Marvell RDK-8035",
+"		1854 000d  Marvell 88E8035 Fast Ethernet Controller (LGE)",
+"		1854 000e  Marvell 88E8035 Fast Ethernet Controller (LGE)",
+"		1854 000f  Marvell 88E8035 Fast Ethernet Controller (LGE)",
+"		1854 0011  Marvell 88E8035 Fast Ethernet Controller (LGE)",
+"		1854 0012  Marvell 88E8035 Fast Ethernet Controller (LGE)",
+"		1854 0016  Marvell 88E8035 Fast Ethernet Controller (LGE)",
+"		1854 0017  Marvell 88E8035 Fast Ethernet Controller (LGE)",
+"		1854 0018  Marvell 88E8035 Fast Ethernet Controller (LGE)",
+"		1854 0019  Marvell 88E8035 Fast Ethernet Controller (LGE)",
+"		1854 001c  Marvell 88E8035 Fast Ethernet Controller (LGE)",
+"		1854 001e  Marvell 88E8035 Fast Ethernet Controller (LGE)",
+"		1854 0020  Marvell 88E8035 Fast Ethernet Controller (LGE)",
+"	4351  88E8036 PCI-E Fast Ethernet Controller",
+"		107b 4009  Marvell 88E8036 Fast Ethernet Controller (Wistron)",
+"		10f7 8338  Marvell 88E8036 Fast Ethernet Controller (Panasonic)",
+"		1179 0001  Marvell 88E8036 Fast Ethernet Controller (Toshiba)",
+"		1179 ff00  Marvell 88E8036 Fast Ethernet Controller (Compal)",
+"		1179 ff10  Marvell 88E8036 Fast Ethernet Controller (Inventec)",
+"		11ab 3621  Marvell RDK-8036",
+"		13d1 ac12  Abocom EFE3K - 10/100 Ethernet Expresscard",
+"		161f 203d  Marvell 88E8036 Fast Ethernet Controller (Arima)",
+"		1854 000d  Marvell 88E8036 Fast Ethernet Controller (LGE)",
+"		1854 000e  Marvell 88E8036 Fast Ethernet Controller (LGE)",
+"		1854 000f  Marvell 88E8036 Fast Ethernet Controller (LGE)",
+"		1854 0011  Marvell 88E8036 Fast Ethernet Controller (LGE)",
+"		1854 0012  Marvell 88E8036 Fast Ethernet Controller (LGE)",
+"		1854 0016  Marvell 88E8036 Fast Ethernet Controller (LGE)",
+"		1854 0017  Marvell 88E8036 Fast Ethernet Controller (LGE)",
+"		1854 0018  Marvell 88E8036 Fast Ethernet Controller (LGE)",
+"		1854 0019  Marvell 88E8036 Fast Ethernet Controller (LGE)",
+"		1854 001c  Marvell 88E8036 Fast Ethernet Controller (LGE)",
+"		1854 001e  Marvell 88E8036 Fast Ethernet Controller (LGE)",
+"		1854 0020  Marvell 88E8036 Fast Ethernet Controller (LGE)",
+"	4352  88E8038 PCI-E Fast Ethernet Controller",
+"	4360  88E8052 PCI-E ASF Gigabit Ethernet Controller",
+"		1043 8134  Marvell 88E8052 Gigabit Ethernet Controller (Asus)",
+"		107b 4009  Marvell 88E8052 Gigabit Ethernet Controller (Wistron)",
+"		11ab 5221  Marvell RDK-8052",
+"		1458 e000  Marvell 88E8052 Gigabit Ethernet Controller (Gigabyte)",
+"		1462 052c  Marvell 88E8052 Gigabit Ethernet Controller (MSI)",
+"		1849 8052  Marvell 88E8052 Gigabit Ethernet Controller (ASRock)",
+"		a0a0 0509  Marvell 88E8052 Gigabit Ethernet Controller (Aopen)",
+"	4361  88E8050 PCI-E ASF Gigabit Ethernet Controller",
+"		107b 3015  Marvell 88E8050 Gigabit Ethernet Controller (Gateway)",
+"		11ab 5021  Marvell 88E8050 Gigabit Ethernet Controller (Intel)",
+"		8086 3063  D925XCVLK mainboard",
+"		8086 3439  Marvell 88E8050 Gigabit Ethernet Controller (Intel)",
+"	4362  88E8053 PCI-E Gigabit Ethernet Controller",
+"		103c 2a0d  Marvell 88E8053 Gigabit Ethernet Controller (Asus)",
+"		1043 8142  Marvell 88E8053 Gigabit Ethernet controller PCIe (Asus)",
+"		109f 3197  Marvell 88E8053 Gigabit Ethernet Controller (Trigem)",
+"		10f7 8338  Marvell 88E8053 Gigabit Ethernet Controller (Panasonic)",
+"		10fd a430  Marvell 88E8053 Gigabit Ethernet Controller (SOYO)",
+"		1179 0001  Marvell 88E8053 Gigabit Ethernet Controller (Toshiba)",
+"		1179 ff00  Marvell 88E8053 Gigabit Ethernet Controller (Compal)",
+"		1179 ff10  Marvell 88E8053 Gigabit Ethernet Controller (Inventec)",
+"		11ab 5321  Marvell RDK-8053",
+"		1297 c240  Marvell 88E8053 Gigabit Ethernet Controller (Shuttle)",
+"		1297 c241  Marvell 88E8053 Gigabit Ethernet Controller (Shuttle)",
+"		1297 c242  Marvell 88E8053 Gigabit Ethernet Controller (Shuttle)",
+"		1297 c243  Marvell 88E8053 Gigabit Ethernet Controller (Shuttle)",
+"		1297 c244  Marvell 88E8053 Gigabit Ethernet Controller (Shuttle)",
+"		13d1 ac11  EGE5K - Giga Ethernet Expresscard",
+"		1458 e000  Marvell 88E8053 Gigabit Ethernet Controller (Gigabyte)",
+"		1462 058c  Marvell 88E8053 Gigabit Ethernet Controller (MSI)",
+"		14c0 0012  Marvell 88E8053 Gigabit Ethernet Controller (Compal)",
+"		1558 04a0  Marvell 88E8053 Gigabit Ethernet Controller (Clevo)",
+"		15bd 1003  Marvell 88E8053 Gigabit Ethernet Controller (DFI)",
+"		161f 203c  Marvell 88E8053 Gigabit Ethernet Controller (Arima)",
+"		161f 203d  Marvell 88E8053 Gigabit Ethernet Controller (Arima)",
+"		1695 9029  Marvell 88E8053 Gigabit Ethernet Controller (Epox)",
+"		17f2 2c08  Marvell 88E8053 Gigabit Ethernet Controller (Albatron)",
+"		17ff 0585  Marvell 88E8053 Gigabit Ethernet Controller (Quanta)",
+"		1849 8053  Marvell 88E8053 Gigabit Ethernet Controller (ASRock)",
+"		1854 000b  Marvell 88E8053 Gigabit Ethernet Controller (LGE)",
+"		1854 000c  Marvell 88E8053 Gigabit Ethernet Controller (LGE)",
+"		1854 0010  Marvell 88E8053 Gigabit Ethernet Controller (LGE)",
+"		1854 0013  Marvell 88E8053 Gigabit Ethernet Controller (LGE)",
+"		1854 0014  Marvell 88E8053 Gigabit Ethernet Controller (LGE)",
+"		1854 0015  Marvell 88E8053 Gigabit Ethernet Controller (LGE)",
+"		1854 001a  Marvell 88E8053 Gigabit Ethernet Controller (LGE)",
+"		1854 001b  Marvell 88E8053 Gigabit Ethernet Controller (LGE)",
+"		1854 001d  Marvell 88E8053 Gigabit Ethernet Controller (LGE)",
+"		1854 001f  Marvell 88E8053 Gigabit Ethernet Controller (LGE)",
+"		1854 0021  Marvell 88E8053 Gigabit Ethernet Controller (LGE)",
+"		1854 0022  Marvell 88E8053 Gigabit Ethernet Controller (LGE)",
+"		270f 2801  Marvell 88E8053 Gigabit Ethernet Controller (Chaintech)",
+"		a0a0 0506  Marvell 88E8053 Gigabit Ethernet Controller (Aopen)",
+"	4363  88E8055 PCI-E Gigabit Ethernet Controller",
+"	4611  GT-64115 System Controller",
+"	4620  GT-64120/64120A/64121A System Controller",
+"	4801  GT-48001",
+"	5005  Belkin F5D5005 Gigabit Desktop Network PCI Card",
+"	5040  MV88SX5040 4-port SATA I PCI-X Controller",
+"	5041  MV88SX5041 4-port SATA I PCI-X Controller",
+"	5080  MV88SX5080 8-port SATA I PCI-X Controller",
+"	5081  MV88SX5081 8-port SATA I PCI-X Controller",
+"	6041  MV88SX6041 4-port SATA II PCI-X Controller",
+"	6081  MV88SX6081 8-port SATA II PCI-X Controller",
+"	6460  MV64360/64361/64362 System Controller",
+"	6480  MV64460/64461/64462 System Controller",
+"	f003  GT-64010 Primary Image Piranha Image Generator",
+"11ac  Canon Information Systems Research Aust.",
+"11ad  Lite-On Communications Inc",
+"	0002  LNE100TX",
+"		11ad 0002  LNE100TX",
+"		11ad 0003  LNE100TX",
+"		11ad f003  LNE100TX",
+"		11ad ffff  LNE100TX",
+"		1385 f004  FA310TX",
+"	c115  LNE100TX [Linksys EtherFast 10/100]",
+"		11ad c001  LNE100TX [ver 2.0]",
+"11ae  Aztech System Ltd",
+"11af  Avid Technology Inc.",
+"	0001  Cinema",
+"	ee40  Digidesign Audiomedia III",
+"11b0  V3 Semiconductor Inc.",
+"	0002  V300PSC",
+"	0292  V292PBC [Am29030/40 Bridge]",
+"	0960  V96xPBC",
+"	c960  V96DPC",
+"11b1  Apricot Computers",
+"11b2  Eastman Kodak",
+"11b3  Barr Systems Inc.",
+"11b4  Leitch Technology International",
+"11b5  Radstone Technology Plc",
+"11b6  United Video Corp",
+"11b7  Motorola",
+"11b8  XPoint Technologies, Inc",
+"	0001  Quad PeerMaster",
+"11b9  Pathlight Technology Inc.",
+"	c0ed  SSA Controller",
+"11ba  Videotron Corp",
+"11bb  Pyramid Technology",
+"11bc  Network Peripherals Inc",
+"	0001  NP-PCI",
+"11bd  Pinnacle Systems Inc.",
+"	002e  PCTV 40i",
+"	bede  AV/DV Studio Capture Card",
+"11be  International Microcircuits Inc",
+"11bf  Astrodesign, Inc.",
+"11c0  Hewlett Packard",
+"11c1  Agere Systems",
+"	0440  56k WinModem",
+"		1033 8015  LT WinModem 56k Data+Fax+Voice+Dsvd",
+"		1033 8047  LT WinModem 56k Data+Fax+Voice+Dsvd",
+"		1033 804f  LT WinModem 56k Data+Fax+Voice+Dsvd",
+"		10cf 102c  LB LT Modem V.90 56k",
+"		10cf 104a  BIBLO LT Modem 56k",
+"		10cf 105f  LB2 LT Modem V.90 56k",
+"		1179 0001  Internal V.90 Modem",
+"		11c1 0440  LT WinModem 56k Data+Fax+Voice+Dsvd",
+"		122d 4101  MDP7800-U Modem",
+"		122d 4102  MDP7800SP-U Modem",
+"		13e0 0040  LT WinModem 56k Data+Fax+Voice+Dsvd",
+"		13e0 0440  LT WinModem 56k Data+Fax+Voice+Dsvd",
+"		13e0 0441  LT WinModem 56k Data+Fax+Voice+Dsvd",
+"		13e0 0450  LT WinModem 56k Data+Fax+Voice+Dsvd",
+"		13e0 f100  LT WinModem 56k Data+Fax+Voice+Dsvd",
+"		13e0 f101  LT WinModem 56k Data+Fax+Voice+Dsvd",
+"		144d 2101  LT56PV Modem",
+"		149f 0440  LT WinModem 56k Data+Fax+Voice+Dsvd",
+"	0441  56k WinModem",
+"		1033 804d  LT WinModem 56k Data+Fax",
+"		1033 8065  LT WinModem 56k Data+Fax",
+"		1092 0440  Supra 56i",
+"		1179 0001  Internal V.90 Modem",
+"		11c1 0440  LT WinModem 56k Data+Fax",
+"		11c1 0441  LT WinModem 56k Data+Fax",
+"		122d 4100  MDP7800-U Modem",
+"		13e0 0040  LT WinModem 56k Data+Fax",
+"		13e0 0100  LT WinModem 56k Data+Fax",
+"		13e0 0410  LT WinModem 56k Data+Fax",
+"		13e0 0420  TelePath Internet 56k WinModem",
+"		13e0 0440  LT WinModem 56k Data+Fax",
+"		13e0 0443  LT WinModem 56k Data+Fax",
+"		13e0 f102  LT WinModem 56k Data+Fax",
+"		1416 9804  CommWave 56k Modem",
+"		141d 0440  LT WinModem 56k Data+Fax",
+"		144f 0441  Lucent 56k V.90 DF Modem",
+"		144f 0449  Lucent 56k V.90 DF Modem",
+"		144f 110d  Lucent Win Modem",
+"		1468 0441  Presario 56k V.90 DF Modem",
+"		1668 0440  Lucent Win Modem",
+"	0442  56k WinModem",
+"		11c1 0440  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd",
+"		11c1 0442  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd",
+"		13e0 0412  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd",
+"		13e0 0442  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd",
+"		13fc 2471  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd",
+"		144d 2104  LT56PT Modem",
+"		144f 1104  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd",
+"		149f 0440  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd",
+"		1668 0440  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd",
+"	0443  LT WinModem",
+"	0444  LT WinModem",
+"	0445  LT WinModem",
+"		8086 2203  PRO/100+ MiniPCI (probably an Ambit U98.003.C.00 combo card)",
+"		8086 2204  PRO/100+ MiniPCI on Armada E500",
+"	0446  LT WinModem",
+"	0447  LT WinModem",
+"	0448  WinModem 56k",
+"		1014 0131  Lucent Win Modem",
+"		1033 8066  LT WinModem 56k Data+Fax+Voice+Dsvd",
+"		13e0 0030  56k Voice Modem",
+"		13e0 0040  LT WinModem 56k Data+Fax+Voice+Dsvd",
+"		1668 2400  LT WinModem 56k (MiniPCI Ethernet+Modem)",
+"	0449  WinModem 56k",
+"		0e11 b14d  56k V.90 Modem",
+"		13e0 0020  LT WinModem 56k Data+Fax",
+"		13e0 0041  TelePath Internet 56k WinModem",
+"		1436 0440  Lucent Win Modem",
+"		144f 0449  Lucent 56k V.90 DFi Modem",
+"		1468 0410  IBM ThinkPad T23 (2647-4MG)",
+"		1468 0440  Lucent Win Modem",
+"		1468 0449  Presario 56k V.90 DFi Modem",
+"	044a  F-1156IV WinModem (V90, 56KFlex)",
+"		10cf 1072  LB Global LT Modem",
+"		13e0 0012  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd",
+"		13e0 0042  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd",
+"		144f 1005  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd",
+"	044b  LT WinModem",
+"	044c  LT WinModem",
+"	044d  LT WinModem",
+"	044e  LT WinModem",
+"	044f  V90 WildWire Modem",
+"	0450  LT WinModem",
+"		1033 80a8  Versa Note Vxi",
+"		144f 4005  Magnia SG20",
+"		1468 0450  Evo N600c",
+"		4005 144f  LifeBook C Series",
+"	0451  LT WinModem",
+"	0452  LT WinModem",
+"	0453  LT WinModem",
+"	0454  LT WinModem",
+"	0455  LT WinModem",
+"	0456  LT WinModem",
+"	0457  LT WinModem",
+"	0458  LT WinModem",
+"	0459  LT WinModem",
+"	045a  LT WinModem",
+"	045c  LT WinModem",
+"	0461  V90 WildWire Modem",
+"	0462  V90 WildWire Modem",
+"	0480  Venus Modem (V90, 56KFlex)",
+"	048c  V.92 56K WinModem",
+"	048f  V.92 56k WinModem",
+"	5801  USB",
+"	5802  USS-312 USB Controller",
+"	5803  USS-344S USB Controller",
+"	5811  FW323",
+"		8086 524c  D865PERL mainboard",
+"		dead 0800  FireWire Host Bus Adapter",
+"	8110  T8110 H.100/H.110 TDM switch",
+"		12d9 000c  E1/T1 PMXc cPCI carrier card",
+"	ab10  WL60010 Wireless LAN MAC",
+"	ab11  WL60040 Multimode Wireles LAN MAC",
+"		11c1 ab12  WaveLAN 11abg Cardbus card (Model 1102)",
+"		11c1 ab13  WaveLAN 11abg MiniPCI card (Model 0512)",
+"		11c1 ab15  WaveLAN 11abg Cardbus card (Model 1106)",
+"		11c1 ab16  WaveLAN 11abg MiniPCI card (Model 0516)",
+"	ab20  ORiNOCO PCI Adapter",
+"	ab21  Agere Wireless PCI Adapter",
+"	ab30  Hermes2 Mini-PCI WaveLAN a/b/g",
+"		14cd 2012  Hermes2 Mini-PCI WaveLAN a/b/g",
+"	ed00  ET-131x PCI-E Ethernet Controller",
+"11c2  Sand Microelectronics",
+"11c3  NEC Corporation",
+"11c4  Document Technologies, Inc",
+"11c5  Shiva Corporation",
+"11c6  Dainippon Screen Mfg. Co. Ltd",
+"11c7  D.C.M. Data Systems",
+"11c8  Dolphin Interconnect Solutions AS",
+"	0658  PSB32 SCI-Adapter D31x",
+"	d665  PSB64 SCI-Adapter D32x",
+"	d667  PSB66 SCI-Adapter D33x",
+"11c9  Magma",
+"	0010  16-line serial port w/- DMA",
+"	0011  4-line serial port w/- DMA",
+"11ca  LSI Systems, Inc",
+"11cb  Specialix Research Ltd.",
+"	2000  PCI_9050",
+"		11cb 0200  SX",
+"		11cb b008  I/O8+",
+"	4000  SUPI_1",
+"	8000  T225",
+"11cc  Michels & Kleberhoff Computer GmbH",
+"11cd  HAL Computer Systems, Inc.",
+"11ce  Netaccess",
+"11cf  Pioneer Electronic Corporation",
+"11d0  Lockheed Martin Federal Systems-Manassas",
+"11d1  Auravision",
+"	01f7  VxP524",
+"11d2  Intercom Inc.",
+"11d3  Trancell Systems Inc",
+"11d4  Analog Devices",
+"	1535  Blackfin BF535 processor",
+"	1805  SM56 PCI modem",
+"	1889  AD1889 sound chip",
+"	1986  AD1986A sound chip",
+"	5340  AD1881 sound chip",
+"11d5  Ikon Corporation",
+"	0115  10115",
+"	0117  10117",
+"11d6  Tekelec Telecom",
+"11d7  Trenton Technology, Inc.",
+"11d8  Image Technologies Development",
+"11d9  TEC Corporation",
+"11da  Novell",
+"11db  Sega Enterprises Ltd",
+"11dc  Questra Corporation",
+"11dd  Crosfield Electronics Limited",
+"11de  Zoran Corporation",
+"	6057  ZR36057PQC Video cutting chipset",
+"		1031 7efe  DC10 Plus",
+"		1031 fc00  MiroVIDEO DC50, Motion JPEG Capture/CODEC Board",
+"		12f8 8a02  Tekram Video Kit",
+"		13ca 4231  JPEG/TV Card",
+"	6120  ZR36120",
+"		1328 f001  Cinemaster C DVD Decoder",
+"		13c2 0000  MediaFocus Satellite TV Card",
+"		1de1 9fff  Video Kit C210",
+"11df  New Wave PDG",
+"11e0  Cray Communications A/S",
+"11e1  GEC Plessey Semi Inc.",
+"11e2  Samsung Information Systems America",
+"11e3  Quicklogic Corporation",
+"	0001  COM-ON-AIR Dosch&Amand DECT",
+"	5030  PC Watchdog",
+"11e4  Second Wave Inc",
+"11e5  IIX Consulting",
+"11e6  Mitsui-Zosen System Research",
+"11e7  Toshiba America, Elec. Company",
+"11e8  Digital Processing Systems Inc.",
+"11e9  Highwater Designs Ltd.",
+"11ea  Elsag Bailey",
+"11eb  Formation Inc.",
+"11ec  Coreco Inc",
+"11ed  Mediamatics",
+"11ee  Dome Imaging Systems Inc",
+"11ef  Nicolet Technologies B.V.",
+"11f0  Compu-Shack",
+"	4231  FDDI",
+"	4232  FASTline UTP Quattro",
+"	4233  FASTline FO",
+"	4234  FASTline UTP",
+"	4235  FASTline-II UTP",
+"	4236  FASTline-II FO",
+"	4731  GIGAline",
+"11f1  Symbios Logic Inc",
+"11f2  Picture Tel Japan K.K.",
+"11f3  Keithley Metrabyte",
+"11f4  Kinetic Systems Corporation",
+"	2915  CAMAC controller",
+"11f5  Computing Devices International",
+"11f6  Compex",
+"	0112  ENet100VG4",
+"	0113  FreedomLine 100",
+"	1401  ReadyLink 2000",
+"	2011  RL100-ATX 10/100",
+"		11f6 2011  RL100-ATX",
+"	2201  ReadyLink 100TX (Winbond W89C840)",
+"		11f6 2011  ReadyLink 100TX",
+"	9881  RL100TX Fast Ethernet",
+"11f7  Scientific Atlanta",
+"11f8  PMC-Sierra Inc.",
+"	7375  PM7375 [LASAR-155 ATM SAR]",
+"11f9  I-Cube Inc",
+"11fa  Kasan Electronics Company, Ltd.",
+"11fb  Datel Inc",
+"11fc  Silicon Magic",
+"11fd  High Street Consultants",
+"11fe  Comtrol Corporation",
+"	0001  RocketPort 32 port w/external I/F",
+"	0002  RocketPort 8 port w/external I/F",
+"	0003  RocketPort 16 port w/external I/F",
+"	0004  RocketPort 4 port w/quad cable",
+"	0005  RocketPort 8 port w/octa cable",
+"	0006  RocketPort 8 port w/RJ11 connectors",
+"	0007  RocketPort 4 port w/RJ11 connectors",
+"	0008  RocketPort 8 port w/ DB78 SNI (Siemens) connector",
+"	0009  RocketPort 16 port w/ DB78 SNI (Siemens) connector",
+"	000a  RocketPort Plus 4 port",
+"	000b  RocketPort Plus 8 port",
+"	000c  RocketModem 6 port",
+"	000d  RocketModem 4-port",
+"	000e  RocketPort Plus 2 port RS232",
+"	000f  RocketPort Plus 2 port RS422",
+"	0801  RocketPort UPCI 32 port w/external I/F",
+"	0802  RocketPort UPCI 8 port w/external I/F",
+"	0803  RocketPort UPCI 16 port w/external I/F",
+"	0805  RocketPort UPCI 8 port w/octa cable",
+"	080c  RocketModem III 8 port",
+"	080d  RocketModem III 4 port",
+"	0812  RocketPort UPCI Plus 8 port RS422",
+"	0903  RocketPort Compact PCI 16 port w/external I/F",
+"	8015  RocketPort 4-port UART 16954",
+"11ff  Scion Corporation",
+"	0003  AG-5",
+"1200  CSS Corporation",
+"1201  Vista Controls Corp",
+"1202  Network General Corp.",
+"	4300  Gigabit Ethernet Adapter",
+"		1202 9841  SK-9841 LX",
+"		1202 9842  SK-9841 LX dual link",
+"		1202 9843  SK-9843 SX",
+"		1202 9844  SK-9843 SX dual link",
+"1203  Bayer Corporation, Agfa Division",
+"1204  Lattice Semiconductor Corporation",
+"1205  Array Corporation",
+"1206  Amdahl Corporation",
+"1208  Parsytec GmbH",
+"	4853  HS-Link Device",
+"1209  SCI Systems Inc",
+"120a  Synaptel",
+"120b  Adaptive Solutions",
+"120c  Technical Corp.",
+"120d  Compression Labs, Inc.",
+"120e  Cyclades Corporation",
+"	0100  Cyclom-Y below first megabyte",
+"	0101  Cyclom-Y above first megabyte",
+"	0102  Cyclom-4Y below first megabyte",
+"	0103  Cyclom-4Y above first megabyte",
+"	0104  Cyclom-8Y below first megabyte",
+"	0105  Cyclom-8Y above first megabyte",
+"	0200  Cyclades-Z below first megabyte",
+"	0201  Cyclades-Z above first megabyte",
+"	0300  PC300/RSV or /X21 (2 ports)",
+"	0301  PC300/RSV or /X21 (1 port)",
+"	0310  PC300/TE (2 ports)",
+"	0311  PC300/TE (1 port)",
+"	0320  PC300/TE-M (2 ports)",
+"	0321  PC300/TE-M (1 port)",
+"	0400  PC400",
+"120f  Essential Communications",
+"	0001  Roadrunner serial HIPPI",
+"1210  Hyperparallel Technologies",
+"1211  Braintech Inc",
+"1212  Kingston Technology Corp.",
+"1213  Applied Intelligent Systems, Inc.",
+"1214  Performance Technologies, Inc.",
+"1215  Interware Co., Ltd",
+"1216  Purup Prepress A/S",
+"1217  O2 Micro, Inc.",
+"	6729  OZ6729",
+"	673a  OZ6730",
+"	6832  OZ6832/6833 CardBus Controller",
+"	6836  OZ6836/6860 CardBus Controller",
+"	6872  OZ6812 CardBus Controller",
+"	6925  OZ6922 CardBus Controller",
+"	6933  OZ6933/711E1 CardBus/SmartCardBus Controller",
+"		1025 1016  Travelmate 612 TX",
+"	6972  OZ601/6912/711E0 CardBus/SmartCardBus Controller",
+"		1014 020c  ThinkPad R30",
+"		1179 0001  Magnia Z310",
+"	7110  OZ711Mx 4-in-1 MemoryCardBus Accelerator",
+"		103c 088c  NC8000 laptop",
+"		103c 0890  NC6000 laptop",
+"		1734 106c  Amilo A1645",
+"	7112  OZ711EC1/M1 SmartCardBus/MemoryCardBus Controller",
+"	7113  OZ711EC1 SmartCardBus Controller",
+"	7114  OZ711M1/MC1 4-in-1 MemoryCardBus Controller",
+"	7134  OZ711MP1/MS1 MemoryCardBus Controller",
+"	71e2  OZ711E2 SmartCardBus Controller",
+"	7212  OZ711M2 4-in-1 MemoryCardBus Controller",
+"	7213  OZ6933E CardBus Controller",
+"	7223  OZ711M3/MC3 4-in-1 MemoryCardBus Controller",
+"		103c 088c  NC8000 laptop",
+"		103c 0890  NC6000 laptop",
+"	7233  OZ711MP3/MS3 4-in-1 MemoryCardBus Controller",
+"1218  Hybricon Corp.",
+"1219  First Virtual Corporation",
+"121a  3Dfx Interactive, Inc.",
+"	0001  Voodoo",
+"	0002  Voodoo 2",
+"	0003  Voodoo Banshee",
+"		1092 0003  Monster Fusion",
+"		1092 4000  Monster Fusion",
+"		1092 4002  Monster Fusion",
+"		1092 4801  Monster Fusion AGP",
+"		1092 4803  Monster Fusion AGP",
+"		1092 8030  Monster Fusion",
+"		1092 8035  Monster Fusion AGP",
+"		10b0 0001  Dragon 4000",
+"		1102 1018  3D Blaster Banshee VE",
+"		121a 0001  Voodoo Banshee AGP",
+"		121a 0003  Voodoo Banshee AGP SGRAM",
+"		121a 0004  Voodoo Banshee",
+"		139c 0016  Raven",
+"		139c 0017  Raven",
+"		14af 0002  Maxi Gamer Phoenix",
+"	0004  Voodoo Banshee [Velocity 100]",
+"	0005  Voodoo 3",
+"		121a 0004  Voodoo3 AGP",
+"		121a 0030  Voodoo3 AGP",
+"		121a 0031  Voodoo3 AGP",
+"		121a 0034  Voodoo3 AGP",
+"		121a 0036  Voodoo3 2000 PCI",
+"		121a 0037  Voodoo3 AGP",
+"		121a 0038  Voodoo3 AGP",
+"		121a 003a  Voodoo3 AGP",
+"		121a 0044  Voodoo3",
+"		121a 004b  Velocity 100",
+"		121a 004c  Velocity 200",
+"		121a 004d  Voodoo3 AGP",
+"		121a 004e  Voodoo3 AGP",
+"		121a 0051  Voodoo3 AGP",
+"		121a 0052  Voodoo3 AGP",
+"		121a 0057  Voodoo3 3000 PCI",
+"		121a 0060  Voodoo3 3500 TV (NTSC)",
+"		121a 0061  Voodoo3 3500 TV (PAL)",
+"		121a 0062  Voodoo3 3500 TV (SECAM)",
+"	0009  Voodoo 4 / Voodoo 5",
+"		121a 0003  Voodoo5 PCI 5500",
+"		121a 0009  Voodoo5 AGP 5500/6000",
+"	0057  Voodoo 3/3000 [Avenger]",
+"121b  Advanced Telecommunications Modules",
+"121c  Nippon Texaco., Ltd",
+"121d  Lippert Automationstechnik GmbH",
+"121e  CSPI",
+"	0201  Myrinet 2000 Scalable Cluster Interconnect",
+"121f  Arcus Technology, Inc.",
+"1220  Ariel Corporation",
+"	1220  AMCC 5933 TMS320C80 DSP/Imaging board",
+"1221  Contec Co., Ltd",
+"1222  Ancor Communications, Inc.",
+"1223  Artesyn Communication Products",
+"	0003  PM/Link",
+"	0004  PM/T1",
+"	0005  PM/E1",
+"	0008  PM/SLS",
+"	0009  BajaSpan Resource Target",
+"	000a  BajaSpan Section 0",
+"	000b  BajaSpan Section 1",
+"	000c  BajaSpan Section 2",
+"	000d  BajaSpan Section 3",
+"	000e  PM/PPC",
+"1224  Interactive Images",
+"1225  Power I/O, Inc.",
+"1227  Tech-Source",
+"	0006  Raptor GFX 8P",
+"	0023  Raptor GFX [1100T]",
+"1228  Norsk Elektro Optikk A/S",
+"1229  Data Kinesis Inc.",
+"122a  Integrated Telecom",
+"122b  LG Industrial Systems Co., Ltd",
+"122c  Sican GmbH",
+"122d  Aztech System Ltd",
+"	1206  368DSP",
+"	1400  Trident PCI288-Q3DII (NX)",
+"	50dc  3328 Audio",
+"		122d 0001  3328 Audio",
+"	80da  3328 Audio",
+"		122d 0001  3328 Audio",
+"122e  Xyratex",
+"122f  Andrew Corporation",
+"1230  Fishcamp Engineering",
+"1231  Woodward McCoach, Inc.",
+"1232  GPT Limited",
+"1233  Bus-Tech, Inc.",
+"1234  Technical Corp.",
+"1235  Risq Modular Systems, Inc.",
+"1236  Sigma Designs Corporation",
+"	0000  RealMagic64/GX",
+"	6401  REALmagic 64/GX (SD 6425)",
+"1237  Alta Technology Corporation",
+"1238  Adtran",
+"1239  3DO Company",
+"123a  Visicom Laboratories, Inc.",
+"123b  Seeq Technology, Inc.",
+"123c  Century Systems, Inc.",
+"123d  Engineering Design Team, Inc.",
+"	0000  EasyConnect 8/32",
+"	0002  EasyConnect 8/64",
+"	0003  EasyIO",
+"123e  Simutech, Inc.",
+"123f  C-Cube Microsystems",
+"	00e4  MPEG",
+"	8120  E4\?",
+"		11bd 0006  DV500 E4",
+"		11bd 000a  DV500 E4",
+"		11bd 000f  DV500 E4",
+"		1809 0016  Emuzed MAUI-III PCI PVR FM TV",
+"	8888  Cinemaster C 3.0 DVD Decoder",
+"		1002 0001  Cinemaster C 3.0 DVD Decoder",
+"		1002 0002  Cinemaster C 3.0 DVD Decoder",
+"		1328 0001  Cinemaster C 3.0 DVD Decoder",
+"1240  Marathon Technologies Corp.",
+"1241  DSC Communications",
+"1242  JNI Corporation",
+"	1560  JNIC-1560 PCI-X Fibre Channel Controller",
+"		1242 6562  FCX2-6562 Dual Channel PCI-X Fibre Channel Adapter",
+"		1242 656a  FCX-6562 PCI-X Fibre Channel Adapter",
+"	4643  FCI-1063 Fibre Channel Adapter",
+"	6562  FCX2-6562 Dual Channel PCI-X Fibre Channel Adapter",
+"	656a  FCX-6562 PCI-X Fibre Channel Adapter",
+"1243  Delphax",
+"1244  AVM Audiovisuelles MKTG & Computer System GmbH",
+"	0700  B1 ISDN",
+"	0800  C4 ISDN",
+"	0a00  A1 ISDN [Fritz]",
+"		1244 0a00  FRITZ!Card ISDN Controller",
+"	0e00  Fritz!PCI v2.0 ISDN",
+"	1100  C2 ISDN",
+"	1200  T1 ISDN",
+"	2700  Fritz!Card DSL SL",
+"	2900  Fritz!Card DSL v2.0",
+"1245  A.P.D., S.A.",
+"1246  Dipix Technologies, Inc.",
+"1247  Xylon Research, Inc.",
+"1248  Central Data Corporation",
+"1249  Samsung Electronics Co., Ltd.",
+"124a  AEG Electrocom GmbH",
+"124b  SBS/Greenspring Modular I/O",
+"	0040  PCI-40A or cPCI-200 Quad IndustryPack carrier",
+"		124b 9080  PCI9080 Bridge",
+"124c  Solitron Technologies, Inc.",
+"124d  Stallion Technologies, Inc.",
+"	0000  EasyConnection 8/32",
+"	0002  EasyConnection 8/64",
+"	0003  EasyIO",
+"	0004  EasyConnection/RA",
+"124e  Cylink",
+"124f  Infortrend Technology, Inc.",
+"	0041  IFT-2000 Series RAID Controller",
+"1250  Hitachi Microcomputer System Ltd",
+"1251  VLSI Solutions Oy",
+"1253  Guzik Technical Enterprises",
+"1254  Linear Systems Ltd.",
+"1255  Optibase Ltd",
+"	1110  MPEG Forge",
+"	1210  MPEG Fusion",
+"	2110  VideoPlex",
+"	2120  VideoPlex CC",
+"	2130  VideoQuest",
+"1256  Perceptive Solutions, Inc.",
+"	4201  PCI-2220I",
+"	4401  PCI-2240I",
+"	5201  PCI-2000",
+"1257  Vertex Networks, Inc.",
+"1258  Gilbarco, Inc.",
+"1259  Allied Telesyn International",
+"	2560  AT-2560 Fast Ethernet Adapter (i82557B)",
+"	a117  RTL81xx Fast Ethernet",
+"	a120  21x4x DEC-Tulip compatible 10/100 Ethernet",
+"125a  ABB Power Systems",
+"125b  Asix Electronics Corporation",
+"	1400  ALFA GFC2204 Fast Ethernet",
+"		1186 1100  AX8814X Based PCI Fast Ethernet Adapter",
+"125c  Aurora Technologies, Inc.",
+"	0101  Saturn 4520P",
+"	0640  Aries 16000P",
+"125d  ESS Technology",
+"	0000  ES336H Fax Modem (Early Model)",
+"	1948  Solo\?",
+"	1968  ES1968 Maestro 2",
+"		1028 0085  ES1968 Maestro-2 PCI",
+"		1033 8051  ES1968 Maestro-2 Audiodrive",
+"	1969  ES1969 Solo-1 Audiodrive",
+"		1014 0166  ES1969 SOLO-1 AudioDrive on IBM Aptiva Mainboard",
+"		125d 8888  Solo-1 Audio Adapter",
+"		153b 111b  Terratec 128i PCI",
+"	1978  ES1978 Maestro 2E",
+"		0e11 b112  Armada M700/E500",
+"		1033 803c  ES1978 Maestro-2E Audiodrive",
+"		1033 8058  ES1978 Maestro-2E Audiodrive",
+"		1092 4000  Monster Sound MX400",
+"		1179 0001  ES1978 Maestro-2E Audiodrive",
+"	1988  ES1988 Allegro-1",
+"		0e11 0098  Evo N600c",
+"		1092 4100  Sonic Impact S100",
+"		125d 1988  ESS Allegro-1 Audiodrive",
+"	1989  ESS Modem",
+"		125d 1989  ESS Modem",
+"	1998  ES1983S Maestro-3i PCI Audio Accelerator",
+"		1028 00b1  Latitude C600",
+"		1028 00e6  ES1983S Maestro-3i (Dell Inspiron 8100)",
+"	1999  ES1983S Maestro-3i PCI Modem Accelerator",
+"	199a  ES1983S Maestro-3i PCI Audio Accelerator",
+"	199b  ES1983S Maestro-3i PCI Modem Accelerator",
+"	2808  ES336H Fax Modem (Later Model)",
+"	2838  ES2838/2839 SuperLink Modem",
+"	2898  ES2898 Modem",
+"		125d 0424  ES56-PI Data Fax Modem",
+"		125d 0425  ES56T-PI Data Fax Modem",
+"		125d 0426  ES56V-PI Data Fax Modem",
+"		125d 0427  VW-PI Data Fax Modem",
+"		125d 0428  ES56ST-PI Data Fax Modem",
+"		125d 0429  ES56SV-PI Data Fax Modem",
+"		147a c001  ES56-PI Data Fax Modem",
+"		14fe 0428  ES56-PI Data Fax Modem",
+"		14fe 0429  ES56-PI Data Fax Modem",
+"125e  Specialvideo Engineering SRL",
+"125f  Concurrent Technologies, Inc.",
+"1260  Intersil Corporation",
+"	3872  Prism 2.5 Wavelan chipset",
+"		1468 0202  LAN-Express IEEE 802.11b Wireless LAN",
+"	3873  Prism 2.5 Wavelan chipset",
+"		1186 3501  DWL-520 Wireless PCI Adapter",
+"		1186 3700  DWL-520 Wireless PCI Adapter, Rev E1",
+"		1385 4105  MA311 802.11b wireless adapter",
+"		1668 0414  HWP01170-01 802.11b PCI Wireless Adapter",
+"		16a5 1601  AIR.mate PC-400 PCI Wireless LAN Adapter",
+"		1737 3874  WMP11 Wireless 802.11b PCI Adapter",
+"		8086 2513  Wireless 802.11b MiniPCI Adapter",
+"	3886  ISL3886 [Prism Javelin/Prism Xbow]",
+"		17cf 0037  XG-901 and clones Wireless Adapter",
+"	3890  ISL3890 [Prism GT/Prism Duette]/ISL3886 [Prism Javelin/Prism Xbow]",
+"		10b8 2802  SMC2802W Wireless PCI Adapter",
+"		10b8 2835  SMC2835W Wireless Cardbus Adapter",
+"		10b8 a835  SMC2835W V2 Wireless Cardbus Adapter",
+"		1113 4203  WN4201B",
+"		1113 ee03  SMC2802W V2 Wireless PCI Adapter [ISL3886]",
+"		1113 ee08  SMC2835W V3 EU Wireless Cardbus Adapter",
+"		1186 3202  DWL-G650 A1 Wireless Adapter",
+"		1259 c104  CG-WLCB54GT Wireless Adapter",
+"		1385 4800  WG511 Wireless Adapter",
+"		16a5 1605  ALLNET ALL0271 Wireless PCI Adapter",
+"		17cf 0014  XG-600 and clones Wireless Adapter",
+"		17cf 0020  XG-900 and clones Wireless Adapter",
+"	8130  HMP8130 NTSC/PAL Video Decoder",
+"	8131  HMP8131 NTSC/PAL Video Decoder",
+"	ffff  ISL3886IK",
+"		1260 0000  Senao 3054MP+ (J) mini-PCI WLAN 802.11g adapter",
+"1261  Matsushita-Kotobuki Electronics Industries, Ltd.",
+"1262  ES Computer Company, Ltd.",
+"1263  Sonic Solutions",
+"1264  Aval Nagasaki Corporation",
+"1265  Casio Computer Co., Ltd.",
+"1266  Microdyne Corporation",
+"	0001  NE10/100 Adapter (i82557B)",
+"	1910  NE2000Plus (RT8029) Ethernet Adapter",
+"		1266 1910  NE2000Plus Ethernet Adapter",
+"1267  S. A. Telecommunications",
+"	5352  PCR2101",
+"	5a4b  Telsat Turbo",
+"1268  Tektronix",
+"1269  Thomson-CSF/TTM",
+"126a  Lexmark International, Inc.",
+"126b  Adax, Inc.",
+"126c  Northern Telecom",
+"	1211  10/100BaseTX [RTL81xx]",
+"	126c  802.11b Wireless Ethernet Adapter",
+"126d  Splash Technology, Inc.",
+"126e  Sumitomo Metal Industries, Ltd.",
+"126f  Silicon Motion, Inc.",
+"	0501  SM501 VoyagerGX Rev. AA",
+"	0510  SM501 VoyagerGX Rev. B",
+"	0710  SM710 LynxEM",
+"	0712  SM712 LynxEM+",
+"	0720  SM720 Lynx3DM",
+"	0730  SM731 Cougar3DR",
+"	0810  SM810 LynxE",
+"	0811  SM811 LynxE",
+"	0820  SM820 Lynx3D",
+"	0910  SM910",
+"1270  Olympus Optical Co., Ltd.",
+"1271  GW Instruments",
+"1272  Telematics International",
+"1273  Hughes Network Systems",
+"	0002  DirecPC",
+"1274  Ensoniq",
+"	1171  ES1373 [AudioPCI] (also Creative Labs CT5803)",
+"	1371  ES1371 [AudioPCI-97]",
+"		0e11 0024  AudioPCI on Motherboard Compaq Deskpro",
+"		0e11 b1a7  ES1371, ES1373 AudioPCI",
+"		1033 80ac  ES1371, ES1373 AudioPCI",
+"		1042 1854  Tazer",
+"		107b 8054  Tabor2",
+"		1274 1371  Creative Sound Blaster AudioPCI64V, AudioPCI128",
+"		1274 8001  CT4751 board",
+"		1462 6470  ES1371, ES1373 AudioPCI On Motherboard MS-6147 1.1A",
+"		1462 6560  ES1371, ES1373 AudioPCI On Motherboard MS-6156 1.10",
+"		1462 6630  ES1371, ES1373 AudioPCI On Motherboard MS-6163BX 1.0A",
+"		1462 6631  ES1371, ES1373 AudioPCI On Motherboard MS-6163VIA 1.0A",
+"		1462 6632  ES1371, ES1373 AudioPCI On Motherboard MS-6163BX 2.0A",
+"		1462 6633  ES1371, ES1373 AudioPCI On Motherboard MS-6163VIA 2.0A",
+"		1462 6820  ES1371, ES1373 AudioPCI On Motherboard MS-6182 1.00",
+"		1462 6822  ES1371, ES1373 AudioPCI On Motherboard MS-6182 1.00A",
+"		1462 6830  ES1371, ES1373 AudioPCI On Motherboard MS-6183 1.00",
+"		1462 6880  ES1371, ES1373 AudioPCI On Motherboard MS-6188 1.00",
+"		1462 6900  ES1371, ES1373 AudioPCI On Motherboard MS-6190 1.00",
+"		1462 6910  ES1371, ES1373 AudioPCI On Motherboard MS-6191",
+"		1462 6930  ES1371, ES1373 AudioPCI On Motherboard MS-6193",
+"		1462 6990  ES1371, ES1373 AudioPCI On Motherboard MS-6199BX 2.0A",
+"		1462 6991  ES1371, ES1373 AudioPCI On Motherboard MS-6199VIA 2.0A",
+"		14a4 2077  ES1371, ES1373 AudioPCI On Motherboard KR639",
+"		14a4 2105  ES1371, ES1373 AudioPCI On Motherboard MR800",
+"		14a4 2107  ES1371, ES1373 AudioPCI On Motherboard MR801",
+"		14a4 2172  ES1371, ES1373 AudioPCI On Motherboard DR739",
+"		1509 9902  ES1371, ES1373 AudioPCI On Motherboard KW11",
+"		1509 9903  ES1371, ES1373 AudioPCI On Motherboard KW31",
+"		1509 9904  ES1371, ES1373 AudioPCI On Motherboard KA11",
+"		1509 9905  ES1371, ES1373 AudioPCI On Motherboard KC13",
+"		152d 8801  ES1371, ES1373 AudioPCI On Motherboard CP810E",
+"		152d 8802  ES1371, ES1373 AudioPCI On Motherboard CP810",
+"		152d 8803  ES1371, ES1373 AudioPCI On Motherboard P3810E",
+"		152d 8804  ES1371, ES1373 AudioPCI On Motherboard P3810-S",
+"		152d 8805  ES1371, ES1373 AudioPCI On Motherboard P3820-S",
+"		270f 2001  ES1371, ES1373 AudioPCI On Motherboard 6CTR",
+"		270f 2200  ES1371, ES1373 AudioPCI On Motherboard 6WTX",
+"		270f 3000  ES1371, ES1373 AudioPCI On Motherboard 6WSV",
+"		270f 3100  ES1371, ES1373 AudioPCI On Motherboard 6WIV2",
+"		270f 3102  ES1371, ES1373 AudioPCI On Motherboard 6WIV",
+"		270f 7060  ES1371, ES1373 AudioPCI On Motherboard 6ASA2",
+"		8086 4249  ES1371, ES1373 AudioPCI On Motherboard BI440ZX",
+"		8086 424c  ES1371, ES1373 AudioPCI On Motherboard BL440ZX",
+"		8086 425a  ES1371, ES1373 AudioPCI On Motherboard BZ440ZX",
+"		8086 4341  ES1371, ES1373 AudioPCI On Motherboard Cayman",
+"		8086 4343  ES1371, ES1373 AudioPCI On Motherboard Cape Cod",
+"		8086 4541  D815EEA Motherboard",
+"		8086 4649  ES1371, ES1373 AudioPCI On Motherboard Fire Island",
+"		8086 464a  ES1371, ES1373 AudioPCI On Motherboard FJ440ZX",
+"		8086 4d4f  ES1371, ES1373 AudioPCI On Motherboard Montreal",
+"		8086 4f43  ES1371, ES1373 AudioPCI On Motherboard OC440LX",
+"		8086 5243  ES1371, ES1373 AudioPCI On Motherboard RC440BX",
+"		8086 5352  ES1371, ES1373 AudioPCI On Motherboard SunRiver",
+"		8086 5643  ES1371, ES1373 AudioPCI On Motherboard Vancouver",
+"		8086 5753  ES1371, ES1373 AudioPCI On Motherboard WS440BX",
+"	5000  ES1370 [AudioPCI]",
+"	5880  5880 AudioPCI",
+"		1274 2000  Creative Sound Blaster AudioPCI128",
+"		1274 2003  Creative SoundBlaster AudioPCI 128",
+"		1274 5880  Creative Sound Blaster AudioPCI128",
+"		1274 8001  Sound Blaster 16PCI 4.1ch",
+"		1458 a000  5880 AudioPCI On Motherboard 6OXET",
+"		1462 6880  5880 AudioPCI On Motherboard MS-6188 1.00",
+"		270f 2001  5880 AudioPCI On Motherboard 6CTR",
+"		270f 2200  5880 AudioPCI On Motherboard 6WTX",
+"		270f 7040  5880 AudioPCI On Motherboard 6ATA4",
+"1275  Network Appliance Corporation",
+"1276  Switched Network Technologies, Inc.",
+"1277  Comstream",
+"1278  Transtech Parallel Systems Ltd.",
+"	0701  TPE3/TM3 PowerPC Node",
+"	0710  TPE5 PowerPC PCI board",
+"1279  Transmeta Corporation",
+"	0060  TM8000 Northbridge",
+"	0061  TM8000 AGP bridge",
+"	0295  Northbridge",
+"	0395  LongRun Northbridge",
+"	0396  SDRAM controller",
+"	0397  BIOS scratchpad",
+"127a  Rockwell International",
+"	1002  HCF 56k Data/Fax Modem",
+"		1092 094c  SupraExpress 56i PRO [Diamond SUP2380]",
+"		122d 4002  HPG / MDP3858-U",
+"		122d 4005  MDP3858-E",
+"		122d 4007  MDP3858-A/-NZ",
+"		122d 4012  MDP3858-SA",
+"		122d 4017  MDP3858-W",
+"		122d 4018  MDP3858-W",
+"		127a 1002  Rockwell 56K D/F HCF Modem",
+"	1003  HCF 56k Data/Fax Modem",
+"		0e11 b0bc  229-DF Zephyr",
+"		0e11 b114  229-DF Cheetah",
+"		1033 802b  229-DF",
+"		13df 1003  PCI56RX Modem",
+"		13e0 0117  IBM",
+"		13e0 0147  IBM F-1156IV+/R3 Spain V.90 Modem",
+"		13e0 0197  IBM",
+"		13e0 01c7  IBM F-1156IV+/R3 WW V.90 Modem",
+"		13e0 01f7  IBM",
+"		1436 1003  IBM",
+"		1436 1103  IBM 5614PM3G V.90 Modem",
+"		1436 1602  Compaq 229-DF Ducati",
+"	1004  HCF 56k Data/Fax/Voice Modem",
+"		1048 1500  MicroLink 56k Modem",
+"		10cf 1059  Fujitsu 229-DFRT",
+"	1005  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem",
+"		1005 127a  AOpen FM56-P",
+"		1033 8029  229-DFSV",
+"		1033 8054  Modem",
+"		10cf 103c  Fujitsu",
+"		10cf 1055  Fujitsu 229-DFSV",
+"		10cf 1056  Fujitsu 229-DFSV",
+"		122d 4003  MDP3858SP-U",
+"		122d 4006  Packard Bell MDP3858V-E",
+"		122d 4008  MDP3858SP-A/SP-NZ",
+"		122d 4009  MDP3858SP-E",
+"		122d 4010  MDP3858V-U",
+"		122d 4011  MDP3858SP-SA",
+"		122d 4013  MDP3858V-A/V-NZ",
+"		122d 4015  MDP3858SP-W",
+"		122d 4016  MDP3858V-W",
+"		122d 4019  MDP3858V-SA",
+"		13df 1005  PCI56RVP Modem",
+"		13e0 0187  IBM",
+"		13e0 01a7  IBM",
+"		13e0 01b7  IBM DF-1156IV+/R3 Spain V.90 Modem",
+"		13e0 01d7  IBM DF-1156IV+/R3 WW V.90 Modem",
+"		1436 1005  IBM",
+"		1436 1105  IBM",
+"		1437 1105  IBM 5614PS3G V.90 Modem",
+"	1022  HCF 56k Modem",
+"		1436 1303  M3-5614PM3G V.90 Modem",
+"	1023  HCF 56k Data/Fax Modem",
+"		122d 4020  Packard Bell MDP3858-WE",
+"		122d 4023  MDP3858-UE",
+"		13e0 0247  IBM F-1156IV+/R6 Spain V.90 Modem",
+"		13e0 0297  IBM",
+"		13e0 02c7  IBM F-1156IV+/R6 WW V.90 Modem",
+"		1436 1203  IBM",
+"		1436 1303  IBM",
+"	1024  HCF 56k Data/Fax/Voice Modem",
+"	1025  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem",
+"		10cf 106a  Fujitsu 235-DFSV",
+"		122d 4021  Packard Bell MDP3858V-WE",
+"		122d 4022  MDP3858SP-WE",
+"		122d 4024  MDP3858V-UE",
+"		122d 4025  MDP3858SP-UE",
+"	1026  HCF 56k PCI Speakerphone Modem",
+"	1032  HCF 56k Modem",
+"	1033  HCF 56k Modem",
+"	1034  HCF 56k Modem",
+"	1035  HCF 56k PCI Speakerphone Modem",
+"	1036  HCF 56k Modem",
+"	1085  HCF 56k Volcano PCI Modem",
+"	2005  HCF 56k Data/Fax Modem",
+"		104d 8044  229-DFSV",
+"		104d 8045  229-DFSV",
+"		104d 8055  PBE/Aztech 235W-DFSV",
+"		104d 8056  235-DFSV",
+"		104d 805a  Modem",
+"		104d 805f  Modem",
+"		104d 8074  Modem",
+"	2013  HSF 56k Data/Fax Modem",
+"		1179 0001  Modem",
+"		1179 ff00  Modem",
+"	2014  HSF 56k Data/Fax/Voice Modem",
+"		10cf 1057  Fujitsu Citicorp III",
+"		122d 4050  MSP3880-U",
+"		122d 4055  MSP3880-W",
+"	2015  HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem",
+"		10cf 1063  Fujitsu",
+"		10cf 1064  Fujitsu",
+"		1468 2015  Fujitsu",
+"	2016  HSF 56k Data/Fax/Voice/Spkp Modem",
+"		122d 4051  MSP3880V-W",
+"		122d 4052  MSP3880SP-W",
+"		122d 4054  MSP3880V-U",
+"		122d 4056  MSP3880SP-U",
+"		122d 4057  MSP3880SP-A",
+"	4311  Riptide HSF 56k PCI Modem",
+"		127a 4311  Ring Modular\? Riptide HSF RT HP Dom",
+"		13e0 0210  HP-GVC",
+"	4320  Riptide PCI Audio Controller",
+"		1235 4320  Riptide PCI Audio Controller",
+"	4321  Riptide HCF 56k PCI Modem",
+"		1235 4321  Hewlett Packard DF",
+"		1235 4324  Hewlett Packard DF",
+"		13e0 0210  Hewlett Packard DF",
+"		144d 2321  Riptide",
+"	4322  Riptide PCI Game Controller",
+"		1235 4322  Riptide PCI Game Controller",
+"	8234  RapidFire 616X ATM155 Adapter",
+"		108d 0022  RapidFire 616X ATM155 Adapter",
+"		108d 0027  RapidFire 616X ATM155 Adapter",
+"127b  Pixera Corporation",
+"127c  Crosspoint Solutions, Inc.",
+"127d  Vela Research",
+"127e  Winnov, L.P.",
+"127f  Fujifilm",
+"1280  Photoscript Group Ltd.",
+"1281  Yokogawa Electric Corporation",
+"1282  Davicom Semiconductor, Inc.",
+"	9009  Ethernet 100/10 MBit",
+"	9100  21x4x DEC-Tulip compatible 10/100 Ethernet",
+"	9102  21x4x DEC-Tulip compatible 10/100 Ethernet",
+"	9132  Ethernet 100/10 MBit",
+"1283  Integrated Technology Express, Inc.",
+"	673a  IT8330G",
+"	8211  ITE 8211F Single Channel UDMA 133 (ASUS 8211 (ITE IT8212 ATA RAID Controller))",
+"		1043 8138  P5GD1-VW Mainboard",
+"	8212  IT/ITE8212 Dual channel ATA RAID controller (PCI version seems to be IT8212, embedded seems to be ITE8212)",
+"		1283 0001  IT/ITE8212 Dual channel ATA RAID controller",
+"	8330  IT8330G",
+"	8872  IT8874F PCI Dual Serial Port Controller",
+"	8888  IT8888F PCI to ISA Bridge with SMB",
+"	8889  IT8889F PCI to ISA Bridge",
+"	e886  IT8330G",
+"1284  Sahara Networks, Inc.",
+"1285  Platform Technologies, Inc.",
+"	0100  AGOGO sound chip (aka ESS Maestro 1)",
+"1286  Mazet GmbH",
+"1287  M-Pact, Inc.",
+"	001e  LS220D DVD Decoder",
+"	001f  LS220C DVD Decoder",
+"1288  Timestep Corporation",
+"1289  AVC Technology, Inc.",
+"128a  Asante Technologies, Inc.",
+"128b  Transwitch Corporation",
+"128c  Retix Corporation",
+"128d  G2 Networks, Inc.",
+"	0021  ATM155 Adapter",
+"128e  Hoontech Corporation/Samho Multi Tech Ltd.",
+"	0008  ST128 WSS/SB",
+"	0009  ST128 SAM9407",
+"	000a  ST128 Game Port",
+"	000b  ST128 MPU Port",
+"	000c  ST128 Ctrl Port",
+"128f  Tateno Dennou, Inc.",
+"1290  Sord Computer Corporation",
+"1291  NCS Computer Italia",
+"1292  Tritech Microelectronics Inc",
+"1293  Media Reality Technology",
+"1294  Rhetorex, Inc.",
+"1295  Imagenation Corporation",
+"1296  Kofax Image Products",
+"1297  Holco Enterprise Co, Ltd/Shuttle Computer",
+"1298  Spellcaster Telecommunications Inc.",
+"1299  Knowledge Technology Lab.",
+"129a  VMetro, inc.",
+"	0615  PBT-615 PCI-X Bus Analyzer",
+"129b  Image Access",
+"129c  Jaycor",
+"129d  Compcore Multimedia, Inc.",
+"129e  Victor Company of Japan, Ltd.",
+"129f  OEC Medical Systems, Inc.",
+"12a0  Allen-Bradley Company",
+"12a1  Simpact Associates, Inc.",
+"12a2  Newgen Systems Corporation",
+"12a3  Lucent Technologies",
+"	8105  T8105 H100 Digital Switch",
+"12a4  NTT Electronics Technology Company",
+"12a5  Vision Dynamics Ltd.",
+"12a6  Scalable Networks, Inc.",
+"12a7  AMO GmbH",
+"12a8  News Datacom",
+"12a9  Xiotech Corporation",
+"12aa  SDL Communications, Inc.",
+"12ab  Yuan Yuan Enterprise Co., Ltd.",
+"	0002  AU8830 [Vortex2] Based Sound Card With A3D Support",
+"	3000  MPG-200C PCI DVD Decoder Card",
+"12ac  Measurex Corporation",
+"12ad  Multidata GmbH",
+"12ae  Alteon Networks Inc.",
+"	0001  AceNIC Gigabit Ethernet",
+"		1014 0104  Gigabit Ethernet-SX PCI Adapter",
+"		12ae 0001  Gigabit Ethernet-SX (Universal)",
+"		1410 0104  Gigabit Ethernet-SX PCI Adapter",
+"	0002  AceNIC Gigabit Ethernet (Copper)",
+"		10a9 8002  Acenic Gigabit Ethernet",
+"		12ae 0002  Gigabit Ethernet-T (3C986-T)",
+"	00fa  Farallon PN9100-T Gigabit Ethernet",
+"12af  TDK USA Corp",
+"12b0  Jorge Scientific Corp",
+"12b1  GammaLink",
+"12b2  General Signal Networks",
+"12b3  Inter-Face Co Ltd",
+"12b4  FutureTel Inc",
+"12b5  Granite Systems Inc.",
+"12b6  Natural Microsystems",
+"12b7  Cognex Modular Vision Systems Div. - Acumen Inc.",
+"12b8  Korg",
+"12b9  3Com Corp, Modem Division",
+"	1006  WinModem",
+"		12b9 005c  USR 56k Internal Voice WinModem (Model 3472)",
+"		12b9 005e  USR 56k Internal WinModem (Models 662975)",
+"		12b9 0062  USR 56k Internal Voice WinModem (Model 662978)",
+"		12b9 0068  USR 56k Internal Voice WinModem (Model 5690)",
+"		12b9 007a  USR 56k Internal Voice WinModem (Model 662974)",
+"		12b9 007f  USR 56k Internal WinModem (Models 5698, 5699)",
+"		12b9 0080  USR 56k Internal WinModem (Models 2975, 3528)",
+"		12b9 0081  USR 56k Internal Voice WinModem (Models 2974, 3529)",
+"		12b9 0091  USR 56k Internal Voice WinModem (Model 2978)",
+"	1007  USR 56k Internal WinModem",
+"		12b9 00a3  USR 56k Internal WinModem (Model 3595)",
+"	1008  56K FaxModem Model 5610",
+"		12b9 00a2  USR 56k Internal FAX Modem (Model 2977)",
+"		12b9 00aa  USR 56k Internal Voice Modem (Model 2976)",
+"		12b9 00ab  USR 56k Internal Voice Modem (Model 5609)",
+"		12b9 00ac  USR 56k Internal Voice Modem (Model 3298)",
+"		12b9 00ad  USR 56k Internal FAX Modem (Model 5610)",
+"12ba  BittWare, Inc.",
+"12bb  Nippon Unisoft Corporation",
+"12bc  Array Microsystems",
+"12bd  Computerm Corp.",
+"12be  Anchor Chips Inc.",
+"	3041  AN3041Q CO-MEM",
+"	3042  AN3042Q CO-MEM Lite",
+"		12be 3042  Anchor Chips Lite Evaluation Board",
+"12bf  Fujifilm Microdevices",
+"12c0  Infimed",
+"12c1  GMM Research Corp",
+"12c2  Mentec Limited",
+"12c3  Holtek Microelectronics Inc",
+"	0058  PCI NE2K Ethernet",
+"	5598  PCI NE2K Ethernet",
+"12c4  Connect Tech Inc",
+"	0001  Blue HEAT/PCI 8 (RS232/CL/RJ11)",
+"	0002  Blue HEAT/PCI 4 (RS232)",
+"	0003  Blue HEAT/PCI 2 (RS232)",
+"	0004  Blue HEAT/PCI 8 (UNIV, RS485)",
+"	0005  Blue HEAT/PCI 4+4/6+2 (UNIV, RS232/485)",
+"	0006  Blue HEAT/PCI 4 (OPTO, RS485)",
+"	0007  Blue HEAT/PCI 2+2 (RS232/485)",
+"	0008  Blue HEAT/PCI 2 (OPTO, Tx, RS485)",
+"	0009  Blue HEAT/PCI 2+6 (RS232/485)",
+"	000a  Blue HEAT/PCI 8 (Tx, RS485)",
+"	000b  Blue HEAT/PCI 4 (Tx, RS485)",
+"	000c  Blue HEAT/PCI 2 (20 MHz, RS485)",
+"	000d  Blue HEAT/PCI 2 PTM",
+"	0100  NT960/PCI",
+"	0201  cPCI Titan - 2 Port",
+"	0202  cPCI Titan - 4 Port",
+"	0300  CTI PCI UART 2 (RS232)",
+"	0301  CTI PCI UART 4 (RS232)",
+"	0302  CTI PCI UART 8 (RS232)",
+"	0310  CTI PCI UART 1+1 (RS232/485)",
+"	0311  CTI PCI UART 2+2 (RS232/485)",
+"	0312  CTI PCI UART 4+4 (RS232/485)",
+"	0320  CTI PCI UART 2",
+"	0321  CTI PCI UART 4",
+"	0322  CTI PCI UART 8",
+"	0330  CTI PCI UART 2 (RS485)",
+"	0331  CTI PCI UART 4 (RS485)",
+"	0332  CTI PCI UART 8 (RS485)",
+"12c5  Picture Elements Incorporated",
+"	007e  Imaging/Scanning Subsystem Engine",
+"	007f  Imaging/Scanning Subsystem Engine",
+"	0081  PCIVST [Grayscale Thresholding Engine]",
+"	0085  Video Simulator/Sender",
+"	0086  THR2 Multi-scale Thresholder",
+"12c6  Mitani Corporation",
+"12c7  Dialogic Corp",
+"12c8  G Force Co, Ltd",
+"12c9  Gigi Operations",
+"12ca  Integrated Computing Engines",
+"12cb  Antex Electronics Corporation",
+"12cc  Pluto Technologies International",
+"12cd  Aims Lab",
+"12ce  Netspeed Inc.",
+"12cf  Prophet Systems, Inc.",
+"12d0  GDE Systems, Inc.",
+"12d1  PSITech",
+"12d2  NVidia / SGS Thomson (Joint Venture)",
+"	0008  NV1",
+"	0009  DAC64",
+"	0018  Riva128",
+"		1048 0c10  VICTORY Erazor",
+"		107b 8030  STB Velocity 128",
+"		1092 0350  Viper V330",
+"		1092 1092  Viper V330",
+"		10b4 1b1b  STB Velocity 128",
+"		10b4 1b1d  STB Velocity 128",
+"		10b4 1b1e  STB Velocity 128, PAL TV-Out",
+"		10b4 1b20  STB Velocity 128 Sapphire",
+"		10b4 1b21  STB Velocity 128",
+"		10b4 1b22  STB Velocity 128 AGP, NTSC TV-Out",
+"		10b4 1b23  STB Velocity 128 AGP, PAL TV-Out",
+"		10b4 1b27  STB Velocity 128 DVD",
+"		10b4 1b88  MVP Pro 128",
+"		10b4 222a  STB Velocity 128 AGP",
+"		10b4 2230  STB Velocity 128",
+"		10b4 2232  STB Velocity 128",
+"		10b4 2235  STB Velocity 128 AGP",
+"		2a15 54a3  3DVision-SAGP / 3DexPlorer 3000",
+"	0019  Riva128ZX",
+"	0020  TNT",
+"	0028  TNT2",
+"	0029  UTNT2",
+"	002c  VTNT2",
+"	00a0  ITNT2",
+"12d3  Vingmed Sound A/S",
+"12d4  Ulticom (Formerly DGM&S)",
+"	0200  T1 Card",
+"12d5  Equator Technologies Inc",
+"	0003  BSP16",
+"	1000  BSP15",
+"12d6  Analogic Corp",
+"12d7  Biotronic SRL",
+"12d8  Pericom Semiconductor",
+"	8150  PCI to PCI Bridge",
+"12d9  Aculab PLC",
+"	0002  PCI Prosody",
+"	0004  cPCI Prosody",
+"	0005  Aculab E1/T1 PCI card",
+"	1078  Prosody X class e1000 device",
+"		12d9 000d  Prosody X PCI",
+"12da  True Time Inc.",
+"12db  Annapolis Micro Systems, Inc",
+"12dc  Symicron Computer Communication Ltd.",
+"12dd  Management Graphics",
+"12de  Rainbow Technologies",
+"	0200  CryptoSwift CS200",
+"12df  SBS Technologies Inc",
+"12e0  Chase Research",
+"	0010  ST16C654 Quad UART",
+"	0020  ST16C654 Quad UART",
+"	0030  ST16C654 Quad UART",
+"12e1  Nintendo Co, Ltd",
+"12e2  Datum Inc. Bancomm-Timing Division",
+"12e3  Imation Corp - Medical Imaging Systems",
+"12e4  Brooktrout Technology Inc",
+"12e5  Apex Semiconductor Inc",
+"12e6  Cirel Systems",
+"12e7  Sunsgroup Corporation",
+"12e8  Crisc Corp",
+"12e9  GE Spacenet",
+"12ea  Zuken",
+"12eb  Aureal Semiconductor",
+"	0001  Vortex 1",
+"		104d 8036  AU8820 Vortex Digital Audio Processor",
+"		1092 2000  Sonic Impact A3D",
+"		1092 2100  Sonic Impact A3D",
+"		1092 2110  Sonic Impact A3D",
+"		1092 2200  Sonic Impact A3D",
+"		122d 1002  AU8820 Vortex Digital Audio Processor",
+"		12eb 0001  AU8820 Vortex Digital Audio Processor",
+"		5053 3355  Montego",
+"	0002  Vortex 2",
+"		104d 8049  AU8830 Vortex 3D Digital Audio Processor",
+"		104d 807b  AU8830 Vortex 3D Digital Audio Processor",
+"		1092 3000  Monster Sound II",
+"		1092 3001  Monster Sound II",
+"		1092 3002  Monster Sound II",
+"		1092 3003  Monster Sound II",
+"		1092 3004  Monster Sound II",
+"		12eb 0002  AU8830 Vortex 3D Digital Audio Processor",
+"		12eb 0088  AU8830 Vortex 3D Digital Audio Processor",
+"		144d 3510  AU8830 Vortex 3D Digital Audio Processor",
+"		5053 3356  Montego II",
+"	0003  AU8810 Vortex Digital Audio Processor",
+"		104d 8049  AU8810 Vortex Digital Audio Processor",
+"		104d 8077  AU8810 Vortex Digital Audio Processor",
+"		109f 1000  AU8810 Vortex Digital Audio Processor",
+"		12eb 0003  AU8810 Vortex Digital Audio Processor",
+"		1462 6780  AU8810 Vortex Digital Audio Processor",
+"		14a4 2073  AU8810 Vortex Digital Audio Processor",
+"		14a4 2091  AU8810 Vortex Digital Audio Processor",
+"		14a4 2104  AU8810 Vortex Digital Audio Processor",
+"		14a4 2106  AU8810 Vortex Digital Audio Processor",
+"	8803  Vortex 56k Software Modem",
+"		12eb 8803  Vortex 56k Software Modem",
+"12ec  3A International, Inc.",
+"12ed  Optivision Inc.",
+"12ee  Orange Micro",
+"12ef  Vienna Systems",
+"12f0  Pentek",
+"12f1  Sorenson Vision Inc",
+"12f2  Gammagraphx, Inc.",
+"12f3  Radstone Technology",
+"12f4  Megatel",
+"12f5  Forks",
+"12f6  Dawson France",
+"12f7  Cognex",
+"12f8  Electronic Design GmbH",
+"	0002  VideoMaker",
+"12f9  Four Fold Ltd",
+"12fb  Spectrum Signal Processing",
+"	0001  PMC-MAI",
+"	00f5  F5 Dakar",
+"	02ad  PMC-2MAI",
+"	2adc  ePMC-2ADC",
+"	3100  PRO-3100",
+"	3500  PRO-3500",
+"	4d4f  Modena",
+"	8120  ePMC-8120",
+"	da62  Daytona C6201 PCI (Hurricane)",
+"	db62  Ingliston XBIF",
+"	dc62  Ingliston PLX9054",
+"	dd62  Ingliston JTAG/ISP",
+"	eddc  ePMC-MSDDC",
+"	fa01  ePMC-FPGA",
+"12fc  Capital Equipment Corp",
+"12fd  I2S",
+"12fe  ESD Electronic System Design GmbH",
+"12ff  Lexicon",
+"1300  Harman International Industries Inc",
+"1302  Computer Sciences Corp",
+"1303  Innovative Integration",
+"1304  Juniper Networks",
+"1305  Netphone, Inc",
+"1306  Duet Technologies",
+"1307  Measurement Computing",
+"	0001  PCI-DAS1602/16",
+"	000b  PCI-DIO48H",
+"	000c  PCI-PDISO8",
+"	000d  PCI-PDISO16",
+"	000f  PCI-DAS1200",
+"	0010  PCI-DAS1602/12",
+"	0014  PCI-DIO24H",
+"	0015  PCI-DIO24H/CTR3",
+"	0016  PCI-DIO48H/CTR15",
+"	0017  PCI-DIO96H",
+"	0018  PCI-CTR05",
+"	0019  PCI-DAS1200/JR",
+"	001a  PCI-DAS1001",
+"	001b  PCI-DAS1002",
+"	001c  PCI-DAS1602JR/16",
+"	001d  PCI-DAS6402/16",
+"	001e  PCI-DAS6402/12",
+"	001f  PCI-DAS16/M1",
+"	0020  PCI-DDA02/12",
+"	0021  PCI-DDA04/12",
+"	0022  PCI-DDA08/12",
+"	0023  PCI-DDA02/16",
+"	0024  PCI-DDA04/16",
+"	0025  PCI-DDA08/16",
+"	0026  PCI-DAC04/12-HS",
+"	0027  PCI-DAC04/16-HS",
+"	0028  PCI-DIO24",
+"	0029  PCI-DAS08",
+"	002c  PCI-INT32",
+"	0033  PCI-DUAL-AC5",
+"	0034  PCI-DAS-TC",
+"	0035  PCI-DAS64/M1/16",
+"	0036  PCI-DAS64/M2/16",
+"	0037  PCI-DAS64/M3/16",
+"	004c  PCI-DAS1000",
+"	004d  PCI-QUAD04",
+"	0052  PCI-DAS4020/12",
+"	0054  PCI-DIO96",
+"	005e  PCI-DAS6025",
+"1308  Jato Technologies Inc.",
+"	0001  NetCelerator Adapter",
+"		1308 0001  NetCelerator Adapter",
+"1309  AB Semiconductor Ltd",
+"130a  Mitsubishi Electric Microcomputer",
+"130b  Colorgraphic Communications Corp",
+"130c  Ambex Technologies, Inc",
+"130d  Accelerix Inc",
+"130e  Yamatake-Honeywell Co. Ltd",
+"130f  Advanet Inc",
+"1310  Gespac",
+"1311  Videoserver, Inc",
+"1312  Acuity Imaging, Inc",
+"1313  Yaskawa Electric Co.",
+"1316  Teradyne Inc",
+"1317  Linksys",
+"	0981  21x4x DEC-Tulip compatible 10/100 Ethernet",
+"	0985  NC100 Network Everywhere Fast Ethernet 10/100",
+"		1734 100c  Scenic N300 ADMtek AN983 10/100 Mbps PCI Adapter",
+"	1985  21x4x DEC-Tulip compatible 10/100 Ethernet",
+"	2850  HSP MicroModem 56",
+"	5120  ADMtek ADM5120 OpenGate System-on-Chip",
+"	8201  ADMtek ADM8211 802.11b Wireless Interface",
+"		10b8 2635  SMC2635W 802.11b (11Mbps) wireless lan pcmcia (cardbus) card",
+"		1317 8201  SMC2635W 802.11b (11mbps) wireless lan pcmcia (cardbus) card",
+"	8211  ADMtek ADM8211 802.11b Wireless Interface",
+"	9511  21x4x DEC-Tulip compatible 10/100 Ethernet",
+"1318  Packet Engines Inc.",
+"	0911  GNIC-II PCI Gigabit Ethernet [Hamachi]",
+"1319  Fortemedia, Inc",
+"	0801  Xwave QS3000A [FM801]",
+"		1319 1319  FM801 PCI Audio",
+"	0802  Xwave QS3000A [FM801 game port]",
+"		1319 1319  FM801 PCI Joystick",
+"	1000  FM801 PCI Audio",
+"	1001  FM801 PCI Joystick",
+"131a  Finisar Corp.",
+"131c  Nippon Electro-Sensory Devices Corp",
+"131d  Sysmic, Inc.",
+"131e  Xinex Networks Inc",
+"131f  Siig Inc",
+"	1000  CyberSerial (1-port) 16550",
+"	1001  CyberSerial (1-port) 16650",
+"	1002  CyberSerial (1-port) 16850",
+"	1010  Duet 1S(16550)+1P",
+"	1011  Duet 1S(16650)+1P",
+"	1012  Duet 1S(16850)+1P",
+"	1020  CyberParallel (1-port)",
+"	1021  CyberParallel (2-port)",
+"	1030  CyberSerial (2-port) 16550",
+"	1031  CyberSerial (2-port) 16650",
+"	1032  CyberSerial (2-port) 16850",
+"	1034  Trio 2S(16550)+1P",
+"	1035  Trio 2S(16650)+1P",
+"	1036  Trio 2S(16850)+1P",
+"	1050  CyberSerial (4-port) 16550",
+"	1051  CyberSerial (4-port) 16650",
+"	1052  CyberSerial (4-port) 16850",
+"	2000  CyberSerial (1-port) 16550",
+"	2001  CyberSerial (1-port) 16650",
+"	2002  CyberSerial (1-port) 16850",
+"	2010  Duet 1S(16550)+1P",
+"	2011  Duet 1S(16650)+1P",
+"	2012  Duet 1S(16850)+1P",
+"	2020  CyberParallel (1-port)",
+"	2021  CyberParallel (2-port)",
+"	2030  CyberSerial (2-port) 16550",
+"		131f 2030  PCI Serial Card",
+"	2031  CyberSerial (2-port) 16650",
+"	2032  CyberSerial (2-port) 16850",
+"	2040  Trio 1S(16550)+2P",
+"	2041  Trio 1S(16650)+2P",
+"	2042  Trio 1S(16850)+2P",
+"	2050  CyberSerial (4-port) 16550",
+"	2051  CyberSerial (4-port) 16650",
+"	2052  CyberSerial (4-port) 16850",
+"	2060  Trio 2S(16550)+1P",
+"	2061  Trio 2S(16650)+1P",
+"	2062  Trio 2S(16850)+1P",
+"	2081  CyberSerial (8-port) ST16654",
+"1320  Crypto AG",
+"1321  Arcobel Graphics BV",
+"1322  MTT Co., Ltd",
+"1323  Dome Inc",
+"1324  Sphere Communications",
+"1325  Salix Technologies, Inc",
+"1326  Seachange international",
+"1327  Voss scientific",
+"1328  quadrant international",
+"1329  Productivity Enhancement",
+"132a  Microcom Inc.",
+"132b  Broadband Technologies",
+"132c  Micrel Inc",
+"132d  Integrated Silicon Solution, Inc.",
+"1330  MMC Networks",
+"1331  Radisys Corp.",
+"	0030  ENP-2611",
+"	8200  82600 Host Bridge",
+"	8201  82600 IDE",
+"	8202  82600 USB",
+"	8210  82600 PCI Bridge",
+"1332  Micro Memory",
+"	5415  MM-5415CN PCI Memory Module with Battery Backup",
+"	5425  MM-5425CN PCI 64/66 Memory Module with Battery Backup",
+"	6140  MM-6140D",
+"1334  Redcreek Communications, Inc",
+"1335  Videomail, Inc",
+"1337  Third Planet Publishing",
+"1338  BT Electronics",
+"133a  Vtel Corp",
+"133b  Softcom Microsystems",
+"133c  Holontech Corp",
+"133d  SS Technologies",
+"133e  Virtual Computer Corp",
+"133f  SCM Microsystems",
+"1340  Atalla Corp",
+"1341  Kyoto Microcomputer Co",
+"1342  Promax Systems Inc",
+"1343  Phylon Communications Inc",
+"1344  Crucial Technology",
+"1345  Arescom Inc",
+"1347  Odetics",
+"1349  Sumitomo Electric Industries, Ltd.",
+"134a  DTC Technology Corp.",
+"	0001  Domex 536",
+"	0002  Domex DMX3194UP SCSI Adapter",
+"134b  ARK Research Corp.",
+"134c  Chori Joho System Co. Ltd",
+"134d  PCTel Inc",
+"	2189  HSP56 MicroModem",
+"	2486  2304WT V.92 MDC Modem",
+"	7890  HSP MicroModem 56",
+"		134d 0001  PCT789 adapter",
+"	7891  HSP MicroModem 56",
+"		134d 0001  HSP MicroModem 56",
+"	7892  HSP MicroModem 56",
+"	7893  HSP MicroModem 56",
+"	7894  HSP MicroModem 56",
+"	7895  HSP MicroModem 56",
+"	7896  HSP MicroModem 56",
+"	7897  HSP MicroModem 56",
+"134e  CSTI",
+"134f  Algo System Co Ltd",
+"1350  Systec Co. Ltd",
+"1351  Sonix Inc",
+"1353  Thales Idatys",
+"	0002  Proserver",
+"	0003  PCI-FUT",
+"	0004  PCI-S0",
+"	0005  PCI-FUT-S0",
+"1354  Dwave System Inc",
+"1355  Kratos Analytical Ltd",
+"1356  The Logical Co",
+"1359  Prisa Networks",
+"135a  Brain Boxes",
+"135b  Giganet Inc",
+"135c  Quatech Inc",
+"	0010  QSC-100",
+"	0020  DSC-100",
+"	0030  DSC-200/300",
+"	0040  QSC-200/300",
+"	0050  ESC-100D",
+"	0060  ESC-100M",
+"	00f0  MPAC-100 Syncronous Serial Card (Zilog 85230)",
+"	0170  QSCLP-100",
+"	0180  DSCLP-100",
+"	0190  SSCLP-100",
+"	01a0  QSCLP-200/300",
+"	01b0  DSCLP-200/300",
+"	01c0  SSCLP-200/300",
+"135d  ABB Network Partner AB",
+"135e  Sealevel Systems Inc",
+"	5101  Route 56.PCI - Multi-Protocol Serial Interface (Zilog Z16C32)",
+"	7101  Single Port RS-232/422/485/530",
+"	7201  Dual Port RS-232/422/485 Interface",
+"	7202  Dual Port RS-232 Interface",
+"	7401  Four Port RS-232 Interface",
+"	7402  Four Port RS-422/485 Interface",
+"	7801  Eight Port RS-232 Interface",
+"	7804  Eight Port RS-232/422/485 Interface",
+"	8001  8001 Digital I/O Adapter",
+"135f  I-Data International A-S",
+"1360  Meinberg Funkuhren",
+"	0101  PCI32 DCF77 Radio Clock",
+"	0102  PCI509 DCF77 Radio Clock",
+"	0103  PCI510 DCF77 Radio Clock",
+"	0104  PCI511 DCF77 Radio Clock",
+"	0201  GPS167PCI GPS Receiver",
+"	0202  GPS168PCI GPS Receiver",
+"	0203  GPS169PCI GPS Receiver",
+"	0204  GPS170PCI GPS Receiver",
+"	0301  TCR510PCI IRIG Timecode Reader",
+"	0302  TCR167PCI IRIG Timecode Reader",
+"1361  Soliton Systems K.K.",
+"1362  Fujifacom Corporation",
+"1363  Phoenix Technology Ltd",
+"1364  ATM Communications Inc",
+"1365  Hypercope GmbH",
+"1366  Teijin Seiki Co. Ltd",
+"1367  Hitachi Zosen Corporation",
+"1368  Skyware Corporation",
+"1369  Digigram",
+"136a  High Soft Tech",
+"136b  Kawasaki Steel Corporation",
+"	ff01  KL5A72002 Motion JPEG",
+"136c  Adtek System Science Co Ltd",
+"136d  Gigalabs Inc",
+"136f  Applied Magic Inc",
+"1370  ATL Products",
+"1371  CNet Technology Inc",
+"	434e  GigaCard Network Adapter",
+"		1371 434e  N-Way PCI-Bus Giga-Card 1000/100/10Mbps(L)",
+"1373  Silicon Vision Inc",
+"1374  Silicom Ltd.",
+"	0024  Silicom Dual port Giga Ethernet BGE Bypass Server Adapter",
+"	0025  Silicom Quad port Giga Ethernet BGE Bypass Server Adapter",
+"	0026  Silicom Dual port Fiber Giga Ethernet 546 Bypass Server Adapter",
+"	0027  Silicom Dual port Fiber LX Giga Ethernet 546 Bypass Server Adapter",
+"	0029  Silicom Dual port Copper Giga Ethernet 546GB Bypass Server Adapter",
+"	002a  Silicom Dual port Fiber Giga Ethernet 546 TAP/Bypass Server Adapter",
+"	002b  Silicom Dual port Copper Fast Ethernet 546 TAP/Bypass Server Adapter (PXE2TBI)",
+"	002c  Silicom Quad port Copper Giga Ethernet 546GB Bypass Server Adapter (PXG4BPI)",
+"	002d  Silicom Quad port Fiber-SX Giga Ethernet 546GB Bypass Server Adapter (PXG4BPFI)",
+"	002e  Silicom Quad port Fiber-LX Giga Ethernet 546GB Bypass Server Adapter (PXG4BPFI-LX)",
+"	002f  Silicom Dual port Fiber-SX Giga Ethernet 546GB Low profile Bypass Server Adapter (PXG2BPFIL)",
+"	0030  Silicom Dual port Fiber-LX Giga Ethernet 546GB Low profile Bypass Server Adapter",
+"	0031  Silicom Quad port Copper Giga Ethernet PCI-E Bypass Server Adapter",
+"	0032  Silicom Dual port Copper Fast Ethernet 546 TAP/Bypass Server Adapter",
+"	0034  Silicom Dual port Copper Giga Ethernet PCI-E BGE Bypass Server Adapter",
+"	0035  Silicom Quad port Copper Giga Ethernet PCI-E BGE Bypass Server Adapter",
+"	0036  Silicom Dual port Fiber Giga Ethernet PCI-E BGE Bypass Server Adapter",
+"	0037  Silicom Quad port Copper Ethernet PCI-E Intel based Bypass Server Adapter",
+"	0038  Silicom Quad port Copper Ethernet PCI-E Intel based Bypass Server Adapter",
+"	0039  Silicom Dual port Fiber-SX Ethernet PCI-E Intel based Bypass Server Adapter",
+"	003a  Silicom Dual port Fiber-LX Ethernet PCI-E Intel based Bypass Server Adapter",
+"1375  Argosystems Inc",
+"1376  LMC",
+"1377  Electronic Equipment Production & Distribution GmbH",
+"1378  Telemann Co. Ltd",
+"1379  Asahi Kasei Microsystems Co Ltd",
+"137a  Mark of the Unicorn Inc",
+"	0001  PCI-324 Audiowire Interface",
+"137b  PPT Vision",
+"137c  Iwatsu Electric Co Ltd",
+"137d  Dynachip Corporation",
+"137e  Patriot Scientific Corporation",
+"137f  Japan Satellite Systems Inc",
+"1380  Sanritz Automation Co Ltd",
+"1381  Brains Co. Ltd",
+"1382  Marian - Electronic & Software",
+"	0001  ARC88 audio recording card",
+"	2008  Prodif 96 Pro sound system",
+"	2048  Prodif Plus sound system",
+"	2088  Marc 8 Midi sound system",
+"	20c8  Marc A sound system",
+"	4008  Marc 2 sound system",
+"	4010  Marc 2 Pro sound system",
+"	4048  Marc 4 MIDI sound system",
+"	4088  Marc 4 Digi sound system",
+"	4248  Marc X sound system",
+"	4424  TRACE D4 Sound System",
+"1383  Controlnet Inc",
+"1384  Reality Simulation Systems Inc",
+"1385  Netgear",
+"	0013  WG311T 108 Mbps Wireless PCI Adapter",
+"	311a  GA511 Gigabit Ethernet",
+"	4100  802.11b Wireless Adapter (MA301)",
+"	4105  MA311 802.11b wireless adapter",
+"	4251  WG111T 108 Mbps Wireless USB 2.0 Adapter",
+"	4400  WAG511 802.11a/b/g Dual Band Wireless PC Card",
+"	4600  WAG511 802.11a/b/g Dual Band Wireless PC Card",
+"	4601  WAG511 802.11a/b/g Dual Band Wireless PC Card",
+"	4610  WAG511 802.11a/b/g Dual Band Wireless PC Card",
+"	4800  WG511(v1) 54 Mbps Wireless PC Card",
+"	4900  WG311v1 54 Mbps Wireless PCI Adapter",
+"	4a00  WAG311 802.11a/g Wireless PCI Adapter",
+"	4b00  WG511T 108 Mbps Wireless PC Card",
+"	4c00  WG311v2 54 Mbps Wireless PCI Adapter",
+"	4d00  WG311T 108 Mbps Wireless PCI Adapter",
+"	4e00  WG511v2 54 Mbps Wireless PC Card",
+"	4f00  WG511U Double 108 Mbps  Wireless PC Card",
+"	5200  GA511 Gigabit PC Card",
+"	620a  GA620 Gigabit Ethernet",
+"	622a  GA622",
+"	630a  GA630 Gigabit Ethernet",
+"	6b00  WG311v3 54 Mbps Wireless PCI Adapter",
+"	6d00  WPNT511 RangeMax 240 Mbps Wireless PC Card",
+"	f004  FA310TX",
+"1386  Video Domain Technologies",
+"1387  Systran Corp",
+"1388  Hitachi Information Technology Co Ltd",
+"1389  Applicom International",
+"	0001  PCI1500PFB [Intelligent fieldbus adaptor]",
+"138a  Fusion Micromedia Corp",
+"138b  Tokimec Inc",
+"138c  Silicon Reality",
+"138d  Future Techno Designs pte Ltd",
+"138e  Basler GmbH",
+"138f  Patapsco Designs Inc",
+"1390  Concept Development Inc",
+"1391  Development Concepts Inc",
+"1392  Medialight Inc",
+"1393  Moxa Technologies Co Ltd",
+"	1040  Smartio C104H/PCI",
+"	1141  Industrio CP-114",
+"	1680  Smartio C168H/PCI",
+"	2040  Intellio CP-204J",
+"	2180  Intellio C218 Turbo PCI",
+"	3200  Intellio C320 Turbo PCI",
+"1394  Level One Communications",
+"	0001  LXT1001 Gigabit Ethernet",
+"		1394 0001  NetCelerator Adapter",
+"1395  Ambicom Inc",
+"1396  Cipher Systems Inc",
+"1397  Cologne Chip Designs GmbH",
+"	08b4  ISDN network Controller [HFC-4S]",
+"		1397 b520  HFC-4S [IOB4ST]",
+"		1397 b540  HFC-4S [Swyx 4xS0 SX2 QuadBri]",
+"	16b8  ISDN network Controller [HFC-8S]",
+"	2bd0  ISDN network controller [HFC-PCI]",
+"		0675 1704  ISDN Adapter (PCI Bus, D, C)",
+"		0675 1708  ISDN Adapter (PCI Bus, D, C, ACPI)",
+"		1397 2bd0  ISDN Board",
+"		e4bf 1000  CI1-1-Harp",
+"1398  Clarion co. Ltd",
+"1399  Rios systems Co Ltd",
+"139a  Alacritech Inc",
+"	0001  Quad Port 10/100 Server Accelerator",
+"	0003  Single Port 10/100 Server Accelerator",
+"	0005  Single Port Gigabit Server Accelerator",
+"139b  Mediasonic Multimedia Systems Ltd",
+"139c  Quantum 3d Inc",
+"139d  EPL limited",
+"139e  Media4",
+"139f  Aethra s.r.l.",
+"13a0  Crystal Group Inc",
+"13a1  Kawasaki Heavy Industries Ltd",
+"13a2  Ositech Communications Inc",
+"13a3  Hifn Inc.",
+"	0005  7751 Security Processor",
+"	0006  6500 Public Key Processor",
+"	0007  7811 Security Processor",
+"	0012  7951 Security Processor",
+"	0014  78XX Security Processor",
+"	0016  8065 Security Processor",
+"	0017  8165 Security Processor",
+"	0018  8154 Security Processor",
+"	001d  7956 Security Processor",
+"	0020  7955 Security Processor",
+"	0026  8155 Security Processor",
+"13a4  Rascom Inc",
+"13a5  Audio Digital Imaging Inc",
+"13a6  Videonics Inc",
+"13a7  Teles AG",
+"13a8  Exar Corp.",
+"	0152  XR17C/D152 Dual PCI UART",
+"	0154  XR17C154 Quad UART",
+"	0158  XR17C158 Octal UART",
+"13a9  Siemens Medical Systems, Ultrasound Group",
+"13aa  Broadband Networks Inc",
+"13ab  Arcom Control Systems Ltd",
+"13ac  Motion Media Technology Ltd",
+"13ad  Nexus Inc",
+"13ae  ALD Technology Ltd",
+"13af  T.Sqware",
+"13b0  Maxspeed Corp",
+"13b1  Tamura corporation",
+"13b2  Techno Chips Co. Ltd",
+"13b3  Lanart Corporation",
+"13b4  Wellbean Co Inc",
+"13b5  ARM",
+"13b6  Dlog GmbH",
+"13b7  Logic Devices Inc",
+"13b8  Nokia Telecommunications oy",
+"13b9  Elecom Co Ltd",
+"13ba  Oxford Instruments",
+"13bb  Sanyo Technosound Co Ltd",
+"13bc  Bitran Corporation",
+"13bd  Sharp corporation",
+"13be  Miroku Jyoho Service Co. Ltd",
+"13bf  Sharewave Inc",
+"13c0  Microgate Corporation",
+"	0010  SyncLink Adapter v1",
+"	0020  SyncLink SCC Adapter",
+"	0030  SyncLink Multiport Adapter",
+"	0210  SyncLink Adapter v2",
+"13c1  3ware Inc",
+"	1000  5xxx/6xxx-series PATA-RAID",
+"	1001  7xxx/8xxx-series PATA/SATA-RAID",
+"		13c1 1001  7xxx/8xxx-series PATA/SATA-RAID",
+"	1002  9xxx-series SATA-RAID",
+"	1003  9550SX SATA-RAID",
+"13c2  Technotrend Systemtechnik GmbH",
+"	000e  Technotrend/Hauppauge DVB card rev2.3",
+"13c3  Janz Computer AG",
+"13c4  Phase Metrics",
+"13c5  Alphi Technology Corp",
+"13c6  Condor Engineering Inc",
+"	0520  CEI-520 A429 Card",
+"	0620  CEI-620 A429 Card",
+"	0820  CEI-820 A429 Card",
+"13c7  Blue Chip Technology Ltd",
+"13c8  Apptech Inc",
+"13c9  Eaton Corporation",
+"13ca  Iomega Corporation",
+"13cb  Yano Electric Co Ltd",
+"13cc  Metheus Corporation",
+"13cd  Compatible Systems Corporation",
+"13ce  Cocom A/S",
+"13cf  Studio Audio & Video Ltd",
+"13d0  Techsan Electronics Co Ltd",
+"	2103  B2C2 FlexCopII DVB chip / Technisat SkyStar2 DVB card",
+"	2200  B2C2 FlexCopIII DVB chip / Technisat SkyStar2 DVB card",
+"13d1  Abocom Systems Inc",
+"	ab02  ADMtek Centaur-C rev 17 [D-Link DFE-680TX] CardBus Fast Ethernet Adapter",
+"	ab03  21x4x DEC-Tulip compatible 10/100 Ethernet",
+"	ab06  RTL8139 [FE2000VX] CardBus Fast Ethernet Attached Port Adapter",
+"	ab08  21x4x DEC-Tulip compatible 10/100 Ethernet",
+"13d2  Shark Multimedia Inc",
+"13d3  IMC Networks",
+"13d4  Graphics Microsystems Inc",
+"13d5  Media 100 Inc",
+"13d6  K.I. Technology Co Ltd",
+"13d7  Toshiba Engineering Corporation",
+"13d8  Phobos corporation",
+"13d9  Apex PC Solutions Inc",
+"13da  Intresource Systems pte Ltd",
+"13db  Janich & Klass Computertechnik GmbH",
+"13dc  Netboost Corporation",
+"13dd  Multimedia Bundle Inc",
+"13de  ABB Robotics Products AB",
+"13df  E-Tech Inc",
+"	0001  PCI56RVP Modem",
+"		13df 0001  PCI56RVP Modem",
+"13e0  GVC Corporation",
+"13e1  Silicom Multimedia Systems Inc",
+"13e2  Dynamics Research Corporation",
+"13e3  Nest Inc",
+"13e4  Calculex Inc",
+"13e5  Telesoft Design Ltd",
+"13e6  Argosy research Inc",
+"13e7  NAC Incorporated",
+"13e8  Chip Express Corporation",
+"13e9  Intraserver Technology Inc",
+"13ea  Dallas Semiconductor",
+"13eb  Hauppauge Computer Works Inc",
+"13ec  Zydacron Inc",
+"	000a  NPC-RC01 Remote control receiver",
+"13ed  Raytheion E-Systems",
+"13ee  Hayes Microcomputer Products Inc",
+"13ef  Coppercom Inc",
+"13f0  Sundance Technology Inc / IC Plus Corp",
+"	0200  IC Plus IP100A Integrated 10/100 Ethernet MAC + PHY",
+"	0201  ST201 Sundance Ethernet",
+"	1023  IC Plus IP1000 Family Gigabit Ethernet",
+"13f1  Oce' - Technologies B.V.",
+"13f2  Ford Microelectronics Inc",
+"13f3  Mcdata Corporation",
+"13f4  Troika Networks, Inc.",
+"	1401  Zentai Fibre Channel Adapter",
+"13f5  Kansai Electric Co. Ltd",
+"13f6  C-Media Electronics Inc",
+"	0011  CMI8738",
+"	0100  CM8338A",
+"		13f6 ffff  CMI8338/C3DX PCI Audio Device",
+"	0101  CM8338B",
+"		13f6 0101  CMI8338-031 PCI Audio Device",
+"	0111  CM8738",
+"		1019 0970  P6STP-FL motherboard",
+"		1043 8035  CUSI-FX motherboard",
+"		1043 8077  CMI8738 6-channel audio controller",
+"		1043 80e2  CMI8738 6ch-MX",
+"		13f6 0111  CMI8738/C3DX PCI Audio Device",
+"		1681 a000  Gamesurround MUSE XL",
+"	0211  CM8738",
+"13f7  Wildfire Communications",
+"13f8  Ad Lib Multimedia Inc",
+"13f9  NTT Advanced Technology Corp.",
+"13fa  Pentland Systems Ltd",
+"13fb  Aydin Corp",
+"13fc  Computer Peripherals International",
+"13fd  Micro Science Inc",
+"13fe  Advantech Co. Ltd",
+"	1240  PCI-1240 4-channel stepper motor controller card",
+"	1600  PCI-1612 4-port RS-232/422/485 PCI communication card",
+"	1733  PCI-1733 32-channel isolated digital input card",
+"	1752  PCI-1752",
+"	1754  PCI-1754",
+"	1756  PCI-1756",
+"13ff  Silicon Spice Inc",
+"1400  Artx Inc",
+"	1401  9432 TX",
+"1401  CR-Systems A/S",
+"1402  Meilhaus Electronic GmbH",
+"1403  Ascor Inc",
+"1404  Fundamental Software Inc",
+"1405  Excalibur Systems Inc",
+"1406  Oce' Printing Systems GmbH",
+"1407  Lava Computer mfg Inc",
+"	0100  Lava Dual Serial",
+"	0101  Lava Quatro A",
+"	0102  Lava Quatro B",
+"	0110  Lava DSerial-PCI Port A",
+"	0111  Lava DSerial-PCI Port B",
+"	0120  Quattro-PCI A",
+"	0121  Quattro-PCI B",
+"	0180  Lava Octo A",
+"	0181  Lava Octo B",
+"	0200  Lava Port Plus",
+"	0201  Lava Quad A",
+"	0202  Lava Quad B",
+"	0220  Lava Quattro PCI Ports A/B",
+"	0221  Lava Quattro PCI Ports C/D",
+"	0500  Lava Single Serial",
+"	0600  Lava Port 650",
+"	8000  Lava Parallel",
+"	8001  Dual parallel port controller A",
+"	8002  Lava Dual Parallel port A",
+"	8003  Lava Dual Parallel port B",
+"	8800  BOCA Research IOPPAR",
+"1408  Aloka Co. Ltd",
+"1409  Timedia Technology Co Ltd",
+"	7168  PCI2S550 (Dual 16550 UART)",
+"140a  DSP Research Inc",
+"140b  Ramix Inc",
+"140c  Elmic Systems Inc",
+"140d  Matsushita Electric Works Ltd",
+"140e  Goepel Electronic GmbH",
+"140f  Salient Systems Corp",
+"1410  Midas lab Inc",
+"1411  Ikos Systems Inc",
+"1412  VIA Technologies Inc.",
+"	1712  ICE1712 [Envy24] PCI Multi-Channel I/O Controller",
+"		1412 1712  Hoontech ST Audio DSP 24",
+"		1412 d630  M-Audio Delta 1010",
+"		1412 d631  M-Audio Delta DiO",
+"		1412 d632  M-Audio Delta 66",
+"		1412 d633  M-Audio Delta 44",
+"		1412 d634  M-Audio Delta Audiophile",
+"		1412 d635  M-Audio Delta TDIF",
+"		1412 d637  M-Audio Delta RBUS",
+"		1412 d638  M-Audio Delta 410",
+"		1412 d63b  M-Audio Delta 1010LT",
+"		1412 d63c  Digigram VX442",
+"		1416 1712  Hoontech ST Audio DSP 24 Media 7.1",
+"		153b 1115  EWS88 MT",
+"		153b 1125  EWS88 MT (Master)",
+"		153b 112b  EWS88 D",
+"		153b 112c  EWS88 D (Master)",
+"		153b 1130  EWX 24/96",
+"		153b 1138  DMX 6fire 24/96",
+"		153b 1151  PHASE88",
+"		16ce 1040  Edirol DA-2496",
+"	1724  VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller",
+"		1412 1724  Albatron PX865PE 7.1",
+"		1412 3630  M-Audio Revolution 7.1",
+"		1412 3631  M-Audio Revolution 5.1",
+"		153b 1145  Aureon 7.1 Space",
+"		153b 1147  Aureon 5.1 Sky",
+"		153b 1153  Aureon 7.1 Universe",
+"		270f f641  ZNF3-150",
+"		270f f645  ZNF3-250",
+"1413  Addonics",
+"1414  Microsoft Corporation",
+"1415  Oxford Semiconductor Ltd",
+"	8403  VScom 011H-EP1 1 port parallel adaptor",
+"	9501  OX16PCI954 (Quad 16950 UART) function 0",
+"		131f 2050  CyberPro (4-port)",
+"		131f 2051  CyberSerial 4S Plus",
+"		15ed 2000  MCCR Serial p0-3 of 8",
+"		15ed 2001  MCCR Serial p0-3 of 16",
+"	950a  EXSYS EX-41092 Dual 16950 Serial adapter",
+"	950b  OXCB950 Cardbus 16950 UART",
+"	9510  OX16PCI954 (Quad 16950 UART) function 1 (Disabled)",
+"	9511  OX16PCI954 (Quad 16950 UART) function 1",
+"		15ed 2000  MCCR Serial p4-7 of 8",
+"		15ed 2001  MCCR Serial p4-15 of 16",
+"	9521  OX16PCI952 (Dual 16950 UART)",
+"	9523  OX16PCI952 Integrated Parallel Port",
+"1416  Multiwave Innovation pte Ltd",
+"1417  Convergenet Technologies Inc",
+"1418  Kyushu electronics systems Inc",
+"1419  Excel Switching Corp",
+"141a  Apache Micro Peripherals Inc",
+"141b  Zoom Telephonics Inc",
+"141d  Digitan Systems Inc",
+"141e  Fanuc Ltd",
+"141f  Visiontech Ltd",
+"1420  Psion Dacom plc",
+"	8002  Gold Card NetGlobal 56k+10/100Mb CardBus (Ethernet part)",
+"	8003  Gold Card NetGlobal 56k+10/100Mb CardBus (Modem part)",
+"1421  Ads Technologies Inc",
+"1422  Ygrec Systems Co Ltd",
+"1423  Custom Technology Corp.",
+"1424  Videoserver Connections",
+"1425  Chelsio Communications Inc",
+"	000b  T210 Protocol Engine",
+"1426  Storage Technology Corp.",
+"1427  Better On-Line Solutions",
+"1428  Edec Co Ltd",
+"1429  Unex Technology Corp.",
+"142a  Kingmax Technology Inc",
+"142b  Radiolan",
+"142c  Minton Optic Industry Co Ltd",
+"142d  Pix stream Inc",
+"142e  Vitec Multimedia",
+"	4020  VM2-2 [Video Maker 2] MPEG1/2 Encoder",
+"	4337  VM2-2-C7 [Video Maker 2 rev. C7] MPEG1/2 Encoder",
+"142f  Radicom Research Inc",
+"1430  ITT Aerospace/Communications Division",
+"1431  Gilat Satellite Networks",
+"1432  Edimax Computer Co.",
+"	9130  RTL81xx Fast Ethernet",
+"1433  Eltec Elektronik GmbH",
+"1435  RTD Embedded Technologies, Inc.",
+"1436  CIS Technology Inc",
+"1437  Nissin Inc Co",
+"1438  Atmel-dream",
+"1439  Outsource Engineering & Mfg. Inc",
+"143a  Stargate Solutions Inc",
+"143b  Canon Research Center, America",
+"143c  Amlogic Inc",
+"143d  Tamarack Microelectronics Inc",
+"143e  Jones Futurex Inc",
+"143f  Lightwell Co Ltd - Zax Division",
+"1440  ALGOL Corp.",
+"1441  AGIE Ltd",
+"1442  Phoenix Contact GmbH & Co.",
+"1443  Unibrain S.A.",
+"1444  TRW",
+"1445  Logical DO Ltd",
+"1446  Graphin Co Ltd",
+"1447  AIM GmBH",
+"1448  Alesis Studio Electronics",
+"1449  TUT Systems Inc",
+"144a  Adlink Technology",
+"	7296  PCI-7296",
+"	7432  PCI-7432",
+"	7433  PCI-7433",
+"	7434  PCI-7434",
+"	7841  PCI-7841",
+"	8133  PCI-8133",
+"	8164  PCI-8164",
+"	8554  PCI-8554",
+"	9111  PCI-9111",
+"	9113  PCI-9113",
+"	9114  PCI-9114",
+"144b  Loronix Information Systems Inc",
+"144c  Catalina Research Inc",
+"144d  Samsung Electronics Co Ltd",
+"	c00c  P35 laptop",
+"144e  OLITEC",
+"144f  Askey Computer Corp.",
+"1450  Octave Communications Ind.",
+"1451  SP3D Chip Design GmBH",
+"1453  MYCOM Inc",
+"1454  Altiga Networks",
+"1455  Logic Plus Plus Inc",
+"1456  Advanced Hardware Architectures",
+"1457  Nuera Communications Inc",
+"1458  Giga-byte Technology",
+"	0c11  K8NS Pro Mainboard",
+"	e911  GN-WIAG02",
+"1459  DOOIN Electronics",
+"145a  Escalate Networks Inc",
+"145b  PRAIM SRL",
+"145c  Cryptek",
+"145d  Gallant Computer Inc",
+"145e  Aashima Technology B.V.",
+"145f  Baldor Electric Company",
+"	0001  NextMove PCI",
+"1460  DYNARC INC",
+"1461  Avermedia Technologies Inc",
+"	f436  AVerTV Hybrid+FM",
+"1462  Micro-Star International Co., Ltd.",
+"	5501  nVidia NV15DDR [GeForce2 Ti]",
+"	6819  Broadcom Corporation BCM4306 802.11b/g Wireless LAN Controller [MSI CB54G]",
+"	6825  PCI Card wireless 11g [PC54G]",
+"	6834  RaLink RT2500 802.11g [PC54G2]",
+"	7125  K8N motherboard",
+"	8725  NVIDIA NV25 [GeForce4 Ti 4600] VGA Adapter",
+"	9000  NVIDIA NV28 [GeForce4 Ti 4800] VGA Adapter",
+"	9110  GeFORCE FX5200",
+"	9119  NVIDIA NV31 [GeForce FX 5600XT] VGA Adapter",
+"	9123  NVIDIA NV31 [GeForce FX 5600] FX5600-VTDR128 [MS-8912]",
+"	9591  nVidia Corporation NV36 [GeForce FX 5700LE]",
+"1463  Fast Corporation",
+"1464  Interactive Circuits & Systems Ltd",
+"1465  GN NETTEST Telecom DIV.",
+"1466  Designpro Inc.",
+"1467  DIGICOM SPA",
+"1468  AMBIT Microsystem Corp.",
+"1469  Cleveland Motion Controls",
+"146a  IFR",
+"146b  Parascan Technologies Ltd",
+"146c  Ruby Tech Corp.",
+"	1430  FE-1430TX Fast Ethernet PCI Adapter",
+"146d  Tachyon, INC.",
+"146e  Williams Electronics Games, Inc.",
+"146f  Multi Dimensional Consulting Inc",
+"1470  Bay Networks",
+"1471  Integrated Telecom Express Inc",
+"1472  DAIKIN Industries, Ltd",
+"1473  ZAPEX Technologies Inc",
+"1474  Doug Carson & Associates",
+"1475  PICAZO Communications",
+"1476  MORTARA Instrument Inc",
+"1477  Net Insight",
+"1478  DIATREND Corporation",
+"1479  TORAY Industries Inc",
+"147a  FORMOSA Industrial Computing",
+"147b  ABIT Computer Corp.",
+"147c  AWARE, Inc.",
+"147d  Interworks Computer Products",
+"147e  Matsushita Graphic Communication Systems, Inc.",
+"147f  NIHON UNISYS, Ltd.",
+"1480  SCII Telecom",
+"1481  BIOPAC Systems Inc",
+"1482  ISYTEC - Integrierte Systemtechnik GmBH",
+"1483  LABWAY Corporation",
+"1484  Logic Corporation",
+"1485  ERMA - Electronic GmBH",
+"1486  L3 Communications Telemetry & Instrumentation",
+"1487  MARQUETTE Medical Systems",
+"1488  KONTRON Electronik GmBH",
+"1489  KYE Systems Corporation",
+"148a  OPTO",
+"148b  INNOMEDIALOGIC Inc.",
+"148c  C.P. Technology Co. Ltd",
+"148d  DIGICOM Systems, Inc.",
+"	1003  HCF 56k Data/Fax Modem",
+"148e  OSI Plus Corporation",
+"148f  Plant Equipment, Inc.",
+"1490  Stone Microsystems PTY Ltd.",
+"1491  ZEAL Corporation",
+"1492  Time Logic Corporation",
+"1493  MAKER Communications",
+"1494  WINTOP Technology, Inc.",
+"1495  TOKAI Communications Industry Co. Ltd",
+"1496  JOYTECH Computer Co., Ltd.",
+"1497  SMA Regelsysteme GmBH",
+"	1497  SMA Technologie AG",
+"1498  TEWS Datentechnik GmBH",
+"	0330  TPMC816 2 Channel CAN bus controller.",
+"	0385  TPMC901 Extended CAN bus with 2/4/6 CAN controller",
+"	21cd  TCP461 CompactPCI 8 Channel Serial Interface RS232/RS422",
+"	30c8  TPCI200",
+"1499  EMTEC CO., Ltd",
+"149a  ANDOR Technology Ltd",
+"149b  SEIKO Instruments Inc",
+"149c  OVISLINK Corp.",
+"149d  NEWTEK Inc",
+"	0001  Video Toaster for PC",
+"149e  Mapletree Networks Inc.",
+"149f  LECTRON Co Ltd",
+"14a0  SOFTING GmBH",
+"14a1  Systembase Co Ltd",
+"14a2  Millennium Engineering Inc",
+"14a3  Maverick Networks",
+"14a4  GVC/BCM Advanced Research",
+"14a5  XIONICS Document Technologies Inc",
+"14a6  INOVA Computers GmBH & Co KG",
+"14a7  MYTHOS Systems Inc",
+"14a8  FEATRON Technologies Corporation",
+"14a9  HIVERTEC Inc",
+"14aa  Advanced MOS Technology Inc",
+"14ab  Mentor Graphics Corp.",
+"14ac  Novaweb Technologies Inc",
+"14ad  Time Space Radio AB",
+"14ae  CTI, Inc",
+"14af  Guillemot Corporation",
+"	7102  3D Prophet II MX",
+"14b0  BST Communication Technology Ltd",
+"14b1  Nextcom K.K.",
+"14b2  ENNOVATE Networks Inc",
+"14b3  XPEED Inc",
+"	0000  DSL NIC",
+"14b4  PHILIPS Business Electronics B.V.",
+"14b5  Creamware GmBH",
+"	0200  Scope",
+"	0300  Pulsar",
+"	0400  PulsarSRB",
+"	0600  Pulsar2",
+"	0800  DSP-Board",
+"	0900  DSP-Board",
+"	0a00  DSP-Board",
+"	0b00  DSP-Board",
+"14b6  Quantum Data Corp.",
+"14b7  PROXIM Inc",
+"	0001  Symphony 4110",
+"14b8  Techsoft Technology Co Ltd",
+"14b9  AIRONET Wireless Communications",
+"	0001  PC4800",
+"	0340  PC4800",
+"	0350  PC4800",
+"	4500  PC4500",
+"	4800  Cisco Aironet 340 802.11b Wireless LAN Adapter/Aironet PC4800",
+"	a504  Cisco Aironet Wireless 802.11b",
+"	a505  Cisco Aironet CB20a 802.11a Wireless LAN Adapter",
+"	a506  Cisco Aironet Mini PCI b/g",
+"14ba  INTERNIX Inc.",
+"14bb  SEMTECH Corporation",
+"14bc  Globespan Semiconductor Inc.",
+"14bd  CARDIO Control N.V.",
+"14be  L3 Communications",
+"14bf  SPIDER Communications Inc.",
+"14c0  COMPAL Electronics Inc",
+"14c1  MYRICOM Inc.",
+"	0008  Myri-10G Dual-Protocol Interconnect",
+"	8043  Myrinet 2000 Scalable Cluster Interconnect",
+"14c2  DTK Computer",
+"14c3  MEDIATEK Corp.",
+"14c4  IWASAKI Information Systems Co Ltd",
+"14c5  Automation Products AB",
+"14c6  Data Race Inc",
+"14c7  Modular Technology Holdings Ltd",
+"14c8  Turbocomm Tech. Inc.",
+"14c9  ODIN Telesystems Inc",
+"14ca  PE Logic Corp.",
+"14cb  Billionton Systems Inc",
+"14cc  NAKAYO Telecommunications Inc",
+"14cd  Universal Scientific Ind.",
+"14ce  Whistle Communications",
+"14cf  TEK Microsystems Inc.",
+"14d0  Ericsson Axe R & D",
+"14d1  Computer Hi-Tech Co Ltd",
+"14d2  Titan Electronics Inc",
+"	8001  VScom 010L 1 port parallel adaptor",
+"	8002  VScom 020L 2 port parallel adaptor",
+"	8010  VScom 100L 1 port serial adaptor",
+"	8011  VScom 110L 1 port serial and 1 port parallel adaptor",
+"	8020  VScom 200L 1 port serial adaptor",
+"	8021  VScom 210L 2 port serial and 1 port parallel adaptor",
+"	8040  VScom 400L 4 port serial adaptor",
+"	8080  VScom 800L 8 port serial adaptor",
+"	a000  VScom 010H 1 port parallel adaptor",
+"	a001  VScom 100H 1 port serial adaptor",
+"	a003  VScom 400H 4 port serial adaptor",
+"	a004  VScom 400HF1 4 port serial adaptor",
+"	a005  VScom 200H 2 port serial adaptor",
+"	e001  VScom 010HV2 1 port parallel adaptor",
+"	e010  VScom 100HV2 1 port serial adaptor",
+"	e020  VScom 200HV2 2 port serial adaptor",
+"14d3  CIRTECH (UK) Ltd",
+"14d4  Panacom Technology Corp",
+"14d5  Nitsuko Corporation",
+"14d6  Accusys Inc",
+"14d7  Hirakawa Hewtech Corp",
+"14d8  HOPF Elektronik GmBH",
+"14d9  Alliance Semiconductor Corporation",
+"	0010  AP1011/SP1011 HyperTransport-PCI Bridge [Sturgeon]",
+"	9000  AS90L10204/10208 HyperTransport to PCI-X Bridge",
+"14da  National Aerospace Laboratories",
+"14db  AFAVLAB Technology Inc",
+"	2120  TK9902",
+"	2182  AFAVLAB Technology Inc. 8-port serial card",
+"14dc  Amplicon Liveline Ltd",
+"	0000  PCI230",
+"	0001  PCI242",
+"	0002  PCI244",
+"	0003  PCI247",
+"	0004  PCI248",
+"	0005  PCI249",
+"	0006  PCI260",
+"	0007  PCI224",
+"	0008  PCI234",
+"	0009  PCI236",
+"	000a  PCI272",
+"	000b  PCI215",
+"14dd  Boulder Design Labs Inc",
+"14de  Applied Integration Corporation",
+"14df  ASIC Communications Corp",
+"14e1  INVERTEX",
+"14e2  INFOLIBRIA",
+"14e3  AMTELCO",
+"14e4  Broadcom Corporation",
+"	0800  Sentry5 Chipcommon I/O Controller",
+"	0804  Sentry5 PCI Bridge",
+"	0805  Sentry5 MIPS32 CPU",
+"	0806  Sentry5 Ethernet Controller",
+"	080b  Sentry5 Crypto Accelerator",
+"	080f  Sentry5 DDR/SDR RAM Controller",
+"	0811  Sentry5 External Interface Core",
+"	0816  BCM3302 Sentry5 MIPS32 CPU",
+"	1600  NetXtreme BCM5752 Gigabit Ethernet PCI Express",
+"	1601  NetXtreme BCM5752M Gigabit Ethernet PCI Express",
+"	1644  NetXtreme BCM5700 Gigabit Ethernet",
+"		1014 0277  Broadcom Vigil B5700 1000Base-T",
+"		1028 00d1  Broadcom BCM5700",
+"		1028 0106  Broadcom BCM5700",
+"		1028 0109  Broadcom BCM5700 1000Base-T",
+"		1028 010a  Broadcom BCM5700 1000BaseTX",
+"		10b7 1000  3C996-T 1000Base-T",
+"		10b7 1001  3C996B-T 1000Base-T",
+"		10b7 1002  3C996C-T 1000Base-T",
+"		10b7 1003  3C997-T 1000Base-T Dual Port",
+"		10b7 1004  3C996-SX 1000Base-SX",
+"		10b7 1005  3C997-SX 1000Base-SX Dual Port",
+"		10b7 1008  3C942 Gigabit LOM (31X31)",
+"		14e4 0002  NetXtreme 1000Base-SX",
+"		14e4 0003  NetXtreme 1000Base-SX",
+"		14e4 0004  NetXtreme 1000Base-T",
+"		14e4 1028  NetXtreme 1000BaseTX",
+"		14e4 1644  BCM5700 1000Base-T",
+"	1645  NetXtreme BCM5701 Gigabit Ethernet",
+"		0e11 007c  NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T)",
+"		0e11 007d  NC6770 Gigabit Server Adapter (PCI-X, 1000-SX)",
+"		0e11 0085  NC7780 Gigabit Server Adapter (embedded, WOL)",
+"		0e11 0099  NC7780 Gigabit Server Adapter (embedded, WOL)",
+"		0e11 009a  NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T)",
+"		0e11 00c1  NC6770 Gigabit Server Adapter (PCI-X, 1000-SX)",
+"		1028 0121  Broadcom BCM5701 1000Base-T",
+"		103c 128a  1000Base-T (PCI) [A7061A]",
+"		103c 128b  1000Base-SX (PCI) [A7073A]",
+"		103c 12a4  Core Lan 1000Base-T",
+"		103c 12c1  IOX Core Lan 1000Base-T [A7109AX]",
+"		103c 1300  Core LAN/SCSI Combo [A6794A]",
+"		10a9 8010  IO9/IO10 Gigabit Ethernet (Copper)",
+"		10a9 8011  Gigabit Ethernet (Copper)",
+"		10a9 8012  Gigabit Ethernet (Fiber)",
+"		10b7 1004  3C996-SX 1000Base-SX",
+"		10b7 1006  3C996B-T 1000Base-T",
+"		10b7 1007  3C1000-T 1000Base-T",
+"		10b7 1008  3C940-BR01 1000Base-T",
+"		14e4 0001  BCM5701 1000Base-T",
+"		14e4 0005  BCM5701 1000Base-T",
+"		14e4 0006  BCM5701 1000Base-T",
+"		14e4 0007  BCM5701 1000Base-SX",
+"		14e4 0008  BCM5701 1000Base-T",
+"		14e4 8008  BCM5701 1000Base-T",
+"	1646  NetXtreme BCM5702 Gigabit Ethernet",
+"		0e11 00bb  NC7760 1000BaseTX",
+"		1028 0126  Broadcom BCM5702 1000BaseTX",
+"		14e4 8009  BCM5702 1000BaseTX",
+"	1647  NetXtreme BCM5703 Gigabit Ethernet",
+"		0e11 0099  NC7780 1000BaseTX",
+"		0e11 009a  NC7770 1000BaseTX",
+"		10a9 8010  SGI IO9 Gigabit Ethernet (Copper)",
+"		14e4 0009  BCM5703 1000BaseTX",
+"		14e4 000a  BCM5703 1000BaseSX",
+"		14e4 000b  BCM5703 1000BaseTX",
+"		14e4 8009  BCM5703 1000BaseTX",
+"		14e4 800a  BCM5703 1000BaseTX",
+"	1648  NetXtreme BCM5704 Gigabit Ethernet",
+"		0e11 00cf  NC7772 Gigabit Server Adapter (PCI-X, 10,100,1000-T)",
+"		0e11 00d0  NC7782 Gigabit Server Adapter (PCI-X, 10,100,1000-T)",
+"		0e11 00d1  NC7783 Gigabit Server Adapter (PCI-X, 10,100,1000-T)",
+"		10b7 2000  3C998-T Dual Port 10/100/1000 PCI-X",
+"		10b7 3000  3C999-T Quad Port 10/100/1000 PCI-X",
+"		1166 1648  NetXtreme CIOB-E 1000Base-T",
+"		1734 100b  Primergy RX300",
+"	164a  NetXtreme II BCM5706 Gigabit Ethernet",
+"		103c 3101  NC370T MultifuNCtion Gigabit Server Adapter",
+"	164c  NetXtreme II BCM5708 Gigabit Ethernet",
+"	164d  NetXtreme BCM5702FE Gigabit Ethernet",
+"	1653  NetXtreme BCM5705 Gigabit Ethernet",
+"		0e11 00e3  NC7761 Gigabit Server Adapter",
+"	1654  NetXtreme BCM5705_2 Gigabit Ethernet",
+"		0e11 00e3  NC7761 Gigabit Server Adapter",
+"		103c 3100  NC1020 HP ProLiant Gigabit Server Adapter 32 PCI",
+"		103c 3226  NC150T 4-port Gigabit Combo Switch & Adapter",
+"	1659  NetXtreme BCM5721 Gigabit Ethernet PCI Express",
+"		1014 02c6  eServer xSeries server mainboard",
+"		103c 7031  NC320T PCIe Gigabit Server Adapter",
+"		103c 7032  NC320i PCIe Gigabit Server Adapter",
+"		1734 1061  Primergy RX300 S2",
+"	165d  NetXtreme BCM5705M Gigabit Ethernet",
+"		1028 865d  Latitude D400",
+"	165e  NetXtreme BCM5705M_2 Gigabit Ethernet",
+"		103c 088c  NC8000 laptop",
+"		103c 0890  NC6000 laptop",
+"		103c 099c  NX6110/NC6120",
+"	1668  NetXtreme BCM5714 Gigabit Ethernet",
+"		103c 7039  NC324i PCIe Dual Port Gigabit Server Adapter",
+"	1669  NetXtreme 5714S Gigabit Ethernet",
+"	166a  NetXtreme BCM5780 Gigabit Ethernet",
+"	166b  NetXtreme BCM5780S Gigabit Ethernet",
+"	166e  570x 10/100 Integrated Controller",
+"	1672  NetXtreme BCM5754M Gigabit Ethernet PCI Express",
+"	1673  NetXtreme BCM5755M Gigabit Ethernet PCI Express",
+"	1677  NetXtreme BCM5751 Gigabit Ethernet PCI Express",
+"		1028 0179  Optiplex GX280",
+"		1028 0182  Latitude D610",
+"		1028 0187  Precision M70",
+"		1028 01ad  Optiplex GX620",
+"		103c 3006  DC7100 SFF(DX878AV)",
+"		1734 105d  Scenic W620",
+"	1678  NetXtreme BCM5715 Gigabit Ethernet",
+"	1679  NetXtreme 5715S Gigabit Ethernet",
+"		103c 703c  NC326i PCIe Dual Port Gigabit Server Adapter",
+"	167a  NetXtreme BCM5754 Gigabit Ethernet PCI Express",
+"	167b  NetXtreme BCM5755 Gigabit Ethernet PCI Express",
+"	167d  NetXtreme BCM5751M Gigabit Ethernet PCI Express",
+"	167e  NetXtreme BCM5751F Fast Ethernet PCI Express",
+"	1693  NetLink BCM5787M Gigabit Ethernet PCI Express",
+"	1696  NetXtreme BCM5782 Gigabit Ethernet",
+"		103c 12bc  HP d530 CMT (DG746A)",
+"		14e4 000d  NetXtreme BCM5782 1000Base-T",
+"	169b  NetLink BCM5787 Gigabit Ethernet PCI Express",
+"	169c  NetXtreme BCM5788 Gigabit Ethernet",
+"		103c 308b  MX6125",
+"	169d  NetLink BCM5789 Gigabit Ethernet PCI Express",
+"	16a6  NetXtreme BCM5702X Gigabit Ethernet",
+"		0e11 00bb  NC7760 Gigabit Server Adapter (PCI-X, 10/100/1000-T)",
+"		1028 0126  BCM5702 1000Base-T",
+"		14e4 000c  BCM5702 1000Base-T",
+"		14e4 8009  BCM5702 1000Base-T",
+"	16a7  NetXtreme BCM5703X Gigabit Ethernet",
+"		0e11 00ca  NC7771 Gigabit Server Adapter (PCI-X, 10,100,1000-T)",
+"		0e11 00cb  NC7781 Gigabit Server Adapter (PCI-X, 10,100,1000-T)",
+"		14e4 0009  NetXtreme BCM5703 1000Base-T",
+"		14e4 000a  NetXtreme BCM5703 1000Base-SX",
+"		14e4 000b  NetXtreme BCM5703 1000Base-T",
+"		14e4 800a  NetXtreme BCM5703 1000Base-T",
+"	16a8  NetXtreme BCM5704S Gigabit Ethernet",
+"		10b7 2001  3C998-SX Dual Port 1000-SX PCI-X",
+"	16aa  NetXtreme II BCM5706S Gigabit Ethernet",
+"		103c 3102  NC370F MultifuNCtion Gigabit Server Adapter",
+"	16ac  NetXtreme II BCM5708S Gigabit Ethernet",
+"	16c6  NetXtreme BCM5702A3 Gigabit Ethernet",
+"		10b7 1100  3C1000B-T 10/100/1000 PCI",
+"		14e4 000c  BCM5702 1000Base-T",
+"		14e4 8009  BCM5702 1000Base-T",
+"	16c7  NetXtreme BCM5703 Gigabit Ethernet",
+"		0e11 00ca  NC7771 Gigabit Server Adapter (PCI-X, 10,100,1000-T)",
+"		0e11 00cb  NC7781 Gigabit Server Adapter (PCI-X, 10,100,1000-T)",
+"		103c 12c3  Combo FC/GigE-SX [A9782A]",
+"		103c 12ca  Combo FC/GigE-T [A9784A]",
+"		14e4 0009  NetXtreme BCM5703 1000Base-T",
+"		14e4 000a  NetXtreme BCM5703 1000Base-SX",
+"	16dd  NetLink BCM5781 Gigabit Ethernet PCI Express",
+"	16f7  NetXtreme BCM5753 Gigabit Ethernet PCI Express",
+"	16fd  NetXtreme BCM5753M Gigabit Ethernet PCI Express",
+"	16fe  NetXtreme BCM5753F Fast Ethernet PCI Express",
+"	170c  BCM4401-B0 100Base-TX",
+"		1028 0188  Inspiron 6000 laptop",
+"		1028 0196  Inspiron 5160",
+"		103c 099c  NX6110/NC6120",
+"	170d  NetXtreme BCM5901 100Base-TX",
+"		1014 0545  ThinkPad R40e (2684-HVG) builtin ethernet controller",
+"	170e  NetXtreme BCM5901 100Base-TX",
+"	3352  BCM3352",
+"	3360  BCM3360",
+"	4210  BCM4210 iLine10 HomePNA 2.0",
+"	4211  BCM4211 iLine10 HomePNA 2.0 + V.90 56k modem",
+"	4212  BCM4212 v.90 56k modem",
+"	4301  BCM4303 802.11b Wireless LAN Controller",
+"		1028 0407  TrueMobile 1180 Onboard WLAN",
+"		1043 0120  WL-103b Wireless LAN PC Card",
+"	4305  BCM4307 V.90 56k Modem",
+"	4306  BCM4307 Ethernet Controller",
+"	4307  BCM4307 802.11b Wireless LAN Controller",
+"	4310  BCM4310 Chipcommon I/OController",
+"	4312  BCM4310 UART",
+"	4313  BCM4310 Ethernet Controller",
+"	4315  BCM4310 USB Controller",
+"	4318  BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller",
+"		103c 1356  MX6125",
+"		1043 120f  A6U notebook embedded card",
+"		1468 0311  Aspire 3022WLMi, 5024WLMi",
+"		1468 0312  TravelMate 2410",
+"		14e4 0449  Gateway 7510GX",
+"		14e4 4318  WPC54G version 3 [Wireless-G Notebook Adapter] 802.11g Wireless Lan Controller",
+"		16ec 0119  U.S.Robotics Wireless MAXg PC Card",
+"		1737 0048  WPC54G-EU version 3 [Wireless-G Notebook Adapter]",
+"	4319  Dell Wireless 1470 DualBand WLAN",
+"	4320  BCM4306 802.11b/g Wireless LAN Controller",
+"		1028 0001  TrueMobile 1300 WLAN Mini-PCI Card",
+"		1028 0003  Wireless 1350 WLAN Mini-PCI Card",
+"		103c 12f4  NX9500 Built-in Wireless",
+"		103c 12fa  Presario R3000 802.11b/g",
+"		1043 100f  WL-100G",
+"		1057 7025  WN825G",
+"		106b 004e  AirPort Extreme",
+"		1154 0330  Buffalo WLI2-PCI-G54S High Speed Mode Wireless Desktop Adapter",
+"		144f 7050  eMachines M6805 802.11g Built-in Wireless",
+"		14e4 4320  Linksys WMP54G PCI",
+"		1737 4320  WPC54G",
+"		1799 7001  Belkin F5D7001 High-Speed Mode Wireless G Network Card",
+"		1799 7010  Belkin F5D7010 54g Wireless Network card",
+"		185f 1220  TravelMate 290E WLAN Mini-PCI Card",
+"	4321  BCM4306 802.11a Wireless LAN Controller",
+"	4322  BCM4306 UART",
+"	4324  BCM4309 802.11a/b/g",
+"		1028 0001  Truemobile 1400",
+"		1028 0003  Truemobile 1450 MiniPCI",
+"	4325  BCM43xG 802.11b/g",
+"		1414 0003  Wireless Notebook Adapter MN-720",
+"		1414 0004  Wireless PCI Adapter MN-730",
+"	4326  BCM4307 Chipcommon I/O Controller\?",
+"	4401  BCM4401 100Base-T",
+"		1043 80a8  A7V8X motherboard",
+"	4402  BCM4402 Integrated 10/100BaseT",
+"	4403  BCM4402 V.90 56k Modem",
+"	4410  BCM4413 iLine32 HomePNA 2.0",
+"	4411  BCM4413 V.90 56k modem",
+"	4412  BCM4412 10/100BaseT",
+"	4430  BCM44xx CardBus iLine32 HomePNA 2.0",
+"	4432  BCM4432 CardBus 10/100BaseT",
+"	4610  BCM4610 Sentry5 PCI to SB Bridge",
+"	4611  BCM4610 Sentry5 iLine32 HomePNA 1.0",
+"	4612  BCM4610 Sentry5 V.90 56k Modem",
+"	4613  BCM4610 Sentry5 Ethernet Controller",
+"	4614  BCM4610 Sentry5 External Interface",
+"	4615  BCM4610 Sentry5 USB Controller",
+"	4704  BCM4704 PCI to SB Bridge",
+"	4705  BCM4704 Sentry5 802.11b Wireless LAN Controller",
+"	4706  BCM4704 Sentry5 Ethernet Controller",
+"	4707  BCM4704 Sentry5 USB Controller",
+"	4708  BCM4704 Crypto Accelerator",
+"	4710  BCM4710 Sentry5 PCI to SB Bridge",
+"	4711  BCM47xx Sentry5 iLine32 HomePNA 2.0",
+"	4712  BCM47xx V.92 56k modem",
+"	4713  Sentry5 Ethernet Controller",
+"	4714  BCM47xx Sentry5 External Interface",
+"	4715  Sentry5 USB Controller",
+"	4716  BCM47xx Sentry5 USB Host Controller",
+"	4717  BCM47xx Sentry5 USB Device Controller",
+"	4718  Sentry5 Crypto Accelerator",
+"	4719  BCM47xx/53xx RoboSwitch Core",
+"	4720  BCM4712 MIPS CPU",
+"	5365  BCM5365P Sentry5 Host Bridge",
+"	5600  BCM5600 StrataSwitch 24+2 Ethernet Switch Controller",
+"	5605  BCM5605 StrataSwitch 24+2 Ethernet Switch Controller",
+"	5615  BCM5615 StrataSwitch 24+2 Ethernet Switch Controller",
+"	5625  BCM5625 StrataSwitch 24+2 Ethernet Switch Controller",
+"	5645  BCM5645 StrataSwitch 24+2 Ethernet Switch Controller",
+"	5670  BCM5670 8-Port 10GE Ethernet Switch Fabric",
+"	5680  BCM5680 G-Switch 8 Port Gigabit Ethernet Switch Controller",
+"	5690  BCM5690 12-port Multi-Layer Gigabit Ethernet Switch",
+"	5691  BCM5691 GE/10GE 8+2 Gigabit Ethernet Switch Controller",
+"	5692  BCM5692 12-port Multi-Layer Gigabit Ethernet Switch",
+"	5820  BCM5820 Crypto Accelerator",
+"	5821  BCM5821 Crypto Accelerator",
+"	5822  BCM5822 Crypto Accelerator",
+"	5823  BCM5823 Crypto Accelerator",
+"	5824  BCM5824 Crypto Accelerator",
+"	5840  BCM5840 Crypto Accelerator",
+"	5841  BCM5841 Crypto Accelerator",
+"	5850  BCM5850 Crypto Accelerator",
+"14e5  Pixelfusion Ltd",
+"14e6  SHINING Technology Inc",
+"14e7  3CX",
+"14e8  RAYCER Inc",
+"14e9  GARNETS System CO Ltd",
+"14ea  Planex Communications, Inc",
+"	ab06  FNW-3603-TX CardBus Fast Ethernet",
+"	ab07  RTL81xx RealTek Ethernet",
+"	ab08  FNW-3602-TX CardBus Fast Ethernet",
+"14eb  SEIKO EPSON Corp",
+"14ec  ACQIRIS",
+"14ed  DATAKINETICS Ltd",
+"14ee  MASPRO KENKOH Corp",
+"14ef  CARRY Computer ENG. CO Ltd",
+"14f0  CANON RESEACH CENTRE FRANCE",
+"14f1  Conexant",
+"	1002  HCF 56k Modem",
+"	1003  HCF 56k Modem",
+"	1004  HCF 56k Modem",
+"	1005  HCF 56k Modem",
+"	1006  HCF 56k Modem",
+"	1022  HCF 56k Modem",
+"	1023  HCF 56k Modem",
+"	1024  HCF 56k Modem",
+"	1025  HCF 56k Modem",
+"	1026  HCF 56k Modem",
+"	1032  HCF 56k Modem",
+"	1033  HCF 56k Data/Fax Modem",
+"		1033 8077  NEC",
+"		122d 4027  Dell Zeus - MDP3880-W(B) Data Fax Modem",
+"		122d 4030  Dell Mercury - MDP3880-U(B) Data Fax Modem",
+"		122d 4034  Dell Thor - MDP3880-W(U) Data Fax Modem",
+"		13e0 020d  Dell Copper",
+"		13e0 020e  Dell Silver",
+"		13e0 0261  IBM",
+"		13e0 0290  Compaq Goldwing",
+"		13e0 02a0  IBM",
+"		13e0 02b0  IBM",
+"		13e0 02c0  Compaq Scooter",
+"		13e0 02d0  IBM",
+"		144f 1500  IBM P85-DF (1)",
+"		144f 1501  IBM P85-DF (2)",
+"		144f 150a  IBM P85-DF (3)",
+"		144f 150b  IBM P85-DF Low Profile (1)",
+"		144f 1510  IBM P85-DF Low Profile (2)",
+"	1034  HCF 56k Data/Fax/Voice Modem",
+"	1035  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem",
+"		10cf 1098  Fujitsu P85-DFSV",
+"	1036  HCF 56k Data/Fax/Voice/Spkp Modem",
+"		104d 8067  HCF 56k Modem",
+"		122d 4029  MDP3880SP-W",
+"		122d 4031  MDP3880SP-U",
+"		13e0 0209  Dell Titanium",
+"		13e0 020a  Dell Graphite",
+"		13e0 0260  Gateway Red Owl",
+"		13e0 0270  Gateway White Horse",
+"	1052  HCF 56k Data/Fax Modem (Worldwide)",
+"	1053  HCF 56k Data/Fax Modem (Worldwide)",
+"	1054  HCF 56k Data/Fax/Voice Modem (Worldwide)",
+"	1055  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (Worldwide)",
+"	1056  HCF 56k Data/Fax/Voice/Spkp Modem (Worldwide)",
+"	1057  HCF 56k Data/Fax/Voice/Spkp Modem (Worldwide)",
+"	1059  HCF 56k Data/Fax/Voice Modem (Worldwide)",
+"	1063  HCF 56k Data/Fax Modem",
+"	1064  HCF 56k Data/Fax/Voice Modem",
+"	1065  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem",
+"	1066  HCF 56k Data/Fax/Voice/Spkp Modem",
+"		122d 4033  Dell Athena - MDP3900V-U",
+"	1085  HCF V90 56k Data/Fax/Voice/Spkp PCI Modem",
+"	1433  HCF 56k Data/Fax Modem",
+"	1434  HCF 56k Data/Fax/Voice Modem",
+"	1435  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem",
+"	1436  HCF 56k Data/Fax Modem",
+"	1453  HCF 56k Data/Fax Modem",
+"		13e0 0240  IBM",
+"		13e0 0250  IBM",
+"		144f 1502  IBM P95-DF (1)",
+"		144f 1503  IBM P95-DF (2)",
+"	1454  HCF 56k Data/Fax/Voice Modem",
+"	1455  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem",
+"	1456  HCF 56k Data/Fax/Voice/Spkp Modem",
+"		122d 4035  Dell Europa - MDP3900V-W",
+"		122d 4302  Dell MP3930V-W(C) MiniPCI",
+"	1610  ADSL AccessRunner PCI Arbitration Device",
+"	1611  AccessRunner PCI ADSL Interface Device",
+"	1620  AccessRunner V2 PCI ADSL Arbitration Device",
+"	1621  AccessRunner V2 PCI ADSL Interface Device",
+"	1622  AccessRunner V2 PCI ADSL Yukon WAN Adapter",
+"	1803  HCF 56k Modem",
+"		0e11 0023  623-LAN Grizzly",
+"		0e11 0043  623-LAN Yogi",
+"	1811  Conextant MiniPCI Network Adapter",
+"	1815  HCF 56k Modem",
+"		0e11 0022  Grizzly",
+"		0e11 0042  Yogi",
+"	2003  HSF 56k Data/Fax Modem",
+"	2004  HSF 56k Data/Fax/Voice Modem",
+"	2005  HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem",
+"	2006  HSF 56k Data/Fax/Voice/Spkp Modem",
+"	2013  HSF 56k Data/Fax Modem",
+"		0e11 b195  Bear",
+"		0e11 b196  Seminole 1",
+"		0e11 b1be  Seminole 2",
+"		1025 8013  Acer",
+"		1033 809d  NEC",
+"		1033 80bc  NEC",
+"		155d 6793  HP",
+"		155d 8850  E Machines",
+"	2014  HSF 56k Data/Fax/Voice Modem",
+"	2015  HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem",
+"	2016  HSF 56k Data/Fax/Voice/Spkp Modem",
+"	2043  HSF 56k Data/Fax Modem (WorldW SmartDAA)",
+"	2044  HSF 56k Data/Fax/Voice Modem (WorldW SmartDAA)",
+"	2045  HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (WorldW SmartDAA)",
+"		14f1 2045  Generic SoftK56",
+"	2046  HSF 56k Data/Fax/Voice/Spkp Modem (WorldW SmartDAA)",
+"	2063  HSF 56k Data/Fax Modem (SmartDAA)",
+"	2064  HSF 56k Data/Fax/Voice Modem (SmartDAA)",
+"	2065  HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (SmartDAA)",
+"	2066  HSF 56k Data/Fax/Voice/Spkp Modem (SmartDAA)",
+"	2093  HSF 56k Modem",
+"		155d 2f07  Legend",
+"	2143  HSF 56k Data/Fax/Cell Modem (Mob WorldW SmartDAA)",
+"	2144  HSF 56k Data/Fax/Voice/Cell Modem (Mob WorldW SmartDAA)",
+"	2145  HSF 56k Data/Fax/Voice/Spkp (w/HS)/Cell Modem (Mob WorldW SmartDAA)",
+"	2146  HSF 56k Data/Fax/Voice/Spkp/Cell Modem (Mob WorldW SmartDAA)",
+"	2163  HSF 56k Data/Fax/Cell Modem (Mob SmartDAA)",
+"	2164  HSF 56k Data/Fax/Voice/Cell Modem (Mob SmartDAA)",
+"	2165  HSF 56k Data/Fax/Voice/Spkp (w/HS)/Cell Modem (Mob SmartDAA)",
+"	2166  HSF 56k Data/Fax/Voice/Spkp/Cell Modem (Mob SmartDAA)",
+"	2343  HSF 56k Data/Fax CardBus Modem (Mob WorldW SmartDAA)",
+"	2344  HSF 56k Data/Fax/Voice CardBus Modem (Mob WorldW SmartDAA)",
+"	2345  HSF 56k Data/Fax/Voice/Spkp (w/HS) CardBus Modem (Mob WorldW SmartDAA)",
+"	2346  HSF 56k Data/Fax/Voice/Spkp CardBus Modem (Mob WorldW SmartDAA)",
+"	2363  HSF 56k Data/Fax CardBus Modem (Mob SmartDAA)",
+"	2364  HSF 56k Data/Fax/Voice CardBus Modem (Mob SmartDAA)",
+"	2365  HSF 56k Data/Fax/Voice/Spkp (w/HS) CardBus Modem (Mob SmartDAA)",
+"	2366  HSF 56k Data/Fax/Voice/Spkp CardBus Modem (Mob SmartDAA)",
+"	2443  HSF 56k Data/Fax Modem (Mob WorldW SmartDAA)",
+"		104d 8075  Modem",
+"		104d 8083  Modem",
+"		104d 8097  Modem",
+"	2444  HSF 56k Data/Fax/Voice Modem (Mob WorldW SmartDAA)",
+"	2445  HSF 56k Data/Fax/Voice/Spkp (w/HS) Modem (Mob WorldW SmartDAA)",
+"	2446  HSF 56k Data/Fax/Voice/Spkp Modem (Mob WorldW SmartDAA)",
+"	2463  HSF 56k Data/Fax Modem (Mob SmartDAA)",
+"	2464  HSF 56k Data/Fax/Voice Modem (Mob SmartDAA)",
+"	2465  HSF 56k Data/Fax/Voice/Spkp (w/HS) Modem (Mob SmartDAA)",
+"	2466  HSF 56k Data/Fax/Voice/Spkp Modem (Mob SmartDAA)",
+"	2bfa  HDAudio Soft Data Fax Modem with SmartCP",
+"	2f00  HSF 56k HSFi Modem",
+"		13e0 8d84  IBM HSFi V.90",
+"		13e0 8d85  Compaq Stinger",
+"		14f1 2004  Dynalink 56PMi",
+"	2f02  HSF 56k HSFi Data/Fax",
+"	2f11  HSF 56k HSFi Modem",
+"	2f20  HSF 56k Data/Fax Modem",
+"	8234  RS8234 ATM SAR Controller [ServiceSAR Plus]",
+"	8800  CX23880/1/2/3 PCI Video and Audio Decoder",
+"		0070 2801  Hauppauge WinTV 28xxx (Roslyn) models",
+"		0070 3401  Hauppauge WinTV 34xxx models",
+"		0070 9001  Nova-T DVB-T",
+"		0070 9200  Nova-SE2 DVB-S",
+"		0070 9202  Nova-S-Plus DVB-S",
+"		0070 9402  WinTV-HVR1100 DVB-T/Hybrid",
+"		0070 9802  WinTV-HVR1100 DVB-T/Hybrid (Low Profile)",
+"		1002 00f8  ATI TV Wonder Pro",
+"		1002 a101  HDTV Wonder",
+"		1043 4823  ASUS PVR-416",
+"		107d 6613  Leadtek Winfast 2000XP Expert",
+"		107d 6620  Leadtek Winfast DV2000",
+"		107d 663c  Leadtek PVR 2000",
+"		107d 665f  WinFast DTV1000-T",
+"		10fc d003  IODATA GV-VCP3/PCI",
+"		10fc d035  IODATA GV/BCTV7E",
+"		1421 0334  Instant TV DVB-T PCI",
+"		1461 000a  AVerTV 303 (M126)",
+"		1461 000b  AverTV Studio 303 (M126)",
+"		1461 8011  UltraTV Media Center PCI 550",
+"		1462 8606  MSI TV-@nywhere Master",
+"		14c7 0107  GDI Black Gold",
+"		14f1 0187  Conexant DVB-T reference design",
+"		14f1 0342  Digital-Logic MICROSPACE Entertainment Center (MEC)",
+"		153b 1166  Cinergy 1400 DVB-T",
+"		1540 2580  Provideo PV259",
+"		1554 4811  PixelView",
+"		1554 4813  Club 3D  ZAP1000 MCE Edition",
+"		17de 08a1  KWorld/VStream XPert DVB-T with cx22702",
+"		17de 08a6  KWorld/VStream XPert DVB-T",
+"		17de 08b2  KWorld DVB-S 100",
+"		17de a8a6  digitalnow DNTV Live! DVB-T",
+"		1822 0025  digitalnow DNTV Live! DVB-T Pro",
+"		18ac d500  FusionHDTV 5 Gold",
+"		18ac d810  FusionHDTV 3 Gold-Q",
+"		18ac d820  FusionHDTV 3 Gold-T",
+"		18ac db00  FusionHDTV DVB-T1",
+"		18ac db11  FusionHDTV DVB-T Plus",
+"		18ac db50  FusionHDTV DVB-T Dual Digital",
+"		7063 3000  pcHDTV HD3000 HDTV",
+"	8801  CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port]",
+"		0070 2801  Hauppauge WinTV 28xxx (Roslyn) models",
+"	8802  CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port]",
+"		0070 2801  Hauppauge WinTV 28xxx (Roslyn) models",
+"		0070 9002  Nova-T DVB-T Model 909",
+"		1043 4823  ASUS PVR-416",
+"		107d 663c  Leadtek PVR 2000",
+"		14f1 0187  Conexant DVB-T reference design",
+"		17de 08a1  XPert DVB-T PCI BDA DVBT 23880 Transport Stream Capture",
+"		17de 08a6  KWorld/VStream XPert DVB-T",
+"		18ac d500  DViCO FusionHDTV5 Gold",
+"		18ac d810  DViCO FusionHDTV3 Gold-Q",
+"		18ac d820  DViCO FusionHDTV3 Gold-T",
+"		18ac db00  DVICO FusionHDTV DVB-T1",
+"		18ac db10  DVICO FusionHDTV DVB-T Plus",
+"		7063 3000  pcHDTV HD3000 HDTV",
+"	8804  CX23880/1/2/3 PCI Video and Audio Decoder [IR Port]",
+"		0070 9002  Nova-T DVB-T Model 909",
+"	8811  CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port]",
+"		0070 3401  Hauppauge WinTV 34xxx models",
+"		1462 8606  MSI TV-@nywhere Master",
+"		18ac d500  DViCO FusionHDTV5 Gold",
+"		18ac d810  DViCO FusionHDTV3 Gold-Q",
+"		18ac d820  DViCO FusionHDTV3 Gold-T",
+"		18ac db00  DVICO FusionHDTV DVB-T1",
+"14f2  MOBILITY Electronics",
+"	0120  EV1000 bridge",
+"	0121  EV1000 Parallel port",
+"	0122  EV1000 Serial port",
+"	0123  EV1000 Keyboard controller",
+"	0124  EV1000 Mouse controller",
+"14f3  BroadLogic",
+"	2030  2030 DVB-S Satellite Reciever",
+"	2050  2050 DVB-T Terrestrial (Cable) Reciever",
+"	2060  2060 ATSC Terrestrial (Cable) Reciever",
+"14f4  TOKYO Electronic Industry CO Ltd",
+"14f5  SOPAC Ltd",
+"14f6  COYOTE Technologies LLC",
+"14f7  WOLF Technology Inc",
+"14f8  AUDIOCODES Inc",
+"	2077  TP-240 dual span E1 VoIP PCI card",
+"14f9  AG COMMUNICATIONS",
+"14fa  WANDEL & GOLTERMANN",
+"14fb  TRANSAS MARINE (UK) Ltd",
+"14fc  Quadrics Ltd",
+"	0000  QsNet Elan3 Network Adapter",
+"	0001  QsNetII Elan4 Network Adapter",
+"	0002  QsNetIII Elan5 Network Adapter",
+"14fd  JAPAN Computer Industry Inc",
+"14fe  ARCHTEK TELECOM Corp",
+"14ff  TWINHEAD INTERNATIONAL Corp",
+"1500  DELTA Electronics, Inc",
+"	1360  RTL81xx RealTek Ethernet",
+"1501  BANKSOFT CANADA Ltd",
+"1502  MITSUBISHI ELECTRIC LOGISTICS SUPPORT Co Ltd",
+"1503  KAWASAKI LSI USA Inc",
+"1504  KAISER Electronics",
+"1505  ITA INGENIEURBURO FUR TESTAUFGABEN GmbH",
+"1506  CHAMELEON Systems Inc",
+"1507  Motorola \?\? / HTEC",
+"	0001  MPC105 [Eagle]",
+"	0002  MPC106 [Grackle]",
+"	0003  MPC8240 [Kahlua]",
+"	0100  MC145575 [HFC-PCI]",
+"	0431  KTI829c 100VG",
+"	4801  Raven",
+"	4802  Falcon",
+"	4803  Hawk",
+"	4806  CPX8216",
+"1508  HONDA CONNECTORS/MHOTRONICS Inc",
+"1509  FIRST INTERNATIONAL Computer Inc",
+"150a  FORVUS RESEARCH Inc",
+"150b  YAMASHITA Systems Corp",
+"150c  KYOPAL CO Ltd",
+"150d  WARPSPPED Inc",
+"150e  C-PORT Corp",
+"150f  INTEC GmbH",
+"1510  BEHAVIOR TECH Computer Corp",
+"1511  CENTILLIUM Technology Corp",
+"1512  ROSUN Technologies Inc",
+"1513  Raychem",
+"1514  TFL LAN Inc",
+"1515  Advent design",
+"1516  MYSON Technology Inc",
+"	0800  MTD-8xx 100/10M Ethernet PCI Adapter",
+"	0803  SURECOM EP-320X-S 100/10M Ethernet PCI Adapter",
+"		1320 10bd  SURECOM EP-320X-S 100/10M Ethernet PCI Adapter",
+"	0891  MTD-8xx 100/10M Ethernet PCI Adapter",
+"1517  ECHOTEK Corp",
+"1518  PEP MODULAR Computers GmbH",
+"1519  TELEFON AKTIEBOLAGET LM Ericsson",
+"151a  Globetek",
+"	1002  PCI-1002",
+"	1004  PCI-1004",
+"	1008  PCI-1008",
+"151b  COMBOX Ltd",
+"151c  DIGITAL AUDIO LABS Inc",
+"	0003  Prodif T 2496",
+"	4000  Prodif 88",
+"151d  Fujitsu Computer Products Of America",
+"151e  MATRIX Corp",
+"151f  TOPIC SEMICONDUCTOR Corp",
+"	0000  TP560 Data/Fax/Voice 56k modem",
+"1520  CHAPLET System Inc",
+"1521  BELL Corp",
+"1522  MainPine Ltd",
+"	0100  PCI <-> IOBus Bridge",
+"		1522 0200  RockForceDUO 2 Port V.92/V.44 Data/Fax/Voice Modem",
+"		1522 0300  RockForceQUATRO 4 Port V.92/V.44 Data/Fax/Voice Modem",
+"		1522 0400  RockForceDUO+ 2 Port V.92/V.44 Data/Fax/Voice Modem",
+"		1522 0500  RockForceQUATRO+ 4 Port V.92/V.44 Data/Fax/Voice Modem",
+"		1522 0600  RockForce+ 2 Port V.90 Data/Fax/Voice Modem",
+"		1522 0700  RockForce+ 4 Port V.90 Data/Fax/Voice Modem",
+"		1522 0800  RockForceOCTO+ 8 Port V.92/V.44 Data/Fax/Voice Modem",
+"		1522 0c00  RockForceDUO+ 2 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem",
+"		1522 0d00  RockForceQUATRO+ 4 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem",
+"		1522 1d00  RockForceOCTO+ 8 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem",
+"		1522 2000  RockForceD1 1 Port V.90 Data Modem",
+"		1522 2100  RockForceF1 1 Port V.34 Super-G3 Fax Modem",
+"		1522 2200  RockForceD2 2 Port V.90 Data Modem",
+"		1522 2300  RockForceF2 2 Port V.34 Super-G3 Fax Modem",
+"		1522 2400  RockForceD4 4 Port V.90 Data Modem",
+"		1522 2500  RockForceF4 4 Port V.34 Super-G3 Fax Modem",
+"		1522 2600  RockForceD8 8 Port V.90 Data Modem",
+"		1522 2700  RockForceF8 8 Port V.34 Super-G3 Fax Modem",
+"1523  MUSIC Semiconductors",
+"1524  ENE Technology Inc",
+"	0510  CB710 Memory Card Reader Controller",
+"		103c 006a  NX9500",
+"	0520  FLASH memory: ENE Technology Inc:",
+"	0530  ENE PCI Memory Stick Card Reader Controller",
+"	0550  ENE PCI Secure Digital Card Reader Controller",
+"	0610  PCI Smart Card Reader Controller",
+"	1211  CB1211 Cardbus Controller",
+"	1225  CB1225 Cardbus Controller",
+"	1410  CB1410 Cardbus Controller",
+"		1025 003c  CL50 motherboard",
+"		1025 005a  TravelMate 290",
+"	1411  CB-710/2/4 Cardbus Controller",
+"		103c 006a  NX9500",
+"	1412  CB-712/4 Cardbus Controller",
+"	1420  CB1420 Cardbus Controller",
+"	1421  CB-720/2/4 Cardbus Controller",
+"	1422  CB-722/4 Cardbus Controller",
+"1525  IMPACT Technologies",
+"1526  ISS, Inc",
+"1527  SOLECTRON",
+"1528  ACKSYS",
+"1529  AMERICAN MICROSystems Inc",
+"152a  QUICKTURN DESIGN Systems",
+"152b  FLYTECH Technology CO Ltd",
+"152c  MACRAIGOR Systems LLC",
+"152d  QUANTA Computer Inc",
+"152e  MELEC Inc",
+"152f  PHILIPS - CRYPTO",
+"1530  ACQIS Technology Inc",
+"1531  CHRYON Corp",
+"1532  ECHELON Corp",
+"	0020  LonWorks PCLTA-20 PCI LonTalk Adapter",
+"1533  BALTIMORE",
+"1534  ROAD Corp",
+"1535  EVERGREEN Technologies Inc",
+"1537  DATALEX COMMUNCATIONS",
+"1538  ARALION Inc",
+"	0303  ARS106S Ultra ATA 133/100/66 Host Controller",
+"1539  ATELIER INFORMATIQUES et ELECTRONIQUE ETUDES S.A.",
+"153a  ONO SOKKI",
+"153b  TERRATEC Electronic GmbH",
+"	1144  Aureon 5.1",
+"	1147  Aureon 5.1 Sky",
+"	1158  Philips Semiconductors SAA7134 (rev 01) [Terratec Cinergy 600 TV]",
+"153c  ANTAL Electronic",
+"153d  FILANET Corp",
+"153e  TECHWELL Inc",
+"153f  MIPS Technologies, Inc.",
+"	0001  SOC-it 101 System Controller",
+"1540  PROVIDEO MULTIMEDIA Co Ltd",
+"1541  MACHONE Communications",
+"1542  Concurrent Computer Corporation",
+"1543  SILICON Laboratories",
+"	3052  Intel 537 [Winmodem]",
+"	4c22  Si3036 MC'97 DAA",
+"1544  DCM DATA Systems",
+"1545  VISIONTEK",
+"1546  IOI Technology Corp",
+"1547  MITUTOYO Corp",
+"1548  JET PROPULSION Laboratory",
+"1549  INTERCONNECT Systems Solutions",
+"154a  MAX Technologies Inc",
+"154b  COMPUTEX Co Ltd",
+"154c  VISUAL Technology Inc",
+"154d  PAN INTERNATIONAL Industrial Corp",
+"154e  SERVOTEST Ltd",
+"154f  STRATABEAM Technology",
+"1550  OPEN NETWORK Co Ltd",
+"1551  SMART Electronic DEVELOPMENT GmBH",
+"1552  RACAL AIRTECH Ltd",
+"1553  CHICONY Electronics Co Ltd",
+"1554  PROLINK Microsystems Corp",
+"1555  GESYTEC GmBH",
+"1556  PLD APPLICATIONS",
+"1557  MEDIASTAR Co Ltd",
+"1558  CLEVO/KAPOK Computer",
+"1559  SI LOGIC Ltd",
+"155a  INNOMEDIA Inc",
+"155b  PROTAC INTERNATIONAL Corp",
+"155c  Cemax-Icon Inc",
+"155d  Mac System Co Ltd",
+"155e  LP Elektronik GmbH",
+"155f  Perle Systems Ltd",
+"1560  Terayon Communications Systems",
+"1561  Viewgraphics Inc",
+"1562  Symbol Technologies",
+"1563  A-Trend Technology Co Ltd",
+"1564  Yamakatsu Electronics Industry Co Ltd",
+"1565  Biostar Microtech Int'l Corp",
+"1566  Ardent Technologies Inc",
+"1567  Jungsoft",
+"1568  DDK Electronics Inc",
+"1569  Palit Microsystems Inc.",
+"156a  Avtec Systems",
+"156b  2wire Inc",
+"156c  Vidac Electronics GmbH",
+"156d  Alpha-Top Corp",
+"156e  Alfa Inc",
+"156f  M-Systems Flash Disk Pioneers Ltd",
+"1570  Lecroy Corp",
+"1571  Contemporary Controls",
+"	a001  CCSI PCI20-485 ARCnet",
+"	a002  CCSI PCI20-485D ARCnet",
+"	a003  CCSI PCI20-485X ARCnet",
+"	a004  CCSI PCI20-CXB ARCnet",
+"	a005  CCSI PCI20-CXS ARCnet",
+"	a006  CCSI PCI20-FOG-SMA ARCnet",
+"	a007  CCSI PCI20-FOG-ST ARCnet",
+"	a008  CCSI PCI20-TB5 ARCnet",
+"	a009  CCSI PCI20-5-485 5Mbit ARCnet",
+"	a00a  CCSI PCI20-5-485D 5Mbit ARCnet",
+"	a00b  CCSI PCI20-5-485X 5Mbit ARCnet",
+"	a00c  CCSI PCI20-5-FOG-ST 5Mbit ARCnet",
+"	a00d  CCSI PCI20-5-FOG-SMA 5Mbit ARCnet",
+"	a201  CCSI PCI22-485 10Mbit ARCnet",
+"	a202  CCSI PCI22-485D 10Mbit ARCnet",
+"	a203  CCSI PCI22-485X 10Mbit ARCnet",
+"	a204  CCSI PCI22-CHB 10Mbit ARCnet",
+"	a205  CCSI PCI22-FOG_ST 10Mbit ARCnet",
+"	a206  CCSI PCI22-THB 10Mbit ARCnet",
+"1572  Otis Elevator Company",
+"1573  Lattice - Vantis",
+"1574  Fairchild Semiconductor",
+"1575  Voltaire Advanced Data Security Ltd",
+"1576  Viewcast COM",
+"1578  HITT",
+"	5615  VPMK3 [Video Processor Mk III]",
+"1579  Dual Technology Corp",
+"157a  Japan Elecronics Ind Inc",
+"157b  Star Multimedia Corp",
+"157c  Eurosoft (UK)",
+"	8001  Fix2000 PCI Y2K Compliance Card",
+"157d  Gemflex Networks",
+"157e  Transition Networks",
+"157f  PX Instruments Technology Ltd",
+"1580  Primex Aerospace Co",
+"1581  SEH Computertechnik GmbH",
+"1582  Cytec Corp",
+"1583  Inet Technologies Inc",
+"1584  Uniwill Computer Corp",
+"1585  Logitron",
+"1586  Lancast Inc",
+"1587  Konica Corp",
+"1588  Solidum Systems Corp",
+"1589  Atlantek Microsystems Pty Ltd",
+"158a  Digalog Systems Inc",
+"158b  Allied Data Technologies",
+"158c  Hitachi Semiconductor & Devices Sales Co Ltd",
+"158d  Point Multimedia Systems",
+"158e  Lara Technology Inc",
+"158f  Ditect Coop",
+"1590  3pardata Inc",
+"1591  ARN",
+"1592  Syba Tech Ltd",
+"	0781  Multi-IO Card",
+"	0782  Parallel Port Card 2xEPP",
+"	0783  Multi-IO Card",
+"	0785  Multi-IO Card",
+"	0786  Multi-IO Card",
+"	0787  Multi-IO Card",
+"	0788  Multi-IO Card",
+"	078a  Multi-IO Card",
+"1593  Bops Inc",
+"1594  Netgame Ltd",
+"1595  Diva Systems Corp",
+"1596  Folsom Research Inc",
+"1597  Memec Design Services",
+"1598  Granite Microsystems",
+"1599  Delta Electronics Inc",
+"159a  General Instrument",
+"159b  Faraday Technology Corp",
+"159c  Stratus Computer Systems",
+"159d  Ningbo Harrison Electronics Co Ltd",
+"159e  A-Max Technology Co Ltd",
+"159f  Galea Network Security",
+"15a0  Compumaster SRL",
+"15a1  Geocast Network Systems",
+"15a2  Catalyst Enterprises Inc",
+"	0001  TA700 PCI Bus Analyzer/Exerciser",
+"15a3  Italtel",
+"15a4  X-Net OY",
+"15a5  Toyota Macs Inc",
+"15a6  Sunlight Ultrasound Technologies Ltd",
+"15a7  SSE Telecom Inc",
+"15a8  Shanghai Communications Technologies Center",
+"15aa  Moreton Bay",
+"15ab  Bluesteel Networks Inc",
+"15ac  North Atlantic Instruments",
+"15ad  VMware Inc",
+"	0405  [VMware SVGA II] PCI Display Adapter",
+"	0710  Virtual SVGA",
+"	0720  VMware High-Speed Virtual NIC [vmxnet]",
+"15ae  Amersham Pharmacia Biotech",
+"15b0  Zoltrix International Ltd",
+"15b1  Source Technology Inc",
+"15b2  Mosaid Technologies Inc",
+"15b3  Mellanox Technologies",
+"	5274  MT21108 InfiniBridge",
+"	5a44  MT23108 InfiniHost",
+"	5a45  MT23108 [Infinihost HCA Flash Recovery]",
+"	5a46  MT23108 PCI Bridge",
+"	5e8d  MT25204 [InfiniHost III Lx HCA Flash Recovery]",
+"	6274  MT25204 [InfiniHost III Lx HCA]",
+"	6278  MT25208 InfiniHost III Ex (Tavor compatibility mode)",
+"	6279  MT25208 [InfiniHost III Ex HCA Flash Recovery]",
+"	6282  MT25208 InfiniHost III Ex",
+"15b4  CCI/TRIAD",
+"15b5  Cimetrics Inc",
+"15b6  Texas Memory Systems Inc",
+"15b7  Sandisk Corp",
+"15b8  ADDI-DATA GmbH",
+"15b9  Maestro Digital Communications",
+"15ba  Impacct Technology Corp",
+"15bb  Portwell Inc",
+"15bc  Agilent Technologies",
+"	1100  E8001-66442 PCI Express CIC",
+"	2922  64 Bit, 133MHz PCI-X Exerciser & Protocol Checker",
+"	2928  64 Bit, 66MHz PCI Exerciser & Analyzer",
+"	2929  64 Bit, 133MHz PCI-X Analyzer & Exerciser",
+"15bd  DFI Inc",
+"15be  Sola Electronics",
+"15bf  High Tech Computer Corp (HTC)",
+"15c0  BVM Ltd",
+"15c1  Quantel",
+"15c2  Newer Technology Inc",
+"15c3  Taiwan Mycomp Co Ltd",
+"15c4  EVSX Inc",
+"15c5  Procomp Informatics Ltd",
+"	8010  1394b - 1394 Firewire 3-Port Host Adapter Card",
+"15c6  Technical University of Budapest",
+"15c7  Tateyama System Laboratory Co Ltd",
+"	0349  Tateyama C-PCI PLC/NC card Rev.01A",
+"15c8  Penta Media Co Ltd",
+"15c9  Serome Technology Inc",
+"15ca  Bitboys OY",
+"15cb  AG Electronics Ltd",
+"15cc  Hotrail Inc",
+"15cd  Dreamtech Co Ltd",
+"15ce  Genrad Inc",
+"15cf  Hilscher GmbH",
+"15d1  Infineon Technologies AG",
+"15d2  FIC (First International Computer Inc)",
+"15d3  NDS Technologies Israel Ltd",
+"15d4  Iwill Corp",
+"15d5  Tatung Co",
+"15d6  Entridia Corp",
+"15d7  Rockwell-Collins Inc",
+"15d8  Cybernetics Technology Co Ltd",
+"15d9  Super Micro Computer Inc",
+"15da  Cyberfirm Inc",
+"15db  Applied Computing Systems Inc",
+"15dc  Litronic Inc",
+"	0001  Argus 300 PCI Cryptography Module",
+"15dd  Sigmatel Inc",
+"15de  Malleable Technologies Inc",
+"15df  Infinilink Corp",
+"15e0  Cacheflow Inc",
+"15e1  Voice Technologies Group Inc",
+"15e2  Quicknet Technologies Inc",
+"15e3  Networth Technologies Inc",
+"15e4  VSN Systemen BV",
+"15e5  Valley technologies Inc",
+"15e6  Agere Inc",
+"15e7  Get Engineering Corp",
+"15e8  National Datacomm Corp",
+"	0130  Wireless PCI Card",
+"15e9  Pacific Digital Corp",
+"	1841  ADMA-100 DiscStaQ ATA Controller",
+"15ea  Tokyo Denshi Sekei K.K.",
+"15eb  Drsearch GmbH",
+"15ec  Beckhoff GmbH",
+"	3101  FC3101 Profibus DP 1 Channel PCI",
+"	5102  FC5102",
+"15ed  Macrolink Inc",
+"15ee  In Win Development Inc",
+"15ef  Intelligent Paradigm Inc",
+"15f0  B-Tree Systems Inc",
+"15f1  Times N Systems Inc",
+"15f2  Diagnostic Instruments Inc",
+"15f3  Digitmedia Corp",
+"15f4  Valuesoft",
+"15f5  Power Micro Research",
+"15f6  Extreme Packet Device Inc",
+"15f7  Banctec",
+"15f8  Koga Electronics Co",
+"15f9  Zenith Electronics Corp",
+"15fa  J.P. Axzam Corp",
+"15fb  Zilog Inc",
+"15fc  Techsan Electronics Co Ltd",
+"15fd  N-CUBED.NET",
+"15fe  Kinpo Electronics Inc",
+"15ff  Fastpoint Technologies Inc",
+"1600  Northrop Grumman - Canada Ltd",
+"1601  Tenta Technology",
+"1602  Prosys-tec Inc",
+"1603  Nokia Wireless Communications",
+"1604  Central System Research Co Ltd",
+"1605  Pairgain Technologies",
+"1606  Europop AG",
+"1607  Lava Semiconductor Manufacturing Inc",
+"1608  Automated Wagering International",
+"1609  Scimetric Instruments Inc",
+"1612  Telesynergy Research Inc.",
+"1619  FarSite Communications Ltd",
+"	0400  FarSync T2P (2 port X.21/V.35/V.24)",
+"	0440  FarSync T4P (4 port X.21/V.35/V.24)",
+"	0610  FarSync T1U (1 port X.21/V.35/V.24)",
+"	0620  FarSync T2U (2 port X.21/V.35/V.24)",
+"	0640  FarSync T4U (4 port X.21/V.35/V.24)",
+"	1610  FarSync TE1 (T1,E1)",
+"	2610  FarSync DSL-S1 (SHDSL)",
+"161f  Rioworks",
+"1626  TDK Semiconductor Corp.",
+"	8410  RTL81xx Fast Ethernet",
+"1629  Kongsberg Spacetec AS",
+"	1003  Format synchronizer v3.0",
+"	2002  Fast Universal Data Output",
+"1637  Linksys",
+"	3874  Linksys 802.11b WMP11 PCI Wireless card",
+"1638  Standard Microsystems Corp [SMC]",
+"	1100  SMC2602W EZConnect / Addtron AWA-100 / Eumitcom PCI WL11000",
+"163c  Smart Link Ltd.",
+"	3052  SmartLink SmartPCI562 56K Modem",
+"	5449  SmartPCI561 Modem",
+"1657  Brocade Communications Systems, Inc.",
+"165a  Epix Inc",
+"	c100  PIXCI(R) CL1 Camera Link Video Capture Board [custom QL5232]",
+"	d200  PIXCI(R) D2X Digital Video Capture Board [custom QL5232]",
+"	d300  PIXCI(R) D3X Digital Video Capture Board [custom QL5232]",
+"165d  Hsing Tech. Enterprise Co., Ltd.",
+"165f  Linux Media Labs, LLC",
+"	1020  LMLM4 MPEG-4 encoder",
+"1661  Worldspace Corp.",
+"1668  Actiontec Electronics Inc",
+"	0100  Mini-PCI bridge",
+"166d  Broadcom Corporation",
+"	0001  SiByte BCM1125/1125H/1250 System-on-a-Chip PCI",
+"	0002  SiByte BCM1125H/1250 System-on-a-Chip HyperTransport",
+"1677  Bernecker + Rainer",
+"	104e  5LS172.6 B&R Dual CAN Interface Card",
+"	12d7  5LS172.61 B&R Dual CAN Interface Card",
+"167b  ZyDAS Technology Corp.",
+"	2102  ZyDAS ZD1202",
+"		187e 3406  ZyAIR B-122 CardBus 11Mbs Wireless LAN Card",
+"1681  Hercules",
+"	0010  Hercules 3d Prophet II Ultra 64MB (350 MHz NV15BR core)",
+"1682  XFX Pine Group Inc.",
+"1688  CastleNet Technology Inc.",
+"	1170  WLAN 802.11b card",
+"168c  Atheros Communications, Inc.",
+"	0007  AR5000 802.11a Wireless Adapter",
+"	0011  AR5210 802.11a NIC",
+"	0012  AR5211 802.11ab NIC",
+"	0013  AR5212 802.11abg NIC",
+"		1113 d301  Philips CPWNA100 Wireless CardBus adapter",
+"		1186 3202  D-link DWL-G650 (Rev B3,B5) Wireless cardbus adapter",
+"		1186 3203  DWL-G520 Wireless PCI Adapter",
+"		1186 3a12  D-Link AirPlus DWL-G650 Wireless Cardbus Adapter(rev.C)",
+"		1186 3a13  D-Link AirPlus DWL-G520 Wireless PCI Adapter(rev.B)",
+"		1186 3a14  D-Link AirPremier DWL-AG530 Wireless PCI Adapter",
+"		1186 3a17  D-Link AirPremier DWL-G680 Wireless Cardbus Adapter",
+"		1186 3a18  D-Link AirPremier DWL-G550 Wireless PCI Adapter",
+"		1186 3a63  D-Link AirPremier DWL-AG660 Wireless Cardbus Adapter",
+"		1186 3a94  C54C Wireless 801.11g cardbus",
+"		1186 3ab0  Allnet ALL0281 Wireless PCI Card",
+"		1385 4d00  Netgear WG311T Wireless PCI Adapter",
+"		1458 e911  Gigabyte GN-WIAG02",
+"		14b7 0a60  8482-WD ORiNOCO 11a/b/g Wireless PCI Adapter",
+"		168c 0013  AirPlus XtremeG DWL-G650 Wireless PCMCIA Adapter",
+"		168c 1025  DWL-G650B2 Wireless CardBus Adapter",
+"		168c 1027  Netgate NL-3054CB ARIES b/g CardBus Adapter",
+"		168c 2026  Netgate 5354MP ARIES a(108Mb turbo)/b/g MiniPCI Adapter",
+"		168c 2041  Netgate 5354MP Plus ARIES2 b/g MiniPCI Adapter",
+"		168c 2042  Netgate 5354MP Plus ARIES2 a/b/g MiniPCI Adapter",
+"		16ab 7302  Trust Speedshare Turbo Pro Wireless PCI Adapter",
+"		185f 2012  Wistron NeWeb WLAN a+b+g model CB9",
+"	001a  AR5005G 802.11abg NIC",
+"		1113 ee20  SMC Wireless CardBus Adapter 802.11g (SMCWCB-G EU)",
+"		1113 ee24  SMC Wireless PCI Card WPCI-G",
+"		1186 3a15  D-Link AirPlus G DWL-G630 Wireless Cardbus Adapter(rev.D)",
+"		1186 3a16  D-Link AirPlus G DWL-G510 Wireless PCI Adapter(rev.B)",
+"		1186 3a23  D-Link AirPlus G DWL-G520+A Wireless PCI Adapter",
+"		1186 3a24  D-Link AirPlus G DWL-G650+A Wireless Cardbus Adapter",
+"		168c 1052  TP-Link TL-WN510G Wireless CardBus Adapter",
+"	001b  AR5006X 802.11abg NIC",
+"		1186 3a19  D-Link AirPremier AG DWL-AG660 Wireless Cardbus Adapter",
+"		1186 3a22  D-Link AirPremier AG DWL-AG530 Wireless PCI Adapter",
+"		168c 2062  EnGenius EMP-8602 (400mw)",
+"		168c 2063  EnGenius EMP-8602 (400mw)",
+"	0020  AR5005VL 802.11bg Wireless NIC",
+"	1014  AR5212 802.11abg NIC",
+"1695  EPoX Computer Co., Ltd.",
+"169c  Netcell Corporation",
+"	0044  Revolution Storage Processing Card",
+"16a5  Tekram Technology Co.,Ltd.",
+"16ab  Global Sun Technology Inc",
+"	1100  GL24110P",
+"	1101  PLX9052 PCMCIA-to-PCI Wireless LAN",
+"	1102  PCMCIA-to-PCI Wireless Network Bridge",
+"	8501  WL-8305 Wireless LAN PCI Adapter",
+"16ae  Safenet Inc",
+"	1141  SafeXcel-1141",
+"16af  SparkLAN Communications, Inc.",
+"16b4  Aspex Semiconductor Ltd",
+"16b8  Sonnet Technologies, Inc.",
+"16be  Creatix Polymedia GmbH",
+"16c6  Micrel-Kendin",
+"	8695  Centaur KS8695 ARM processor",
+"16c8  Octasic Inc.",
+"16c9  EONIC B.V. The Netherlands",
+"16ca  CENATEK Inc",
+"	0001  Rocket Drive DL",
+"16cd  Densitron Technologies",
+"16ce  Roland Corp.",
+"16d5  Acromag, Inc.",
+"	4d4e  PMC482, APC482, AcPC482 Counter Timer Board",
+"16df  PIKA Technologies Inc.",
+"16e3  European Space Agency",
+"	1e0f  LEON2FT Processor",
+"16ec  U.S. Robotics",
+"	00ff  USR997900 10/100 Mbps PCI Network Card",
+"	0116  USR997902 10/100/1000 Mbps PCI Network Card",
+"	3685  Wireless Access PCI Adapter Model 022415",
+"16ed  Sycron N. V.",
+"	1001  UMIO communication card",
+"16f3  Jetway Information Co., Ltd.",
+"16f4  Vweb Corp",
+"	8000  VW2010",
+"16f6  VideoTele.com, Inc.",
+"1702  Internet Machines Corporation (IMC)",
+"1705  Digital First, Inc.",
+"170b  NetOctave",
+"	0100  NSP2000-SSL crypto accelerator",
+"170c  YottaYotta Inc.",
+"1725  Vitesse Semiconductor",
+"	7174  VSC7174 PCI/PCI-X Serial ATA Host Bus Controller",
+"172a  Accelerated Encryption",
+"	13c8  AEP SureWare Runner 1000V3",
+"1734  Fujitsu Siemens Computer GmbH",
+"	1078  Amilo Pro v2010",
+"1737  Linksys",
+"	0013  WMP54G Wireless Pci Card",
+"	0015  WMP54GS Wireless Pci Card",
+"	1032  Gigabit Network Adapter",
+"		1737 0015  EG1032 v2 Instant Gigabit Network Adapter",
+"		1737 0024  EG1032 v3 Instant Gigabit Network Adapter",
+"	1064  Gigabit Network Adapter",
+"		1737 0016  EG1064 v2 Instant Gigabit Network Adapter",
+"	ab08  21x4x DEC-Tulip compatible 10/100 Ethernet",
+"	ab09  21x4x DEC-Tulip compatible 10/100 Ethernet",
+"173b  Altima (nee Broadcom)",
+"	03e8  AC1000 Gigabit Ethernet",
+"	03e9  AC1001 Gigabit Ethernet",
+"	03ea  AC9100 Gigabit Ethernet",
+"		173b 0001  AC1002",
+"	03eb  AC1003 Gigabit Ethernet",
+"1743  Peppercon AG",
+"	8139  ROL/F-100 Fast Ethernet Adapter with ROL",
+"1749  RLX Technologies",
+"174b  PC Partner Limited",
+"174d  WellX Telecom SA",
+"175c  AudioScience Inc",
+"175e  Sanera Systems, Inc.",
+"1775  SBS Technologies",
+"1787  Hightech Information System Ltd.",
+"1796  Research Centre Juelich",
+"	0001  SIS1100 [Gigabit link]",
+"	0002  HOTlink",
+"	0003  Counter Timer",
+"	0004  CAMAC Controller",
+"	0005  PROFIBUS",
+"	0006  AMCC HOTlink",
+"1797  JumpTec h, GMBH",
+"1799  Belkin",
+"	6001  Wireless PCI Card - F5D6001",
+"	6020  Wireless PCMCIA Card - F5D6020",
+"	6060  Wireless PDA Card - F5D6060",
+"	7000  Wireless PCI Card - F5D7000",
+"	7010  BCM4306 802.11b/g Wireless Lan Controller F5D7010",
+"179c  Data Patterns",
+"	0557  DP-PCI-557 [PCI 1553B]",
+"	0566  DP-PCI-566 [Intelligent PCI 1553B]",
+"	5031  DP-CPCI-5031-Synchro Module",
+"	5121  DP-CPCI-5121-IP Carrier",
+"	5211  DP-CPCI-5211-IP Carrier",
+"	5679  AGE Display Module",
+"17a0  Genesys Logic, Inc",
+"	8033  GL880S USB 1.1 controller",
+"	8034  GL880S USB 2.0 controller",
+"17aa  Lenovo",
+"17af  Hightech Information System Ltd.",
+"17b3  Hawking Technologies",
+"	ab08  PN672TX 10/100 Ethernet",
+"17b4  Indra Networks, Inc.",
+"	0011  WebEnhance 100 GZIP Compression Card",
+"17c0  Wistron Corp.",
+"17c2  Newisys, Inc.",
+"17cb  Airgo Networks Inc",
+"17cc  NetChip Technology, Inc",
+"	2280  USB 2.0",
+"17cf  Z-Com, Inc.",
+"17d3  Areca Technology Corp.",
+"	1110  ARC-1110 4-Port PCI-X to SATA RAID Controller",
+"	1120  ARC-1120 8-Port PCI-X to SATA RAID Controller",
+"	1130  ARC-1130 12-Port PCI-X to SATA RAID Controller",
+"	1160  ARC-1160 16-Port PCI-X to SATA RAID Controller",
+"	1210  ARC-1210 4-Port PCI-Express to SATA RAID Controller",
+"	1220  ARC-1220 8-Port PCI-Express to SATA RAID Controller",
+"	1230  ARC-1230 12-Port PCI-Express to SATA RAID Controller",
+"	1260  ARC-1260 16-Port PCI-Express to SATA RAID Controller",
+"17d5  S2io Inc.",
+"	5831  Xframe 10 Gigabit Ethernet PCI-X",
+"		103c 12d5  HP PCI-X 133MHz 10GbE SR Fiber",
+"	5832  Xframe II 10Gbps Ethernet",
+"17de  KWorld Computer Co. Ltd.",
+"17ee  Connect Components Ltd",
+"17f2  Albatron Corp.",
+"17fe  Linksys, A Division of Cisco Systems",
+"	2120  WMP11v4 802.11b PCI card",
+"	2220  [AirConn] INPROCOMM IPN 2220 Wireless LAN Adapter (rev 01)",
+"		17fe 2220  WPC54G ver. 4",
+"17ff  Benq Corporation",
+"1809  Lumanate, Inc.",
+"1813  Ambient Technologies Inc",
+"	4000  HaM controllerless modem",
+"		16be 0001  V9x HAM Data Fax Modem",
+"	4100  HaM plus Data Fax Modem",
+"		16be 0002  V9x HAM 1394",
+"1814  RaLink",
+"	0101  Wireless PCI Adapter RT2400 / RT2460",
+"		1043 0127  WiFi-b add-on Card",
+"		1462 6828  PC11B2 (MS-6828) Wireless 11b PCI Card",
+"	0200  RT2500 802.11g PCI [PC54G2]",
+"	0201  RT2500 802.11g Cardbus/mini-PCI",
+"		1043 130f  WL-130g",
+"		1371 001e  CWC-854 Wireless-G CardBus Adapter",
+"		1371 001f  CWM-854 Wireless-G Mini PCI Adapter",
+"		1371 0020  CWP-854 Wireless-G PCI Adapter",
+"		1458 e381  GN-WMKG 802.11b/g Wireless CardBus Adapter",
+"		1458 e931  GN-WIKG 802.11b/g mini-PCI Adapter",
+"		1462 6835  Wireless 11G CardBus CB54G2",
+"		1737 0032  WMP54G 2.0 PCI Adapter",
+"		1799 700a  F5D7000 Wireless G Desktop Network Card",
+"		1799 701a  F5D7010 Wireless G Notebook Network Card",
+"		185f 22a0  CN-WF513 Wireless Cardbus Adapter",
+"	0301  RT2561/RT61 802.11g PCI",
+"		1186 3c08  DWL-G630 Rev E",
+"		1186 3c09  DWL-G510 Rev C",
+"	0302  RT2561/RT61 rev B 802.11g",
+"		1186 3c08  DWL-G630 Rev E",
+"		1186 3c09  DWL-G510 Rev C",
+"	0401  Ralink RT2600 802.11 MIMO",
+"1820  InfiniCon Systems Inc.",
+"1822  Twinhan Technology Co. Ltd",
+"	4e35  Mantis DTV PCI Bridge Controller [Ver 1.0]",
+"182d  SiteCom Europe BV",
+"	3069  ISDN PCI DC-105V2",
+"	9790  WL-121 Wireless Network Adapter 100g+ [Ver.3]",
+"1830  Credence Systems Corporation",
+"183b  MikroM GmbH",
+"	08a7  MVC100 DVI",
+"	08a8  MVC101 SDI",
+"	08a9  MVC102 DVI+Audio",
+"1849  ASRock Incorporation",
+"1851  Microtune, Inc.",
+"1852  Anritsu Corp.",
+"1853  SMSC Automotive Infotainment System Group",
+"1854  LG Electronics, Inc.",
+"185b  Compro Technology, Inc.",
+"185f  Wistron NeWeb Corp.",
+"1864  SilverBack",
+"	2110  ISNAP 2110",
+"1867  Topspin Communications",
+"	5a44  MT23108 InfiniHost HCA",
+"	5a45  MT23108 InfiniHost HCA flash recovery",
+"	5a46  MT23108 InfiniHost HCA bridge",
+"	6278  MT25208 InfiniHost III Ex (Tavor compatibility mode)",
+"	6282  MT25208 InfiniHost III Ex",
+"187e  ZyXEL Communication Corporation",
+"	3403  ZyAir G-110 802.11g",
+"	340e  M-302 802.11g XtremeMIMO",
+"1888  Varisys Ltd",
+"	0301  VMFX1 FPGA PMC module",
+"	0601  VSM2 dual PMC carrier",
+"	0710  VS14x series PowerPC PCI board",
+"	0720  VS24x series PowerPC PCI board",
+"188a  Ample Communications, Inc",
+"1890  Egenera, Inc.",
+"1894  KNC One",
+"1896  B&B Electronics Manufacturing Company, Inc.",
+"18a1  Astute Networks Inc.",
+"18ac  DViCO Corporation",
+"	d500  FusionHDTV 5",
+"	d810  FusionHDTV 3 Gold",
+"	d820  FusionHDTV 3 Gold-T",
+"18b8  Ammasso",
+"	b001  AMSO 1100 iWARP/RDMA Gigabit Ethernet Coprocessor",
+"18bc  Info-Tek Corp.",
+"18c3  Micronas Semiconductor Holding AG",
+"18c8  Cray Inc",
+"18c9  ARVOO Engineering BV",
+"18ca  XGI - Xabre Graphics Inc",
+"	0020  Volari Z7",
+"	0040  Volari V3XT/V5/V8",
+"18d2  Sitecom",
+"	3069  DC-105v2 ISDN controller",
+"18dd  Artimi Inc",
+"	4c6f  Artimi RTMI-100 UWB adapter",
+"18e6  MPL AG",
+"	0001  OSCI [Octal Serial Communication Interface]",
+"18ec  Cesnet, z.s.p.o.",
+"	c006  COMBO6",
+"		18ec d001  COMBO-4MTX",
+"		18ec d002  COMBO-4SFP",
+"		18ec d003  COMBO-4SFPRO",
+"		18ec d004  COMBO-2XFP",
+"	c045  COMBO6E",
+"	c050  COMBO-PTM",
+"	c058  COMBO6X",
+"		18ec d001  COMBO-4MTX",
+"		18ec d002  COMBO-4SFP",
+"		18ec d003  COMBO-4SFPRO",
+"		18ec d004  COMBO-2XFP",
+"18f7  Commtech, Inc.",
+"	0001  Fastcom ESCC-PCI-335",
+"	0002  Fastcom 422/4-PCI-335",
+"	0004  Fastcom 422/2-PCI-335",
+"	0005  Fastcom IGESCC-PCI-ISO/1",
+"	000a  Fastcom 232/4-PCI-335",
+"18fb  Resilience Corporation",
+"1904  Hangzhou Silan Microelectronics Co., Ltd.",
+"1923  Sangoma Technologies Corp.",
+"	0100  A104d QUAD T1/E1 AFT card",
+"	0400  A104u Quad T1/E1 AFT",
+"1924  Level 5 Networks Inc.",
+"192e  TransDimension",
+"1931  Option N.V.",
+"	000c  Qualcomm MSM6275 UMTS chip",
+"1942  ClearSpeed Technology plc",
+"	e511  CSX600 Advance Accelerator Board",
+"1957  Freescale Semiconductor Inc",
+"	0080  MPC8349E",
+"	0081  MPC8349",
+"	0082  MPC8347E TBGA",
+"	0083  MPC8347 TBGA",
+"	0084  MPC8347E PBGA",
+"	0085  MPC8347 PBGA",
+"	0086  MPC8343E",
+"	0087  MPC8343",
+"1958  Faster Technology, LLC.",
+"1966  Orad Hi-Tec Systems",
+"	1975  DVG64 family",
+"196a  Sensory Networks Inc.",
+"	0101  NodalCore C-1000 Content Classification Accelerator",
+"	0102  NodalCore C-2000 Content Classification Accelerator",
+"197b  JMicron Technologies, Inc.",
+"	2360  JMicron 20360/20363 AHCI Controller",
+"	2361  JMB361 AHCI/IDE",
+"	2363  JMicron 20360/20363 AHCI Controller",
+"	2365  JMB365 AHCI/IDE",
+"	2366  JMB366 AHCI/IDE",
+"1989  Montilio Inc.",
+"	0001  RapidFile Bridge",
+"	8001  RapidFile",
+"1993  Innominate Security Technologies AG",
+"199a  Pulse-LINK, Inc.",
+"19a8  DAQDATA GmbH",
+"19ac  Kasten Chase Applied Research",
+"	0001  ACA2400 Crypto Accelerator",
+"19ae  Progeny Systems Corporation",
+"	0520  4135 HFT Interface Controller",
+"19d4  Quixant Limited",
+"19e2  Vector Informatik GmbH",
+"1a03  ASPEED Technology, Inc.",
+"	2000  AST2000",
+"1a08  Sierra semiconductor",
+"	0000  SC15064",
+"1a1d  GFaI e.V.",
+"1a29  Fortinet, Inc.",
+"1b13  Jaton Corp",
+"1c1c  Symphony",
+"	0001  82C101",
+"1d44  DPT",
+"	a400  PM2x24/PM3224",
+"1de1  Tekram Technology Co.,Ltd.",
+"	0391  TRM-S1040",
+"	2020  DC-390",
+"	690c  690c",
+"	dc29  DC290",
+"1fc0  Tumsan Oy",
+"	0300  E2200 Dual E1/Rawpipe Card",
+"1fc1  PathScale, Inc",
+"	000d  InfiniPath HT-400",
+"	0010  InfiniPath PE-800",
+"1fce  Cognio Inc.",
+"	0001  Spectrum Analyzer PC Card (SAgE)",
+"2000  Smart Link Ltd.",
+"2001  Temporal Research Ltd",
+"2003  Smart Link Ltd.",
+"2004  Smart Link Ltd.",
+"21c3  21st Century Computer Corp.",
+"22b8  Motorola, Inc.",
+"2348  Racore",
+"	2010  8142 100VG/AnyLAN",
+"2646  Kingston Technologies",
+"270b  Xantel Corporation",
+"270f  Chaintech Computer Co. Ltd",
+"2711  AVID Technology Inc.",
+"2a15  3D Vision(\?\?\?)",
+"3000  Hansol Electronics Inc.",
+"3142  Post Impression Systems.",
+"3388  Hint Corp",
+"	0013  HiNT HC4 PCI to ISDN bridge, Multimedia audio controller",
+"	0014  HiNT HC4 PCI to ISDN bridge, Network controller",
+"	0020  HB6 Universal PCI-PCI bridge (transparent mode)",
+"	0021  HB6 Universal PCI-PCI bridge (non-transparent mode)",
+"		4c53 1050  CT7 mainboard",
+"		4c53 1080  CT8 mainboard",
+"		4c53 1090  Cx9 mainboard",
+"		4c53 10a0  CA3/CR3 mainboard",
+"		4c53 3010  PPCI mezzanine (32-bit PMC)",
+"		4c53 3011  PPCI mezzanine (64-bit PMC)",
+"		4c53 4000  PMCCARR1 carrier board",
+"	0022  HiNT HB4 PCI-PCI Bridge (PCI6150)",
+"	0026  HB2 PCI-PCI Bridge",
+"	101a  E.Band [AudioTrak Inca88]",
+"	101b  E.Band [AudioTrak Inca88]",
+"	8011  VXPro II Chipset",
+"		3388 8011  VXPro II Chipset CPU to PCI Bridge",
+"	8012  VXPro II Chipset",
+"		3388 8012  VXPro II Chipset PCI to ISA Bridge",
+"	8013  VXPro II IDE",
+"		3388 8013  VXPro II Chipset EIDE Controller",
+"3411  Quantum Designs (H.K.) Inc",
+"3513  ARCOM Control Systems Ltd",
+"3842  eVga.com. Corp.",
+"	c370  e-GeFORCE 6600 256 DDR PCI-e",
+"38ef  4Links",
+"3d3d  3DLabs",
+"	0001  GLINT 300SX",
+"	0002  GLINT 500TX",
+"		0000 0000  GLoria L",
+"	0003  GLINT Delta",
+"		0000 0000  GLoria XL",
+"	0004  Permedia",
+"	0005  Permedia",
+"	0006  GLINT MX",
+"		0000 0000  GLoria XL",
+"		1048 0a42  GLoria XXL",
+"	0007  3D Extreme",
+"	0008  GLINT Gamma G1",
+"		1048 0a42  GLoria XXL",
+"	0009  Permedia II 2D+3D",
+"		1040 0011  AccelStar II",
+"		1048 0a42  GLoria XXL",
+"		13e9 1000  6221L-4U",
+"		3d3d 0100  AccelStar II 3D Accelerator",
+"		3d3d 0111  Permedia 3:16",
+"		3d3d 0114  Santa Ana",
+"		3d3d 0116  Oxygen GVX1",
+"		3d3d 0119  Scirocco",
+"		3d3d 0120  Santa Ana PCL",
+"		3d3d 0125  Oxygen VX1",
+"		3d3d 0127  Permedia3 Create!",
+"	000a  GLINT R3",
+"		3d3d 0121  Oxygen VX1",
+"	000c  GLINT R3 [Oxygen VX1]",
+"		3d3d 0144  Oxygen VX1-4X AGP [Permedia 4]",
+"	000d  GLint R4 rev A",
+"	0011  GLint R4 rev B",
+"	0012  GLint R5 rev A",
+"	0013  GLint R5 rev B",
+"	0020  VP10 visual processor",
+"	0022  VP10 visual processor",
+"	0024  VP9 visual processor",
+"	0100  Permedia II 2D+3D",
+"	07a1  Wildcat III 6210",
+"	07a2  Sun XVR-500 Graphics Accelerator",
+"	07a3  Wildcat IV 7210",
+"	1004  Permedia",
+"	3d04  Permedia",
+"	ffff  Glint VGA",
+"4005  Avance Logic Inc.",
+"	0300  ALS300 PCI Audio Device",
+"	0308  ALS300+ PCI Audio Device",
+"	0309  PCI Input Controller",
+"	1064  ALG-2064",
+"	2064  ALG-2064i",
+"	2128  ALG-2364A GUI Accelerator",
+"	2301  ALG-2301",
+"	2302  ALG-2302",
+"	2303  AVG-2302 GUI Accelerator",
+"	2364  ALG-2364A",
+"	2464  ALG-2464",
+"	2501  ALG-2564A/25128A",
+"	4000  ALS4000 Audio Chipset",
+"		4005 4000  ALS4000 Audio Chipset",
+"	4710  ALC200/200P",
+"4033  Addtron Technology Co, Inc.",
+"	1360  RTL8139 Ethernet",
+"4143  Digital Equipment Corp",
+"4144  Alpha Data",
+"	0044  ADM-XRCIIPro",
+"416c  Aladdin Knowledge Systems",
+"	0100  AladdinCARD",
+"	0200  CPC",
+"4321  Tata Power Strategic Electronics Division",
+"4444  Internext Compression Inc",
+"	0016  iTVC16 (CX23416) MPEG-2 Encoder",
+"		0070 0003  WinTV PVR 250",
+"		0070 0009  WinTV PVR 150",
+"		0070 0801  WinTV PVR 150",
+"		0070 0807  WinTV PVR 150",
+"		0070 4001  WinTV PVR 250",
+"		0070 4009  WinTV PVR 250",
+"		0070 4801  WinTV PVR 250",
+"		0070 4803  WinTV PVR 250",
+"		0070 8003  WinTV PVR 150",
+"		0070 8801  WinTV PVR 150",
+"		0070 c801  WinTV PVR 150",
+"		0070 e807  WinTV PVR 500 (1st unit)",
+"		0070 e817  WinTV PVR 500 (2nd unit)",
+"		0070 ff92  WiNTV PVR-550",
+"		0270 0801  WinTV PVR 150",
+"		12ab fff3  MPG600",
+"		12ab ffff  MPG600",
+"		9005 0092  VideOh! AVC-2010",
+"		9005 0093  VideOh! AVC-2410",
+"	0803  iTVC15 MPEG-2 Encoder",
+"		0070 4000  WinTV PVR-350",
+"		0070 4001  WinTV PVR-250",
+"		0070 4800  WinTV PVR-350 (V1)",
+"		12ab 0000  MPG160",
+"		1461 a3ce  M179",
+"		1461 a3cf  M179",
+"4468  Bridgeport machines",
+"4594  Cogetec Informatique Inc",
+"45fb  Baldor Electric Company",
+"4680  Umax Computer Corp",
+"4843  Hercules Computer Technology Inc",
+"4916  RedCreek Communications Inc",
+"	1960  RedCreek PCI adapter",
+"4943  Growth Networks",
+"494f  ACCES I/O Products, Inc.",
+"	10e8  LPCI-COM-8SM",
+"4978  Axil Computer Inc",
+"4a14  NetVin",
+"	5000  NV5000SC",
+"		4a14 5000  RT8029-Based Ethernet Adapter",
+"4b10  Buslogic Inc.",
+"4c48  LUNG HWA Electronics",
+"4c53  SBS Technologies",
+"	0000  PLUSTEST device",
+"		4c53 3000  PLUSTEST card (PC104+)",
+"		4c53 3001  PLUSTEST card (PMC)",
+"	0001  PLUSTEST-MM device",
+"		4c53 3002  PLUSTEST-MM card (PMC)",
+"4ca1  Seanix Technology Inc",
+"4d51  MediaQ Inc.",
+"	0200  MQ-200",
+"4d54  Microtechnica Co Ltd",
+"4ddc  ILC Data Device Corp",
+"	0100  DD-42924I5-300 (ARINC 429 Data Bus)",
+"	0801  BU-65570I1 MIL-STD-1553 Test and Simulation",
+"	0802  BU-65570I2 MIL-STD-1553 Test and Simulation",
+"	0811  BU-65572I1 MIL-STD-1553 Test and Simulation",
+"	0812  BU-65572I2 MIL-STD-1553 Test and Simulation",
+"	0881  BU-65570T1 MIL-STD-1553 Test and Simulation",
+"	0882  BU-65570T2 MIL-STD-1553 Test and Simulation",
+"	0891  BU-65572T1 MIL-STD-1553 Test and Simulation",
+"	0892  BU-65572T2 MIL-STD-1553 Test and Simulation",
+"	0901  BU-65565C1 MIL-STD-1553 Data Bus",
+"	0902  BU-65565C2 MIL-STD-1553 Data Bus",
+"	0903  BU-65565C3 MIL-STD-1553 Data Bus",
+"	0904  BU-65565C4 MIL-STD-1553 Data Bus",
+"	0b01  BU-65569I1 MIL-STD-1553 Data Bus",
+"	0b02  BU-65569I2 MIL-STD-1553 Data Bus",
+"	0b03  BU-65569I3 MIL-STD-1553 Data Bus",
+"	0b04  BU-65569I4 MIL-STD-1553 Data Bus",
+"5046  GemTek Technology Corporation",
+"	1001  PCI Radio",
+"5053  Voyetra Technologies",
+"	2010  Daytona Audio Adapter",
+"5136  S S Technologies",
+"5143  Qualcomm Inc",
+"5145  Ensoniq (Old)",
+"	3031  Concert AudioPCI",
+"5168  Animation Technologies Inc.",
+"	0300  FlyDVB-S",
+"	0301  FlyDVB-T",
+"5301  Alliance Semiconductor Corp.",
+"	0001  ProMotion aT3D",
+"5333  S3 Inc.",
+"	0551  Plato/PX (system)",
+"	5631  86c325 [ViRGE]",
+"	8800  86c866 [Vision 866]",
+"	8801  86c964 [Vision 964]",
+"	8810  86c764_0 [Trio 32 vers 0]",
+"	8811  86c764/765 [Trio32/64/64V+]",
+"	8812  86cM65 [Aurora64V+]",
+"	8813  86c764_3 [Trio 32/64 vers 3]",
+"	8814  86c767 [Trio 64UV+]",
+"	8815  86cM65 [Aurora 128]",
+"	883d  86c988 [ViRGE/VX]",
+"	8870  FireGL",
+"	8880  86c868 [Vision 868 VRAM] vers 0",
+"	8881  86c868 [Vision 868 VRAM] vers 1",
+"	8882  86c868 [Vision 868 VRAM] vers 2",
+"	8883  86c868 [Vision 868 VRAM] vers 3",
+"	88b0  86c928 [Vision 928 VRAM] vers 0",
+"	88b1  86c928 [Vision 928 VRAM] vers 1",
+"	88b2  86c928 [Vision 928 VRAM] vers 2",
+"	88b3  86c928 [Vision 928 VRAM] vers 3",
+"	88c0  86c864 [Vision 864 DRAM] vers 0",
+"	88c1  86c864 [Vision 864 DRAM] vers 1",
+"	88c2  86c864 [Vision 864-P DRAM] vers 2",
+"	88c3  86c864 [Vision 864-P DRAM] vers 3",
+"	88d0  86c964 [Vision 964 VRAM] vers 0",
+"	88d1  86c964 [Vision 964 VRAM] vers 1",
+"	88d2  86c964 [Vision 964-P VRAM] vers 2",
+"	88d3  86c964 [Vision 964-P VRAM] vers 3",
+"	88f0  86c968 [Vision 968 VRAM] rev 0",
+"	88f1  86c968 [Vision 968 VRAM] rev 1",
+"	88f2  86c968 [Vision 968 VRAM] rev 2",
+"	88f3  86c968 [Vision 968 VRAM] rev 3",
+"	8900  86c755 [Trio 64V2/DX]",
+"		5333 8900  86C775 Trio64V2/DX",
+"	8901  86c775/86c785 [Trio 64V2/DX or /GX]",
+"		5333 8901  86C775 Trio64V2/DX, 86C785 Trio64V2/GX",
+"	8902  Plato/PX",
+"	8903  Trio 3D business multimedia",
+"	8904  Trio 64 3D",
+"		1014 00db  Integrated Trio3D",
+"		5333 8904  86C365 Trio3D AGP",
+"	8905  Trio 64V+ family",
+"	8906  Trio 64V+ family",
+"	8907  Trio 64V+ family",
+"	8908  Trio 64V+ family",
+"	8909  Trio 64V+ family",
+"	890a  Trio 64V+ family",
+"	890b  Trio 64V+ family",
+"	890c  Trio 64V+ family",
+"	890d  Trio 64V+ family",
+"	890e  Trio 64V+ family",
+"	890f  Trio 64V+ family",
+"	8a01  ViRGE/DX or /GX",
+"		0e11 b032  ViRGE/GX",
+"		10b4 1617  Nitro 3D",
+"		10b4 1717  Nitro 3D",
+"		5333 8a01  ViRGE/DX",
+"	8a10  ViRGE/GX2",
+"		1092 8a10  Stealth 3D 4000",
+"	8a13  86c368 [Trio 3D/2X]",
+"		5333 8a13  Trio3D/2X",
+"	8a20  86c794 [Savage 3D]",
+"		5333 8a20  86C391 Savage3D",
+"	8a21  86c390 [Savage 3D/MV]",
+"		5333 8a21  86C390 Savage3D/MV",
+"	8a22  Savage 4",
+"		1033 8068  Savage 4",
+"		1033 8069  Savage 4",
+"		1033 8110  Savage 4 LT",
+"		105d 0018  SR9 8Mb SDRAM",
+"		105d 002a  SR9 Pro 16Mb SDRAM",
+"		105d 003a  SR9 Pro 32Mb SDRAM",
+"		105d 092f  SR9 Pro+ 16Mb SGRAM",
+"		1092 4207  Stealth III S540",
+"		1092 4800  Stealth III S540",
+"		1092 4807  SpeedStar A90",
+"		1092 4808  Stealth III S540",
+"		1092 4809  Stealth III S540",
+"		1092 480e  Stealth III S540",
+"		1092 4904  Stealth III S520",
+"		1092 4905  SpeedStar A200",
+"		1092 4a09  Stealth III S540",
+"		1092 4a0b  Stealth III S540 Xtreme",
+"		1092 4a0f  Stealth III S540",
+"		1092 4e01  Stealth III S540",
+"		1102 101d  3d Blaster Savage 4",
+"		1102 101e  3d Blaster Savage 4",
+"		5333 8100  86C394-397 Savage4 SDRAM 100",
+"		5333 8110  86C394-397 Savage4 SDRAM 110",
+"		5333 8125  86C394-397 Savage4 SDRAM 125",
+"		5333 8143  86C394-397 Savage4 SDRAM 143",
+"		5333 8a22  86C394-397 Savage4",
+"		5333 8a2e  86C394-397 Savage4 32bit",
+"		5333 9125  86C394-397 Savage4 SGRAM 125",
+"		5333 9143  86C394-397 Savage4 SGRAM 143",
+"	8a23  Savage 4",
+"	8a25  ProSavage PM133",
+"	8a26  ProSavage KM133",
+"	8c00  ViRGE/M3",
+"	8c01  ViRGE/MX",
+"		1179 0001  ViRGE/MX",
+"	8c02  ViRGE/MX+",
+"	8c03  ViRGE/MX+MV",
+"	8c10  86C270-294 Savage/MX-MV",
+"	8c11  82C270-294 Savage/MX",
+"	8c12  86C270-294 Savage/IX-MV",
+"		1014 017f  Thinkpad T20/T22",
+"		1179 0001  86C584 SuperSavage/IXC Toshiba",
+"	8c13  86C270-294 Savage/IX",
+"		1179 0001  Magnia Z310",
+"	8c22  SuperSavage MX/128",
+"	8c24  SuperSavage MX/64",
+"	8c26  SuperSavage MX/64C",
+"	8c2a  SuperSavage IX/128 SDR",
+"	8c2b  SuperSavage IX/128 DDR",
+"	8c2c  SuperSavage IX/64 SDR",
+"	8c2d  SuperSavage IX/64 DDR",
+"	8c2e  SuperSavage IX/C SDR",
+"		1014 01fc  ThinkPad T23 (2647-4MG)",
+"	8c2f  SuperSavage IX/C DDR",
+"	8d01  86C380 [ProSavageDDR K4M266]",
+"	8d02  VT8636A [ProSavage KN133] AGP4X VGA Controller (TwisterK)",
+"	8d03  VT8751 [ProSavageDDR P4M266]",
+"	8d04  VT8375 [ProSavage8 KM266/KL266]",
+"	9102  86C410 Savage 2000",
+"		1092 5932  Viper II Z200",
+"		1092 5934  Viper II Z200",
+"		1092 5952  Viper II Z200",
+"		1092 5954  Viper II Z200",
+"		1092 5a35  Viper II Z200",
+"		1092 5a37  Viper II Z200",
+"		1092 5a55  Viper II Z200",
+"		1092 5a57  Viper II Z200",
+"	ca00  SonicVibes",
+"544c  Teralogic Inc",
+"	0350  TL880-based HDTV/ATSC tuner",
+"5455  Technische University Berlin",
+"	4458  S5933",
+"5519  Cnet Technologies, Inc.",
+"5544  Dunord Technologies",
+"	0001  I-30xx Scanner Interface",
+"5555  Genroco, Inc",
+"	0003  TURBOstor HFP-832 [HiPPI NIC]",
+"5654  VoiceTronix Pty Ltd",
+"	3132  OpenSwitch12",
+"5700  Netpower",
+"5851  Exacq Technologies",
+"6356  UltraStor",
+"6374  c't Magazin fuer Computertechnik",
+"	6773  GPPCI",
+"6409  Logitec Corp.",
+"6666  Decision Computer International Co.",
+"	0001  PCCOM4",
+"	0002  PCCOM8",
+"	0004  PCCOM2",
+"	0101  PCI 8255/8254 I/O Card",
+"7063  pcHDTV",
+"	2000  HD-2000",
+"	3000  HD-3000",
+"7604  O.N. Electronic Co Ltd.",
+"7bde  MIDAC Corporation",
+"7fed  PowerTV",
+"8008  Quancom Electronic GmbH",
+"	0010  WDOG1 [PCI-Watchdog 1]",
+"	0011  PWDOG2 [PCI-Watchdog 2]",
+"807d  Asustek Computer, Inc.",
+"8086  Intel Corporation",
+"	0007  82379AB",
+"	0008  Extended Express System Support Controller",
+"	0039  21145 Fast Ethernet",
+"	0122  82437FX",
+"	0309  80303 I/O Processor PCI-to-PCI Bridge",
+"	030d  80312 I/O Companion Chip PCI-to-PCI Bridge",
+"	0326  6700/6702PXH I/OxAPIC Interrupt Controller A",
+"	0327  6700PXH I/OxAPIC Interrupt Controller B",
+"	0329  6700PXH PCI Express-to-PCI Bridge A",
+"	032a  6700PXH PCI Express-to-PCI Bridge B",
+"	032c  6702PXH PCI Express-to-PCI Bridge A",
+"	0330  80332 [Dobson] I/O processor (A-Segment Bridge)",
+"	0331  80332 [Dobson] I/O processor (A-Segment IOAPIC)",
+"	0332  80332 [Dobson] I/O processor (B-Segment Bridge)",
+"	0333  80332 [Dobson] I/O processor (B-Segment IOAPIC)",
+"	0334  80332 [Dobson] I/O processor (ATU)",
+"	0335  80331 [Lindsay] I/O processor (PCI-X Bridge)",
+"	0336  80331 [Lindsay] I/O processor (ATU)",
+"	0340  41210 [Lanai] Serial to Parallel PCI Bridge (A-Segment Bridge)",
+"	0341  41210 [Lanai] Serial to Parallel PCI Bridge (B-Segment Bridge)",
+"	0370  80333 Segment-A PCI Express-to-PCI Express Bridge",
+"	0371  80333 A-Bus IOAPIC",
+"	0372  80333 Segment-B PCI Express-to-PCI Express Bridge",
+"	0373  80333 B-Bus IOAPIC",
+"	0374  80333 Address Translation Unit",
+"	0482  82375EB/SB PCI to EISA Bridge",
+"	0483  82424TX/ZX [Saturn] CPU to PCI bridge",
+"	0484  82378ZB/IB, 82379AB (SIO, SIO.A) PCI to ISA Bridge",
+"	0486  82425EX/ZX [Aries] PCIset with ISA bridge",
+"	04a3  82434LX/NX [Mercury/Neptune] Processor to PCI bridge",
+"	04d0  82437FX [Triton FX]",
+"	0500  E8870 Processor bus control",
+"	0501  E8870 Memory controller",
+"	0502  E8870 Scalability Port 0",
+"	0503  E8870 Scalability Port 1",
+"	0510  E8870IO Hub Interface Port 0 registers (8-bit compatibility port)",
+"	0511  E8870IO Hub Interface Port 1 registers",
+"	0512  E8870IO Hub Interface Port 2 registers",
+"	0513  E8870IO Hub Interface Port 3 registers",
+"	0514  E8870IO Hub Interface Port 4 registers",
+"	0515  E8870IO General SIOH registers",
+"	0516  E8870IO RAS registers",
+"	0530  E8870SP Scalability Port 0 registers",
+"	0531  E8870SP Scalability Port 1 registers",
+"	0532  E8870SP Scalability Port 2 registers",
+"	0533  E8870SP Scalability Port 3 registers",
+"	0534  E8870SP Scalability Port 4 registers",
+"	0535  E8870SP Scalability Port 5 registers",
+"	0536  E8870SP Interleave registers 0 and 1",
+"	0537  E8870SP Interleave registers 2 and 3",
+"	0600  RAID Controller",
+"		8086 01af  SRCZCR",
+"		8086 01c1  ICP Vortex GDT8546RZ",
+"		8086 01f7  SCRU32",
+"	061f  80303 I/O Processor",
+"	0960  80960RP [i960 RP Microprocessor/Bridge]",
+"	0962  80960RM [i960RM Bridge]",
+"	0964  80960RP [i960 RP Microprocessor/Bridge]",
+"	1000  82542 Gigabit Ethernet Controller",
+"		0e11 b0df  NC1632 Gigabit Ethernet Adapter (1000-SX)",
+"		0e11 b0e0  NC1633 Gigabit Ethernet Adapter (1000-LX)",
+"		0e11 b123  NC1634 Gigabit Ethernet Adapter (1000-SX)",
+"		1014 0119  Netfinity Gigabit Ethernet SX Adapter",
+"		8086 1000  PRO/1000 Gigabit Server Adapter",
+"	1001  82543GC Gigabit Ethernet Controller (Fiber)",
+"		0e11 004a  NC6136 Gigabit Server Adapter",
+"		1014 01ea  Netfinity Gigabit Ethernet SX Adapter",
+"		8086 1002  PRO/1000 F Server Adapter",
+"		8086 1003  PRO/1000 F Server Adapter",
+"	1002  Pro 100 LAN+Modem 56 Cardbus II",
+"		8086 200e  Pro 100 LAN+Modem 56 Cardbus II",
+"		8086 2013  Pro 100 SR Mobile Combo Adapter",
+"		8086 2017  Pro 100 S Combo Mobile Adapter",
+"	1004  82543GC Gigabit Ethernet Controller (Copper)",
+"		0e11 0049  NC7132 Gigabit Upgrade Module",
+"		0e11 b1a4  NC7131 Gigabit Server Adapter",
+"		1014 10f2  Gigabit Ethernet Server Adapter",
+"		8086 1004  PRO/1000 T Server Adapter",
+"		8086 2004  PRO/1000 T Server Adapter",
+"	1008  82544EI Gigabit Ethernet Controller (Copper)",
+"		1014 0269  iSeries 1000/100/10 Ethernet Adapter",
+"		1028 011c  PRO/1000 XT Network Connection",
+"		8086 1107  PRO/1000 XT Server Adapter",
+"		8086 2107  PRO/1000 XT Server Adapter",
+"		8086 2110  PRO/1000 XT Server Adapter",
+"		8086 3108  PRO/1000 XT Network Connection",
+"	1009  82544EI Gigabit Ethernet Controller (Fiber)",
+"		1014 0268  iSeries Gigabit Ethernet Adapter",
+"		8086 1109  PRO/1000 XF Server Adapter",
+"		8086 2109  PRO/1000 XF Server Adapter",
+"	100a  82540EM Gigabit Ethernet Controller",
+"	100c  82544GC Gigabit Ethernet Controller (Copper)",
+"		8086 1112  PRO/1000 T Desktop Adapter",
+"		8086 2112  PRO/1000 T Desktop Adapter",
+"	100d  82544GC Gigabit Ethernet Controller (LOM)",
+"		1028 0123  PRO/1000 XT Network Connection",
+"		1079 891f  82544GC Based Network Connection",
+"		4c53 1080  CT8 mainboard",
+"		8086 110d  82544GC Based Network Connection",
+"	100e  82540EM Gigabit Ethernet Controller",
+"		1014 0265  PRO/1000 MT Network Connection",
+"		1014 0267  PRO/1000 MT Network Connection",
+"		1014 026a  PRO/1000 MT Network Connection",
+"		1024 0134  Poweredge SC600",
+"		1028 002e  Optiplex GX260",
+"		1028 0151  PRO/1000 MT Network Connection",
+"		107b 8920  PRO/1000 MT Desktop Adapter",
+"		8086 001e  PRO/1000 MT Desktop Adapter",
+"		8086 002e  PRO/1000 MT Desktop Adapter",
+"		8086 1376  PRO/1000 GT Desktop Adapter",
+"		8086 1476  PRO/1000 GT Desktop Adapter",
+"	100f  82545EM Gigabit Ethernet Controller (Copper)",
+"		1014 0269  iSeries 1000/100/10 Ethernet Adapter",
+"		1014 028e  PRO/1000 MT Network Connection",
+"		8086 1000  PRO/1000 MT Network Connection",
+"		8086 1001  PRO/1000 MT Server Adapter",
+"	1010  82546EB Gigabit Ethernet Controller (Copper)",
+"		0e11 00db  NC7170 Gigabit Server Adapter",
+"		1014 027c  PRO/1000 MT Dual Port Network Adapter",
+"		18fb 7872  RESlink-X",
+"		1fc1 0026  Niagara 2260 Bypass Card",
+"		4c53 1080  CT8 mainboard",
+"		4c53 10a0  CA3/CR3 mainboard",
+"		8086 1011  PRO/1000 MT Dual Port Server Adapter",
+"		8086 1012  Primergy RX300",
+"		8086 101a  PRO/1000 MT Dual Port Network Adapter",
+"		8086 3424  SE7501HG2 Mainboard",
+"	1011  82545EM Gigabit Ethernet Controller (Fiber)",
+"		1014 0268  iSeries Gigabit Ethernet Adapter",
+"		8086 1002  PRO/1000 MF Server Adapter",
+"		8086 1003  PRO/1000 MF Server Adapter (LX)",
+"	1012  82546EB Gigabit Ethernet Controller (Fiber)",
+"		0e11 00dc  NC6170 Gigabit Server Adapter",
+"		8086 1012  PRO/1000 MF Dual Port Server Adapter",
+"	1013  82541EI Gigabit Ethernet Controller (Copper)",
+"		8086 0013  PRO/1000 MT Network Connection",
+"		8086 1013  IBM ThinkCentre Network Card",
+"		8086 1113  PRO/1000 MT Desktop Adapter",
+"	1014  82541ER Gigabit Ethernet Controller",
+"	1015  82540EM Gigabit Ethernet Controller (LOM)",
+"	1016  82540EP Gigabit Ethernet Controller (LOM)",
+"		1014 052c  PRO/1000 MT Mobile Connection",
+"		1179 0001  PRO/1000 MT Mobile Connection",
+"		8086 1016  PRO/1000 MT Mobile Connection",
+"	1017  82540EP Gigabit Ethernet Controller (LOM)",
+"		8086 1017  PR0/1000 MT Desktop Connection",
+"	1018  82541EI Gigabit Ethernet Controller",
+"		8086 1018  PRO/1000 MT Desktop Adapter",
+"	1019  82547EI Gigabit Ethernet Controller (LOM)",
+"		1458 1019  GA-8IPE1000 Pro2 motherboard (865PE)",
+"		1458 e000  Intel Gigabit Ethernet (Kenai II)",
+"		8086 1019  PRO/1000 CT Desktop Connection",
+"		8086 301f  D865PERL mainboard",
+"		8086 302c  Intel 82865G Mainboard (D865GBF)",
+"		8086 3427  S875WP1-E mainboard",
+"	101a  82547EI Gigabit Ethernet Controller (Mobile)",
+"	101d  82546EB Gigabit Ethernet Controller",
+"		8086 1000  PRO/1000 MT Quad Port Server Adapter",
+"	101e  82540EP Gigabit Ethernet Controller (Mobile)",
+"		1014 0549  PRO/1000 MT Mobile Connection",
+"		1179 0001  PRO/1000 MT Mobile Connection",
+"		8086 101e  PRO/1000 MT Mobile Connection",
+"	1026  82545GM Gigabit Ethernet Controller",
+"		1028 0169  Precision 470",
+"		8086 1000  PRO/1000 MT Server Connection",
+"		8086 1001  PRO/1000 MT Server Adapter",
+"		8086 1002  PRO/1000 MT Server Adapter",
+"		8086 1026  PRO/1000 MT Server Connection",
+"	1027  82545GM Gigabit Ethernet Controller",
+"		103c 3103  NC310F PCI-X Gigabit Server Adapter",
+"		8086 1001  PRO/1000 MF Server Adapter(LX)",
+"		8086 1002  PRO/1000 MF Server Adapter(LX)",
+"		8086 1003  PRO/1000 MF Server Adapter(LX)",
+"		8086 1027  PRO/1000 MF Server Adapter",
+"	1028  82545GM Gigabit Ethernet Controller",
+"		8086 1028  PRO/1000 MB Server Adapter",
+"	1029  82559 Ethernet Controller",
+"	1030  82559 InBusiness 10/100",
+"	1031  82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller",
+"		1014 0209  ThinkPad A/T/X Series",
+"		104d 80e7  Vaio PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP",
+"		104d 813c  Vaio PCG-GRV616G",
+"		107b 5350  EtherExpress PRO/100 VE",
+"		1179 0001  EtherExpress PRO/100 VE",
+"		144d c000  EtherExpress PRO/100 VE",
+"		144d c001  EtherExpress PRO/100 VE",
+"		144d c003  EtherExpress PRO/100 VE",
+"		144d c006  vpr Matrix 170B4",
+"	1032  82801CAM (ICH3) PRO/100 VE Ethernet Controller",
+"	1033  82801CAM (ICH3) PRO/100 VM (LOM) Ethernet Controller",
+"	1034  82801CAM (ICH3) PRO/100 VM Ethernet Controller",
+"	1035  82801CAM (ICH3)/82562EH (LOM)  Ethernet Controller",
+"	1036  82801CAM (ICH3) 82562EH Ethernet Controller",
+"	1037  82801CAM (ICH3) Chipset Ethernet Controller",
+"	1038  82801CAM (ICH3) PRO/100 VM (KM) Ethernet Controller",
+"		0e11 0098  Evo N600c",
+"	1039  82801DB PRO/100 VE (LOM) Ethernet Controller",
+"		1014 0267  NetVista A30p",
+"	103a  82801DB PRO/100 VE (CNR) Ethernet Controller",
+"	103b  82801DB PRO/100 VM (LOM) Ethernet Controller",
+"	103c  82801DB PRO/100 VM (CNR) Ethernet Controller",
+"	103d  82801DB PRO/100 VE (MOB) Ethernet Controller",
+"	103e  82801DB PRO/100 VM (MOB) Ethernet Controller",
+"	1040  536EP Data Fax Modem",
+"		16be 1040  V.9X DSP Data Fax Modem",
+"	1043  PRO/Wireless LAN 2100 3B Mini PCI Adapter",
+"		8086 2527  MIM2000/Centrino",
+"	1048  PRO/10GbE LR Server Adapter",
+"		8086 a01f  PRO/10GbE LR Server Adapter",
+"		8086 a11f  PRO/10GbE LR Server Adapter",
+"	104b  Ethernet Controller",
+"	1050  82562EZ 10/100 Ethernet Controller",
+"		1462 728c  865PE Neo2 (MS-6728)",
+"		1462 758c  MS-6758 (875P Neo)",
+"		8086 3020  D865PERL mainboard",
+"		8086 302f  Desktop Board D865GBF",
+"		8086 3427  S875WP1-E mainboard",
+"	1051  82801EB/ER (ICH5/ICH5R) integrated LAN Controller",
+"	1052  PRO/100 VM Network Connection",
+"	1053  PRO/100 VM Network Connection",
+"	1059  82551QM Ethernet Controller",
+"	105e  82571EB Gigabit Ethernet Controller",
+"		1775 6003  Telum GE-QT",
+"	105f  82571EB Gigabit Ethernet Controller",
+"	1060  82571EB Gigabit Ethernet Controller",
+"	1064  82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller",
+"		1043 80f8  P5GD1-VW Mainboard",
+"	1065  82562ET/EZ/GT/GZ - PRO/100 VE Ethernet Controller",
+"	1066  82562 EM/EX/GX - PRO/100 VM (LOM) Ethernet Controller",
+"	1067  82562 EM/EX/GX - PRO/100 VM Ethernet Controller",
+"	1068  82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller Mobile",
+"	1069  82562EM/EX/GX - PRO/100 VM (LOM) Ethernet Controller Mobile",
+"	106a  82562G - PRO/100 VE (LOM) Ethernet Controller",
+"	106b  82562G - PRO/100 VE Ethernet Controller Mobile",
+"	1075  82547GI Gigabit Ethernet Controller",
+"		1028 0165  PowerEdge 750",
+"		8086 0075  PRO/1000 CT Network Connection",
+"		8086 1075  PRO/1000 CT Network Connection",
+"	1076  82541GI/PI Gigabit Ethernet Controller",
+"		1028 0165  PowerEdge 750",
+"		1028 019a  PowerEdge SC1425",
+"		8086 0076  PRO/1000 MT Network Connection",
+"		8086 1076  PRO/1000 MT Network Connection",
+"		8086 1176  PRO/1000 MT Desktop Adapter",
+"		8086 1276  PRO/1000 MT Desktop Adapter",
+"	1077  82541GI Gigabit Ethernet Controller",
+"		1179 0001  PRO/1000 MT Mobile Connection",
+"		8086 0077  PRO/1000 MT Mobile Connection",
+"		8086 1077  PRO/1000 MT Mobile Connection",
+"	1078  82541EI Gigabit Ethernet Controller",
+"		8086 1078  PRO/1000 MT Network Connection",
+"	1079  82546GB Gigabit Ethernet Controller",
+"		103c 12a6  HP Dual Port 1000Base-T [A9900A]",
+"		103c 12cf  HP Core Dual Port 1000Base-T [AB352A]",
+"		1fc1 0027  Niagara 2261 Failover NIC",
+"		4c53 1090  Cx9 / Vx9 mainboard",
+"		4c53 10b0  CL9 mainboard",
+"		8086 0079  PRO/1000 MT Dual Port Network Connection",
+"		8086 1079  PRO/1000 MT Dual Port Network Connection",
+"		8086 1179  PRO/1000 MT Dual Port Network Connection",
+"		8086 117a  PRO/1000 MT Dual Port Server Adapter",
+"	107a  82546GB Gigabit Ethernet Controller",
+"		103c 12a8  HP Dual Port 1000base-SX [A9899A]",
+"		8086 107a  PRO/1000 MF Dual Port Server Adapter",
+"		8086 127a  PRO/1000 MF Dual Port Server Adapter",
+"	107b  82546GB Gigabit Ethernet Controller",
+"		8086 007b  PRO/1000 MB Dual Port Server Connection",
+"		8086 107b  PRO/1000 MB Dual Port Server Connection",
+"	107c  82541PI Gigabit Ethernet Controller",
+"	107d  82572EI Gigabit Ethernet Controller",
+"	107e  82572EI Gigabit Ethernet Controller",
+"	107f  82572EI Gigabit Ethernet Controller",
+"	1080  FA82537EP 56K V.92 Data/Fax Modem PCI",
+"	1081  Enterprise Southbridge LAN Copper",
+"	1082  Enterprise Southbridge LAN fiber",
+"	1083  Enterprise Southbridge LAN SERDES",
+"	1084  Enterprise Southbridge IDE Redirection",
+"	1085  Enterprise Southbridge Serial Port Redirection",
+"	1086  Enterprise Southbridge IPMI/KCS0",
+"	1087  Enterprise Southbridge UHCI Redirection",
+"	1089  Enterprise Southbridge BT",
+"	108a  82546EB Gigabit Ethernet Controller",
+"	108b  82573V Gigabit Ethernet Controller (Copper)",
+"	108c  82573E Gigabit Ethernet Controller (Copper)",
+"	108e  82573E KCS (Active Management)",
+"	108f  Intel(R) Active Management Technology - SOL",
+"	1092  Intel(R) PRO/100 VE Network Connection",
+"	1096  PRO/1000 EB Network Connection with I/O Acceleration",
+"	1097  Enterprise Southbridge DPT LAN fiber",
+"	1098  PRO/1000 EB Backplane Connection with I/O Acceleration",
+"	1099  82546GB Quad Port Server Adapter",
+"	109a  82573L Gigabit Ethernet Controller",
+"		17aa 207e  Thinkpad X60s",
+"	109b  82546GB PRO/1000 GF Quad Port Server Adapter",
+"	10a0  82571EB PRO/1000 AT Quad Port Bypass Adapter",
+"	10a1  82571EB PRO/1000 AF Quad Port Bypass Adapter",
+"	10b0  82573L PRO/1000 PL Network Connection",
+"	10b2  82573V PRO/1000 PM Network Connection",
+"	10b3  82573E PRO/1000 PM Network Connection",
+"	10b4  82573L PRO/1000 PL Network Connection",
+"	10b5  82546GB PRO/1000 GT Quad Port Server Adapter",
+"		103c 3109  NC340T PCI-X Quad-port Gigabit Server Adapter",
+"	1107  PRO/1000 MF Server Adapter (LX)",
+"	1130  82815 815 Chipset Host Bridge and Memory Controller Hub",
+"		1025 1016  Travelmate 612 TX",
+"		1043 8027  TUSL2-C Mainboard",
+"		104d 80df  Vaio PCG-FX403",
+"		8086 4532  D815EEA2 mainboard",
+"		8086 4557  D815EGEW Mainboard",
+"	1131  82815 815 Chipset AGP Bridge",
+"	1132  82815 CGC [Chipset Graphics Controller]",
+"		1025 1016  Travelmate 612 TX",
+"		104d 80df  Vaio PCG-FX403",
+"		8086 4532  D815EEA2 Mainboard",
+"		8086 4541  D815EEA Motherboard",
+"		8086 4557  D815EGEW Mainboard",
+"	1161  82806AA PCI64 Hub Advanced Programmable Interrupt Controller",
+"		8086 1161  82806AA PCI64 Hub APIC",
+"	1162  Xscale 80200 Big Endian Companion Chip",
+"	1200  Intel IXP1200 Network Processor",
+"		172a 0000  AEP SSL Accelerator",
+"	1209  8255xER/82551IT Fast Ethernet Controller",
+"		4c53 1050  CT7 mainboard",
+"		4c53 1051  CE7 mainboard",
+"		4c53 1070  PC6 mainboard",
+"	1221  82092AA PCI to PCMCIA Bridge",
+"	1222  82092AA IDE Controller",
+"	1223  SAA7116",
+"	1225  82452KX/GX [Orion]",
+"	1226  82596 PRO/10 PCI",
+"	1227  82865 EtherExpress PRO/100A",
+"	1228  82556 EtherExpress PRO/100 Smart",
+"	1229  82557/8/9 [Ethernet Pro 100]",
+"		0e11 3001  82559 Fast Ethernet LOM with Alert on LAN*",
+"		0e11 3002  82559 Fast Ethernet LOM with Alert on LAN*",
+"		0e11 3003  82559 Fast Ethernet LOM with Alert on LAN*",
+"		0e11 3004  82559 Fast Ethernet LOM with Alert on LAN*",
+"		0e11 3005  82559 Fast Ethernet LOM with Alert on LAN*",
+"		0e11 3006  82559 Fast Ethernet LOM with Alert on LAN*",
+"		0e11 3007  82559 Fast Ethernet LOM with Alert on LAN*",
+"		0e11 b01e  NC3120 Fast Ethernet NIC",
+"		0e11 b01f  NC3122 Fast Ethernet NIC (dual port)",
+"		0e11 b02f  NC1120 Ethernet NIC",
+"		0e11 b04a  Netelligent 10/100TX NIC with Wake on LAN",
+"		0e11 b0c6  NC3161 Fast Ethernet NIC (embedded, WOL)",
+"		0e11 b0c7  NC3160 Fast Ethernet NIC (embedded)",
+"		0e11 b0d7  NC3121 Fast Ethernet NIC (WOL)",
+"		0e11 b0dd  NC3131 Fast Ethernet NIC (dual port)",
+"		0e11 b0de  NC3132 Fast Ethernet Module (dual port)",
+"		0e11 b0e1  NC3133 Fast Ethernet Module (100-FX)",
+"		0e11 b134  NC3163 Fast Ethernet NIC (embedded, WOL)",
+"		0e11 b13c  NC3162 Fast Ethernet NIC (embedded)",
+"		0e11 b144  NC3123 Fast Ethernet NIC (WOL)",
+"		0e11 b163  NC3134 Fast Ethernet NIC (dual port)",
+"		0e11 b164  NC3135 Fast Ethernet Upgrade Module (dual port)",
+"		0e11 b1a4  NC7131 Gigabit Server Adapter",
+"		1014 005c  82558B Ethernet Pro 10/100",
+"		1014 01bc  82559 Fast Ethernet LAN On Motherboard",
+"		1014 01f1  10/100 Ethernet Server Adapter",
+"		1014 01f2  10/100 Ethernet Server Adapter",
+"		1014 0207  Ethernet Pro/100 S",
+"		1014 0232  10/100 Dual Port Server Adapter",
+"		1014 023a  ThinkPad R30",
+"		1014 105c  Netfinity 10/100",
+"		1014 2205  ThinkPad A22p",
+"		1014 305c  10/100 EtherJet Management Adapter",
+"		1014 405c  10/100 EtherJet Adapter with Alert on LAN",
+"		1014 505c  10/100 EtherJet Secure Management Adapter",
+"		1014 605c  10/100 EtherJet Secure Management Adapter",
+"		1014 705c  10/100 Netfinity 10/100 Ethernet Security Adapter",
+"		1014 805c  10/100 Netfinity 10/100 Ethernet Security Adapter",
+"		1028 009b  PowerEdge 2500/2550",
+"		1028 00ce  PowerEdge 1400",
+"		1033 8000  PC-9821X-B06",
+"		1033 8016  PK-UG-X006",
+"		1033 801f  PK-UG-X006",
+"		1033 8026  PK-UG-X006",
+"		1033 8063  82559-based Fast Ethernet Adapter",
+"		1033 8064  82559-based Fast Ethernet Adapter",
+"		103c 10c0  NetServer 10/100TX",
+"		103c 10c3  NetServer 10/100TX",
+"		103c 10ca  NetServer 10/100TX",
+"		103c 10cb  NetServer 10/100TX",
+"		103c 10e3  NetServer 10/100TX",
+"		103c 10e4  NetServer 10/100TX",
+"		103c 1200  NetServer 10/100TX",
+"		108e 10cf  EtherExpress PRO/100(B)",
+"		10c3 1100  SmartEther100 SC1100",
+"		10cf 1115  8255x-based Ethernet Adapter (10/100)",
+"		10cf 1143  8255x-based Ethernet Adapter (10/100)",
+"		110a 008b  82551QM Fast Ethernet Multifuction PCI/CardBus Controller",
+"		1179 0001  8255x-based Ethernet Adapter (10/100)",
+"		1179 0002  PCI FastEther LAN on Docker",
+"		1179 0003  8255x-based Fast Ethernet",
+"		1259 2560  AT-2560 100",
+"		1259 2561  AT-2560 100 FX Ethernet Adapter",
+"		1266 0001  NE10/100 Adapter",
+"		13e9 1000  6221L-4U",
+"		144d 2501  SEM-2000 MiniPCI LAN Adapter",
+"		144d 2502  SEM-2100IL MiniPCI LAN Adapter",
+"		1668 1100  EtherExpress PRO/100B (TX) (MiniPCI Ethernet+Modem)",
+"		4c53 1080  CT8 mainboard",
+"		4c53 10e0  PSL09 PrPMC",
+"		8086 0001  EtherExpress PRO/100B (TX)",
+"		8086 0002  EtherExpress PRO/100B (T4)",
+"		8086 0003  EtherExpress PRO/10+",
+"		8086 0004  EtherExpress PRO/100 WfM",
+"		8086 0005  82557 10/100",
+"		8086 0006  82557 10/100 with Wake on LAN",
+"		8086 0007  82558 10/100 Adapter",
+"		8086 0008  82558 10/100 with Wake on LAN",
+"		8086 000a  EtherExpress PRO/100+ Management Adapter",
+"		8086 000b  EtherExpress PRO/100+",
+"		8086 000c  EtherExpress PRO/100+ Management Adapter",
+"		8086 000d  EtherExpress PRO/100+ Alert On LAN II* Adapter",
+"		8086 000e  EtherExpress PRO/100+ Management Adapter with Alert On LAN*",
+"		8086 000f  EtherExpress PRO/100 Desktop Adapter",
+"		8086 0010  EtherExpress PRO/100 S Management Adapter",
+"		8086 0011  EtherExpress PRO/100 S Management Adapter",
+"		8086 0012  EtherExpress PRO/100 S Advanced Management Adapter (D)",
+"		8086 0013  EtherExpress PRO/100 S Advanced Management Adapter (E)",
+"		8086 0030  EtherExpress PRO/100  Management Adapter with Alert On LAN* GC",
+"		8086 0031  EtherExpress PRO/100 Desktop Adapter",
+"		8086 0040  EtherExpress PRO/100 S Desktop Adapter",
+"		8086 0041  EtherExpress PRO/100 S Desktop Adapter",
+"		8086 0042  EtherExpress PRO/100 Desktop Adapter",
+"		8086 0050  EtherExpress PRO/100 S Desktop Adapter",
+"		8086 1009  EtherExpress PRO/100+ Server Adapter",
+"		8086 100c  EtherExpress PRO/100+ Server Adapter (PILA8470B)",
+"		8086 1012  EtherExpress PRO/100 S Server Adapter (D)",
+"		8086 1013  EtherExpress PRO/100 S Server Adapter (E)",
+"		8086 1015  EtherExpress PRO/100 S Dual Port Server Adapter",
+"		8086 1017  EtherExpress PRO/100+ Dual Port Server Adapter",
+"		8086 1030  EtherExpress PRO/100+ Management Adapter with Alert On LAN* G Server",
+"		8086 1040  EtherExpress PRO/100 S Server Adapter",
+"		8086 1041  EtherExpress PRO/100 S Server Adapter",
+"		8086 1042  EtherExpress PRO/100 Server Adapter",
+"		8086 1050  EtherExpress PRO/100 S Server Adapter",
+"		8086 1051  EtherExpress PRO/100 Server Adapter",
+"		8086 1052  EtherExpress PRO/100 Server Adapter",
+"		8086 10f0  EtherExpress PRO/100+ Dual Port Adapter",
+"		8086 2009  EtherExpress PRO/100 S Mobile Adapter",
+"		8086 200d  EtherExpress PRO/100 Cardbus",
+"		8086 200e  EtherExpress PRO/100 LAN+V90 Cardbus Modem",
+"		8086 200f  EtherExpress PRO/100 SR Mobile Adapter",
+"		8086 2010  EtherExpress PRO/100 S Mobile Combo Adapter",
+"		8086 2013  EtherExpress PRO/100 SR Mobile Combo Adapter",
+"		8086 2016  EtherExpress PRO/100 S Mobile Adapter",
+"		8086 2017  EtherExpress PRO/100 S Combo Mobile Adapter",
+"		8086 2018  EtherExpress PRO/100 SR Mobile Adapter",
+"		8086 2019  EtherExpress PRO/100 SR Combo Mobile Adapter",
+"		8086 2101  EtherExpress PRO/100 P Mobile Adapter",
+"		8086 2102  EtherExpress PRO/100 SP Mobile Adapter",
+"		8086 2103  EtherExpress PRO/100 SP Mobile Adapter",
+"		8086 2104  EtherExpress PRO/100 SP Mobile Adapter",
+"		8086 2105  EtherExpress PRO/100 SP Mobile Adapter",
+"		8086 2106  EtherExpress PRO/100 P Mobile Adapter",
+"		8086 2107  EtherExpress PRO/100 Network Connection",
+"		8086 2108  EtherExpress PRO/100 Network Connection",
+"		8086 2200  EtherExpress PRO/100 P Mobile Combo Adapter",
+"		8086 2201  EtherExpress PRO/100 P Mobile Combo Adapter",
+"		8086 2202  EtherExpress PRO/100 SP Mobile Combo Adapter",
+"		8086 2203  EtherExpress PRO/100+ MiniPCI",
+"		8086 2204  EtherExpress PRO/100+ MiniPCI",
+"		8086 2205  EtherExpress PRO/100 SP Mobile Combo Adapter",
+"		8086 2206  EtherExpress PRO/100 SP Mobile Combo Adapter",
+"		8086 2207  EtherExpress PRO/100 SP Mobile Combo Adapter",
+"		8086 2208  EtherExpress PRO/100 P Mobile Combo Adapter",
+"		8086 2402  EtherExpress PRO/100+ MiniPCI",
+"		8086 2407  EtherExpress PRO/100+ MiniPCI",
+"		8086 2408  EtherExpress PRO/100+ MiniPCI",
+"		8086 2409  EtherExpress PRO/100+ MiniPCI",
+"		8086 240f  EtherExpress PRO/100+ MiniPCI",
+"		8086 2410  EtherExpress PRO/100+ MiniPCI",
+"		8086 2411  EtherExpress PRO/100+ MiniPCI",
+"		8086 2412  EtherExpress PRO/100+ MiniPCI",
+"		8086 2413  EtherExpress PRO/100+ MiniPCI",
+"		8086 3000  82559 Fast Ethernet LAN on Motherboard",
+"		8086 3001  82559 Fast Ethernet LOM with Basic Alert on LAN*",
+"		8086 3002  82559 Fast Ethernet LOM with Alert on LAN II*",
+"		8086 3006  EtherExpress PRO/100 S Network Connection",
+"		8086 3007  EtherExpress PRO/100 S Network Connection",
+"		8086 3008  EtherExpress PRO/100 Network Connection",
+"		8086 3010  EtherExpress PRO/100 S Network Connection",
+"		8086 3011  EtherExpress PRO/100 S Network Connection",
+"		8086 3012  EtherExpress PRO/100 Network Connection",
+"		8086 3411  SDS2 Mainboard",
+"	122d  430FX - 82437FX TSC [Triton I]",
+"	122e  82371FB PIIX ISA [Triton I]",
+"	1230  82371FB PIIX IDE [Triton I]",
+"	1231  DSVD Modem",
+"	1234  430MX - 82371MX Mobile PCI I/O IDE Xcelerator (MPIIX)",
+"	1235  430MX - 82437MX Mob. System Ctrlr (MTSC) & 82438MX Data Path (MTDP)",
+"	1237  440FX - 82441FX PMC [Natoma]",
+"	1239  82371FB PIIX IDE Interface",
+"	123b  82380PB PCI to PCI Docking Bridge",
+"	123c  82380AB (MISA) Mobile PCI-to-ISA Bridge",
+"	123d  683053 Programmable Interrupt Device",
+"	123e  82466GX (IHPC) Integrated Hot-Plug Controller",
+"	123f  82466GX Integrated Hot-Plug Controller (IHPC)",
+"	1240  82752 (752) AGP Graphics Accelerator",
+"	124b  82380FB (MPCI2) Mobile Docking Controller",
+"	1250  430HX - 82439HX TXC [Triton II]",
+"	1360  82806AA PCI64 Hub PCI Bridge",
+"	1361  82806AA PCI64 Hub Controller (HRes)",
+"		8086 1361  82806AA PCI64 Hub Controller (HRes)",
+"		8086 8000  82806AA PCI64 Hub Controller (HRes)",
+"	1460  82870P2 P64H2 Hub PCI Bridge",
+"	1461  82870P2 P64H2 I/OxAPIC",
+"		15d9 3480  P4DP6",
+"		4c53 1090  Cx9/Vx9 mainboard",
+"	1462  82870P2 P64H2 Hot Plug Controller",
+"	1960  80960RP [i960RP Microprocessor]",
+"		101e 0431  MegaRAID 431 RAID Controller",
+"		101e 0438  MegaRAID 438 Ultra2 LVD RAID Controller",
+"		101e 0466  MegaRAID 466 Express Plus RAID Controller",
+"		101e 0467  MegaRAID 467 Enterprise 1500 RAID Controller",
+"		101e 0490  MegaRAID 490 Express 300 RAID Controller",
+"		101e 0762  MegaRAID 762 Express RAID Controller",
+"		101e 09a0  PowerEdge Expandable RAID Controller 2/SC",
+"		1028 0467  PowerEdge Expandable RAID Controller 2/DC",
+"		1028 1111  PowerEdge Expandable RAID Controller 2/SC",
+"		103c 03a2  MegaRAID",
+"		103c 10c6  MegaRAID 438, HP NetRAID-3Si",
+"		103c 10c7  MegaRAID T5, Integrated HP NetRAID",
+"		103c 10cc  MegaRAID, Integrated HP NetRAID",
+"		103c 10cd  HP NetRAID-1Si",
+"		105a 0000  SuperTrak",
+"		105a 2168  SuperTrak Pro",
+"		105a 5168  SuperTrak66/100",
+"		1111 1111  MegaRAID 466, PowerEdge Expandable RAID Controller 2/SC",
+"		1111 1112  PowerEdge Expandable RAID Controller 2/SC",
+"		113c 03a2  MegaRAID",
+"		e4bf 1010  CG1-RADIO",
+"		e4bf 1020  CU2-QUARTET",
+"		e4bf 1040  CU1-CHORUS",
+"		e4bf 3100  CX1-BAND",
+"	1962  80960RM [i960RM Microprocessor]",
+"		105a 0000  SuperTrak SX6000 I2O CPU",
+"	1a21  82840 840 (Carmel) Chipset Host Bridge (Hub A)",
+"	1a23  82840 840 (Carmel) Chipset AGP Bridge",
+"	1a24  82840 840 (Carmel) Chipset PCI Bridge (Hub B)",
+"	1a30  82845 845 (Brookdale) Chipset Host Bridge",
+"		1028 010e  Optiplex GX240",
+"	1a31  82845 845 (Brookdale) Chipset AGP Bridge",
+"	1a38  Server DMA Engine",
+"	1a48  PRO/10GbE SR Server Adapter",
+"	2410  82801AA ISA Bridge (LPC)",
+"	2411  82801AA IDE",
+"	2412  82801AA USB",
+"	2413  82801AA SMBus",
+"	2415  82801AA AC'97 Audio",
+"		1028 0095  Precision Workstation 220 Integrated Digital Audio",
+"		110a 0051  Activy 2xx",
+"		11d4 0040  SoundMAX Integrated Digital Audio",
+"		11d4 0048  SoundMAX Integrated Digital Audio",
+"		11d4 5340  SoundMAX Integrated Digital Audio",
+"		1734 1025  Activy 3xx",
+"	2416  82801AA AC'97 Modem",
+"	2418  82801AA PCI Bridge",
+"	2420  82801AB ISA Bridge (LPC)",
+"	2421  82801AB IDE",
+"	2422  82801AB USB",
+"	2423  82801AB SMBus",
+"	2425  82801AB AC'97 Audio",
+"		11d4 0040  SoundMAX Integrated Digital Audio",
+"		11d4 0048  SoundMAX Integrated Digital Audio",
+"	2426  82801AB AC'97 Modem",
+"	2428  82801AB PCI Bridge",
+"	2440  82801BA ISA Bridge (LPC)",
+"	2442  82801BA/BAM USB (Hub #1)",
+"		1014 01c6  Netvista A40/A40p",
+"		1025 1016  Travelmate 612 TX",
+"		1028 010e  Optiplex GX240",
+"		1043 8027  TUSL2-C Mainboard",
+"		104d 80df  Vaio PCG-FX403",
+"		147b 0507  TH7II-RAID",
+"		8086 4532  D815EEA2 mainboard",
+"		8086 4557  D815EGEW Mainboard",
+"	2443  82801BA/BAM SMBus",
+"		1014 01c6  Netvista A40/A40p",
+"		1025 1016  Travelmate 612 TX",
+"		1028 010e  Optiplex GX240",
+"		1043 8027  TUSL2-C Mainboard",
+"		104d 80df  Vaio PCG-FX403",
+"		147b 0507  TH7II-RAID",
+"		8086 4532  D815EEA2 mainboard",
+"		8086 4557  D815EGEW Mainboard",
+"	2444  82801BA/BAM USB (Hub #2)",
+"		1025 1016  Travelmate 612 TX",
+"		1028 010e  Optiplex GX240",
+"		1043 8027  TUSL2-C Mainboard",
+"		104d 80df  Vaio PCG-FX403",
+"		147b 0507  TH7II-RAID",
+"		8086 4532  D815EEA2 mainboard",
+"	2445  82801BA/BAM AC'97 Audio",
+"		0e11 0088  Evo D500",
+"		1014 01c6  Netvista A40/A40p",
+"		1025 1016  Travelmate 612 TX",
+"		104d 80df  Vaio PCG-FX403",
+"		1462 3370  STAC9721 AC",
+"		147b 0507  TH7II-RAID",
+"		8086 4557  D815EGEW Mainboard",
+"	2446  82801BA/BAM AC'97 Modem",
+"		1025 1016  Travelmate 612 TX",
+"		104d 80df  Vaio PCG-FX403",
+"	2448  82801 Mobile PCI Bridge",
+"		103c 099c  NX6110/NC6120",
+"		1734 1055  Amilo M1420",
+"	2449  82801BA/BAM/CA/CAM Ethernet Controller",
+"		0e11 0012  EtherExpress PRO/100 VM",
+"		0e11 0091  EtherExpress PRO/100 VE",
+"		1014 01ce  EtherExpress PRO/100 VE",
+"		1014 01dc  EtherExpress PRO/100 VE",
+"		1014 01eb  EtherExpress PRO/100 VE",
+"		1014 01ec  EtherExpress PRO/100 VE",
+"		1014 0202  EtherExpress PRO/100 VE",
+"		1014 0205  EtherExpress PRO/100 VE",
+"		1014 0217  EtherExpress PRO/100 VE",
+"		1014 0234  EtherExpress PRO/100 VE",
+"		1014 023d  EtherExpress PRO/100 VE",
+"		1014 0244  EtherExpress PRO/100 VE",
+"		1014 0245  EtherExpress PRO/100 VE",
+"		1014 0265  PRO/100 VE Desktop Connection",
+"		1014 0267  PRO/100 VE Desktop Connection",
+"		1014 026a  PRO/100 VE Desktop Connection",
+"		109f 315d  EtherExpress PRO/100 VE",
+"		109f 3181  EtherExpress PRO/100 VE",
+"		1179 ff01  PRO/100 VE Network Connection",
+"		1186 7801  EtherExpress PRO/100 VE",
+"		144d 2602  HomePNA 1M CNR",
+"		8086 3010  EtherExpress PRO/100 VE",
+"		8086 3011  EtherExpress PRO/100 VM",
+"		8086 3012  82562EH based Phoneline",
+"		8086 3013  EtherExpress PRO/100 VE",
+"		8086 3014  EtherExpress PRO/100 VM",
+"		8086 3015  82562EH based Phoneline",
+"		8086 3016  EtherExpress PRO/100 P Mobile Combo",
+"		8086 3017  EtherExpress PRO/100 P Mobile",
+"		8086 3018  EtherExpress PRO/100",
+"	244a  82801BAM IDE U100",
+"		1025 1016  Travelmate 612TX",
+"		104d 80df  Vaio PCG-FX403",
+"	244b  82801BA IDE U100",
+"		1014 01c6  Netvista A40/A40p",
+"		1028 010e  Optiplex GX240",
+"		1043 8027  TUSL2-C Mainboard",
+"		147b 0507  TH7II-RAID",
+"		8086 4532  D815EEA2 mainboard",
+"		8086 4557  D815EGEW Mainboard",
+"	244c  82801BAM ISA Bridge (LPC)",
+"	244e  82801 PCI Bridge",
+"		1014 0267  NetVista A30p",
+"	2450  82801E ISA Bridge (LPC)",
+"	2452  82801E USB",
+"	2453  82801E SMBus",
+"	2459  82801E Ethernet Controller 0",
+"	245b  82801E IDE U100",
+"	245d  82801E Ethernet Controller 1",
+"	245e  82801E PCI Bridge",
+"	2480  82801CA LPC Interface Controller",
+"	2482  82801CA/CAM USB (Hub #1)",
+"		0e11 0030  Evo N600c",
+"		1014 0220  ThinkPad A/T/X Series",
+"		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP",
+"		15d9 3480  P4DP6",
+"		8086 1958  vpr Matrix 170B4",
+"		8086 3424  SE7501HG2 Mainboard",
+"		8086 4541  Latitude C640",
+"	2483  82801CA/CAM SMBus Controller",
+"		1014 0220  ThinkPad A/T/X Series",
+"		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP",
+"		15d9 3480  P4DP6",
+"		8086 1958  vpr Matrix 170B4",
+"	2484  82801CA/CAM USB (Hub #2)",
+"		0e11 0030  Evo N600c",
+"		1014 0220  ThinkPad A/T/X Series",
+"		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP",
+"		15d9 3480  P4DP6",
+"		8086 1958  vpr Matrix 170B4",
+"	2485  82801CA/CAM AC'97 Audio Controller",
+"		1013 5959  Crystal WMD Audio Codec",
+"		1014 0222  ThinkPad T23 (2647-4MG) or A30/A30p (2652/2653)",
+"		1014 0508  ThinkPad T30",
+"		1014 051c  ThinkPad A/T/X Series",
+"		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP",
+"		144d c006  vpr Matrix 170B4",
+"	2486  82801CA/CAM AC'97 Modem Controller",
+"		1014 0223  ThinkPad A/T/X Series",
+"		1014 0503  ThinkPad R31 2656BBG",
+"		1014 051a  ThinkPad A/T/X Series",
+"		101f 1025  620 Series",
+"		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP",
+"		134d 4c21  Dell Inspiron 2100 internal modem",
+"		144d 2115  vpr Matrix 170B4 internal modem",
+"		14f1 5421  MD56ORD V.92 MDC Modem",
+"	2487  82801CA/CAM USB (Hub #3)",
+"		0e11 0030  Evo N600c",
+"		1014 0220  ThinkPad A/T/X Series",
+"		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP",
+"		15d9 3480  P4DP6",
+"		8086 1958  vpr Matrix 170B4",
+"	248a  82801CAM IDE U100",
+"		0e11 0030  Evo N600c",
+"		1014 0220  ThinkPad A/T/X Series",
+"		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP",
+"		8086 1958  vpr Matrix 170B4",
+"		8086 4541  Latitude C640",
+"	248b  82801CA Ultra ATA Storage Controller",
+"		15d9 3480  P4DP6",
+"	248c  82801CAM ISA Bridge (LPC)",
+"	24c0  82801DB/DBL (ICH4/ICH4-L) LPC Interface Bridge",
+"		1014 0267  NetVista A30p",
+"		1462 5800  845PE Max (MS-6580)",
+"	24c1  82801DBL (ICH4-L) IDE Controller",
+"	24c2  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1",
+"		1014 0267  NetVista A30p",
+"		1025 005a  TravelMate 290",
+"		1028 0126  Optiplex GX260",
+"		1028 0163  Latitude D505",
+"		1028 0196  Inspiron 5160",
+"		103c 088c  NC8000 laptop",
+"		103c 0890  NC6000 laptop",
+"		1071 8160  MIM2000",
+"		1462 5800  845PE Max (MS-6580)",
+"		1509 2990  Averatec 5110H laptop",
+"		1734 1004  D1451 Mainboard (SCENIC N300, i845GV)",
+"		1734 1055  Amilo M1420",
+"		4c53 1090  Cx9 / Vx9 mainboard",
+"		8086 4541  Latitude D400",
+"	24c3  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller",
+"		1014 0267  NetVista A30p",
+"		1025 005a  TravelMate 290",
+"		1028 0126  Optiplex GX260",
+"		103c 088c  NC8000 laptop",
+"		103c 0890  NC6000 laptop",
+"		1071 8160  MIM2000",
+"		1458 24c2  GA-8PE667 Ultra",
+"		1462 5800  845PE Max (MS-6580)",
+"		1734 1004  D1451 Mainboard (SCENIC N300, i845GV)",
+"		1734 1055  Amilo M1420",
+"		4c53 1090  Cx9 / Vx9 mainboard",
+"	24c4  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2",
+"		1014 0267  NetVista A30p",
+"		1025 005a  TravelMate 290",
+"		1028 0126  Optiplex GX260",
+"		1028 0163  Latitude D505",
+"		1028 0196  Inspiron 5160",
+"		103c 088c  NC8000 laptop",
+"		103c 0890  NC6000 laptop",
+"		1071 8160  MIM2000",
+"		1462 5800  845PE Max (MS-6580)",
+"		1509 2990  Averatec 5110H",
+"		1734 1004  D1451 Mainboard (SCENIC N300, i845GV)",
+"		4c53 1090  Cx9 / Vx9 mainboard",
+"		8086 4541  Latitude D400",
+"	24c5  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller",
+"		0e11 00b8  Analog Devices Inc. codec [SoundMAX]",
+"		1014 0267  NetVista A30p",
+"		1025 005a  TravelMate 290",
+"		1028 0139  Latitude D400",
+"		1028 0163  Latitude D505",
+"		1028 0196  Inspiron 5160",
+"		103c 088c  NC8000 laptop",
+"		103c 0890  NC6000 laptop",
+"		1071 8160  MIM2000",
+"		1458 a002  GA-8PE667 Ultra",
+"		1462 5800  845PE Max (MS-6580)",
+"		1734 1005  D1451 (SCENIC N300, i845GV) Sigmatel STAC9750T",
+"		1734 1055  Amilo M1420",
+"	24c6  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller",
+"		1025 003c  Aspire 2001WLCi (Compal CL50 motherboard) implementation",
+"		1025 005a  TravelMate 290",
+"		1028 0196  Inspiron 5160",
+"		103c 088c  NC8000 laptop",
+"		103c 0890  NC6000 laptop",
+"		1071 8160  MIM2000",
+"	24c7  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3",
+"		1014 0267  NetVista A30p",
+"		1025 005a  TravelMate 290",
+"		1028 0126  Optiplex GX260",
+"		1028 0163  Latitude D505",
+"		1028 0196  Inspiron 5160",
+"		103c 088c  NC8000 laptop",
+"		103c 0890  NC6000 laptop",
+"		1071 8160  MIM2000",
+"		1462 5800  845PE Max (MS-6580)",
+"		1509 2990  Averatec 5110H",
+"		1734 1004  D1451 Mainboard (SCENIC N300, i845GV)",
+"		4c53 1090  Cx9 / Vx9 mainboard",
+"		8086 4541  Latitude D400",
+"	24ca  82801DBM (ICH4-M) IDE Controller",
+"		1025 005a  TravelMate 290",
+"		1028 0163  Latitude D505",
+"		1028 0196  Inspiron 5160",
+"		103c 088c  NC8000 laptop",
+"		103c 0890  NC6000 laptop",
+"		1071 8160  MIM2000",
+"		1734 1055  Amilo M1420",
+"		8086 4541  Latitude D400",
+"	24cb  82801DB (ICH4) IDE Controller",
+"		1014 0267  NetVista A30p",
+"		1028 0126  Optiplex GX260",
+"		1458 24c2  GA-8PE667 Ultra",
+"		1462 5800  845PE Max (MS-6580)",
+"		1734 1004  D1451 Mainboard (SCENIC N300, i845GV)",
+"		4c53 1090  Cx9 / Vx9 mainboard",
+"	24cc  82801DBM (ICH4-M) LPC Interface Bridge",
+"		1734 1055  Amilo M1420",
+"	24cd  82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller",
+"		1014 0267  NetVista A30p",
+"		1025 005a  TravelMate 290",
+"		1028 011d  Latitude D600",
+"		1028 0126  Optiplex GX260",
+"		1028 0139  Latitude D400",
+"		1028 0163  Latitude D505",
+"		1028 0196  Inspiron 5160",
+"		103c 088c  NC8000 laptop",
+"		103c 0890  NC6000 laptop",
+"		1071 8160  MIM2000",
+"		1462 3981  845PE Max (MS-6580)",
+"		1509 1968  Averatec 5110H",
+"		1734 1004  D1451 Mainboard (SCENIC N300, i845GV)",
+"		1734 1055  Amilo M1420",
+"		4c53 1090  Cx9 / Vx9 mainboard",
+"	24d0  82801EB/ER (ICH5/ICH5R) LPC Interface Bridge",
+"	24d1  82801EB (ICH5) SATA Controller",
+"		1028 0169  Precision 470",
+"		1028 019a  PowerEdge SC1425",
+"		103c 12bc  d530 CMT (DG746A)",
+"		1043 80a6  P4P800 SE Mainboard",
+"		1458 24d1  GA-8IPE1000 Pro2 motherboard (865PE)",
+"		1462 7280  865PE Neo2 (MS-6728)",
+"		15d9 4580  P4SCE Mainboard",
+"		8086 3427  S875WP1-E mainboard",
+"		8086 4246  Desktop Board D865GBF",
+"		8086 524c  D865PERL mainboard",
+"	24d2  82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1",
+"		1014 02ed  xSeries server mainboard",
+"		1028 0169  Precision 470",
+"		1028 0183  PowerEdge 1800",
+"		1028 019a  PowerEdge SC1425",
+"		103c 006a  NX9500",
+"		103c 12bc  d530 CMT (DG746A)",
+"		1043 80a6  P5P800-MX Mainboard",
+"		1458 24d2  GA-8IPE1000/8KNXP motherboard",
+"		1462 7280  865PE Neo2 (MS-6728)",
+"		15d9 4580  P4SCE Mainboard",
+"		1734 101c  Primergy RX300 S2",
+"		8086 3427  S875WP1-E mainboard",
+"		8086 4246  Desktop Board D865GBF",
+"		8086 524c  D865PERL mainboard",
+"	24d3  82801EB/ER (ICH5/ICH5R) SMBus Controller",
+"		1014 02ed  xSeries server mainboard",
+"		1028 0156  Precision 360",
+"		1028 0169  Precision 470",
+"		1043 80a6  P4P800 Mainboard",
+"		1458 24d2  GA-8IPE1000 Pro2 motherboard (865PE)",
+"		1462 7280  865PE Neo2 (MS-6728)",
+"		15d9 4580  P4SCE Mainboard",
+"		1734 101c  Primergy RX300 S2",
+"		8086 3427  S875WP1-E mainboard",
+"		8086 4246  Desktop Board D865GBF",
+"		8086 524c  D865PERL mainboard",
+"	24d4  82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2",
+"		1014 02ed  xSeries server mainboard",
+"		1028 0169  Precision 470",
+"		1028 0183  PowerEdge 1800",
+"		1028 019a  PowerEdge SC1425",
+"		103c 006a  NX9500",
+"		103c 12bc  d530 CMT (DG746A)",
+"		1043 80a6  P5P800-MX Mainboard",
+"		1458 24d2  GA-8IPE1000 Pro2 motherboard (865PE)",
+"		1462 7280  865PE Neo2 (MS-6728)",
+"		15d9 4580  P4SCE Mainboard",
+"		1734 101c  Primergy RX300 S2",
+"		8086 3427  S875WP1-E mainboard",
+"		8086 4246  Desktop Board D865GBF",
+"		8086 524c  D865PERL mainboard",
+"	24d5  82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller",
+"		1028 0169  Precision 470",
+"		103c 006a  NX9500",
+"		103c 12bc  d330 uT",
+"		1043 80f3  P4P800 Mainboard",
+"		1043 810f  P5P800-MX Mainboard",
+"		1458 a002  GA-8IPE1000/8KNXP motherboard",
+"		1462 0080  65PE Neo2-V (MS-6788) mainboard",
+"		1462 7280  865PE Neo2 (MS-6728)",
+"		8086 a000  D865PERL mainboard",
+"		8086 e000  D865PERL mainboard",
+"		8086 e001  Desktop Board D865GBF",
+"	24d6  82801EB/ER (ICH5/ICH5R) AC'97 Modem Controller",
+"		103c 006a  NX9500",
+"	24d7  82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3",
+"		1014 02ed  xSeries server mainboard",
+"		1028 0169  Precision 470",
+"		1028 0183  PowerEdge 1800",
+"		103c 006a  NX9500",
+"		103c 12bc  d530 CMT (DG746A)",
+"		1043 80a6  P5P800-MX Mainboard",
+"		1458 24d2  GA-8IPE1000 Pro2 motherboard (865PE)",
+"		1462 7280  865PE Neo2 (MS-6728)",
+"		15d9 4580  P4SCE Mainboard",
+"		1734 101c  Primergy RX300 S2",
+"		8086 3427  S875WP1-E mainboard",
+"		8086 4246  Desktop Board D865GBF",
+"		8086 524c  D865PERL mainboard",
+"	24db  82801EB/ER (ICH5/ICH5R) IDE Controller",
+"		1014 02ed  xSeries server mainboard",
+"		1028 0169  Precision 470",
+"		1028 019a  PowerEdge SC1425",
+"		103c 006a  NX9500",
+"		103c 12bc  d530 CMT (DG746A)",
+"		1043 80a6  P5P800-MX Mainboard",
+"		1458 24d2  GA-8IPE1000 Pro2 motherboard (865PE)",
+"		1462 7280  865PE Neo2 (MS-6728)",
+"		1462 7580  MSI 875P",
+"		15d9 4580  P4SCE Mainboard",
+"		1734 101c  Primergy RX300 S2",
+"		8086 24db  P4C800 Mainboard",
+"		8086 3427  S875WP1-E mainboard",
+"		8086 4246  Desktop Board D865GBF",
+"		8086 524c  D865PERL mainboard",
+"	24dc  82801EB (ICH5) LPC Interface Bridge",
+"	24dd  82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller",
+"		1014 02ed  xSeries server mainboard",
+"		1028 0169  Precision 470",
+"		1028 0183  PowerEdge 1800",
+"		1028 019a  PowerEdge SC1425",
+"		103c 006a  NX9500",
+"		103c 12bc  d530 CMT (DG746A)",
+"		1043 80a6  P5P800-MX Mainboard",
+"		1458 5006  GA-8IPE1000 Pro2 motherboard (865PE)",
+"		1462 7280  865PE Neo2 (MS-6728)",
+"		8086 3427  S875WP1-E mainboard",
+"		8086 4246  Desktop Board D865GBF",
+"		8086 524c  D865PERL mainboard",
+"	24de  82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4",
+"		1014 02ed  xSeries server mainboard",
+"		1028 0169  Precision 470",
+"		1043 80a6  P5P800-MX Mainboard",
+"		1458 24d2  GA-8IPE1000 Pro2 motherboard (865PE)",
+"		1462 7280  865PE Neo2 (MS-6728)",
+"		15d9 4580  P4SCE Mainboard",
+"		1734 101c  Primergy RX300 S2",
+"		8086 3427  S875WP1-E mainboard",
+"		8086 4246  Desktop Board D865GBF",
+"		8086 524c  D865PERL mainboard",
+"	24df  82801ER (ICH5R) SATA Controller",
+"	2500  82820 820 (Camino) Chipset Host Bridge (MCH)",
+"		1028 0095  Precision Workstation 220 Chipset",
+"		1043 801c  P3C-2000 system chipset",
+"	2501  82820 820 (Camino) Chipset Host Bridge (MCH)",
+"		1043 801c  P3C-2000 system chipset",
+"	250b  82820 820 (Camino) Chipset Host Bridge",
+"	250f  82820 820 (Camino) Chipset AGP Bridge",
+"	2520  82805AA MTH Memory Translator Hub",
+"	2521  82804AA MRH-S Memory Repeater Hub for SDRAM",
+"	2530  82850 850 (Tehama) Chipset Host Bridge (MCH)",
+"		147b 0507  TH7II-RAID",
+"	2531  82860 860 (Wombat) Chipset Host Bridge (MCH)",
+"	2532  82850 850 (Tehama) Chipset AGP Bridge",
+"	2533  82860 860 (Wombat) Chipset AGP Bridge",
+"	2534  82860 860 (Wombat) Chipset PCI Bridge",
+"	2540  E7500 Memory Controller Hub",
+"		15d9 3480  P4DP6",
+"	2541  E7500/E7501 Host RASUM Controller",
+"		15d9 3480  P4DP6",
+"		4c53 1090  Cx9 / Vx9 mainboard",
+"		8086 3424  SE7501HG2 Mainboard",
+"	2543  E7500/E7501 Hub Interface B PCI-to-PCI Bridge",
+"	2544  E7500/E7501 Hub Interface B RASUM Controller",
+"		4c53 1090  Cx9 / Vx9 mainboard",
+"	2545  E7500/E7501 Hub Interface C PCI-to-PCI Bridge",
+"	2546  E7500/E7501 Hub Interface C RASUM Controller",
+"	2547  E7500/E7501 Hub Interface D PCI-to-PCI Bridge",
+"	2548  E7500/E7501 Hub Interface D RASUM Controller",
+"	254c  E7501 Memory Controller Hub",
+"		4c53 1090  Cx9 / Vx9 mainboard",
+"		8086 3424  SE7501HG2 Mainboard",
+"	2550  E7505 Memory Controller Hub",
+"	2551  E7505/E7205 Series RAS Controller",
+"	2552  E7505/E7205 PCI-to-AGP Bridge",
+"	2553  E7505 Hub Interface B PCI-to-PCI Bridge",
+"	2554  E7505 Hub Interface B PCI-to-PCI Bridge RAS Controller",
+"	255d  E7205 Memory Controller Hub",
+"	2560  82845G/GL[Brookdale-G]/GE/PE DRAM Controller/Host-Hub Interface",
+"		1028 0126  Optiplex GX260",
+"		1458 2560  GA-8PE667 Ultra",
+"		1462 5800  845PE Max (MS-6580)",
+"	2561  82845G/GL[Brookdale-G]/GE/PE Host-to-AGP Bridge",
+"	2562  82845G/GL[Brookdale-G]/GE Chipset Integrated Graphics Device",
+"		0e11 00b9  Evo D510 SFF",
+"		1014 0267  NetVista A30p",
+"		1734 1004  D1451 Mainboard (SCENIC N300, i845GV)",
+"	2570  82865G/PE/P DRAM Controller/Host-Hub Interface",
+"		103c 006a  NX9500",
+"		1043 80f2  P5P800-MX Mainboard",
+"		1458 2570  GA-8IPE1000 Pro2 motherboard (865PE)",
+"	2571  82865G/PE/P PCI to AGP Controller",
+"	2572  82865G Integrated Graphics Controller",
+"		1028 019d  Dimension 3000",
+"		103c 12bc  D530 sff(dc578av)",
+"		1043 80a5  P5P800-MX Mainboard",
+"		8086 4246  Desktop Board D865GBF",
+"	2573  82865G/PE/P PCI to CSA Bridge",
+"	2576  82865G/PE/P Processor to I/O Memory Interface",
+"	2578  82875P/E7210 Memory Controller Hub",
+"		1458 2578  GA-8KNXP motherboard (875P)",
+"		1462 7580  MS-6758 (875P Neo)",
+"		15d9 4580  P4SCE Motherboard",
+"	2579  82875P Processor to AGP Controller",
+"	257b  82875P/E7210 Processor to PCI to CSA Bridge",
+"	257e  82875P/E7210 Processor to I/O Memory Interface",
+"	2580  915G/P/GV/GL/PL/910GL Express Memory Controller Hub",
+"		1458 2580  GA-8I915ME-G Mainboard",
+"		1462 7028  915P/G Neo2",
+"		1734 105b  Scenic W620",
+"	2581  915G/P/GV/GL/PL/910GL Express PCI Express Root Port",
+"	2582  82915G/GV/910GL Express Chipset Family Graphics Controller",
+"		1028 1079  Optiplex GX280",
+"		103c 3006  DC7100 SFF(DX878AV)",
+"		1043 2582  P5GD1-VW Mainboard",
+"		1458 2582  GA-8I915ME-G Mainboard",
+"		1734 105b  Scenic W620",
+"	2584  925X/XE Express Memory Controller Hub",
+"	2585  925X/XE Express PCI Express Root Port",
+"	2588  E7220/E7221 Memory Controller Hub",
+"	2589  E7220/E7221 PCI Express Root Port",
+"	258a  E7221 Integrated Graphics Controller",
+"	2590  Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller",
+"		1028 0182  Dell Latidude C610",
+"		103c 099c  NX6110/NC6120",
+"		a304 81b7  Vaio VGN-S3XP",
+"	2591  Mobile 915GM/PM Express PCI Express Root Port",
+"	2592  Mobile 915GM/GMS/910GML Express Graphics Controller",
+"		103c 099c  NX6110/NC6120",
+"		103c 308a  NC6220",
+"		1043 1881  GMA 900 915GM Integrated Graphics",
+"	25a1  6300ESB LPC Interface Controller",
+"	25a2  6300ESB PATA Storage Controller",
+"		4c53 10b0  CL9 mainboard",
+"		4c53 10e0  PSL09 PrPMC",
+"	25a3  6300ESB SATA Storage Controller",
+"		4c53 10b0  CL9 mainboard",
+"		4c53 10d0  Telum ASLP10 Processor AMC",
+"		4c53 10e0  PSL09 PrPMC",
+"	25a4  6300ESB SMBus Controller",
+"		4c53 10b0  CL9 mainboard",
+"		4c53 10d0  Telum ASLP10 Processor AMC",
+"		4c53 10e0  PSL09 PrPMC",
+"	25a6  6300ESB AC'97 Audio Controller",
+"		4c53 10b0  CL9 mainboard",
+"	25a7  6300ESB AC'97 Modem Controller",
+"	25a9  6300ESB USB Universal Host Controller",
+"		4c53 10b0  CL9 mainboard",
+"		4c53 10d0  Telum ASLP10 Processor AMC",
+"		4c53 10e0  PSL09 PrPMC",
+"	25aa  6300ESB USB Universal Host Controller",
+"		4c53 10b0  CL9 mainboard",
+"		4c53 10e0  PSL09 PrPMC",
+"	25ab  6300ESB Watchdog Timer",
+"		4c53 10b0  CL9 mainboard",
+"		4c53 10d0  Telum ASLP10 Processor AMC",
+"		4c53 10e0  PSL09 PrPMC",
+"	25ac  6300ESB I/O Advanced Programmable Interrupt Controller",
+"		4c53 10b0  CL9 mainboard",
+"		4c53 10d0  Telum ASLP10 Processor AMC",
+"		4c53 10e0  PSL09 PrPMC",
+"	25ad  6300ESB USB2 Enhanced Host Controller",
+"		4c53 10b0  CL9 mainboard",
+"		4c53 10d0  Telum ASLP10 Processor AMC",
+"		4c53 10e0  PSL09 PrPMC",
+"	25ae  6300ESB 64-bit PCI-X Bridge",
+"	25b0  6300ESB SATA RAID Controller",
+"		4c53 10d0  Telum ASLP10 Processor AMC",
+"		4c53 10e0  PSL09 PrPMC",
+"	25c0  Workstation Memory Controller Hub",
+"	25d0  Server Memory Controller Hub",
+"	25d4  Server Memory Contoller Hub",
+"	25d8  Server Memory Controller Hub",
+"	25e2  Server PCI Express x4 Port 2",
+"	25e3  Server PCI Express x4 Port 3",
+"	25e4  Server PCI Express x4 Port 4",
+"	25e5  Server PCI Express x4 Port 5",
+"	25e6  Server PCI Express x4 Port 6",
+"	25e7  Server PCI Express x4 Port 7",
+"	25e8  Server AMB Memory Mapped Registers",
+"	25f0  Server Error Reporting Registers",
+"	25f1  Reserved Registers",
+"	25f3  Reserved Registers",
+"	25f5  Server FBD Registers",
+"	25f6  Server FBD Registers",
+"	25f7  Server PCI Express x8 Port 2-3",
+"	25f8  Server PCI Express x8 Port 4-5",
+"	25f9  Server PCI Express x8 Port 6-7",
+"	25fa  Server PCI Express x16 Port 4-7",
+"	2600  E8500/E8501 Hub Interface 1.5",
+"	2601  E8500/E8501 PCI Express x4 Port D",
+"	2602  E8500/E8501 PCI Express x4 Port C0",
+"	2603  E8500/E8501 PCI Express x4 Port C1",
+"	2604  E8500/E8501 PCI Express x4 Port B0",
+"	2605  E8500/E8501 PCI Express x4 Port B1",
+"	2606  E8500/E8501 PCI Express x4 Port A0",
+"	2607  E8500/E8501 PCI Express x4 Port A1",
+"	2608  E8500/E8501 PCI Express x8 Port C",
+"	2609  E8500/E8501 PCI Express x8 Port B",
+"	260a  E8500/E8501 PCI Express x8 Port A",
+"	260c  E8500/E8501 IMI Registers",
+"	2610  E8500/E8501 Front Side Bus, Boot, and Interrupt Registers",
+"	2611  E8500/E8501 Address Mapping Registers",
+"	2612  E8500/E8501 RAS Registers",
+"	2613  E8500/E8501 Reserved Registers",
+"	2614  E8500/E8501 Reserved Registers",
+"	2615  E8500/E8501 Miscellaneous Registers",
+"	2617  E8500/E8501 Reserved Registers",
+"	2618  E8500/E8501 Reserved Registers",
+"	2619  E8500/E8501 Reserved Registers",
+"	261a  E8500/E8501 Reserved Registers",
+"	261b  E8500/E8501 Reserved Registers",
+"	261c  E8500/E8501 Reserved Registers",
+"	261d  E8500/E8501 Reserved Registers",
+"	261e  E8500/E8501 Reserved Registers",
+"	2620  E8500/E8501 eXternal Memory Bridge",
+"	2621  E8500/E8501 XMB Miscellaneous Registers",
+"	2622  E8500/E8501 XMB Memory Interleaving Registers",
+"	2623  E8500/E8501 XMB DDR Initialization and Calibration",
+"	2624  E8500/E8501 XMB Reserved Registers",
+"	2625  E8500/E8501 XMB Reserved Registers",
+"	2626  E8500/E8501 XMB Reserved Registers",
+"	2627  E8500/E8501 XMB Reserved Registers",
+"	2640  82801FB/FR (ICH6/ICH6R) LPC Interface Bridge",
+"		1462 7028  915P/G Neo2",
+"		1734 105c  Scenic W620",
+"	2641  82801FBM (ICH6M) LPC Interface Bridge",
+"		103c 099c  NX6110/NC6120",
+"	2642  82801FW/FRW (ICH6W/ICH6RW) LPC Interface Bridge",
+"	2651  82801FB/FW (ICH6/ICH6W) SATA Controller",
+"		1028 0179  Optiplex GX280",
+"		1043 2601  P5GD1-VW Mainboard",
+"		1734 105c  Scenic W620",
+"		8086 4147  D915GAG Motherboard",
+"	2652  82801FR/FRW (ICH6R/ICH6RW) SATA Controller",
+"		1462 7028  915P/G Neo2",
+"	2653  82801FBM (ICH6M) SATA Controller",
+"	2658  82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1",
+"		1028 0179  Optiplex GX280",
+"		103c 099c  NX6110/NC6120",
+"		1043 80a6  P5GD1-VW Mainboard",
+"		1458 2558  GA-8I915ME-G Mainboard",
+"		1462 7028  915P/G Neo2",
+"		1734 105c  Scenic W620",
+"	2659  82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2",
+"		1028 0179  Optiplex GX280",
+"		103c 099c  NX6110/NC6120",
+"		1043 80a6  P5GD1-VW Mainboard",
+"		1458 2659  GA-8I915ME-G Mainboard",
+"		1462 7028  915P/G Neo2",
+"		1734 105c  Scenic W620",
+"	265a  82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3",
+"		1028 0179  Optiplex GX280",
+"		103c 099c  NX6110/NC6120",
+"		1043 80a6  P5GD1-VW Mainboard",
+"		1458 265a  GA-8I915ME-G Mainboard",
+"		1462 7028  915P/G Neo2",
+"		1734 105c  Scenic W620",
+"	265b  82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4",
+"		1028 0179  Optiplex GX280",
+"		103c 099c  NX6110/NC6120",
+"		1043 80a6  P5GD1-VW Mainboard",
+"		1458 265a  GA-8I915ME-G Mainboard",
+"		1462 7028  915P/G Neo2",
+"		1734 105c  Scenic W620",
+"	265c  82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller",
+"		1028 0179  Optiplex GX280",
+"		103c 099c  NX6110/NC6120",
+"		1043 80a6  P5GD1-VW Mainboard",
+"		1458 5006  GA-8I915ME-G Mainboard",
+"		1462 7028  915P/G Neo2",
+"		1734 105c  Scenic W620",
+"	2660  82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1",
+"		103c 099c  NX6110/NC6120",
+"	2662  82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 2",
+"	2664  82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 3",
+"	2666  82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 4",
+"	2668  82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller",
+"		1043 814e  P5GD1-VW Mainboard",
+"	266a  82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller",
+"		1028 0179  Optiplex GX280",
+"		1043 80a6  P5GD1-VW Mainboard",
+"		1458 266a  GA-8I915ME-G Mainboard",
+"		1462 7028  915P/G Neo2",
+"		1734 105c  Scenic W620",
+"	266c  82801FB/FBM/FR/FW/FRW (ICH6 Family) LAN Controller",
+"	266d  82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller",
+"		1025 006a  Conexant AC'97 CoDec (in Acer TravelMate 2410 serie laptop)",
+"		103c 099c  NX6110/NC6120",
+"	266e  82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller",
+"		1025 006a  Realtek ALC 655 codec (in Acer TravelMate 2410 serie laptop)",
+"		1028 0179  Optiplex GX280",
+"		1028 0182  Latitude D610 Laptop",
+"		1028 0188  Inspiron 6000 laptop",
+"		103c 0944  Compaq NC6220",
+"		103c 099c  NX6110/NC6120",
+"		103c 3006  DC7100 SFF(DX878AV)",
+"		1458 a002  GA-8I915ME-G Mainboard",
+"		152d 0745  Packard Bell A8550 Laptop",
+"		1734 105a  Scenic W620",
+"	266f  82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller",
+"		103c 099c  NX6110/NC6120",
+"		1043 80a6  P5GD1-VW Mainboard",
+"		1458 266f  GA-8I915ME-G Mainboard",
+"		1462 7028  915P/G Neo2",
+"		1734 105c  Scenic W620",
+"	2670  Enterprise Southbridge LPC",
+"	2680  Enterprise Southbridge SATA IDE",
+"	2681  Enterprise Southbridge SATA AHCI",
+"	2682  Enterprise Southbridge SATA RAID",
+"	2683  Enterprise Southbridge SATA RAID",
+"	2688  Enterprise Southbridge UHCI USB #1",
+"	2689  Enterprise Southbridge UHCI USB #2",
+"	268a  Enterprise Southbridge UHCI USB #3",
+"	268b  Enterprise Southbridge UHCI USB #4",
+"	268c  Enterprise Southbridge EHCI USB",
+"	2690  Enterprise Southbridge PCI Express Root Port 1",
+"	2692  Enterprise Southbridge PCI Express Root Port 2",
+"	2694  Enterprise Southbridge PCI Express Root Port 3",
+"	2696  Enterprise Southbridge PCI Express Root Port 4",
+"	2698  Enterprise Southbridge AC '97 Audio",
+"	2699  Enterprise Southbridge AC '97 Modem",
+"	269a  Enterprise Southbridge High Definition Audio",
+"	269b  Enterprise Southbridge SMBus",
+"	269e  Enterprise Southbridge PATA",
+"	2770  945G/GZ/P/PL Express Memory Controller Hub",
+"		8086 544e  DeskTop Board D945GTP",
+"	2771  945G/GZ/P/PL Express PCI Express Root Port",
+"	2772  945G/GZ Express Integrated Graphics Controller",
+"		8086 544e  DeskTop Board D945GTP",
+"	2774  955X Express Memory Controller Hub",
+"	2775  955X Express PCI Express Root Port",
+"	2776  945G/GZ Express Integrated Graphics Controller",
+"	2778  E7230 Memory Controller Hub",
+"	2779  E7230 PCI Express Root Port",
+"	277a  975X Express PCI Express Root Port",
+"	277c  975X Express Memory Controller Hub",
+"	277d  975X Express PCI Express Root Port",
+"	2782  82915G Express Chipset Family Graphics Controller",
+"		1043 2582  P5GD1-VW Mainboard",
+"		1734 105b  Scenic W620",
+"	2792  Mobile 915GM/GMS/910GML Express Graphics Controller",
+"		103c 099c  NX6110/NC6120",
+"		1043 1881  GMA 900 915GM Integrated Graphics",
+"	27a0  Mobile 945GM/PM/GMS/940GML and 945GT Express Memory Controller Hub",
+"	27a1  Mobile 945GM/PM/GMS/940GML and 945GT Express PCI Express Root Port",
+"	27a2  Mobile 945GM/GMS/940GML Express Integrated Graphics Controller",
+"	27a6  Mobile 945GM/GMS/940GML Express Integrated Graphics Controller",
+"	27b0  82801GH (ICH7DH) LPC Interface Bridge",
+"	27b8  82801GB/GR (ICH7 Family) LPC Interface Bridge",
+"		8086 544e  DeskTop Board D945GTP",
+"	27b9  82801GBM (ICH7-M) LPC Interface Bridge",
+"	27bd  82801GHM (ICH7-M DH) LPC Interface Bridge",
+"	27c0  82801GB/GR/GH (ICH7 Family) Serial ATA Storage Controller IDE",
+"		8086 544e  DeskTop Board D945GTP",
+"	27c1  82801GR/GH (ICH7 Family) Serial ATA Storage Controller AHCI",
+"	27c3  82801GR/GH (ICH7 Family) Serial ATA Storage Controller RAID",
+"	27c4  82801GBM/GHM (ICH7 Family) Serial ATA Storage Controller IDE",
+"	27c5  82801GBM/GHM (ICH7 Family) Serial ATA Storage Controller AHCI",
+"	27c6  82801GHM (ICH7-M DH) Serial ATA Storage Controller RAID",
+"	27c8  82801G (ICH7 Family) USB UHCI #1",
+"		8086 544e  DeskTop Board D945GTP",
+"	27c9  82801G (ICH7 Family) USB UHCI #2",
+"		8086 544e  DeskTop Board D945GTP",
+"	27ca  82801G (ICH7 Family) USB UHCI #3",
+"		8086 544e  DeskTop Board D945GTP",
+"	27cb  82801G (ICH7 Family) USB UHCI #4",
+"		8086 544e  DeskTop Board D945GTP",
+"	27cc  82801G (ICH7 Family) USB2 EHCI Controller",
+"		8086 544e  DeskTop Board D945GTP",
+"	27d0  82801G (ICH7 Family) PCI Express Port 1",
+"	27d2  82801G (ICH7 Family) PCI Express Port 2",
+"	27d4  82801G (ICH7 Family) PCI Express Port 3",
+"	27d6  82801G (ICH7 Family) PCI Express Port 4",
+"	27d8  82801G (ICH7 Family) High Definition Audio Controller",
+"	27da  82801G (ICH7 Family) SMBus Controller",
+"		8086 544e  DeskTop Board D945GTP",
+"	27dc  82801G (ICH7 Family) LAN Controller",
+"		8086 308d  DeskTop Board D945GTP",
+"	27dd  82801G (ICH7 Family) AC'97 Modem Controller",
+"	27de  82801G (ICH7 Family) AC'97 Audio Controller",
+"	27df  82801G (ICH7 Family) IDE Controller",
+"		8086 544e  DeskTop Board D945GTP",
+"	27e0  82801GR/GH/GHM (ICH7 Family) PCI Express Port 5",
+"	27e2  82801GR/GH/GHM (ICH7 Family) PCI Express Port 6",
+"	2810  LPC Interface Controller",
+"	2811  Mobile LPC Interface Controller",
+"	2812  LPC Interface Controller",
+"	2814  LPC Interface Controller",
+"	2815  Mobile LPC Interface Controller",
+"	2820  SATA Controller 1 IDE",
+"	2821  SATA Controller AHCI",
+"	2822  SATA Controller RAID",
+"	2824  SATA Controller AHCI",
+"	2825  SATA Controller 2 IDE",
+"	2828  Mobile SATA Controller IDE",
+"	2829  Mobile SATA Controller AHCI",
+"	282a  Mobile SATA Controller RAID",
+"	2830  USB UHCI Controller #1",
+"	2831  USB UHCI Controller #2",
+"	2832  USB UHCI Controller #3",
+"	2834  USB UHCI Controller #4",
+"	2835  USB UHCI Controller #5",
+"	2836  USB2 EHCI Controller #1",
+"	283a  USB2 EHCI Controller #2",
+"	283e  SMBus Controller",
+"	283f  PCI Express Port 1",
+"	2841  PCI Express Port 2",
+"	2843  PCI Express Port 3",
+"	2845  PCI Express Port 4",
+"	2847  PCI Express Port 5",
+"	2849  PCI Express Port 6",
+"	284b  HD Audio Controller",
+"	284f  Thermal Subsystem",
+"	2850  Mobile IDE Controller",
+"	2970  Memory Controller Hub",
+"	2971  PCI Express Root Port",
+"	2972  Integrated Graphics Controller",
+"	2973  Integrated Graphics Controller",
+"	2974  HECI Controller",
+"	2976  PT IDER Controller",
+"	2977  KT Controller",
+"	2990  Memory Controller Hub",
+"	2991  PCI Express Root Port",
+"	2992  Integrated Graphics Controller",
+"	2993  Integrated Graphics Controller",
+"	2994  HECI Controller",
+"	2995  HECI Controller",
+"	2996  PT IDER Controller",
+"	2997  KT Controller",
+"	29a0  Memory Controller Hub",
+"	29a1  PCI Express Root Port",
+"	29a2  Integrated Graphics Controller",
+"	29a3  Integrated Graphics Controller",
+"	29a4  HECI Controller",
+"	29a5  HECI Controller",
+"	29a6  PT IDER Controller",
+"	29a7  KT Controller",
+"	2a00  Mobile Memory Controller Hub",
+"	2a01  Mobile PCI Express Root Port",
+"	2a02  Mobile Integrated Graphics Controller",
+"	2a03  Mobile Integrated Graphics Controller",
+"	3092  Integrated RAID",
+"	3200  GD31244 PCI-X SATA HBA",
+"	3340  82855PM Processor to I/O Controller",
+"		1025 005a  TravelMate 290",
+"		103c 088c  NC8000 laptop",
+"		103c 0890  NC6000 laptop",
+"	3341  82855PM Processor to AGP Controller",
+"	3500  Enterprise Southbridge PCI Express Upstream Port",
+"	3501  Enterprise Southbridge PCI Express Upstream Port",
+"	3504  Enterprise Southbridge IOxAPIC",
+"	3505  Enterprise Southbridge IOxAPIC",
+"	350c  Enterprise Southbridge PCI Express to PCI-X Bridge",
+"	350d  Enterprise Southbridge PCI Express to PCI-X Bridge",
+"	3510  Enterprise Southbridge PCI Express Downstream Port E1",
+"	3511  Enterprise Southbridge PCI Express Downstream Port E1",
+"	3514  Enterprise Southbridge PCI Express Downstream Port E2",
+"	3515  Enterprise Southbridge PCI Express Downstream Port E2",
+"	3518  Enterprise Southbridge PCI Express Downstream Port E3",
+"	3519  Enterprise Southbridge PCI Express Downstream Port E3",
+"	3575  82830 830 Chipset Host Bridge",
+"		0e11 0030  Evo N600c",
+"		1014 021d  ThinkPad A/T/X Series",
+"		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP",
+"	3576  82830 830 Chipset AGP Bridge",
+"	3577  82830 CGC [Chipset Graphics Controller]",
+"		1014 0513  ThinkPad A/T/X Series",
+"	3578  82830 830 Chipset Host Bridge",
+"	3580  82852/82855 GM/GME/PM/GMV Processor to I/O Controller",
+"		1028 0139  Latitude D400",
+"		1028 0163  Latitude D505",
+"		1028 0196  Inspiron 5160",
+"		1734 1055  Amilo M1420",
+"		4c53 10b0  CL9 mainboard",
+"		4c53 10e0  PSL09 PrPMC",
+"	3581  82852/82855 GM/GME/PM/GMV Processor to AGP Controller",
+"		1734 1055  Amilo M1420",
+"	3582  82852/855GM Integrated Graphics Device",
+"		1028 0139  Latitude D400",
+"		1028 0163  Latitude D505",
+"		4c53 10b0  CL9 mainboard",
+"		4c53 10e0  PSL09 PrPMC",
+"	3584  82852/82855 GM/GME/PM/GMV Processor to I/O Controller",
+"		1028 0139  Latitude D400",
+"		1028 0163  Latitude D505",
+"		1028 0196  Inspiron 5160",
+"		1734 1055  Amilo M1420",
+"		4c53 10b0  CL9 mainboard",
+"		4c53 10e0  PSL09 PrPMC",
+"	3585  82852/82855 GM/GME/PM/GMV Processor to I/O Controller",
+"		1028 0139  Latitude D400",
+"		1028 0163  Latitude D505",
+"		1028 0196  Inspiron 5160",
+"		1734 1055  Amilo M1420",
+"		4c53 10b0  CL9 mainboard",
+"		4c53 10e0  PSL09 PrPMC",
+"	3590  E7520 Memory Controller Hub",
+"		1028 019a  PowerEdge SC1425",
+"		1734 103e  Primergy RX300 S2",
+"		4c53 10d0  Telum ASLP10 Processor AMC",
+"	3591  E7525/E7520 Error Reporting Registers",
+"		1028 0169  Precision 470",
+"		4c53 10d0  Telum ASLP10 Processor AMC",
+"	3592  E7320 Memory Controller Hub",
+"	3593  E7320 Error Reporting Registers",
+"	3594  E7520 DMA Controller",
+"		4c53 10d0  Telum ASLP10 Processor AMC",
+"	3595  E7525/E7520/E7320 PCI Express Port A",
+"	3596  E7525/E7520/E7320 PCI Express Port A1",
+"	3597  E7525/E7520 PCI Express Port B",
+"	3598  E7520 PCI Express Port B1",
+"	3599  E7520 PCI Express Port C",
+"	359a  E7520 PCI Express Port C1",
+"	359b  E7525/E7520/E7320 Extended Configuration Registers",
+"	359e  E7525 Memory Controller Hub",
+"		1028 0169  Precision 470",
+"	4220  PRO/Wireless 2200BG Network Connection",
+"	4222  PRO/Wireless 3945ABG Network Connection",
+"		8086 1005  PRO/Wireless 3945BG Network Connection",
+"		8086 1034  PRO/Wireless 3945BG Network Connection",
+"		8086 1044  PRO/Wireless 3945BG Network Connection",
+"	4223  PRO/Wireless 2915ABG Network Connection",
+"		1351 103c  Compaq NC6220",
+"	4224  PRO/Wireless 2915ABG Network Connection",
+"	4227  PRO/Wireless 3945ABG Network Connection",
+"		8086 1011  Thinkpad X60s",
+"		8086 1014  PRO/Wireless 3945BG Network Connection",
+"	5200  EtherExpress PRO/100 Intelligent Server",
+"	5201  EtherExpress PRO/100 Intelligent Server",
+"		8086 0001  EtherExpress PRO/100 Server Ethernet Adapter",
+"	530d  80310 IOP [IO Processor]",
+"	7000  82371SB PIIX3 ISA [Natoma/Triton II]",
+"	7010  82371SB PIIX3 IDE [Natoma/Triton II]",
+"	7020  82371SB PIIX3 USB [Natoma/Triton II]",
+"	7030  430VX - 82437VX TVX [Triton VX]",
+"	7050  Intercast Video Capture Card",
+"	7051  PB 642365-003 (Business Video Conferencing Card)",
+"	7100  430TX - 82439TX MTXC",
+"	7110  82371AB/EB/MB PIIX4 ISA",
+"		15ad 1976  virtualHW v3",
+"	7111  82371AB/EB/MB PIIX4 IDE",
+"		15ad 1976  virtualHW v3",
+"	7112  82371AB/EB/MB PIIX4 USB",
+"		15ad 1976  virtualHW v3",
+"	7113  82371AB/EB/MB PIIX4 ACPI",
+"		15ad 1976  virtualHW v3",
+"	7120  82810 GMCH [Graphics Memory Controller Hub]",
+"		4c53 1040  CL7 mainboard",
+"		4c53 1060  PC7 mainboard",
+"	7121  82810 CGC [Chipset Graphics Controller]",
+"		4c53 1040  CL7 mainboard",
+"		4c53 1060  PC7 mainboard",
+"		8086 4341  Cayman (CA810) Mainboard",
+"	7122  82810 DC-100 GMCH [Graphics Memory Controller Hub]",
+"	7123  82810 DC-100 CGC [Chipset Graphics Controller]",
+"	7124  82810E DC-133 GMCH [Graphics Memory Controller Hub]",
+"	7125  82810E DC-133 CGC [Chipset Graphics Controller]",
+"	7126  82810 DC-133 System and Graphics Controller",
+"	7128  82810-M DC-100 System and Graphics Controller",
+"	712a  82810-M DC-133 System and Graphics Controller",
+"	7180  440LX/EX - 82443LX/EX Host bridge",
+"	7181  440LX/EX - 82443LX/EX AGP bridge",
+"	7190  440BX/ZX/DX - 82443BX/ZX/DX Host bridge",
+"		0e11 0500  Armada 1750 Laptop System Chipset",
+"		0e11 b110  Armada M700/E500",
+"		1028 008e  PowerEdge 1300 mainboard",
+"		1179 0001  Toshiba Tecra 8100 Laptop System Chipset",
+"		15ad 1976  virtualHW v3",
+"		4c53 1050  CT7 mainboard",
+"		4c53 1051  CE7 mainboard",
+"	7191  440BX/ZX/DX - 82443BX/ZX/DX AGP bridge",
+"		1028 008e  PowerEdge 1300 mainboard",
+"	7192  440BX/ZX/DX - 82443BX/ZX/DX Host bridge (AGP disabled)",
+"		0e11 0460  Armada 1700 Laptop System Chipset",
+"		4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard",
+"	7194  82440MX Host Bridge",
+"		1033 0000  Versa Note Vxi",
+"		4c53 10a0  CA3/CR3 mainboard",
+"	7195  82440MX AC'97 Audio Controller",
+"		1033 80cc  Versa Note VXi",
+"		10cf 1099  QSound_SigmaTel Stac97 PCI Audio",
+"		11d4 0040  SoundMAX Integrated Digital Audio",
+"		11d4 0048  SoundMAX Integrated Digital Audio",
+"	7196  82440MX AC'97 Modem Controller",
+"	7198  82440MX ISA Bridge",
+"	7199  82440MX EIDE Controller",
+"	719a  82440MX USB Universal Host Controller",
+"	719b  82440MX Power Management Controller",
+"	71a0  440GX - 82443GX Host bridge",
+"		4c53 1050  CT7 mainboard",
+"		4c53 1051  CE7 mainboard",
+"	71a1  440GX - 82443GX AGP bridge",
+"	71a2  440GX - 82443GX Host bridge (AGP disabled)",
+"		4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard",
+"	7600  82372FB PIIX5 ISA",
+"	7601  82372FB PIIX5 IDE",
+"	7602  82372FB PIIX5 USB",
+"	7603  82372FB PIIX5 SMBus",
+"	7800  82740 (i740) AGP Graphics Accelerator",
+"		003d 0008  Starfighter AGP",
+"		003d 000b  Starfighter AGP",
+"		1092 0100  Stealth II G460",
+"		10b4 201a  Lightspeed 740",
+"		10b4 202f  Lightspeed 740",
+"		8086 0000  Terminator 2x/i",
+"		8086 0100  Intel740 Graphics Accelerator",
+"	84c4  450KX/GX [Orion] - 82454KX/GX PCI bridge",
+"	84c5  450KX/GX [Orion] - 82453KX/GX Memory controller",
+"	84ca  450NX - 82451NX Memory & I/O Controller",
+"	84cb  450NX - 82454NX/84460GX PCI Expander Bridge",
+"	84e0  460GX - 84460GX System Address Controller (SAC)",
+"	84e1  460GX - 84460GX System Data Controller (SDC)",
+"	84e2  460GX - 84460GX AGP Bridge (GXB function 2)",
+"	84e3  460GX - 84460GX Memory Address Controller (MAC)",
+"	84e4  460GX - 84460GX Memory Data Controller (MDC)",
+"	84e6  460GX - 82466GX Wide and fast PCI eXpander Bridge (WXB)",
+"	84ea  460GX - 84460GX AGP Bridge (GXB function 1)",
+"	8500  IXP4XX Intel Network Processor (IXP420/421/422/425/IXC1100)",
+"		1993 0ded  mGuard-PCI AV#2",
+"		1993 0dee  mGuard-PCI AV#1",
+"		1993 0def  mGuard-PCI AV#0",
+"	9000  IXP2000 Family Network Processor",
+"	9001  IXP2400 Network Processor",
+"	9002  IXP2300 Network Processor",
+"	9004  IXP2800 Network Processor",
+"	9621  Integrated RAID",
+"	9622  Integrated RAID",
+"	9641  Integrated RAID",
+"	96a1  Integrated RAID",
+"	b152  21152 PCI-to-PCI Bridge",
+"	b154  21154 PCI-to-PCI Bridge",
+"	b555  21555 Non transparent PCI-to-PCI Bridge",
+"		12d9 000a  PCI VoIP Gateway",
+"		4c53 1050  CT7 mainboard",
+"		4c53 1051  CE7 mainboard",
+"		e4bf 1000  CC8-1-BLUES",
+"8401  TRENDware International Inc.",
+"8800  Trigem Computer Inc.",
+"	2008  Video assistent component",
+"8866  T-Square Design Inc.",
+"8888  Silicon Magic",
+"8912  TRX",
+"8c4a  Winbond",
+"	1980  W89C940 misprogrammed [ne2k]",
+"8e0e  Computone Corporation",
+"8e2e  KTI",
+"	3000  ET32P2",
+"9004  Adaptec",
+"	0078  AHA-2940U_CN",
+"	1078  AIC-7810",
+"	1160  AIC-1160 [Family Fibre Channel Adapter]",
+"	2178  AIC-7821",
+"	3860  AHA-2930CU",
+"	3b78  AHA-4844W/4844UW",
+"	5075  AIC-755x",
+"	5078  AHA-7850",
+"		9004 7850  AHA-2904/Integrated AIC-7850",
+"	5175  AIC-755x",
+"	5178  AIC-7851",
+"	5275  AIC-755x",
+"	5278  AIC-7852",
+"	5375  AIC-755x",
+"	5378  AIC-7850",
+"	5475  AIC-755x",
+"	5478  AIC-7850",
+"	5575  AVA-2930",
+"	5578  AIC-7855",
+"	5647  ANA-7711 TCP Offload Engine",
+"		9004 7710  ANA-7711F TCP Offload Engine - Optical",
+"		9004 7711  ANA-7711LP TCP Offload Engine - Copper",
+"	5675  AIC-755x",
+"	5678  AIC-7856",
+"	5775  AIC-755x",
+"	5778  AIC-7850",
+"	5800  AIC-5800",
+"	5900  ANA-5910/5930/5940 ATM155 & 25 LAN Adapter",
+"	5905  ANA-5910A/5930A/5940A ATM Adapter",
+"	6038  AIC-3860",
+"	6075  AIC-1480 / APA-1480",
+"		9004 7560  AIC-1480 / APA-1480 Cardbus",
+"	6078  AIC-7860",
+"	6178  AIC-7861",
+"		9004 7861  AHA-2940AU Single",
+"	6278  AIC-7860",
+"	6378  AIC-7860",
+"	6478  AIC-786x",
+"	6578  AIC-786x",
+"	6678  AIC-786x",
+"	6778  AIC-786x",
+"	6915  ANA620xx/ANA69011A",
+"		9004 0008  ANA69011A/TX 10/100",
+"		9004 0009  ANA69011A/TX 10/100",
+"		9004 0010  ANA62022 2-port 10/100",
+"		9004 0018  ANA62044 4-port 10/100",
+"		9004 0019  ANA62044 4-port 10/100",
+"		9004 0020  ANA62022 2-port 10/100",
+"		9004 0028  ANA69011A/TX 10/100",
+"		9004 8008  ANA69011A/TX 64 bit 10/100",
+"		9004 8009  ANA69011A/TX 64 bit 10/100",
+"		9004 8010  ANA62022 2-port 64 bit 10/100",
+"		9004 8018  ANA62044 4-port 64 bit 10/100",
+"		9004 8019  ANA62044 4-port 64 bit 10/100",
+"		9004 8020  ANA62022 2-port 64 bit 10/100",
+"		9004 8028  ANA69011A/TX 64 bit 10/100",
+"	7078  AHA-294x / AIC-7870",
+"	7178  AHA-2940/2940W / AIC-7871",
+"	7278  AHA-3940/3940W / AIC-7872",
+"	7378  AHA-3985 / AIC-7873",
+"	7478  AHA-2944/2944W / AIC-7874",
+"	7578  AHA-3944/3944W / AIC-7875",
+"	7678  AHA-4944W/UW / AIC-7876",
+"	7710  ANA-7711F Network Accelerator Card (NAC) - Optical",
+"	7711  ANA-7711C Network Accelerator Card (NAC) - Copper",
+"	7778  AIC-787x",
+"	7810  AIC-7810",
+"	7815  AIC-7815 RAID+Memory Controller IC",
+"		9004 7815  ARO-1130U2 RAID Controller",
+"		9004 7840  AIC-7815 RAID+Memory Controller IC",
+"	7850  AIC-7850",
+"	7855  AHA-2930",
+"	7860  AIC-7860",
+"	7870  AIC-7870",
+"	7871  AHA-2940",
+"	7872  AHA-3940",
+"	7873  AHA-3980",
+"	7874  AHA-2944",
+"	7880  AIC-7880P",
+"	7890  AIC-7890",
+"	7891  AIC-789x",
+"	7892  AIC-789x",
+"	7893  AIC-789x",
+"	7894  AIC-789x",
+"	7895  AHA-2940U/UW / AHA-39xx / AIC-7895",
+"		9004 7890  AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B",
+"		9004 7891  AHA-2940U/2940UW Dual",
+"		9004 7892  AHA-3940AU/AUW/AUWD/UWD",
+"		9004 7894  AHA-3944AUWD",
+"		9004 7895  AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B",
+"		9004 7896  AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B",
+"		9004 7897  AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B",
+"	7896  AIC-789x",
+"	7897  AIC-789x",
+"	8078  AIC-7880U",
+"		9004 7880  AIC-7880P Ultra/Ultra Wide SCSI Chipset",
+"	8178  AHA-2940U/UW/D / AIC-7881U",
+"		9004 7881  AHA-2940UW SCSI Host Adapter",
+"	8278  AHA-3940U/UW/UWD / AIC-7882U",
+"	8378  AHA-3940U/UW / AIC-7883U",
+"	8478  AHA-2944UW / AIC-7884U",
+"	8578  AHA-3944U/UWD / AIC-7885",
+"	8678  AHA-4944UW / AIC-7886",
+"	8778  AHA-2940UW Pro / AIC-788x",
+"		9004 7887  2940UW Pro Ultra-Wide SCSI Controller",
+"	8878  AHA-2930UW / AIC-7888",
+"		9004 7888  AHA-2930UW SCSI Controller",
+"	8b78  ABA-1030",
+"	ec78  AHA-4944W/UW",
+"9005  Adaptec",
+"	0010  AHA-2940U2/U2W",
+"		9005 2180  AHA-2940U2 SCSI Controller",
+"		9005 8100  AHA-2940U2B SCSI Controller",
+"		9005 a100  AHA-2940U2B SCSI Controller",
+"		9005 a180  AHA-2940U2W SCSI Controller",
+"		9005 e100  AHA-2950U2B SCSI Controller",
+"	0011  AHA-2930U2",
+"	0013  78902",
+"		9005 0003  AAA-131U2 Array1000 1 Channel RAID Controller",
+"		9005 000f  AIC7890_ARO",
+"	001f  AHA-2940U2/U2W / 7890/7891",
+"		9005 000f  2940U2W SCSI Controller",
+"		9005 a180  2940U2W SCSI Controller",
+"	0020  AIC-7890",
+"	002f  AIC-7890",
+"	0030  AIC-7890",
+"	003f  AIC-7890",
+"	0050  AHA-3940U2x/395U2x",
+"		9005 f500  AHA-3950U2B",
+"		9005 ffff  AHA-3950U2B",
+"	0051  AHA-3950U2D",
+"		9005 b500  AHA-3950U2D",
+"	0053  AIC-7896 SCSI Controller",
+"		9005 ffff  AIC-7896 SCSI Controller mainboard implementation",
+"	005f  AIC-7896U2/7897U2",
+"	0080  AIC-7892A U160/m",
+"		0e11 e2a0  Compaq 64-Bit/66MHz Wide Ultra3 SCSI Adapter",
+"		9005 6220  AHA-29160C",
+"		9005 62a0  29160N Ultra160 SCSI Controller",
+"		9005 e220  29160LP Low Profile Ultra160 SCSI Controller",
+"		9005 e2a0  29160 Ultra160 SCSI Controller",
+"	0081  AIC-7892B U160/m",
+"		9005 62a1  19160 Ultra160 SCSI Controller",
+"	0083  AIC-7892D U160/m",
+"	008f  AIC-7892P U160/m",
+"		1179 0001  Magnia Z310",
+"		15d9 9005  Onboard SCSI Host Adapter",
+"	00c0  AHA-3960D / AIC-7899A U160/m",
+"		0e11 f620  Compaq 64-Bit/66MHz Dual Channel Wide Ultra3 SCSI Adapter",
+"		9005 f620  AHA-3960D U160/m",
+"	00c1  AIC-7899B U160/m",
+"	00c3  AIC-7899D U160/m",
+"	00c5  RAID subsystem HBA",
+"		1028 00c5  PowerEdge 2400,2500,2550,4400",
+"	00cf  AIC-7899P U160/m",
+"		1028 00ce  PowerEdge 1400",
+"		1028 00d1  PowerEdge 2550",
+"		1028 00d9  PowerEdge 2500",
+"		10f1 2462  Thunder K7 S2462",
+"		15d9 9005  Onboard SCSI Host Adapter",
+"		8086 3411  SDS2 Mainboard",
+"	0241  Serial ATA II RAID 1420SA",
+"	0250  ServeRAID Controller",
+"		1014 0279  ServeRAID-xx",
+"		1014 028c  ServeRAID-xx",
+"	0279  ServeRAID 6M",
+"	0283  AAC-RAID",
+"		9005 0283  Catapult",
+"	0284  AAC-RAID",
+"		9005 0284  Tomcat",
+"	0285  AAC-RAID",
+"		0e11 0295  SATA 6Ch (Bearcat)",
+"		1014 02f2  ServeRAID 8i",
+"		1028 0287  PowerEdge Expandable RAID Controller 320/DC",
+"		1028 0291  CERC SATA RAID 2 PCI SATA 6ch (DellCorsair)",
+"		103c 3227  AAR-2610SA",
+"		17aa 0286  Legend S220 (Legend Crusader)",
+"		17aa 0287  Legend S230 (Legend Vulcan)",
+"		9005 0285  2200S (Vulcan)",
+"		9005 0286  2120S (Crusader)",
+"		9005 0287  2200S (Vulcan-2m)",
+"		9005 0288  3230S (Harrier)",
+"		9005 0289  3240S (Tornado)",
+"		9005 028a  ASR-2020ZCR",
+"		9005 028b  ASR-2025ZCR (Terminator)",
+"		9005 028e  ASR-2020SA (Skyhawk)",
+"		9005 028f  ASR-2025SA",
+"		9005 0290  AAR-2410SA PCI SATA 4ch (Jaguar II)",
+"		9005 0292  AAR-2810SA PCI SATA 8ch (Corsair-8)",
+"		9005 0293  AAR-21610SA PCI SATA 16ch (Corsair-16)",
+"		9005 0294  ESD SO-DIMM PCI-X SATA ZCR (Prowler)",
+"		9005 0296  ASR-2240S",
+"		9005 0297  ASR-4005SAS",
+"		9005 0298  ASR-4000SAS",
+"		9005 0299  ASR-4800SAS",
+"		9005 029a  4805SAS",
+"	0286  AAC-RAID (Rocket)",
+"		1014 9540  ServeRAID 8k/8k-l4",
+"		1014 9580  ServeRAID 8k/8k-l8",
+"		9005 028c  ASR-2230S + ASR-2230SLP PCI-X (Lancer)",
+"		9005 028d  ASR-2130S",
+"		9005 029b  ASR-2820SA",
+"		9005 029c  ASR-2620SA",
+"		9005 029d  ASR-2420SA",
+"		9005 029e  ICP ICP9024R0",
+"		9005 029f  ICP ICP9014R0",
+"		9005 02a0  ICP ICP9047MA",
+"		9005 02a1  ICP ICP9087MA",
+"		9005 02a2  3800SAS",
+"		9005 02a3  ICP ICP5445AU",
+"		9005 02a4  ICP ICP5085LI",
+"		9005 02a5  ICP ICP5085BR",
+"		9005 02a6  ICP9067MA",
+"		9005 02a7  AAR-2830SA",
+"		9005 02a8  AAR-2430SA",
+"		9005 02a9  ICP5087AU",
+"		9005 02aa  ICP5047AU",
+"		9005 0800  Callisto",
+"	0500  Obsidian chipset SCSI controller",
+"		1014 02c1  PCI-X DDR 3Gb SAS Adapter (572A/572C)",
+"		1014 02c2  PCI-X DDR 3Gb SAS RAID Adapter (572B/572D)",
+"	0503  Scamp chipset SCSI controller",
+"		1014 02bf  Quad Channel PCI-X DDR U320 SCSI RAID Adapter (571E)",
+"		1014 02d5  Quad Channel PCI-X DDR U320 SCSI RAID Adapter (571F)",
+"	0910  AUA-3100B",
+"	091e  AUA-3100B",
+"	8000  ASC-29320A U320",
+"	800f  AIC-7901 U320",
+"	8010  ASC-39320 U320",
+"	8011  ASC-39320D",
+"		0e11 00ac  ASC-39320D U320",
+"		9005 0041  ASC-39320D U320",
+"	8012  ASC-29320 U320",
+"	8013  ASC-29320B U320",
+"	8014  ASC-29320LP U320",
+"	8015  ASC-39320B U320",
+"	8016  ASC-39320A U320",
+"	8017  ASC-29320ALP U320",
+"	801c  ASC-39320D U320",
+"	801d  AIC-7902B U320",
+"	801e  AIC-7901A U320",
+"	801f  AIC-7902 U320",
+"		1734 1011  Primergy RX300",
+"	8080  ASC-29320A U320 w/HostRAID",
+"	808f  AIC-7901 U320 w/HostRAID",
+"	8090  ASC-39320 U320 w/HostRAID",
+"	8091  ASC-39320D U320 w/HostRAID",
+"	8092  ASC-29320 U320 w/HostRAID",
+"	8093  ASC-29320B U320 w/HostRAID",
+"	8094  ASC-29320LP U320 w/HostRAID",
+"	8095  ASC-39320(B) U320 w/HostRAID",
+"	8096  ASC-39320A U320 w/HostRAID",
+"	8097  ASC-29320ALP U320 w/HostRAID",
+"	809c  ASC-39320D(B) U320 w/HostRAID",
+"	809d  AIC-7902(B) U320 w/HostRAID",
+"	809e  AIC-7901A U320 w/HostRAID",
+"	809f  AIC-7902 U320 w/HostRAID",
+"907f  Atronics",
+"	2015  IDE-2015PL",
+"919a  Gigapixel Corp",
+"9412  Holtek",
+"	6565  6565",
+"9699  Omni Media Technology Inc",
+"	6565  6565",
+"9710  NetMos Technology",
+"	7780  USB IRDA-port",
+"	9805  PCI 1 port parallel adapter",
+"	9815  PCI 9815 Multi-I/O Controller",
+"		1000 0020  2P0S (2 port parallel adaptor)",
+"	9835  PCI 9835 Multi-I/O Controller",
+"		1000 0002  2S (16C550 UART)",
+"		1000 0012  1P2S",
+"	9845  PCI 9845 Multi-I/O Controller",
+"		1000 0004  0P4S (4 port 16550A serial card)",
+"		1000 0006  0P6S (6 port 16550a serial card)",
+"	9855  PCI 9855 Multi-I/O Controller",
+"		1000 0014  1P4S",
+"9902  Stargen Inc.",
+"	0001  SG2010 PCI over Starfabric Bridge",
+"	0002  SG2010 PCI to Starfabric Gateway",
+"	0003  SG1010 Starfabric Switch and PCI Bridge",
+"a0a0  AOPEN Inc.",
+"a0f1  UNISYS Corporation",
+"a200  NEC Corporation",
+"a259  Hewlett Packard",
+"a25b  Hewlett Packard GmbH PL24-MKT",
+"a304  Sony",
+"a727  3Com Corporation",
+"	0013  3CRPAG175 Wireless PC Card",
+"aa42  Scitex Digital Video",
+"ac1e  Digital Receiver Technology Inc",
+"ac3d  Actuality Systems",
+"aecb  Adrienne Electronics Corporation",
+"	6250  VITC/LTC Timecode Reader card [PCI-VLTC/RDR]",
+"affe  Sirrix AG security technologies",
+"	dead  Sirrix.PCI4S0 4-port ISDN S0 interface",
+"b1b3  Shiva Europe Limited",
+"bd11  Pinnacle Systems, Inc. (Wrong ID)",
+"c001  TSI Telsys",
+"c0a9  Micron/Crucial Technology",
+"c0de  Motorola",
+"c0fe  Motion Engineering, Inc.",
+"ca50  Varian Australia Pty Ltd",
+"cafe  Chrysalis-ITS",
+"	0003  Luna K3 Hardware Security Module",
+"cccc  Catapult Communications",
+"cddd  Tyzx, Inc.",
+"	0101  DeepSea 1 High Speed Stereo Vision Frame Grabber",
+"	0200  DeepSea 2 High Speed Stereo Vision Frame Grabber",
+"d161  Digium, Inc.",
+"	0205  Wildcard TE205P",
+"	0210  Wildcard TE210P",
+"	0405  Wildcard TE405P Quad-Span togglable E1/T1/J1 card 5.0v",
+"	0406  Wildcard TE406P Quad-Span togglable E1/T1/J1 echo cancellation card 5.0v",
+"	0410  Wildcard TE410P Quad-Span togglable E1/T1/J1 card 3.3v",
+"	0411  Wildcard TE411P Quad-Span togglable E1/T1/J1 echo cancellation card 3.3v",
+"	2400  Wildcard TDM2400P",
+"d4d4  Dy4 Systems Inc",
+"	0601  PCI Mezzanine Card",
+"d531  I+ME ACTIA GmbH",
+"d84d  Exsys",
+"dead  Indigita Corporation",
+"deaf  Middle Digital Inc.",
+"	9050  PC Weasel Virtual VGA",
+"	9051  PC Weasel Serial Port",
+"	9052  PC Weasel Watchdog Timer",
+"e000  Winbond",
+"	e000  W89C940",
+"e159  Tiger Jet Network Inc.",
+"	0001  Tiger3XX Modem/ISDN interface",
+"		0059 0001  128k ISDN-S/T Adapter",
+"		0059 0003  128k ISDN-U Adapter",
+"		00a7 0001  TELES.S0/PCI 2.x ISDN Adapter",
+"		8086 0003  Digium X100P/X101P analogue PSTN FXO interface",
+"	0002  Tiger100APC ISDN chipset",
+"e4bf  EKF Elektronik GmbH",
+"e55e  Essence Technology, Inc.",
+"ea01  Eagle Technology",
+"	000a  PCI-773 Temperature Card",
+"	0032  PCI-730 & PC104P-30 Card",
+"	003e  PCI-762 Opto-Isolator Card",
+"	0041  PCI-763 Reed Relay Card",
+"	0043  PCI-769 Opto-Isolator Reed Relay Combo Card",
+"	0046  PCI-766 Analog Output Card",
+"	0052  PCI-703 Analog I/O Card",
+"	0800  PCI-800 Digital I/O Card",
+"ea60  RME",
+"	9896  Digi32",
+"	9897  Digi32 Pro",
+"	9898  Digi32/8",
+"eabb  Aashima Technology B.V.",
+"eace  Endace Measurement Systems, Ltd",
+"	3100  DAG 3.10 OC-3/OC-12",
+"	3200  DAG 3.2x OC-3/OC-12",
+"	320e  DAG 3.2E Fast Ethernet",
+"	340e  DAG 3.4E Fast Ethernet",
+"	341e  DAG 3.41E Fast Ethernet",
+"	3500  DAG 3.5 OC-3/OC-12",
+"	351c  DAG 3.5ECM Fast Ethernet",
+"	4100  DAG 4.10 OC-48",
+"	4110  DAG 4.11 OC-48",
+"	4220  DAG 4.2 OC-48",
+"	422e  DAG 4.2E Dual Gigabit Ethernet",
+"ec80  Belkin Corporation",
+"	ec00  F5D6000",
+"ecc0  Echo Digital Audio Corporation",
+"edd8  ARK Logic Inc",
+"	a091  1000PV [Stingray]",
+"	a099  2000PV [Stingray]",
+"	a0a1  2000MT",
+"	a0a9  2000MI",
+"f1d0  AJA Video",
+"	c0fe  Xena HS/HD-R",
+"	c0ff  Kona/Xena 2",
+"	cafe  Kona SD",
+"	cfee  Xena LS/SD-22-DA/SD-DA",
+"	dcaf  Kona HD",
+"	dfee  Xena HD-DA",
+"	efac  Xena SD-MM/SD-22-MM",
+"	facd  Xena HD-MM",
+"fa57  Interagon AS",
+"	0001  PMC [Pattern Matching Chip]",
+"fab7  Fabric7 Systems, Inc.",
+"febd  Ultraview Corp.",
+"feda  Broadcom Inc",
+"	a0fa  BCM4210 iLine10 HomePNA 2.0",
+"	a10e  BCM4230 iLine10 HomePNA 2.0",
+"fede  Fedetec Inc.",
+"	0003  TABIC PCI v3",
+"fffd  XenSource, Inc.",
+"	0101  PCI Event Channel Controller",
+"fffe  VMWare Inc",
+"	0405  Virtual SVGA 4.0",
+"	0710  Virtual SVGA",
+"ffff  Illegal Vendor ID",
+"C 00  Unclassified device",
+"	00  Non-VGA unclassified device",
+"	01  VGA compatible unclassified device",
+"C 01  Mass storage controller",
+"	00  SCSI storage controller",
+"	01  IDE interface",
+"	02  Floppy disk controller",
+"	03  IPI bus controller",
+"	04  RAID bus controller",
+"	05  ATA controller",
+"		20  ADMA single stepping",
+"		40  ADMA continuous operation",
+"	06  SATA controller",
+"		00  Vendor specific",
+"		01  AHCI 1.0",
+"	07  Serial Attached SCSI controller",
+"	80  Mass storage controller",
+"C 02  Network controller",
+"	00  Ethernet controller",
+"	01  Token ring network controller",
+"	02  FDDI network controller",
+"	03  ATM network controller",
+"	04  ISDN controller",
+"	80  Network controller",
+"C 03  Display controller",
+"	00  VGA compatible controller",
+"		00  VGA",
+"		01  8514",
+"	01  XGA compatible controller",
+"	02  3D controller",
+"	80  Display controller",
+"C 04  Multimedia controller",
+"	00  Multimedia video controller",
+"	01  Multimedia audio controller",
+"	02  Computer telephony device",
+"	03  Audio device",
+"	80  Multimedia controller",
+"C 05  Memory controller",
+"	00  RAM memory",
+"	01  FLASH memory",
+"	80  Memory controller",
+"C 06  Bridge",
+"	00  Host bridge",
+"	01  ISA bridge",
+"	02  EISA bridge",
+"	03  MicroChannel bridge",
+"	04  PCI bridge",
+"		00  Normal decode",
+"		01  Subtractive decode",
+"	05  PCMCIA bridge",
+"	06  NuBus bridge",
+"	07  CardBus bridge",
+"	08  RACEway bridge",
+"		00  Transparent mode",
+"		01  Endpoint mode",
+"	09  Semi-transparent PCI-to-PCI bridge",
+"		40  Primary bus towards host CPU",
+"		80  Secondary bus towards host CPU",
+"	0a  InfiniBand to PCI host bridge",
+"	80  Bridge",
+"C 07  Communication controller",
+"	00  Serial controller",
+"		00  8250",
+"		01  16450",
+"		02  16550",
+"		03  16650",
+"		04  16750",
+"		05  16850",
+"		06  16950",
+"	01  Parallel controller",
+"		00  SPP",
+"		01  BiDir",
+"		02  ECP",
+"		03  IEEE1284",
+"		fe  IEEE1284 Target",
+"	02  Multiport serial controller",
+"	03  Modem",
+"		00  Generic",
+"		01  Hayes/16450",
+"		02  Hayes/16550",
+"		03  Hayes/16650",
+"		04  Hayes/16750",
+"	80  Communication controller",
+"C 08  Generic system peripheral",
+"	00  PIC",
+"		00  8259",
+"		01  ISA PIC",
+"		02  EISA PIC",
+"		10  IO-APIC",
+"		20  IO(X)-APIC",
+"	01  DMA controller",
+"		00  8237",
+"		01  ISA DMA",
+"		02  EISA DMA",
+"	02  Timer",
+"		00  8254",
+"		01  ISA Timer",
+"		02  EISA Timers",
+"	03  RTC",
+"		00  Generic",
+"		01  ISA RTC",
+"	04  PCI Hot-plug controller",
+"	80  System peripheral",
+"C 09  Input device controller",
+"	00  Keyboard controller",
+"	01  Digitizer Pen",
+"	02  Mouse controller",
+"	03  Scanner controller",
+"	04  Gameport controller",
+"		00  Generic",
+"		10  Extended",
+"	80  Input device controller",
+"C 0a  Docking station",
+"	00  Generic Docking Station",
+"	80  Docking Station",
+"C 0b  Processor",
+"	00  386",
+"	01  486",
+"	02  Pentium",
+"	10  Alpha",
+"	20  Power PC",
+"	30  MIPS",
+"	40  Co-processor",
+"C 0c  Serial bus controller",
+"	00  FireWire (IEEE 1394)",
+"		00  Generic",
+"		10  OHCI",
+"	01  ACCESS Bus",
+"	02  SSA",
+"	03  USB Controller",
+"		00  UHCI",
+"		10  OHCI",
+"		20  EHCI",
+"		80  Unspecified",
+"		fe  USB Device",
+"	04  Fibre Channel",
+"	05  SMBus",
+"	06  InfiniBand",
+"C 0d  Wireless controller",
+"	00  IRDA controller",
+"	01  Consumer IR controller",
+"	10  RF controller",
+"	80  Wireless controller",
+"C 0e  Intelligent controller",
+"	00  I2O",
+"C 0f  Satellite communications controller",
+"	00  Satellite TV controller",
+"	01  Satellite audio communication controller",
+"	03  Satellite voice communication controller",
+"	04  Satellite data communication controller",
+"C 10  Encryption controller",
+"	00  Network and computing encryption device",
+"	10  Entertainment encryption device",
+"	80  Encryption controller",
+"C 11  Signal processing controller",
+"	00  DPIO module",
+"	01  Performance counters",
+"	10  Communication synchronizer",
+"	80  Signal processing controller",
+""
+};
Index: uspace/srv/hw/bus/pci/libpci/sysdep.h
===================================================================
--- uspace/srv/hw/bus/pci/libpci/sysdep.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/bus/pci/libpci/sysdep.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,26 @@
+/*
+ *	The PCI Library -- System-Dependent Stuff
+ *
+ *	Copyright (c) 1997--2004 Martin Mares <mj@ucw.cz>
+ *
+ *	May 8, 2006 - Modified and ported to HelenOS by Jakub Jermar.
+ *
+ *	Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#ifdef __GNUC__
+#define UNUSED __attribute__((unused))
+#define NONRET __attribute__((noreturn))
+#else
+#define UNUSED
+#define NONRET
+#define inline
+#endif
+
+typedef u8 byte;
+typedef u16 word;
+
+#define cpu_to_le16(x) (x)
+#define cpu_to_le32(x) (x)
+#define le16_to_cpu(x) (x)
+#define le32_to_cpu(x) (x)
Index: uspace/srv/hw/bus/pci/libpci/types.h
===================================================================
--- uspace/srv/hw/bus/pci/libpci/types.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/bus/pci/libpci/types.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,49 @@
+/*
+ *	The PCI Library -- Types and Format Strings
+ *
+ *	Copyright (c) 1997--2005 Martin Mares <mj@ucw.cz>
+ *
+ *	May 8, 2006 - Modified and ported to HelenOS by Jakub Jermar.
+ *
+ *	Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#include <sys/types.h>
+
+#ifndef PCI_HAVE_Uxx_TYPES
+
+typedef uint8_t u8;
+typedef uint16_t u16;
+typedef uint32_t u32;
+
+#ifdef PCI_HAVE_64BIT_ADDRESS
+#include <limits.h>
+#if ULONG_MAX > 0xffffffff
+typedef unsigned long u64;
+#define PCI_U64_FMT "l"
+#else
+typedef unsigned long long u64;
+#define PCI_U64_FMT "ll"
+#endif
+#endif
+
+#endif				/* PCI_HAVE_Uxx_TYPES */
+
+#ifdef PCI_HAVE_64BIT_ADDRESS
+typedef u64 pciaddr_t;
+#define PCIADDR_T_FMT "%08" PCI_U64_FMT "x"
+#define PCIADDR_PORT_FMT "%04" PCI_U64_FMT "x"
+#else
+typedef u32 pciaddr_t;
+#define PCIADDR_T_FMT "%08x"
+#define PCIADDR_PORT_FMT "%04x"
+#endif
+
+#ifdef PCI_ARCH_SPARC64
+/* On sparc64 Linux the kernel reports remapped port addresses and IRQ numbers */
+#undef PCIADDR_PORT_FMT
+#define PCIADDR_PORT_FMT PCIADDR_T_FMT
+#define PCIIRQ_FMT "%08x"
+#else
+#define PCIIRQ_FMT "%d"
+#endif
Index: uspace/srv/hw/bus/pci/pci.c
===================================================================
--- uspace/srv/hw/bus/pci/pci.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/bus/pci/pci.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,88 @@
+/*
+ * HelenOS PCI driver.
+ *
+ * (Based on public domain libpci example.c written by Martin Mares.)
+ * Copyright (c) 2006 Jakub Jermar
+ *
+ * Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+/**
+ * @addtogroup pci
+ * @{
+ */
+
+#include <stdio.h>
+#include <ddi.h>
+#include <task.h>
+#include <stdlib.h>
+#include <ipc/ipc.h>
+#include <ipc/services.h>
+#include <errno.h>
+
+#include "libpci/pci.h"
+
+#define PCI_CONF1	0xcf8
+#define PCI_CONF1_SIZE	8
+
+#define NAME		"PCI"
+
+static struct pci_access *pacc;
+
+int main(int argc, char *argv[])
+{
+	struct pci_dev *dev;
+	unsigned int c;
+	char buf[80];
+	ipcarg_t ns_in_phone_hash;
+
+	printf("%s: HelenOS PCI driver\n", NAME);
+
+	/*
+	 * Gain control over PCI configuration ports.
+	 */
+	iospace_enable(task_get_id(), (void *) PCI_CONF1, PCI_CONF1_SIZE);
+
+	pacc = pci_alloc();           /* Get the pci_access structure */
+	pci_init(pacc);               /* Initialize the PCI library */
+	pci_scan_bus(pacc);           /* We want to get the list of devices */
+	for(dev=pacc->devices; dev; dev=dev->next) {   /* Iterate over all devices */
+		pci_fill_info(dev, PCI_FILL_IDENT | PCI_FILL_BASES | PCI_FILL_IRQ);
+		c = pci_read_word(dev, PCI_CLASS_DEVICE); /* Read config register directly */
+		printf("%02x:%02x.%d vendor=%04x device=%04x class=%04x irq=%d base0=%lx\n",
+			dev->bus, dev->dev, dev->func, dev->vendor_id, dev->device_id,
+			c, dev->irq, dev->base_addr[0]);
+		printf("\t%s\n", pci_lookup_name(pacc, buf, sizeof(buf), PCI_LOOKUP_VENDOR | PCI_LOOKUP_DEVICE,
+			dev->vendor_id, dev->device_id));
+	}
+
+	printf("%s: registering at naming service.\n", NAME);
+	if (ipc_connect_to_me(PHONE_NS, SERVICE_PCI, 0, 0, &ns_in_phone_hash) != 0) {
+		printf("Failed to register %s at naming service.\n", NAME);
+		return -1;
+	}
+
+	printf("%s: accepting connections\n", NAME);
+	while (1) {		
+		ipc_call_t call;
+		ipc_callid_t callid;
+		ipcarg_t retval = ENOTSUP;
+
+		callid = ipc_wait_for_call(&call);
+		switch(IPC_GET_METHOD(call)) {
+		case IPC_M_CONNECT_ME_TO:
+			retval = EOK;
+			break;
+		}
+		ipc_answer_0(callid, retval);
+		printf("%s: received call from %lX\n", NAME,
+		    call.in_phone_hash);
+	}
+
+	pci_cleanup(pacc);
+	return 0;
+}
+
+/**
+ * @}
+ */
Index: uspace/srv/hw/bus/pci/update-ids
===================================================================
--- uspace/srv/hw/bus/pci/update-ids	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/bus/pci/update-ids	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,16 @@
+#! /bin/bash
+
+wget -O pci.ids http://pciids.sourceforge.net/v2.2/pci.ids
+
+cat > pci_ids.h <<EOF
+/* DO NOT EDIT, THIS FILE IS AUTOMATICALLY GENERATED */
+char *pci_ids[] = {
+EOF
+
+cat pci.ids | grep -v '^#.*' | grep -v '^$' | tr \" \' | \
+    sed -n 's/\(.*\)/"\1",/p' | sed 's/?/\\?/g' >> pci_ids.h
+
+cat >> pci_ids.h <<EOF
+""
+};
+EOF
Index: uspace/srv/hw/char/i8042/Makefile
===================================================================
--- uspace/srv/hw/char/i8042/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/char/i8042/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,40 @@
+#
+# Copyright (c) 2005 Martin Decky
+# Copyright (c) 2007 Jakub Jermar
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+include Makefile.common
+
+.PHONY: all clean
+
+all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
+	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
+
+clean:
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
+	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/srv/hw/char/i8042/Makefile.build
===================================================================
--- uspace/srv/hw/char/i8042/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/char/i8042/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,64 @@
+#
+# Copyright (c) 2005 Martin Decky
+# Copyright (c) 2007 Jakub Jermar
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+## Setup toolchain
+#
+
+include Makefile.common
+include $(LIBC_PREFIX)/Makefile.toolchain
+
+## Sources
+#
+
+SOURCES = \
+	i8042.c
+
+OBJECTS := $(addsuffix .o,$(basename $(SOURCES)))
+
+.PHONY: all
+
+all: $(OUTPUT) $(OUTPUT).disasm
+
+-include $(DEPEND)
+
+$(OUTPUT).disasm: $(OUTPUT)
+	$(OBJDUMP) -d $< > $@
+
+$(OUTPUT): $(OBJECTS) $(LIBS)
+	$(LD) -T $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
+
+%.o: %.c $(DEPEND)
+	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
+
+$(DEPEND):
+	makedepend -f - -- $(DEPEND_DEFS) $(CFLAGS) -- $(SOURCES) > $@ 2> /dev/null
+	-[ -f $(DEPEND_PREV) ] && diff -q $(DEPEND_PREV) $@ && mv -f $(DEPEND_PREV) $@
Index: uspace/srv/hw/char/i8042/Makefile.common
===================================================================
--- uspace/srv/hw/char/i8042/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/char/i8042/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,40 @@
+#
+# Copyright (c) 2005 Martin Decky
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+
+## Common names
+#
+
+LIBC_PREFIX = ../../../../lib/libc
+SOFTINT_PREFIX = ../../../../lib/softint
+LIBS = $(LIBC_PREFIX)/libc.a
+
+DEPEND = Makefile.depend
+DEPEND_PREV = $(DEPEND).prev
+JOB = i8042.job
+OUTPUT = i8042
Index: uspace/srv/hw/char/i8042/i8042.c
===================================================================
--- uspace/srv/hw/char/i8042/i8042.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/char/i8042/i8042.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,302 @@
+/*
+ * Copyright (c) 2001-2004 Jakub Jermar
+ * Copyright (c) 2006 Josef Cejka
+ * Copyright (c) 2009 Jiri Svoboda
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup kbd_port
+ * @ingroup kbd
+ * @{
+ */ 
+/** @file
+ * @brief i8042 PS/2 port driver.
+ */
+
+#include <ddi.h>
+#include <libarch/ddi.h>
+#include <devmap.h>
+#include <ipc/ipc.h>
+#include <async.h>
+#include <unistd.h>
+#include <sysinfo.h>
+#include <stdio.h>
+#include <errno.h>
+
+#include "i8042.h"
+
+#define NAME "i8042"
+#define NAMESPACE "char"
+
+/* Interesting bits for status register */
+#define i8042_OUTPUT_FULL	0x01
+#define i8042_INPUT_FULL	0x02
+#define i8042_AUX_DATA		0x20
+
+/* Command constants */
+#define i8042_CMD_WRITE_CMDB	0x60	/**< write command byte */
+#define i8042_CMD_WRITE_AUX	0xd4	/**< write aux device */
+
+/* Command byte fields */
+#define i8042_KBD_IE		0x01
+#define i8042_AUX_IE		0x02
+#define i8042_KBD_DISABLE	0x10
+#define i8042_AUX_DISABLE	0x20
+#define i8042_KBD_TRANSLATE	0x40
+
+/* Mouse constants */
+#define MOUSE_OUT_INIT  0xf4
+#define MOUSE_ACK       0xfa
+
+enum {
+	DEVID_PRI = 0, /**< primary device */
+        DEVID_AUX = 1, /**< AUX device */
+	MAX_DEVS  = 2
+};
+
+static irq_cmd_t i8042_cmds[] = {
+	{
+		.cmd = CMD_PIO_READ_8,
+		.addr = NULL,	/* will be patched in run-time */
+		.dstarg = 1
+	},
+	{
+		.cmd = CMD_BTEST,
+		.value = i8042_OUTPUT_FULL,
+		.srcarg = 1,
+		.dstarg = 3
+	},
+	{
+		.cmd = CMD_PREDICATE,
+		.value = 2,
+		.srcarg = 3
+	},
+	{
+		.cmd = CMD_PIO_READ_8,
+		.addr = NULL,	/* will be patched in run-time */
+		.dstarg = 2
+	},
+	{
+		.cmd = CMD_ACCEPT
+	}
+};
+
+static irq_code_t i8042_kbd = {
+	sizeof(i8042_cmds) / sizeof(irq_cmd_t),
+	i8042_cmds
+};
+
+static uintptr_t i8042_physical;
+static uintptr_t i8042_kernel;
+static i8042_t * i8042;
+
+static i8042_port_t i8042_port[MAX_DEVS];
+
+static void wait_ready(void)
+{
+	while (pio_read_8(&i8042->status) & i8042_INPUT_FULL);
+}
+
+static void i8042_irq_handler(ipc_callid_t iid, ipc_call_t *call);
+static void i8042_connection(ipc_callid_t iid, ipc_call_t *icall);
+static int i8042_init(void);
+static void i8042_port_write(int devid, uint8_t data);
+
+
+int main(int argc, char *argv[])
+{
+	char name[16];
+	int i, rc;
+	char dchar[MAX_DEVS] = { 'a', 'b' };
+
+	printf(NAME ": i8042 PS/2 port driver\n");
+
+	rc = devmap_driver_register(NAME, i8042_connection);
+	if (rc < 0) {
+		printf(NAME ": Unable to register driver.\n");
+		return rc;
+	}
+
+	if (i8042_init() != EOK)
+		return -1;
+
+	for (i = 0; i < MAX_DEVS; i++) {
+		i8042_port[i].client_phone = -1;
+
+		snprintf(name, 16, "%s/ps2%c", NAMESPACE, dchar[i]);
+		rc = devmap_device_register(name, &i8042_port[i].dev_handle);
+		if (rc != EOK) {
+			devmap_hangup_phone(DEVMAP_DRIVER);
+			printf(NAME ": Unable to register device %s.\n", name);
+			return rc;
+		}
+		printf(NAME ": Registered device %s\n", name);
+	}
+
+	printf(NAME ": Accepting connections\n");
+	task_retval(0);
+	async_manager();
+
+	/* Not reached */
+	return 0;
+}
+
+static int i8042_init(void)
+{
+	void *vaddr;
+
+	i8042_physical = sysinfo_value("i8042.address.physical");
+	i8042_kernel = sysinfo_value("i8042.address.kernel");
+	if (pio_enable((void *) i8042_physical, sizeof(i8042_t), &vaddr) != 0)
+		return -1;
+	i8042 = vaddr;
+
+	async_set_interrupt_received(i8042_irq_handler);
+
+	/* Disable kbd, enable mouse */
+	pio_write_8(&i8042->status, i8042_CMD_WRITE_CMDB);
+	wait_ready();
+	pio_write_8(&i8042->status, i8042_CMD_WRITE_CMDB);
+	wait_ready();
+	pio_write_8(&i8042->data, i8042_KBD_DISABLE);
+	wait_ready();
+
+	/* Flush all current IO */
+	while (pio_read_8(&i8042->status) & i8042_OUTPUT_FULL)
+		(void) pio_read_8(&i8042->data);
+
+	i8042_port_write(DEVID_AUX, MOUSE_OUT_INIT);
+
+	i8042_kbd.cmds[0].addr = (void *) &((i8042_t *) i8042_kernel)->status;
+	i8042_kbd.cmds[3].addr = (void *) &((i8042_t *) i8042_kernel)->data;
+	ipc_register_irq(sysinfo_value("i8042.inr_a"), device_assign_devno(), 0, &i8042_kbd);
+	ipc_register_irq(sysinfo_value("i8042.inr_b"), device_assign_devno(), 0, &i8042_kbd);
+
+	pio_write_8(&i8042->status, i8042_CMD_WRITE_CMDB);
+	wait_ready();
+	pio_write_8(&i8042->data, i8042_KBD_IE | i8042_KBD_TRANSLATE |
+	    i8042_AUX_IE);
+	wait_ready();
+
+	return 0;
+}
+
+/** Character device connection handler */
+static void i8042_connection(ipc_callid_t iid, ipc_call_t *icall)
+{
+	ipc_callid_t callid;
+	ipc_call_t call;
+	ipcarg_t method;
+	dev_handle_t dh;
+	int retval;
+	int dev_id, i;
+
+	printf(NAME ": connection handler\n");
+
+	/* Get the device handle. */
+	dh = IPC_GET_ARG1(*icall);
+
+	/* Determine which disk device is the client connecting to. */
+	dev_id = -1;
+	for (i = 0; i < MAX_DEVS; i++) {
+		if (i8042_port[i].dev_handle == dh)
+			dev_id = i;
+	}
+
+	if (dev_id < 0) {
+		ipc_answer_0(iid, EINVAL);
+		return;
+	}
+
+	/* Answer the IPC_M_CONNECT_ME_TO call. */
+	ipc_answer_0(iid, EOK);
+
+	printf(NAME ": accepted connection\n");
+
+	while (1) {
+		callid = async_get_call(&call);
+		method = IPC_GET_METHOD(call);
+		switch (method) {
+		case IPC_M_PHONE_HUNGUP:
+			/* The other side has hung up. */
+			ipc_answer_0(callid, EOK);
+			return;
+		case IPC_M_CONNECT_TO_ME:
+			printf(NAME ": creating callback connection\n");
+			if (i8042_port[dev_id].client_phone != -1) {
+				retval = ELIMIT;
+				break;
+			}
+			i8042_port[dev_id].client_phone = IPC_GET_ARG5(call);
+			retval = 0;
+			break;
+		case IPC_FIRST_USER_METHOD:
+			printf(NAME ": write %d to devid %d\n",
+			    IPC_GET_ARG1(call), dev_id);
+			i8042_port_write(dev_id, IPC_GET_ARG1(call));
+			retval = 0;
+			break;
+		default:
+			retval = EINVAL;
+			break;
+		}
+		ipc_answer_0(callid, retval);
+	}
+}
+
+void i8042_port_write(int devid, uint8_t data)
+{
+	if (devid == DEVID_AUX) {
+		pio_write_8(&i8042->status, i8042_CMD_WRITE_AUX);
+		wait_ready();
+	}
+	pio_write_8(&i8042->data, data);
+	wait_ready();
+}
+
+static void i8042_irq_handler(ipc_callid_t iid, ipc_call_t *call)
+{
+	int status, data;
+	int devid;
+
+	status = IPC_GET_ARG1(*call);
+	data = IPC_GET_ARG2(*call);
+
+	if ((status & i8042_AUX_DATA)) {
+		devid = DEVID_AUX;
+	} else {
+		devid = DEVID_PRI;
+	}
+
+	if (i8042_port[devid].client_phone != -1) {
+		async_msg_1(i8042_port[devid].client_phone,
+		    IPC_FIRST_USER_METHOD, data);
+	}
+}
+
+/**
+ * @}
+ */
Index: uspace/srv/hw/char/i8042/i8042.h
===================================================================
--- uspace/srv/hw/char/i8042/i8042.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/char/i8042/i8042.h	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2006 Josef Cejka
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup kbd_port
+ * @ingroup  kbd
+ * @{
+ */
+
+/** @file
+ * @brief i8042 port driver.
+ */
+
+#ifndef i8042_H_
+#define i8042_H_
+
+#include <libarch/ddi.h>
+#include <libarch/types.h>
+
+/** i8042 HW I/O interface */
+struct i8042 {
+	ioport8_t data;
+	uint8_t pad[3];
+	ioport8_t status;
+} __attribute__ ((packed));
+typedef struct i8042 i8042_t;
+
+/** Softstate structure, one for each serial port (primary and aux). */
+typedef struct {
+	dev_handle_t dev_handle;
+	int client_phone;
+} i8042_port_t;
+
+#endif
+
+/**
+ * @}
+ */ 
Index: uspace/srv/hw/cir/fhc/Makefile
===================================================================
--- uspace/srv/hw/cir/fhc/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/cir/fhc/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,40 @@
+#
+# Copyright (c) 2005 Martin Decky
+# Copyright (c) 2007 Jakub Jermar
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+include Makefile.common
+
+.PHONY: all clean
+
+all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
+	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
+
+clean:
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
+	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/srv/hw/cir/fhc/Makefile.build
===================================================================
--- uspace/srv/hw/cir/fhc/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/cir/fhc/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,64 @@
+#
+# Copyright (c) 2005 Martin Decky
+# Copyright (c) 2007 Jakub Jermar
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+## Setup toolchain
+#
+
+include Makefile.common
+include $(LIBC_PREFIX)/Makefile.toolchain
+
+## Sources
+#
+
+SOURCES = \
+	fhc.c
+
+OBJECTS := $(addsuffix .o,$(basename $(SOURCES)))
+
+.PHONY: all
+
+all: $(OUTPUT) $(OUTPUT).disasm
+
+-include $(DEPEND)
+
+$(OUTPUT).disasm: $(OUTPUT)
+	$(OBJDUMP) -d $< > $@
+
+$(OUTPUT): $(OBJECTS) $(LIBS)
+	$(LD) -T $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
+
+%.o: %.c $(DEPEND)
+	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
+
+$(DEPEND):
+	makedepend -f - -- $(DEPEND_DEFS) $(CFLAGS) -- $(SOURCES) > $@ 2> /dev/null
+	-[ -f $(DEPEND_PREV) ] && diff -q $(DEPEND_PREV) $@ && mv -f $(DEPEND_PREV) $@
Index: uspace/srv/hw/cir/fhc/Makefile.common
===================================================================
--- uspace/srv/hw/cir/fhc/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/cir/fhc/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,40 @@
+#
+# Copyright (c) 2005 Martin Decky
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+
+## Common names
+#
+
+LIBC_PREFIX = ../../../../lib/libc
+SOFTINT_PREFIX = ../../../../lib/softint
+LIBS = $(LIBC_PREFIX)/libc.a
+
+DEPEND = Makefile.depend
+DEPEND_PREV = $(DEPEND).prev
+JOB = fhc.job
+OUTPUT = fhc
Index: uspace/srv/hw/cir/fhc/fhc.c
===================================================================
--- uspace/srv/hw/cir/fhc/fhc.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/cir/fhc/fhc.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,157 @@
+/*
+ * Copyright (c) 2009 Jakub Jermar
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup fhc
+ * @{
+ */ 
+
+/**
+ * @file	fhc.c
+ * @brief	FHC bus controller driver.
+ */
+
+#include <ipc/ipc.h>
+#include <ipc/services.h>
+#include <ipc/bus.h>
+#include <ipc/ns.h>
+#include <sysinfo.h>
+#include <as.h>
+#include <ddi.h>
+#include <align.h>
+#include <bool.h>
+#include <errno.h>
+#include <async.h>
+#include <align.h>
+#include <async.h>
+#include <stdio.h>
+#include <ipc/devmap.h>
+
+#define NAME "fhc"
+
+#define FHC_UART_INR	0x39	
+
+#define FHC_UART_IMAP	0x0
+#define FHC_UART_ICLR	0x4
+
+static void *fhc_uart_phys;
+static volatile uint32_t *fhc_uart_virt;
+static size_t fhc_uart_size;
+
+/** Handle one connection to fhc.
+ *
+ * @param iid		Hash of the request that opened the connection.
+ * @param icall		Call data of the request that opened the connection.
+ */
+static void fhc_connection(ipc_callid_t iid, ipc_call_t *icall)
+{
+	ipc_callid_t callid;
+	ipc_call_t call;
+
+	/*
+	 * Answer the first IPC_M_CONNECT_ME_TO call.
+	 */
+	ipc_answer_0(iid, EOK);
+
+	while (1) {
+		int inr;
+	
+		callid = async_get_call(&call);
+		switch (IPC_GET_METHOD(call)) {
+		case BUS_CLEAR_INTERRUPT:
+			inr = IPC_GET_ARG1(call);
+			switch (inr) {
+			case FHC_UART_INR:
+				fhc_uart_virt[FHC_UART_ICLR] = 0;
+				ipc_answer_0(callid, EOK);
+				break;
+			default:
+				ipc_answer_0(callid, ENOTSUP);
+				break;
+			}
+			break;
+		default:
+			ipc_answer_0(callid, EINVAL);
+			break;
+		}
+	}
+}
+
+/** Initialize the FHC driver.
+ *
+ * So far, the driver heavily depends on information provided by the kernel via
+ * sysinfo. In the future, there should be a standalone FHC driver.
+ */
+static bool fhc_init(void)
+{
+	ipcarg_t phonead;
+
+	fhc_uart_size = sysinfo_value("fhc.uart.size");
+	fhc_uart_phys = (void *) sysinfo_value("fhc.uart.physical");
+	
+	if (!fhc_uart_size) {
+		printf(NAME ": no FHC UART registers found\n");
+		return false;
+	}
+
+	fhc_uart_virt = as_get_mappable_page(fhc_uart_size);
+	
+	int flags = AS_AREA_READ | AS_AREA_WRITE;
+	int retval = physmem_map(fhc_uart_phys, (void *) fhc_uart_virt,
+	    ALIGN_UP(fhc_uart_size, PAGE_SIZE) >> PAGE_WIDTH, flags);
+	
+	if (retval < 0) {
+		printf(NAME ": Error mapping FHC UART registers\n");
+		return false;
+	}
+	
+	printf(NAME ": FHC UART registers at %p, %d bytes\n", fhc_uart_phys,
+	    fhc_uart_size);
+
+	async_set_client_connection(fhc_connection);
+	ipc_connect_to_me(PHONE_NS, SERVICE_FHC, 0, 0, &phonead);
+	
+	return true;
+}
+
+int main(int argc, char **argv)
+{
+	printf(NAME ": HelenOS FHC bus controller driver\n");
+	
+	if (!fhc_init())
+		return -1;
+	
+	printf(NAME ": Accepting connections\n");
+	async_manager();
+
+	/* Never reached */
+	return 0;
+}
+
+/**
+ * @}
+ */ 
Index: uspace/srv/hw/cir/obio/Makefile
===================================================================
--- uspace/srv/hw/cir/obio/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/cir/obio/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,40 @@
+#
+# Copyright (c) 2005 Martin Decky
+# Copyright (c) 2007 Jakub Jermar
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+include Makefile.common
+
+.PHONY: all clean
+
+all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
+	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
+
+clean:
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
+	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/srv/hw/cir/obio/Makefile.build
===================================================================
--- uspace/srv/hw/cir/obio/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/cir/obio/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,64 @@
+#
+# Copyright (c) 2005 Martin Decky
+# Copyright (c) 2007 Jakub Jermar
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+## Setup toolchain
+#
+
+include Makefile.common
+include $(LIBC_PREFIX)/Makefile.toolchain
+
+## Sources
+#
+
+SOURCES = \
+	obio.c
+
+OBJECTS := $(addsuffix .o,$(basename $(SOURCES)))
+
+.PHONY: all
+
+all: $(OUTPUT) $(OUTPUT).disasm
+
+-include $(DEPEND)
+
+$(OUTPUT).disasm: $(OUTPUT)
+	$(OBJDUMP) -d $< > $@
+
+$(OUTPUT): $(OBJECTS) $(LIBS)
+	$(LD) -T $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
+
+%.o: %.c $(DEPEND)
+	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
+
+$(DEPEND):
+	makedepend -f - -- $(DEPEND_DEFS) $(CFLAGS) -- $(SOURCES) > $@ 2> /dev/null
+	-[ -f $(DEPEND_PREV) ] && diff -q $(DEPEND_PREV) $@ && mv -f $(DEPEND_PREV) $@
Index: uspace/srv/hw/cir/obio/Makefile.common
===================================================================
--- uspace/srv/hw/cir/obio/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/cir/obio/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,40 @@
+#
+# Copyright (c) 2005 Martin Decky
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - 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.
+# - 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.
+#
+
+
+## Common names
+#
+
+LIBC_PREFIX = ../../../../lib/libc
+SOFTINT_PREFIX = ../../../../lib/softint
+LIBS = $(LIBC_PREFIX)/libc.a
+
+DEPEND = Makefile.depend
+DEPEND_PREV = $(DEPEND).prev
+JOB = obio.job
+OUTPUT = obio
Index: uspace/srv/hw/cir/obio/obio.c
===================================================================
--- uspace/srv/hw/cir/obio/obio.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
+++ uspace/srv/hw/cir/obio/obio.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -0,0 +1,158 @@
+/*
+ * Copyright (c) 2009 Jakub Jermar
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - 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.
+ * - 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.
+ */
+
+/** @addtogroup obio 
+ * @{
+ */ 
+
+/**
+ * @file	obio.c
+ * @brief	OBIO driver.
+ *
+ * OBIO is a short for on-board I/O. On UltraSPARC IIi and systems with U2P,
+ * there is a piece of the root PCI bus controller address space, which
+ * contains interrupt mapping and clear registers for all on-board devices.
+ * Although UltraSPARC IIi and U2P are different in general, these registers can
+ * be found at the same addresses.
+ */
+
+#include <ipc/ipc.h>
+#include <ipc/services.h>
+#include <ipc/bus.h>
+#include <ipc/ns.h>
+#include <sysinfo.h>
+#include <as.h>
+#include <ddi.h>
+#include <align.h>
+#include <bool.h>
+#include <errno.h>
+#include <async.h>
+#include <align.h>
+#include <async.h>
+#include <stdio.h>
+#include <ipc/devmap.h>
+
+#define NAME "obio"
+
+#define OBIO_SIZE	0x1898	
+
+#define OBIO_IMR_BASE	0x200
+#define OBIO_IMR(ino)	(OBIO_IMR_BASE + ((ino) & INO_MASK))
+
+#define OBIO_CIR_BASE	0x300
+#define OBIO_CIR(ino)	(OBIO_CIR_BASE + ((ino) & INO_MASK))
+
+#define INO_MASK	0x1f
+
+static void *base_phys;
+static volatile uint64_t *base_virt;
+
+/** Handle one connection to obio.
+ *
+ * @param iid		Hash of the request that opened the connection.
+ * @param icall		Call data of the request that opened the connection.
+ */
+static void obio_connection(ipc_callid_t iid, ipc_call_t *icall)
+{
+	ipc_callid_t callid;
+	ipc_call_t call;
+
+	/*
+	 * Answer the first IPC_M_CONNECT_ME_TO call.
+	 */
+	ipc_answer_0(iid, EOK);
+
+	while (1) {
+		int inr;
+	
+		callid = async_get_call(&call);
+		switch (IPC_GET_METHOD(call)) {
+		case BUS_CLEAR_INTERRUPT:
+			inr = IPC_GET_ARG1(call);
+			base_virt[OBIO_CIR(inr & INO_MASK)] = 0;
+			ipc_answer_0(callid, EOK);
+			break;
+		default:
+			ipc_answer_0(callid, EINVAL);
+			break;
+		}
+	}
+}
+
+/** Initialize the OBIO driver.
+ *
+ * So far, the driver heavily depends on information provided by the kernel via
+ * sysinfo. In the future, there should be a standalone OBIO driver.
+ */
+static bool obio_init(void)
+{
+	ipcarg_t phonead;
+
+	base_phys = (void *) sysinfo_value("obio.base.physical");
+	
+	if (!base_phys) {
+		printf(NAME ": no OBIO registers found\n");
+		return false;
+	}
+
+	base_virt = as_get_mappable_page(OBIO_SIZE);
+	
+	int flags = AS_AREA_READ | AS_AREA_WRITE;
+	int retval = physmem_map(base_phys, (void *) base_virt,
+	    ALIGN_UP(OBIO_SIZE, PAGE_SIZE) >> PAGE_WIDTH, flags);
+	
+	if (retval < 0) {
+		printf(NAME ": Error mapping OBIO registers\n");
+		return false;
+	}
+	
+	printf(NAME ": OBIO registers with base at %p\n", base_phys);
+
+	async_set_client_connection(obio_connection);
+	ipc_connect_to_me(PHONE_NS, SERVICE_OBIO, 0, 0, &phonead);
+	
+	return true;
+}
+
+int main(int argc, char **argv)
+{
+	printf(NAME ": HelenOS OBIO driver\n");
+	
+	if (!obio_init())
+		return -1;
+	
+	printf(NAME ": Accepting connections\n");
+	async_manager();
+
+	/* Never reached */
+	return 0;
+}
+
+/**
+ * @}
+ */ 
Index: uspace/srv/kbd/Makefile
===================================================================
--- uspace/srv/kbd/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,40 +1,0 @@
-#
-# Copyright (c) 2005 Martin Decky
-# Copyright (c) 2007 Jakub Jermar
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# - Redistributions of source code must retain the above copyright
-#   notice, this list of conditions and the following disclaimer.
-# - 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.
-# - 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.
-#
-
-include Makefile.common
-
-.PHONY: all clean
-
-all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
-	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
-
-clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
-	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/srv/kbd/Makefile.build
===================================================================
--- uspace/srv/kbd/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,164 +1,0 @@
-#
-# Copyright (c) 2005 Martin Decky
-# Copyright (c) 2007 Jakub Jermar
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# - Redistributions of source code must retain the above copyright
-#   notice, this list of conditions and the following disclaimer.
-# - 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.
-# - 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.
-#
-
-## Setup toolchain
-#
-
-include Makefile.common
-include $(LIBC_PREFIX)/Makefile.toolchain
-
-CFLAGS += -Iinclude
-
-## Sources
-#
-
-SOURCES = \
-	generic/kbd.c \
-	genarch/gsp.c \
-	genarch/stroke.c \
-	layout/cz.c \
-	layout/us_qwerty.c \
-	layout/us_dvorak.c
-
-ifeq ($(UARCH),amd64)
-	SOURCES += \
-		port/i8042.c \
-		ctl/pc.c
-endif
-
-ifeq ($(UARCH),arm32)
-	ifeq ($(MACHINE),testarm)
-		SOURCES += \
-			port/gxemul.c
-		
-		ifeq ($(CONFIG_FB),y)
-			SOURCES += \
-				ctl/gxe_fb.c
-		else
-			SOURCES += \
-				ctl/stty.c
-		endif
-	endif
-	ifeq ($(MACHINE),integratorcp)
-		SOURCES += \
-			port/pl050.c \
-			ctl/pl050.c
-	endif
-endif
-
-ifeq ($(UARCH),ia32)
-	SOURCES += \
-		port/i8042.c \
-		ctl/pc.c
-endif
-
-ifeq ($(MACHINE),i460GX)
-	SOURCES += \
-		port/i8042.c \
-		ctl/pc.c
-endif
-
-ifeq ($(MACHINE),ski)
-	SOURCES += \
-		port/ski.c \
-		ctl/stty.c
-endif
-
-ifeq ($(MACHINE),msim)
-	SOURCES += \
-		port/msim.c \
-		ctl/stty.c
-endif
-
-ifeq ($(MACHINE),lgxemul)
-	SOURCES += \
-		port/gxemul.c
-	
-	ifeq ($(CONFIG_FB),y)
-		SOURCES += \
-			ctl/gxe_fb.c
-	else
-		SOURCES += \
-			ctl/stty.c
-	endif
-endif
-
-ifeq ($(MACHINE),bgxemul)
-	SOURCES += \
-		port/gxemul.c
-	
-	ifeq ($(CONFIG_FB),y)
-		SOURCES += \
-			ctl/gxe_fb.c
-	else
-		SOURCES += \
-			ctl/stty.c
-	endif
-endif
-
-ifeq ($(UARCH),ppc32)
-	SOURCES += \
-		port/dummy.c \
-		ctl/stty.c
-endif
-
-ifeq ($(UARCH),sparc64)
-	ifeq ($(MACHINE),serengeti)
-		SOURCES += \
-			port/sgcn.c \
-			ctl/stty.c
-	else
-		SOURCES += \
-			port/sun.c \
-			port/z8530.c \
-			port/ns16550.c \
-			ctl/sun.c
-	endif
-endif
-
-OBJECTS := $(addsuffix .o,$(basename $(SOURCES)))
-
-.PHONY: all
-
-all: $(OUTPUT) $(OUTPUT).disasm
-
--include $(DEPEND)
-
-$(OUTPUT).disasm: $(OUTPUT)
-	$(OBJDUMP) -d $< > $@
-
-$(OUTPUT): $(OBJECTS) $(LIBS)
-	$(LD) -T $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
-
-%.o: %.c $(DEPEND)
-	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
-
-$(DEPEND):
-	makedepend -f - -- $(DEPEND_DEFS) $(CFLAGS) -- $(SOURCES) > $@ 2> /dev/null
-	-[ -f $(DEPEND_PREV) ] && diff -q $(DEPEND_PREV) $@ && mv -f $(DEPEND_PREV) $@
Index: uspace/srv/kbd/Makefile.common
===================================================================
--- uspace/srv/kbd/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,39 +1,0 @@
-#
-# Copyright (c) 2005 Martin Decky
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# - Redistributions of source code must retain the above copyright
-#   notice, this list of conditions and the following disclaimer.
-# - 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.
-# - 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.
-#
-
-
-## Common names
-#
-
-LIBC_PREFIX = ../../lib/libc
-SOFTINT_PREFIX = ../../lib/softint
-LIBS = $(LIBC_PREFIX)/libc.a
-
-DEPEND = Makefile.depend
-DEPEND_PREV = $(DEPEND).prev
-OUTPUT = kbd
Index: uspace/srv/kbd/ctl/gxe_fb.c
===================================================================
--- uspace/srv/kbd/ctl/gxe_fb.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,234 +1,0 @@
-/*
- * Copyright (c) 2009 Jiri Svoboda
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup kbd_ctl
- * @ingroup kbd
- * @{
- */
-/**
- * @file
- * @brief	GXEmul framebuffer-mode keyboard controller driver.
- */
-
-#include <kbd.h>
-#include <io/console.h>
-#include <io/keycode.h>
-#include <kbd_ctl.h>
-#include <gsp.h>
-#include <stroke.h>
-
-/** Scancode parser */
-static gsp_t sp;
-
-/** Current parser state */
-static int ds;
-
-#include <stdio.h>
-
-int seq_defs[] = {
-	/* Not shifted */
-
-	0,	KC_BACKTICK,	0x60, GSP_END,
-
-	0,	KC_1,		0x31, GSP_END,
-	0,	KC_2,		0x32, GSP_END,
-	0,	KC_3,		0x33, GSP_END,
-	0,	KC_4,		0x34, GSP_END,
-	0,	KC_5,		0x35, GSP_END,
-	0,	KC_6,		0x36, GSP_END,
-	0,	KC_7,		0x37, GSP_END,
-	0,	KC_8,		0x38, GSP_END,
-	0,	KC_9,		0x39, GSP_END,
-	0,	KC_0,		0x30, GSP_END,
-
-	0,	KC_MINUS,	0x2d, GSP_END,
-	0,	KC_EQUALS,	0x3d, GSP_END,
-	0,	KC_BACKSPACE,	0x08, GSP_END,
-
-	0,	KC_TAB,		0x09, GSP_END,
-
-	0,	KC_Q,		0x71, GSP_END,
-	0,	KC_W,		0x77, GSP_END,
-	0,	KC_E,		0x65, GSP_END,
-	0,	KC_R,		0x72, GSP_END,
-	0,	KC_T,		0x74, GSP_END,
-	0,	KC_Y,		0x79, GSP_END,
-	0,	KC_U,		0x75, GSP_END,
-	0,	KC_I,		0x69, GSP_END,
-	0,	KC_O,		0x6f, GSP_END,
-	0,	KC_P,		0x70, GSP_END,
-
-	0,	KC_LBRACKET,	0x5b, GSP_END,
-	0,	KC_RBRACKET,	0x5d, GSP_END,
-
-	0,	KC_A,		0x61, GSP_END,
-	0,	KC_S,		0x73, GSP_END,
-	0,	KC_D,		0x64, GSP_END,
-	0,	KC_F,		0x66, GSP_END,
-	0,	KC_G,		0x67, GSP_END,
-	0,	KC_H,		0x68, GSP_END,
-	0,	KC_J,		0x6a, GSP_END,
-	0,	KC_K,		0x6b, GSP_END,
-	0,	KC_L,		0x6c, GSP_END,
-
-	0,	KC_SEMICOLON,	0x3b, GSP_END,
-	0,	KC_QUOTE,	0x27, GSP_END,
-	0,	KC_BACKSLASH,	0x5c, GSP_END,
-
-	0,	KC_Z,		0x7a, GSP_END,
-	0,	KC_X,		0x78, GSP_END,
-	0,	KC_C,		0x63, GSP_END,
-	0,	KC_V,		0x76, GSP_END,
-	0,	KC_B,		0x62, GSP_END,
-	0,	KC_N,		0x6e, GSP_END,
-	0,	KC_M,		0x6d, GSP_END,
-
-	0,	KC_COMMA,	0x2c, GSP_END,
-	0,	KC_PERIOD,	0x2e, GSP_END,
-	0,	KC_SLASH,	0x2f, GSP_END,
-
-	/* Shifted */
-
-	KM_SHIFT,	KC_BACKTICK,	0x7e, GSP_END,
-
-	KM_SHIFT,	KC_1,		0x21, GSP_END,
-	KM_SHIFT,	KC_2,		0x40, GSP_END,
-	KM_SHIFT,	KC_3,		0x23, GSP_END,
-	KM_SHIFT,	KC_4,		0x24, GSP_END,
-	KM_SHIFT,	KC_5,		0x25, GSP_END,
-	KM_SHIFT,	KC_6,		0x5e, GSP_END,
-	KM_SHIFT,	KC_7,		0x26, GSP_END,
-	KM_SHIFT,	KC_8,		0x2a, GSP_END,
-	KM_SHIFT,	KC_9,		0x28, GSP_END,
-	KM_SHIFT,	KC_0,		0x29, GSP_END,
-
-	KM_SHIFT,	KC_MINUS,	0x5f, GSP_END,
-	KM_SHIFT,	KC_EQUALS,	0x2b, GSP_END,
-
-	KM_SHIFT,	KC_Q,		0x51, GSP_END,
-	KM_SHIFT,	KC_W,		0x57, GSP_END,
-	KM_SHIFT,	KC_E,		0x45, GSP_END,
-	KM_SHIFT,	KC_R,		0x52, GSP_END,
-	KM_SHIFT,	KC_T,		0x54, GSP_END,
-	KM_SHIFT,	KC_Y,		0x59, GSP_END,
-	KM_SHIFT,	KC_U,		0x55, GSP_END,
-	KM_SHIFT,	KC_I,		0x49, GSP_END,
-	KM_SHIFT,	KC_O,		0x4f, GSP_END,
-	KM_SHIFT,	KC_P,		0x50, GSP_END,
-
-	KM_SHIFT,	KC_LBRACKET,	0x7b, GSP_END,
-	KM_SHIFT,	KC_RBRACKET,	0x7d, GSP_END,
-
-	KM_SHIFT,	KC_A,		0x41, GSP_END,
-	KM_SHIFT,	KC_S,		0x53, GSP_END,
-	KM_SHIFT,	KC_D,		0x44, GSP_END,
-	KM_SHIFT,	KC_F,		0x46, GSP_END,
-	KM_SHIFT,	KC_G,		0x47, GSP_END,
-	KM_SHIFT,	KC_H,		0x48, GSP_END,
-	KM_SHIFT,	KC_J,		0x4a, GSP_END,
-	KM_SHIFT,	KC_K,		0x4b, GSP_END,
-	KM_SHIFT,	KC_L,		0x4c, GSP_END,
-
-	KM_SHIFT,	KC_SEMICOLON,	0x3a, GSP_END,
-	KM_SHIFT,	KC_QUOTE,	0x22, GSP_END,
-	KM_SHIFT,	KC_BACKSLASH,	0x7c, GSP_END,
-
-	KM_SHIFT,	KC_Z,		0x5a, GSP_END,
-	KM_SHIFT,	KC_X,		0x58, GSP_END,
-	KM_SHIFT,	KC_C,		0x43, GSP_END,
-	KM_SHIFT,	KC_V,		0x56, GSP_END,
-	KM_SHIFT,	KC_B,		0x42, GSP_END,
-	KM_SHIFT,	KC_N,		0x4e, GSP_END,
-	KM_SHIFT,	KC_M,		0x4d, GSP_END,
-
-	KM_SHIFT,	KC_COMMA,	0x3c, GSP_END,
-	KM_SHIFT,	KC_PERIOD,	0x3e, GSP_END,
-	KM_SHIFT,	KC_SLASH,	0x3f, GSP_END,
-
-	/* ... */
-
-	0,	KC_SPACE,	0x20, GSP_END,
-	0,	KC_ENTER,	0x0a, GSP_END,
-	0,	KC_ENTER,	0x0d, GSP_END,
-
-	0,	KC_ESCAPE,	0x1b, 0x1b, GSP_END,
-
-	0,	KC_F1,		0x1b, 0x5b, 0x4f, 0x50, GSP_END,
-	0,	KC_F2,		0x1b, 0x5b, 0x4f, 0x51, GSP_END,
-	0,	KC_F3,		0x1b, 0x5b, 0x4f, 0x52, GSP_END,
-	0,	KC_F4,		0x1b, 0x5b, 0x4f, 0x53, GSP_END,
-	0,	KC_F5,		0x1b, 0x5b, 0x31, 0x35, GSP_END,
-	0,	KC_F6,		0x1b, 0x5b, 0x31, 0x37, GSP_END,
-	0,	KC_F7,		0x1b, 0x5b, 0x31, 0x38, GSP_END,
-	0,	KC_F8,		0x1b, 0x5b, 0x31, 0x39, GSP_END,
-	0,	KC_F9,		0x1b, 0x5b, 0x32, 0x38, GSP_END,
-	0,	KC_F10,		0x1b, 0x5b, 0x32, 0x39, GSP_END,
-	0,	KC_F11,		0x1b, 0x5b, 0x32, 0x33, GSP_END,
-	0,	KC_F12,		0x1b, 0x5b, 0x32, 0x34, GSP_END,
-
-	0,	KC_INSERT,	0x1b, 0x5b, 0x32, 0x7e, GSP_END,
-	0,	KC_HOME,	0x1b, 0x5b, 0x48, GSP_END,
-	0,	KC_PAGE_UP,	0x1b, 0x5b, 0x35, 0x7e, GSP_END,
-	0,	KC_DELETE,	0x1b, 0x5b, 0x33, 0x7e, GSP_END,
-	0,	KC_END,		0x1b, 0x5b, 0x46, GSP_END,
-	0,	KC_PAGE_DOWN,	0x1b, 0x5b, 0x36, 0x7e, GSP_END,
-
-	0,	KC_UP,		0x1b, 0x5b, 0x41, GSP_END,
-	0,	KC_LEFT,	0x1b, 0x5b, 0x44, GSP_END,
-	0,	KC_DOWN,	0x1b, 0x5b, 0x42, GSP_END,
-	0,	KC_RIGHT,	0x1b, 0x5b, 0x43, GSP_END,
-
-	0,	0
-};
-
-int kbd_ctl_init(void)
-{
-	ds = 0;
-
-	gsp_init(&sp);
-	return gsp_insert_defs(&sp, seq_defs);
-}
-
-void kbd_ctl_parse_scancode(int scancode)
-{
-	unsigned mods, key;
-
-	ds = gsp_step(&sp, ds, scancode, &mods, &key);
-	if (key != 0) {
-		stroke_sim(mods, key);
-	}
-}
-
-void kbd_ctl_set_ind(unsigned mods)
-{
-	(void) mods;
-}
-
-/**
- * @}
- */ 
Index: uspace/srv/kbd/ctl/pc.c
===================================================================
--- uspace/srv/kbd/ctl/pc.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,273 +1,0 @@
-/*
- * Copyright (c) 2009 Jiri Svoboda
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup kbd_ctl
- * @ingroup kbd
- * @{
- */
-/**
- * @file
- * @brief PC keyboard controller driver.
- */
-
-#include <kbd.h>
-#include <io/console.h>
-#include <io/keycode.h>
-#include <kbd_ctl.h>
-#include <kbd_port.h>
-#include <gsp.h>
-
-enum dec_state {
-	ds_s,
-	ds_e
-};
-
-enum special_code {
-	SC_ACK = 0xfa,
-	SC_NAK = 0xfe
-};
-
-enum lock_ind_bits {
-	LI_SCROLL	= 0x01,
-	LI_NUM		= 0x02,
-	LI_CAPS		= 0x04
-};
-
-enum kbd_command {
-	KBD_CMD_SET_LEDS = 0xed
-};
-
-static enum dec_state ds;
-
-static int scanmap_simple[] = {
-
-	[0x29] = KC_BACKTICK,
-
-	[0x02] = KC_1,
-	[0x03] = KC_2,
-	[0x04] = KC_3,
-	[0x05] = KC_4,
-	[0x06] = KC_5,
-	[0x07] = KC_6,
-	[0x08] = KC_7,
-	[0x09] = KC_8,
-	[0x0a] = KC_9,
-	[0x0b] = KC_0,
-
-	[0x0c] = KC_MINUS,
-	[0x0d] = KC_EQUALS,
-	[0x0e] = KC_BACKSPACE,
-
-	[0x0f] = KC_TAB,
-
-	[0x10] = KC_Q,
-	[0x11] = KC_W,
-	[0x12] = KC_E,
-	[0x13] = KC_R,
-	[0x14] = KC_T,
-	[0x15] = KC_Y,
-	[0x16] = KC_U,
-	[0x17] = KC_I,
-	[0x18] = KC_O,
-	[0x19] = KC_P,
-
-	[0x1a] = KC_LBRACKET,
-	[0x1b] = KC_RBRACKET,
-
-	[0x3a] = KC_CAPS_LOCK,
-
-	[0x1e] = KC_A,
-	[0x1f] = KC_S,
-	[0x20] = KC_D,
-	[0x21] = KC_F,
-	[0x22] = KC_G,
-	[0x23] = KC_H,
-	[0x24] = KC_J,
-	[0x25] = KC_K,
-	[0x26] = KC_L,
-
-	[0x27] = KC_SEMICOLON,
-	[0x28] = KC_QUOTE,
-	[0x2b] = KC_BACKSLASH,
-
-	[0x2a] = KC_LSHIFT,
-
-	[0x2c] = KC_Z,
-	[0x2d] = KC_X,
-	[0x2e] = KC_C,
-	[0x2f] = KC_V,
-	[0x30] = KC_B,
-	[0x31] = KC_N,
-	[0x32] = KC_M,
-
-	[0x33] = KC_COMMA,
-	[0x34] = KC_PERIOD,
-	[0x35] = KC_SLASH,
-
-	[0x36] = KC_RSHIFT,
-
-	[0x1d] = KC_LCTRL,
-	[0x38] = KC_LALT,
-	[0x39] = KC_SPACE,
-
-	[0x01] = KC_ESCAPE,
-
-	[0x3b] = KC_F1,
-	[0x3c] = KC_F2,
-	[0x3d] = KC_F3,
-	[0x3e] = KC_F4,
-	[0x3f] = KC_F5,
-	[0x40] = KC_F6,
-	[0x41] = KC_F7,
-
-	[0x42] = KC_F8,
-	[0x43] = KC_F9,
-	[0x44] = KC_F10,
-
-	[0x57] = KC_F11,
-	[0x58] = KC_F12,
-
-	[0x46] = KC_SCROLL_LOCK,
-
-	[0x1c] = KC_ENTER,
-
-	[0x45] = KC_NUM_LOCK,
-	[0x37] = KC_NTIMES,
-	[0x4a] = KC_NMINUS,
-	[0x4e] = KC_NPLUS,
-	[0x47] = KC_N7,
-	[0x48] = KC_N8,
-	[0x49] = KC_N9,
-	[0x4b] = KC_N4,
-	[0x4c] = KC_N5,
-	[0x4d] = KC_N6,
-	[0x4f] = KC_N1,
-	[0x50] = KC_N2,
-	[0x51] = KC_N3,
-	[0x52] = KC_N0,
-	[0x53] = KC_NPERIOD
-};
-
-static int scanmap_e0[] = {
-	[0x38] = KC_RALT,
-	[0x1d] = KC_RSHIFT,
-
-	[0x37] = KC_PRTSCR,
-
-	[0x52] = KC_INSERT,
-	[0x47] = KC_HOME,
-	[0x49] = KC_PAGE_UP,
-
-	[0x53] = KC_DELETE,
-	[0x4f] = KC_END,
-	[0x51] = KC_PAGE_DOWN,
-
-	[0x48] = KC_UP,
-	[0x4b] = KC_LEFT,
-	[0x50] = KC_DOWN,
-	[0x4d] = KC_RIGHT,
-
-	[0x35] = KC_NSLASH,
-	[0x1c] = KC_NENTER
-};
-
-int kbd_ctl_init(void)
-{
-	ds = ds_s;
-	return 0;
-}
-
-void kbd_ctl_parse_scancode(int scancode)
-{
-	console_ev_type_t type;
-	unsigned int key;
-	int *map;
-	size_t map_length;
-
-	/*
-	 * ACK/NAK are returned as response to us sending a command.
-	 * We are not interested in them.
-	 */
-	if (scancode == SC_ACK || scancode == SC_NAK)
-		return;
-
-	if (scancode == 0xe0) {
-		ds = ds_e;
-		return;
-	}
-
-	switch (ds) {
-	case ds_s:
-		map = scanmap_simple;
-		map_length = sizeof(scanmap_simple) / sizeof(int);
-		break;
-	case ds_e:
-		map = scanmap_e0;
-		map_length = sizeof(scanmap_e0) / sizeof(int);
-		break;
-	default:
-		map = NULL;
-		map_length = 0;
-	}
-
-	ds = ds_s;
-
-	if (scancode & 0x80) {
-		scancode &= ~0x80;
-		type = KEY_RELEASE;
-	} else {
-		type = KEY_PRESS;
-	}
-
-	if ((scancode < 0) || ((size_t) scancode >= map_length))
-		return;
-
-	key = map[scancode];
-	if (key != 0)
-		kbd_push_ev(type, key);
-}
-
-void kbd_ctl_set_ind(unsigned mods)
-{
-	uint8_t b;
-
-	b = 0;
-	if ((mods & KM_CAPS_LOCK) != 0)
-		b = b | LI_CAPS;
-	if ((mods & KM_NUM_LOCK) != 0)
-		b = b | LI_NUM;
-	if ((mods & KM_SCROLL_LOCK) != 0)
-		b = b | LI_SCROLL;
-
-	kbd_port_write(KBD_CMD_SET_LEDS);
-	kbd_port_write(b);
-}
-
-/**
- * @}
- */ 
Index: uspace/srv/kbd/ctl/pl050.c
===================================================================
--- uspace/srv/kbd/ctl/pl050.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,267 +1,0 @@
-/*
- * Copyright (c) 2009 Vineeth Pillai
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup kbd_ctl
- * @ingroup kbd
- * @{
- */
-/**
- * @file
- * @brief PL050 keyboard controller driver.
- */
-
-#include <kbd.h>
-#include <io/console.h>
-#include <io/keycode.h>
-#include <kbd_ctl.h>
-#include <gsp.h>
-#include <stdio.h>
-
-#define PL050_CAPS_SCAN_CODE 0x58
-#define PL050_NUM_SCAN_CODE 0x77
-#define PL050_SCROLL_SCAN_CODE 0x7E
-
-static bool is_lock_key(int);
-enum dec_state {
-	ds_s,
-	ds_e
-};
-
-static enum dec_state ds;
-
-static int scanmap_simple[] = {
-
-	[0x0e] = KC_BACKTICK,
-
-	[0x16] = KC_1,
-	[0x1e] = KC_2,
-	[0x26] = KC_3,
-	[0x25] = KC_4,
-	[0x2e] = KC_5,
-	[0x36] = KC_6,
-	[0x3d] = KC_7,
-	[0x3e] = KC_8,
-	[0x46] = KC_9,
-	[0x45] = KC_0,
-
-	[0x4e] = KC_MINUS,
-	[0x55] = KC_EQUALS,
-	[0x66] = KC_BACKSPACE,
-
-	[0x0d] = KC_TAB,
-
-	[0x15] = KC_Q,
-	[0x1d] = KC_W,
-	[0x24] = KC_E,
-	[0x2d] = KC_R,
-	[0x2c] = KC_T,
-	[0x35] = KC_Y,
-	[0x3c] = KC_U,
-	[0x43] = KC_I,
-	[0x44] = KC_O,
-	[0x4d] = KC_P,
-
-	[0x54] = KC_LBRACKET,
-	[0x5b] = KC_RBRACKET,
-
-	[0x58] = KC_CAPS_LOCK,
-
-	[0x1c] = KC_A,
-	[0x1b] = KC_S,
-	[0x23] = KC_D,
-	[0x2b] = KC_F,
-	[0x34] = KC_G,
-	[0x33] = KC_H,
-	[0x3b] = KC_J,
-	[0x42] = KC_K,
-	[0x4b] = KC_L,
-
-	[0x4c] = KC_SEMICOLON,
-	[0x52] = KC_QUOTE,
-	[0x5d] = KC_BACKSLASH,
-
-	[0x12] = KC_LSHIFT,
-
-	[0x1a] = KC_Z,
-	[0x22] = KC_X,
-	[0x21] = KC_C,
-	[0x2a] = KC_V,
-	[0x32] = KC_B,
-	[0x31] = KC_N,
-	[0x3a] = KC_M,
-
-	[0x41] = KC_COMMA,
-	[0x49] = KC_PERIOD,
-	[0x4a] = KC_SLASH,
-
-	[0x59] = KC_RSHIFT,
-
-	[0x14] = KC_LCTRL,
-	[0x11] = KC_LALT,
-	[0x29] = KC_SPACE,
-
-	[0x76] = KC_ESCAPE,
-
-	[0x05] = KC_F1,
-	[0x06] = KC_F2,
-	[0x04] = KC_F3,
-	[0x0c] = KC_F4,
-	[0x03] = KC_F5,
-	[0x0b] = KC_F6,
-	[0x02] = KC_F7,
-
-	[0x0a] = KC_F8,
-	[0x01] = KC_F9,
-	[0x09] = KC_F10,
-
-	[0x78] = KC_F11,
-	[0x07] = KC_F12,
-
-	[0x60] = KC_SCROLL_LOCK,
-
-	[0x5a] = KC_ENTER,
-
-	[0x77] = KC_NUM_LOCK,
-	[0x7c] = KC_NTIMES,
-	[0x7b] = KC_NMINUS,
-	[0x79] = KC_NPLUS,
-	[0x6c] = KC_N7,
-	[0x75] = KC_N8,
-	[0x7d] = KC_N9,
-	[0x6b] = KC_N4,
-	[0x73] = KC_N5,
-	[0x74] = KC_N6,
-	[0x69] = KC_N1,
-	[0x72] = KC_N2,
-	[0x7a] = KC_N3,
-	[0x70] = KC_N0,
-	[0x71] = KC_NPERIOD
-};
-
-static int scanmap_e0[] = {
-	[0x65] = KC_RALT,
-	[0x59] = KC_RSHIFT,
-
-	[0x64] = KC_PRTSCR,
-
-	[0x70] = KC_INSERT,
-	[0x6c] = KC_HOME,
-	[0x7d] = KC_PAGE_UP,
-
-	[0x71] = KC_DELETE,
-	[0x69] = KC_END,
-	[0x7a] = KC_PAGE_DOWN,
-
-	[0x75] = KC_UP,
-	[0x6b] = KC_LEFT,
-	[0x72] = KC_DOWN,
-	[0x74] = KC_RIGHT,
-
-	[0x4a] = KC_NSLASH,
-	[0x5a] = KC_NENTER
-};
-
-int kbd_ctl_init(void)
-{
-	ds = ds_s;
-	return 0;
-}
-
-void kbd_ctl_parse_scancode(int scancode)
-{
-	static int key_release_flag = 0;
-	static int is_locked = 0;
-	console_ev_type_t type;
-	unsigned int key;
-	int *map;
-	size_t map_length;
-
-	if (scancode == 0xe0) {
-		ds = ds_e;
-		return;
-	}
-
-	switch (ds) {
-	case ds_s:
-		map = scanmap_simple;
-		map_length = sizeof(scanmap_simple) / sizeof(int);
-		break;
-	case ds_e:
-		map = scanmap_e0;
-		map_length = sizeof(scanmap_e0) / sizeof(int);
-		break;
-	default:
-		map = NULL;
-		map_length = 0;
-	}
-
-	ds = ds_s;
-	if (scancode == 0xf0) {
-		key_release_flag = 1;
-		return;
-	} else {
-		if (key_release_flag) {
-			type = KEY_RELEASE;
-			key_release_flag = 0;
-			if (is_lock_key(scancode)) {
-				if (!is_locked) {
-					is_locked = 1;
-				} else {
-					is_locked = 0;
-					return;
-				}
-			}
-		} else {
-			if (is_lock_key(scancode) && is_locked)
-				return;
-			type = KEY_PRESS;
-		}
-	}
-
-	if (scancode < 0)
-		return;
-
-	key = map[scancode];
-	if (key != 0)
-		kbd_push_ev(type, key);
-}
-
-static bool is_lock_key(int sc)
-{
-	return ((sc == PL050_CAPS_SCAN_CODE) || (sc == PL050_NUM_SCAN_CODE) ||
-	    (sc == PL050_SCROLL_SCAN_CODE));
-}
-
-void kbd_ctl_set_ind(unsigned mods)
-{
-	(void) mods;
-}
-
-/**
- * @}
- */ 
Index: uspace/srv/kbd/ctl/stty.c
===================================================================
--- uspace/srv/kbd/ctl/stty.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,233 +1,0 @@
-/*
- * Copyright (c) 2009 Jiri Svoboda
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup kbd_ctl
- * @ingroup kbd
- * @{
- */
-/**
- * @file
- * @brief	Serial TTY-like keyboard controller driver.
- */
-
-#include <kbd.h>
-#include <io/keycode.h>
-#include <kbd_ctl.h>
-#include <gsp.h>
-#include <stroke.h>
-
-/** Scancode parser */
-static gsp_t sp;
-
-/** Current parser state */
-static int ds;
-
-#include <stdio.h>
-
-int seq_defs[] = {
-	/* Not shifted */
-
-	0,	KC_BACKTICK,	0x60, GSP_END,
-
-	0,	KC_1,		0x31, GSP_END,
-	0,	KC_2,		0x32, GSP_END,
-	0,	KC_3,		0x33, GSP_END,
-	0,	KC_4,		0x34, GSP_END,
-	0,	KC_5,		0x35, GSP_END,
-	0,	KC_6,		0x36, GSP_END,
-	0,	KC_7,		0x37, GSP_END,
-	0,	KC_8,		0x38, GSP_END,
-	0,	KC_9,		0x39, GSP_END,
-	0,	KC_0,		0x30, GSP_END,
-
-	0,	KC_MINUS,	0x2d, GSP_END,
-	0,	KC_EQUALS,	0x3d, GSP_END,
-	0,	KC_BACKSPACE,	0x08, GSP_END,
-
-	0,	KC_TAB,		0x09, GSP_END,
-
-	0,	KC_Q,		0x71, GSP_END,
-	0,	KC_W,		0x77, GSP_END,
-	0,	KC_E,		0x65, GSP_END,
-	0,	KC_R,		0x72, GSP_END,
-	0,	KC_T,		0x74, GSP_END,
-	0,	KC_Y,		0x79, GSP_END,
-	0,	KC_U,		0x75, GSP_END,
-	0,	KC_I,		0x69, GSP_END,
-	0,	KC_O,		0x6f, GSP_END,
-	0,	KC_P,		0x70, GSP_END,
-
-	0,	KC_LBRACKET,	0x5b, GSP_END,
-	0,	KC_RBRACKET,	0x5d, GSP_END,
-
-	0,	KC_A,		0x61, GSP_END,
-	0,	KC_S,		0x73, GSP_END,
-	0,	KC_D,		0x64, GSP_END,
-	0,	KC_F,		0x66, GSP_END,
-	0,	KC_G,		0x67, GSP_END,
-	0,	KC_H,		0x68, GSP_END,
-	0,	KC_J,		0x6a, GSP_END,
-	0,	KC_K,		0x6b, GSP_END,
-	0,	KC_L,		0x6c, GSP_END,
-
-	0,	KC_SEMICOLON,	0x3b, GSP_END,
-	0,	KC_QUOTE,	0x27, GSP_END,
-	0,	KC_BACKSLASH,	0x5c, GSP_END,
-
-	0,	KC_Z,		0x7a, GSP_END,
-	0,	KC_X,		0x78, GSP_END,
-	0,	KC_C,		0x63, GSP_END,
-	0,	KC_V,		0x76, GSP_END,
-	0,	KC_B,		0x62, GSP_END,
-	0,	KC_N,		0x6e, GSP_END,
-	0,	KC_M,		0x6d, GSP_END,
-
-	0,	KC_COMMA,	0x2c, GSP_END,
-	0,	KC_PERIOD,	0x2e, GSP_END,
-	0,	KC_SLASH,	0x2f, GSP_END,
-
-	/* Shifted */
-
-	KM_SHIFT,	KC_BACKTICK,	0x7e, GSP_END,
-
-	KM_SHIFT,	KC_1,		0x21, GSP_END,
-	KM_SHIFT,	KC_2,		0x40, GSP_END,
-	KM_SHIFT,	KC_3,		0x23, GSP_END,
-	KM_SHIFT,	KC_4,		0x24, GSP_END,
-	KM_SHIFT,	KC_5,		0x25, GSP_END,
-	KM_SHIFT,	KC_6,		0x5e, GSP_END,
-	KM_SHIFT,	KC_7,		0x26, GSP_END,
-	KM_SHIFT,	KC_8,		0x2a, GSP_END,
-	KM_SHIFT,	KC_9,		0x28, GSP_END,
-	KM_SHIFT,	KC_0,		0x29, GSP_END,
-
-	KM_SHIFT,	KC_MINUS,	0x5f, GSP_END,
-	KM_SHIFT,	KC_EQUALS,	0x2b, GSP_END,
-
-	KM_SHIFT,	KC_Q,		0x51, GSP_END,
-	KM_SHIFT,	KC_W,		0x57, GSP_END,
-	KM_SHIFT,	KC_E,		0x45, GSP_END,
-	KM_SHIFT,	KC_R,		0x52, GSP_END,
-	KM_SHIFT,	KC_T,		0x54, GSP_END,
-	KM_SHIFT,	KC_Y,		0x59, GSP_END,
-	KM_SHIFT,	KC_U,		0x55, GSP_END,
-	KM_SHIFT,	KC_I,		0x49, GSP_END,
-	KM_SHIFT,	KC_O,		0x4f, GSP_END,
-	KM_SHIFT,	KC_P,		0x50, GSP_END,
-
-	KM_SHIFT,	KC_LBRACKET,	0x7b, GSP_END,
-	KM_SHIFT,	KC_RBRACKET,	0x7d, GSP_END,
-
-	KM_SHIFT,	KC_A,		0x41, GSP_END,
-	KM_SHIFT,	KC_S,		0x53, GSP_END,
-	KM_SHIFT,	KC_D,		0x44, GSP_END,
-	KM_SHIFT,	KC_F,		0x46, GSP_END,
-	KM_SHIFT,	KC_G,		0x47, GSP_END,
-	KM_SHIFT,	KC_H,		0x48, GSP_END,
-	KM_SHIFT,	KC_J,		0x4a, GSP_END,
-	KM_SHIFT,	KC_K,		0x4b, GSP_END,
-	KM_SHIFT,	KC_L,		0x4c, GSP_END,
-
-	KM_SHIFT,	KC_SEMICOLON,	0x3a, GSP_END,
-	KM_SHIFT,	KC_QUOTE,	0x22, GSP_END,
-	KM_SHIFT,	KC_BACKSLASH,	0x7c, GSP_END,
-
-	KM_SHIFT,	KC_Z,		0x5a, GSP_END,
-	KM_SHIFT,	KC_X,		0x58, GSP_END,
-	KM_SHIFT,	KC_C,		0x43, GSP_END,
-	KM_SHIFT,	KC_V,		0x56, GSP_END,
-	KM_SHIFT,	KC_B,		0x42, GSP_END,
-	KM_SHIFT,	KC_N,		0x4e, GSP_END,
-	KM_SHIFT,	KC_M,		0x4d, GSP_END,
-
-	KM_SHIFT,	KC_COMMA,	0x3c, GSP_END,
-	KM_SHIFT,	KC_PERIOD,	0x3e, GSP_END,
-	KM_SHIFT,	KC_SLASH,	0x3f, GSP_END,
-
-	/* ... */
-
-	0,	KC_SPACE,	0x20, GSP_END,
-	0,	KC_ENTER,	0x0a, GSP_END,
-	0,	KC_ENTER,	0x0d, GSP_END,
-
-	0,	KC_ESCAPE,	0x1b, 0x1b, GSP_END,
-
-	0,	KC_F1,		0x1b, 0x4f, 0x50, GSP_END,
-	0,	KC_F2,		0x1b, 0x4f, 0x51, GSP_END,
-	0,	KC_F3,		0x1b, 0x4f, 0x52, GSP_END,
-	0,	KC_F4,		0x1b, 0x4f, 0x53, GSP_END,
-	0,	KC_F5,		0x1b, 0x5b, 0x31, 0x35, 0x7e, GSP_END,
-	0,	KC_F6,		0x1b, 0x5b, 0x31, 0x37, 0x7e, GSP_END,
-	0,	KC_F7,		0x1b, 0x5b, 0x31, 0x38, 0x7e, GSP_END,
-	0,	KC_F8,		0x1b, 0x5b, 0x31, 0x39, 0x7e, GSP_END,
-	0,	KC_F9,		0x1b, 0x5b, 0x32, 0x30, 0x7e, GSP_END,
-	0,	KC_F10,		0x1b, 0x5b, 0x32, 0x31, 0x7e, GSP_END,
-	0,	KC_F11,		0x1b, 0x5b, 0x32, 0x33, 0x7e, GSP_END,
-	0,	KC_F12,		0x1b, 0x5b, 0x32, 0x34, 0x7e, GSP_END,
-
-	0,	KC_INSERT,	0x1b, 0x5b, 0x32, 0x7e, GSP_END,
-	0,	KC_HOME,	0x1b, 0x5b, 0x48, GSP_END,
-	0,	KC_PAGE_UP,	0x1b, 0x5b, 0x35, 0x7e, GSP_END,
-	0,	KC_DELETE,	0x1b, 0x5b, 0x33, 0x7e, GSP_END,
-	0,	KC_END,		0x1b, 0x5b, 0x46, GSP_END,
-	0,	KC_PAGE_DOWN,	0x1b, 0x5b, 0x36, 0x7e, GSP_END,
-
-	0,	KC_UP,		0x1b, 0x5b, 0x41, GSP_END,
-	0,	KC_LEFT,	0x1b, 0x5b, 0x44, GSP_END,
-	0,	KC_DOWN,	0x1b, 0x5b, 0x42, GSP_END,
-	0,	KC_RIGHT,	0x1b, 0x5b, 0x43, GSP_END,
-
-	0,	0
-};
-
-int kbd_ctl_init(void)
-{
-	ds = 0;
-
-	gsp_init(&sp);
-	return gsp_insert_defs(&sp, seq_defs);
-}
-
-void kbd_ctl_parse_scancode(int scancode)
-{
-	unsigned mods, key;
-
-	ds = gsp_step(&sp, ds, scancode, &mods, &key);
-	if (key != 0) {
-		stroke_sim(mods, key);
-	}
-}
-
-void kbd_ctl_set_ind(unsigned mods)
-{
-	(void) mods;
-}
-
-/**
- * @}
- */ 
Index: uspace/srv/kbd/ctl/sun.c
===================================================================
--- uspace/srv/kbd/ctl/sun.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,214 +1,0 @@
-/*
- * Copyright (c) 2006 Jakub Jermar
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup kbd_ctl
- * @ingroup kbd
- * @{
- */
-/**
- * @file
- * @brief	Sun keyboard controller driver.
- */
-
-#include <kbd.h>
-#include <io/console.h>
-#include <io/keycode.h>
-#include <kbd_ctl.h>
-
-#define KBD_KEY_RELEASE		0x80
-#define KBD_ALL_KEYS_UP		0x7f
-
-static int scanmap_simple[];
-
-int kbd_ctl_init(void)
-{
-	return 0;
-}
-
-void kbd_ctl_parse_scancode(int scancode)
-{
-	console_ev_type_t type;
-	unsigned int key;
-
-	if (scancode < 0 || scancode >= 0x100)
-		return;
-
-	if (scancode == KBD_ALL_KEYS_UP)
-		return;
-
-	if (scancode & KBD_KEY_RELEASE) {
-		scancode &= ~KBD_KEY_RELEASE;
-		type = KEY_RELEASE;
-	} else {
-		type = KEY_PRESS;
-	}
-
-	key = scanmap_simple[scancode];
-	if (key != 0)
-		kbd_push_ev(type, key);
-}
-
-void kbd_ctl_set_ind(unsigned mods)
-{
-	(void) mods;
-}
-
-/** Primary meaning of scancodes. */
-static int scanmap_simple[] = {
-	[0x00] = 0,
-	[0x01] = 0,
-	[0x02] = 0,
-	[0x03] = 0,
-	[0x04] = 0,
-	[0x05] = KC_F1,
-	[0x06] = KC_F2,
-	[0x07] = KC_F10,
-	[0x08] = KC_F3,
-	[0x09] = KC_F11,
-	[0x0a] = KC_F4,
-	[0x0b] = KC_F12,
-	[0x0c] = KC_F5,
-	[0x0d] = KC_RALT,
-	[0x0e] = KC_F6,
-	[0x0f] = 0,
-	[0x10] = KC_F7,
-	[0x11] = KC_F8,
-	[0x12] = KC_F9,
-	[0x13] = KC_LALT,
-	[0x14] = KC_UP,
-	[0x15] = KC_PAUSE,
-	[0x16] = 0,
-	[0x17] = KC_SCROLL_LOCK,
-	[0x18] = KC_LEFT,
-	[0x19] = 0,
-	[0x1a] = 0,
-	[0x1b] = KC_DOWN,
-	[0x1c] = KC_RIGHT,
-	[0x1d] = KC_ESCAPE,
-	[0x1e] = KC_1,
-	[0x1f] = KC_2,
-	[0x20] = KC_3,
-	[0x21] = KC_4,
-	[0x22] = KC_5,
-	[0x23] = KC_6,
-	[0x24] = KC_7,
-	[0x25] = KC_8,
-	[0x26] = KC_9,
-	[0x27] = KC_0,
-	[0x28] = KC_MINUS,
-	[0x29] = KC_EQUALS,
-	[0x2a] = KC_BACKTICK,
-	[0x2b] = KC_BACKSPACE,
-	[0x2c] = KC_INSERT,
-	[0x2d] = 0,
-	[0x2e] = KC_NSLASH,
-	[0x2f] = KC_NTIMES,
-	[0x30] = 0,
-	[0x31] = 0,
-	[0x32] = KC_NPERIOD,
-	[0x33] = 0,
-	[0x34] = KC_HOME,
-	[0x35] = KC_TAB,
-	[0x36] = KC_Q,
-	[0x37] = KC_W,
-	[0x38] = KC_E,
-	[0x39] = KC_R,
-	[0x3a] = KC_T,
-	[0x3b] = KC_Y,
-	[0x3c] = KC_U,
-	[0x3d] = KC_I,
-	[0x3e] = KC_O,
-	[0x3f] = KC_P,
-	[0x40] = KC_LBRACKET,
-	[0x41] = KC_RBRACKET,
-	[0x42] = KC_DELETE,
-	[0x43] = 0,
-	[0x44] = KC_N7,
-	[0x45] = KC_N8,
-	[0x46] = KC_N9,
-	[0x47] = KC_NMINUS,
-	[0x48] = 0,
-	[0x49] = 0,
-	[0x4a] = KC_END,
-	[0x4b] = 0,
-	[0x4c] = KC_LCTRL,
-	[0x4d] = KC_A,
-	[0x4e] = KC_S,
-	[0x4f] = KC_D,
-	[0x50] = KC_F,
-	[0x51] = KC_G,
-	[0x52] = KC_H,
-	[0x53] = KC_J,
-	[0x54] = KC_K,
-	[0x55] = KC_L,
-	[0x56] = KC_SEMICOLON,
-	[0x57] = KC_QUOTE,
-	[0x58] = KC_BACKSLASH,
-	[0x59] = KC_ENTER,
-	[0x5a] = KC_NENTER,
-	[0x5b] = KC_N4,
-	[0x5c] = KC_N5,
-	[0x5d] = KC_N6,
-	[0x5e] = KC_N0,
-	[0x5f] = 0,
-	[0x60] = KC_PAGE_UP,
-	[0x61] = 0,
-	[0x62] = KC_NUM_LOCK,
-	[0x63] = KC_LSHIFT,
-	[0x64] = KC_Z,
-	[0x65] = KC_X,
-	[0x66] = KC_C,
-	[0x67] = KC_V,
-	[0x68] = KC_B,
-	[0x69] = KC_N,
-	[0x6a] = KC_M,
-	[0x6b] = KC_COMMA,
-	[0x6c] = KC_PERIOD,
-	[0x6d] = KC_SLASH,
-	[0x6e] = KC_RSHIFT,
-	[0x6f] = 0,
-	[0x70] = KC_N1,
-	[0x71] = KC_N2,
-	[0x72] = KC_N3,
-	[0x73] = 0,
-	[0x74] = 0,
-	[0x75] = 0,
-	[0x76] = 0,
-	[0x77] = KC_CAPS_LOCK,
-	[0x78] = 0,
-	[0x79] = KC_SPACE,
-	[0x7a] = 0,
-	[0x7b] = KC_PAGE_DOWN,
-	[0x7c] = 0,
-	[0x7d] = KC_NPLUS,
-	[0x7e] = 0,
-	[0x7f] = 0
-};
-
-/** @}
- */
Index: uspace/srv/kbd/genarch/gsp.c
===================================================================
--- uspace/srv/kbd/genarch/gsp.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,289 +1,0 @@
-/*
- * Copyright (c) 2009 Jiri Svoboda
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/**
- * @addtogroup kbdgen generic
- * @ingroup  kbd
- * @{
- */ 
-/** @file
- * @brief	Generic scancode parser.
- *
- * The scancode parser is a simple finite state machine. It is described
- * using sequences of input symbols (scancodes) and the corresponding output
- * value (mods, key pair). When the parser recognizes a sequence,
- * it outputs the value and restarts. If a transition is undefined,
- * the parser restarts, too.
- *
- * Apart from precise values, GSP_DEFAULT allows to catch general cases.
- * I.e. if we knew that after 0x1b 0x4f there always follow two more
- * scancodes, we can define (0x1b, 0x4f, GSP_DEFAULT, GSP_DEFAULT, GSP_END)
- * with null output. This will force the parser to read the entire sequence,
- * not leaving garbage on the input if it does not recognize the specific
- * sequence.
- */
-
-#include <gsp.h>
-#include <adt/hash_table.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-#define TRANS_TABLE_CHAINS 256
-
-/*
- * Hash table operations for the transition function.
- */
-
-static hash_index_t trans_op_hash(unsigned long key[]);
-static int trans_op_compare(unsigned long key[], hash_count_t keys,
-    link_t *item);
-static void trans_op_remove_callback(link_t *item);
-
-static hash_table_operations_t trans_ops = {
-	.hash = trans_op_hash,
-	.compare = trans_op_compare,
-	.remove_callback = trans_op_remove_callback
-};
-
-static gsp_trans_t *trans_lookup(gsp_t *p, int state, int input);
-static void trans_insert(gsp_t *p, gsp_trans_t *t);
-static gsp_trans_t *trans_new(void);
-
-/** Initialise scancode parser. */
-void gsp_init(gsp_t *p)
-{
-	p->states = 1;
-	hash_table_create(&p->trans, TRANS_TABLE_CHAINS, 2, &trans_ops);
-}
-
-/** Insert a series of definitions into the parser.
- *
- * @param p	The parser.
- * @param defs	Definition list. Each definition starts with two output values
- *		(mods, key) and continues with a sequence of input values
- *		terminated with GSP_END. The definition list is terminated
- *		with two zeroes (0, 0) for output values.
- */
-int gsp_insert_defs(gsp_t *p, const int *defs)
-{
-	unsigned mods, key;
-	const int *dp;
-	int rc;
-
-	dp = defs;
-
-	while (1) {
-		/* Read the output values. */
-		mods = *dp++;
-		key = *dp++;
-		if (key == 0) break;
-
-		/* Insert one sequence. */		
-		rc = gsp_insert_seq(p, dp, mods, key);
-		if (rc != 0)
-			return rc;
-
-		/* Skip to the next definition. */
-		while (*dp != GSP_END)
-			++dp;
-		++dp;
-	}
-
-	return 0;
-}
-
-/** Insert one sequence into the parser.
- *
- * @param p	The parser.
- * @param seq	Sequence of input values terminated with GSP_END.
- * @param mods	Corresponsing output value.
- * @param key	Corresponsing output value.
- */
-int gsp_insert_seq(gsp_t *p, const int *seq, unsigned mods, unsigned key)
-{
-	int state;
-	gsp_trans_t *t;
-
-	state = 0;
-	t = NULL;
-
-	/* Input sequence must be non-empty. */
-	if (*seq == GSP_END)
-		return -1;
-
-	while (*(seq + 1) != GSP_END) {
-		t = trans_lookup(p, state, *seq);
-		if (t == NULL) {
-			/* Create new state. */
-			t = trans_new();
-			t->old_state = state;
-			t->input = *seq;
-			t->new_state = p->states++;
-
-			t->out_mods = 0;
-			t->out_key = 0;
-
-			trans_insert(p, t);
-		}
-		state = t->new_state;
-		++seq;
-	}
-
-	/* Process the last transition. */
-	t = trans_lookup(p, state, *seq);
-	if (t != NULL) {
-		exit(1);
-		return -1;	/* Conflicting definition. */
-	}
-
-	t = trans_new();
-	t->old_state = state;
-	t->input = *seq;
-	t->new_state = 0;
-
-	t->out_mods = mods;
-	t->out_key = key;
-
-	trans_insert(p, t);
-
-	return 0;
-}
-
-/** Compute one parser step.
- *
- * Computes the next state and output values for a given state and input.
- * This handles everything including restarts and default branches.
- *
- * @param p		The parser.
- * @param state		Old state.
- * @param input		Input symbol (scancode).
- * @param mods		Output value (modifier).
- * @param key		Output value (key).
- * @return		New state.
- */
-int gsp_step(gsp_t *p, int state, int input, unsigned *mods, unsigned *key)
-{
-	gsp_trans_t *t;
-
-	t = trans_lookup(p, state, input);
-	if (t == NULL) {
-		t = trans_lookup(p, state, GSP_DEFAULT);
-	}
-
-	if (t == NULL) {
-		printf("gsp_step: not found\n");
-		*mods = NULL;
-		*key = NULL;
-		return 0;
-	}
-
-	*mods = t->out_mods;
-	*key = t->out_key;
-	return t->new_state;
-}
-
-/** Transition function lookup.
- *
- * Returns the value of the transition function for the given state
- * and input. Note that the transition must be specified precisely,
- * to obtain the default branch use input = GSP_DEFAULT.
- *
- * @param p		Parser.
- * @param state		Current state.
- * @param input		Input value.
- * @return		The transition or @c NULL if not defined.
- */
-static gsp_trans_t *trans_lookup(gsp_t *p, int state, int input)
-{
-	link_t *item;
-	unsigned long key[2];
-
-	key[0] = state;
-	key[1] = input;
-
-	item = hash_table_find(&p->trans, key);
-	if (item == NULL) return NULL;
-
-	return hash_table_get_instance(item, gsp_trans_t, link);
-}
-
-/** Define a new transition.
- *
- * @param p	The parser.
- * @param t	Transition with all fields defined.
- */
-static void trans_insert(gsp_t *p, gsp_trans_t *t)
-{
-	unsigned long key[2];
-
-	key[0] = t->old_state;
-	key[1] = t->input;
-
-	hash_table_insert(&p->trans, key, &t->link);
-}
-
-/** Allocate transition structure. */
-static gsp_trans_t *trans_new(void)
-{
-	gsp_trans_t *t;
-
-	t = malloc(sizeof(gsp_trans_t));
-	if (t == NULL) {
-		printf("Memory allocation failed.\n");
-		exit(1);
-	}
-
-	return t;
-}
-
-/*
- * Transition function hash table operations.
- */
-
-static hash_index_t trans_op_hash(unsigned long key[])
-{
-	return (key[0] * 17 + key[1]) % TRANS_TABLE_CHAINS;
-}
-
-static int trans_op_compare(unsigned long key[], hash_count_t keys,
-    link_t *item)
-{
-	gsp_trans_t *t;
-
-	t = hash_table_get_instance(item, gsp_trans_t, link);
-	return ((key[0] == (unsigned long) t->old_state)
-	    && (key[1] == (unsigned long) t->input));
-}
-
-static void trans_op_remove_callback(link_t *item)
-{
-}
-
-/**
- * @}
- */ 
Index: uspace/srv/kbd/genarch/stroke.c
===================================================================
--- uspace/srv/kbd/genarch/stroke.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,85 +1,0 @@
-/*
- * Copyright (c) 2009 Jiri Svoboda
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup kbd
- * @{
- */
-/**
- * @file
- * @brief Stroke simulator.
- *
- * When simulating a keyboard using a serial TTY we need to convert the
- * recognized strokes (such as Shift-A) to sequences of key presses and
- * releases (such as 'press Shift, press A, release A, release Shift').
- *
- */
-
-#include <stroke.h>
-#include <kbd.h>
-#include <io/console.h>
-#include <io/keycode.h>
-
-/** Correspondence between modifers and the modifier keycodes. */
-static unsigned int mods_keys[][2] = {
-	{ KM_LSHIFT, KC_LSHIFT },
-	{ 0, 0 }
-};
-
-/** Simulate keystroke using sequences of key presses and releases. */
-void stroke_sim(unsigned mod, unsigned key)
-{
-	int i;
-
-	/* Simulate modifier presses. */
-	i = 0;
-	while (mods_keys[i][0] != 0) {
-		if (mod & mods_keys[i][0]) {
-			kbd_push_ev(KEY_PRESS, mods_keys[i][1]);
-		}
-		++i;
-	}
-
-	/* Simulate key press and release. */
-	if (key != 0) {
-		kbd_push_ev(KEY_PRESS, key);
-		kbd_push_ev(KEY_RELEASE, key);
-	}
-
-	/* Simulate modifier releases. */
-	i = 0;
-	while (mods_keys[i][0] != 0) {
-		if (mod & mods_keys[i][0]) {
-			kbd_push_ev(KEY_RELEASE, mods_keys[i][1]);
-		}
-		++i;
-	}
-}
-
-/**
- * @}
- */
Index: uspace/srv/kbd/generic/kbd.c
===================================================================
--- uspace/srv/kbd/generic/kbd.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,264 +1,0 @@
-/*
- * Copyright (c) 2006 Josef Cejka
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/**
- * @addtogroup kbdgen generic
- * @brief HelenOS generic uspace keyboard handler.
- * @ingroup kbd
- * @{
- */
-/** @file
- */
-
-#include <ipc/ipc.h>
-#include <ipc/services.h>
-#include <ipc/kbd.h>
-#include <sysinfo.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <ipc/ns.h>
-#include <async.h>
-#include <errno.h>
-#include <adt/fifo.h>
-#include <io/console.h>
-#include <io/keycode.h>
-#include <devmap.h>
-
-#include <kbd.h>
-#include <kbd_port.h>
-#include <kbd_ctl.h>
-#include <layout.h>
-
-#define NAME       "kbd"
-#define NAMESPACE  "hid_in"
-
-int phone2cons = -1;
-
-/** Currently active modifiers. */
-static unsigned mods = KM_NUM_LOCK;
-
-/** Currently pressed lock keys. We track these to tackle autorepeat. */
-static unsigned lock_keys;
-
-int cir_service = 0;
-int cir_phone = -1;
-
-#define NUM_LAYOUTS 3
-
-static layout_op_t *layout[NUM_LAYOUTS] = {
-	&us_qwerty_op,
-	&us_dvorak_op,
-	&cz_op
-};
-
-static int active_layout = 0;
-
-void kbd_push_scancode(int scancode)
-{
-/*	printf("scancode: 0x%x\n", scancode);*/
-	kbd_ctl_parse_scancode(scancode);
-}
-
-void kbd_push_ev(int type, unsigned int key)
-{
-	console_event_t ev;
-	unsigned mod_mask;
-
-	switch (key) {
-	case KC_LCTRL: mod_mask = KM_LCTRL; break;
-	case KC_RCTRL: mod_mask = KM_RCTRL; break;
-	case KC_LSHIFT: mod_mask = KM_LSHIFT; break;
-	case KC_RSHIFT: mod_mask = KM_RSHIFT; break;
-	case KC_LALT: mod_mask = KM_LALT; break;
-	case KC_RALT: mod_mask = KM_RALT; break;
-	default: mod_mask = 0; break;
-	}
-
-	if (mod_mask != 0) {
-		if (type == KEY_PRESS)
-			mods = mods | mod_mask;
-		else
-			mods = mods & ~mod_mask;
-	}
-
-	switch (key) {
-	case KC_CAPS_LOCK: mod_mask = KM_CAPS_LOCK; break;
-	case KC_NUM_LOCK: mod_mask = KM_NUM_LOCK; break;
-	case KC_SCROLL_LOCK: mod_mask = KM_SCROLL_LOCK; break;
-	default: mod_mask = 0; break;
-	}
-
-	if (mod_mask != 0) {
-		if (type == KEY_PRESS) {
-			/*
-			 * Only change lock state on transition from released
-			 * to pressed. This prevents autorepeat from messing
-			 * up the lock state.
-			 */
-			mods = mods ^ (mod_mask & ~lock_keys);
-			lock_keys = lock_keys | mod_mask;
-
-			/* Update keyboard lock indicator lights. */
-			kbd_ctl_set_ind(mods);
-		} else {
-			lock_keys = lock_keys & ~mod_mask;
-		}
-	}
-/*
-	printf("type: %d\n", type);
-	printf("mods: 0x%x\n", mods);
-	printf("keycode: %u\n", key);
-*/
-	if (type == KEY_PRESS && (mods & KM_LCTRL) &&
-		key == KC_F1) {
-		active_layout = 0;
-		layout[active_layout]->reset();
-		return;
-	}
-
-	if (type == KEY_PRESS && (mods & KM_LCTRL) &&
-		key == KC_F2) {
-		active_layout = 1;
-		layout[active_layout]->reset();
-		return;
-	}
-
-	if (type == KEY_PRESS && (mods & KM_LCTRL) &&
-		key == KC_F3) {
-		active_layout = 2;
-		layout[active_layout]->reset();
-		return;
-	}
-
-	ev.type = type;
-	ev.key = key;
-	ev.mods = mods;
-
-	ev.c = layout[active_layout]->parse_ev(&ev);
-
-	async_msg_4(phone2cons, KBD_EVENT, ev.type, ev.key, ev.mods, ev.c);
-}
-
-static void console_connection(ipc_callid_t iid, ipc_call_t *icall)
-{
-	ipc_callid_t callid;
-	ipc_call_t call;
-	int retval;
-
-	ipc_answer_0(iid, EOK);
-
-	while (1) {
-		callid = async_get_call(&call);
-		switch (IPC_GET_METHOD(call)) {
-		case IPC_M_PHONE_HUNGUP:
-			if (phone2cons != -1) {
-				ipc_hangup(phone2cons);
-				phone2cons = -1;
-			}
-			
-			ipc_answer_0(callid, EOK);
-			return;
-		case IPC_M_CONNECT_TO_ME:
-			if (phone2cons != -1) {
-				retval = ELIMIT;
-				break;
-			}
-			phone2cons = IPC_GET_ARG5(call);
-			retval = 0;
-			break;
-		case KBD_YIELD:
-			kbd_port_yield();
-			retval = 0;
-			break;
-		case KBD_RECLAIM:
-			kbd_port_reclaim();
-			retval = 0;
-			break;
-		default:
-			retval = EINVAL;
-		}
-		ipc_answer_0(callid, retval);
-	}	
-}
-
-
-int main(int argc, char **argv)
-{
-	printf(NAME ": HelenOS Keyboard service\n");
-	
-	if (sysinfo_value("kbd.cir.fhc") == 1)
-		cir_service = SERVICE_FHC;
-	else if (sysinfo_value("kbd.cir.obio") == 1)
-		cir_service = SERVICE_OBIO;
-	
-	if (cir_service) {
-		while (cir_phone < 0) {
-			cir_phone = ipc_connect_me_to_blocking(PHONE_NS, cir_service,
-			    0, 0);
-		}
-	}
-	
-	/* Initialize port driver. */
-	if (kbd_port_init() != 0)
-		return -1;
-
-	/* Initialize controller driver. */
-	if (kbd_ctl_init() != 0)
-		return -1;
-
-	/* Initialize (reset) layout. */
-	layout[active_layout]->reset();
-	
-	/* Register driver */
-	int rc = devmap_driver_register(NAME, console_connection);
-	if (rc < 0) {
-		printf(NAME ": Unable to register driver (%d)\n", rc);
-		return -1;
-	}
-	
-	char kbd[DEVMAP_NAME_MAXLEN + 1];
-	snprintf(kbd, DEVMAP_NAME_MAXLEN, "%s/%s", NAMESPACE, NAME);
-	
-	dev_handle_t dev_handle;
-	if (devmap_device_register(kbd, &dev_handle) != EOK) {
-		printf(NAME ": Unable to register device %s\n", kbd);
-		return -1;
-	}
-
-	printf(NAME ": Accepting connections\n");
-	async_manager();
-
-	/* Not reached. */
-	return 0;
-}
-
-/**
- * @}
- */ 
Index: uspace/srv/kbd/include/gsp.h
===================================================================
--- uspace/srv/kbd/include/gsp.h	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,84 +1,0 @@
-/*
- * Copyright (c) 2009 Jiri Svoboda
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup kbdgen generic
- * @brief	Generic scancode parser.
- * @ingroup  kbd
- * @{
- */ 
-/** @file
- */
-
-#ifndef KBD_GSP_H_
-#define KBD_GSP_H_
-
-#include <adt/hash_table.h>
-
-enum {
-	GSP_END		= -1,	/**< Terminates a sequence. */
-	GSP_DEFAULT	= -2	/**< Wildcard, catches unhandled cases. */
-};
-
-/** Scancode parser description */
-typedef struct {
-	/** Transition table, (state, input) -> (state, output) */
-	hash_table_t trans;
-
-	/** Number of states */
-	int states;
-} gsp_t;
-
-/** Scancode parser transition. */
-typedef struct {
-	link_t link;		/**< Link to hash table in @c gsp_t */ 
-
-	/* Preconditions */
-
-	int old_state;		/**< State before transition */
-	int input;		/**< Input symbol (scancode) */
-
-	/* Effects */
-
-	int new_state;		/**< State after transition */
-
-	/* Output emitted during transition */
-
-	unsigned out_mods;	/**< Modifier to emit */
-	unsigned out_key;	/**< Keycode to emit */
-} gsp_trans_t;
-
-extern void gsp_init(gsp_t *);
-extern int gsp_insert_defs(gsp_t *, const int *);
-extern int gsp_insert_seq(gsp_t *, const int *, unsigned, unsigned);
-extern int gsp_step(gsp_t *, int, int, unsigned *, unsigned *);
-
-#endif
-
-/**
- * @}
- */ 
Index: uspace/srv/kbd/include/kbd.h
===================================================================
--- uspace/srv/kbd/include/kbd.h	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,50 +1,0 @@
-/*
- * Copyright (c) 2006 Josef Cejka
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup kbdgen generic
- * @brief HelenOS generic uspace keyboard handler.
- * @ingroup kbd
- * @{
- */
-/** @file
- */
-
-#ifndef KBD_KBD_H_
-#define KBD_KBD_H_
-
-extern int cir_service;
-extern int cir_phone;
-
-extern void kbd_push_scancode(int);
-extern void kbd_push_ev(int, unsigned int);
-
-#endif
-
-/**
- * @}
- */
Index: uspace/srv/kbd/include/kbd_ctl.h
===================================================================
--- uspace/srv/kbd/include/kbd_ctl.h	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,49 +1,0 @@
-/*
- * Copyright (c) 2009 Jiri Svoboda
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup kbdgen generic
- * @brief	HelenOS generic uspace keyboard handler.
- * @ingroup  kbd
- * @{
- */ 
-/** @file
- */
-
-#ifndef KBD_CTL_H_
-#define KBD_CTL_H_
-
-extern void kbd_ctl_parse_scancode(int);
-extern int kbd_ctl_init(void);
-extern void kbd_ctl_set_ind(unsigned);
-
-#endif
-
-/**
- * @}
- */ 
-
Index: uspace/srv/kbd/include/kbd_port.h
===================================================================
--- uspace/srv/kbd/include/kbd_port.h	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,52 +1,0 @@
-/*
- * Copyright (c) 2009 Jiri Svoboda
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup kbdgen generic
- * @brief	HelenOS generic uspace keyboard handler.
- * @ingroup  kbd
- * @{
- */ 
-/** @file
- */
-
-#ifndef KBD_PORT_H_
-#define KBD_PORT_H_
-
-#include <sys/types.h>
-
-extern int kbd_port_init(void);
-extern void kbd_port_yield(void);
-extern void kbd_port_reclaim(void);
-extern void kbd_port_write(uint8_t);
-
-#endif
-
-/**
- * @}
- */ 
-
Index: uspace/srv/kbd/include/layout.h
===================================================================
--- uspace/srv/kbd/include/layout.h	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,56 +1,0 @@
-/*
- * Copyright (c) 2009 Jiri Svoboda
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup kbdgen generic
- * @brief HelenOS generic uspace keyboard handler.
- * @ingroup kbd
- * @{
- */
-/** @file
- */
-
-#ifndef KBD_LAYOUT_H_
-#define KBD_LAYOUT_H_
-
-#include <sys/types.h>
-#include <io/console.h>
-
-typedef struct {
-	void (*reset)(void);
-	wchar_t (*parse_ev)(console_event_t *);
-} layout_op_t;
-
-extern layout_op_t us_qwerty_op;
-extern layout_op_t us_dvorak_op;
-extern layout_op_t cz_op;
-
-#endif
-
-/**
- * @}
- */
Index: uspace/srv/kbd/include/stroke.h
===================================================================
--- uspace/srv/kbd/include/stroke.h	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,47 +1,0 @@
-/*
- * Copyright (c) 2009 Jiri Svoboda
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup kbdgen generic
- * @brief	Generic scancode parser.
- * @ingroup  kbd
- * @{
- */ 
-/** @file
- */
-
-#ifndef KBD_STROKE_H_
-#define KBD_STROKE_H_
-
-extern void stroke_sim(unsigned, unsigned);
-
-#endif
-
-/**
- * @}
- */ 
-
Index: uspace/srv/kbd/include/sun.h
===================================================================
--- uspace/srv/kbd/include/sun.h	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,47 +1,0 @@
-/*
- * Copyright (c) 2009 Martin Decky
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup kbdgen generic
- * @brief Sun keyboard virtual port driver.
- * @ingroup kbd
- * @{
- */
-/** @file
- */
-
-#ifndef KBD_SUN_H_
-#define KBD_SUN_H_
-
-extern int ns16550_port_init(void);
-extern int z8530_port_init(void);
-
-#endif
-
-/**
- * @}
- */
Index: uspace/srv/kbd/layout/cz.c
===================================================================
--- uspace/srv/kbd/layout/cz.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,408 +1,0 @@
-/*
- * Copyright (c) 2009 Jiri Svoboda
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup kbd
- * @brief Czech QWERTZ layout.
- * @{
- */
-
-#include <kbd.h>
-#include <io/console.h>
-#include <io/keycode.h>
-#include <bool.h>
-#include <layout.h>
-
-static void layout_reset(void);
-static wchar_t layout_parse_ev(console_event_t *ev);
-
-enum m_state {
-	ms_start,
-	ms_hacek,
-	ms_carka
-};
-
-static enum m_state mstate;
-
-layout_op_t cz_op = {
-	layout_reset,
-	layout_parse_ev
-};
-
-static wchar_t map_lcase[] = {
-	[KC_Q] = 'q',
-	[KC_W] = 'w',
-	[KC_E] = 'e',
-	[KC_R] = 'r',
-	[KC_T] = 't',
-	[KC_Y] = 'z',
-	[KC_U] = 'u',
-	[KC_I] = 'i',
-	[KC_O] = 'o',
-	[KC_P] = 'p',
-
-	[KC_A] = 'a',
-	[KC_S] = 's',
-	[KC_D] = 'd',
-	[KC_F] = 'f',
-	[KC_G] = 'g',
-	[KC_H] = 'h',
-	[KC_J] = 'j',
-	[KC_K] = 'k',
-	[KC_L] = 'l',
-
-	[KC_Z] = 'y',
-	[KC_X] = 'x',
-	[KC_C] = 'c',
-	[KC_V] = 'v',
-	[KC_B] = 'b',
-	[KC_N] = 'n',
-	[KC_M] = 'm',
-};
-
-static wchar_t map_ucase[] = {
-	[KC_Q] = 'Q',
-	[KC_W] = 'W',
-	[KC_E] = 'E',
-	[KC_R] = 'R',
-	[KC_T] = 'T',
-	[KC_Y] = 'Z',
-	[KC_U] = 'U',
-	[KC_I] = 'I',
-	[KC_O] = 'O',
-	[KC_P] = 'P',
-
-	[KC_A] = 'A',
-	[KC_S] = 'S',
-	[KC_D] = 'D',
-	[KC_F] = 'F',
-	[KC_G] = 'G',
-	[KC_H] = 'H',
-	[KC_J] = 'J',
-	[KC_K] = 'K',
-	[KC_L] = 'L',
-
-	[KC_Z] = 'Y',
-	[KC_X] = 'X',
-	[KC_C] = 'C',
-	[KC_V] = 'V',
-	[KC_B] = 'B',
-	[KC_N] = 'N',
-	[KC_M] = 'M',
-};
-
-static wchar_t map_not_shifted[] = {
-	[KC_BACKTICK] = ';',
-
-	[KC_1] = '+',
-
-	[KC_MINUS] = '=',
-
-	[KC_RBRACKET] = ')',
-
-	[KC_QUOTE] = L'§',
-
-	[KC_COMMA] = ',',
-	[KC_PERIOD] = '.',
-	[KC_SLASH] = '-',
-};
-
-static wchar_t map_shifted[] = {
-	[KC_1] = '1',
-	[KC_2] = '2',
-	[KC_3] = '3',
-	[KC_4] = '4',
-	[KC_5] = '5',
-	[KC_6] = '6',
-	[KC_7] = '7',
-	[KC_8] = '8',
-	[KC_9] = '9',
-	[KC_0] = '0',
-
-	[KC_MINUS] = '%',
-
-	[KC_LBRACKET] = '/',
-	[KC_RBRACKET] = '(',
-
-	[KC_SEMICOLON] = '"',
-	[KC_QUOTE] = '!',
-	[KC_BACKSLASH] = '\'',
-
-	[KC_COMMA] = '?',
-	[KC_PERIOD] = ':',
-	[KC_SLASH] = '_',
-};
-
-static wchar_t map_ns_nocaps[] = {
-	[KC_2] = L'ě',
-	[KC_3] = L'š',
-	[KC_4] = L'č',
-	[KC_5] = L'ř',
-	[KC_6] = L'ž',
-	[KC_7] = L'ý',
-	[KC_8] = L'á',
-	[KC_9] = L'í',
-	[KC_0] = L'é',
-
-	[KC_LBRACKET] = L'ú',
-	[KC_SEMICOLON] = L'ů'
-};
-
-static wchar_t map_ns_caps[] = {
-	[KC_2] = L'Ě',
-	[KC_3] = L'Š',
-	[KC_4] = L'Č',
-	[KC_5] = L'Ř',
-	[KC_6] = L'Ž',
-	[KC_7] = L'Ý',
-	[KC_8] = L'Á',
-	[KC_9] = L'Í',
-	[KC_0] = L'É',
-
-	[KC_LBRACKET] = L'Ú',
-	[KC_SEMICOLON] = L'Ů'
-};
-
-static wchar_t map_neutral[] = {
-	[KC_BACKSPACE] = '\b',
-	[KC_TAB] = '\t',
-	[KC_ENTER] = '\n',
-	[KC_SPACE] = ' ',
-
-	[KC_NSLASH] = '/',
-	[KC_NTIMES] = '*',
-	[KC_NMINUS] = '-',
-	[KC_NPLUS] = '+',
-	[KC_NENTER] = '\n'
-};
-
-static wchar_t map_numeric[] = {
-	[KC_N7] = '7',
-	[KC_N8] = '8',
-	[KC_N9] = '9',
-	[KC_N4] = '4',
-	[KC_N5] = '5',
-	[KC_N6] = '6',
-	[KC_N1] = '1',
-	[KC_N2] = '2',
-	[KC_N3] = '3',
-
-	[KC_N0] = '0',
-	[KC_NPERIOD] = '.'
-};
-
-static wchar_t map_hacek_lcase[] = {
-	[KC_E] = L'ě',
-	[KC_R] = L'ř',
-	[KC_T] = L'ť',
-	[KC_Y] = L'ž',
-	[KC_U] = L'ů',
-
-	[KC_S] = L'š',
-	[KC_D] = L'ď',
-
-	[KC_C] = L'č',
-	[KC_N] = L'ň'
-};
-
-static wchar_t map_hacek_ucase[] = {
-	[KC_E] = L'Ě',
-	[KC_R] = L'Ř',
-	[KC_T] = L'Ť',
-	[KC_Y] = L'Ž',
-	[KC_U] = L'Ů',
-
-	[KC_S] = L'Š',
-	[KC_D] = L'Ď',
-
-	[KC_C] = L'Č',
-	[KC_N] = L'Ň'
-};
-
-static wchar_t map_carka_lcase[] = {
-	[KC_E] = L'é',
-	[KC_U] = L'ú',
-	[KC_I] = L'í',
-	[KC_O] = L'ó',
-
-	[KC_A] = L'á',
-
-	[KC_Z] = L'ý',
-};
-
-static wchar_t map_carka_ucase[] = {
-	[KC_E] = L'É',
-	[KC_U] = L'Ú',
-	[KC_I] = L'Í',
-	[KC_O] = L'Ó',
-
-	[KC_A] = L'Á',
-
-	[KC_Z] = L'Ý',
-};
-
-static wchar_t translate(unsigned int key, wchar_t *map, size_t map_length)
-{
-	if (key >= map_length)
-		return 0;
-	return map[key];
-}
-
-static wchar_t parse_ms_hacek(console_event_t *ev)
-{
-	wchar_t c;
-
-	mstate = ms_start;
-
-	/* Produce no characters when Ctrl or Alt is pressed. */
-	if ((ev->mods & (KM_CTRL | KM_ALT)) != 0)
-		return 0;
-
-	if (((ev->mods & KM_SHIFT) != 0) ^ ((ev->mods & KM_CAPS_LOCK) != 0))
-		c = translate(ev->key, map_hacek_ucase, sizeof(map_hacek_ucase) / sizeof(wchar_t));
-	else
-		c = translate(ev->key, map_hacek_lcase, sizeof(map_hacek_lcase) / sizeof(wchar_t));
-
-	return c;
-}
-
-static wchar_t parse_ms_carka(console_event_t *ev)
-{
-	wchar_t c;
-
-	mstate = ms_start;
-
-	/* Produce no characters when Ctrl or Alt is pressed. */
-	if ((ev->mods & (KM_CTRL | KM_ALT)) != 0)
-		return 0;
-
-	if (((ev->mods & KM_SHIFT) != 0) ^ ((ev->mods & KM_CAPS_LOCK) != 0))
-		c = translate(ev->key, map_carka_ucase, sizeof(map_carka_ucase) / sizeof(wchar_t));
-	else
-		c = translate(ev->key, map_carka_lcase, sizeof(map_carka_lcase) / sizeof(wchar_t));
-
-	return c;
-}
-
-static wchar_t parse_ms_start(console_event_t *ev)
-{
-	wchar_t c;
-
-	/* Produce no characters when Ctrl or Alt is pressed. */
-	if ((ev->mods & (KM_CTRL | KM_ALT)) != 0)
-		return 0;
-
-	if (ev->key == KC_EQUALS) {
-		if ((ev->mods & KM_SHIFT) != 0)
-			mstate = ms_hacek;
-		else
-			mstate = ms_carka;
-
-		return 0;
-	}
-
-	c = translate(ev->key, map_neutral, sizeof(map_neutral) / sizeof(wchar_t));
-	if (c != 0)
-		return c;
-
-	if ((ev->mods & KM_SHIFT) == 0) {
-		if ((ev->mods & KM_CAPS_LOCK) != 0)
-			c = translate(ev->key, map_ns_caps, sizeof(map_ns_caps) / sizeof(wchar_t));
-		else
-			c = translate(ev->key, map_ns_nocaps, sizeof(map_ns_nocaps) / sizeof(wchar_t));
-
-		if (c != 0)
-			return c;
-	}	
-
-	if (((ev->mods & KM_SHIFT) != 0) ^ ((ev->mods & KM_CAPS_LOCK) != 0))
-		c = translate(ev->key, map_ucase, sizeof(map_ucase) / sizeof(wchar_t));
-	else
-		c = translate(ev->key, map_lcase, sizeof(map_lcase) / sizeof(wchar_t));
-
-	if (c != 0)
-		return c;
-
-	if ((ev->mods & KM_SHIFT) != 0)
-		c = translate(ev->key, map_shifted, sizeof(map_shifted) / sizeof(wchar_t));
-	else
-		c = translate(ev->key, map_not_shifted, sizeof(map_not_shifted) / sizeof(wchar_t));
-
-	if (c != 0)
-		return c;
-
-	if ((ev->mods & KM_NUM_LOCK) != 0)
-		c = translate(ev->key, map_numeric, sizeof(map_numeric) / sizeof(wchar_t));
-	else
-		c = 0;
-
-	return c;
-}
-
-static bool key_is_mod(unsigned key)
-{
-	switch (key) {
-	case KC_LSHIFT:
-	case KC_RSHIFT:
-	case KC_LALT:
-	case KC_RALT:
-	case KC_LCTRL:
-	case KC_RCTRL:
-		return true;
-	default:
-		return false;
-	}
-}
-
-static void layout_reset(void)
-{
-	mstate = ms_start;
-}
-
-static wchar_t layout_parse_ev(console_event_t *ev)
-{
-	if (ev->type != KEY_PRESS)
-		return 0;
-	
-	if (key_is_mod(ev->key))
-		return 0;
-	
-	switch (mstate) {
-	case ms_start:
-		return parse_ms_start(ev);
-	case ms_hacek:
-		return parse_ms_hacek(ev);
-	case ms_carka:
-		return parse_ms_carka(ev);
-	}
-	
-	return 0;
-}
-
-/**
- * @}
- */
Index: uspace/srv/kbd/layout/us_dvorak.c
===================================================================
--- uspace/srv/kbd/layout/us_dvorak.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,250 +1,0 @@
-/*
- * Copyright (c) 2009 Jiri Svoboda
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup kbd
- * @brief US Dvorak Simplified Keyboard layout.
- * @{
- */
-
-#include <kbd.h>
-#include <io/console.h>
-#include <io/keycode.h>
-#include <layout.h>
-
-static void layout_reset(void);
-static wchar_t layout_parse_ev(console_event_t *ev);
-
-layout_op_t us_dvorak_op = {
-	layout_reset,
-	layout_parse_ev
-};
-
-static wchar_t map_lcase[] = {
-	[KC_R] = 'p',
-	[KC_T] = 'y',
-	[KC_Y] = 'f',
-	[KC_U] = 'g',
-	[KC_I] = 'c',
-	[KC_O] = 'r',
-	[KC_P] = 'l',
-
-	[KC_A] = 'a',
-	[KC_S] = 'o',
-	[KC_D] = 'e',
-	[KC_F] = 'u',
-	[KC_G] = 'i',
-	[KC_H] = 'd',
-	[KC_J] = 'h',
-	[KC_K] = 't',
-	[KC_L] = 'n',
-
-	[KC_SEMICOLON] = 's',
-
-	[KC_X] = 'q',
-	[KC_C] = 'j',
-	[KC_V] = 'k',
-	[KC_B] = 'x',
-	[KC_N] = 'b',
-	[KC_M] = 'm',
-
-	[KC_COMMA] = 'w',
-	[KC_PERIOD] = 'v',
-	[KC_SLASH] = 'z',
-};
-
-static wchar_t map_ucase[] = {
-	[KC_R] = 'P',
-	[KC_T] = 'Y',
-	[KC_Y] = 'F',
-	[KC_U] = 'G',
-	[KC_I] = 'C',
-	[KC_O] = 'R',
-	[KC_P] = 'L',
-
-	[KC_A] = 'A',
-	[KC_S] = 'O',
-	[KC_D] = 'E',
-	[KC_F] = 'U',
-	[KC_G] = 'I',
-	[KC_H] = 'D',
-	[KC_J] = 'H',
-	[KC_K] = 'T',
-	[KC_L] = 'N',
-
-	[KC_SEMICOLON] = 'S',
-
-	[KC_X] = 'Q',
-	[KC_C] = 'J',
-	[KC_V] = 'K',
-	[KC_B] = 'X',
-	[KC_N] = 'B',
-	[KC_M] = 'M',
-
-	[KC_COMMA] = 'W',
-	[KC_PERIOD] = 'V',
-	[KC_SLASH] = 'Z',
-};
-
-static wchar_t map_not_shifted[] = {
-	[KC_BACKTICK] = '`',
-
-	[KC_1] = '1',
-	[KC_2] = '2',
-	[KC_3] = '3',
-	[KC_4] = '4',
-	[KC_5] = '5',
-	[KC_6] = '6',
-	[KC_7] = '7',
-	[KC_8] = '8',
-	[KC_9] = '9',
-	[KC_0] = '0',
-
-	[KC_MINUS] = '[',
-	[KC_EQUALS] = ']',
-
-	[KC_Q] = '\'',
-	[KC_W] = ',',
-	[KC_E] = '.',
-
-	[KC_LBRACKET] = '/',
-	[KC_RBRACKET] = '=',
-
-	[KC_QUOTE] = '-',
-	[KC_BACKSLASH] = '\\',
-
-	[KC_Z] = ';',
-};
-
-static wchar_t map_shifted[] = {
-	[KC_BACKTICK] = '~',
-
-	[KC_1] = '!',
-	[KC_2] = '@',
-	[KC_3] = '#',
-	[KC_4] = '$',
-	[KC_5] = '%',
-	[KC_6] = '^',
-	[KC_7] = '&',
-	[KC_8] = '*',
-	[KC_9] = '(',
-	[KC_0] = ')',
-
-	[KC_MINUS] = '{',
-	[KC_EQUALS] = '}',
-
-	[KC_Q] = '"',
-	[KC_W] = '<',
-	[KC_E] = '>',
-
-	[KC_LBRACKET] = '?',
-	[KC_RBRACKET] = '+',
-
-	[KC_QUOTE] = '_',
-	[KC_BACKSLASH] = '|',
-
-	[KC_Z] = ':',
-};
-
-static wchar_t map_neutral[] = {
-	[KC_BACKSPACE] = '\b',
-	[KC_TAB] = '\t',
-	[KC_ENTER] = '\n',
-	[KC_SPACE] = ' ',
-
-	[KC_NSLASH] = '/',
-	[KC_NTIMES] = '*',
-	[KC_NMINUS] = '-',
-	[KC_NPLUS] = '+',
-	[KC_NENTER] = '\n'
-};
-
-static wchar_t map_numeric[] = {
-	[KC_N7] = '7',
-	[KC_N8] = '8',
-	[KC_N9] = '9',
-	[KC_N4] = '4',
-	[KC_N5] = '5',
-	[KC_N6] = '6',
-	[KC_N1] = '1',
-	[KC_N2] = '2',
-	[KC_N3] = '3',
-
-	[KC_N0] = '0',
-	[KC_NPERIOD] = '.'
-};
-
-static wchar_t translate(unsigned int key, wchar_t *map, size_t map_length)
-{
-	if (key >= map_length)
-		return 0;
-	return map[key];
-}
-
-static void layout_reset(void)
-{
-}
-
-static wchar_t layout_parse_ev(console_event_t *ev)
-{
-	wchar_t c;
-
-	/* Produce no characters when Ctrl or Alt is pressed. */
-	if ((ev->mods & (KM_CTRL | KM_ALT)) != 0)
-		return 0;
-
-	c = translate(ev->key, map_neutral, sizeof(map_neutral) / sizeof(wchar_t));
-	if (c != 0)
-		return c;
-
-	if (((ev->mods & KM_SHIFT) != 0) ^ ((ev->mods & KM_CAPS_LOCK) != 0))
-		c = translate(ev->key, map_ucase, sizeof(map_ucase) / sizeof(wchar_t));
-	else
-		c = translate(ev->key, map_lcase, sizeof(map_lcase) / sizeof(wchar_t));
-
-	if (c != 0)
-		return c;
-
-	if ((ev->mods & KM_SHIFT) != 0)
-		c = translate(ev->key, map_shifted, sizeof(map_shifted) / sizeof(wchar_t));
-	else
-		c = translate(ev->key, map_not_shifted, sizeof(map_not_shifted) / sizeof(wchar_t));
-
-	if (c != 0)
-		return c;
-
-	if ((ev->mods & KM_NUM_LOCK) != 0)
-		c = translate(ev->key, map_numeric, sizeof(map_numeric) / sizeof(wchar_t));
-	else
-		c = 0;
-
-	return c;
-}
-
-/**
- * @}
- */
Index: uspace/srv/kbd/layout/us_qwerty.c
===================================================================
--- uspace/srv/kbd/layout/us_qwerty.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,244 +1,0 @@
-/*
- * Copyright (c) 2009 Jiri Svoboda
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup kbd
- * @brief	US QWERTY layout.
- * @{
- */ 
-
-#include <kbd.h>
-#include <io/console.h>
-#include <io/keycode.h>
-#include <layout.h>
-
-static void layout_reset(void);
-static wchar_t layout_parse_ev(console_event_t *ev);
-
-layout_op_t us_qwerty_op = {
-	layout_reset,
-	layout_parse_ev
-};
-
-static wchar_t map_lcase[] = {
-	[KC_Q] = 'q',
-	[KC_W] = 'w',
-	[KC_E] = 'e',
-	[KC_R] = 'r',
-	[KC_T] = 't',
-	[KC_Y] = 'y',
-	[KC_U] = 'u',
-	[KC_I] = 'i',
-	[KC_O] = 'o',
-	[KC_P] = 'p',
-
-	[KC_A] = 'a',
-	[KC_S] = 's',
-	[KC_D] = 'd',
-	[KC_F] = 'f',
-	[KC_G] = 'g',
-	[KC_H] = 'h',
-	[KC_J] = 'j',
-	[KC_K] = 'k',
-	[KC_L] = 'l',
-
-	[KC_Z] = 'z',
-	[KC_X] = 'x',
-	[KC_C] = 'c',
-	[KC_V] = 'v',
-	[KC_B] = 'b',
-	[KC_N] = 'n',
-	[KC_M] = 'm',
-};
-
-static wchar_t map_ucase[] = {
-	[KC_Q] = 'Q',
-	[KC_W] = 'W',
-	[KC_E] = 'E',
-	[KC_R] = 'R',
-	[KC_T] = 'T',
-	[KC_Y] = 'Y',
-	[KC_U] = 'U',
-	[KC_I] = 'I',
-	[KC_O] = 'O',
-	[KC_P] = 'P',
-
-	[KC_A] = 'A',
-	[KC_S] = 'S',
-	[KC_D] = 'D',
-	[KC_F] = 'F',
-	[KC_G] = 'G',
-	[KC_H] = 'H',
-	[KC_J] = 'J',
-	[KC_K] = 'K',
-	[KC_L] = 'L',
-
-	[KC_Z] = 'Z',
-	[KC_X] = 'X',
-	[KC_C] = 'C',
-	[KC_V] = 'V',
-	[KC_B] = 'B',
-	[KC_N] = 'N',
-	[KC_M] = 'M',
-};
-
-static wchar_t map_not_shifted[] = {
-	[KC_BACKTICK] = '`',
-
-	[KC_1] = '1',
-	[KC_2] = '2',
-	[KC_3] = '3',
-	[KC_4] = '4',
-	[KC_5] = '5',
-	[KC_6] = '6',
-	[KC_7] = '7',
-	[KC_8] = '8',
-	[KC_9] = '9',
-	[KC_0] = '0',
-
-	[KC_MINUS] = '-',
-	[KC_EQUALS] = '=',
-
-	[KC_LBRACKET] = '[',
-	[KC_RBRACKET] = ']',
-
-	[KC_SEMICOLON] = ';',
-	[KC_QUOTE] = '\'',
-	[KC_BACKSLASH] = '\\',
-
-	[KC_COMMA] = ',',
-	[KC_PERIOD] = '.',
-	[KC_SLASH] = '/',
-};
-
-static wchar_t map_shifted[] = {
-	[KC_BACKTICK] = '~',
-
-	[KC_1] = '!',
-	[KC_2] = '@',
-	[KC_3] = '#',
-	[KC_4] = '$',
-	[KC_5] = '%',
-	[KC_6] = '^',
-	[KC_7] = '&',
-	[KC_8] = '*',
-	[KC_9] = '(',
-	[KC_0] = ')',
-
-	[KC_MINUS] = '_',
-	[KC_EQUALS] = '+',
-
-	[KC_LBRACKET] = '{',
-	[KC_RBRACKET] = '}',
-
-	[KC_SEMICOLON] = ':',
-	[KC_QUOTE] = '"',
-	[KC_BACKSLASH] = '|',
-
-	[KC_COMMA] = '<',
-	[KC_PERIOD] = '>',
-	[KC_SLASH] = '?',
-};
-
-static wchar_t map_neutral[] = {
-	[KC_BACKSPACE] = '\b',
-	[KC_TAB] = '\t',
-	[KC_ENTER] = '\n',
-	[KC_SPACE] = ' ',
-
-	[KC_NSLASH] = '/',
-	[KC_NTIMES] = '*',
-	[KC_NMINUS] = '-',
-	[KC_NPLUS] = '+',
-	[KC_NENTER] = '\n'
-};
-
-static wchar_t map_numeric[] = {
-	[KC_N7] = '7',
-	[KC_N8] = '8',
-	[KC_N9] = '9',
-	[KC_N4] = '4',
-	[KC_N5] = '5',
-	[KC_N6] = '6',
-	[KC_N1] = '1',
-	[KC_N2] = '2',
-	[KC_N3] = '3',
-
-	[KC_N0] = '0',
-	[KC_NPERIOD] = '.'
-};
-
-static wchar_t translate(unsigned int key, wchar_t *map, size_t map_length)
-{
-	if (key >= map_length)
-		return 0;
-	return map[key];
-}
-
-static void layout_reset(void)
-{
-}
-
-static wchar_t layout_parse_ev(console_event_t *ev)
-{
-	wchar_t c;
-
-	/* Produce no characters when Ctrl or Alt is pressed. */
-	if ((ev->mods & (KM_CTRL | KM_ALT)) != 0)
-		return 0;
-
-	c = translate(ev->key, map_neutral, sizeof(map_neutral) / sizeof(wchar_t));
-	if (c != 0)
-		return c;
-
-	if (((ev->mods & KM_SHIFT) != 0) ^ ((ev->mods & KM_CAPS_LOCK) != 0))
-		c = translate(ev->key, map_ucase, sizeof(map_ucase) / sizeof(wchar_t));
-	else
-		c = translate(ev->key, map_lcase, sizeof(map_lcase) / sizeof(wchar_t));
-
-	if (c != 0)
-		return c;
-
-	if ((ev->mods & KM_SHIFT) != 0)
-		c = translate(ev->key, map_shifted, sizeof(map_shifted) / sizeof(wchar_t));
-	else
-		c = translate(ev->key, map_not_shifted, sizeof(map_not_shifted) / sizeof(wchar_t));
-
-	if (c != 0)
-		return c;
-
-	if ((ev->mods & KM_NUM_LOCK) != 0)
-		c = translate(ev->key, map_numeric, sizeof(map_numeric) / sizeof(wchar_t));
-	else
-		c = 0;
-
-	return c;
-}
-
-/**
- * @}
- */ 
Index: uspace/srv/kbd/port/dummy.c
===================================================================
--- uspace/srv/kbd/port/dummy.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,59 +1,0 @@
-/*
- * Copyright (c) 2009 Jiri Svoboda
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup kbd_port
- * @brief	Dummy keyboard port driver.
- * @ingroup  kbd
- * @{
- */ 
-/** @file
- */
-
-#include <kbd_port.h>
-#include <kbd.h>
-
-int kbd_port_init(void)
-{
-	return 0;
-}
-
-void kbd_port_yield(void)
-{
-}
-
-void kbd_port_reclaim(void)
-{
-}
-
-void kbd_port_write(uint8_t data)
-{
-	(void) data;
-}
-
-/** @}
-*/
Index: uspace/srv/kbd/port/gxemul.c
===================================================================
--- uspace/srv/kbd/port/gxemul.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,100 +1,0 @@
-/*
- * Copyright (c) 2007 Michal Kebrt
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup kbd_port
- * @{
- * @ingroup  kbd
- */ 
-/** @file
- * @brief	GXEmul keyboard port driver.
- */
-
-#include <ipc/ipc.h>
-#include <async.h>
-#include <sysinfo.h>
-#include <kbd_port.h>
-#include <kbd.h>
-#include <ddi.h>
-
-static irq_cmd_t gxemul_cmds[] = {
-	{ 
-		.cmd = CMD_PIO_READ_8, 
-		.addr = (void *) 0, 	/* will be patched in run-time */
-		.dstarg = 2,
-	},
-	{
-		.cmd = CMD_ACCEPT
-	}
-};
-
-static irq_code_t gxemul_kbd = {
-	sizeof(gxemul_cmds) / sizeof(irq_cmd_t),
-	gxemul_cmds
-};
-
-static void gxemul_irq_handler(ipc_callid_t iid, ipc_call_t *call);
-
-/** Initializes keyboard handler. */
-int kbd_port_init(void)
-{
-	async_set_interrupt_received(gxemul_irq_handler);
-	gxemul_cmds[0].addr = (void *) sysinfo_value("kbd.address.virtual");
-	ipc_register_irq(sysinfo_value("kbd.inr"), device_assign_devno(),
-	    0, &gxemul_kbd);
-	return 0;
-}
-
-void kbd_port_yield(void)
-{
-}
-
-void kbd_port_reclaim(void)
-{
-}
-
-void kbd_port_write(uint8_t data)
-{
-	(void) data;
-}
-
-/** Process data sent when a key is pressed.
- *  
- *  @param keybuffer Buffer of pressed keys.
- *  @param call      IPC call.
- *
- *  @return Always 1.
- */
-static void gxemul_irq_handler(ipc_callid_t iid, ipc_call_t *call)
-{
-	int scan_code = IPC_GET_ARG2(*call);
-
-	kbd_push_scancode(scan_code);
-}
-
-/** @}
- */
Index: uspace/srv/kbd/port/i8042.c
===================================================================
--- uspace/srv/kbd/port/i8042.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,183 +1,0 @@
-/*
- * Copyright (c) 2001-2004 Jakub Jermar
- * Copyright (c) 2006 Josef Cejka
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup kbd_port
- * @ingroup kbd
- * @{
- */ 
-/** @file
- * @brief i8042 port driver.
- */
-
-#include <ddi.h>
-#include <libarch/ddi.h>
-#include <ipc/ipc.h>
-#include <async.h>
-#include <unistd.h>
-#include <sysinfo.h>
-#include <kbd_port.h>
-#include <kbd.h>
-#include <ddi.h>
-#include "i8042.h"
-
-/* Interesting bits for status register */
-#define i8042_OUTPUT_FULL  0x1
-#define i8042_INPUT_FULL   0x2
-#define i8042_MOUSE_DATA   0x20
-
-/* Command constants */
-#define i8042_CMD_KBD 0x60
-#define i8042_CMD_MOUSE  0xd4
-
-/* Keyboard cmd byte */
-#define i8042_KBD_IE        0x1
-#define i8042_MOUSE_IE      0x2
-#define i8042_KBD_DISABLE   0x10
-#define i8042_MOUSE_DISABLE 0x20
-#define i8042_KBD_TRANSLATE 0x40
-
-/* Mouse constants */
-#define MOUSE_OUT_INIT  0xf4
-#define MOUSE_ACK       0xfa
-
-static irq_cmd_t i8042_cmds[] = {
-	{
-		.cmd = CMD_PIO_READ_8,
-		.addr = NULL,	/* will be patched in run-time */
-		.dstarg = 1
-	},
-	{
-		.cmd = CMD_BTEST,
-		.value = i8042_OUTPUT_FULL,
-		.srcarg = 1,
-		.dstarg = 3
-	},
-	{
-		.cmd = CMD_PREDICATE,
-		.value = 2,
-		.srcarg = 3
-	},
-	{
-		.cmd = CMD_PIO_READ_8,
-		.addr = NULL,	/* will be patched in run-time */
-		.dstarg = 2
-	},
-	{
-		.cmd = CMD_ACCEPT
-	}
-};
-
-static irq_code_t i8042_kbd = {
-	sizeof(i8042_cmds) / sizeof(irq_cmd_t),
-	i8042_cmds
-};
-
-static uintptr_t i8042_physical;
-static uintptr_t i8042_kernel;
-static i8042_t * i8042;
-
-static void wait_ready(void) {
-	while (pio_read_8(&i8042->status) & i8042_INPUT_FULL)
-		;
-}
-
-static void i8042_irq_handler(ipc_callid_t iid, ipc_call_t *call);
-
-int kbd_port_init(void)
-{
-	int mouseenabled = 0;
-	void *vaddr;
-
-	i8042_physical = sysinfo_value("kbd.address.physical");
-	i8042_kernel = sysinfo_value("kbd.address.kernel");
-	if (pio_enable((void *) i8042_physical, sizeof(i8042_t), &vaddr) != 0)
-		return -1;
-	i8042 = vaddr;
-
-	async_set_interrupt_received(i8042_irq_handler);
-
-	/* Disable kbd, enable mouse */
-	pio_write_8(&i8042->status, i8042_CMD_KBD);
-	wait_ready();
-	pio_write_8(&i8042->status, i8042_CMD_KBD);
-	wait_ready();
-	pio_write_8(&i8042->data, i8042_KBD_DISABLE);
-	wait_ready();
-
-	/* Flush all current IO */
-	while (pio_read_8(&i8042->status) & i8042_OUTPUT_FULL)
-		(void) pio_read_8(&i8042->data);
-	
-	/* Enable kbd */
-	i8042_kbd.cmds[0].addr = (void *) &((i8042_t *) i8042_kernel)->status;
-	i8042_kbd.cmds[3].addr = (void *) &((i8042_t *) i8042_kernel)->data;
-	ipc_register_irq(sysinfo_value("kbd.inr"), device_assign_devno(), 0, &i8042_kbd);
-
-	int newcontrol = i8042_KBD_IE | i8042_KBD_TRANSLATE;
-	if (mouseenabled)
-		newcontrol |= i8042_MOUSE_IE;
-	
-	pio_write_8(&i8042->status, i8042_CMD_KBD);
-	wait_ready();
-	pio_write_8(&i8042->data, newcontrol);
-	wait_ready();
-	
-	return 0;
-}
-
-void kbd_port_yield(void)
-{
-}
-
-void kbd_port_reclaim(void)
-{
-}
-
-void kbd_port_write(uint8_t data)
-{
-	pio_write_8(&i8042->data, data);
-	wait_ready();
-}
-
-static void i8042_irq_handler(ipc_callid_t iid, ipc_call_t *call)
-{
-	int status = IPC_GET_ARG1(*call);
-
-	if ((status & i8042_MOUSE_DATA))
-		return;
-
-	int scan_code = IPC_GET_ARG2(*call);
-
-	kbd_push_scancode(scan_code);
-	return;
-}
-
-/**
- * @}
- */ 
Index: uspace/srv/kbd/port/i8042.h
===================================================================
--- uspace/srv/kbd/port/i8042.h	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,55 +1,0 @@
-/*
- * Copyright (c) 2006 Josef Cejka
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup kbd_port
- * @ingroup  kbd
- * @{
- */
-
-/** @file
- * @brief i8042 port driver.
- */
-
-#ifndef KBD_PORT_i8042_H_
-#define KBD_PORT_i8042_H_
-
-#include <libarch/ddi.h>
-#include <libarch/types.h>
-
-struct i8042 {
-	ioport8_t data;
-	uint8_t pad[3];
-	ioport8_t status;
-} __attribute__ ((packed));
-typedef struct i8042 i8042_t;
-
-#endif
-
-/**
- * @}
- */ 
Index: uspace/srv/kbd/port/msim.c
===================================================================
--- uspace/srv/kbd/port/msim.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,92 +1,0 @@
-/*
- * Copyright (c) 2006 Josef Cejka
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup kbd_port
- * @ingroup  kbd
- * @{
- */ 
-/** @file
- * @brief	Msim keyboard port driver.
- */
-
-#include <ipc/ipc.h>
-#include <async.h>
-#include <sysinfo.h>
-#include <kbd_port.h>
-#include <kbd.h>
-#include <ddi.h>
-
-irq_cmd_t msim_cmds[] = {
-	{
-		.cmd = CMD_PIO_READ_8,
-		.addr = (void *) 0,	/* will be patched in run-time */
-		.dstarg = 2
-	},
-	{
-		.cmd = CMD_ACCEPT
-	}
-	
-};
-
-irq_code_t msim_kbd = {
-	sizeof(msim_cmds) / sizeof(irq_cmd_t),
-	msim_cmds
-};
-
-static void msim_irq_handler(ipc_callid_t iid, ipc_call_t *call);
-
-int kbd_port_init(void)
-{
-	async_set_interrupt_received(msim_irq_handler);
-	msim_cmds[0].addr = sysinfo_value("kbd.address.virtual");
-	ipc_register_irq(sysinfo_value("kbd.inr"), device_assign_devno(),
-	    0, &msim_kbd);
-	return 0;
-}
-
-void kbd_port_yield(void)
-{
-}
-
-void kbd_port_reclaim(void)
-{
-}
-
-void kbd_port_write(uint8_t data)
-{
-	(void) data;
-}
-
-static void msim_irq_handler(ipc_callid_t iid, ipc_call_t *call)
-{
-	int scan_code = IPC_GET_ARG2(*call);
-	kbd_push_scancode(scan_code);
-}
-
-/** @}
-*/
Index: uspace/srv/kbd/port/ns16550.c
===================================================================
--- uspace/srv/kbd/port/ns16550.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,129 +1,0 @@
-/*
- * Copyright (c) 2006 Josef Cejka
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup kbd_port
- * @ingroup  kbd
- * @{
- */ 
-/** @file
- * @brief	NS16550 port driver.
- */
-
-#include <ipc/ipc.h>
-#include <ipc/bus.h>
-#include <async.h>
-#include <sysinfo.h>
-#include <kbd.h>
-#include <kbd_port.h>
-#include <sun.h>
-#include <ddi.h>
-
-/* NS16550 registers */
-#define RBR_REG		0	/** Receiver Buffer Register. */
-#define IER_REG		1	/** Interrupt Enable Register. */
-#define IIR_REG		2	/** Interrupt Ident Register (read). */
-#define FCR_REG		2	/** FIFO control register (write). */
-#define LCR_REG		3	/** Line Control register. */
-#define MCR_REG		4	/** Modem Control Register. */
-#define LSR_REG		5	/** Line Status Register. */
-
-#define LSR_DATA_READY	0x01
-
-static irq_cmd_t ns16550_cmds[] = {
-	{
-		.cmd = CMD_PIO_READ_8,
-		.addr = (void *) 0,	/* will be patched in run-time */
-		.dstarg = 1
-	},
-	{
-		.cmd = CMD_BTEST,
-		.value = LSR_DATA_READY,
-		.srcarg = 1,
-		.dstarg = 3
-	},
-	{
-		.cmd = CMD_PREDICATE,
-		.value = 2,
-		.srcarg = 3
-	},
-	{
-		.cmd = CMD_PIO_READ_8,
-		.addr = (void *) 0,	/* will be patched in run-time */
-		.dstarg = 2
-	},
-	{
-		.cmd = CMD_ACCEPT
-	}
-};
-
-irq_code_t ns16550_kbd = {
-	sizeof(ns16550_cmds) / sizeof(irq_cmd_t),
-	ns16550_cmds
-};
-
-static void ns16550_irq_handler(ipc_callid_t iid, ipc_call_t *call);
-
-static uintptr_t ns16550_physical;
-static uintptr_t ns16550_kernel; 
-
-int ns16550_port_init(void)
-{
-	void *vaddr;
-
-	async_set_interrupt_received(ns16550_irq_handler);
-
-	ns16550_physical = sysinfo_value("kbd.address.physical");
-	ns16550_kernel = sysinfo_value("kbd.address.kernel");
-	ns16550_kbd.cmds[0].addr = (void *) (ns16550_kernel + LSR_REG);
-	ns16550_kbd.cmds[3].addr = (void *) (ns16550_kernel + RBR_REG);
-	ipc_register_irq(sysinfo_value("kbd.inr"), device_assign_devno(),
-	    sysinfo_value("kbd.inr"), &ns16550_kbd);
-	return pio_enable((void *) ns16550_physical, 8, &vaddr);
-}
-
-void ns16550_port_yield(void)
-{
-}
-
-void ns16550_port_reclaim(void)
-{
-}
-
-static void ns16550_irq_handler(ipc_callid_t iid, ipc_call_t *call)
-{
-	int scan_code = IPC_GET_ARG2(*call);
-	kbd_push_scancode(scan_code);
-	
-	if (cir_service)
-		async_msg_1(cir_phone, BUS_CLEAR_INTERRUPT,
-		    IPC_GET_METHOD(*call));
-}
-
-/**
- * @}
- */
Index: uspace/srv/kbd/port/pl050.c
===================================================================
--- uspace/srv/kbd/port/pl050.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,119 +1,0 @@
-/*
- * Copyright (c) 2009 Vineeth Pillai
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup kbd_port
- * @ingroup kbd
- * @{
- */ 
-/** @file
- * @brief pl050 port driver.
- */
-
-#include <ddi.h>
-#include <libarch/ddi.h>
-#include <ipc/ipc.h>
-#include <async.h>
-#include <unistd.h>
-#include <sysinfo.h>
-#include <kbd_port.h>
-#include <kbd.h>
-#include <ddi.h>
-#include <stdio.h>
-
-#define PL050_STAT_RXFULL (1 << 4)
-static irq_cmd_t pl050_cmds[] = {
-	{
-		.cmd = CMD_PIO_READ_8,
-		.addr = NULL,
-		.dstarg = 1
-	},
-	{
-		.cmd = CMD_BTEST,
-		.value = PL050_STAT_RXFULL,
-		.srcarg = 1,
-		.dstarg = 3
-	},
-	{
-		.cmd = CMD_PREDICATE,
-		.value = 2,
-		.srcarg = 3
-	},
-	{
-		.cmd = CMD_PIO_READ_8,
-		.addr = NULL,	/* will be patched in run-time */
-		.dstarg = 2
-	},
-	{
-		.cmd = CMD_ACCEPT
-	}
-};
-
-static irq_code_t pl050_kbd = {
-	sizeof(pl050_cmds) / sizeof(irq_cmd_t),
-	pl050_cmds
-};
-
-static void pl050_irq_handler(ipc_callid_t iid, ipc_call_t *call);
-
-int kbd_port_init(void)
-{
-
-	pl050_kbd.cmds[0].addr = (void *) sysinfo_value("kbd.address.status");
-	pl050_kbd.cmds[3].addr = (void *) sysinfo_value("kbd.address.data");
-
-	async_set_interrupt_received(pl050_irq_handler);
-
-	ipc_register_irq(sysinfo_value("kbd.inr"), device_assign_devno(), 0, &pl050_kbd);
-
-	return 0;
-}
-
-void kbd_port_yield(void)
-{
-}
-
-void kbd_port_reclaim(void)
-{
-}
-
-void kbd_port_write(uint8_t data)
-{
-	(void) data;
-}
-
-static void pl050_irq_handler(ipc_callid_t iid, ipc_call_t *call)
-{
-	int scan_code = IPC_GET_ARG2(*call);
-
-	kbd_push_scancode(scan_code);
-	return;
-}
-
-/**
- * @}
- */ 
Index: uspace/srv/kbd/port/sgcn.c
===================================================================
--- uspace/srv/kbd/port/sgcn.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,181 +1,0 @@
-/*
- * Copyright (c) 2008 Pavel Rimsky
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup kbd_port
- * @ingroup  kbd
- * @{
- */ 
-/** @file
- * @brief	SGCN (Serengeti Console) keyboard port driver.
- */
-
-#include <as.h>
-#include <ddi.h>
-#include <async.h>
-#include <kbd.h>
-#include <kbd_port.h>
-#include <sysinfo.h>
-#include <stdio.h>
-#include <thread.h>
-#include <bool.h>
-
-#define POLL_INTERVAL		10000
-
-/**
- * SGCN buffer header. It is placed at the very beginning of the SGCN
- * buffer. 
- */
-typedef struct {
-	/** hard-wired to "CON" */
-	char magic[4];
-	
-	/** we don't need this */
-	char unused[8];
-	
-	/** offset within the SGCN buffer of the input buffer start */
-	uint32_t in_begin;
-	
-	/** offset within the SGCN buffer of the input buffer end */
-	uint32_t in_end;
-	
-	/** offset within the SGCN buffer of the input buffer read pointer */
-	uint32_t in_rdptr;
-	
-	/** offset within the SGCN buffer of the input buffer write pointer */
-	uint32_t in_wrptr;
-} __attribute__ ((packed)) sgcn_buffer_header_t;
-
-/*
- * Returns a pointer to the object of a given type which is placed at the given
- * offset from the console buffer beginning.
- */
-#define SGCN_BUFFER(type, offset) \
-		((type *) (sram_virt_addr + sram_buffer_offset + (offset)))
-
-/** Returns a pointer to the console buffer header. */
-#define SGCN_BUFFER_HEADER	(SGCN_BUFFER(sgcn_buffer_header_t, 0))
-
-/**
- * Virtual address mapped to SRAM.
- */
-static uintptr_t sram_virt_addr;
-
-/**
- * SGCN buffer offset within SGCN.
- */
-static uintptr_t sram_buffer_offset;
-
-/* polling thread */
-static void *sgcn_thread_impl(void *arg);
-
-static volatile bool polling_disabled = false;
-
-/**
- * Initializes the SGCN driver.
- * Maps the physical memory (SRAM) and creates the polling thread. 
- */
-int kbd_port_init(void)
-{
-	sram_virt_addr = (uintptr_t) as_get_mappable_page(sysinfo_value("sram.area.size"));
-	if (physmem_map((void *) sysinfo_value("sram.address.physical"),
-	    (void *) sram_virt_addr, sysinfo_value("sram.area.size") / PAGE_SIZE,
-	    AS_AREA_READ | AS_AREA_WRITE) != 0) {
-		printf("SGCN: uspace driver could not map physical memory.");
-		return -1;
-	}
-	
-	sram_buffer_offset = sysinfo_value("sram.buffer.offset");
-
-	thread_id_t tid;
-	int rc;
-
-	rc = thread_create(sgcn_thread_impl, NULL, "kbd_poll", &tid);
-	if (rc != 0) {
-		return rc;
-	}
-
-	return 0;
-}
-
-void kbd_port_yield(void)
-{
-	polling_disabled = true;
-}
-
-void kbd_port_reclaim(void)
-{
-	polling_disabled = false;
-}
-
-void kbd_port_write(uint8_t data)
-{
-	(void) data;
-}
-
-/**
- * Handler of the "key pressed" event. Reads codes of all the pressed keys from
- * the buffer. 
- */
-static void sgcn_key_pressed(void)
-{
-	char c;
-	
-	uint32_t begin = SGCN_BUFFER_HEADER->in_begin;
-	uint32_t end = SGCN_BUFFER_HEADER->in_end;
-	uint32_t size = end - begin;
-	
-	volatile char *buf_ptr = (volatile char *)
-		SGCN_BUFFER(char, SGCN_BUFFER_HEADER->in_rdptr);
-	volatile uint32_t *in_wrptr_ptr = &(SGCN_BUFFER_HEADER->in_wrptr);
-	volatile uint32_t *in_rdptr_ptr = &(SGCN_BUFFER_HEADER->in_rdptr);
-	
-	while (*in_rdptr_ptr != *in_wrptr_ptr) {
-		c = *buf_ptr;
-		*in_rdptr_ptr = (((*in_rdptr_ptr) - begin + 1) % size) + begin;
-		buf_ptr = (volatile char *)
-			SGCN_BUFFER(char, SGCN_BUFFER_HEADER->in_rdptr);
-		kbd_push_scancode(c);
-	}
-}
-
-/**
- * Thread to poll SGCN for keypresses.
- */
-static void *sgcn_thread_impl(void *arg)
-{
-	(void) arg;
-
-	while (1) {
-		if (polling_disabled == false)
-			sgcn_key_pressed();
-		usleep(POLL_INTERVAL);
-	}
-}
-
-/** @}
- */
Index: uspace/srv/kbd/port/ski.c
===================================================================
--- uspace/srv/kbd/port/ski.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,128 +1,0 @@
-/*
- * Copyright (c) 2005 Jakub Jermar
- * Copyright (c) 2009 Jiri Svoboda
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup kbd_port
- * @ingroup  kbd
- * @{
- */ 
-/** @file
- * @brief	Ski console keyboard port driver.
- */
-
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <kbd.h>
-#include <kbd_port.h>
-#include <sys/types.h>
-#include <thread.h>
-#include <bool.h>
-
-#define SKI_GETCHAR		21
-
-#define POLL_INTERVAL		10000
-
-static void *ski_thread_impl(void *arg);
-static int32_t ski_getchar(void);
-
-static volatile bool polling_disabled = false;
-
-/** Initialize Ski port driver. */
-int kbd_port_init(void)
-{
-	thread_id_t tid;
-	int rc;
-
-	rc = thread_create(ski_thread_impl, NULL, "kbd_poll", &tid);
-	if (rc != 0) {
-		return rc;
-	}
-
-	return 0;
-}
-
-void kbd_port_yield(void)
-{
-	polling_disabled = true;
-}
-
-void kbd_port_reclaim(void)
-{
-	polling_disabled = false;
-}
-
-void kbd_port_write(uint8_t data)
-{
-	(void) data;
-}
-
-/** Thread to poll Ski for keypresses. */
-static void *ski_thread_impl(void *arg)
-{
-	int32_t c;
-	(void) arg;
-
-	while (1) {
-		while (polling_disabled == false) {
-			c = ski_getchar();
-			if (c == 0)
-				break;
-			kbd_push_scancode(c);
-		}
-
-		usleep(POLL_INTERVAL);
-	}
-}
-
-/** Ask Ski if a key was pressed.
- *
- * Use SSC (Simulator System Call) to get character from the debug console.
- * This call is non-blocking.
- *
- * @return ASCII code of pressed key or 0 if no key pressed.
- */
-static int32_t ski_getchar(void)
-{
-	uint64_t ch;
-	
-	asm volatile (
-		"mov r15 = %1\n"
-		"break 0x80000;;\n"	/* modifies r8 */
-		"mov %0 = r8;;\n"		
-
-		: "=r" (ch)
-		: "i" (SKI_GETCHAR)
-		: "r15", "r8"
-	);
-
-	return (int32_t) ch;
-}
-
-/** @}
- */
Index: uspace/srv/kbd/port/sun.c
===================================================================
--- uspace/srv/kbd/port/sun.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,79 +1,0 @@
-/*
- * Copyright (c) 2009 Martin Decky
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup kbd_port
- * @ingroup  kbd
- * @{
- */
-/** @file
- * @brief Sun keyboard virtual port driver.
- */
-
-#include <kbd.h>
-#include <kbd_port.h>
-#include <sun.h>
-#include <sysinfo.h>
-
-/** Sun keyboard virtual port driver.
- *
- * This is a virtual port driver which can use
- * both ns16550_port_init and z8530_port_init
- * according to the information passed from the
- * kernel. This is just a temporal hack.
- *
- */
-int kbd_port_init(void)
-{
-	if (sysinfo_value("kbd.type.z8530")) {
-		if (z8530_port_init() == 0)
-			return 0;
-	}
-	
-	if (sysinfo_value("kbd.type.ns16550")) {
-		if (ns16550_port_init() == 0)
-			return 0;
-	}
-	
-	return -1;
-}
-
-void kbd_port_yield(void)
-{
-}
-
-void kbd_port_reclaim(void)
-{
-}
-
-void kbd_port_write(uint8_t data)
-{
-	(void) data;
-}
-
-/** @}
-*/
Index: uspace/srv/kbd/port/z8530.c
===================================================================
--- uspace/srv/kbd/port/z8530.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,117 +1,0 @@
-/*
- * Copyright (c) 2006 Martin Decky
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup kbd_port
- * @ingroup  kbd
- * @{
- */ 
-/** @file
- * @brief	Z8530 keyboard port driver.
- */
-
-#include <ipc/ipc.h>
-#include <ipc/bus.h>
-#include <async.h>
-#include <sysinfo.h>
-#include <kbd.h>
-#include <kbd_port.h>
-#include <sun.h>
-#include <sys/types.h>
-#include <ddi.h>
-
-#define CHAN_A_STATUS	4
-#define CHAN_A_DATA	6
-
-#define RR0_RCA	1
-
-static irq_cmd_t z8530_cmds[] = {
-	{
-		.cmd = CMD_PIO_READ_8,
-		.addr = (void *) 0,	/* will be patched in run-time */
-		.dstarg = 1
-	},
-	{
-		.cmd = CMD_BTEST,
-		.value = RR0_RCA,
-		.srcarg = 1,
-		.dstarg = 3
-	},
-	{
-		.cmd = CMD_PREDICATE,
-		.value = 2,
-		.srcarg = 3
-	},
-	{
-		.cmd = CMD_PIO_READ_8,
-		.addr = (void *) 0,	/* will be patched in run-time */
-		.dstarg = 2
-	},
-	{
-		.cmd = CMD_ACCEPT
-	}
-};
-	
-irq_code_t z8530_kbd = {
-	sizeof(z8530_cmds) / sizeof(irq_cmd_t),
-	z8530_cmds
-};
-
-static void z8530_irq_handler(ipc_callid_t iid, ipc_call_t *call);
-
-int z8530_port_init(void)
-{
-	async_set_interrupt_received(z8530_irq_handler);
-	z8530_cmds[0].addr = (void *) sysinfo_value("kbd.address.kernel") +
-	    CHAN_A_STATUS;
-	z8530_cmds[3].addr = (void *) sysinfo_value("kbd.address.kernel") +
-	    CHAN_A_DATA;
-	ipc_register_irq(sysinfo_value("kbd.inr"), device_assign_devno(),
-	    sysinfo_value("kbd.inr"), &z8530_kbd);
-	return 0;
-}
-
-void z8530_port_yield(void)
-{
-}
-
-void z8530_port_reclaim(void)
-{
-}
-
-static void z8530_irq_handler(ipc_callid_t iid, ipc_call_t *call)
-{
-	int scan_code = IPC_GET_ARG2(*call);
-	kbd_push_scancode(scan_code);
-	
-	if (cir_service)
-		async_msg_1(cir_phone, BUS_CLEAR_INTERRUPT,
-		    IPC_GET_METHOD(*call));
-}
-
-/** @}
- */
Index: uspace/srv/loader/Makefile
===================================================================
--- uspace/srv/loader/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/loader/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -34,7 +34,7 @@
 all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
 
 clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm arch/*/_link.ld
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm arch/*/_link.ld
 	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/srv/loader/Makefile.build
===================================================================
--- uspace/srv/loader/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/loader/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -66,7 +66,13 @@
 %.o: %.c $(DEPEND)
 	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
 
 %.o: %.s $(DEPEND)
 	$(AS) $(AFLAGS) $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ as asm $(DEFS) $(CFLAGS)
+endif
 
 $(DEPEND):
Index: uspace/srv/loader/Makefile.common
===================================================================
--- uspace/srv/loader/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/loader/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -37,3 +37,4 @@
 DEPEND = Makefile.depend
 DEPEND_PREV = $(DEPEND).prev
+JOB = loader.job
 OUTPUT = loader
Index: uspace/srv/ns/Makefile
===================================================================
--- uspace/srv/ns/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/ns/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -34,7 +34,7 @@
 all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
 
 clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
 	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/srv/ns/Makefile.build
===================================================================
--- uspace/srv/ns/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/ns/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -59,4 +59,7 @@
 %.o: %.c $(DEPEND)
 	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
 
 $(DEPEND):
Index: uspace/srv/ns/Makefile.common
===================================================================
--- uspace/srv/ns/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/ns/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -37,3 +37,4 @@
 DEPEND = Makefile.depend
 DEPEND_PREV = $(DEPEND).prev
+JOB = ns.job
 OUTPUT = ns
Index: uspace/srv/part/mbr_part/Makefile
===================================================================
--- uspace/srv/part/mbr_part/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,40 +1,0 @@
-#
-# Copyright (c) 2005 Martin Decky
-# Copyright (c) 2007 Jakub Jermar
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# - Redistributions of source code must retain the above copyright
-#   notice, this list of conditions and the following disclaimer.
-# - 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.
-# - 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.
-#
-
-include Makefile.common
-
-.PHONY: all clean
-
-all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
-	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
-
-clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
-	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/srv/part/mbr_part/Makefile.build
===================================================================
--- uspace/srv/part/mbr_part/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,63 +1,0 @@
-#
-# Copyright (c) 2005 Martin Decky
-# Copyright (c) 2007 Jakub Jermar
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# - Redistributions of source code must retain the above copyright
-#   notice, this list of conditions and the following disclaimer.
-# - 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.
-# - 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.
-#
-
-## Setup toolchain
-#
-
-include Makefile.common
-include $(LIBC_PREFIX)/Makefile.toolchain
-
-CFLAGS += -I$(LIBBLOCK_PREFIX)
-
-## Sources
-#
-
-SOURCES = \
-	mbr_part.c
-
-OBJECTS := $(addsuffix .o,$(basename $(SOURCES)))
-
-.PHONY: all
-
-all: $(OUTPUT) $(OUTPUT).disasm
-
--include $(DEPEND)
-
-$(OUTPUT).disasm: $(OUTPUT)
-	$(OBJDUMP) -d $< > $@
-
-$(OUTPUT): $(OBJECTS) $(LIBS)
-	$(LD) -T $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
-
-%.o: %.c $(DEPEND)
-	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
-
-$(DEPEND):
-	makedepend -f - -- $(DEPEND_DEFS) $(CFLAGS) -- $(SOURCES) > $@ 2> /dev/null
-	-[ -f $(DEPEND_PREV) ] && diff -q $(DEPEND_PREV) $@ && mv -f $(DEPEND_PREV) $@
Index: uspace/srv/part/mbr_part/Makefile.common
===================================================================
--- uspace/srv/part/mbr_part/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,40 +1,0 @@
-#
-# Copyright (c) 2005 Martin Decky
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# - Redistributions of source code must retain the above copyright
-#   notice, this list of conditions and the following disclaimer.
-# - 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.
-# - 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.
-#
-
-
-## Common names
-#
-
-LIBC_PREFIX = ../../../lib/libc
-SOFTINT_PREFIX = ../../../lib/softint
-LIBBLOCK_PREFIX = ../../../lib/libblock
-LIBS = $(LIBBLOCK_PREFIX)/libblock.a $(LIBC_PREFIX)/libc.a
-
-DEPEND = Makefile.depend
-DEPEND_PREV = $(DEPEND).prev
-OUTPUT = mbr_part
Index: uspace/srv/part/mbr_part/mbr_part.c
===================================================================
--- uspace/srv/part/mbr_part/mbr_part.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,508 +1,0 @@
-/*
- * Copyright (c) 2009 Jiri Svoboda
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - 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.
- * - 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.
- */
-
-/** @addtogroup bd
- * @{
- */
-
-/**
- * @file
- * @brief PC MBR partition driver
- *
- * Handles the PC MBR partitioning scheme. Uses a block device
- * and provides one for each partition.
- *
- * Limitations:
- * 
- * Only works with boot records using LBA. CHS-only records are not
- * supported.
- *
- * Referemces:
- *	
- * The source of MBR structures for this driver have been the following
- * Wikipedia articles:
- *	- http://en.wikipedia.org/wiki/Master_Boot_Record
- *	- http://en.wikipedia.org/wiki/Extended_boot_record
- *
- * The fact that the extended partition has type 0x05 is pure observation.
- * (TODO: can it have any other type number?)
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <ipc/ipc.h>
-#include <ipc/bd.h>
-#include <async.h>
-#include <as.h>
-#include <fibril_synch.h>
-#include <devmap.h>
-#include <sys/types.h>
-#include <libblock.h>
-#include <devmap.h>
-#include <errno.h>
-#include <bool.h>
-#include <byteorder.h>
-#include <assert.h>
-#include <macros.h>
-#include <task.h>
-
-#define NAME "mbr_part"
-
-enum {
-	/** Number of primary partition records */
-	N_PRIMARY	= 4,
-
-	/** Boot record signature */
-	BR_SIGNATURE	= 0xAA55
-};
-
-enum ptype {
-	/** Unused partition entry */
-	PT_UNUSED	= 0x00,
-	/** Extended partition */
-	PT_EXTENDED	= 0x05,
-};
-
-/** Partition */
-typedef struct part {
-	/** Primary partition entry is in use */
-	bool present;
-	/** Address of first block */
-	bn_t start_addr;
-	/** Number of blocks */
-	bn_t length;
-	/** Device representing the partition (outbound device) */
-	dev_handle_t dev;
-	/** Points to next partition structure. */
-	struct part *next;
-} part_t;
-
-/** Structure of a partition table entry */
-typedef struct {
-	uint8_t status;
-	/** CHS of fist block in partition */
-	uint8_t first_chs[3];
-	/** Partition type */
-	uint8_t ptype;
-	/** CHS of last block in partition */
-	uint8_t last_chs[3];
-	/** LBA of first block in partition */
-	uint32_t first_lba;
-	/** Number of blocks in partition */
-	uint32_t length;
-} __attribute__((packed)) pt_entry_t;
-
-/** Structure of a boot-record block */
-typedef struct {
-	/* Area for boot code */
-	uint8_t code_area[440];
-
-	/* Optional media ID */
-	uint32_t media_id;
-
-	uint16_t pad0;
-
-	/** Partition table entries */
-	pt_entry_t pte[N_PRIMARY];
-
-	/** Boot record block signature (@c BR_SIGNATURE) */
-	uint16_t signature;
-} __attribute__((packed)) br_block_t;
-
-
-static size_t block_size;
-
-/** Partitioned device (inbound device) */
-static dev_handle_t indev_handle;
-
-/** List of partitions. This structure is an empty head. */
-static part_t plist_head;
-
-static int mbr_init(const char *dev_name);
-static int mbr_part_read(void);
-static part_t *mbr_part_new(void);
-static void mbr_pte_to_part(uint32_t base, const pt_entry_t *pte, part_t *part);
-static void mbr_connection(ipc_callid_t iid, ipc_call_t *icall);
-static int mbr_bd_read(part_t *p, uint64_t ba, size_t cnt, void *buf);
-static int mbr_bd_write(part_t *p, uint64_t ba, size_t cnt, const void *buf);
-static int mbr_bsa_translate(part_t *p, uint64_t ba, size_t cnt, uint64_t *gba);
-
-int main(int argc, char **argv)
-{
-	printf(NAME ": PC MBR partition driver\n");
-
-	if (argc != 2) {
-		printf("Expected one argument (device name).\n");
-		return -1;
-	}
-
-	if (mbr_init(argv[1]) != EOK)
-		return -1;
-
-	printf(NAME ": Accepting connections\n");
-	task_retval(0);
-	async_manager();
-
-	/* Not reached */
-	return 0;
-}
-
-static int mbr_init(const char *dev_name)
-{
-	int rc;
-	int i;
-	char *name;
-	dev_handle_t dev;
-	uint64_t size_mb;
-	part_t *part;
-
-	rc = devmap_device_get_handle(dev_name, &indev_handle, 0);
-	if (rc != EOK) {
-		printf(NAME ": could not resolve device `%s'.\n", dev_name);
-		return rc;
-	}
-
-	rc = block_init(indev_handle, 2048);
-	if (rc != EOK)  {
-		printf(NAME ": could not init libblock.\n");
-		return rc;
-	}
-
-	/* Determine and verify block size. */
-
-	rc = block_get_bsize(indev_handle, &block_size);
-	if (rc != EOK) {
-		printf(NAME ": error getting block size.\n");
-		return rc;
-	}
-
-	if (block_size < 512 || (block_size % 512) != 0) {
-		printf(NAME ": invalid block size %d.\n");
-		return ENOTSUP;
-	}
-
-	/* Read in partition records. */
-	rc = mbr_part_read();
-	if (rc != EOK)
-		return rc;
-
-	/* Register the driver with device mapper. */
-	rc = devmap_driver_register(NAME, mbr_connection);
-	if (rc != EOK) {
-		printf(NAME ": Unable to register driver.\n");
-		return rc;
-	}
-
-	/*
-	 * Create partition devices.
-	 */
-	i = 0;
-	part = plist_head.next;
-
-	while (part != NULL) {
-		/* Skip absent partitions. */
-		if (!part->present) {
-			part = part->next;
-			++i;
-			continue;
-		}
-
-		asprintf(&name, "%sp%d", dev_name, i);
-		if (name == NULL)
-			return ENOMEM;
-
-		rc = devmap_device_register(name, &dev);
-		if (rc != EOK) {
-			devmap_hangup_phone(DEVMAP_DRIVER);
-			printf(NAME ": Unable to register device %s.\n", name);
-			return rc;
-		}
-
-		size_mb = (part->length * block_size + 1024 * 1024 - 1)
-		    / (1024 * 1024);
-		printf(NAME ": Registered device %s: %llu blocks %llu MB.\n",
-		    name, part->length, size_mb);
-
-		part->dev = dev;
-		free(name);
-
-		part = part->next;
-		++i;
-	}
-
-	return EOK;
-}
-
-/** Read in partition records. */
-static int mbr_part_read(void)
-{
-	int i, rc;
-	br_block_t *brb;
-	uint16_t sgn;
-	uint32_t ba;
-	part_t *ext_part, cp;
-	uint32_t base;
-	part_t *prev, *p;
-
-	brb = malloc(sizeof(br_block_t));
-	if (brb == NULL) {
-		printf(NAME ": Failed allocating memory.\n");
-		return ENOMEM;	
-	}
-
-	/*
-	 * Read primary partition entries.
-	 */
-
-	rc = block_read_direct(indev_handle, 0, 1, brb);
-	if (rc != EOK) {
-		printf(NAME ": Failed reading MBR block.\n");
-		return rc;
-	}
-
-	sgn = uint16_t_le2host(brb->signature);
-	if (sgn != BR_SIGNATURE) {
-		printf(NAME ": Invalid boot record signature 0x%04X.\n", sgn);
-		return EINVAL;
-	}
-
-	ext_part = NULL;
-	plist_head.next = NULL;
-	prev = &plist_head;
-
-	for (i = 0; i < N_PRIMARY; ++i) {
-		p = mbr_part_new();
-		if (p == NULL)
-			return ENOMEM;
-
-		mbr_pte_to_part(0, &brb->pte[i], p);
-		prev->next = p;
-		prev = p;
-
-		if (brb->pte[i].ptype == PT_EXTENDED) {
-			p->present = false;
-			ext_part = p;
-		}
-	}
-
-	if (ext_part == NULL)
-		return EOK;
-
-	printf("Extended partition found.\n");
-
-	/*
-	 * Read extended partition entries.
-	 */
-
-	cp.start_addr = ext_part->start_addr;
-	cp.length = ext_part->length;
-	base = ext_part->start_addr;
-
-	do {
-		/*
-		 * Addressing in the EBR chain is relative to the beginning
-		 * of the extended partition.
-		 */
-		ba = cp.start_addr;
-		rc = block_read_direct(indev_handle, ba, 1, brb);
-		if (rc != EOK) {
-			printf(NAME ": Failed reading EBR block at %u.\n", ba);
-			return rc;
-		}
-
-		sgn = uint16_t_le2host(brb->signature);
-		if (sgn != BR_SIGNATURE) {
-			printf(NAME ": Invalid boot record signature 0x%04X "
-			    " in EBR at %u.\n", sgn, ba);
-			return EINVAL;
-		}
-
-		p = mbr_part_new();
-		if (p == NULL)
-			return ENOMEM;
-
-		/* First PTE is the logical partition itself. */
-		mbr_pte_to_part(base, &brb->pte[0], p);
-		prev->next = p;
-		prev = p;
-
-		/* Second PTE describes next chain element. */
-		mbr_pte_to_part(base, &brb->pte[1], &cp);
-	} while (cp.present);
-
-	return EOK;
-}
-
-/** Allocate a new @c part_t structure. */
-static part_t *mbr_part_new(void)
-{
-	return malloc(sizeof(part_t));
-}
-
-/** Parse partition table entry. */
-static void mbr_pte_to_part(uint32_t base, const pt_entry_t *pte, part_t *part)
-{
-	uint32_t sa, len;
-
-	sa = uint32_t_le2host(pte->first_lba);
-	len = uint32_t_le2host(pte->length);
-
-	part->start_addr = base + sa;
-	part->length     = len;
-
-	part->present = (pte->ptype != PT_UNUSED) ? true : false;
-
-	part->dev = 0;
-	part->next = NULL;
-}
-
-static void mbr_connection(ipc_callid_t iid, ipc_call_t *icall)
-{
-	size_t comm_size;
-	void *fs_va = NULL;
-	ipc_callid_t callid;
-	ipc_call_t call;
-	ipcarg_t method;
-	dev_handle_t dh;
-	int flags;
-	int retval;
-	uint64_t ba;
-	size_t cnt;
-	part_t *part;
-
-	/* Get the device handle. */
-	dh = IPC_GET_ARG1(*icall);
-
-	/* 
-	 * Determine which partition device is the client connecting to.
-	 * A linear search is not terribly fast, but we only do this
-	 * once for each connection.
-	 */
-	part = plist_head.next;
-	while (part != NULL && part->dev != dh)
-		part = part->next;
-
-	if (part == NULL) {
-		ipc_answer_0(iid, EINVAL);
-		return;
-	}
-
-	assert(part->present == true);
-
-	/* Answer the IPC_M_CONNECT_ME_TO call. */
-	ipc_answer_0(iid, EOK);
-
-	if (!async_share_out_receive(&callid, &comm_size, &flags)) {
-		ipc_answer_0(callid, EHANGUP);
-		return;
-	}
-
-	fs_va = as_get_mappable_page(comm_size);
-	if (fs_va == NULL) {
-		ipc_answer_0(callid, EHANGUP);
-		return;
-	}
-
-	(void) async_share_out_finalize(callid, fs_va);
-
-	while (1) {
-		callid = async_get_call(&call);
-		method = IPC_GET_METHOD(call);
-		switch (method) {
-		case IPC_M_PHONE_HUNGUP:
-			/* The other side has hung up. */
-			ipc_answer_0(callid, EOK);
-			return;
-		case BD_READ_BLOCKS:
-			ba = MERGE_LOUP32(IPC_GET_ARG1(call),
-			    IPC_GET_ARG2(call));
-			cnt = IPC_GET_ARG3(call);
-			if (cnt * block_size > comm_size) {
-				retval = ELIMIT;
-				break;
-			}
-			retval = mbr_bd_read(part, ba, cnt, fs_va);
-			break;
-		case BD_WRITE_BLOCKS:
-			ba = MERGE_LOUP32(IPC_GET_ARG1(call),
-			    IPC_GET_ARG2(call));
-			cnt = IPC_GET_ARG3(call);
-			if (cnt * block_size > comm_size) {
-				retval = ELIMIT;
-				break;
-			}
-			retval = mbr_bd_write(part, ba, cnt, fs_va);
-			break;
-		case BD_GET_BLOCK_SIZE:
-			ipc_answer_1(callid, EOK, block_size);
-			continue;
-
-		default:
-			retval = EINVAL;
-			break;
-		}
-		ipc_answer_0(callid, retval);
-	}
-}
-
-/** Read blocks from partition. */
-static int mbr_bd_read(part_t *p, uint64_t ba, size_t cnt, void *buf)
-{
-	uint64_t gba;
-
-	if (mbr_bsa_translate(p, ba, cnt, &gba) != EOK)
-		return ELIMIT;
-
-	return block_read_direct(indev_handle, gba, cnt, buf);
-}
-
-/** Write blocks to partition. */
-static int mbr_bd_write(part_t *p, uint64_t ba, size_t cnt, const void *buf)
-{
-	uint64_t gba;
-
-	if (mbr_bsa_translate(p, ba, cnt, &gba) != EOK)
-		return ELIMIT;
-
-	return block_write_direct(indev_handle, gba, cnt, buf);
-}
-
-/** Translate block segment address with range checking. */
-static int mbr_bsa_translate(part_t *p, uint64_t ba, size_t cnt, uint64_t *gba)
-{
-	if (ba + cnt > p->length)
-		return ELIMIT;
-
-	*gba = p->start_addr + ba;
-	return EOK;
-}
-
-/**
- * @}
- */
Index: uspace/srv/pci/COPYING
===================================================================
--- uspace/srv/pci/COPYING	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,345 +1,0 @@
-		    GNU GENERAL PUBLIC LICENSE
-		       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-
-		    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-			    NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-		     END OF TERMS AND CONDITIONS
-
-
-	    How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year  name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
Index: uspace/srv/pci/Makefile
===================================================================
--- uspace/srv/pci/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,44 +1,0 @@
-#
-# Copyright (c) 2005 Martin Decky
-# Copyright (c) 2007 Jakub Jermar
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# - Redistributions of source code must retain the above copyright
-#   notice, this list of conditions and the following disclaimer.
-# - 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.
-# - 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.
-#
-
-include Makefile.common
-
-.PHONY: all clean
-
-all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
-	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
-
-$(LIBPCI):
-	$(MAKE) -C libpci
-
-clean:
-	$(MAKE) -C libpci clean
-	rm -f $(DEPEND) $(DEPEND_PREV) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
-	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/srv/pci/Makefile.build
===================================================================
--- uspace/srv/pci/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,61 +1,0 @@
-#
-# Copyright (c) 2005 Martin Decky
-# Copyright (c) 2007 Jakub Jermar
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# - Redistributions of source code must retain the above copyright
-#   notice, this list of conditions and the following disclaimer.
-# - 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.
-# - 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.
-#
-
-## Setup toolchain
-#
-
-include Makefile.common
-include $(LIBC_PREFIX)/Makefile.toolchain
-
-## Sources
-#
-
-SOURCES = \
-	pci.c
-
-OBJECTS := $(addsuffix .o,$(basename $(SOURCES)))
-
-.PHONY: all
-
-all: $(OUTPUT) $(OUTPUT).disasm
-
--include $(DEPEND)
-
-$(OUTPUT).disasm: $(OUTPUT)
-	$(OBJDUMP) -d $< > $@
-
-$(OUTPUT): $(OBJECTS) $(LIBS)
-	$(LD) -T $(LIBC_PREFIX)/arch/$(UARCH)/_link.ld $(OBJECTS) $(LIBS) $(LFLAGS) -o $@ -Map $(OUTPUT).map
-
-%.o: %.c $(DEPEND)
-	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
-
-$(DEPEND):
-	makedepend -f - -- $(DEPEND_DEFS) $(CFLAGS) -- $(SOURCES) > $@ 2> /dev/null
-	-[ -f $(DEPEND_PREV) ] && diff -q $(DEPEND_PREV) $@ && mv -f $(DEPEND_PREV) $@
Index: uspace/srv/pci/Makefile.common
===================================================================
--- uspace/srv/pci/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,40 +1,0 @@
-#
-# Copyright (c) 2005 Martin Decky
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# - Redistributions of source code must retain the above copyright
-#   notice, this list of conditions and the following disclaimer.
-# - 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.
-# - 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.
-#
-
-
-## Common names
-#
-
-LIBC_PREFIX = ../../lib/libc
-SOFTINT_PREFIX = ../../lib/softint
-LIBPCI = libpci/libpci.a
-LIBS = $(LIBPCI) $(LIBC_PREFIX)/libc.a
-
-DEPEND = Makefile.depend
-DEPEND_PREV = $(DEPEND).prev
-OUTPUT = pci
Index: uspace/srv/pci/libpci/Makefile
===================================================================
--- uspace/srv/pci/libpci/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,40 +1,0 @@
-#
-# Copyright (c) 2005 Martin Decky
-# Copyright (c) 2007 Jakub Jermar
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# - Redistributions of source code must retain the above copyright
-#   notice, this list of conditions and the following disclaimer.
-# - 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.
-# - 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.
-#
-
-include Makefile.common
-
-.PHONY: all clean
-
-all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBC_PREFIX)/libc.a
-	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
-
-clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(LIBPCI)
-	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/srv/pci/libpci/Makefile.build
===================================================================
--- uspace/srv/pci/libpci/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,61 +1,0 @@
-#
-# Copyright (c) 2005 Martin Decky
-# Copyright (c) 2007 Jakub Jermar
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# - Redistributions of source code must retain the above copyright
-#   notice, this list of conditions and the following disclaimer.
-# - 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.
-# - 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.
-#
-
-## Setup toolchain
-#
-
-include Makefile.common
-include $(LIBC_PREFIX)/Makefile.toolchain
-
-## Sources
-#
-
-SOURCES = \
-	access.c \
-	generic.c \
-	names.c \
-	i386-ports.c
-
-OBJECTS := $(addsuffix .o,$(basename $(SOURCES)))
-
-.PHONY: all
-
-all: $(LIBPCI)
-
--include $(DEPEND)
-
-$(LIBPCI): $(OBJECTS)
-	$(AR) rc $@ $(OBJECTS)
-
-%.o: %.c $(DEPEND)
-	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
-
-$(DEPEND):
-	makedepend -f - -- $(DEPEND_DEFS) $(CFLAGS) -- $(SOURCES) > $@ 2> /dev/null
-	-[ -f $(DEPEND_PREV) ] && diff -q $(DEPEND_PREV) $@ && mv -f $(DEPEND_PREV) $@
Index: uspace/srv/pci/libpci/Makefile.common
===================================================================
--- uspace/srv/pci/libpci/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,36 +1,0 @@
-#
-# Copyright (c) 2005 Martin Decky
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# - Redistributions of source code must retain the above copyright
-#   notice, this list of conditions and the following disclaimer.
-# - 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.
-# - 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.
-#
-
-
-## Common names
-#
-
-LIBC_PREFIX = ../../../lib/libc
-DEPEND = Makefile.depend
-DEPEND_PREV = $(DEPEND).prev
-LIBPCI = libpci.a
Index: uspace/srv/pci/libpci/VERSION
===================================================================
--- uspace/srv/pci/libpci/VERSION	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,2 +1,0 @@
-This libpci has been ported from pciutils-2.2.3
-on May 8, 2006 by Jakub Jermar.
Index: uspace/srv/pci/libpci/access.c
===================================================================
--- uspace/srv/pci/libpci/access.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,270 +1,0 @@
-/*
- *	The PCI Library -- User Access
- *
- *	Copyright (c) 1997--2003 Martin Mares <mj@ucw.cz>
- *
- *	May 8, 2006 - Modified and ported to HelenOS by Jakub Jermar.
- *
- *	Can be freely distributed and used under the terms of the GNU GPL.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-
-#include "internal.h"
-
-static struct pci_methods *pci_methods[PCI_ACCESS_MAX] = {
-	&pm_intel_conf1,
-	&pm_intel_conf2,
-};
-
-struct pci_access *pci_alloc(void)
-{
-	struct pci_access *a = malloc(sizeof(struct pci_access));
-	int i;
-
-	if (!a)
-		return NULL;
-		
-	bzero(a, sizeof(*a));
-	for (i = 0; i < PCI_ACCESS_MAX; i++)
-		if (pci_methods[i] && pci_methods[i]->config)
-			pci_methods[i]->config(a);
-	return a;
-}
-
-void *pci_malloc(struct pci_access *a, int size)
-{
-	void *x = malloc(size);
-
-	if (!x)
-		a->error("Out of memory (allocation of %d bytes failed)", size);
-	return x;
-}
-
-void pci_mfree(void *x)
-{
-	if (x)
-		free(x);
-}
-
-static void pci_generic_error(char *msg, ...)
-{
-	va_list args;
-
-	va_start(args, msg);
-	puts("pcilib: ");
-	vprintf(msg, args);
-	putchar('\n');
-	exit(1);
-}
-
-static void pci_generic_warn(char *msg, ...)
-{
-	va_list args;
-
-	va_start(args, msg);
-	puts("pcilib: ");
-	vprintf(msg, args);
-	putchar('\n');
-}
-
-static void pci_generic_debug(char *msg, ...)
-{
-	va_list args;
-
-	va_start(args, msg);
-	vprintf(msg, args);
-	va_end(args);
-}
-
-static void pci_null_debug(char *msg UNUSED, ...)
-{
-}
-
-void pci_init(struct pci_access *a)
-{
-	if (!a->error)
-		a->error = pci_generic_error;
-	if (!a->warning)
-		a->warning = pci_generic_warn;
-	if (!a->debug)
-		a->debug = pci_generic_debug;
-	if (!a->debugging)
-		a->debug = pci_null_debug;
-
-	if (a->method) {
-		if (a->method >= PCI_ACCESS_MAX || !pci_methods[a->method])
-			a->error("This access method is not supported.");
-		a->methods = pci_methods[a->method];
-	} else {
-		unsigned int i;
-		for (i = 0; i < PCI_ACCESS_MAX; i++)
-			if (pci_methods[i]) {
-				a->debug("Trying method %d...", i);
-				if (pci_methods[i]->detect(a)) {
-					a->debug("...OK\n");
-					a->methods = pci_methods[i];
-					a->method = i;
-					break;
-				}
-				a->debug("...No.\n");
-			}
-		if (!a->methods)
-			a->error("Cannot find any working access method.");
-	}
-	a->debug("Decided to use %s\n", a->methods->name);
-	a->methods->init(a);
-}
-
-void pci_cleanup(struct pci_access *a)
-{
-	struct pci_dev *d, *e;
-
-	for (d = a->devices; d; d = e) {
-		e = d->next;
-		pci_free_dev(d);
-	}
-	if (a->methods)
-		a->methods->cleanup(a);
-	pci_free_name_list(a);
-	pci_mfree(a);
-}
-
-void pci_scan_bus(struct pci_access *a)
-{
-	a->methods->scan(a);
-}
-
-struct pci_dev *pci_alloc_dev(struct pci_access *a)
-{
-	struct pci_dev *d = pci_malloc(a, sizeof(struct pci_dev));
-
-	bzero(d, sizeof(*d));
-	d->access = a;
-	d->methods = a->methods;
-	d->hdrtype = -1;
-	if (d->methods->init_dev)
-		d->methods->init_dev(d);
-	return d;
-}
-
-int pci_link_dev(struct pci_access *a, struct pci_dev *d)
-{
-	d->next = a->devices;
-	a->devices = d;
-
-	return 1;
-}
-
-struct pci_dev *pci_get_dev(struct pci_access *a, int domain, int bus,
-			    int dev, int func)
-{
-	struct pci_dev *d = pci_alloc_dev(a);
-
-	d->domain = domain;
-	d->bus = bus;
-	d->dev = dev;
-	d->func = func;
-	return d;
-}
-
-void pci_free_dev(struct pci_dev *d)
-{
-	if (d->methods->cleanup_dev)
-		d->methods->cleanup_dev(d);
-	pci_mfree(d);
-}
-
-static inline void
-pci_read_data(struct pci_dev *d, void *buf, int pos, int len)
-{
-	if (pos & (len - 1))
-		d->access->error("Unaligned read: pos=%02x, len=%d", pos,
-				 len);
-	if (pos + len <= d->cache_len)
-		memcpy(buf, d->cache + pos, len);
-	else if (!d->methods->read(d, pos, buf, len))
-		memset(buf, 0xff, len);
-}
-
-byte pci_read_byte(struct pci_dev *d, int pos)
-{
-	byte buf;
-	pci_read_data(d, &buf, pos, 1);
-	return buf;
-}
-
-word pci_read_word(struct pci_dev * d, int pos)
-{
-	word buf;
-	pci_read_data(d, &buf, pos, 2);
-	return le16_to_cpu(buf);
-}
-
-u32 pci_read_long(struct pci_dev * d, int pos)
-{
-	u32 buf;
-	pci_read_data(d, &buf, pos, 4);
-	return le32_to_cpu(buf);
-}
-
-int pci_read_block(struct pci_dev *d, int pos, byte * buf, int len)
-{
-	return d->methods->read(d, pos, buf, len);
-}
-
-static inline int
-pci_write_data(struct pci_dev *d, void *buf, int pos, int len)
-{
-	if (pos & (len - 1))
-		d->access->error("Unaligned write: pos=%02x,len=%d", pos, len);
-	if (pos + len <= d->cache_len)
-		memcpy(d->cache + pos, buf, len);
-	return d->methods->write(d, pos, buf, len);
-}
-
-int pci_write_byte(struct pci_dev *d, int pos, byte data)
-{
-	return pci_write_data(d, &data, pos, 1);
-}
-
-int pci_write_word(struct pci_dev *d, int pos, word data)
-{
-	word buf = cpu_to_le16(data);
-	return pci_write_data(d, &buf, pos, 2);
-}
-
-int pci_write_long(struct pci_dev *d, int pos, u32 data)
-{
-	u32 buf = cpu_to_le32(data);
-	return pci_write_data(d, &buf, pos, 4);
-}
-
-int pci_write_block(struct pci_dev *d, int pos, byte * buf, int len)
-{
-	if (pos < d->cache_len) {
-		int l = (pos + len >= d->cache_len) ? (d->cache_len - pos) : len;
-		memcpy(d->cache + pos, buf, l);
-	}
-	return d->methods->write(d, pos, buf, len);
-}
-
-int pci_fill_info(struct pci_dev *d, int flags)
-{
-	if (flags & PCI_FILL_RESCAN) {
-		flags &= ~PCI_FILL_RESCAN;
-		d->known_fields = 0;
-	}
-	if (flags & ~d->known_fields)
-		d->known_fields |= d->methods->fill_info(d, flags & ~d->known_fields);
-	return d->known_fields;
-}
-
-void pci_setup_cache(struct pci_dev *d, byte * cache, int len)
-{
-	d->cache = cache;
-	d->cache_len = len;
-}
Index: uspace/srv/pci/libpci/generic.c
===================================================================
--- uspace/srv/pci/libpci/generic.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,206 +1,0 @@
-/*
- *	The PCI Library -- Generic Direct Access Functions
- *
- *	Copyright (c) 1997--2000 Martin Mares <mj@ucw.cz>
- *
- *	May 8, 2006 - Modified and ported to HelenOS by Jakub Jermar.
- *
- *	Can be freely distributed and used under the terms of the GNU GPL.
- */
-
-#include <string.h>
-
-#include "internal.h"
-
-void pci_generic_scan_bus(struct pci_access *a, byte * busmap, int bus)
-{
-	int dev, multi, ht;
-	struct pci_dev *t;
-
-	a->debug("Scanning bus %02x for devices...\n", bus);
-	if (busmap[bus]) {
-		a->warning("Bus %02x seen twice (firmware bug). Ignored.",
-			   bus);
-		return;
-	}
-	busmap[bus] = 1;
-	t = pci_alloc_dev(a);
-	t->bus = bus;
-	for (dev = 0; dev < 32; dev++) {
-		t->dev = dev;
-		multi = 0;
-		for (t->func = 0; !t->func || (multi && t->func < 8);
-		     t->func++) {
-			u32 vd = pci_read_long(t, PCI_VENDOR_ID);
-			struct pci_dev *d;
-
-			if (!vd || vd == 0xffffffff)
-				continue;
-			ht = pci_read_byte(t, PCI_HEADER_TYPE);
-			if (!t->func)
-				multi = ht & 0x80;
-			ht &= 0x7f;
-			d = pci_alloc_dev(a);
-			d->bus = t->bus;
-			d->dev = t->dev;
-			d->func = t->func;
-			d->vendor_id = vd & 0xffff;
-			d->device_id = vd >> 16U;
-			d->known_fields = PCI_FILL_IDENT;
-			d->hdrtype = ht;
-			pci_link_dev(a, d);
-			switch (ht) {
-			case PCI_HEADER_TYPE_NORMAL:
-				break;
-			case PCI_HEADER_TYPE_BRIDGE:
-			case PCI_HEADER_TYPE_CARDBUS:
-				pci_generic_scan_bus(a, busmap,
-						     pci_read_byte(t,
-								   PCI_SECONDARY_BUS));
-				break;
-			default:
-				a->debug
-				    ("Device %04x:%02x:%02x.%d has unknown header type %02x.\n",
-				     d->domain, d->bus, d->dev, d->func,
-				     ht);
-			}
-		}
-	}
-	pci_free_dev(t);
-}
-
-void pci_generic_scan(struct pci_access *a)
-{
-	byte busmap[256];
-
-	bzero(busmap, sizeof(busmap));
-	pci_generic_scan_bus(a, busmap, 0);
-}
-
-int pci_generic_fill_info(struct pci_dev *d, int flags)
-{
-	struct pci_access *a = d->access;
-
-	if ((flags & (PCI_FILL_BASES | PCI_FILL_ROM_BASE))
-	    && d->hdrtype < 0)
-		d->hdrtype = pci_read_byte(d, PCI_HEADER_TYPE) & 0x7f;
-	if (flags & PCI_FILL_IDENT) {
-		d->vendor_id = pci_read_word(d, PCI_VENDOR_ID);
-		d->device_id = pci_read_word(d, PCI_DEVICE_ID);
-	}
-	if (flags & PCI_FILL_IRQ)
-		d->irq = pci_read_byte(d, PCI_INTERRUPT_LINE);
-	if (flags & PCI_FILL_BASES) {
-		int cnt = 0, i;
-		bzero(d->base_addr, sizeof(d->base_addr));
-		switch (d->hdrtype) {
-		case PCI_HEADER_TYPE_NORMAL:
-			cnt = 6;
-			break;
-		case PCI_HEADER_TYPE_BRIDGE:
-			cnt = 2;
-			break;
-		case PCI_HEADER_TYPE_CARDBUS:
-			cnt = 1;
-			break;
-		}
-		if (cnt) {
-			for (i = 0; i < cnt; i++) {
-				u32 x = pci_read_long(d, PCI_BASE_ADDRESS_0 + i * 4);
-				if (!x || x == (u32) ~ 0)
-					continue;
-				if ((x & PCI_BASE_ADDRESS_SPACE) == PCI_BASE_ADDRESS_SPACE_IO)
-					d->base_addr[i] = x;
-				else {
-					if ((x & PCI_BASE_ADDRESS_MEM_TYPE_MASK) != PCI_BASE_ADDRESS_MEM_TYPE_64)
-						d->base_addr[i] = x;
-					else if (i >= cnt - 1)
-						a->warning("%04x:%02x:%02x.%d: Invalid 64-bit address seen for BAR %d.",
-						     d->domain, d->bus,
-						     d->dev, d->func, i);
-					else {
-						u32 y = pci_read_long(d, PCI_BASE_ADDRESS_0 + (++i) * 4);
-#ifdef PCI_HAVE_64BIT_ADDRESS
-						d->base_addr[i - 1] = x | (((pciaddr_t) y) << 32);
-#else
-						if (y)
-							a->warning("%04x:%02x:%02x.%d 64-bit device address ignored.",
-							     d->domain,
-							     d->bus,
-							     d->dev,
-							     d->func);
-						else
-							d->base_addr[i - 1] = x;
-#endif
-					}
-				}
-			}
-		}
-	}
-	if (flags & PCI_FILL_ROM_BASE) {
-		int reg = 0;
-		d->rom_base_addr = 0;
-		switch (d->hdrtype) {
-		case PCI_HEADER_TYPE_NORMAL:
-			reg = PCI_ROM_ADDRESS;
-			break;
-		case PCI_HEADER_TYPE_BRIDGE:
-			reg = PCI_ROM_ADDRESS1;
-			break;
-		}
-		if (reg) {
-			u32 u = pci_read_long(d, reg);
-			if (u != 0xffffffff)
-				d->rom_base_addr = u;
-		}
-	}
-	return flags & ~PCI_FILL_SIZES;
-}
-
-static int
-pci_generic_block_op(struct pci_dev *d, int pos, byte * buf, int len,
-		     int (*r) (struct pci_dev * d, int pos, byte * buf,
-			       int len))
-{
-	if ((pos & 1) && len >= 1) {
-		if (!r(d, pos, buf, 1))
-			return 0;
-		pos++;
-		buf++;
-		len--;
-	}
-	if ((pos & 3) && len >= 2) {
-		if (!r(d, pos, buf, 2))
-			return 0;
-		pos += 2;
-		buf += 2;
-		len -= 2;
-	}
-	while (len >= 4) {
-		if (!r(d, pos, buf, 4))
-			return 0;
-		pos += 4;
-		buf += 4;
-		len -= 4;
-	}
-	if (len >= 2) {
-		if (!r(d, pos, buf, 2))
-			return 0;
-		pos += 2;
-		buf += 2;
-		len -= 2;
-	}
-	if (len && !r(d, pos, buf, 1))
-		return 0;
-	return 1;
-}
-
-int pci_generic_block_read(struct pci_dev *d, int pos, byte * buf, int len)
-{
-	return pci_generic_block_op(d, pos, buf, len, d->access->methods->read);
-}
-
-int pci_generic_block_write(struct pci_dev *d, int pos, byte * buf, int len)
-{
-	return pci_generic_block_op(d, pos, buf, len, d->access->methods->write);
-}
Index: uspace/srv/pci/libpci/header.h
===================================================================
--- uspace/srv/pci/libpci/header.h	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,937 +1,0 @@
-/*
- *	The PCI Library -- PCI Header Structure (based on <linux/pci.h>)
- *
- *	Copyright (c) 1997--2005 Martin Mares <mj@ucw.cz>
- *
- *	May 8, 2006 - Modified and ported to HelenOS by Jakub Jermar.
- *
- *	Can be freely distributed and used under the terms of the GNU GPL.
- */
-
-/*
- * Under PCI, each device has 256 bytes of configuration address space,
- * of which the first 64 bytes are standardized as follows:
- */
-#define PCI_VENDOR_ID		0x00	/* 16 bits */
-#define PCI_DEVICE_ID		0x02	/* 16 bits */
-#define PCI_COMMAND		0x04	/* 16 bits */
-#define  PCI_COMMAND_IO		0x1	/* Enable response in I/O space */
-#define  PCI_COMMAND_MEMORY	0x2	/* Enable response in Memory space */
-#define  PCI_COMMAND_MASTER	0x4	/* Enable bus mastering */
-#define  PCI_COMMAND_SPECIAL	0x8	/* Enable response to special cycles */
-#define  PCI_COMMAND_INVALIDATE	0x10	/* Use memory write and invalidate */
-#define  PCI_COMMAND_VGA_PALETTE 0x20	/* Enable palette snooping */
-#define  PCI_COMMAND_PARITY	0x40	/* Enable parity checking */
-#define  PCI_COMMAND_WAIT 	0x80	/* Enable address/data stepping */
-#define  PCI_COMMAND_SERR	0x100	/* Enable SERR */
-#define  PCI_COMMAND_FAST_BACK	0x200	/* Enable back-to-back writes */
-
-#define PCI_STATUS		0x06	/* 16 bits */
-#define  PCI_STATUS_CAP_LIST	0x10	/* Support Capability List */
-#define  PCI_STATUS_66MHZ	0x20	/* Support 66 Mhz PCI 2.1 bus */
-#define  PCI_STATUS_UDF		0x40	/* Support User Definable Features [obsolete] */
-#define  PCI_STATUS_FAST_BACK	0x80	/* Accept fast-back to back */
-#define  PCI_STATUS_PARITY	0x100	/* Detected parity error */
-#define  PCI_STATUS_DEVSEL_MASK	0x600	/* DEVSEL timing */
-#define  PCI_STATUS_DEVSEL_FAST	0x000
-#define  PCI_STATUS_DEVSEL_MEDIUM 0x200
-#define  PCI_STATUS_DEVSEL_SLOW 0x400
-#define  PCI_STATUS_SIG_TARGET_ABORT 0x800	/* Set on target abort */
-#define  PCI_STATUS_REC_TARGET_ABORT 0x1000	/* Master ack of " */
-#define  PCI_STATUS_REC_MASTER_ABORT 0x2000	/* Set on master abort */
-#define  PCI_STATUS_SIG_SYSTEM_ERROR 0x4000	/* Set when we drive SERR */
-#define  PCI_STATUS_DETECTED_PARITY 0x8000	/* Set on parity error */
-
-#define PCI_CLASS_REVISION	0x08	/* High 24 bits are class, low 8
-					   revision */
-#define PCI_REVISION_ID         0x08	/* Revision ID */
-#define PCI_CLASS_PROG          0x09	/* Reg. Level Programming Interface */
-#define PCI_CLASS_DEVICE        0x0a	/* Device class */
-
-#define PCI_CACHE_LINE_SIZE	0x0c	/* 8 bits */
-#define PCI_LATENCY_TIMER	0x0d	/* 8 bits */
-#define PCI_HEADER_TYPE		0x0e	/* 8 bits */
-#define  PCI_HEADER_TYPE_NORMAL	0
-#define  PCI_HEADER_TYPE_BRIDGE 1
-#define  PCI_HEADER_TYPE_CARDBUS 2
-
-#define PCI_BIST		0x0f	/* 8 bits */
-#define PCI_BIST_CODE_MASK	0x0f	/* Return result */
-#define PCI_BIST_START		0x40	/* 1 to start BIST, 2 secs or less */
-#define PCI_BIST_CAPABLE	0x80	/* 1 if BIST capable */
-
-/*
- * Base addresses specify locations in memory or I/O space.
- * Decoded size can be determined by writing a value of 
- * 0xffffffff to the register, and reading it back.  Only 
- * 1 bits are decoded.
- */
-#define PCI_BASE_ADDRESS_0	0x10	/* 32 bits */
-#define PCI_BASE_ADDRESS_1	0x14	/* 32 bits [htype 0,1 only] */
-#define PCI_BASE_ADDRESS_2	0x18	/* 32 bits [htype 0 only] */
-#define PCI_BASE_ADDRESS_3	0x1c	/* 32 bits */
-#define PCI_BASE_ADDRESS_4	0x20	/* 32 bits */
-#define PCI_BASE_ADDRESS_5	0x24	/* 32 bits */
-#define  PCI_BASE_ADDRESS_SPACE	0x01	/* 0 = memory, 1 = I/O */
-#define  PCI_BASE_ADDRESS_SPACE_IO 0x01
-#define  PCI_BASE_ADDRESS_SPACE_MEMORY 0x00
-#define  PCI_BASE_ADDRESS_MEM_TYPE_MASK 0x06
-#define  PCI_BASE_ADDRESS_MEM_TYPE_32	0x00	/* 32 bit address */
-#define  PCI_BASE_ADDRESS_MEM_TYPE_1M	0x02	/* Below 1M [obsolete] */
-#define  PCI_BASE_ADDRESS_MEM_TYPE_64	0x04	/* 64 bit address */
-#define  PCI_BASE_ADDRESS_MEM_PREFETCH	0x08	/* prefetchable? */
-#define  PCI_BASE_ADDRESS_MEM_MASK	(~(pciaddr_t)0x0f)
-#define  PCI_BASE_ADDRESS_IO_MASK	(~(pciaddr_t)0x03)
-/* bit 1 is reserved if address_space = 1 */
-
-/* Header type 0 (normal devices) */
-#define PCI_CARDBUS_CIS		0x28
-#define PCI_SUBSYSTEM_VENDOR_ID	0x2c
-#define PCI_SUBSYSTEM_ID	0x2e
-#define PCI_ROM_ADDRESS		0x30	/* Bits 31..11 are address, 10..1 reserved */
-#define  PCI_ROM_ADDRESS_ENABLE	0x01
-#define PCI_ROM_ADDRESS_MASK	(~(pciaddr_t)0x7ff)
-
-#define PCI_CAPABILITY_LIST	0x34	/* Offset of first capability list entry */
-
-/* 0x35-0x3b are reserved */
-#define PCI_INTERRUPT_LINE	0x3c	/* 8 bits */
-#define PCI_INTERRUPT_PIN	0x3d	/* 8 bits */
-#define PCI_MIN_GNT		0x3e	/* 8 bits */
-#define PCI_MAX_LAT		0x3f	/* 8 bits */
-
-/* Header type 1 (PCI-to-PCI bridges) */
-#define PCI_PRIMARY_BUS		0x18	/* Primary bus number */
-#define PCI_SECONDARY_BUS	0x19	/* Secondary bus number */
-#define PCI_SUBORDINATE_BUS	0x1a	/* Highest bus number behind the bridge */
-#define PCI_SEC_LATENCY_TIMER	0x1b	/* Latency timer for secondary interface */
-#define PCI_IO_BASE		0x1c	/* I/O range behind the bridge */
-#define PCI_IO_LIMIT		0x1d
-#define  PCI_IO_RANGE_TYPE_MASK	0x0f	/* I/O bridging type */
-#define  PCI_IO_RANGE_TYPE_16	0x00
-#define  PCI_IO_RANGE_TYPE_32	0x01
-#define  PCI_IO_RANGE_MASK	~0x0f
-#define PCI_SEC_STATUS		0x1e	/* Secondary status register */
-#define PCI_MEMORY_BASE		0x20	/* Memory range behind */
-#define PCI_MEMORY_LIMIT	0x22
-#define  PCI_MEMORY_RANGE_TYPE_MASK 0x0f
-#define  PCI_MEMORY_RANGE_MASK	~0x0f
-#define PCI_PREF_MEMORY_BASE	0x24	/* Prefetchable memory range behind */
-#define PCI_PREF_MEMORY_LIMIT	0x26
-#define  PCI_PREF_RANGE_TYPE_MASK 0x0f
-#define  PCI_PREF_RANGE_TYPE_32	0x00
-#define  PCI_PREF_RANGE_TYPE_64	0x01
-#define  PCI_PREF_RANGE_MASK	~0x0f
-#define PCI_PREF_BASE_UPPER32	0x28	/* Upper half of prefetchable memory range */
-#define PCI_PREF_LIMIT_UPPER32	0x2c
-#define PCI_IO_BASE_UPPER16	0x30	/* Upper half of I/O addresses */
-#define PCI_IO_LIMIT_UPPER16	0x32
-/* 0x34 same as for htype 0 */
-/* 0x35-0x3b is reserved */
-#define PCI_ROM_ADDRESS1	0x38	/* Same as PCI_ROM_ADDRESS, but for htype 1 */
-/* 0x3c-0x3d are same as for htype 0 */
-#define PCI_BRIDGE_CONTROL	0x3e
-#define  PCI_BRIDGE_CTL_PARITY	0x01	/* Enable parity detection on secondary interface */
-#define  PCI_BRIDGE_CTL_SERR	0x02	/* The same for SERR forwarding */
-#define  PCI_BRIDGE_CTL_NO_ISA	0x04	/* Disable bridging of ISA ports */
-#define  PCI_BRIDGE_CTL_VGA	0x08	/* Forward VGA addresses */
-#define  PCI_BRIDGE_CTL_MASTER_ABORT 0x20	/* Report master aborts */
-#define  PCI_BRIDGE_CTL_BUS_RESET 0x40	/* Secondary bus reset */
-#define  PCI_BRIDGE_CTL_FAST_BACK 0x80	/* Fast Back2Back enabled on secondary interface */
-
-/* Header type 2 (CardBus bridges) */
-/* 0x14-0x15 reserved */
-#define PCI_CB_SEC_STATUS	0x16	/* Secondary status */
-#define PCI_CB_PRIMARY_BUS	0x18	/* PCI bus number */
-#define PCI_CB_CARD_BUS		0x19	/* CardBus bus number */
-#define PCI_CB_SUBORDINATE_BUS	0x1a	/* Subordinate bus number */
-#define PCI_CB_LATENCY_TIMER	0x1b	/* CardBus latency timer */
-#define PCI_CB_MEMORY_BASE_0	0x1c
-#define PCI_CB_MEMORY_LIMIT_0	0x20
-#define PCI_CB_MEMORY_BASE_1	0x24
-#define PCI_CB_MEMORY_LIMIT_1	0x28
-#define PCI_CB_IO_BASE_0	0x2c
-#define PCI_CB_IO_BASE_0_HI	0x2e
-#define PCI_CB_IO_LIMIT_0	0x30
-#define PCI_CB_IO_LIMIT_0_HI	0x32
-#define PCI_CB_IO_BASE_1	0x34
-#define PCI_CB_IO_BASE_1_HI	0x36
-#define PCI_CB_IO_LIMIT_1	0x38
-#define PCI_CB_IO_LIMIT_1_HI	0x3a
-#define  PCI_CB_IO_RANGE_MASK	~0x03
-/* 0x3c-0x3d are same as for htype 0 */
-#define PCI_CB_BRIDGE_CONTROL	0x3e
-#define  PCI_CB_BRIDGE_CTL_PARITY	0x01	/* Similar to standard bridge control register */
-#define  PCI_CB_BRIDGE_CTL_SERR		0x02
-#define  PCI_CB_BRIDGE_CTL_ISA		0x04
-#define  PCI_CB_BRIDGE_CTL_VGA		0x08
-#define  PCI_CB_BRIDGE_CTL_MASTER_ABORT	0x20
-#define  PCI_CB_BRIDGE_CTL_CB_RESET	0x40	/* CardBus reset */
-#define  PCI_CB_BRIDGE_CTL_16BIT_INT	0x80	/* Enable interrupt for 16-bit cards */
-#define  PCI_CB_BRIDGE_CTL_PREFETCH_MEM0 0x100	/* Prefetch enable for both memory regions */
-#define  PCI_CB_BRIDGE_CTL_PREFETCH_MEM1 0x200
-#define  PCI_CB_BRIDGE_CTL_POST_WRITES	0x400
-#define PCI_CB_SUBSYSTEM_VENDOR_ID 0x40
-#define PCI_CB_SUBSYSTEM_ID	0x42
-#define PCI_CB_LEGACY_MODE_BASE	0x44	/* 16-bit PC Card legacy mode base address (ExCa) */
-/* 0x48-0x7f reserved */
-
-/* Capability lists */
-
-#define PCI_CAP_LIST_ID		0	/* Capability ID */
-#define  PCI_CAP_ID_PM		0x01	/* Power Management */
-#define  PCI_CAP_ID_AGP		0x02	/* Accelerated Graphics Port */
-#define  PCI_CAP_ID_VPD		0x03	/* Vital Product Data */
-#define  PCI_CAP_ID_SLOTID	0x04	/* Slot Identification */
-#define  PCI_CAP_ID_MSI		0x05	/* Message Signalled Interrupts */
-#define  PCI_CAP_ID_CHSWP	0x06	/* CompactPCI HotSwap */
-#define  PCI_CAP_ID_PCIX        0x07	/* PCI-X */
-#define  PCI_CAP_ID_HT          0x08	/* HyperTransport */
-#define  PCI_CAP_ID_VNDR	0x09	/* Vendor specific */
-#define  PCI_CAP_ID_DBG		0x0A	/* Debug port */
-#define  PCI_CAP_ID_CCRC	0x0B	/* CompactPCI Central Resource Control */
-#define  PCI_CAP_ID_AGP3	0x0E	/* AGP 8x */
-#define  PCI_CAP_ID_EXP		0x10	/* PCI Express */
-#define  PCI_CAP_ID_MSIX	0x11	/* MSI-X */
-#define PCI_CAP_LIST_NEXT	1	/* Next capability in the list */
-#define PCI_CAP_FLAGS		2	/* Capability defined flags (16 bits) */
-#define PCI_CAP_SIZEOF		4
-
-/* Capabilities residing in the PCI Express extended configuration space */
-
-#define PCI_EXT_CAP_ID_AER	0x01	/* Advanced Error Reporting */
-#define PCI_EXT_CAP_ID_VC	0x02	/* Virtual Channel */
-#define PCI_EXT_CAP_ID_DSN	0x03	/* Device Serial Number */
-#define PCI_EXT_CAP_ID_PB	0x04	/* Power Budgeting */
-
-/* Power Management Registers */
-
-#define  PCI_PM_CAP_VER_MASK	0x0007	/* Version (2=PM1.1) */
-#define  PCI_PM_CAP_PME_CLOCK	0x0008	/* Clock required for PME generation */
-#define  PCI_PM_CAP_DSI		0x0020	/* Device specific initialization required */
-#define  PCI_PM_CAP_AUX_C_MASK	0x01c0	/* Maximum aux current required in D3cold */
-#define  PCI_PM_CAP_D1		0x0200	/* D1 power state support */
-#define  PCI_PM_CAP_D2		0x0400	/* D2 power state support */
-#define  PCI_PM_CAP_PME_D0	0x0800	/* PME can be asserted from D0 */
-#define  PCI_PM_CAP_PME_D1	0x1000	/* PME can be asserted from D1 */
-#define  PCI_PM_CAP_PME_D2	0x2000	/* PME can be asserted from D2 */
-#define  PCI_PM_CAP_PME_D3_HOT	0x4000	/* PME can be asserted from D3hot */
-#define  PCI_PM_CAP_PME_D3_COLD	0x8000	/* PME can be asserted from D3cold */
-#define PCI_PM_CTRL		4	/* PM control and status register */
-#define  PCI_PM_CTRL_STATE_MASK	0x0003	/* Current power state (D0 to D3) */
-#define  PCI_PM_CTRL_PME_ENABLE	0x0100	/* PME pin enable */
-#define  PCI_PM_CTRL_DATA_SEL_MASK	0x1e00	/* PM table data index */
-#define  PCI_PM_CTRL_DATA_SCALE_MASK	0x6000	/* PM table data scaling factor */
-#define  PCI_PM_CTRL_PME_STATUS	0x8000	/* PME pin status */
-#define PCI_PM_PPB_EXTENSIONS	6	/* PPB support extensions */
-#define  PCI_PM_PPB_B2_B3	0x40	/* If bridge enters D3hot, bus enters: 0=B3, 1=B2 */
-#define  PCI_PM_BPCC_ENABLE	0x80	/* Secondary bus is power managed */
-#define PCI_PM_DATA_REGISTER	7	/* PM table contents read here */
-#define PCI_PM_SIZEOF		8
-
-/* AGP registers */
-
-#define PCI_AGP_VERSION		2	/* BCD version number */
-#define PCI_AGP_RFU		3	/* Rest of capability flags */
-#define PCI_AGP_STATUS		4	/* Status register */
-#define  PCI_AGP_STATUS_RQ_MASK	0xff000000	/* Maximum number of requests - 1 */
-#define  PCI_AGP_STATUS_ISOCH	0x10000	/* Isochronous transactions supported */
-#define  PCI_AGP_STATUS_ARQSZ_MASK	0xe000	/* log2(optimum async req size in bytes) - 4 */
-#define  PCI_AGP_STATUS_CAL_MASK	0x1c00	/* Calibration cycle timing */
-#define  PCI_AGP_STATUS_SBA	0x0200	/* Sideband addressing supported */
-#define  PCI_AGP_STATUS_ITA_COH	0x0100	/* In-aperture accesses always coherent */
-#define  PCI_AGP_STATUS_GART64	0x0080	/* 64-bit GART entries supported */
-#define  PCI_AGP_STATUS_HTRANS	0x0040	/* If 0, core logic can xlate host CPU accesses thru aperture */
-#define  PCI_AGP_STATUS_64BIT	0x0020	/* 64-bit addressing cycles supported */
-#define  PCI_AGP_STATUS_FW	0x0010	/* Fast write transfers supported */
-#define  PCI_AGP_STATUS_AGP3	0x0008	/* AGP3 mode supported */
-#define  PCI_AGP_STATUS_RATE4	0x0004	/* 4x transfer rate supported (RFU in AGP3 mode) */
-#define  PCI_AGP_STATUS_RATE2	0x0002	/* 2x transfer rate supported (8x in AGP3 mode) */
-#define  PCI_AGP_STATUS_RATE1	0x0001	/* 1x transfer rate supported (4x in AGP3 mode) */
-#define PCI_AGP_COMMAND		8	/* Control register */
-#define  PCI_AGP_COMMAND_RQ_MASK 0xff000000	/* Master: Maximum number of requests */
-#define  PCI_AGP_COMMAND_ARQSZ_MASK	0xe000	/* log2(optimum async req size in bytes) - 4 */
-#define  PCI_AGP_COMMAND_CAL_MASK	0x1c00	/* Calibration cycle timing */
-#define  PCI_AGP_COMMAND_SBA	0x0200	/* Sideband addressing enabled */
-#define  PCI_AGP_COMMAND_AGP	0x0100	/* Allow processing of AGP transactions */
-#define  PCI_AGP_COMMAND_GART64	0x0080	/* 64-bit GART entries enabled */
-#define  PCI_AGP_COMMAND_64BIT	0x0020	/* Allow generation of 64-bit addr cycles */
-#define  PCI_AGP_COMMAND_FW	0x0010	/* Enable FW transfers */
-#define  PCI_AGP_COMMAND_RATE4	0x0004	/* Use 4x rate (RFU in AGP3 mode) */
-#define  PCI_AGP_COMMAND_RATE2	0x0002	/* Use 2x rate (8x in AGP3 mode) */
-#define  PCI_AGP_COMMAND_RATE1	0x0001	/* Use 1x rate (4x in AGP3 mode) */
-#define PCI_AGP_SIZEOF		12
-
-/* Slot Identification */
-
-#define PCI_SID_ESR		2	/* Expansion Slot Register */
-#define  PCI_SID_ESR_NSLOTS	0x1f	/* Number of expansion slots available */
-#define  PCI_SID_ESR_FIC	0x20	/* First In Chassis Flag */
-#define PCI_SID_CHASSIS_NR	3	/* Chassis Number */
-
-/* Message Signalled Interrupts registers */
-
-#define PCI_MSI_FLAGS		2	/* Various flags */
-#define  PCI_MSI_FLAGS_64BIT	0x80	/* 64-bit addresses allowed */
-#define  PCI_MSI_FLAGS_QSIZE	0x70	/* Message queue size configured */
-#define  PCI_MSI_FLAGS_QMASK	0x0e	/* Maximum queue size available */
-#define  PCI_MSI_FLAGS_ENABLE	0x01	/* MSI feature enabled */
-#define PCI_MSI_RFU		3	/* Rest of capability flags */
-#define PCI_MSI_ADDRESS_LO	4	/* Lower 32 bits */
-#define PCI_MSI_ADDRESS_HI	8	/* Upper 32 bits (if PCI_MSI_FLAGS_64BIT set) */
-#define PCI_MSI_DATA_32		8	/* 16 bits of data for 32-bit devices */
-#define PCI_MSI_DATA_64		12	/* 16 bits of data for 64-bit devices */
-
-/* PCI-X */
-#define PCI_PCIX_COMMAND                                                2	/* Command register offset */
-#define PCI_PCIX_COMMAND_DPERE                                     0x0001	/* Data Parity Error Recover Enable */
-#define PCI_PCIX_COMMAND_ERO                                       0x0002	/* Enable Relaxed Ordering */
-#define PCI_PCIX_COMMAND_MAX_MEM_READ_BYTE_COUNT                   0x000c	/* Maximum Memory Read Byte Count */
-#define PCI_PCIX_COMMAND_MAX_OUTSTANDING_SPLIT_TRANS               0x0070
-#define PCI_PCIX_COMMAND_RESERVED                                   0xf80
-#define PCI_PCIX_STATUS                                                 4	/* Status register offset */
-#define PCI_PCIX_STATUS_FUNCTION                               0x00000007
-#define PCI_PCIX_STATUS_DEVICE                                 0x000000f8
-#define PCI_PCIX_STATUS_BUS                                    0x0000ff00
-#define PCI_PCIX_STATUS_64BIT                                  0x00010000
-#define PCI_PCIX_STATUS_133MHZ                                 0x00020000
-#define PCI_PCIX_STATUS_SC_DISCARDED                           0x00040000	/* Split Completion Discarded */
-#define PCI_PCIX_STATUS_UNEXPECTED_SC                          0x00080000	/* Unexpected Split Completion */
-#define PCI_PCIX_STATUS_DEVICE_COMPLEXITY                      0x00100000	/* 0 = simple device, 1 = bridge device */
-#define PCI_PCIX_STATUS_DESIGNED_MAX_MEM_READ_BYTE_COUNT       0x00600000	/* 0 = 512 bytes, 1 = 1024, 2 = 2048, 3 = 4096 */
-#define PCI_PCIX_STATUS_DESIGNED_MAX_OUTSTANDING_SPLIT_TRANS   0x03800000
-#define PCI_PCIX_STATUS_DESIGNED_MAX_CUMULATIVE_READ_SIZE      0x1c000000
-#define PCI_PCIX_STATUS_RCVD_SC_ERR_MESS                       0x20000000	/* Received Split Completion Error Message */
-#define PCI_PCIX_STATUS_266MHZ				       0x40000000	/* 266 MHz capable */
-#define PCI_PCIX_STATUS_533MHZ				       0x80000000	/* 533 MHz capable */
-#define PCI_PCIX_SIZEOF		4
-
-/* PCI-X Bridges */
-#define PCI_PCIX_BRIDGE_SEC_STATUS                                      2	/* Secondary bus status register offset */
-#define PCI_PCIX_BRIDGE_SEC_STATUS_64BIT                           0x0001
-#define PCI_PCIX_BRIDGE_SEC_STATUS_133MHZ                          0x0002
-#define PCI_PCIX_BRIDGE_SEC_STATUS_SC_DISCARDED                    0x0004	/* Split Completion Discarded on secondary bus */
-#define PCI_PCIX_BRIDGE_SEC_STATUS_UNEXPECTED_SC                   0x0008	/* Unexpected Split Completion on secondary bus */
-#define PCI_PCIX_BRIDGE_SEC_STATUS_SC_OVERRUN                      0x0010	/* Split Completion Overrun on secondary bus */
-#define PCI_PCIX_BRIDGE_SEC_STATUS_SPLIT_REQUEST_DELAYED           0x0020
-#define PCI_PCIX_BRIDGE_SEC_STATUS_CLOCK_FREQ                      0x01c0
-#define PCI_PCIX_BRIDGE_SEC_STATUS_RESERVED                        0xfe00
-#define PCI_PCIX_BRIDGE_STATUS                                          4	/* Primary bus status register offset */
-#define PCI_PCIX_BRIDGE_STATUS_FUNCTION                        0x00000007
-#define PCI_PCIX_BRIDGE_STATUS_DEVICE                          0x000000f8
-#define PCI_PCIX_BRIDGE_STATUS_BUS                             0x0000ff00
-#define PCI_PCIX_BRIDGE_STATUS_64BIT                           0x00010000
-#define PCI_PCIX_BRIDGE_STATUS_133MHZ                          0x00020000
-#define PCI_PCIX_BRIDGE_STATUS_SC_DISCARDED                    0x00040000	/* Split Completion Discarded */
-#define PCI_PCIX_BRIDGE_STATUS_UNEXPECTED_SC                   0x00080000	/* Unexpected Split Completion */
-#define PCI_PCIX_BRIDGE_STATUS_SC_OVERRUN                      0x00100000	/* Split Completion Overrun */
-#define PCI_PCIX_BRIDGE_STATUS_SPLIT_REQUEST_DELAYED           0x00200000
-#define PCI_PCIX_BRIDGE_STATUS_RESERVED                        0xffc00000
-#define PCI_PCIX_BRIDGE_UPSTREAM_SPLIT_TRANS_CTRL                       8	/* Upstream Split Transaction Register offset */
-#define PCI_PCIX_BRIDGE_DOWNSTREAM_SPLIT_TRANS_CTRL                    12	/* Downstream Split Transaction Register offset */
-#define PCI_PCIX_BRIDGE_STR_CAPACITY                           0x0000ffff
-#define PCI_PCIX_BRIDGE_STR_COMMITMENT_LIMIT                   0xffff0000
-#define PCI_PCIX_BRIDGE_SIZEOF 12
-
-/* HyperTransport (as of spec rev. 2.00) */
-#define PCI_HT_CMD		2	/* Command Register */
-#define  PCI_HT_CMD_TYP_HI	0xe000	/* Capability Type high part */
-#define  PCI_HT_CMD_TYP_HI_PRI	0x0000	/* Slave or Primary Interface */
-#define  PCI_HT_CMD_TYP_HI_SEC	0x2000	/* Host or Secondary Interface */
-#define  PCI_HT_CMD_TYP		0xf800	/* Capability Type */
-#define  PCI_HT_CMD_TYP_SW	0x4000	/* Switch */
-#define  PCI_HT_CMD_TYP_IDC	0x8000	/* Interrupt Discovery and Configuration */
-#define  PCI_HT_CMD_TYP_RID	0x8800	/* Revision ID */
-#define  PCI_HT_CMD_TYP_UIDC	0x9000	/* UnitID Clumping */
-#define  PCI_HT_CMD_TYP_ECSA	0x9800	/* Extended Configuration Space Access */
-#define  PCI_HT_CMD_TYP_AM	0xa000	/* Address Mapping */
-#define  PCI_HT_CMD_TYP_MSIM	0xa800	/* MSI Mapping */
-#define  PCI_HT_CMD_TYP_DR	0xb000	/* DirectRoute */
-#define  PCI_HT_CMD_TYP_VCS	0xb800	/* VCSet */
-#define  PCI_HT_CMD_TYP_RM	0xc000	/* Retry Mode */
-#define  PCI_HT_CMD_TYP_X86	0xc800	/* X86 (reserved) */
-
-					/* Link Control Register */
-#define  PCI_HT_LCTR_CFLE	0x0002	/* CRC Flood Enable */
-#define  PCI_HT_LCTR_CST	0x0004	/* CRC Start Test */
-#define  PCI_HT_LCTR_CFE	0x0008	/* CRC Force Error */
-#define  PCI_HT_LCTR_LKFAIL	0x0010	/* Link Failure */
-#define  PCI_HT_LCTR_INIT	0x0020	/* Initialization Complete */
-#define  PCI_HT_LCTR_EOC	0x0040	/* End of Chain */
-#define  PCI_HT_LCTR_TXO	0x0080	/* Transmitter Off */
-#define  PCI_HT_LCTR_CRCERR	0x0f00	/* CRC Error */
-#define  PCI_HT_LCTR_ISOCEN	0x1000	/* Isochronous Flow Control Enable */
-#define  PCI_HT_LCTR_LSEN	0x2000	/* LDTSTOP# Tristate Enable */
-#define  PCI_HT_LCTR_EXTCTL	0x4000	/* Extended CTL Time */
-#define  PCI_HT_LCTR_64B	0x8000	/* 64-bit Addressing Enable */
-
-					/* Link Configuration Register */
-#define  PCI_HT_LCNF_MLWI	0x0007	/* Max Link Width In */
-#define  PCI_HT_LCNF_LW_8B	0x0	/* Link Width 8 bits */
-#define  PCI_HT_LCNF_LW_16B	0x1	/* Link Width 16 bits */
-#define  PCI_HT_LCNF_LW_32B	0x3	/* Link Width 32 bits */
-#define  PCI_HT_LCNF_LW_2B	0x4	/* Link Width 2 bits */
-#define  PCI_HT_LCNF_LW_4B	0x5	/* Link Width 4 bits */
-#define  PCI_HT_LCNF_LW_NC	0x7	/* Link physically not connected */
-#define  PCI_HT_LCNF_DFI	0x0008	/* Doubleword Flow Control In */
-#define  PCI_HT_LCNF_MLWO	0x0070	/* Max Link Width Out */
-#define  PCI_HT_LCNF_DFO	0x0080	/* Doubleword Flow Control Out */
-#define  PCI_HT_LCNF_LWI	0x0700	/* Link Width In */
-#define  PCI_HT_LCNF_DFIE	0x0800	/* Doubleword Flow Control In Enable */
-#define  PCI_HT_LCNF_LWO	0x7000	/* Link Width Out */
-#define  PCI_HT_LCNF_DFOE	0x8000	/* Doubleword Flow Control Out Enable */
-
-					/* Revision ID Register */
-#define  PCI_HT_RID_MIN		0x1f	/* Minor Revision */
-#define  PCI_HT_RID_MAJ		0xe0	/* Major Revision */
-
-					/* Link Frequency/Error Register */
-#define  PCI_HT_LFRER_FREQ	0x0f	/* Transmitter Clock Frequency */
-#define  PCI_HT_LFRER_200	0x00	/* 200MHz */
-#define  PCI_HT_LFRER_300	0x01	/* 300MHz */
-#define  PCI_HT_LFRER_400	0x02	/* 400MHz */
-#define  PCI_HT_LFRER_500	0x03	/* 500MHz */
-#define  PCI_HT_LFRER_600	0x04	/* 600MHz */
-#define  PCI_HT_LFRER_800	0x05	/* 800MHz */
-#define  PCI_HT_LFRER_1000	0x06	/* 1.0GHz */
-#define  PCI_HT_LFRER_1200	0x07	/* 1.2GHz */
-#define  PCI_HT_LFRER_1400	0x08	/* 1.4GHz */
-#define  PCI_HT_LFRER_1600	0x09	/* 1.6GHz */
-#define  PCI_HT_LFRER_VEND	0x0f	/* Vendor-Specific */
-#define  PCI_HT_LFRER_ERR	0xf0	/* Link Error */
-#define  PCI_HT_LFRER_PROT	0x10	/* Protocol Error */
-#define  PCI_HT_LFRER_OV	0x20	/* Overflow Error */
-#define  PCI_HT_LFRER_EOC	0x40	/* End of Chain Error */
-#define  PCI_HT_LFRER_CTLT	0x80	/* CTL Timeout */
-
-					/* Link Frequency Capability Register */
-#define  PCI_HT_LFCAP_200	0x0001	/* 200MHz */
-#define  PCI_HT_LFCAP_300	0x0002	/* 300MHz */
-#define  PCI_HT_LFCAP_400	0x0004	/* 400MHz */
-#define  PCI_HT_LFCAP_500	0x0008	/* 500MHz */
-#define  PCI_HT_LFCAP_600	0x0010	/* 600MHz */
-#define  PCI_HT_LFCAP_800	0x0020	/* 800MHz */
-#define  PCI_HT_LFCAP_1000	0x0040	/* 1.0GHz */
-#define  PCI_HT_LFCAP_1200	0x0080	/* 1.2GHz */
-#define  PCI_HT_LFCAP_1400	0x0100	/* 1.4GHz */
-#define  PCI_HT_LFCAP_1600	0x0200	/* 1.6GHz */
-#define  PCI_HT_LFCAP_VEND	0x8000	/* Vendor-Specific */
-
-					/* Feature Register */
-#define  PCI_HT_FTR_ISOCFC	0x0001	/* Isochronous Flow Control Mode */
-#define  PCI_HT_FTR_LDTSTOP	0x0002	/* LDTSTOP# Supported */
-#define  PCI_HT_FTR_CRCTM	0x0004	/* CRC Test Mode */
-#define  PCI_HT_FTR_ECTLT	0x0008	/* Extended CTL Time Required */
-#define  PCI_HT_FTR_64BA	0x0010	/* 64-bit Addressing */
-#define  PCI_HT_FTR_UIDRD	0x0020	/* UnitID Reorder Disable */
-
-					/* Error Handling Register */
-#define  PCI_HT_EH_PFLE		0x0001	/* Protocol Error Flood Enable */
-#define  PCI_HT_EH_OFLE		0x0002	/* Overflow Error Flood Enable */
-#define  PCI_HT_EH_PFE		0x0004	/* Protocol Error Fatal Enable */
-#define  PCI_HT_EH_OFE		0x0008	/* Overflow Error Fatal Enable */
-#define  PCI_HT_EH_EOCFE	0x0010	/* End of Chain Error Fatal Enable */
-#define  PCI_HT_EH_RFE		0x0020	/* Response Error Fatal Enable */
-#define  PCI_HT_EH_CRCFE	0x0040	/* CRC Error Fatal Enable */
-#define  PCI_HT_EH_SERRFE	0x0080	/* System Error Fatal Enable (B */
-#define  PCI_HT_EH_CF		0x0100	/* Chain Fail */
-#define  PCI_HT_EH_RE		0x0200	/* Response Error */
-#define  PCI_HT_EH_PNFE		0x0400	/* Protocol Error Nonfatal Enable */
-#define  PCI_HT_EH_ONFE		0x0800	/* Overflow Error Nonfatal Enable */
-#define  PCI_HT_EH_EOCNFE	0x1000	/* End of Chain Error Nonfatal Enable */
-#define  PCI_HT_EH_RNFE		0x2000	/* Response Error Nonfatal Enable */
-#define  PCI_HT_EH_CRCNFE	0x4000	/* CRC Error Nonfatal Enable */
-#define  PCI_HT_EH_SERRNFE	0x8000	/* System Error Nonfatal Enable */
-
-/* HyperTransport: Slave or Primary Interface */
-#define PCI_HT_PRI_CMD		2	/* Command Register */
-#define  PCI_HT_PRI_CMD_BUID	0x001f	/* Base UnitID */
-#define  PCI_HT_PRI_CMD_UC	0x03e0	/* Unit Count */
-#define  PCI_HT_PRI_CMD_MH	0x0400	/* Master Host */
-#define  PCI_HT_PRI_CMD_DD	0x0800	/* Default Direction */
-#define  PCI_HT_PRI_CMD_DUL	0x1000	/* Drop on Uninitialized Link */
-
-#define PCI_HT_PRI_LCTR0	4	/* Link Control 0 Register */
-#define PCI_HT_PRI_LCNF0	6	/* Link Config 0 Register */
-#define PCI_HT_PRI_LCTR1	8	/* Link Control 1 Register */
-#define PCI_HT_PRI_LCNF1	10	/* Link Config 1 Register */
-#define PCI_HT_PRI_RID		12	/* Revision ID Register */
-#define PCI_HT_PRI_LFRER0	13	/* Link Frequency/Error 0 Register */
-#define PCI_HT_PRI_LFCAP0	14	/* Link Frequency Capability 0 Register */
-#define PCI_HT_PRI_FTR		16	/* Feature Register */
-#define PCI_HT_PRI_LFRER1	17	/* Link Frequency/Error 1 Register */
-#define PCI_HT_PRI_LFCAP1	18	/* Link Frequency Capability 1 Register */
-#define PCI_HT_PRI_ES		20	/* Enumeration Scratchpad Register */
-#define PCI_HT_PRI_EH		22	/* Error Handling Register */
-#define PCI_HT_PRI_MBU		24	/* Memory Base Upper Register */
-#define PCI_HT_PRI_MLU		25	/* Memory Limit Upper Register */
-#define PCI_HT_PRI_BN		26	/* Bus Number Register */
-#define PCI_HT_PRI_SIZEOF	28
-
-/* HyperTransport: Host or Secondary Interface */
-#define PCI_HT_SEC_CMD		2	/* Command Register */
-#define  PCI_HT_SEC_CMD_WR	0x0001	/* Warm Reset */
-#define  PCI_HT_SEC_CMD_DE	0x0002	/* Double-Ended */
-#define  PCI_HT_SEC_CMD_DN	0x0076	/* Device Number */
-#define  PCI_HT_SEC_CMD_CS	0x0080	/* Chain Side */
-#define  PCI_HT_SEC_CMD_HH	0x0100	/* Host Hide */
-#define  PCI_HT_SEC_CMD_AS	0x0400	/* Act as Slave */
-#define  PCI_HT_SEC_CMD_HIECE	0x0800	/* Host Inbound End of Chain Error */
-#define  PCI_HT_SEC_CMD_DUL	0x1000	/* Drop on Uninitialized Link */
-
-#define PCI_HT_SEC_LCTR		4	/* Link Control Register */
-#define PCI_HT_SEC_LCNF		6	/* Link Config Register */
-#define PCI_HT_SEC_RID		8	/* Revision ID Register */
-#define PCI_HT_SEC_LFRER	9	/* Link Frequency/Error Register */
-#define PCI_HT_SEC_LFCAP	10	/* Link Frequency Capability Register */
-#define PCI_HT_SEC_FTR		12	/* Feature Register */
-#define  PCI_HT_SEC_FTR_EXTRS	0x0100	/* Extended Register Set */
-#define  PCI_HT_SEC_FTR_UCNFE	0x0200	/* Upstream Configuration Enable */
-#define PCI_HT_SEC_ES		16	/* Enumeration Scratchpad Register */
-#define PCI_HT_SEC_EH		18	/* Error Handling Register */
-#define PCI_HT_SEC_MBU		20	/* Memory Base Upper Register */
-#define PCI_HT_SEC_MLU		21	/* Memory Limit Upper Register */
-#define PCI_HT_SEC_SIZEOF	24
-
-/* HyperTransport: Switch */
-#define PCI_HT_SW_CMD		2	/* Switch Command Register */
-#define  PCI_HT_SW_CMD_VIBERR	0x0080	/* VIB Error */
-#define  PCI_HT_SW_CMD_VIBFL	0x0100	/* VIB Flood */
-#define  PCI_HT_SW_CMD_VIBFT	0x0200	/* VIB Fatal */
-#define  PCI_HT_SW_CMD_VIBNFT	0x0400	/* VIB Nonfatal */
-#define PCI_HT_SW_PMASK		4	/* Partition Mask Register */
-#define PCI_HT_SW_SWINF		8	/* Switch Info Register */
-#define  PCI_HT_SW_SWINF_DP	0x0000001f	/* Default Port */
-#define  PCI_HT_SW_SWINF_EN	0x00000020	/* Enable Decode */
-#define  PCI_HT_SW_SWINF_CR	0x00000040	/* Cold Reset */
-#define  PCI_HT_SW_SWINF_PCIDX	0x00000f00	/* Performance Counter Index */
-#define  PCI_HT_SW_SWINF_BLRIDX	0x0003f000	/* Base/Limit Range Index */
-#define  PCI_HT_SW_SWINF_SBIDX	0x00002000	/* Secondary Base Range Index */
-#define  PCI_HT_SW_SWINF_HP	0x00040000	/* Hot Plug */
-#define  PCI_HT_SW_SWINF_HIDE	0x00080000	/* Hide Port */
-#define PCI_HT_SW_PCD		12	/* Performance Counter Data Register */
-#define PCI_HT_SW_BLRD		16	/* Base/Limit Range Data Register */
-#define PCI_HT_SW_SBD		20	/* Secondary Base Data Register */
-#define PCI_HT_SW_SIZEOF	24
-
-					/* Counter indices */
-#define  PCI_HT_SW_PC_PCR	0x0	/* Posted Command Receive */
-#define  PCI_HT_SW_PC_NPCR	0x1	/* Nonposted Command Receive */
-#define  PCI_HT_SW_PC_RCR	0x2	/* Response Command Receive */
-#define  PCI_HT_SW_PC_PDWR	0x3	/* Posted DW Receive */
-#define  PCI_HT_SW_PC_NPDWR	0x4	/* Nonposted DW Receive */
-#define  PCI_HT_SW_PC_RDWR	0x5	/* Response DW Receive */
-#define  PCI_HT_SW_PC_PCT	0x6	/* Posted Command Transmit */
-#define  PCI_HT_SW_PC_NPCT	0x7	/* Nonposted Command Transmit */
-#define  PCI_HT_SW_PC_RCT	0x8	/* Response Command Transmit */
-#define  PCI_HT_SW_PC_PDWT	0x9	/* Posted DW Transmit */
-#define  PCI_HT_SW_PC_NPDWT	0xa	/* Nonposted DW Transmit */
-#define  PCI_HT_SW_PC_RDWT	0xb	/* Response DW Transmit */
-
-					/* Base/Limit Range indices */
-#define  PCI_HT_SW_BLR_BASE0_LO	0x0	/* Base 0[31:1], Enable */
-#define  PCI_HT_SW_BLR_BASE0_HI	0x1	/* Base 0 Upper */
-#define  PCI_HT_SW_BLR_LIM0_LO	0x2	/* Limit 0 Lower */
-#define  PCI_HT_SW_BLR_LIM0_HI	0x3	/* Limit 0 Upper */
-
-					/* Secondary Base indices */
-#define  PCI_HT_SW_SB_LO	0x0	/* Secondary Base[31:1], Enable */
-#define  PCI_HT_SW_S0_HI	0x1	/* Secondary Base Upper */
-
-/* HyperTransport: Interrupt Discovery and Configuration */
-#define PCI_HT_IDC_IDX		2	/* Index Register */
-#define PCI_HT_IDC_DATA		4	/* Data Register */
-#define PCI_HT_IDC_SIZEOF	8
-
-					/* Register indices */
-#define  PCI_HT_IDC_IDX_LINT	0x01	/* Last Interrupt Register */
-#define   PCI_HT_IDC_LINT	0x00ff0000	/* Last interrupt definition */
-#define  PCI_HT_IDC_IDX_IDR	0x10	/* Interrupt Definition Registers */
-					/* Low part (at index) */
-#define   PCI_HT_IDC_IDR_MASK	0x10000001	/* Mask */
-#define   PCI_HT_IDC_IDR_POL	0x10000002	/* Polarity */
-#define   PCI_HT_IDC_IDR_II_2	0x1000001c	/* IntrInfo[4:2]: Message Type */
-#define   PCI_HT_IDC_IDR_II_5	0x10000020	/* IntrInfo[5]: Request EOI */
-#define   PCI_HT_IDC_IDR_II_6	0x00ffffc0	/* IntrInfo[23:6] */
-#define   PCI_HT_IDC_IDR_II_24	0xff000000	/* IntrInfo[31:24] */
-					/* High part (at index + 1) */
-#define   PCI_HT_IDC_IDR_II_32	0x00ffffff	/* IntrInfo[55:32] */
-#define   PCI_HT_IDC_IDR_PASSPW	0x40000000	/* PassPW setting for messages */
-#define   PCI_HT_IDC_IDR_WEOI	0x80000000	/* Waiting for EOI */
-
-/* HyperTransport: Revision ID */
-#define PCI_HT_RID_RID		2	/* Revision Register */
-#define PCI_HT_RID_SIZEOF	4
-
-/* HyperTransport: UnitID Clumping */
-#define PCI_HT_UIDC_CS		4	/* Clumping Support Register */
-#define PCI_HT_UIDC_CE		8	/* Clumping Enable Register */
-#define PCI_HT_UIDC_SIZEOF	12
-
-/* HyperTransport: Extended Configuration Space Access */
-#define PCI_HT_ECSA_ADDR	4	/* Configuration Address Register */
-#define  PCI_HT_ECSA_ADDR_REG	0x00000ffc	/* Register */
-#define  PCI_HT_ECSA_ADDR_FUN	0x00007000	/* Function */
-#define  PCI_HT_ECSA_ADDR_DEV	0x000f1000	/* Device */
-#define  PCI_HT_ECSA_ADDR_BUS	0x0ff00000	/* Bus Number */
-#define  PCI_HT_ECSA_ADDR_TYPE	0x10000000	/* Access Type */
-#define PCI_HT_ECSA_DATA	8	/* Configuration Data Register */
-#define PCI_HT_ECSA_SIZEOF	12
-
-/* HyperTransport: Address Mapping */
-#define PCI_HT_AM_CMD		2	/* Command Register */
-#define  PCI_HT_AM_CMD_NDMA	0x000f	/* Number of DMA Mappings */
-#define  PCI_HT_AM_CMD_IOSIZ	0x01f0	/* I/O Size */
-#define  PCI_HT_AM_CMD_MT	0x0600	/* Map Type */
-#define  PCI_HT_AM_CMD_MT_40B	0x0000	/* 40-bit */
-#define  PCI_HT_AM_CMD_MT_64B	0x0200	/* 64-bit */
-
-					/* Window Control Register bits */
-#define  PCI_HT_AM_SBW_CTR_COMP	0x1	/* Compat */
-#define  PCI_HT_AM_SBW_CTR_NCOH	0x2	/* NonCoherent */
-#define  PCI_HT_AM_SBW_CTR_ISOC	0x4	/* Isochronous */
-#define  PCI_HT_AM_SBW_CTR_EN	0x8	/* Enable */
-
-/* HyperTransport: 40-bit Address Mapping */
-#define PCI_HT_AM40_SBNPW	4	/* Secondary Bus Non-Prefetchable Window Register */
-#define  PCI_HT_AM40_SBW_BASE	0x000fffff	/* Window Base */
-#define  PCI_HT_AM40_SBW_CTR	0xf0000000	/* Window Control */
-#define PCI_HT_AM40_SBPW	8	/* Secondary Bus Prefetchable Window Register */
-#define PCI_HT_AM40_DMA_PBASE0	12	/* DMA Window Primary Base 0 Register */
-#define PCI_HT_AM40_DMA_CTR0	15	/* DMA Window Control 0 Register */
-#define  PCI_HT_AM40_DMA_CTR_CTR 0xf0	/* Window Control */
-#define PCI_HT_AM40_DMA_SLIM0	16	/* DMA Window Secondary Limit 0 Register */
-#define PCI_HT_AM40_DMA_SBASE0	18	/* DMA Window Secondary Base 0 Register */
-#define PCI_HT_AM40_SIZEOF	12	/* size is variable: 12 + 8 * NDMA */
-
-/* HyperTransport: 64-bit Address Mapping */
-#define PCI_HT_AM64_IDX		4	/* Index Register */
-#define PCI_HT_AM64_DATA_LO	8	/* Data Lower Register */
-#define PCI_HT_AM64_DATA_HI	12	/* Data Upper Register */
-#define PCI_HT_AM64_SIZEOF	16
-
-					/* Register indices */
-#define  PCI_HT_AM64_IDX_SBNPW	0x00	/* Secondary Bus Non-Prefetchable Window Register */
-#define   PCI_HT_AM64_W_BASE_LO	0xfff00000	/* Window Base Lower */
-#define   PCI_HT_AM64_W_CTR	0x0000000f	/* Window Control */
-#define  PCI_HT_AM64_IDX_SBPW	0x01	/* Secondary Bus Prefetchable Window Register */
-#define   PCI_HT_AM64_IDX_PBNPW	0x02	/* Primary Bus Non-Prefetchable Window Register */
-#define   PCI_HT_AM64_IDX_DMAPB0 0x04	/* DMA Window Primary Base 0 Register */
-#define   PCI_HT_AM64_IDX_DMASB0 0x05	/* DMA Window Secondary Base 0 Register */
-#define   PCI_HT_AM64_IDX_DMASL0 0x06	/* DMA Window Secondary Limit 0 Register */
-
-/* HyperTransport: MSI Mapping */
-#define PCI_HT_MSIM_CMD		2	/* Command Register */
-#define  PCI_HT_MSIM_CMD_EN	0x0001	/* Mapping Active */
-#define  PCI_HT_MSIM_CMD_FIXD	0x0002	/* MSI Mapping Address Fixed */
-#define PCI_HT_MSIM_ADDR_LO	4	/* MSI Mapping Address Lower Register */
-#define PCI_HT_MSIM_ADDR_HI	8	/* MSI Mapping Address Upper Register */
-#define PCI_HT_MSIM_SIZEOF	12
-
-/* HyperTransport: DirectRoute */
-#define PCI_HT_DR_CMD		2	/* Command Register */
-#define  PCI_HT_DR_CMD_NDRS	0x000f	/* Number of DirectRoute Spaces */
-#define  PCI_HT_DR_CMD_IDX	0x01f0	/* Index */
-#define PCI_HT_DR_EN		4	/* Enable Vector Register */
-#define PCI_HT_DR_DATA		8	/* Data Register */
-#define PCI_HT_DR_SIZEOF	12
-
-					/* Register indices */
-#define  PCI_HT_DR_IDX_BASE_LO	0x00	/* DirectRoute Base Lower Register */
-#define   PCI_HT_DR_OTNRD	0x00000001	/* Opposite to Normal Request Direction */
-#define   PCI_HT_DR_BL_LO	0xffffff00	/* Base/Limit Lower */
-#define  PCI_HT_DR_IDX_BASE_HI	0x01	/* DirectRoute Base Upper Register */
-#define  PCI_HT_DR_IDX_LIMIT_LO	0x02	/* DirectRoute Limit Lower Register */
-#define  PCI_HT_DR_IDX_LIMIT_HI	0x03	/* DirectRoute Limit Upper Register */
-
-/* HyperTransport: VCSet */
-#define PCI_HT_VCS_SUP		4	/* VCSets Supported Register */
-#define PCI_HT_VCS_L1EN		5	/* Link 1 VCSets Enabled Register */
-#define PCI_HT_VCS_L0EN		6	/* Link 0 VCSets Enabled Register */
-#define PCI_HT_VCS_SBD		8	/* Stream Bucket Depth Register */
-#define PCI_HT_VCS_SINT		9	/* Stream Interval Register */
-#define PCI_HT_VCS_SSUP		10	/* Number of Streaming VCs Supported Register */
-#define  PCI_HT_VCS_SSUP_0	0x00	/* Streaming VC 0 */
-#define  PCI_HT_VCS_SSUP_3	0x01	/* Streaming VCs 0-3 */
-#define  PCI_HT_VCS_SSUP_15	0x02	/* Streaming VCs 0-15 */
-#define PCI_HT_VCS_NFCBD	12	/* Non-FC Bucket Depth Register */
-#define PCI_HT_VCS_NFCINT	13	/* Non-FC Bucket Interval Register */
-#define PCI_HT_VCS_SIZEOF	16
-
-/* HyperTransport: Retry Mode */
-#define PCI_HT_RM_CTR0		4	/* Control 0 Register */
-#define  PCI_HT_RM_CTR_LRETEN	0x01	/* Link Retry Enable */
-#define  PCI_HT_RM_CTR_FSER	0x02	/* Force Single Error */
-#define  PCI_HT_RM_CTR_ROLNEN	0x04	/* Rollover Nonfatal Enable */
-#define  PCI_HT_RM_CTR_FSS	0x08	/* Force Single Stomp */
-#define  PCI_HT_RM_CTR_RETNEN	0x10	/* Retry Nonfatal Enable */
-#define  PCI_HT_RM_CTR_RETFEN	0x20	/* Retry Fatal Enable */
-#define  PCI_HT_RM_CTR_AA	0xc0	/* Allowed Attempts */
-#define PCI_HT_RM_STS0		5	/* Status 0 Register */
-#define  PCI_HT_RM_STS_RETSNT	0x01	/* Retry Sent */
-#define  PCI_HT_RM_STS_CNTROL	0x02	/* Count Rollover */
-#define  PCI_HT_RM_STS_SRCV	0x04	/* Stomp Received */
-#define PCI_HT_RM_CTR1		6	/* Control 1 Register */
-#define PCI_HT_RM_STS1		7	/* Status 1 Register */
-#define PCI_HT_RM_CNT0		8	/* Retry Count 0 Register */
-#define PCI_HT_RM_CNT1		10	/* Retry Count 1 Register */
-#define PCI_HT_RM_SIZEOF	12
-
-/* PCI Express */
-#define PCI_EXP_FLAGS		0x2	/* Capabilities register */
-#define PCI_EXP_FLAGS_VERS	0x000f	/* Capability version */
-#define PCI_EXP_FLAGS_TYPE	0x00f0	/* Device/Port type */
-#define  PCI_EXP_TYPE_ENDPOINT	0x0	/* Express Endpoint */
-#define  PCI_EXP_TYPE_LEG_END	0x1	/* Legacy Endpoint */
-#define  PCI_EXP_TYPE_ROOT_PORT 0x4	/* Root Port */
-#define  PCI_EXP_TYPE_UPSTREAM	0x5	/* Upstream Port */
-#define  PCI_EXP_TYPE_DOWNSTREAM 0x6	/* Downstream Port */
-#define  PCI_EXP_TYPE_PCI_BRIDGE 0x7	/* PCI/PCI-X Bridge */
-#define PCI_EXP_FLAGS_SLOT	0x0100	/* Slot implemented */
-#define PCI_EXP_FLAGS_IRQ	0x3e00	/* Interrupt message number */
-#define PCI_EXP_DEVCAP		0x4	/* Device capabilities */
-#define  PCI_EXP_DEVCAP_PAYLOAD	0x07	/* Max_Payload_Size */
-#define  PCI_EXP_DEVCAP_PHANTOM	0x18	/* Phantom functions */
-#define  PCI_EXP_DEVCAP_EXT_TAG	0x20	/* Extended tags */
-#define  PCI_EXP_DEVCAP_L0S	0x1c0	/* L0s Acceptable Latency */
-#define  PCI_EXP_DEVCAP_L1	0xe00	/* L1 Acceptable Latency */
-#define  PCI_EXP_DEVCAP_ATN_BUT	0x1000	/* Attention Button Present */
-#define  PCI_EXP_DEVCAP_ATN_IND	0x2000	/* Attention Indicator Present */
-#define  PCI_EXP_DEVCAP_PWR_IND	0x4000	/* Power Indicator Present */
-#define  PCI_EXP_DEVCAP_PWR_VAL	0x3fc0000	/* Slot Power Limit Value */
-#define  PCI_EXP_DEVCAP_PWR_SCL	0xc000000	/* Slot Power Limit Scale */
-#define PCI_EXP_DEVCTL		0x8	/* Device Control */
-#define  PCI_EXP_DEVCTL_CERE	0x0001	/* Correctable Error Reporting En. */
-#define  PCI_EXP_DEVCTL_NFERE	0x0002	/* Non-Fatal Error Reporting Enable */
-#define  PCI_EXP_DEVCTL_FERE	0x0004	/* Fatal Error Reporting Enable */
-#define  PCI_EXP_DEVCTL_URRE	0x0008	/* Unsupported Request Reporting En. */
-#define  PCI_EXP_DEVCTL_RELAXED	0x0010	/* Enable Relaxed Ordering */
-#define  PCI_EXP_DEVCTL_PAYLOAD	0x00e0	/* Max_Payload_Size */
-#define  PCI_EXP_DEVCTL_EXT_TAG	0x0100	/* Extended Tag Field Enable */
-#define  PCI_EXP_DEVCTL_PHANTOM	0x0200	/* Phantom Functions Enable */
-#define  PCI_EXP_DEVCTL_AUX_PME	0x0400	/* Auxiliary Power PM Enable */
-#define  PCI_EXP_DEVCTL_NOSNOOP	0x0800	/* Enable No Snoop */
-#define  PCI_EXP_DEVCTL_READRQ	0x7000	/* Max_Read_Request_Size */
-#define PCI_EXP_DEVSTA		0xa	/* Device Status */
-#define  PCI_EXP_DEVSTA_CED	0x01	/* Correctable Error Detected */
-#define  PCI_EXP_DEVSTA_NFED	0x02	/* Non-Fatal Error Detected */
-#define  PCI_EXP_DEVSTA_FED	0x04	/* Fatal Error Detected */
-#define  PCI_EXP_DEVSTA_URD	0x08	/* Unsupported Request Detected */
-#define  PCI_EXP_DEVSTA_AUXPD	0x10	/* AUX Power Detected */
-#define  PCI_EXP_DEVSTA_TRPND	0x20	/* Transactions Pending */
-#define PCI_EXP_LNKCAP		0xc	/* Link Capabilities */
-#define  PCI_EXP_LNKCAP_SPEED	0x0000f	/* Maximum Link Speed */
-#define  PCI_EXP_LNKCAP_WIDTH	0x003f0	/* Maximum Link Width */
-#define  PCI_EXP_LNKCAP_ASPM	0x00c00	/* Active State Power Management */
-#define  PCI_EXP_LNKCAP_L0S	0x07000	/* L0s Acceptable Latency */
-#define  PCI_EXP_LNKCAP_L1	0x38000	/* L1 Acceptable Latency */
-#define  PCI_EXP_LNKCAP_PORT	0xff000000	/* Port Number */
-#define PCI_EXP_LNKCTL		0x10	/* Link Control */
-#define  PCI_EXP_LNKCTL_ASPM	0x0003	/* ASPM Control */
-#define  PCI_EXP_LNKCTL_RCB	0x0008	/* Read Completion Boundary */
-#define  PCI_EXP_LNKCTL_DISABLE	0x0010	/* Link Disable */
-#define  PCI_EXP_LNKCTL_RETRAIN	0x0020	/* Retrain Link */
-#define  PCI_EXP_LNKCTL_CLOCK	0x0040	/* Common Clock Configuration */
-#define  PCI_EXP_LNKCTL_XSYNCH	0x0080	/* Extended Synch */
-#define PCI_EXP_LNKSTA		0x12	/* Link Status */
-#define  PCI_EXP_LNKSTA_SPEED	0x000f	/* Negotiated Link Speed */
-#define  PCI_EXP_LNKSTA_WIDTH	0x03f0	/* Negotiated Link Width */
-#define  PCI_EXP_LNKSTA_TR_ERR	0x0400	/* Training Error */
-#define  PCI_EXP_LNKSTA_TRAIN	0x0800	/* Link Training */
-#define  PCI_EXP_LNKSTA_SL_CLK	0x1000	/* Slot Clock Configuration */
-#define PCI_EXP_SLTCAP		0x14	/* Slot Capabilities */
-#define  PCI_EXP_SLTCAP_ATNB	0x0001	/* Attention Button Present */
-#define  PCI_EXP_SLTCAP_PWRC	0x0002	/* Power Controller Present */
-#define  PCI_EXP_SLTCAP_MRL	0x0004	/* MRL Sensor Present */
-#define  PCI_EXP_SLTCAP_ATNI	0x0008	/* Attention Indicator Present */
-#define  PCI_EXP_SLTCAP_PWRI	0x0010	/* Power Indicator Present */
-#define  PCI_EXP_SLTCAP_HPS	0x0020	/* Hot-Plug Surprise */
-#define  PCI_EXP_SLTCAP_HPC	0x0040	/* Hot-Plug Capable */
-#define  PCI_EXP_SLTCAP_PWR_VAL	0x00007f80	/* Slot Power Limit Value */
-#define  PCI_EXP_SLTCAP_PWR_SCL	0x00018000	/* Slot Power Limit Scale */
-#define  PCI_EXP_SLTCAP_PSN	0xfff80000	/* Physical Slot Number */
-#define PCI_EXP_SLTCTL		0x18	/* Slot Control */
-#define  PCI_EXP_SLTCTL_ATNB	0x0001	/* Attention Button Pressed Enable */
-#define  PCI_EXP_SLTCTL_PWRF	0x0002	/* Power Fault Detected Enable */
-#define  PCI_EXP_SLTCTL_MRLS	0x0004	/* MRL Sensor Changed Enable */
-#define  PCI_EXP_SLTCTL_PRSD	0x0008	/* Presence Detect Changed Enable */
-#define  PCI_EXP_SLTCTL_CMDC	0x0010	/* Command Completed Interrupt Enable */
-#define  PCI_EXP_SLTCTL_HPIE	0x0020	/* Hot-Plug Interrupt Enable */
-#define  PCI_EXP_SLTCTL_ATNI	0x00C0	/* Attention Indicator Control */
-#define  PCI_EXP_SLTCTL_PWRI	0x0300	/* Power Indicator Control */
-#define  PCI_EXP_SLTCTL_PWRC	0x0400	/* Power Controller Control */
-#define PCI_EXP_SLTSTA		0x1a	/* Slot Status */
-#define PCI_EXP_RTCTL		0x1c	/* Root Control */
-#define  PCI_EXP_RTCTL_SECEE	0x1	/* System Error on Correctable Error */
-#define  PCI_EXP_RTCTL_SENFEE	0x1	/* System Error on Non-Fatal Error */
-#define  PCI_EXP_RTCTL_SEFEE	0x1	/* System Error on Fatal Error */
-#define  PCI_EXP_RTCTL_PMEIE	0x1	/* PME Interrupt Enable */
-#define PCI_EXP_RTSTA		0x20	/* Root Status */
-
-/* MSI-X */
-#define  PCI_MSIX_ENABLE	0x8000
-#define  PCI_MSIX_MASK		0x4000
-#define  PCI_MSIX_TABSIZE	0x03ff
-#define PCI_MSIX_TABLE		4
-#define PCI_MSIX_PBA		8
-#define  PCI_MSIX_BIR		0x7
-
-/* Advanced Error Reporting */
-#define PCI_ERR_UNCOR_STATUS	4	/* Uncorrectable Error Status */
-#define  PCI_ERR_UNC_TRAIN	0x00000001	/* Training */
-#define  PCI_ERR_UNC_DLP	0x00000010	/* Data Link Protocol */
-#define  PCI_ERR_UNC_POISON_TLP	0x00001000	/* Poisoned TLP */
-#define  PCI_ERR_UNC_FCP	0x00002000	/* Flow Control Protocol */
-#define  PCI_ERR_UNC_COMP_TIME	0x00004000	/* Completion Timeout */
-#define  PCI_ERR_UNC_COMP_ABORT	0x00008000	/* Completer Abort */
-#define  PCI_ERR_UNC_UNX_COMP	0x00010000	/* Unexpected Completion */
-#define  PCI_ERR_UNC_RX_OVER	0x00020000	/* Receiver Overflow */
-#define  PCI_ERR_UNC_MALF_TLP	0x00040000	/* Malformed TLP */
-#define  PCI_ERR_UNC_ECRC	0x00080000	/* ECRC Error Status */
-#define  PCI_ERR_UNC_UNSUP	0x00100000	/* Unsupported Request */
-#define PCI_ERR_UNCOR_MASK	8	/* Uncorrectable Error Mask */
-	/* Same bits as above */
-#define PCI_ERR_UNCOR_SEVER	12	/* Uncorrectable Error Severity */
-	/* Same bits as above */
-#define PCI_ERR_COR_STATUS	16	/* Correctable Error Status */
-#define  PCI_ERR_COR_RCVR	0x00000001	/* Receiver Error Status */
-#define  PCI_ERR_COR_BAD_TLP	0x00000040	/* Bad TLP Status */
-#define  PCI_ERR_COR_BAD_DLLP	0x00000080	/* Bad DLLP Status */
-#define  PCI_ERR_COR_REP_ROLL	0x00000100	/* REPLAY_NUM Rollover */
-#define  PCI_ERR_COR_REP_TIMER	0x00001000	/* Replay Timer Timeout */
-#define PCI_ERR_COR_MASK	20	/* Correctable Error Mask */
-	/* Same bits as above */
-#define PCI_ERR_CAP		24	/* Advanced Error Capabilities */
-#define  PCI_ERR_CAP_FEP(x)	((x) & 31)	/* First Error Pointer */
-#define  PCI_ERR_CAP_ECRC_GENC	0x00000020	/* ECRC Generation Capable */
-#define  PCI_ERR_CAP_ECRC_GENE	0x00000040	/* ECRC Generation Enable */
-#define  PCI_ERR_CAP_ECRC_CHKC	0x00000080	/* ECRC Check Capable */
-#define  PCI_ERR_CAP_ECRC_CHKE	0x00000100	/* ECRC Check Enable */
-#define PCI_ERR_HEADER_LOG	28	/* Header Log Register (16 bytes) */
-#define PCI_ERR_ROOT_COMMAND	44	/* Root Error Command */
-#define PCI_ERR_ROOT_STATUS	48
-#define PCI_ERR_ROOT_COR_SRC	52
-#define PCI_ERR_ROOT_SRC	54
-
-/* Virtual Channel */
-#define PCI_VC_PORT_REG1	4
-#define PCI_VC_PORT_REG2	8
-#define PCI_VC_PORT_CTRL	12
-#define PCI_VC_PORT_STATUS	14
-#define PCI_VC_RES_CAP		16
-#define PCI_VC_RES_CTRL		20
-#define PCI_VC_RES_STATUS	26
-
-/* Power Budgeting */
-#define PCI_PWR_DSR		4	/* Data Select Register */
-#define PCI_PWR_DATA		8	/* Data Register */
-#define  PCI_PWR_DATA_BASE(x)	((x) & 0xff)	/* Base Power */
-#define  PCI_PWR_DATA_SCALE(x)	(((x) >> 8) & 3)	/* Data Scale */
-#define  PCI_PWR_DATA_PM_SUB(x)	(((x) >> 10) & 7)	/* PM Sub State */
-#define  PCI_PWR_DATA_PM_STATE(x) (((x) >> 13) & 3)	/* PM State */
-#define  PCI_PWR_DATA_TYPE(x)	(((x) >> 15) & 7)	/* Type */
-#define  PCI_PWR_DATA_RAIL(x)	(((x) >> 18) & 7)	/* Power Rail */
-#define PCI_PWR_CAP		12	/* Capability */
-#define  PCI_PWR_CAP_BUDGET(x)	((x) & 1)	/* Included in system budget */
-
-/*
- * The PCI interface treats multi-function devices as independent
- * devices.  The slot/function address of each device is encoded
- * in a single byte as follows:
- *
- *	7:3 = slot
- *	2:0 = function
- */
-#define PCI_DEVFN(slot,func)	((((slot) & 0x1f) << 3) | ((func) & 0x07))
-#define PCI_SLOT(devfn)		(((devfn) >> 3) & 0x1f)
-#define PCI_FUNC(devfn)		((devfn) & 0x07)
-
-/* Device classes and subclasses */
-
-#define PCI_CLASS_NOT_DEFINED		0x0000
-#define PCI_CLASS_NOT_DEFINED_VGA	0x0001
-
-#define PCI_BASE_CLASS_STORAGE		0x01
-#define PCI_CLASS_STORAGE_SCSI		0x0100
-#define PCI_CLASS_STORAGE_IDE		0x0101
-#define PCI_CLASS_STORAGE_FLOPPY	0x0102
-#define PCI_CLASS_STORAGE_IPI		0x0103
-#define PCI_CLASS_STORAGE_RAID		0x0104
-#define PCI_CLASS_STORAGE_OTHER		0x0180
-
-#define PCI_BASE_CLASS_NETWORK		0x02
-#define PCI_CLASS_NETWORK_ETHERNET	0x0200
-#define PCI_CLASS_NETWORK_TOKEN_RING	0x0201
-#define PCI_CLASS_NETWORK_FDDI		0x0202
-#define PCI_CLASS_NETWORK_ATM		0x0203
-#define PCI_CLASS_NETWORK_OTHER		0x0280
-
-#define PCI_BASE_CLASS_DISPLAY		0x03
-#define PCI_CLASS_DISPLAY_VGA		0x0300
-#define PCI_CLASS_DISPLAY_XGA		0x0301
-#define PCI_CLASS_DISPLAY_OTHER		0x0380
-
-#define PCI_BASE_CLASS_MULTIMEDIA	0x04
-#define PCI_CLASS_MULTIMEDIA_VIDEO	0x0400
-#define PCI_CLASS_MULTIMEDIA_AUDIO	0x0401
-#define PCI_CLASS_MULTIMEDIA_OTHER	0x0480
-
-#define PCI_BASE_CLASS_MEMORY		0x05
-#define  PCI_CLASS_MEMORY_RAM		0x0500
-#define  PCI_CLASS_MEMORY_FLASH		0x0501
-#define  PCI_CLASS_MEMORY_OTHER		0x0580
-
-#define PCI_BASE_CLASS_BRIDGE		0x06
-#define  PCI_CLASS_BRIDGE_HOST		0x0600
-#define  PCI_CLASS_BRIDGE_ISA		0x0601
-#define  PCI_CLASS_BRIDGE_EISA		0x0602
-#define  PCI_CLASS_BRIDGE_MC		0x0603
-#define  PCI_CLASS_BRIDGE_PCI		0x0604
-#define  PCI_CLASS_BRIDGE_PCMCIA	0x0605
-#define  PCI_CLASS_BRIDGE_NUBUS		0x0606
-#define  PCI_CLASS_BRIDGE_CARDBUS	0x0607
-#define  PCI_CLASS_BRIDGE_OTHER		0x0680
-
-#define PCI_BASE_CLASS_COMMUNICATION	0x07
-#define PCI_CLASS_COMMUNICATION_SERIAL	0x0700
-#define PCI_CLASS_COMMUNICATION_PARALLEL 0x0701
-#define PCI_CLASS_COMMUNICATION_OTHER	0x0780
-
-#define PCI_BASE_CLASS_SYSTEM		0x08
-#define PCI_CLASS_SYSTEM_PIC		0x0800
-#define PCI_CLASS_SYSTEM_DMA		0x0801
-#define PCI_CLASS_SYSTEM_TIMER		0x0802
-#define PCI_CLASS_SYSTEM_RTC		0x0803
-#define PCI_CLASS_SYSTEM_OTHER		0x0880
-
-#define PCI_BASE_CLASS_INPUT		0x09
-#define PCI_CLASS_INPUT_KEYBOARD	0x0900
-#define PCI_CLASS_INPUT_PEN		0x0901
-#define PCI_CLASS_INPUT_MOUSE		0x0902
-#define PCI_CLASS_INPUT_OTHER		0x0980
-
-#define PCI_BASE_CLASS_DOCKING		0x0a
-#define PCI_CLASS_DOCKING_GENERIC	0x0a00
-#define PCI_CLASS_DOCKING_OTHER		0x0a01
-
-#define PCI_BASE_CLASS_PROCESSOR	0x0b
-#define PCI_CLASS_PROCESSOR_386		0x0b00
-#define PCI_CLASS_PROCESSOR_486		0x0b01
-#define PCI_CLASS_PROCESSOR_PENTIUM	0x0b02
-#define PCI_CLASS_PROCESSOR_ALPHA	0x0b10
-#define PCI_CLASS_PROCESSOR_POWERPC	0x0b20
-#define PCI_CLASS_PROCESSOR_CO		0x0b40
-
-#define PCI_BASE_CLASS_SERIAL		0x0c
-#define PCI_CLASS_SERIAL_FIREWIRE	0x0c00
-#define PCI_CLASS_SERIAL_ACCESS		0x0c01
-#define PCI_CLASS_SERIAL_SSA		0x0c02
-#define PCI_CLASS_SERIAL_USB		0x0c03
-#define PCI_CLASS_SERIAL_FIBER		0x0c04
-
-#define PCI_CLASS_OTHERS		0xff
-
-/* Several ID's we need in the library */
-
-#define PCI_VENDOR_ID_INTEL		0x8086
-#define PCI_VENDOR_ID_COMPAQ		0x0e11
Index: uspace/srv/pci/libpci/i386-ports.c
===================================================================
--- uspace/srv/pci/libpci/i386-ports.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,274 +1,0 @@
-/*
- *	The PCI Library -- Direct Configuration access via i386 Ports
- *
- *	Copyright (c) 1997--2004 Martin Mares <mj@ucw.cz>
- *
- *	May 8, 2006 - Modified and ported to HelenOS by Jakub Jermar.
- *
- *	Can be freely distributed and used under the terms of the GNU GPL.
- */
-
-#include <unistd.h>
-
-#include "internal.h"
-
-static inline void outb(u8 b, u16 port)
-{
-	asm volatile ("outb %0, %1\n" :: "a" (b), "d" (port));
-}
-
-static inline void outw(u16 w, u16 port)
-{
-	asm volatile ("outw %0, %1\n" :: "a" (w), "d" (port));
-}
-
-static inline void outl(u32 l, u16 port)
-{
-	asm volatile ("outl %0, %1\n" :: "a" (l), "d" (port));
-}
-
-static inline u8 inb(u16 port)
-{
-	u8 val;
-
-	asm volatile ("inb %1, %0 \n" : "=a" (val) : "d"(port));
-	return val;
-}
-
-static inline u16 inw(u16 port)
-{
-	u16 val;
-
-	asm volatile ("inw %1, %0 \n" : "=a" (val) : "d"(port));
-	return val;
-}
-
-static inline u32 inl(u16 port)
-{
-	u32 val;
-
-	asm volatile ("inl %1, %0 \n" : "=a" (val) : "d"(port));
-	return val;
-}
-
-static void conf12_init(struct pci_access *a)
-{
-}
-
-static void conf12_cleanup(struct pci_access *a UNUSED)
-{
-}
-
-/*
- * Before we decide to use direct hardware access mechanisms, we try to do some
- * trivial checks to ensure it at least _seems_ to be working -- we just test
- * whether bus 00 contains a host bridge (this is similar to checking
- * techniques used in XFree86, but ours should be more reliable since we
- * attempt to make use of direct access hints provided by the PCI BIOS).
- *
- * This should be close to trivial, but it isn't, because there are buggy
- * chipsets (yes, you guessed it, by Intel and Compaq) that have no class ID.
- */
-
-static int intel_sanity_check(struct pci_access *a, struct pci_methods *m)
-{
-	struct pci_dev d;
-
-	a->debug("...sanity check");
-	d.bus = 0;
-	d.func = 0;
-	for (d.dev = 0; d.dev < 32; d.dev++) {
-		u16 class, vendor;
-		if ((m->read(&d, PCI_CLASS_DEVICE, (byte *) & class,
-			 sizeof(class))
-		    && (class == cpu_to_le16(PCI_CLASS_BRIDGE_HOST)
-			|| class == cpu_to_le16(PCI_CLASS_DISPLAY_VGA)))
-		    || (m->read(&d, PCI_VENDOR_ID, (byte *) & vendor,
-			       sizeof(vendor))
-		    && (vendor == cpu_to_le16(PCI_VENDOR_ID_INTEL)
-			|| vendor == cpu_to_le16(PCI_VENDOR_ID_COMPAQ)))) {
-			a->debug("...outside the Asylum at 0/%02x/0",
-				 d.dev);
-			return 1;
-		}
-	}
-	a->debug("...insane");
-	return 0;
-}
-
-/*
- *	Configuration type 1
- */
-
-#define CONFIG_CMD(bus, device_fn, where)   (0x80000000 | (bus << 16) | (device_fn << 8) | (where & ~3))
-
-static int conf1_detect(struct pci_access *a)
-{
-	unsigned int tmp;
-	int res = 0;
-
-	outb(0x01, 0xCFB);
-	tmp = inl(0xCF8);
-	outl(0x80000000, 0xCF8);
-	if (inl(0xCF8) == 0x80000000)
-		res = 1;
-	outl(tmp, 0xCF8);
-	if (res)
-		res = intel_sanity_check(a, &pm_intel_conf1);
-	return res;
-}
-
-static int conf1_read(struct pci_dev *d, int pos, byte * buf, int len)
-{
-	int addr = 0xcfc + (pos & 3);
-
-	if (pos >= 256)
-		return 0;
-
-	outl(0x80000000 | ((d->bus & 0xff) << 16) |
-	     (PCI_DEVFN(d->dev, d->func) << 8) | (pos & ~3), 0xcf8);
-
-	switch (len) {
-	case 1:
-		buf[0] = inb(addr);
-		break;
-	case 2:
-		((u16 *) buf)[0] = cpu_to_le16(inw(addr));
-		break;
-	case 4:
-		((u32 *) buf)[0] = cpu_to_le32(inl(addr));
-		break;
-	default:
-		return pci_generic_block_read(d, pos, buf, len);
-	}
-	return 1;
-}
-
-static int conf1_write(struct pci_dev *d, int pos, byte * buf, int len)
-{
-	int addr = 0xcfc + (pos & 3);
-
-	if (pos >= 256)
-		return 0;
-
-	outl(0x80000000 | ((d->bus & 0xff) << 16) |
-	     (PCI_DEVFN(d->dev, d->func) << 8) | (pos & ~3), 0xcf8);
-
-	switch (len) {
-	case 1:
-		outb(buf[0], addr);
-		break;
-	case 2:
-		outw(le16_to_cpu(((u16 *) buf)[0]), addr);
-		break;
-	case 4:
-		outl(le32_to_cpu(((u32 *) buf)[0]), addr);
-		break;
-	default:
-		return pci_generic_block_write(d, pos, buf, len);
-	}
-	return 1;
-}
-
-/*
- *	Configuration type 2. Obsolete and brain-damaged, but existing.
- */
-
-static int conf2_detect(struct pci_access *a)
-{
-	/* This is ugly and tends to produce false positives. Beware. */
-	outb(0x00, 0xCFB);
-	outb(0x00, 0xCF8);
-	outb(0x00, 0xCFA);
-	if (inb(0xCF8) == 0x00 && inb(0xCFA) == 0x00)
-		return intel_sanity_check(a, &pm_intel_conf2);
-	else
-		return 0;
-}
-
-static int conf2_read(struct pci_dev *d, int pos, byte * buf, int len)
-{
-	int addr = 0xc000 | (d->dev << 8) | pos;
-
-	if (pos >= 256)
-		return 0;
-
-	if (d->dev >= 16)
-		/* conf2 supports only 16 devices per bus */
-		return 0;
-	outb((d->func << 1) | 0xf0, 0xcf8);
-	outb(d->bus, 0xcfa);
-	switch (len) {
-	case 1:
-		buf[0] = inb(addr);
-		break;
-	case 2:
-		((u16 *) buf)[0] = cpu_to_le16(inw(addr));
-		break;
-	case 4:
-		((u32 *) buf)[0] = cpu_to_le32(inl(addr));
-		break;
-	default:
-		outb(0, 0xcf8);
-		return pci_generic_block_read(d, pos, buf, len);
-	}
-	outb(0, 0xcf8);
-	return 1;
-}
-
-static int conf2_write(struct pci_dev *d, int pos, byte * buf, int len)
-{
-	int addr = 0xc000 | (d->dev << 8) | pos;
-
-	if (pos >= 256)
-		return 0;
-
-	if (d->dev >= 16)
-		d->access->error("conf2_write: only first 16 devices exist.");
-	outb((d->func << 1) | 0xf0, 0xcf8);
-	outb(d->bus, 0xcfa);
-	switch (len) {
-	case 1:
-		outb(buf[0], addr);
-		break;
-	case 2:
-		outw(le16_to_cpu(*(u16 *) buf), addr);
-		break;
-	case 4:
-		outl(le32_to_cpu(*(u32 *) buf), addr);
-		break;
-	default:
-		outb(0, 0xcf8);
-		return pci_generic_block_write(d, pos, buf, len);
-	}
-	outb(0, 0xcf8);
-	return 1;
-}
-
-struct pci_methods pm_intel_conf1 = {
-	"Intel-conf1",
-	NULL,			/* config */
-	conf1_detect,
-	conf12_init,
-	conf12_cleanup,
-	pci_generic_scan,
-	pci_generic_fill_info,
-	conf1_read,
-	conf1_write,
-	NULL,			/* init_dev */
-	NULL			/* cleanup_dev */
-};
-
-struct pci_methods pm_intel_conf2 = {
-	"Intel-conf2",
-	NULL,			/* config */
-	conf2_detect,
-	conf12_init,
-	conf12_cleanup,
-	pci_generic_scan,
-	pci_generic_fill_info,
-	conf2_read,
-	conf2_write,
-	NULL,			/* init_dev */
-	NULL			/* cleanup_dev */
-};
Index: uspace/srv/pci/libpci/internal.h
===================================================================
--- uspace/srv/pci/libpci/internal.h	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,43 +1,0 @@
-/*
- *	The PCI Library -- Internal Stuff
- *
- *	Copyright (c) 1997--2004 Martin Mares <mj@ucw.cz>
- *
- *	May 8, 2006 - Modified and ported to HelenOS by Jakub Jermar.
- *
- *	Can be freely distributed and used under the terms of the GNU GPL.
- */
-
-#include "pci.h"
-#include "sysdep.h"
-
-struct pci_methods {
-	char *name;
-	void (*config) (struct pci_access *);
-	int (*detect) (struct pci_access *);
-	void (*init) (struct pci_access *);
-	void (*cleanup) (struct pci_access *);
-	void (*scan) (struct pci_access *);
-	int (*fill_info) (struct pci_dev *, int flags);
-	int (*read) (struct pci_dev *, int pos, byte * buf, int len);
-	int (*write) (struct pci_dev *, int pos, byte * buf, int len);
-	void (*init_dev) (struct pci_dev *);
-	void (*cleanup_dev) (struct pci_dev *);
-};
-
-void pci_generic_scan_bus(struct pci_access *, byte * busmap, int bus);
-void pci_generic_scan(struct pci_access *);
-int pci_generic_fill_info(struct pci_dev *, int flags);
-int pci_generic_block_read(struct pci_dev *, int pos, byte * buf, int len);
-int pci_generic_block_write(struct pci_dev *, int pos, byte * buf,
-			    int len);
-
-void *pci_malloc(struct pci_access *, int);
-void pci_mfree(void *);
-
-struct pci_dev *pci_alloc_dev(struct pci_access *);
-int pci_link_dev(struct pci_access *, struct pci_dev *);
-
-extern struct pci_methods pm_intel_conf1, pm_intel_conf2, pm_linux_proc,
-    pm_fbsd_device, pm_aix_device, pm_nbsd_libpci, pm_obsd_device,
-    pm_dump, pm_linux_sysfs;
Index: uspace/srv/pci/libpci/names.c
===================================================================
--- uspace/srv/pci/libpci/names.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,456 +1,0 @@
-/*
- *	The PCI Library -- ID to Name Translation
- *
- *	Copyright (c) 1997--2005 Martin Mares <mj@ucw.cz>
- *
- *	May 8, 2006 - Modified and ported to HelenOS by Jakub Jermar.
- *
- *	Can be freely distributed and used under the terms of the GNU GPL.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <errno.h>
-
-#include "internal.h"
-#include "pci_ids.h"
-
-struct id_entry {
-	struct id_entry *next;
-	u32 id12, id34;
-	byte cat;
-	byte name[1];
-};
-
-enum id_entry_type {
-	ID_UNKNOWN,
-	ID_VENDOR,
-	ID_DEVICE,
-	ID_SUBSYSTEM,
-	ID_GEN_SUBSYSTEM,
-	ID_CLASS,
-	ID_SUBCLASS,
-	ID_PROGIF
-};
-
-struct id_bucket {
-	struct id_bucket *next;
-	unsigned int full;
-};
-
-#define MAX_LINE 1024
-#define BUCKET_SIZE 8192
-#define HASH_SIZE 4099
-
-#ifdef __GNUC__
-#define BUCKET_ALIGNMENT __alignof__(struct id_bucket)
-#else
-union id_align {
-	struct id_bucket *next;
-	unsigned int full;
-};
-#define BUCKET_ALIGNMENT sizeof(union id_align)
-#endif
-#define BUCKET_ALIGN(n) ((n)+BUCKET_ALIGNMENT-(n)%BUCKET_ALIGNMENT)
-
-static void *id_alloc(struct pci_access *a, unsigned int size)
-{
-	struct id_bucket *buck = a->current_id_bucket;
-	unsigned int pos;
-	if (!buck || buck->full + size > BUCKET_SIZE) {
-		buck = pci_malloc(a, BUCKET_SIZE);
-		buck->next = a->current_id_bucket;
-		a->current_id_bucket = buck;
-		buck->full = BUCKET_ALIGN(sizeof(struct id_bucket));
-	}
-	pos = buck->full;
-	buck->full = BUCKET_ALIGN(buck->full + size);
-	return (byte *) buck + pos;
-}
-
-static inline u32 id_pair(unsigned int x, unsigned int y)
-{
-	return ((x << 16) | y);
-}
-
-static inline unsigned int id_hash(int cat, u32 id12, u32 id34)
-{
-	unsigned int h;
-
-	h = id12 ^ (id34 << 3) ^ (cat << 5);
-	return h % HASH_SIZE;
-}
-
-static struct id_entry *id_lookup(struct pci_access *a, int cat, int id1,
-				  int id2, int id3, int id4)
-{
-	struct id_entry *n;
-	u32 id12 = id_pair(id1, id2);
-	u32 id34 = id_pair(id3, id4);
-
-	n = a->id_hash[id_hash(cat, id12, id34)];
-	while (n && (n->id12 != id12 || n->id34 != id34 || n->cat != cat))
-		n = n->next;
-	return n;
-}
-
-static int id_insert(struct pci_access *a, int cat, int id1, int id2,
-		     int id3, int id4, byte * text)
-{
-	u32 id12 = id_pair(id1, id2);
-	u32 id34 = id_pair(id3, id4);
-	unsigned int h = id_hash(cat, id12, id34);
-	struct id_entry *n = a->id_hash[h];
-	int len = str_size((char *) text);
-
-	while (n && (n->id12 != id12 || n->id34 != id34 || n->cat != cat))
-		n = n->next;
-	if (n)
-		return 1;
-	n = id_alloc(a, sizeof(struct id_entry) + len);
-	n->id12 = id12;
-	n->id34 = id34;
-	n->cat = cat;
-	memcpy(n->name, text, len + 1);
-	n->next = a->id_hash[h];
-	a->id_hash[h] = n;
-	return 0;
-}
-
-static int id_hex(byte * p, int cnt)
-{
-	int x = 0;
-	while (cnt--) {
-		x <<= 4;
-		if (*p >= '0' && *p <= '9')
-			x += (*p - '0');
-		else if (*p >= 'a' && *p <= 'f')
-			x += (*p - 'a' + 10);
-		else if (*p >= 'A' && *p <= 'F')
-			x += (*p - 'A' + 10);
-		else
-			return -1;
-		p++;
-	}
-	return x;
-}
-
-static inline int id_white_p(int c)
-{
-	return (c == ' ') || (c == '\t');
-}
-
-static const char *id_parse_list(struct pci_access *a, int *lino)
-{
-	byte *line;
-	byte *p;
-	int id1 = 0, id2 = 0, id3 = 0, id4 = 0;
-	int cat = -1;
-	int nest;
-	static const char parse_error[] = "Parse error";
-	size_t i;
-
-	*lino = 0;
-	for (i = 0; i < sizeof(pci_ids) / sizeof(char *); i++) {
-		line = (byte *) pci_ids[i];
-		(*lino)++;
-		p = line;
-		while (*p)
-			p++;
-		if (p > line && (p[-1] == ' ' || p[-1] == '\t'))
-			*--p = 0;
-
-		p = line;
-		while (id_white_p(*p))
-			p++;
-		if (!*p || *p == '#')
-			continue;
-
-		p = line;
-		while (*p == '\t')
-			p++;
-		nest = p - line;
-
-		if (!nest) {	/* Top-level entries */
-			if (p[0] == 'C' && p[1] == ' ') {	/* Class block */
-				if ((id1 = id_hex(p + 2, 2)) < 0 || !id_white_p(p[4]))
-					return parse_error;
-				cat = ID_CLASS;
-				p += 5;
-			} else if (p[0] == 'S' && p[1] == ' ') {	/* Generic subsystem block */
-				if ((id1 = id_hex(p + 2, 4)) < 0 || p[6])
-					return parse_error;
-				if (!id_lookup(a, ID_VENDOR, id1, 0, 0, 0))
-					return "Vendor does not exist";
-				cat = ID_GEN_SUBSYSTEM;
-				continue;
-			} else if (p[0] >= 'A' && p[0] <= 'Z' && p[1] == ' ') {	/* Unrecognized block (RFU) */
-				cat = ID_UNKNOWN;
-				continue;
-			} else {	/* Vendor ID */
-
-				if ((id1 = id_hex(p, 4)) < 0 || !id_white_p(p[4]))
-					return parse_error;
-				cat = ID_VENDOR;
-				p += 5;
-			}
-			id2 = id3 = id4 = 0;
-		} else if (cat == ID_UNKNOWN)	/* Nested entries in RFU blocks are skipped */
-			continue;
-		else if (nest == 1)	/* Nesting level 1 */
-			switch (cat) {
-			case ID_VENDOR:
-			case ID_DEVICE:
-			case ID_SUBSYSTEM:
-				if ((id2 = id_hex(p, 4)) < 0 || !id_white_p(p[4]))
-					return parse_error;
-				p += 5;
-				cat = ID_DEVICE;
-				id3 = id4 = 0;
-				break;
-			case ID_GEN_SUBSYSTEM:
-				if ((id2 = id_hex(p, 4)) < 0 || !id_white_p(p[4]))
-					return parse_error;
-				p += 5;
-				id3 = id4 = 0;
-				break;
-			case ID_CLASS:
-			case ID_SUBCLASS:
-			case ID_PROGIF:
-				if ((id2 = id_hex(p, 2)) < 0 || !id_white_p(p[2]))
-					return parse_error;
-				p += 3;
-				cat = ID_SUBCLASS;
-				id3 = id4 = 0;
-				break;
-			default:
-				return parse_error;
-		} else if (nest == 2)	/* Nesting level 2 */
-			switch (cat) {
-			case ID_DEVICE:
-			case ID_SUBSYSTEM:
-				if ((id3 = id_hex(p, 4)) < 0 || !id_white_p(p[4])
-				    || (id4 = id_hex(p + 5, 4)) < 0 || !id_white_p(p[9]))
-					return parse_error;
-				p += 10;
-				cat = ID_SUBSYSTEM;
-				break;
-			case ID_CLASS:
-			case ID_SUBCLASS:
-			case ID_PROGIF:
-				if ((id3 = id_hex(p, 2)) < 0 || !id_white_p(p[2]))
-					return parse_error;
-				p += 3;
-				cat = ID_PROGIF;
-				id4 = 0;
-				break;
-			default:
-				return parse_error;
-		} else		/* Nesting level 3 or more */
-			return parse_error;
-		while (id_white_p(*p))
-			p++;
-		if (!*p)
-			return parse_error;
-		if (id_insert(a, cat, id1, id2, id3, id4, p))
-			return "Duplicate entry";
-	}
-	return NULL;
-}
-
-int pci_load_name_list(struct pci_access *a)
-{
-	int lino;
-	const char *err;
-
-	pci_free_name_list(a);
-	a->id_hash = pci_malloc(a, sizeof(struct id_entry *) * HASH_SIZE);
-	bzero(a->id_hash, sizeof(struct id_entry *) * HASH_SIZE);
-	err = id_parse_list(a, &lino);
-	if (err)
-		a->error("%s at %s, element %d\n", err, "pci_ids.h", lino);
-	return 1;
-}
-
-void pci_free_name_list(struct pci_access *a)
-{
-	pci_mfree(a->id_hash);
-	a->id_hash = NULL;
-	while (a->current_id_bucket) {
-		struct id_bucket *buck = a->current_id_bucket;
-		a->current_id_bucket = buck->next;
-		pci_mfree(buck);
-	}
-}
-
-static struct id_entry *id_lookup_subsys(struct pci_access *a, int iv,
-					 int id, int isv, int isd)
-{
-	struct id_entry *d = NULL;
-	if (iv > 0 && id > 0)	/* Per-device lookup */
-		d = id_lookup(a, ID_SUBSYSTEM, iv, id, isv, isd);
-	if (!d)			/* Generic lookup */
-		d = id_lookup(a, ID_GEN_SUBSYSTEM, isv, isd, 0, 0);
-	if (!d && iv == isv && id == isd)	/* Check for subsystem == device */
-		d = id_lookup(a, ID_DEVICE, iv, id, 0, 0);
-	return d;
-}
-
-char *pci_lookup_name(struct pci_access *a, char *buf, int size, int flags,
-		      ...)
-{
-	va_list args;
-	int num, res, synth;
-	struct id_entry *v, *d, *cls, *pif;
-	int iv, id, isv, isd, icls, ipif;
-
-	va_start(args, flags);
-
-	num = 0;
-	if ((flags & PCI_LOOKUP_NUMERIC) || a->numeric_ids) {
-		flags &= ~PCI_LOOKUP_NUMERIC;
-		num = 1;
-	} else if (!a->id_hash) {
-		if (!pci_load_name_list(a))
-			num = a->numeric_ids = 1;
-	}
-
-	if (flags & PCI_LOOKUP_NO_NUMBERS) {
-		flags &= ~PCI_LOOKUP_NO_NUMBERS;
-		synth = 0;
-		if (num)
-			return NULL;
-	} else
-		synth = 1;
-
-	switch (flags) {
-	case PCI_LOOKUP_VENDOR:
-		iv = va_arg(args, int);
-		if (num)
-			res = snprintf(buf, size, "%04x", iv);
-		else if ((v = id_lookup(a, ID_VENDOR, iv, 0, 0, 0)) != 0)
-			return (char *) v->name;
-		else
-			res = snprintf(buf, size, "Unknown vendor %04x", iv);
-		break;
-	case PCI_LOOKUP_DEVICE:
-		iv = va_arg(args, int);
-		id = va_arg(args, int);
-		if (num)
-			res = snprintf(buf, size, "%04x", id);
-		else if ((d = id_lookup(a, ID_DEVICE, iv, id, 0, 0)) != 0)
-			return (char *) d->name;
-		else if (synth)
-			res = snprintf(buf, size, "Unknown device %04x", id);
-		else
-			return NULL;
-		break;
-	case PCI_LOOKUP_VENDOR | PCI_LOOKUP_DEVICE:
-		iv = va_arg(args, int);
-		id = va_arg(args, int);
-		if (num)
-			res = snprintf(buf, size, "%04x:%04x", iv, id);
-		else {
-			v = id_lookup(a, ID_VENDOR, iv, 0, 0, 0);
-			d = id_lookup(a, ID_DEVICE, iv, id, 0, 0);
-			if (v && d)
-				res = snprintf(buf, size, "%s %s", v->name,
-					     d->name);
-			else if (!synth)
-				return NULL;
-			else if (!v)
-				res = snprintf(buf, size, "Unknown device %04x:%04x", iv, id);
-			else	/* !d */
-				res = snprintf(buf, size, "%s Unknown device %04x", v->name, id);
-		}
-		break;
-	case PCI_LOOKUP_SUBSYSTEM | PCI_LOOKUP_VENDOR:
-		isv = va_arg(args, int);
-		if (num)
-			res = snprintf(buf, size, "%04x", isv);
-		else if ((v = id_lookup(a, ID_VENDOR, isv, 0, 0, 0)) != 0)
-			return (char *) v->name;
-		else if (synth)
-			res = snprintf(buf, size, "Unknown vendor %04x", isv);
-		else
-			return NULL;
-		break;
-	case PCI_LOOKUP_SUBSYSTEM | PCI_LOOKUP_DEVICE:
-		iv = va_arg(args, int);
-		id = va_arg(args, int);
-		isv = va_arg(args, int);
-		isd = va_arg(args, int);
-		if (num)
-			res = snprintf(buf, size, "%04x", isd);
-		else if ((d = id_lookup_subsys(a, iv, id, isv, isd)) != 0)
-			return (char *) d->name;
-		else if (synth)
-			res = snprintf(buf, size, "Unknown device %04x", isd);
-		else
-			return NULL;
-		break;
-	case PCI_LOOKUP_VENDOR | PCI_LOOKUP_DEVICE | PCI_LOOKUP_SUBSYSTEM:
-		iv = va_arg(args, int);
-		id = va_arg(args, int);
-		isv = va_arg(args, int);
-		isd = va_arg(args, int);
-		if (num)
-			res = snprintf(buf, size, "%04x:%04x", isv, isd);
-		else {
-			v = id_lookup(a, ID_VENDOR, isv, 0, 0, 0);
-			d = id_lookup_subsys(a, iv, id, isv, isd);
-			if (v && d)
-				res = snprintf(buf, size, "%s %s", v->name, d->name);
-			else if (!synth)
-				return NULL;
-			else if (!v)
-				res = snprintf(buf, size, "Unknown device %04x:%04x", isv, isd);
-			else	/* !d */
-				res = snprintf(buf, size, "%s Unknown device %04x", v->name, isd);
-		}
-		break;
-	case PCI_LOOKUP_CLASS:
-		icls = va_arg(args, int);
-		if (num)
-			res = snprintf(buf, size, "%04x", icls);
-		else if ((cls = id_lookup(a, ID_SUBCLASS, icls >> 8, icls & 0xff, 0, 0)) != 0)
-			return (char *) cls->name;
-		else if ((cls = id_lookup(a, ID_CLASS, icls, 0, 0, 0)) != 0)
-			res = snprintf(buf, size, "%s [%04x]", cls->name, icls);
-		else if (synth)
-			res = snprintf(buf, size, "Class %04x", icls);
-		else
-			return NULL;
-		break;
-	case PCI_LOOKUP_PROGIF:
-		icls = va_arg(args, int);
-		ipif = va_arg(args, int);
-		if (num)
-			res = snprintf(buf, size, "%02x", ipif);
-		else if ((pif = id_lookup(a, ID_PROGIF, icls >> 8, icls & 0xff, ipif, 0)) != 0)
-			return (char *) pif->name;
-		else if (icls == 0x0101 && !(ipif & 0x70)) {
-			/* IDE controllers have complex prog-if semantics */
-			res = snprintf(buf, size, "%s%s%s%s%s",
-				       (ipif & 0x80) ? "Master " : "",
-				       (ipif & 0x08) ? "SecP " : "",
-				       (ipif & 0x04) ? "SecO " : "",
-				       (ipif & 0x02) ? "PriP " : "",
-				       (ipif & 0x01) ? "PriO " : "");
-			if (res > 0 && res < size)
-				buf[--res] = 0;
-		} else if (synth)
-			res = snprintf(buf, size, "ProgIf %02x", ipif);
-		else
-			return NULL;
-		break;
-	default:
-		return "<pci_lookup_name: invalid request>";
-	}
-	if (res < 0 || res >= size)
-		return "<pci_lookup_name: buffer too small>";
-	else
-		return buf;
-}
Index: uspace/srv/pci/libpci/pci.h
===================================================================
--- uspace/srv/pci/libpci/pci.h	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,146 +1,0 @@
-/*
- *	The PCI Library
- *
- *	Copyright (c) 1997--2005 Martin Mares <mj@ucw.cz>
- *
- *	May 8, 2006 - Modified and ported to HelenOS by Jakub Jermar.
- *
- *	Can be freely distributed and used under the terms of the GNU GPL.
- */
-
-#ifndef _PCI_LIB_H
-#define _PCI_LIB_H
-
-#include "header.h"
-#include "types.h"
-
-#define PCI_LIB_VERSION 0x020200
-
-/*
- *	PCI Access Structure
- */
-
-struct pci_methods;
-
-enum pci_access_type {
-	/* Known access methods, remember to update access.c as well */
-	PCI_ACCESS_I386_TYPE1,	/* i386 ports, type 1 (params: none) */
-	PCI_ACCESS_I386_TYPE2,	/* i386 ports, type 2 (params: none) */
-	PCI_ACCESS_MAX
-};
-
-struct pci_access {
-	/* Options you can change: */
-	unsigned int method;	/* Access method */
-	char *method_params[PCI_ACCESS_MAX];	/* Parameters for the methods */
-	int writeable;		/* Open in read/write mode */
-	int buscentric;		/* Bus-centric view of the world */
-	int numeric_ids;	/* Don't resolve device IDs to names */
-	int debugging;		/* Turn on debugging messages */
-
-	/* Functions you can override: */
-	void (*error) (char *msg, ...);	/* Write error message and quit */
-	void (*warning) (char *msg, ...);	/* Write a warning message */
-	void (*debug) (char *msg, ...);	/* Write a debugging message */
-
-	struct pci_dev *devices;	/* Devices found on this bus */
-
-	/* Fields used internally: */
-	struct pci_methods *methods;
-	struct id_entry **id_hash;	/* names.c */
-	struct id_bucket *current_id_bucket;
-};
-
-/* Initialize PCI access */
-struct pci_access *pci_alloc(void);
-void pci_init(struct pci_access *);
-void pci_cleanup(struct pci_access *);
-
-/* Scanning of devices */
-void pci_scan_bus(struct pci_access *acc);
-struct pci_dev *pci_get_dev(struct pci_access *acc, int domain, int bus, int dev, int func);	/* Raw access to specified device */
-void pci_free_dev(struct pci_dev *);
-
-/*
- *	Devices
- */
-
-struct pci_dev {
-	struct pci_dev *next;	/* Next device in the chain */
-	u16 domain;		/* PCI domain (host bridge) */
-	u8 bus, dev, func;	/* Bus inside domain, device and function */
-
-	/* These fields are set by pci_fill_info() */
-	int known_fields;	/* Set of info fields already known */
-	u16 vendor_id, device_id;	/* Identity of the device */
-	int irq;		/* IRQ number */
-	pciaddr_t base_addr[6];	/* Base addresses */
-	pciaddr_t size[6];	/* Region sizes */
-	pciaddr_t rom_base_addr;	/* Expansion ROM base address */
-	pciaddr_t rom_size;	/* Expansion ROM size */
-
-	/* Fields used internally: */
-	struct pci_access *access;
-	struct pci_methods *methods;
-	u8 *cache;		/* Cached config registers */
-	int cache_len;
-	int hdrtype;		/* Cached low 7 bits of header type, -1 if unknown */
-	void *aux;		/* Auxillary data */
-};
-
-#define PCI_ADDR_IO_MASK (~(pciaddr_t) 0x3)
-#define PCI_ADDR_MEM_MASK (~(pciaddr_t) 0xf)
-
-u8 pci_read_byte(struct pci_dev *, int pos);	/* Access to configuration space */
-u16 pci_read_word(struct pci_dev *, int pos);
-u32 pci_read_long(struct pci_dev *, int pos);
-int pci_read_block(struct pci_dev *, int pos, u8 * buf, int len);
-int pci_write_byte(struct pci_dev *, int pos, u8 data);
-int pci_write_word(struct pci_dev *, int pos, u16 data);
-int pci_write_long(struct pci_dev *, int pos, u32 data);
-int pci_write_block(struct pci_dev *, int pos, u8 * buf, int len);
-
-int pci_fill_info(struct pci_dev *, int flags);	/* Fill in device information */
-
-#define PCI_FILL_IDENT		1
-#define PCI_FILL_IRQ		2
-#define PCI_FILL_BASES		4
-#define PCI_FILL_ROM_BASE	8
-#define PCI_FILL_SIZES		16
-#define PCI_FILL_RESCAN		0x10000
-
-void pci_setup_cache(struct pci_dev *, u8 * cache, int len);
-
-/*
- *	Conversion of PCI ID's to names (according to the pci.ids file)
- *
- *	Call pci_lookup_name() to identify different types of ID's:
- *
- *	VENDOR				(vendorID) -> vendor
- *	DEVICE				(vendorID, deviceID) -> device
- *	VENDOR | DEVICE			(vendorID, deviceID) -> combined vendor and device
- *	SUBSYSTEM | VENDOR		(subvendorID) -> subsystem vendor
- *	SUBSYSTEM | DEVICE		(vendorID, deviceID, subvendorID, subdevID) -> subsystem device
- *	SUBSYSTEM | VENDOR | DEVICE	(vendorID, deviceID, subvendorID, subdevID) -> combined subsystem v+d
- *	SUBSYSTEM | ...			(-1, -1, subvendorID, subdevID) -> generic subsystem
- *	CLASS				(classID) -> class
- *	PROGIF				(classID, progif) -> programming interface
- */
-
-char *pci_lookup_name(struct pci_access *a, char *buf, int size, int flags,
-		      ...);
-
-int pci_load_name_list(struct pci_access *a);	/* Called automatically by pci_lookup_*() when needed; returns success */
-void pci_free_name_list(struct pci_access *a);	/* Called automatically by pci_cleanup() */
-
-enum pci_lookup_mode {
-	PCI_LOOKUP_VENDOR = 1,	/* Vendor name (args: vendorID) */
-	PCI_LOOKUP_DEVICE = 2,	/* Device name (args: vendorID, deviceID) */
-	PCI_LOOKUP_CLASS = 4,	/* Device class (args: classID) */
-	PCI_LOOKUP_SUBSYSTEM = 8,
-	PCI_LOOKUP_PROGIF = 16,	/* Programming interface (args: classID, prog_if) */
-	PCI_LOOKUP_NUMERIC = 0x10000,	/* Want only formatted numbers; default if access->numeric_ids is set */
-	PCI_LOOKUP_NO_NUMBERS = 0x20000	/* Return NULL if not found in the database; default is to print numerically */
-};
-
-#endif
Index: uspace/srv/pci/libpci/pci_ids.h
===================================================================
--- uspace/srv/pci/libpci/pci_ids.h	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,11934 +1,0 @@
-/* DO NOT EDIT, THIS FILE IS AUTOMATICALLY GENERATED */
-char *pci_ids[] = {
-"0000  Gammagraphx, Inc.",
-"001a  Ascend Communications, Inc.",
-"0033  Paradyne corp.",
-"003d  Lockheed Martin-Marietta Corp",
-"0059  Tiger Jet Network Inc. (Wrong ID)",
-"0070  Hauppauge computer works Inc.",
-"0071  Nebula Electronics Ltd.",
-"0095  Silicon Image, Inc. (Wrong ID)",
-"	0680  Ultra ATA/133 IDE RAID CONTROLLER CARD",
-"00a7  Teles AG (Wrong ID)",
-"00f5  BFG Technologies, Inc.",
-"0100  Ncipher Corp Ltd",
-"0123  General Dynamics",
-"018a  LevelOne",
-"	0106  FPC-0106TX misprogrammed [RTL81xx]",
-"021b  Compaq Computer Corporation",
-"	8139  HNE-300 (RealTek RTL8139c) [iPaq Networking]",
-"0270  Hauppauge computer works Inc. (Wrong ID)",
-"0291  Davicom Semiconductor, Inc.",
-"	8212  DM9102A(DM9102AE, SM9102AF) Ethernet 100/10 MBit(Rev 40)",
-"02ac  SpeedStream",
-"	1012  1012 PCMCIA 10/100 Ethernet Card [RTL81xx]",
-"0315  SK-Electronics Co., Ltd.",
-"0357  TTTech AG",
-"	000a  TTP-Monitoring Card V2.0",
-"0432  SCM Microsystems, Inc.",
-"	0001  Pluto2 DVB-T Receiver for PCMCIA [EasyWatch MobilSet]",
-"045e  Microsoft",
-"	006e  MN-510 802.11b wireless USB paddle",
-"	00c2  MN-710 wireless USB paddle",
-"04cf  Myson Century, Inc",
-"	8818  CS8818 USB2.0-to-ATAPI Bridge Controller with Embedded PHY",
-"050d  Belkin",
-"	0109  F5U409-CU USB/Serial Portable Adapter",
-"	7050  F5D7050 802.11g Wireless USB Adapter",
-"05e3  CyberDoor",
-"	0701  CBD516",
-"066f  Sigmatel Inc.",
-"	3410  SMTP3410",
-"	3500  SMTP3500",
-"0675  Dynalink",
-"	1700  IS64PH ISDN Adapter",
-"	1702  IS64PH ISDN Adapter",
-"	1703  ISDN Adapter (PCI Bus, DV, W)",
-"	1704  ISDN Adapter (PCI Bus, D, C)",
-"067b  Prolific Technology, Inc.",
-"	3507  PL-3507 Hi-Speed USB & IEEE 1394 Combo to IDE Bridge Controller",
-"0721  Sapphire, Inc.",
-"07e2  ELMEG Communication Systems GmbH",
-"0925  VIA Technologies, Inc. (Wrong ID)",
-"09c1  Arris",
-"	0704  CM 200E Cable Modem",
-"0a89  BREA Technologies Inc",
-"0b0b  Rhino Equiment Corp.",
-"	0105  Rhino R1T1",
-"	0205  Rhino R4FXO",
-"	0305  Rhino R4T1",
-"	0405  Rhino R8FXX",
-"	0505  Rhino R24FXX",
-"	0506  Rhino R2T1",
-"0b49  ASCII Corporation",
-"	064f  Trance Vibrator",
-"0e11  Compaq Computer Corporation",
-"	0001  PCI to EISA Bridge",
-"	0002  PCI to ISA Bridge",
-"	0046  Smart Array 64xx",
-"		0e11 409a  Smart Array 641",
-"		0e11 409b  Smart Array 642",
-"		0e11 409c  Smart Array 6400",
-"		0e11 409d  Smart Array 6400 EM",
-"	0049  NC7132 Gigabit Upgrade Module",
-"	004a  NC6136 Gigabit Server Adapter",
-"	005a  Remote Insight II board - Lights-Out",
-"	007c  NC7770 1000BaseTX",
-"	007d  NC6770 1000BaseTX",
-"	0085  NC7780 1000BaseTX",
-"	00b1  Remote Insight II board - PCI device",
-"	00bb  NC7760",
-"	00ca  NC7771",
-"	00cb  NC7781",
-"	00cf  NC7772",
-"	00d0  NC7782",
-"	00d1  NC7783",
-"	00e3  NC7761",
-"	0508  Netelligent 4/16 Token Ring",
-"	1000  Triflex/Pentium Bridge, Model 1000",
-"	2000  Triflex/Pentium Bridge, Model 2000",
-"	3032  QVision 1280/p",
-"	3033  QVision 1280/p",
-"	3034  QVision 1280/p",
-"	4000  4000 [Triflex]",
-"	4030  SMART-2/P",
-"	4031  SMART-2SL",
-"	4032  Smart Array 3200",
-"	4033  Smart Array 3100ES",
-"	4034  Smart Array 221",
-"	4040  Integrated Array",
-"	4048  Compaq Raid LC2",
-"	4050  Smart Array 4200",
-"	4051  Smart Array 4250ES",
-"	4058  Smart Array 431",
-"	4070  Smart Array 5300",
-"	4080  Smart Array 5i",
-"	4082  Smart Array 532",
-"	4083  Smart Array 5312",
-"	4091  Smart Array 6i",
-"	409a  Smart Array 641",
-"	409b  Smart Array 642",
-"	409c  Smart Array 6400",
-"	409d  Smart Array 6400 EM",
-"	6010  HotPlug PCI Bridge 6010",
-"	7020  USB Controller",
-"	a0ec  Fibre Channel Host Controller",
-"	a0f0  Advanced System Management Controller",
-"	a0f3  Triflex PCI to ISA Bridge",
-"	a0f7  PCI Hotplug Controller",
-"		8086 002a  PCI Hotplug Controller A",
-"		8086 002b  PCI Hotplug Controller B",
-"	a0f8  ZFMicro Chipset USB",
-"	a0fc  FibreChannel HBA Tachyon",
-"	ae10  Smart-2/P RAID Controller",
-"		0e11 4030  Smart-2/P Array Controller",
-"		0e11 4031  Smart-2SL Array Controller",
-"		0e11 4032  Smart Array Controller",
-"		0e11 4033  Smart 3100ES Array Controller",
-"	ae29  MIS-L",
-"	ae2a  MPC",
-"	ae2b  MIS-E",
-"	ae31  System Management Controller",
-"	ae32  Netelligent 10/100 TX PCI UTP",
-"	ae33  Triflex Dual EIDE Controller",
-"	ae34  Netelligent 10 T PCI UTP",
-"	ae35  Integrated NetFlex-3/P",
-"	ae40  Netelligent Dual 10/100 TX PCI UTP",
-"	ae43  Netelligent Integrated 10/100 TX UTP",
-"	ae69  CETUS-L",
-"	ae6c  Northstar",
-"	ae6d  NorthStar CPU to PCI Bridge",
-"	b011  Netelligent 10/100 TX Embedded UTP",
-"	b012  Netelligent 10 T/2 PCI UTP/Coax",
-"	b01e  NC3120 Fast Ethernet NIC",
-"	b01f  NC3122 Fast Ethernet NIC",
-"	b02f  NC1120 Ethernet NIC",
-"	b030  Netelligent 10/100 TX UTP",
-"	b04a  10/100 TX PCI Intel WOL UTP Controller",
-"	b060  Smart Array 5300 Controller",
-"	b0c6  NC3161 Fast Ethernet NIC",
-"	b0c7  NC3160 Fast Ethernet NIC",
-"	b0d7  NC3121 Fast Ethernet NIC",
-"	b0dd  NC3131 Fast Ethernet NIC",
-"	b0de  NC3132 Fast Ethernet Module",
-"	b0df  NC6132 Gigabit Module",
-"	b0e0  NC6133 Gigabit Module",
-"	b0e1  NC3133 Fast Ethernet Module",
-"	b123  NC6134 Gigabit NIC",
-"	b134  NC3163 Fast Ethernet NIC",
-"	b13c  NC3162 Fast Ethernet NIC",
-"	b144  NC3123 Fast Ethernet NIC",
-"	b163  NC3134 Fast Ethernet NIC",
-"	b164  NC3165 Fast Ethernet Upgrade Module",
-"	b178  Smart Array 5i/532",
-"		0e11 4080  Smart Array 5i",
-"		0e11 4082  Smart Array 532",
-"		0e11 4083  Smart Array 5312",
-"	b1a4  NC7131 Gigabit Server Adapter",
-"	b200  Memory Hot-Plug Controller",
-"	b203  Integrated Lights Out Controller",
-"	b204  Integrated Lights Out  Processor",
-"	f130  NetFlex-3/P ThunderLAN 1.0",
-"	f150  NetFlex-3/P ThunderLAN 2.3",
-"0e21  Cowon Systems, Inc.",
-"0e55  HaSoTec GmbH",
-"1000  LSI Logic / Symbios Logic",
-"	0001  53c810",
-"		1000 1000  LSI53C810AE PCI to SCSI I/O Processor",
-"	0002  53c820",
-"	0003  53c825",
-"		1000 1000  LSI53C825AE PCI to SCSI I/O Processor (Ultra Wide)",
-"	0004  53c815",
-"	0005  53c810AP",
-"	0006  53c860",
-"		1000 1000  LSI53C860E PCI to Ultra SCSI I/O Processor",
-"	000a  53c1510",
-"		1000 1000  LSI53C1510 PCI to Dual Channel Wide Ultra2 SCSI Controller (Nonintelligent mode)",
-"	000b  53C896/897",
-"		0e11 6004  EOB003 Series SCSI host adapter",
-"		1000 1000  LSI53C896/7 PCI to Dual Channel Ultra2 SCSI Multifunction Controller",
-"		1000 1010  LSI22910 PCI to Dual Channel Ultra2 SCSI host adapter",
-"		1000 1020  LSI21002 PCI to Dual Channel Ultra2 SCSI host adapter",
-"		13e9 1000  6221L-4U",
-"	000c  53c895",
-"		1000 1010  LSI8951U PCI to Ultra2 SCSI host adapter",
-"		1000 1020  LSI8952U PCI to Ultra2 SCSI host adapter",
-"		1de1 3906  DC-390U2B SCSI adapter",
-"		1de1 3907  DC-390U2W",
-"	000d  53c885",
-"	000f  53c875",
-"		0e11 7004  Embedded Ultra Wide SCSI Controller",
-"		1000 1000  LSI53C876/E PCI to Dual Channel SCSI Controller",
-"		1000 1010  LSI22801 PCI to Dual Channel Ultra SCSI host adapter",
-"		1000 1020  LSI22802 PCI to Dual Channel Ultra SCSI host adapter",
-"		1092 8760  FirePort 40 Dual SCSI Controller",
-"		1de1 3904  DC390F/U Ultra Wide SCSI Adapter",
-"		4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard",
-"		4c53 1050  CT7 mainboard",
-"	0010  53C1510",
-"		0e11 4040  Integrated Array Controller",
-"		0e11 4048  RAID LC2 Controller",
-"		1000 1000  53C1510 PCI to Dual Channel Wide Ultra2 SCSI Controller (Intelligent mode)",
-"	0012  53c895a",
-"		1000 1000  LSI53C895A PCI to Ultra2 SCSI Controller",
-"	0013  53c875a",
-"		1000 1000  LSI53C875A PCI to Ultra SCSI Controller",
-"	0020  53c1010 Ultra3 SCSI Adapter",
-"		1000 1000  LSI53C1010-33 PCI to Dual Channel Ultra160 SCSI Controller",
-"		1de1 1020  DC-390U3W",
-"	0021  53c1010 66MHz  Ultra3 SCSI Adapter",
-"		1000 1000  LSI53C1000/1000R/1010R/1010-66 PCI to Ultra160 SCSI Controller",
-"		1000 1010  Asus TR-DLS onboard 53C1010-66",
-"		124b 1070  PMC-USCSI3",
-"		4c53 1080  CT8 mainboard",
-"		4c53 1300  P017 mezzanine (32-bit PMC)",
-"		4c53 1310  P017 mezzanine (64-bit PMC)",
-"	0030  53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI",
-"		0e11 00da  ProLiant ML 350",
-"		1028 0123  PowerEdge 2600",
-"		1028 014a  PowerEdge 1750",
-"		1028 016c  PowerEdge 1850 MPT Fusion SCSI/RAID (Perc 4)",
-"		1028 0183  PowerEdge 1800",
-"		1028 1010  LSI U320 SCSI Controller",
-"		124b 1170  PMC-USCSI320",
-"		1734 1052  Primergy RX300 S2",
-"	0031  53c1030ZC PCI-X Fusion-MPT Dual Ultra320 SCSI",
-"	0032  53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI",
-"		1000 1000  LSI53C1020/1030 PCI-X to Ultra320 SCSI Controller",
-"	0033  1030ZC_53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI",
-"	0040  53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI",
-"		1000 0033  MegaRAID SCSI 320-2XR",
-"		1000 0066  MegaRAID SCSI 320-2XRWS",
-"	0041  53C1035ZC PCI-X Fusion-MPT Dual Ultra320 SCSI",
-"	0050  SAS1064 PCI-X Fusion-MPT SAS",
-"	0054  SAS1068 PCI-X Fusion-MPT SAS",
-"	0056  SAS1064E PCI-Express Fusion-MPT SAS",
-"	0058  SAS1068E PCI-Express Fusion-MPT SAS",
-"	005a  SAS1066E PCI-Express Fusion-MPT SAS",
-"	005c  SAS1064A PCI-X Fusion-MPT SAS",
-"	005e  SAS1066 PCI-X Fusion-MPT SAS",
-"	0060  SAS1078 PCI-X Fusion-MPT SAS",
-"	0062  SAS1078 PCI-Express Fusion-MPT SAS",
-"		1000 0062  SAS1078 PCI-Express Fusion-MPT SAS",
-"	008f  53c875J",
-"		1092 8000  FirePort 40 SCSI Controller",
-"		1092 8760  FirePort 40 Dual SCSI Host Adapter",
-"	0407  MegaRAID",
-"		1000 0530  MegaRAID 530 SCSI 320-0X RAID Controller",
-"		1000 0531  MegaRAID 531 SCSI 320-4X RAID Controller",
-"		1000 0532  MegaRAID 532 SCSI 320-2X RAID Controller",
-"		1028 0531  PowerEdge Expandable RAID Controller 4/QC",
-"		1028 0533  PowerEdge Expandable RAID Controller 4/QC",
-"		8086 0530  MegaRAID Intel RAID Controller SRCZCRX",
-"		8086 0532  MegaRAID Intel RAID Controller SRCU42X",
-"	0408  MegaRAID",
-"		1000 0001  MegaRAID SCSI 320-1E RAID Controller",
-"		1000 0002  MegaRAID SCSI 320-2E RAID Controller",
-"		1025 004d  MegaRAID ACER ROMB-2E RAID Controller",
-"		1028 0001  PowerEdge RAID Controller PERC4e/SC",
-"		1028 0002  PowerEdge RAID Controller PERC4e/DC",
-"		1734 1065  FSC MegaRAID PCI Express ROMB",
-"		8086 0002  MegaRAID Intel RAID Controller SRCU42E",
-"	0409  MegaRAID",
-"		1000 3004  MegaRAID SATA 300-4X RAID Controller",
-"		1000 3008  MegaRAID SATA 300-8X RAID Controller",
-"		8086 3008  MegaRAID RAID Controller SRCS28X",
-"		8086 3431  MegaRAID RAID Controller Alief SROMBU42E",
-"		8086 3499  MegaRAID RAID Controller Harwich SROMBU42E",
-"	0621  FC909 Fibre Channel Adapter",
-"	0622  FC929 Fibre Channel Adapter",
-"		1000 1020  44929 O Dual Fibre Channel card",
-"	0623  FC929 LAN",
-"	0624  FC919 Fibre Channel Adapter",
-"	0625  FC919 LAN",
-"	0626  FC929X Fibre Channel Adapter",
-"		1000 1010  7202-XP-LC Dual Fibre Channel card",
-"	0627  FC929X LAN",
-"	0628  FC919X Fibre Channel Adapter",
-"	0629  FC919X LAN",
-"	0640  FC949X Fibre Channel Adapter",
-"	0642  FC939X Fibre Channel Adapter",
-"	0646  FC949ES Fibre Channel Adapter",
-"	0701  83C885 NT50 DigitalScape Fast Ethernet",
-"	0702  Yellowfin G-NIC gigabit ethernet",
-"		1318 0000  PEI100X",
-"	0804  SA2010",
-"	0805  SA2010ZC",
-"	0806  SA2020",
-"	0807  SA2020ZC",
-"	0901  61C102",
-"	1000  63C815",
-"	1960  MegaRAID",
-"		1000 0518  MegaRAID 518 SCSI 320-2 Controller",
-"		1000 0520  MegaRAID 520 SCSI 320-1 Controller",
-"		1000 0522  MegaRAID 522 i4 133 RAID Controller",
-"		1000 0523  MegaRAID SATA 150-6 RAID Controller",
-"		1000 4523  MegaRAID SATA 150-4 RAID Controller",
-"		1000 a520  MegaRAID ZCR SCSI 320-0 Controller",
-"		1028 0518  MegaRAID 518 DELL PERC 4/DC RAID Controller",
-"		1028 0520  MegaRAID 520 DELL PERC 4/SC RAID Controller",
-"		1028 0531  PowerEdge Expandable RAID Controller 4/QC",
-"		1028 0533  PowerEdge Expandable RAID Controller 4/QC",
-"		8086 0520  MegaRAIDRAID Controller SRCU41L",
-"		8086 0523  MegaRAID RAID Controller SRCS16",
-"1001  Kolter Electronic",
-"	0010  PCI 1616 Measurement card with 32 digital I/O lines",
-"	0011  OPTO-PCI Opto-Isolated digital I/O board",
-"	0012  PCI-AD/DA Analogue I/O board",
-"	0013  PCI-OPTO-RELAIS Digital I/O board with relay outputs",
-"	0014  PCI-Counter/Timer Counter Timer board",
-"	0015  PCI-DAC416 Analogue output board",
-"	0016  PCI-MFB Analogue I/O board",
-"	0017  PROTO-3 PCI Prototyping board",
-"	9100  INI-9100/9100W SCSI Host",
-"1002  ATI Technologies Inc",
-"	3150  M24 1P [Radeon Mobility X600]",
-"	3152  M22 [Radeon Mobility X300]",
-"	3154  M24 1T [FireGL M24 GL]",
-"	3e50  RV380 0x3e50 [Radeon X600]",
-"	3e54  RV380 0x3e54 [FireGL V3200]",
-"	3e70  RV380 [Radeon X600] Secondary",
-"	4136  Radeon IGP 320 M",
-"	4137  Radeon IGP330/340/350",
-"	4144  R300 AD [Radeon 9500 Pro]",
-"	4145  R300 AE [Radeon 9700 Pro]",
-"	4146  R300 AF [Radeon 9700 Pro]",
-"	4147  R300 AG [FireGL Z1/X1]",
-"	4148  R350 AH [Radeon 9800]",
-"	4149  R350 AI [Radeon 9800]",
-"	414a  R350 AJ [Radeon 9800]",
-"	414b  R350 AK [Fire GL X2]",
-"	4150  RV350 AP [Radeon 9600]",
-"		1002 0002  R9600 Pro primary (Asus OEM for HP)",
-"		1002 0003  R9600 Pro secondary (Asus OEM for HP)",
-"		1002 4722  All-in-Wonder 2006 AGP Edition",
-"		1458 4024  Giga-Byte GV-R96128D Primary",
-"		148c 2064  PowerColor R96A-C3N",
-"		148c 2066  PowerColor R96A-C3N",
-"		174b 7c19  Sapphire Atlantis Radeon 9600 Pro",
-"		174b 7c29  GC-R9600PRO Primary [Sapphire]",
-"		17ee 2002  Radeon 9600 256Mb Primary",
-"		18bc 0101  GC-R9600PRO Primary",
-"	4151  RV350 AQ [Radeon 9600]",
-"		1043 c004  A9600SE",
-"	4152  RV350 AR [Radeon 9600]",
-"		1002 0002  Radeon 9600XT",
-"		1002 4772  All-in-Wonder 9600 XT",
-"		1043 c002  Radeon 9600 XT TVD",
-"		1043 c01a  A9600XT/TD",
-"		174b 7c29  Sapphire Radeon 9600XT",
-"		1787 4002  Radeon 9600 XT",
-"	4153  RV350 AS [Radeon 9550]",
-"		1462 932c  865PE Neo2-V (MS-6788) mainboard",
-"	4154  RV350 AT [Fire GL T2]",
-"	4155  RV350 AU [Fire GL T2]",
-"	4156  RV350 AV [Fire GL T2]",
-"	4157  RV350 AW [Fire GL T2]",
-"	4158  68800AX [Mach32]",
-"	4164  R300 AD [Radeon 9500 Pro] (Secondary)",
-"	4165  R300 AE [Radeon 9700 Pro] (Secondary)",
-"	4166  R300 AF [Radeon 9700 Pro] (Secondary)",
-"	4168  Radeon R350 [Radeon 9800] (Secondary)",
-"	4170  RV350 AP [Radeon 9600] (Secondary)",
-"		1002 0003  R9600 Pro secondary (Asus OEM for HP)",
-"		1002 4723  All-in-Wonder 2006 AGP Edition (Secondary)",
-"		1458 4025  Giga-Byte GV-R96128D Secondary",
-"		148c 2067  PowerColor R96A-C3N (Secondary)",
-"		174b 7c28  GC-R9600PRO Secondary [Sapphire]",
-"		17ee 2003  Radeon 9600 256Mb Secondary",
-"		18bc 0100  GC-R9600PRO Secondary",
-"	4171  RV350 AQ [Radeon 9600] (Secondary)",
-"		1043 c005  A9600SE (Secondary)",
-"	4172  RV350 AR [Radeon 9600] (Secondary)",
-"		1002 0003  Radeon 9600XT (Secondary)",
-"		1002 4773  All-in-Wonder 9600 XT (Secondary)",
-"		1043 c003  A9600XT (Secondary)",
-"		1043 c01b  A9600XT/TD (Secondary)",
-"		174b 7c28  Sapphire Radeon 9600XT (Secondary)",
-"		1787 4003  Radeon 9600 XT (Secondary)",
-"	4173  RV350 \?\? [Radeon 9550] (Secondary)",
-"	4237  Radeon 7000 IGP",
-"	4242  R200 BB [Radeon All in Wonder 8500DV]",
-"		1002 02aa  Radeon 8500 AIW DV Edition",
-"	4243  R200 BC [Radeon All in Wonder 8500]",
-"	4336  Radeon Mobility U1",
-"		1002 4336  Pavilion ze4300 ATI Radeon Mobility U1 (IGP 320 M)",
-"		103c 0024  Pavilion ze4400 builtin Video",
-"		161f 2029  eMachines M5312 builtin Video",
-"	4337  Radeon IGP 330M/340M/350M",
-"		1014 053a  ThinkPad R40e (2684-HVG) builtin VGA controller",
-"		103c 0850  Radeon IGP 345M",
-"	4341  IXP150 AC'97 Audio Controller",
-"	4345  EHCI USB Controller",
-"	4347  OHCI USB Controller #1",
-"	4348  OHCI USB Controller #2",
-"	4349  ATI Dual Channel Bus Master PCI IDE Controller",
-"	434d  IXP AC'97 Modem",
-"	4353  ATI SMBus",
-"	4354  215CT [Mach64 CT]",
-"	4358  210888CX [Mach64 CX]",
-"	4363  ATI SMBus",
-"	436e  ATI 436E Serial ATA Controller",
-"	4370  IXP SB400 AC'97 Audio Controller",
-"		1025 0079  Aspire 5024WLMMi",
-"		103c 308b  MX6125",
-"		107b 0300  MX6421",
-"	4371  IXP SB400 PCI-PCI Bridge",
-"		103c 308b  MX6125",
-"	4372  IXP SB400 SMBus Controller",
-"		1025 0080  Aspire 5024WLMMi",
-"		103c 308b  MX6125",
-"	4373  IXP SB400 USB2 Host Controller",
-"		1025 0080  Aspire 5024WLMMi",
-"		103c 308b  MX6125",
-"	4374  IXP SB400 USB Host Controller",
-"		103c 308b  MX6125",
-"	4375  IXP SB400 USB Host Controller",
-"		1025 0080  Aspire 5024WLMMi",
-"		103c 308b  MX6125",
-"	4376  Standard Dual Channel PCI IDE Controller ATI",
-"		1025 0080  Aspire 5024WLMMi",
-"		103c 308b  MX6125",
-"	4377  IXP SB400 PCI-ISA Bridge",
-"		1025 0080  Aspire 5024WLMi",
-"		103c 308b  MX6125",
-"	4378  ATI SB400 - AC'97 Modem Controller",
-"		1025 0080  Aspire 5024WLMMi",
-"		103c 308b  MX6125",
-"	4379  ATI 4379 Serial ATA Controller",
-"	437a  ATI 437A Serial ATA Controller",
-"	437b  SB450 HDA Audio",
-"	4380  SB600 Non-Raid-5 SATA",
-"	4381  SB600 Raid-5 SATA",
-"	4382  SB600 AC97 Audio",
-"	4383  SB600 Azalia",
-"	4384  SB600 PCI to PCI Bridge",
-"	4385  SB600 SMBus",
-"	4386  SB600 USB Controller (EHCI)",
-"	4387  SB600 USB (OHCI0)",
-"	4388  SB600 USB (OHCI1)",
-"	4389  SB600 USB (OHCI2)",
-"	438a  SB600 USB (OHCI3)",
-"	438b  SB600 USB (OHCI4)",
-"	438c  SB600 IDE",
-"	438d  SB600 PCI to LPC Bridge",
-"	438e  SB600 AC97 Modem",
-"	4437  Radeon Mobility 7000 IGP",
-"	4554  210888ET [Mach64 ET]",
-"	4654  Mach64 VT",
-"	4742  3D Rage Pro AGP 1X/2X",
-"		1002 0040  Rage Pro Turbo AGP 2X",
-"		1002 0044  Rage Pro Turbo AGP 2X",
-"		1002 0061  Rage Pro AIW AGP 2X",
-"		1002 0062  Rage Pro AIW AGP 2X",
-"		1002 0063  Rage Pro AIW AGP 2X",
-"		1002 0080  Rage Pro Turbo AGP 2X",
-"		1002 0084  Rage Pro Turbo AGP 2X",
-"		1002 4742  Rage Pro Turbo AGP 2X",
-"		1002 8001  Rage Pro Turbo AGP 2X",
-"		1028 0082  Rage Pro Turbo AGP 2X",
-"		1028 4082  Optiplex GX1 Onboard Display Adapter",
-"		1028 8082  Rage Pro Turbo AGP 2X",
-"		1028 c082  Rage Pro Turbo AGP 2X",
-"		8086 4152  Xpert 98D AGP 2X",
-"		8086 464a  Rage Pro Turbo AGP 2X",
-"	4744  3D Rage Pro AGP 1X",
-"		1002 4744  Rage Pro Turbo AGP",
-"	4747  3D Rage Pro",
-"	4749  3D Rage Pro",
-"		1002 0061  Rage Pro AIW",
-"		1002 0062  Rage Pro AIW",
-"	474c  Rage XC",
-"	474d  Rage XL AGP 2X",
-"		1002 0004  Xpert 98 RXL AGP 2X",
-"		1002 0008  Xpert 98 RXL AGP 2X",
-"		1002 0080  Rage XL AGP 2X",
-"		1002 0084  Xpert 98 AGP 2X",
-"		1002 474d  Rage XL AGP",
-"		1033 806a  Rage XL AGP",
-"	474e  Rage XC AGP",
-"		1002 474e  Rage XC AGP",
-"	474f  Rage XL",
-"		1002 0008  Rage XL",
-"		1002 474f  Rage XL",
-"	4750  3D Rage Pro 215GP",
-"		1002 0040  Rage Pro Turbo",
-"		1002 0044  Rage Pro Turbo",
-"		1002 0080  Rage Pro Turbo",
-"		1002 0084  Rage Pro Turbo",
-"		1002 4750  Rage Pro Turbo",
-"	4751  3D Rage Pro 215GQ",
-"	4752  Rage XL",
-"		0e11 001e  Proliant Rage XL",
-"		1002 0008  Rage XL",
-"		1002 4752  Proliant Rage XL",
-"		1002 8008  Rage XL",
-"		1028 00ce  PowerEdge 1400",
-"		1028 00d1  PowerEdge 2550",
-"		1028 00d9  PowerEdge 2500",
-"		1028 0134  Poweredge SC600",
-"		103c 10e1  NetServer Rage XL",
-"		1734 007a  Primergy RX300",
-"		8086 3411  SDS2 Mainboard",
-"		8086 3427  S875WP1-E mainboard",
-"	4753  Rage XC",
-"		1002 4753  Rage XC",
-"	4754  3D Rage I/II 215GT [Mach64 GT]",
-"	4755  3D Rage II+ 215GTB [Mach64 GTB]",
-"	4756  3D Rage IIC 215IIC [Mach64 GT IIC]",
-"		1002 4756  Rage IIC",
-"	4757  3D Rage IIC AGP",
-"		1002 4757  Rage IIC AGP",
-"		1028 0089  Rage 3D IIC",
-"		1028 008e  PowerEdge 1300 onboard video",
-"		1028 4082  Rage 3D IIC",
-"		1028 8082  Rage 3D IIC",
-"		1028 c082  Rage 3D IIC",
-"	4758  210888GX [Mach64 GX]",
-"	4759  3D Rage IIC",
-"	475a  3D Rage IIC AGP",
-"		1002 0084  Rage 3D Pro AGP 2x XPERT 98",
-"		1002 0087  Rage 3D IIC",
-"		1002 475a  Rage IIC AGP",
-"	4964  Radeon RV250 Id [Radeon 9000]",
-"	4965  Radeon RV250 Ie [Radeon 9000]",
-"	4966  Radeon RV250 If [Radeon 9000]",
-"		10f1 0002  RV250 If [Tachyon G9000 PRO]",
-"		148c 2039  RV250 If [Radeon 9000 Pro 'Evil Commando']",
-"		1509 9a00  RV250 If [Radeon 9000 'AT009']",
-"		1681 0040  RV250 If [3D prophet 9000]",
-"		174b 7176  RV250 If [Sapphire Radeon 9000 Pro]",
-"		174b 7192  RV250 If [Radeon 9000 'Atlantis']",
-"		17af 2005  RV250 If [Excalibur Radeon 9000 Pro]",
-"		17af 2006  RV250 If [Excalibur Radeon 9000]",
-"	4967  Radeon RV250 Ig [Radeon 9000]",
-"	496e  Radeon RV250 [Radeon 9000] (Secondary)",
-"	4a48  R420 JH [Radeon X800]",
-"	4a49  R420 JI [Radeon X800PRO]",
-"	4a4a  R420 JJ [Radeon X800SE]",
-"	4a4b  R420 JK [Radeon X800]",
-"	4a4c  R420 JL [Radeon X800]",
-"	4a4d  R420 JM [FireGL X3]",
-"	4a4e  M18 JN [Radeon Mobility 9800]",
-"	4a50  R420 JP [Radeon X800XT]",
-"	4a70  R420 [X800XT-PE] (Secondary)",
-"	4b49  R480 [Radeon X850XT]",
-"	4b4b  R480 [Radeon X850Pro]",
-"	4b4c  R481 [Radeon X850XT-PE]",
-"	4b69  R480 [Radeon X850XT] (Secondary)",
-"	4b6b  R480 [Radeon X850Pro] (Secondary)",
-"	4b6c  R481 [Radeon X850XT-PE] (Secondary)",
-"	4c42  3D Rage LT Pro AGP-133",
-"		0e11 b0e7  Rage LT Pro (Compaq Presario 5240)",
-"		0e11 b0e8  Rage 3D LT Pro",
-"		0e11 b10e  3D Rage LT Pro (Compaq Armada 1750)",
-"		1002 0040  Rage LT Pro AGP 2X",
-"		1002 0044  Rage LT Pro AGP 2X",
-"		1002 4c42  Rage LT Pro AGP 2X",
-"		1002 8001  Rage LT Pro AGP 2X",
-"		1028 0085  Rage 3D LT Pro",
-"	4c44  3D Rage LT Pro AGP-66",
-"	4c45  Rage Mobility M3 AGP",
-"	4c46  Rage Mobility M3 AGP 2x",
-"		1028 00b1  Latitude C600",
-"	4c47  3D Rage LT-G 215LG",
-"	4c49  3D Rage LT Pro",
-"		1002 0004  Rage LT Pro",
-"		1002 0040  Rage LT Pro",
-"		1002 0044  Rage LT Pro",
-"		1002 4c49  Rage LT Pro",
-"	4c4d  Rage Mobility P/M AGP 2x",
-"		0e11 b111  Armada M700",
-"		0e11 b160  Armada E500",
-"		1002 0084  Xpert 98 AGP 2X (Mobility)",
-"		1014 0154  ThinkPad A20m/A21m",
-"		1028 00aa  Latitude CPt",
-"		1028 00bb  Latitude CPx",
-"		10e1 10cf  Fujitsu Siemens LifeBook C Series",
-"		1179 ff00  Satellite 1715XCDS laptop",
-"		13bd 1019  PC-AR10",
-"	4c4e  Rage Mobility L AGP 2x",
-"	4c50  3D Rage LT Pro",
-"		1002 4c50  Rage LT Pro",
-"	4c51  3D Rage LT Pro",
-"	4c52  Rage Mobility P/M",
-"		1033 8112  Versa Note VXi",
-"	4c53  Rage Mobility L",
-"	4c54  264LT [Mach64 LT]",
-"	4c57  Radeon Mobility M7 LW [Radeon Mobility 7500]",
-"		1014 0517  ThinkPad T30",
-"		1028 00e6  Radeon Mobility M7 LW (Dell Inspiron 8100)",
-"		1028 012a  Latitude C640",
-"		144d c006  Radeon Mobility M7 LW in vpr Matrix 170B4",
-"	4c58  Radeon RV200 LX [Mobility FireGL 7800 M7]",
-"	4c59  Radeon Mobility M6 LY",
-"		0e11 b111  Evo N600c",
-"		1014 0235  ThinkPad A30/A30p (2652/2653)",
-"		1014 0239  ThinkPad X22/X23/X24",
-"		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP",
-"		104d 8140  PCG-Z1SP laptop",
-"		1509 1930  Medion MD9703",
-"	4c5a  Radeon Mobility M6 LZ",
-"	4c64  Radeon R250 Ld [Radeon Mobility 9000 M9]",
-"	4c65  Radeon R250 Le [Radeon Mobility 9000 M9]",
-"	4c66  Radeon R250 [Radeon Mobility 9200]",
-"	4c67  Radeon R250 Lg [Radeon Mobility 9000 M9]",
-"	4c6e  Radeon R250 Ln [Radeon Mobility 9000 M9] [Secondary]",
-"	4d46  Rage Mobility M4 AGP",
-"	4d4c  Rage Mobility M4 AGP",
-"	4e44  Radeon R300 ND [Radeon 9700 Pro]",
-"		1002 515e  Radeon ES1000",
-"		1002 5965  Radeon ES1000",
-"	4e45  Radeon R300 NE [Radeon 9500 Pro]",
-"		1002 0002  Radeon R300 NE [Radeon 9500 Pro]",
-"		1681 0002  Hercules 3D Prophet 9500 PRO [Radeon 9500 Pro]",
-"	4e46  RV350 NF [Radeon 9600]",
-"	4e47  Radeon R300 NG [FireGL X1]",
-"	4e48  Radeon R350 [Radeon 9800 Pro]",
-"	4e49  Radeon R350 [Radeon 9800]",
-"	4e4a  RV350 NJ [Radeon 9800 XT]",
-"	4e4b  R350 NK [Fire GL X2]",
-"	4e50  RV350 [Mobility Radeon 9600 M10]",
-"		1025 005a  TravelMate 290",
-"		103c 088c  NC8000 laptop",
-"		103c 0890  NC6000 laptop",
-"		1462 0311  MSI M510A",
-"		1734 1055  Amilo M1420W",
-"	4e51  M10 NQ [Radeon Mobility 9600]",
-"	4e52  RV350 [Mobility Radeon 9600 M10]",
-"	4e53  M10 NS [Radeon Mobility 9600]",
-"	4e54  M10 NT [FireGL Mobility T2]",
-"	4e56  M11 NV [FireGL Mobility T2e]",
-"	4e64  Radeon R300 [Radeon 9700 Pro] (Secondary)",
-"	4e65  Radeon R300 [Radeon 9500 Pro] (Secondary)",
-"		1002 0003  Radeon R300 NE [Radeon 9500 Pro]",
-"		1681 0003  Hercules 3D Prophet 9500 PRO [Radeon 9500 Pro] (Secondary)",
-"	4e66  RV350 NF [Radeon 9600] (Secondary)",
-"	4e67  Radeon R300 [FireGL X1] (Secondary)",
-"	4e68  Radeon R350 [Radeon 9800 Pro] (Secondary)",
-"	4e69  Radeon R350 [Radeon 9800] (Secondary)",
-"	4e6a  RV350 NJ [Radeon 9800 XT] (Secondary)",
-"		1002 4e71  ATI Technologies Inc M10 NQ [Radeon Mobility 9600]",
-"	4e71  M10 NQ [Radeon Mobility 9600] (Secondary)",
-"	4f72  RV250 [Radeon 9000 Series]",
-"	4f73  Radeon RV250 [Radeon 9000 Series] (Secondary)",
-"	5041  Rage 128 PA/PRO",
-"	5042  Rage 128 PB/PRO AGP 2x",
-"	5043  Rage 128 PC/PRO AGP 4x",
-"	5044  Rage 128 PD/PRO TMDS",
-"		1002 0028  Rage 128 AIW",
-"		1002 0029  Rage 128 AIW",
-"	5045  Rage 128 PE/PRO AGP 2x TMDS",
-"	5046  Rage 128 PF/PRO AGP 4x TMDS",
-"		1002 0004  Rage Fury Pro",
-"		1002 0008  Rage Fury Pro/Xpert 2000 Pro",
-"		1002 0014  Rage Fury Pro",
-"		1002 0018  Rage Fury Pro/Xpert 2000 Pro",
-"		1002 0028  Rage 128 Pro AIW AGP",
-"		1002 002a  Rage 128 Pro AIW AGP",
-"		1002 0048  Rage Fury Pro",
-"		1002 2000  Rage Fury MAXX AGP 4x (TMDS) (VGA device)",
-"		1002 2001  Rage Fury MAXX AGP 4x (TMDS) (Extra device\?!)",
-"	5047  Rage 128 PG/PRO",
-"	5048  Rage 128 PH/PRO AGP 2x",
-"	5049  Rage 128 PI/PRO AGP 4x",
-"	504a  Rage 128 PJ/PRO TMDS",
-"	504b  Rage 128 PK/PRO AGP 2x TMDS",
-"	504c  Rage 128 PL/PRO AGP 4x TMDS",
-"	504d  Rage 128 PM/PRO",
-"	504e  Rage 128 PN/PRO AGP 2x",
-"	504f  Rage 128 PO/PRO AGP 4x",
-"	5050  Rage 128 PP/PRO TMDS [Xpert 128]",
-"		1002 0008  Xpert 128",
-"	5051  Rage 128 PQ/PRO AGP 2x TMDS",
-"	5052  Rage 128 PR/PRO AGP 4x TMDS",
-"	5053  Rage 128 PS/PRO",
-"	5054  Rage 128 PT/PRO AGP 2x",
-"	5055  Rage 128 PU/PRO AGP 4x",
-"	5056  Rage 128 PV/PRO TMDS",
-"	5057  Rage 128 PW/PRO AGP 2x TMDS",
-"	5058  Rage 128 PX/PRO AGP 4x TMDS",
-"	5144  Radeon R100 QD [Radeon 7200]",
-"		1002 0008  Radeon 7000/Radeon VE",
-"		1002 0009  Radeon 7000/Radeon",
-"		1002 000a  Radeon 7000/Radeon",
-"		1002 001a  Radeon 7000/Radeon",
-"		1002 0029  Radeon AIW",
-"		1002 0038  Radeon 7000/Radeon",
-"		1002 0039  Radeon 7000/Radeon",
-"		1002 008a  Radeon 7000/Radeon",
-"		1002 00ba  Radeon 7000/Radeon",
-"		1002 0139  Radeon 7000/Radeon",
-"		1002 028a  Radeon 7000/Radeon",
-"		1002 02aa  Radeon AIW",
-"		1002 053a  Radeon 7000/Radeon",
-"	5145  Radeon R100 QE",
-"	5146  Radeon R100 QF",
-"	5147  Radeon R100 QG",
-"	5148  Radeon R200 QH [Radeon 8500]",
-"		1002 010a  FireGL 8800 64Mb",
-"		1002 0152  FireGL 8800 128Mb",
-"		1002 0162  FireGL 8700 32Mb",
-"		1002 0172  FireGL 8700 64Mb",
-"	5149  Radeon R200 QI",
-"	514a  Radeon R200 QJ",
-"	514b  Radeon R200 QK",
-"	514c  Radeon R200 QL [Radeon 8500 LE]",
-"		1002 003a  Radeon R200 QL [Radeon 8500 LE]",
-"		1002 013a  Radeon 8500",
-"		148c 2026  R200 QL [Radeon 8500 Evil Master II Multi Display Edition]",
-"		1681 0010  Radeon 8500 [3D Prophet 8500 128Mb]",
-"		174b 7149  Radeon R200 QL [Sapphire Radeon 8500 LE]",
-"	514d  Radeon R200 QM [Radeon 9100]",
-"	514e  Radeon R200 QN [Radeon 8500LE]",
-"	514f  Radeon R200 QO [Radeon 8500LE]",
-"	5154  R200 QT [Radeon 8500]",
-"	5155  R200 QU [Radeon 9100]",
-"	5157  Radeon RV200 QW [Radeon 7500]",
-"		1002 013a  Radeon 7500",
-"		1002 103a  Dell Optiplex GX260",
-"		1458 4000  RV200 QW [RADEON 7500 PRO MAYA AR]",
-"		148c 2024  RV200 QW [Radeon 7500LE Dual Display]",
-"		148c 2025  RV200 QW [Radeon 7500 Evil Master Multi Display Edition]",
-"		148c 2036  RV200 QW [Radeon 7500 PCI Dual Display]",
-"		174b 7146  RV200 QW [Radeon 7500 LE]",
-"		174b 7147  RV200 QW [Sapphire Radeon 7500LE]",
-"		174b 7161  Radeon RV200 QW [Radeon 7500 LE]",
-"		17af 0202  RV200 QW [Excalibur Radeon 7500LE]",
-"	5158  Radeon RV200 QX [Radeon 7500]",
-"	5159  Radeon RV100 QY [Radeon 7000/VE]",
-"		1002 000a  Radeon 7000/Radeon VE",
-"		1002 000b  Radeon 7000",
-"		1002 0038  Radeon 7000/Radeon VE",
-"		1002 003a  Radeon 7000/Radeon VE",
-"		1002 00ba  Radeon 7000/Radeon VE",
-"		1002 013a  Radeon 7000/Radeon VE",
-"		1002 0908  XVR-100 (supplied by Sun)",
-"		1014 029a  Remote Supervisor Adapter II (RSA2)",
-"		1014 02c8  IBM eServer xSeries server mainboard",
-"		1028 019a  PowerEdge SC1425",
-"		1458 4002  RV100 QY [RADEON 7000 PRO MAYA AV Series]",
-"		148c 2003  RV100 QY [Radeon 7000 Multi-Display Edition]",
-"		148c 2023  RV100 QY [Radeon 7000 Evil Master Multi-Display]",
-"		174b 7112  RV100 QY [Sapphire Radeon VE 7000]",
-"		174b 7c28  Sapphire Radeon VE 7000 DDR",
-"		1787 0202  RV100 QY [Excalibur Radeon 7000]",
-"	515a  Radeon RV100 QZ [Radeon 7000/VE]",
-"	515e  ES1000",
-"	515f  ES1000",
-"	5168  Radeon R200 Qh",
-"	5169  Radeon R200 Qi",
-"	516a  Radeon R200 Qj",
-"	516b  Radeon R200 Qk",
-"	516c  Radeon R200 Ql",
-"	5245  Rage 128 RE/SG",
-"		1002 0008  Xpert 128",
-"		1002 0028  Rage 128 AIW",
-"		1002 0029  Rage 128 AIW",
-"		1002 0068  Rage 128 AIW",
-"	5246  Rage 128 RF/SG AGP",
-"		1002 0004  Magnum/Xpert 128/Xpert 99",
-"		1002 0008  Magnum/Xpert128/X99/Xpert2000",
-"		1002 0028  Rage 128 AIW AGP",
-"		1002 0044  Rage Fury/Xpert 128/Xpert 2000",
-"		1002 0068  Rage 128 AIW AGP",
-"		1002 0448  Rage Fury",
-"	5247  Rage 128 RG",
-"	524b  Rage 128 RK/VR",
-"	524c  Rage 128 RL/VR AGP",
-"		1002 0008  Xpert 99/Xpert 2000",
-"		1002 0088  Xpert 99",
-"	5345  Rage 128 SE/4x",
-"	5346  Rage 128 SF/4x AGP 2x",
-"		1002 0048  RAGE 128 16MB VGA TVOUT AMC PAL",
-"	5347  Rage 128 SG/4x AGP 4x",
-"	5348  Rage 128 SH",
-"	534b  Rage 128 SK/4x",
-"	534c  Rage 128 SL/4x AGP 2x",
-"	534d  Rage 128 SM/4x AGP 4x",
-"		1002 0008  Xpert 99/Xpert 2000",
-"		1002 0018  Xpert 2000",
-"	534e  Rage 128 4x",
-"	5354  Mach 64 VT",
-"		1002 5654  Mach 64 reference",
-"	5446  Rage 128 Pro Ultra TF",
-"		1002 0004  Rage Fury Pro",
-"		1002 0008  Rage Fury Pro/Xpert 2000 Pro",
-"		1002 0018  Rage Fury Pro/Xpert 2000 Pro",
-"		1002 0028  Rage 128 AIW Pro AGP",
-"		1002 0029  Rage 128 AIW",
-"		1002 002a  Rage 128 AIW Pro AGP",
-"		1002 002b  Rage 128 AIW",
-"		1002 0048  Xpert 2000 Pro",
-"	544c  Rage 128 Pro Ultra TL",
-"	5452  Rage 128 Pro Ultra TR",
-"		1002 001c  Rage 128 Pro 4XL",
-"		103c 1279  Rage 128 Pro 4XL",
-"	5453  Rage 128 Pro Ultra TS",
-"	5454  Rage 128 Pro Ultra TT",
-"	5455  Rage 128 Pro Ultra TU",
-"	5460  M22 [Radeon Mobility M300]",
-"	5462  M24 [Radeon Mobility X600]",
-"	5464  M22 [FireGL GL]",
-"	5548  R423 UH [Radeon X800 (PCIE)]",
-"	5549  R423 UI [Radeon X800PRO (PCIE)]",
-"	554a  R423 UJ [Radeon X800LE (PCIE)]",
-"	554b  R423 UK [Radeon X800SE (PCIE)]",
-"	554d  R430 [Radeon X800 XL] (PCIe)",
-"	554f  R430 [Radeon X800 (PCIE)]",
-"	5550  R423 [Fire GL V7100]",
-"	5551  R423 UQ [FireGL V7200 (PCIE)]",
-"	5552  R423 UR [FireGL V5100 (PCIE)]",
-"	5554  R423 UT [FireGL V7100 (PCIE)]",
-"	556b  Radeon R423 UK (PCIE) [X800 SE] (Secondary)",
-"	556d  R430 [Radeon X800 XL] (PCIe) Secondary",
-"	556f  R430 [Radeon X800 (PCIE) Secondary]",
-"	564a  M26 [Mobility FireGL V5000]",
-"	564b  M26 [Mobility FireGL V5000]",
-"	564f  M26 [Radeon Mobility X700 XL] (PCIE)",
-"	5652  M26 [Radeon Mobility X700]",
-"	5653  Radeon Mobility X700 (PCIE)",
-"		1025 0080  Aspire 5024WLMi",
-"	5654  264VT [Mach64 VT]",
-"		1002 5654  Mach64VT Reference",
-"	5655  264VT3 [Mach64 VT3]",
-"	5656  264VT4 [Mach64 VT4]",
-"	5830  RS300 Host Bridge",
-"	5831  RS300 Host Bridge",
-"	5832  RS300 Host Bridge",
-"	5833  Radeon 9100 IGP Host Bridge",
-"	5834  Radeon 9100 IGP",
-"	5835  RS300M AGP [Radeon Mobility 9100IGP]",
-"	5838  Radeon 9100 IGP AGP Bridge",
-"	5940  RV280 [Radeon 9200 PRO] (Secondary)",
-"	5941  RV280 [Radeon 9200] (Secondary)",
-"		1458 4019  Gigabyte Radeon 9200",
-"		174b 7c12  Sapphire Radeon 9200",
-"		17af 200d  Excalibur Radeon 9200",
-"		18bc 0050  GeXcube GC-R9200-C3 (Secondary)",
-"	5944  RV280 [Radeon 9200 SE (PCI)]",
-"	5950  RS480 Host Bridge",
-"		1025 0080  Aspire 5024WLMMi",
-"		103c 308b  MX6125",
-"	5951  ATI Radeon Xpress 200 (RS480/RS482/RX480/RX482) Chipset - Host bridge",
-"	5954  RS480 [Radeon Xpress 200G Series]",
-"		1002 5954  RV370 [Radeon Xpress 200G Series]",
-"	5955  ATI Radeon XPRESS 200M 5955 (PCIE)",
-"		1002 5955  RS480 0x5955 [ATI Radeon XPRESS 200M 5955 (PCIE)]",
-"		103c 308b  MX6125",
-"	5960  RV280 [Radeon 9200 PRO]",
-"	5961  RV280 [Radeon 9200]",
-"		1002 2f72  All-in-Wonder 9200 Series",
-"		1019 4c30  Radeon 9200 VIVO",
-"		12ab 5961  YUAN SMARTVGA Radeon 9200",
-"		1458 4018  Gigabyte Radeon 9200",
-"		174b 7c13  Sapphire Radeon 9200",
-"		17af 200c  Excalibur Radeon 9200",
-"		18bc 0050  Radeon 9200 Game Buster",
-"		18bc 0051  GeXcube GC-R9200-C3",
-"		18bc 0053  Radeon 9200 Game Buster VIVO",
-"	5962  RV280 [Radeon 9200]",
-"	5964  RV280 [Radeon 9200 SE]",
-"		1043 c006  ASUS Radeon 9200 SE / TD / 128M",
-"		1458 4018  Radeon 9200 SE",
-"		1458 4032  Radeon 9200 SE 128MB",
-"		147b 6191  R9200SE-DT",
-"		148c 2073  CN-AG92E",
-"		174b 7c13  Sapphire Radeon 9200 SE",
-"		1787 5964  Excalibur 9200SE VIVO 128M",
-"		17af 2012  Radeon 9200 SE Excalibur",
-"		18bc 0170  Sapphire Radeon 9200 SE 128MB Game Buster",
-"		18bc 0173  GC-R9200L(SE)-C3H [Radeon 9200 Game Buster]",
-"	5969  ES1000",
-"	5974  RS482 [Radeon Xpress 200]",
-"	5975  RS482 [Radeon Xpress 200M]",
-"	5a34  RS480 PCI-X Root Port",
-"	5a36  RS480 PCI Bridge",
-"	5a38  RS480 PCI Bridge",
-"	5a39  RS480 PCI Bridge",
-"	5a3f  RS480 PCI Bridge",
-"	5a41  RS400 [Radeon Xpress 200]",
-"	5a42  RS400 [Radeon Xpress 200M]",
-"	5a61  RC410 [Radeon Xpress 200]",
-"	5a62  RC410 [Radeon Xpress 200M]",
-"	5b60  RV370 5B60 [Radeon X300 (PCIE)]",
-"		1043 002a  Extreme AX300SE-X",
-"		1043 032e  Extreme AX300/TD",
-"		1462 0400  RX300SE-TD128E (MS-8940 REV:200)",
-"		1462 0402  RX300SE-TD128E (MS-8940)",
-"	5b62  RV370 5B62 [Radeon X600 (PCIE)]",
-"	5b63  RV370 [Sapphire X550 Silent]",
-"	5b64  RV370 5B64 [FireGL V3100 (PCIE)]",
-"	5b65  RV370 5B65 [FireGL D1100 (PCIE)]",
-"	5b70  RV370 [Radeon X300SE]",
-"		1462 0403  RX300SE-TD128E (MS-8940) (secondary display)",
-"	5b72  Radeon X600(RV380)",
-"	5b73  RV370 secondary [Sapphire X550 Silent]",
-"	5b74  RV370 5B64 [FireGL V3100 (PCIE)] (Secondary)",
-"	5c61  M9+ 5C61 [Radeon Mobility 9200 (AGP)]",
-"	5c63  M9+ 5C63 [Radeon Mobility 9200 (AGP)]",
-"		1002 5c63  Apple iBook G4 2004",
-"	5d44  RV280 [Radeon 9200 SE] (Secondary)",
-"		1458 4019  Radeon 9200 SE (Secondary)",
-"		1458 4032  Radeon 9200 SE 128MB",
-"		174b 7c12  Sapphire Radeon 9200 SE (Secondary)",
-"		1787 5965  Excalibur 9200SE VIVO 128M (Secondary)",
-"		17af 2013  Radeon 9200 SE Excalibur (Secondary)",
-"		18bc 0171  Radeon 9200 SE 128MB Game Buster (Secondary)",
-"		18bc 0172  GC-R9200L(SE)-C3H [Radeon 9200 Game Buster]",
-"	5d48  M28 [Radeon Mobility X800XT]",
-"	5d49  M28 [Mobility FireGL V5100]",
-"	5d4a  Mobility Radeon X800",
-"	5d4d  R480 [Radeon X850XT Platinum (PCIE)]",
-"	5d4f  R480 [Radeon X800 GTO (PCIE)]",
-"	5d52  R480 [Radeon X850XT (PCIE)] (Primary)",
-"		1002 0b12  PowerColor X850XT PCIe Primary",
-"		1002 0b13  PowerColor X850XT PCIe Secondary",
-"	5d57  R423 5F57 [Radeon X800XT (PCIE)]",
-"	5d6d  R480 [Radeon X850XT Platinum (PCIE)] (Secondary)",
-"	5d6f  R480 [Radeon X800 GTO (PCIE)] (Secondary)",
-"	5d72  R480 [Radeon X850XT (PCIE)] (Secondary)",
-"	5d77  R423 5F57 [Radeon X800XT (PCIE)] (Secondary)",
-"	5e48  RV410 [FireGL V5000]",
-"	5e49  RV410 [FireGL V3300]",
-"	5e4a  RV410 [Radeon X700XT]",
-"	5e4b  RV410 [Radeon X700 Pro (PCIE)]",
-"	5e4c  RV410 [Radeon X700SE]",
-"	5e4d  RV410 [Radeon X700 (PCIE)]",
-"		148c 2116  PowerColor Bravo X700",
-"	5e4f  RV410 [Radeon X700]",
-"	5e6b  RV410 [Radeon X700 Pro (PCIE)] Secondary",
-"	5e6d  RV410 [Radeon X700 (PCIE)] (Secondary)",
-"		148c 2117  PowerColor Bravo X700",
-"	5f57  R423 [Radeon X800XT (PCIE)]",
-"	700f  PCI Bridge [IGP 320M]",
-"	7010  PCI Bridge [IGP 340M]",
-"	7100  R520 [Radeon X1800]",
-"	7105  R520 [FireGL]",
-"	7109  R520 [Radeon X1800]",
-"		1002 0322  All-in-Wonder X1800XL",
-"		1002 0d02  Radeon X1800 CrossFire Edition",
-"	7120  R520 [Radeon X1800] (Secondary)",
-"	7129  R520 [Radeon X1800] (Secondary)",
-"		1002 0323  All-in-Wonder X1800XL (Secondary)",
-"		1002 0d03  Radeon X1800 CrossFire Edition (Secondary)",
-"	7142  RV515 [Radeon X1300]",
-"		1002 0322  All-in-Wonder 2006 PCI-E Edition",
-"	7145  Radeon Mobility X1400",
-"	7146  RV515 [Radeon X1300]",
-"		1002 0322  All-in-Wonder 2006 PCI-E Edition",
-"	7149  M52 [ATI Mobility Radeon X1300]",
-"	714a  M52 [ATI Mobility Radeon X1300]",
-"	714b  M52 [ATI Mobility Radeon X1300]",
-"	714c  M52 [ATI Mobility Radeon X1300]",
-"	7162  RV515 [Radeon X1300] (Secondary)",
-"		1002 0323  All-in-Wonder 2006 PCI-E Edition (Secondary)",
-"	7166  RV515 [Radeon X1300] (Secondary)",
-"		1002 0323  All-in-Wonder 2006 PCI-E Edition (Secondary)",
-"	71c0  RV530 [Radeon X1600]",
-"	71c2  RV530 [Radeon X1600]",
-"	71c4  M56GL [ATI Mobility FireGL V5200]",
-"	71c5  M56P [Radeon Mobility X1600]",
-"	71e0  RV530 [Radeon X1600] (Secondary)",
-"	71e2  RV530 [Radeon X1600] (Secondary)",
-"	7833  Radeon 9100 IGP Host Bridge",
-"	7834  Radeon 9100 PRO IGP",
-"	7835  Radeon Mobility 9200 IGP",
-"	7838  Radeon 9100 IGP PCI/AGP Bridge",
-"	7c37  RV350 AQ [Radeon 9600 SE]",
-"	cab0  AGP Bridge [IGP 320M]",
-"	cab2  RS200/RS200M AGP Bridge [IGP 340M]",
-"	cab3  R200 AGP Bridge [Mobility Radeon 7000 IGP]",
-"	cbb2  RS200/RS200M AGP Bridge [IGP 340M]",
-"1003  ULSI Systems",
-"	0201  US201",
-"1004  VLSI Technology Inc",
-"	0005  82C592-FC1",
-"	0006  82C593-FC1",
-"	0007  82C594-AFC2",
-"	0008  82C596/7 [Wildcat]",
-"	0009  82C597-AFC2",
-"	000c  82C541 [Lynx]",
-"	000d  82C543 [Lynx]",
-"	0101  82C532",
-"	0102  82C534 [Eagle]",
-"	0103  82C538",
-"	0104  82C535",
-"	0105  82C147",
-"	0200  82C975",
-"	0280  82C925",
-"	0304  QSound ThunderBird PCI Audio",
-"		1004 0304  QSound ThunderBird PCI Audio",
-"		122d 1206  DSP368 Audio",
-"		1483 5020  XWave Thunder 3D Audio",
-"	0305  QSound ThunderBird PCI Audio Gameport",
-"		1004 0305  QSound ThunderBird PCI Audio Gameport",
-"		122d 1207  DSP368 Audio Gameport",
-"		1483 5021  XWave Thunder 3D Audio Gameport",
-"	0306  QSound ThunderBird PCI Audio Support Registers",
-"		1004 0306  QSound ThunderBird PCI Audio Support Registers",
-"		122d 1208  DSP368 Audio Support Registers",
-"		1483 5022  XWave Thunder 3D Audio Support Registers",
-"	0307  Thunderbird",
-"	0308  Thunderbird",
-"	0702  VAS96011 [Golden Gate II]",
-"	0703  Tollgate",
-"1005  Avance Logic Inc. [ALI]",
-"	2064  ALG2032/2064",
-"	2128  ALG2364A",
-"	2301  ALG2301",
-"	2302  ALG2302",
-"	2364  ALG2364",
-"	2464  ALG2364A",
-"	2501  ALG2564A/25128A",
-"1006  Reply Group",
-"1007  NetFrame Systems Inc",
-"1008  Epson",
-"100a  Phoenix Technologies",
-"100b  National Semiconductor Corporation",
-"	0001  DP83810",
-"	0002  87415/87560 IDE",
-"	000e  87560 Legacy I/O",
-"	000f  FireWire Controller",
-"	0011  NS87560 National PCI System I/O",
-"	0012  USB Controller",
-"	0020  DP83815 (MacPhyter) Ethernet Controller",
-"		103c 0024  Pavilion ze4400 builtin Network",
-"		12d9 000c  Aculab E1/T1 PMXc cPCI carrier card",
-"		1385 f311  FA311 / FA312 (FA311 with WoL HW)",
-"	0021  PC87200 PCI to ISA Bridge",
-"	0022  DP83820 10/100/1000 Ethernet Controller",
-"	0028  Geode GX2 Host Bridge",
-"	002a  CS5535 South Bridge",
-"	002b  CS5535 ISA bridge",
-"	002d  CS5535 IDE",
-"	002e  CS5535 Audio",
-"	002f  CS5535 USB",
-"	0030  Geode GX2 Graphics Processor",
-"	0035  DP83065 [Saturn] 10/100/1000 Ethernet Controller",
-"	0500  SCx200 Bridge",
-"	0501  SCx200 SMI",
-"	0502  SCx200 IDE",
-"	0503  SCx200 Audio",
-"	0504  SCx200 Video",
-"	0505  SCx200 XBus",
-"	0510  SC1100 Bridge",
-"	0511  SC1100 SMI",
-"	0515  SC1100 XBus",
-"	d001  87410 IDE",
-"100c  Tseng Labs Inc",
-"	3202  ET4000/W32p rev A",
-"	3205  ET4000/W32p rev B",
-"	3206  ET4000/W32p rev C",
-"	3207  ET4000/W32p rev D",
-"	3208  ET6000",
-"	4702  ET6300",
-"100d  AST Research Inc",
-"100e  Weitek",
-"	9000  P9000 Viper",
-"	9001  P9000 Viper",
-"	9002  P9000 Viper",
-"	9100  P9100 Viper Pro/SE",
-"1010  Video Logic, Ltd.",
-"1011  Digital Equipment Corporation",
-"	0001  DECchip 21050",
-"	0002  DECchip 21040 [Tulip]",
-"	0004  DECchip 21030 [TGA]",
-"	0007  NVRAM [Zephyr NVRAM]",
-"	0008  KZPSA [KZPSA]",
-"	0009  DECchip 21140 [FasterNet]",
-"		1025 0310  21140 Fast Ethernet",
-"		10b8 2001  SMC9332BDT EtherPower 10/100",
-"		10b8 2002  SMC9332BVT EtherPower T4 10/100",
-"		10b8 2003  SMC9334BDT EtherPower 10/100 (1-port)",
-"		1109 2400  ANA-6944A/TX Fast Ethernet",
-"		1112 2300  RNS2300 Fast Ethernet",
-"		1112 2320  RNS2320 Fast Ethernet",
-"		1112 2340  RNS2340 Fast Ethernet",
-"		1113 1207  EN-1207-TX Fast Ethernet",
-"		1186 1100  DFE-500TX Fast Ethernet",
-"		1186 1112  DFE-570TX Fast Ethernet",
-"		1186 1140  DFE-660 Cardbus Ethernet 10/100",
-"		1186 1142  DFE-660 Cardbus Ethernet 10/100",
-"		11f6 0503  Freedomline Fast Ethernet",
-"		1282 9100  AEF-380TXD Fast Ethernet",
-"		1385 1100  FA310TX Fast Ethernet",
-"		2646 0001  KNE100TX Fast Ethernet",
-"	000a  21230 Video Codec",
-"	000d  PBXGB [TGA2]",
-"	000f  PCI-to-PDQ Interface Chip [PFI]",
-"		1011 def1  FDDI controller (DEFPA)",
-"		103c def1  FDDI controller (3X-DEFPA)",
-"	0014  DECchip 21041 [Tulip Pass 3]",
-"		1186 0100  DE-530+",
-"	0016  DGLPB [OPPO]",
-"	0017  PV-PCI Graphics Controller (ZLXp-L)",
-"	0019  DECchip 21142/43",
-"		1011 500a  DE500A Fast Ethernet",
-"		1011 500b  DE500B Fast Ethernet",
-"		1014 0001  10/100 EtherJet Cardbus",
-"		1025 0315  ALN315 Fast Ethernet",
-"		1033 800c  PC-9821-CS01 100BASE-TX Interface Card",
-"		1033 800d  PC-9821NR-B06 100BASE-TX Interface Card",
-"		108d 0016  Rapidfire 2327 10/100 Ethernet",
-"		108d 0017  GoCard 2250 Ethernet 10/100 Cardbus",
-"		10b8 2005  SMC8032DT Extreme Ethernet 10/100",
-"		10b8 8034  SMC8034 Extreme Ethernet 10/100",
-"		10ef 8169  Cardbus Fast Ethernet",
-"		1109 2a00  ANA-6911A/TX Fast Ethernet",
-"		1109 2b00  ANA-6911A/TXC Fast Ethernet",
-"		1109 3000  ANA-6922/TX Fast Ethernet",
-"		1113 1207  Cheetah Fast Ethernet",
-"		1113 2220  Cardbus Fast Ethernet",
-"		115d 0002  Cardbus Ethernet 10/100",
-"		1179 0203  Fast Ethernet",
-"		1179 0204  Cardbus Fast Ethernet",
-"		1186 1100  DFE-500TX Fast Ethernet",
-"		1186 1101  DFE-500TX Fast Ethernet",
-"		1186 1102  DFE-500TX Fast Ethernet",
-"		1186 1112  DFE-570TX Quad Fast Ethernet",
-"		1259 2800  AT-2800Tx Fast Ethernet",
-"		1266 0004  Eagle Fast EtherMAX",
-"		12af 0019  NetFlyer Cardbus Fast Ethernet",
-"		1374 0001  Cardbus Ethernet Card 10/100",
-"		1374 0002  Cardbus Ethernet Card 10/100",
-"		1374 0007  Cardbus Ethernet Card 10/100",
-"		1374 0008  Cardbus Ethernet Card 10/100",
-"		1385 2100  FA510",
-"		1395 0001  10/100 Ethernet CardBus PC Card",
-"		13d1 ab01  EtherFast 10/100 Cardbus (PCMPC200)",
-"		14cb 0100  LNDL-100N 100Base-TX Ethernet PC Card",
-"		8086 0001  EtherExpress PRO/100 Mobile CardBus 32",
-"	001a  Farallon PN9000SX Gigabit Ethernet",
-"	0021  DECchip 21052",
-"	0022  DECchip 21150",
-"	0023  DECchip 21150",
-"	0024  DECchip 21152",
-"	0025  DECchip 21153",
-"	0026  DECchip 21154",
-"	0034  56k Modem Cardbus",
-"		1374 0003  56k Modem Cardbus",
-"	0045  DECchip 21553",
-"	0046  DECchip 21554",
-"		0e11 4050  Integrated Smart Array",
-"		0e11 4051  Integrated Smart Array",
-"		0e11 4058  Integrated Smart Array",
-"		103c 10c2  Hewlett-Packard NetRAID-4M",
-"		12d9 000a  IP Telephony card",
-"		4c53 1050  CT7 mainboard",
-"		4c53 1051  CE7 mainboard",
-"		9005 0364  5400S (Mustang)",
-"		9005 0365  5400S (Mustang)",
-"		9005 1364  Dell PowerEdge RAID Controller 2",
-"		9005 1365  Dell PowerEdge RAID Controller 2",
-"		e4bf 1000  CC8-1-BLUES",
-"	1065  StrongARM DC21285",
-"		1069 0020  DAC960P / DAC1164P",
-"1012  Micronics Computers Inc",
-"1013  Cirrus Logic",
-"	0038  GD 7548",
-"	0040  GD 7555 Flat Panel GUI Accelerator",
-"	004c  GD 7556 Video/Graphics LCD/CRT Ctrlr",
-"	00a0  GD 5430/40 [Alpine]",
-"	00a2  GD 5432 [Alpine]",
-"	00a4  GD 5434-4 [Alpine]",
-"	00a8  GD 5434-8 [Alpine]",
-"	00ac  GD 5436 [Alpine]",
-"	00b0  GD 5440",
-"	00b8  GD 5446",
-"	00bc  GD 5480",
-"		1013 00bc  CL-GD5480",
-"	00d0  GD 5462",
-"	00d2  GD 5462 [Laguna I]",
-"	00d4  GD 5464 [Laguna]",
-"	00d5  GD 5464 BD [Laguna]",
-"	00d6  GD 5465 [Laguna]",
-"		13ce 8031  Barco Metheus 2 Megapixel, Dual Head",
-"		13cf 8031  Barco Metheus 2 Megapixel, Dual Head",
-"	00e8  GD 5436U",
-"	1100  CL 6729",
-"	1110  PD 6832 PCMCIA/CardBus Ctrlr",
-"	1112  PD 6834 PCMCIA/CardBus Ctrlr",
-"	1113  PD 6833 PCMCIA/CardBus Ctrlr",
-"	1200  GD 7542 [Nordic]",
-"	1202  GD 7543 [Viking]",
-"	1204  GD 7541 [Nordic Light]",
-"	4000  MD 5620 [CLM Data Fax Voice]",
-"	4400  CD 4400",
-"	6001  CS 4610/11 [CrystalClear SoundFusion Audio Accelerator]",
-"		1014 1010  CS4610 SoundFusion Audio Accelerator",
-"	6003  CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator]",
-"		1013 4280  Crystal SoundFusion PCI Audio Accelerator",
-"		1014 0153  ThinkPad A20m",
-"		153b 1136  SiXPack 5.1+",
-"		1681 0050  Game Theater XP",
-"		1681 a011  Fortissimo III 7.1",
-"	6004  CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator]",
-"	6005  Crystal CS4281 PCI Audio",
-"		1013 4281  Crystal CS4281 PCI Audio",
-"		10cf 10a8  Crystal CS4281 PCI Audio",
-"		10cf 10a9  Crystal CS4281 PCI Audio",
-"		10cf 10aa  Crystal CS4281 PCI Audio",
-"		10cf 10ab  Crystal CS4281 PCI Audio",
-"		10cf 10ac  Crystal CS4281 PCI Audio",
-"		10cf 10ad  Crystal CS4281 PCI Audio",
-"		10cf 10b4  Crystal CS4281 PCI Audio",
-"		1179 0001  Crystal CS4281 PCI Audio",
-"		14c0 000c  Crystal CS4281 PCI Audio",
-"1014  IBM",
-"	0002  PCI to MCA Bridge",
-"	0005  Alta Lite",
-"	0007  Alta MP",
-"	000a  Fire Coral",
-"	0017  CPU to PCI Bridge",
-"	0018  TR Auto LANstreamer",
-"	001b  GXT-150P",
-"	001c  Carrera",
-"	001d  82G2675",
-"	0020  GXT1000 Graphics Adapter",
-"	0022  IBM27-82351",
-"	002d  Python",
-"	002e  SCSI RAID Adapter [ServeRAID]",
-"		1014 002e  ServeRAID-3x",
-"		1014 022e  ServeRAID-4H",
-"	0031  2 Port Serial Adapter",
-"		1014 0031  2721 WAN IOA - 2 Port Sync Serial Adapter",
-"	0036  Miami",
-"	0037  82660 CPU to PCI Bridge",
-"	003a  CPU to PCI Bridge",
-"	003c  GXT250P/GXT255P Graphics Adapter",
-"	003e  16/4 Token ring UTP/STP controller",
-"		1014 003e  Token-Ring Adapter",
-"		1014 00cd  Token-Ring Adapter + Wake-On-LAN",
-"		1014 00ce  16/4 Token-Ring Adapter 2",
-"		1014 00cf  16/4 Token-Ring Adapter Special",
-"		1014 00e4  High-Speed 100/16/4 Token-Ring Adapter",
-"		1014 00e5  16/4 Token-Ring Adapter 2 + Wake-On-LAN",
-"		1014 016d  iSeries 2744 Card",
-"	0045  SSA Adapter",
-"	0046  MPIC interrupt controller",
-"	0047  PCI to PCI Bridge",
-"	0048  PCI to PCI Bridge",
-"	0049  Warhead SCSI Controller",
-"	004e  ATM Controller (14104e00)",
-"	004f  ATM Controller (14104f00)",
-"	0050  ATM Controller (14105000)",
-"	0053  25 MBit ATM Controller",
-"	0054  GXT500P/GXT550P Graphics Adapter",
-"	0057  MPEG PCI Bridge",
-"	005c  i82557B 10/100",
-"	005e  GXT800P Graphics Adapter",
-"	007c  ATM Controller (14107c00)",
-"	007d  3780IDSP [MWave]",
-"	008b  EADS PCI to PCI Bridge",
-"	008e  GXT3000P Graphics Adapter",
-"	0090  GXT 3000P",
-"		1014 008e  GXT-3000P",
-"	0091  SSA Adapter",
-"	0095  20H2999 PCI Docking Bridge",
-"	0096  Chukar chipset SCSI controller",
-"		1014 0097  iSeries 2778 DASD IOA",
-"		1014 0098  iSeries 2763 DASD IOA",
-"		1014 0099  iSeries 2748 DASD IOA",
-"	009f  PCI 4758 Cryptographic Accelerator",
-"	00a5  ATM Controller (1410a500)",
-"	00a6  ATM 155MBPS MM Controller (1410a600)",
-"	00b7  256-bit Graphics Rasterizer [Fire GL1]",
-"		1092 00b8  FireGL1 AGP 32Mb",
-"	00b8  GXT2000P Graphics Adapter",
-"	00be  ATM 622MBPS Controller (1410be00)",
-"	00dc  Advanced Systems Management Adapter (ASMA)",
-"	00fc  CPC710 Dual Bridge and Memory Controller (PCI-64)",
-"	0104  Gigabit Ethernet-SX Adapter",
-"	0105  CPC710 Dual Bridge and Memory Controller (PCI-32)",
-"	010f  Remote Supervisor Adapter (RSA)",
-"	0142  Yotta Video Compositor Input",
-"		1014 0143  Yotta Input Controller (ytin)",
-"	0144  Yotta Video Compositor Output",
-"		1014 0145  Yotta Output Controller (ytout)",
-"	0156  405GP PLB to PCI Bridge",
-"	015e  622Mbps ATM PCI Adapter",
-"	0160  64bit/66MHz PCI ATM 155 MMF",
-"	016e  GXT4000P Graphics Adapter",
-"	0170  GXT6000P Graphics Adapter",
-"	017d  GXT300P Graphics Adapter",
-"	0180  Snipe chipset SCSI controller",
-"		1014 0241  iSeries 2757 DASD IOA",
-"		1014 0264  Quad Channel PCI-X U320 SCSI RAID Adapter (2780)",
-"	0188  EADS-X PCI-X to PCI-X Bridge",
-"	01a7  PCI-X to PCI-X Bridge",
-"	01bd  ServeRAID Controller",
-"		1014 01be  ServeRAID-4M",
-"		1014 01bf  ServeRAID-4L",
-"		1014 0208  ServeRAID-4Mx",
-"		1014 020e  ServeRAID-4Lx",
-"		1014 022e  ServeRAID-4H",
-"		1014 0258  ServeRAID-5i",
-"		1014 0259  ServeRAID-5i",
-"	01c1  64bit/66MHz PCI ATM 155 UTP",
-"	01e6  Cryptographic Accelerator",
-"	01ff  10/100 Mbps Ethernet",
-"	0219  Multiport Serial Adapter",
-"		1014 021a  Dual RVX",
-"		1014 0251  Internal Modem/RVX",
-"		1014 0252  Quad Internal Modem",
-"	021b  GXT6500P Graphics Adapter",
-"	021c  GXT4500P Graphics Adapter",
-"	0233  GXT135P Graphics Adapter",
-"	0266  PCI-X Dual Channel SCSI",
-"	0268  Gigabit Ethernet-SX Adapter (PCI-X)",
-"	0269  10/100/1000 Base-TX Ethernet Adapter (PCI-X)",
-"	028c  Citrine chipset SCSI controller",
-"		1014 028d  Dual Channel PCI-X DDR SAS RAID Adapter (572E)",
-"		1014 02be  Dual Channel PCI-X DDR U320 SCSI RAID Adapter (571B)",
-"		1014 02c0  Dual Channel PCI-X DDR U320 SCSI Adapter (571A)",
-"		1014 030d  PCI-X DDR Auxiliary Cache Adapter (575B)",
-"	02a1  Calgary PCI-X Host Bridge",
-"	02bd  Obsidian chipset SCSI controller",
-"		1014 02c1  PCI-X DDR 3Gb SAS Adapter (572A/572C)",
-"		1014 02c2  PCI-X DDR 3Gb SAS RAID Adapter (572B/571D)",
-"	0302  Winnipeg PCI-X Host Bridge",
-"	0314  ZISC 036 Neural accelerator card",
-"	3022  QLA3022 Network Adapter",
-"	4022  QLA3022 Network Adapter",
-"	ffff  MPIC-2 interrupt controller",
-"1015  LSI Logic Corp of Canada",
-"1016  ICL Personal Systems",
-"1017  SPEA Software AG",
-"	5343  SPEA 3D Accelerator",
-"1018  Unisys Systems",
-"1019  Elitegroup Computer Systems",
-"101a  AT&T GIS (NCR)",
-"	0005  100VG ethernet",
-"101b  Vitesse Semiconductor",
-"101c  Western Digital",
-"	0193  33C193A",
-"	0196  33C196A",
-"	0197  33C197A",
-"	0296  33C296A",
-"	3193  7193",
-"	3197  7197",
-"	3296  33C296A",
-"	4296  34C296",
-"	9710  Pipeline 9710",
-"	9712  Pipeline 9712",
-"	c24a  90C",
-"101e  American Megatrends Inc.",
-"	0009  MegaRAID 428 Ultra RAID Controller (rev 03)",
-"	1960  MegaRAID",
-"		101e 0471  MegaRAID 471 Enterprise 1600 RAID Controller",
-"		101e 0475  MegaRAID 475 Express 500/500LC RAID Controller",
-"		101e 0477  MegaRAID 477 Elite 3100 RAID Controller",
-"		101e 0493  MegaRAID 493 Elite 1600 RAID Controller",
-"		101e 0494  MegaRAID 494 Elite 1650 RAID Controller",
-"		101e 0503  MegaRAID 503 Enterprise 1650 RAID Controller",
-"		101e 0511  MegaRAID 511 i4 IDE RAID Controller",
-"		101e 0522  MegaRAID 522 i4133 RAID Controller",
-"		1028 0471  PowerEdge RAID Controller 3/QC",
-"		1028 0475  PowerEdge RAID Controller 3/SC",
-"		1028 0493  PowerEdge RAID Controller 3/DC",
-"		1028 0511  PowerEdge Cost Effective RAID Controller ATA100/4Ch",
-"		103c 60e7  NetRAID-1M",
-"	9010  MegaRAID 428 Ultra RAID Controller",
-"	9030  EIDE Controller",
-"	9031  EIDE Controller",
-"	9032  EIDE & SCSI Controller",
-"	9033  SCSI Controller",
-"	9040  Multimedia card",
-"	9060  MegaRAID 434 Ultra GT RAID Controller",
-"	9063  MegaRAC",
-"		101e 0767  Dell Remote Assistant Card 2",
-"101f  PictureTel",
-"1020  Hitachi Computer Products",
-"1021  OKI Electric Industry Co. Ltd.",
-"1022  Advanced Micro Devices [AMD]",
-"	1100  K8 [Athlon64/Opteron] HyperTransport Technology Configuration",
-"	1101  K8 [Athlon64/Opteron] Address Map",
-"	1102  K8 [Athlon64/Opteron] DRAM Controller",
-"	1103  K8 [Athlon64/Opteron] Miscellaneous Control",
-"	2000  79c970 [PCnet32 LANCE]",
-"		1014 2000  NetFinity 10/100 Fast Ethernet",
-"		1022 2000  PCnet - Fast 79C971",
-"		103c 104c  Ethernet with LAN remote power Adapter",
-"		103c 1064  Ethernet with LAN remote power Adapter",
-"		103c 1065  Ethernet with LAN remote power Adapter",
-"		103c 106c  Ethernet with LAN remote power Adapter",
-"		103c 106e  Ethernet with LAN remote power Adapter",
-"		103c 10ea  Ethernet with LAN remote power Adapter",
-"		1113 1220  EN1220 10/100 Fast Ethernet",
-"		1259 2450  AT-2450 10/100 Fast Ethernet",
-"		1259 2454  AT-2450v4 10Mb Ethernet Adapter",
-"		1259 2700  AT-2700TX 10/100 Fast Ethernet",
-"		1259 2701  AT-2700FX 100Mb Ethernet",
-"		1259 2702  AT-2700FTX 10/100 Mb Fiber/Copper Fast Ethernet",
-"		1259 2703  AT-2701FX",
-"		4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard",
-"		4c53 1010  CP5/CR6 mainboard",
-"		4c53 1020  VR6 mainboard",
-"		4c53 1030  PC5 mainboard",
-"		4c53 1040  CL7 mainboard",
-"		4c53 1060  PC7 mainboard",
-"	2001  79c978 [HomePNA]",
-"		1092 0a78  Multimedia Home Network Adapter",
-"		1668 0299  ActionLink Home Network Adapter",
-"	2003  Am 1771 MBW [Alchemy]",
-"	2020  53c974 [PCscsi]",
-"	2040  79c974",
-"	2081  Geode LX Video",
-"	2082  Geode LX AES Security Block",
-"	208f  CS5536 GeodeLink PCI South Bridge",
-"	2090  CS5536 [Geode companion] ISA",
-"	2091  CS5536 [Geode companion] FLASH",
-"	2093  CS5536 [Geode companion] Audio",
-"	2094  CS5536 [Geode companion] OHC",
-"	2095  CS5536 [Geode companion] EHC",
-"	2096  CS5536 [Geode companion] UDC",
-"	2097  CS5536 [Geode companion] UOC",
-"	209a  CS5536 [Geode companion] IDE",
-"	3000  ELanSC520 Microcontroller",
-"	7006  AMD-751 [Irongate] System Controller",
-"	7007  AMD-751 [Irongate] AGP Bridge",
-"	700a  AMD-IGR4 AGP Host to PCI Bridge",
-"	700b  AMD-IGR4 PCI to PCI Bridge",
-"	700c  AMD-760 MP [IGD4-2P] System Controller",
-"	700d  AMD-760 MP [IGD4-2P] AGP Bridge",
-"	700e  AMD-760 [IGD4-1P] System Controller",
-"	700f  AMD-760 [IGD4-1P] AGP Bridge",
-"	7400  AMD-755 [Cobra] ISA",
-"	7401  AMD-755 [Cobra] IDE",
-"	7403  AMD-755 [Cobra] ACPI",
-"	7404  AMD-755 [Cobra] USB",
-"	7408  AMD-756 [Viper] ISA",
-"	7409  AMD-756 [Viper] IDE",
-"	740b  AMD-756 [Viper] ACPI",
-"	740c  AMD-756 [Viper] USB",
-"	7410  AMD-766 [ViperPlus] ISA",
-"	7411  AMD-766 [ViperPlus] IDE",
-"	7413  AMD-766 [ViperPlus] ACPI",
-"	7414  AMD-766 [ViperPlus] USB",
-"	7440  AMD-768 [Opus] ISA",
-"		1043 8044  A7M-D Mainboard",
-"	7441  AMD-768 [Opus] IDE",
-"	7443  AMD-768 [Opus] ACPI",
-"		1043 8044  A7M-D Mainboard",
-"	7445  AMD-768 [Opus] Audio",
-"	7446  AMD-768 [Opus] MC97 Modem (Smart Link HAMR5600 compatible)",
-"	7448  AMD-768 [Opus] PCI",
-"	7449  AMD-768 [Opus] USB",
-"	7450  AMD-8131 PCI-X Bridge",
-"	7451  AMD-8131 PCI-X IOAPIC",
-"	7454  AMD-8151 System Controller",
-"	7455  AMD-8151 AGP Bridge",
-"	7458  AMD-8132 PCI-X Bridge",
-"	7459  AMD-8132 PCI-X IOAPIC",
-"	7460  AMD-8111 PCI",
-"		161f 3017  HDAMB",
-"	7461  AMD-8111 USB",
-"	7462  AMD-8111 Ethernet",
-"	7464  AMD-8111 USB",
-"		161f 3017  HDAMB",
-"	7468  AMD-8111 LPC",
-"		161f 3017  HDAMB",
-"	7469  AMD-8111 IDE",
-"		1022 2b80  AMD-8111 IDE [Quartet]",
-"		161f 3017  HDAMB",
-"	746a  AMD-8111 SMBus 2.0",
-"	746b  AMD-8111 ACPI",
-"		161f 3017  HDAMB",
-"	746d  AMD-8111 AC97 Audio",
-"		161f 3017  HDAMB",
-"	746e  AMD-8111 MC97 Modem",
-"	756b  AMD-8111 ACPI",
-"1023  Trident Microsystems",
-"	0194  82C194",
-"	2000  4DWave DX",
-"	2001  4DWave NX",
-"		122d 1400  Trident PCI288-Q3DII (NX)",
-"	2100  CyberBlade XP4m32",
-"	2200  XGI Volari XP5",
-"	8400  CyberBlade/i7",
-"		1023 8400  CyberBlade i7 AGP",
-"	8420  CyberBlade/i7d",
-"		0e11 b15a  CyberBlade i7 AGP",
-"	8500  CyberBlade/i1",
-"	8520  CyberBlade i1",
-"		0e11 b16e  CyberBlade i1 AGP",
-"		1023 8520  CyberBlade i1 AGP",
-"	8620  CyberBlade/i1",
-"		1014 0502  ThinkPad R30/T30",
-"		1014 1025  Travelmate 352TE",
-"	8820  CyberBlade XPAi1",
-"	9320  TGUI 9320",
-"	9350  GUI Accelerator",
-"	9360  Flat panel GUI Accelerator",
-"	9382  Cyber 9382 [Reference design]",
-"	9383  Cyber 9383 [Reference design]",
-"	9385  Cyber 9385 [Reference design]",
-"	9386  Cyber 9386",
-"	9388  Cyber 9388",
-"	9397  Cyber 9397",
-"	939a  Cyber 9397DVD",
-"	9420  TGUI 9420",
-"	9430  TGUI 9430",
-"	9440  TGUI 9440",
-"	9460  TGUI 9460",
-"	9470  TGUI 9470",
-"	9520  Cyber 9520",
-"	9525  Cyber 9525",
-"		10cf 1094  Lifebook C6155",
-"	9540  Cyber 9540",
-"	9660  TGUI 9660/938x/968x",
-"	9680  TGUI 9680",
-"	9682  TGUI 9682",
-"	9683  TGUI 9683",
-"	9685  ProVIDIA 9685",
-"	9750  3DImage 9750",
-"		1014 9750  3DImage 9750",
-"		1023 9750  3DImage 9750",
-"	9753  TGUI 9753",
-"	9754  TGUI 9754",
-"	9759  TGUI 975",
-"	9783  TGUI 9783",
-"	9785  TGUI 9785",
-"	9850  3DImage 9850",
-"	9880  Blade 3D PCI/AGP",
-"		1023 9880  Blade 3D",
-"	9910  CyberBlade/XP",
-"	9930  CyberBlade/XPm",
-"1024  Zenith Data Systems",
-"1025  Acer Incorporated [ALI]",
-"	1435  M1435",
-"	1445  M1445",
-"	1449  M1449",
-"	1451  M1451",
-"	1461  M1461",
-"	1489  M1489",
-"	1511  M1511",
-"	1512  ALI M1512 Aladdin",
-"	1513  M1513",
-"	1521  ALI M1521 Aladdin III CPU Bridge",
-"		10b9 1521  ALI M1521 Aladdin III CPU Bridge",
-"	1523  ALI M1523 ISA Bridge",
-"		10b9 1523  ALI M1523 ISA Bridge",
-"	1531  M1531 Northbridge [Aladdin IV/IV+]",
-"	1533  M1533 PCI-to-ISA Bridge",
-"		10b9 1533  ALI M1533 Aladdin IV/V ISA South Bridge",
-"	1535  M1535 PCI Bridge + Super I/O + FIR",
-"	1541  M1541 Northbridge [Aladdin V]",
-"		10b9 1541  ALI M1541 Aladdin V/V+ AGP+PCI North Bridge",
-"	1542  M1542 Northbridge [Aladdin V]",
-"	1543  M1543 PCI-to-ISA Bridge + Super I/O + FIR",
-"	1561  M1561 Northbridge [Aladdin 7]",
-"	1621  M1621 Northbridge [Aladdin-Pro II]",
-"	1631  M1631 Northbridge+3D Graphics [Aladdin TNT2]",
-"	1641  M1641 Northbridge [Aladdin-Pro IV]",
-"	1647  M1647 [MaGiK1] PCI North Bridge",
-"	1671  M1671 Northbridge [ALADDiN-P4]",
-"	1672  Northbridge [CyberALADDiN-P4]",
-"	3141  M3141",
-"	3143  M3143",
-"	3145  M3145",
-"	3147  M3147",
-"	3149  M3149",
-"	3151  M3151",
-"	3307  M3307 MPEG-I Video Controller",
-"	3309  M3309 MPEG-II Video w/ Software Audio Decoder",
-"	3321  M3321 MPEG-II Audio/Video Decoder",
-"	5212  M4803",
-"	5215  ALI PCI EIDE Controller",
-"	5217  M5217H",
-"	5219  M5219",
-"	5225  M5225",
-"	5229  M5229",
-"	5235  M5235",
-"	5237  M5237 PCI USB Host Controller",
-"	5240  EIDE Controller",
-"	5241  PCMCIA Bridge",
-"	5242  General Purpose Controller",
-"	5243  PCI to PCI Bridge Controller",
-"	5244  Floppy Disk Controller",
-"	5247  M1541 PCI to PCI Bridge",
-"	5251  M5251 P1394 Controller",
-"	5427  PCI to AGP Bridge",
-"	5451  M5451 PCI AC-Link Controller Audio Device",
-"	5453  M5453 PCI AC-Link Controller Modem Device",
-"	7101  M7101 PCI PMU Power Management Controller",
-"		10b9 7101  M7101 PCI PMU Power Management Controller",
-"1028  Dell",
-"	0001  PowerEdge Expandable RAID Controller 2/Si",
-"		1028 0001  PowerEdge 2400",
-"	0002  PowerEdge Expandable RAID Controller 3/Di",
-"		1028 0002  PowerEdge 4400",
-"	0003  PowerEdge Expandable RAID Controller 3/Si",
-"		1028 0003  PowerEdge 2450",
-"	0006  PowerEdge Expandable RAID Controller 3/Di",
-"	0007  Remote Access Card III",
-"	0008  Remote Access Card III",
-"	0009  Remote Access Card III: BMC/SMIC device not present",
-"	000a  PowerEdge Expandable RAID Controller 3/Di",
-"	000c  Embedded Remote Access or ERA/O",
-"	000d  Embedded Remote Access: BMC/SMIC device",
-"	000e  PowerEdge Expandable RAID controller 4/Di",
-"	000f  PowerEdge Expandable RAID controller 4/Di",
-"	0010  Remote Access Card 4",
-"	0011  Remote Access Card 4 Daughter Card",
-"	0012  Remote Access Card 4 Daughter Card Virtual UART",
-"	0013  PowerEdge Expandable RAID controller 4",
-"		1028 016c  PowerEdge Expandable RAID Controller 4e/Si",
-"		1028 016d  PowerEdge Expandable RAID Controller 4e/Di",
-"		1028 016e  PowerEdge Expandable RAID Controller 4e/Di",
-"		1028 016f  PowerEdge Expandable RAID Controller 4e/Di",
-"		1028 0170  PowerEdge Expandable RAID Controller 4e/Di",
-"	0014  Remote Access Card 4 Daughter Card SMIC interface",
-"	0015  PowerEdge Expandable RAID controller 5",
-"1029  Siemens Nixdorf IS",
-"102a  LSI Logic",
-"	0000  HYDRA",
-"	0010  ASPEN",
-"	001f  AHA-2940U2/U2W /7890/7891 SCSI Controllers",
-"		9005 000f  2940U2W SCSI Controller",
-"		9005 0106  2940U2W SCSI Controller",
-"		9005 a180  2940U2W SCSI Controller",
-"	00c5  AIC-7899 U160/m SCSI Controller",
-"		1028 00c5  PowerEdge 2550/2650/4600",
-"	00cf  AIC-7899P U160/m",
-"		1028 0106  PowerEdge 4600",
-"		1028 0121  PowerEdge 2650",
-"102b  Matrox Graphics, Inc.",
-"	0010  MGA-I [Impression\?]",
-"	0100  MGA 1064SG [Mystique]",
-"	0518  MGA-II [Athena]",
-"	0519  MGA 2064W [Millennium]",
-"	051a  MGA 1064SG [Mystique]",
-"		102b 0100  MGA-1064SG Mystique",
-"		102b 1100  MGA-1084SG Mystique",
-"		102b 1200  MGA-1084SG Mystique",
-"		1100 102b  MGA-1084SG Mystique",
-"		110a 0018  Scenic Pro C5 (D1025)",
-"	051b  MGA 2164W [Millennium II]",
-"		102b 051b  MGA-2164W Millennium II",
-"		102b 1100  MGA-2164W Millennium II",
-"		102b 1200  MGA-2164W Millennium II",
-"	051e  MGA 1064SG [Mystique] AGP",
-"	051f  MGA 2164W [Millennium II] AGP",
-"	0520  MGA G200",
-"		102b dbc2  G200 Multi-Monitor",
-"		102b dbc8  G200 Multi-Monitor",
-"		102b dbe2  G200 Multi-Monitor",
-"		102b dbe8  G200 Multi-Monitor",
-"		102b ff03  Millennium G200 SD",
-"		102b ff04  Marvel G200",
-"	0521  MGA G200 AGP",
-"		1014 ff03  Millennium G200 AGP",
-"		102b 48e9  Mystique G200 AGP",
-"		102b 48f8  Millennium G200 SD AGP",
-"		102b 4a60  Millennium G200 LE AGP",
-"		102b 4a64  Millennium G200 AGP",
-"		102b c93c  Millennium G200 AGP",
-"		102b c9b0  Millennium G200 AGP",
-"		102b c9bc  Millennium G200 AGP",
-"		102b ca60  Millennium G250 LE AGP",
-"		102b ca6c  Millennium G250 AGP",
-"		102b dbbc  Millennium G200 AGP",
-"		102b dbc2  Millennium G200 MMS (Dual G200)",
-"		102b dbc3  G200 Multi-Monitor",
-"		102b dbc8  Millennium G200 MMS (Dual G200)",
-"		102b dbd2  G200 Multi-Monitor",
-"		102b dbd3  G200 Multi-Monitor",
-"		102b dbd4  G200 Multi-Monitor",
-"		102b dbd5  G200 Multi-Monitor",
-"		102b dbd8  G200 Multi-Monitor",
-"		102b dbd9  G200 Multi-Monitor",
-"		102b dbe2  Millennium G200 MMS (Quad G200)",
-"		102b dbe3  G200 Multi-Monitor",
-"		102b dbe8  Millennium G200 MMS (Quad G200)",
-"		102b dbf2  G200 Multi-Monitor",
-"		102b dbf3  G200 Multi-Monitor",
-"		102b dbf4  G200 Multi-Monitor",
-"		102b dbf5  G200 Multi-Monitor",
-"		102b dbf8  G200 Multi-Monitor",
-"		102b dbf9  G200 Multi-Monitor",
-"		102b f806  Mystique G200 Video AGP",
-"		102b ff00  MGA-G200 AGP",
-"		102b ff02  Mystique G200 AGP",
-"		102b ff03  Millennium G200 AGP",
-"		102b ff04  Marvel G200 AGP",
-"		110a 0032  MGA-G200 AGP",
-"	0522  MGA G200e [Pilot] ServerEngines (SEP1)",
-"	0525  MGA G400/G450",
-"		0e11 b16f  MGA-G400 AGP",
-"		102b 0328  Millennium G400 16Mb SDRAM",
-"		102b 0338  Millennium G400 16Mb SDRAM",
-"		102b 0378  Millennium G400 32Mb SDRAM",
-"		102b 0541  Millennium G450 Dual Head",
-"		102b 0542  Millennium G450 Dual Head LX",
-"		102b 0543  Millennium G450 Single Head LX",
-"		102b 0641  Millennium G450 32Mb SDRAM Dual Head",
-"		102b 0642  Millennium G450 32Mb SDRAM Dual Head LX",
-"		102b 0643  Millennium G450 32Mb SDRAM Single Head LX",
-"		102b 07c0  Millennium G450 Dual Head LE",
-"		102b 07c1  Millennium G450 SDR Dual Head LE",
-"		102b 0d41  Millennium G450 Dual Head PCI",
-"		102b 0d42  Millennium G450 Dual Head LX PCI",
-"		102b 0d43  Millennium G450 32Mb Dual Head PCI",
-"		102b 0e00  Marvel G450 eTV",
-"		102b 0e01  Marvel G450 eTV",
-"		102b 0e02  Marvel G450 eTV",
-"		102b 0e03  Marvel G450 eTV",
-"		102b 0f80  Millennium G450 Low Profile",
-"		102b 0f81  Millennium G450 Low Profile",
-"		102b 0f82  Millennium G450 Low Profile DVI",
-"		102b 0f83  Millennium G450 Low Profile DVI",
-"		102b 19d8  Millennium G400 16Mb SGRAM",
-"		102b 19f8  Millennium G400 32Mb SGRAM",
-"		102b 2159  Millennium G400 Dual Head 16Mb",
-"		102b 2179  Millennium G400 MAX/Dual Head 32Mb",
-"		102b 217d  Millennium G400 Dual Head Max",
-"		102b 23c0  Millennium G450",
-"		102b 23c1  Millennium G450",
-"		102b 23c2  Millennium G450 DVI",
-"		102b 23c3  Millennium G450 DVI",
-"		102b 2f58  Millennium G400",
-"		102b 2f78  Millennium G400",
-"		102b 3693  Marvel G400 AGP",
-"		102b 5dd0  4Sight II",
-"		102b 5f50  4Sight II",
-"		102b 5f51  4Sight II",
-"		102b 5f52  4Sight II",
-"		102b 9010  Millennium G400 Dual Head",
-"		1458 0400  GA-G400",
-"		1705 0001  Millennium G450 32MB SGRAM",
-"		1705 0002  Millennium G450 16MB SGRAM",
-"		1705 0003  Millennium G450 32MB",
-"		1705 0004  Millennium G450 16MB",
-"	0527  MGA Parhelia AGP",
-"		102b 0840  Parhelia 128Mb",
-"		102b 0850  Parhelia 256MB AGP 4X",
-"	0528  Parhelia 8X",
-"		102b 1020  Parhelia 128MB",
-"		102b 1030  Parhelia 256 MB Dual DVI",
-"		102b 14e1  Parhelia PCI 256MB",
-"		102b 2021  QID Pro",
-"	0d10  MGA Ultima/Impression",
-"	1000  MGA G100 [Productiva]",
-"		102b ff01  Productiva G100",
-"		102b ff05  Productiva G100 Multi-Monitor",
-"	1001  MGA G100 [Productiva] AGP",
-"		102b 1001  MGA-G100 AGP",
-"		102b ff00  MGA-G100 AGP",
-"		102b ff01  MGA-G100 Productiva AGP",
-"		102b ff03  Millennium G100 AGP",
-"		102b ff04  MGA-G100 AGP",
-"		102b ff05  MGA-G100 Productiva AGP Multi-Monitor",
-"		110a 001e  MGA-G100 AGP",
-"	2007  MGA Mistral",
-"	2527  MGA G550 AGP",
-"		102b 0f83  Millennium G550",
-"		102b 0f84  Millennium G550 Dual Head DDR 32Mb",
-"		102b 1e41  Millennium G550",
-"	2537  Millenium P650/P750",
-"		102b 1820  Millennium P750 64MB",
-"		102b 1830  Millennium P650 64MB",
-"		102b 1c10  QID 128MB",
-"		102b 2811  Millennium P650 Low-profile PCI 64MB",
-"		102b 2c11  QID Low-profile PCI",
-"	2538  Millenium P650 PCIe",
-"		102b 08c7  Millennium P650 PCIe 128MB",
-"		102b 0907  Millennium P650 PCIe 64MB",
-"		102b 1047  Millennium P650 LP PCIe 128MB",
-"		102b 1087  Millennium P650 LP PCIe 64MB",
-"		102b 2538  Parhelia APVe",
-"		102b 3007  QID Low-profile PCIe",
-"	4536  VIA Framegrabber",
-"	6573  Shark 10/100 Multiport SwitchNIC",
-"102c  Chips and Technologies",
-"	00b8  F64310",
-"	00c0  F69000 HiQVideo",
-"		102c 00c0  F69000 HiQVideo",
-"		4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard",
-"		4c53 1010  CP5/CR6 mainboard",
-"		4c53 1020  VR6 mainboard",
-"		4c53 1030  PC5 mainboard",
-"		4c53 1050  CT7 mainboard",
-"		4c53 1051  CE7 mainboard",
-"	00d0  F65545",
-"	00d8  F65545",
-"	00dc  F65548",
-"	00e0  F65550",
-"	00e4  F65554",
-"	00e5  F65555 HiQVPro",
-"		0e11 b049  Armada 1700 Laptop Display Controller",
-"		1179 0001  Satellite Pro",
-"	00f0  F68554",
-"	00f4  F68554 HiQVision",
-"	00f5  F68555",
-"	0c30  F69030",
-"		4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard",
-"		4c53 1050  CT7 mainboard",
-"		4c53 1051  CE7 mainboard",
-"		4c53 1080  CT8 mainboard",
-"102d  Wyse Technology Inc.",
-"	50dc  3328 Audio",
-"102e  Olivetti Advanced Technology",
-"102f  Toshiba America",
-"	0009  r4x00",
-"	000a  TX3927 MIPS RISC PCI Controller",
-"	0020  ATM Meteor 155",
-"		102f 00f8  ATM Meteor 155",
-"	0030  TC35815CF PCI 10/100 Mbit Ethernet Controller",
-"	0031  TC35815CF PCI 10/100 Mbit Ethernet Controller with WOL",
-"	0105  TC86C001 [goku-s] IDE",
-"	0106  TC86C001 [goku-s] USB 1.1 Host",
-"	0107  TC86C001 [goku-s] USB Device Controller",
-"	0108  TC86C001 [goku-s] I2C/SIO/GPIO Controller",
-"	0180  TX4927/38 MIPS RISC PCI Controller",
-"	0181  TX4925 MIPS RISC PCI Controller",
-"	0182  TX4937 MIPS RISC PCI Controller",
-"1030  TMC Research",
-"1031  Miro Computer Products AG",
-"	5601  DC20 ASIC",
-"	5607  Video I/O & motion JPEG compressor",
-"	5631  Media 3D",
-"	6057  MiroVideo DC10/DC30+",
-"1032  Compaq",
-"1033  NEC Corporation",
-"	0000  Vr4181A USB Host or Function Control Unit",
-"	0001  PCI to 486-like bus Bridge",
-"	0002  PCI to VL98 Bridge",
-"	0003  ATM Controller",
-"	0004  R4000 PCI Bridge",
-"	0005  PCI to 486-like bus Bridge",
-"	0006  PC-9800 Graphic Accelerator",
-"	0007  PCI to UX-Bus Bridge",
-"	0008  PC-9800 Graphic Accelerator",
-"	0009  PCI to PC9800 Core-Graph Bridge",
-"	0016  PCI to VL Bridge",
-"	001a  [Nile II]",
-"	0021  Vrc4373 [Nile I]",
-"	0029  PowerVR PCX1",
-"	002a  PowerVR 3D",
-"	002c  Star Alpha 2",
-"	002d  PCI to C-bus Bridge",
-"	0035  USB",
-"		1033 0035  Hama USB 2.0 CardBus",
-"		1179 0001  USB",
-"		12ee 7000  Root Hub",
-"		14c2 0105  PTI-205N USB 2.0 Host Controller",
-"		1799 0001  Root Hub",
-"		1931 000a  GlobeTrotter Fusion Quad Lite (PPP data)",
-"		1931 000b  GlobeTrotter Fusion Quad Lite (GSM data)",
-"		807d 0035  PCI-USB2 (OHCI subsystem)",
-"	003b  PCI to C-bus Bridge",
-"	003e  NAPCCARD Cardbus Controller",
-"	0046  PowerVR PCX2 [midas]",
-"	005a  Vrc5074 [Nile 4]",
-"	0063  Firewarden",
-"	0067  PowerVR Neon 250 Chipset",
-"		1010 0020  PowerVR Neon 250 AGP 32Mb",
-"		1010 0080  PowerVR Neon 250 AGP 16Mb",
-"		1010 0088  PowerVR Neon 250 16Mb",
-"		1010 0090  PowerVR Neon 250 AGP 16Mb",
-"		1010 0098  PowerVR Neon 250 16Mb",
-"		1010 00a0  PowerVR Neon 250 AGP 32Mb",
-"		1010 00a8  PowerVR Neon 250 32Mb",
-"		1010 0120  PowerVR Neon 250 AGP 32Mb",
-"	0072  uPD72874 IEEE1394 OHCI 1.1 3-port PHY-Link Ctrlr",
-"	0074  56k Voice Modem",
-"		1033 8014  RCV56ACF 56k Voice Modem",
-"	009b  Vrc5476",
-"	00a5  VRC4173",
-"	00a6  VRC5477 AC97",
-"	00cd  IEEE 1394 [OrangeLink] Host Controller",
-"		12ee 8011  Root hub",
-"	00ce  IEEE 1394 Host Controller",
-"	00df  Vr4131",
-"	00e0  USB 2.0",
-"		12ee 7001  Root hub",
-"		14c2 0205  PTI-205N USB 2.0 Host Controller",
-"		1799 0002  Root Hub",
-"		807d 1043  PCI-USB2 (EHCI subsystem)",
-"	00e7  IEEE 1394 Host Controller",
-"	00f2  uPD72874 IEEE1394 OHCI 1.1 3-port PHY-Link Ctrlr",
-"	00f3  uPD6113x Multimedia Decoder/Processor [EMMA2]",
-"	010c  VR7701",
-"	0125  uPD720400 PCI Express - PCI/PCI-X Bridge",
-"1034  Framatome Connectors USA Inc.",
-"1035  Comp. & Comm. Research Lab",
-"1036  Future Domain Corp.",
-"	0000  TMC-18C30 [36C70]",
-"1037  Hitachi Micro Systems",
-"1038  AMP, Inc",
-"1039  Silicon Integrated Systems [SiS]",
-"	0001  Virtual PCI-to-PCI bridge (AGP)",
-"	0002  SG86C202",
-"	0003  SiS AGP Port (virtual PCI-to-PCI bridge)",
-"	0004  PCI-to-PCI bridge",
-"	0006  85C501/2/3",
-"	0008  SiS85C503/5513 (LPC Bridge)",
-"	0009  ACPI",
-"	000a  PCI-to-PCI bridge",
-"	0016  SiS961/2 SMBus Controller",
-"	0018  SiS85C503/5513 (LPC Bridge)",
-"	0180  RAID bus controller 180 SATA/PATA  [SiS]",
-"	0181  SATA",
-"	0182  182 SATA/RAID Controller",
-"	0190  190 Gigabit Ethernet Adapter",
-"	0191  191 Gigabit Ethernet Adapter",
-"	0200  5597/5598/6326 VGA",
-"		1039 0000  SiS5597 SVGA (Shared RAM)",
-"	0204  82C204",
-"	0205  SG86C205",
-"	0300  300/305 PCI/AGP VGA Display Adapter",
-"		107d 2720  Leadtek WinFast VR300",
-"	0310  315H PCI/AGP VGA Display Adapter",
-"	0315  315 PCI/AGP VGA Display Adapter",
-"	0325  315PRO PCI/AGP VGA Display Adapter",
-"	0330  330 [Xabre] PCI/AGP VGA Display Adapter",
-"	0406  85C501/2",
-"	0496  85C496",
-"	0530  530 Host",
-"	0540  540 Host",
-"	0550  550 Host",
-"	0597  5513C",
-"	0601  85C601",
-"	0620  620 Host",
-"	0630  630 Host",
-"	0633  633 Host",
-"	0635  635 Host",
-"	0645  SiS645 Host & Memory & AGP Controller",
-"	0646  SiS645DX Host & Memory & AGP Controller",
-"	0648  645xx",
-"	0650  650/M650 Host",
-"	0651  651 Host",
-"	0655  655 Host",
-"	0660  660 Host",
-"	0661  661FX/M661FX/M661MX Host",
-"	0730  730 Host",
-"	0733  733 Host",
-"	0735  735 Host",
-"	0740  740 Host",
-"	0741  741/741GX/M741 Host",
-"	0745  745 Host",
-"	0746  746 Host",
-"	0755  755 Host",
-"	0760  760/M760 Host",
-"	0761  761/M761 Host",
-"	0900  SiS900 PCI Fast Ethernet",
-"		1019 0a14  K7S5A motherboard",
-"		1039 0900  SiS900 10/100 Ethernet Adapter",
-"		1043 8035  CUSI-FX motherboard",
-"	0961  SiS961 [MuTIOL Media IO]",
-"	0962  SiS962 [MuTIOL Media IO]",
-"	0963  SiS963 [MuTIOL Media IO]",
-"	0964  SiS964 [MuTIOL Media IO]",
-"	0965  SiS965 [MuTIOL Media IO]",
-"	3602  83C602",
-"	5107  5107",
-"	5300  SiS540 PCI Display Adapter",
-"	5315  550 PCI/AGP VGA Display Adapter",
-"	5401  486 PCI Chipset",
-"	5511  5511/5512",
-"	5513  5513 [IDE]",
-"		1019 0970  P6STP-FL motherboard",
-"		1039 5513  SiS5513 EIDE Controller (A,B step)",
-"		1043 8035  CUSI-FX motherboard",
-"	5517  5517",
-"	5571  5571",
-"	5581  5581 Pentium Chipset",
-"	5582  5582",
-"	5591  5591/5592 Host",
-"	5596  5596 Pentium Chipset",
-"	5597  5597 [SiS5582]",
-"	5600  5600 Host",
-"	6204  Video decoder & MPEG interface",
-"	6205  VGA Controller",
-"	6236  6236 3D-AGP",
-"	6300  630/730 PCI/AGP VGA Display Adapter",
-"		1019 0970  P6STP-FL motherboard",
-"		1043 8035  CUSI-FX motherboard",
-"	6306  530/620 PCI/AGP VGA Display Adapter",
-"		1039 6306  SiS530,620 GUI Accelerator+3D",
-"	6325  65x/M650/740 PCI/AGP VGA Display Adapter",
-"	6326  86C326 5598/6326",
-"		1039 6326  SiS6326 GUI Accelerator",
-"		1092 0a50  SpeedStar A50",
-"		1092 0a70  SpeedStar A70",
-"		1092 4910  SpeedStar A70",
-"		1092 4920  SpeedStar A70",
-"		1569 6326  SiS6326 GUI Accelerator",
-"	6330  661/741/760/761 PCI/AGP VGA Display Adapter",
-"		1039 6330  [M]661xX/[M]741[GX]/[M]760 PCI/AGP VGA Adapter",
-"	7001  USB 1.0 Controller",
-"		1019 0a14  K7S5A motherboard",
-"		1039 7000  Onboard USB Controller",
-"		1462 5470  K7SOM+ 5.2C Motherboard",
-"	7002  USB 2.0 Controller",
-"		1509 7002  Onboard USB Controller",
-"	7007  FireWire Controller",
-"	7012  AC'97 Sound Controller",
-"		15bd 1001  DFI 661FX motherboard",
-"	7013  AC'97 Modem Controller",
-"	7016  SiS7016 PCI Fast Ethernet Adapter",
-"		1039 7016  SiS7016 10/100 Ethernet Adapter",
-"	7018  SiS PCI Audio Accelerator",
-"		1014 01b6  SiS PCI Audio Accelerator",
-"		1014 01b7  SiS PCI Audio Accelerator",
-"		1019 7018  SiS PCI Audio Accelerator",
-"		1025 000e  SiS PCI Audio Accelerator",
-"		1025 0018  SiS PCI Audio Accelerator",
-"		1039 7018  SiS PCI Audio Accelerator",
-"		1043 800b  SiS PCI Audio Accelerator",
-"		1054 7018  SiS PCI Audio Accelerator",
-"		107d 5330  SiS PCI Audio Accelerator",
-"		107d 5350  SiS PCI Audio Accelerator",
-"		1170 3209  SiS PCI Audio Accelerator",
-"		1462 400a  SiS PCI Audio Accelerator",
-"		14a4 2089  SiS PCI Audio Accelerator",
-"		14cd 2194  SiS PCI Audio Accelerator",
-"		14ff 1100  SiS PCI Audio Accelerator",
-"		152d 8808  SiS PCI Audio Accelerator",
-"		1558 1103  SiS PCI Audio Accelerator",
-"		1558 2200  SiS PCI Audio Accelerator",
-"		1563 7018  SiS PCI Audio Accelerator",
-"		15c5 0111  SiS PCI Audio Accelerator",
-"		270f a171  SiS PCI Audio Accelerator",
-"		a0a0 0022  SiS PCI Audio Accelerator",
-"	7019  SiS7019 Audio Accelerator",
-"103a  Seiko Epson Corporation",
-"103b  Tatung Co. of America",
-"103c  Hewlett-Packard Company",
-"	002a  NX9000 Notebook",
-"	1005  A4977A Visualize EG",
-"	1008  Visualize FX",
-"	1028  Tach TL Fibre Channel Host Adapter",
-"	1029  Tach XL2 Fibre Channel Host Adapter",
-"		107e 000f  Interphase 5560 Fibre Channel Adapter",
-"		9004 9210  1Gb/2Gb Family Fibre Channel Controller",
-"		9004 9211  1Gb/2Gb Family Fibre Channel Controller",
-"	102a  Tach TS Fibre Channel Host Adapter",
-"		107e 000e  Interphase 5540/5541 Fibre Channel Adapter",
-"		9004 9110  1Gb/2Gb Family Fibre Channel Controller",
-"		9004 9111  1Gb/2Gb Family Fibre Channel Controller",
-"	1030  J2585A DeskDirect 10/100VG NIC",
-"	1031  J2585B HP 10/100VG PCI LAN Adapter",
-"		103c 1040  J2973A DeskDirect 10BaseT NIC",
-"		103c 1041  J2585B DeskDirect 10/100VG NIC",
-"		103c 1042  J2970A DeskDirect 10BaseT/2 NIC",
-"	1040  J2973A DeskDirect 10BaseT NIC",
-"	1041  J2585B DeskDirect 10/100 NIC",
-"	1042  J2970A DeskDirect 10BaseT/2 NIC",
-"	1048  Diva Serial [GSP] Multiport UART",
-"		103c 1049  Tosca Console",
-"		103c 104a  Tosca Secondary",
-"		103c 104b  Maestro SP2",
-"		103c 1223  Superdome Console",
-"		103c 1226  Keystone SP2",
-"		103c 1227  Powerbar SP2",
-"		103c 1282  Everest SP2",
-"		103c 1301  Diva RMP3",
-"	1054  PCI Local Bus Adapter",
-"	1064  79C970 PCnet Ethernet Controller",
-"	108b  Visualize FXe",
-"	10c1  NetServer Smart IRQ Router",
-"	10ed  TopTools Remote Control",
-"	10f0  rio System Bus Adapter",
-"	10f1  rio I/O Controller",
-"	1200  82557B 10/100 NIC",
-"	1219  NetServer PCI Hot-Plug Controller",
-"	121a  NetServer SMIC Controller",
-"	121b  NetServer Legacy COM Port Decoder",
-"	121c  NetServer PCI COM Port Decoder",
-"	1229  zx1 System Bus Adapter",
-"	122a  zx1 I/O Controller",
-"	122e  zx1 Local Bus Adapter",
-"	127c  sx1000 I/O Controller",
-"	1290  Auxiliary Diva Serial Port",
-"	1291  Auxiliary Diva Serial Port",
-"	12b4  zx1 QuickSilver AGP8x Local Bus Adapter",
-"	12f8  Broadcom BCM4306 802.11b/g Wireless LAN",
-"	12fa  BCM4306 802.11b/g Wireless LAN Controller",
-"	2910  E2910A PCIBus Exerciser",
-"	2925  E2925A 32 Bit, 33 MHzPCI Exerciser & Analyzer",
-"	3080  Pavilion ze2028ea",
-"	3085  Realtek RTL8139/8139C/8139C+",
-"	3220  Hewlett-Packard Smart Array P600",
-"	3230  Hewlett-Packard Smart Array Controller",
-"103e  Solliday Engineering",
-"103f  Synopsys/Logic Modeling Group",
-"1040  Accelgraphics Inc.",
-"1041  Computrend",
-"1042  Micron",
-"	1000  PC Tech RZ1000",
-"	1001  PC Tech RZ1001",
-"	3000  Samurai_0",
-"	3010  Samurai_1",
-"	3020  Samurai_IDE",
-"1043  ASUSTeK Computer Inc.",
-"	0675  ISDNLink P-IN100-ST-D",
-"		0675 1704  ISDN Adapter (PCI Bus, D, C)",
-"		0675 1707  ISDN Adapter (PCI Bus, DV, W)",
-"		10cf 105e  ISDN Adapter (PCI Bus, DV, W)",
-"	0c11  A7N8X Motherboard nForce2 IDE/USB/SMBus",
-"	4015  v7100 SDRAM [GeForce2 MX]",
-"	4021  v7100 Combo Deluxe [GeForce2 MX + TV tuner]",
-"	4057  v8200 GeForce 3",
-"	8043  v8240 PAL 128M [P4T] Motherboard",
-"	807b  v9280/TD [Geforce4 TI4200 8X With TV-Out and DVI]",
-"	8095  A7N8X Motherboard nForce2 AC97 Audio",
-"	80ac  A7N8X Motherboard nForce2 AGP/Memory",
-"	80bb  v9180 Magic/T [GeForce4 MX440 AGP 8x 64MB TV-out]",
-"	80c5  nForce3 chipset motherboard [SK8N]",
-"	80df  v9520 Magic/T",
-"	8187  802.11a/b/g Wireless LAN Card",
-"	8188  Tiger Hybrid TV Capture Device",
-"1044  Adaptec (formerly DPT)",
-"	1012  Domino RAID Engine",
-"	a400  SmartCache/Raid I-IV Controller",
-"	a500  PCI Bridge",
-"	a501  SmartRAID V Controller",
-"		1044 c001  PM1554U2 Ultra2 Single Channel",
-"		1044 c002  PM1654U2 Ultra2 Single Channel",
-"		1044 c003  PM1564U3 Ultra3 Single Channel",
-"		1044 c004  PM1564U3 Ultra3 Dual Channel",
-"		1044 c005  PM1554U2 Ultra2 Single Channel (NON ACPI)",
-"		1044 c00a  PM2554U2 Ultra2 Single Channel",
-"		1044 c00b  PM2654U2 Ultra2 Single Channel",
-"		1044 c00c  PM2664U3 Ultra3 Single Channel",
-"		1044 c00d  PM2664U3 Ultra3 Dual Channel",
-"		1044 c00e  PM2554U2 Ultra2 Single Channel (NON ACPI)",
-"		1044 c00f  PM2654U2 Ultra2 Single Channel (NON ACPI)",
-"		1044 c014  PM3754U2 Ultra2 Single Channel (NON ACPI)",
-"		1044 c015  PM3755U2B Ultra2 Single Channel (NON ACPI)",
-"		1044 c016  PM3755F Fibre Channel (NON ACPI)",
-"		1044 c01e  PM3757U2 Ultra2 Single Channel",
-"		1044 c01f  PM3757U2 Ultra2 Dual Channel",
-"		1044 c020  PM3767U3 Ultra3 Dual Channel",
-"		1044 c021  PM3767U3 Ultra3 Quad Channel",
-"		1044 c028  PM2865U3 Ultra3 Single Channel",
-"		1044 c029  PM2865U3 Ultra3 Dual Channel",
-"		1044 c02a  PM2865F Fibre Channel",
-"		1044 c03c  2000S Ultra3 Single Channel",
-"		1044 c03d  2000S Ultra3 Dual Channel",
-"		1044 c03e  2000F Fibre Channel",
-"		1044 c046  3000S Ultra3 Single Channel",
-"		1044 c047  3000S Ultra3 Dual Channel",
-"		1044 c048  3000F Fibre Channel",
-"		1044 c050  5000S Ultra3 Single Channel",
-"		1044 c051  5000S Ultra3 Dual Channel",
-"		1044 c052  5000F Fibre Channel",
-"		1044 c05a  2400A UDMA Four Channel",
-"		1044 c05b  2400A UDMA Four Channel DAC",
-"		1044 c064  3010S Ultra3 Dual Channel",
-"		1044 c065  3410S Ultra160 Four Channel",
-"		1044 c066  3010S Fibre Channel",
-"	a511  SmartRAID V Controller",
-"		1044 c032  ASR-2005S I2O Zero Channel",
-"		1044 c035  ASR-2010S I2O Zero Channel",
-"1045  OPTi Inc.",
-"	a0f8  82C750 [Vendetta] USB Controller",
-"	c101  92C264",
-"	c178  92C178",
-"	c556  82X556 [Viper]",
-"	c557  82C557 [Viper-M]",
-"	c558  82C558 [Viper-M ISA+IDE]",
-"	c567  82C750 [Vendetta], device 0",
-"	c568  82C750 [Vendetta], device 1",
-"	c569  82C579 [Viper XPress+ Chipset]",
-"	c621  82C621 [Viper-M/N+]",
-"	c700  82C700 [FireStar]",
-"	c701  82C701 [FireStar Plus]",
-"	c814  82C814 [Firebridge 1]",
-"	c822  82C822",
-"	c824  82C824",
-"	c825  82C825 [Firebridge 2]",
-"	c832  82C832",
-"	c861  82C861",
-"	c895  82C895",
-"	c935  EV1935 ECTIVA MachOne PCIAudio",
-"	d568  82C825 [Firebridge 2]",
-"	d721  IDE [FireStar]",
-"1046  IPC Corporation, Ltd.",
-"1047  Genoa Systems Corp",
-"1048  Elsa AG",
-"	0c60  Gladiac MX",
-"	0d22  Quadro4 900XGL [ELSA GLoria4 900XGL]",
-"	1000  QuickStep 1000",
-"	3000  QuickStep 3000",
-"	8901  Gloria XL",
-"		1048 0935  GLoria XL (Virge)",
-"1049  Fountain Technologies, Inc.",
-"104a  STMicroelectronics",
-"	0008  STG 2000X",
-"	0009  STG 1764X",
-"	0010  STG4000 [3D Prophet Kyro Series]",
-"	0209  STPC Consumer/Industrial North- and Southbridge",
-"	020a  STPC Atlas/ConsumerS/Consumer IIA Northbridge",
-"	0210  STPC Atlas ISA Bridge",
-"	021a  STPC Consumer S Southbridge",
-"	021b  STPC Consumer IIA Southbridge",
-"	0500  ST70137 [Unicorn] ADSL DMT Transceiver",
-"	0564  STPC Client Northbridge",
-"	0981  21x4x DEC-Tulip compatible 10/100 Ethernet",
-"	1746  STG 1764X",
-"	2774  21x4x DEC-Tulip compatible 10/100 Ethernet",
-"	3520  MPEG-II decoder card",
-"	55cc  STPC Client Southbridge",
-"104b  BusLogic",
-"	0140  BT-946C (old) [multimaster  01]",
-"	1040  BT-946C (BA80C30) [MultiMaster 10]",
-"	8130  Flashpoint LT",
-"104c  Texas Instruments",
-"	0500  100 MBit LAN Controller",
-"	0508  TMS380C2X Compressor Interface",
-"	1000  Eagle i/f AS",
-"	104c  PCI1510 PC card Cardbus Controller",
-"	3d04  TVP4010 [Permedia]",
-"	3d07  TVP4020 [Permedia 2]",
-"		1011 4d10  Comet",
-"		1040 000f  AccelStar II",
-"		1040 0011  AccelStar II",
-"		1048 0a31  WINNER 2000",
-"		1048 0a32  GLoria Synergy",
-"		1048 0a34  GLoria Synergy",
-"		1048 0a35  GLoria Synergy",
-"		1048 0a36  GLoria Synergy",
-"		1048 0a43  GLoria Synergy",
-"		1048 0a44  GLoria Synergy",
-"		107d 2633  WinFast 3D L2300",
-"		1092 0127  FIRE GL 1000 PRO",
-"		1092 0136  FIRE GL 1000 PRO",
-"		1092 0141  FIRE GL 1000 PRO",
-"		1092 0146  FIRE GL 1000 PRO",
-"		1092 0148  FIRE GL 1000 PRO",
-"		1092 0149  FIRE GL 1000 PRO",
-"		1092 0152  FIRE GL 1000 PRO",
-"		1092 0154  FIRE GL 1000 PRO",
-"		1092 0155  FIRE GL 1000 PRO",
-"		1092 0156  FIRE GL 1000 PRO",
-"		1092 0157  FIRE GL 1000 PRO",
-"		1097 3d01  Jeronimo Pro",
-"		1102 100f  Graphics Blaster Extreme",
-"		3d3d 0100  Reference Permedia 2 3D",
-"	8000  PCILynx/PCILynx2 IEEE 1394 Link Layer Controller",
-"		e4bf 1010  CF1-1-SNARE",
-"		e4bf 1020  CF1-2-SNARE",
-"	8009  FireWire Controller",
-"		104d 8032  8032 OHCI i.LINK (IEEE 1394) Controller",
-"	8017  PCI4410 FireWire Controller",
-"	8019  TSB12LV23 IEEE-1394 Controller",
-"		11bd 000a  Studio DV500-1394",
-"		11bd 000e  Studio DV",
-"		e4bf 1010  CF2-1-CYMBAL",
-"	8020  TSB12LV26 IEEE-1394 Controller (Link)",
-"		11bd 000f  Studio DV500-1394",
-"	8021  TSB43AA22 IEEE-1394 Controller (PHY/Link Integrated)",
-"		104d 80df  Vaio PCG-FX403",
-"		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP",
-"	8022  TSB43AB22 IEEE-1394a-2000 Controller (PHY/Link)",
-"	8023  TSB43AB22/A IEEE-1394a-2000 Controller (PHY/Link)",
-"		103c 088c  NC8000 laptop",
-"		1043 808b  K8N4-E Mainboard",
-"	8024  TSB43AB23 IEEE-1394a-2000 Controller (PHY/Link)",
-"	8025  TSB82AA2 IEEE-1394b Link Layer Controller",
-"		1458 1000  GA-K8N Ultra-9 Mainboard",
-"	8026  TSB43AB21 IEEE-1394a-2000 Controller (PHY/Link)",
-"		1025 003c  Aspire 2001WLCi (Compaq CL50 motherboard)",
-"		103c 006a  NX9500",
-"		1043 808d  A7V333 mainboard.",
-"	8027  PCI4451 IEEE-1394 Controller",
-"		1028 00e6  PCI4451 IEEE-1394 Controller (Dell Inspiron 8100)",
-"	8029  PCI4510 IEEE-1394 Controller",
-"		1028 0163  Latitude D505",
-"		1028 0196  Inspiron 5160",
-"		1071 8160  MIM2900",
-"	802b  PCI7410,7510,7610 OHCI-Lynx Controller",
-"		1028 0139  Latitude D400",
-"		1028 014e  PCI7410,7510,7610 OHCI-Lynx Controller (Dell Latitude D800)",
-"	802e  PCI7x20 1394a-2000 OHCI Two-Port PHY/Link-Layer Controller",
-"	8031  PCIxx21/x515 Cardbus Controller",
-"		1025 0080  Aspire 5024WLMi",
-"		103c 099c  NX6110/NC6120",
-"		103c 308b  MX6125",
-"	8032  OHCI Compliant IEEE 1394 Host Controller",
-"		1025 0080  Aspire 5024WLMi",
-"		103c 099c  NX6110/NC6120",
-"		103c 308b  MX6125",
-"	8033  PCIxx21 Integrated FlashMedia Controller",
-"		1025 0080  Aspire 5024WLMi",
-"		103c 099c  NX6110/NC6120",
-"		103c 308b  MX6125",
-"	8034  PCI6411, PCI6421, PCI6611, PCI6621, PCI7411, PCI7421, PCI7611, PCI7621 Secure Digital (SD) Controller",
-"		1025 0080  Aspire 5024WLMi",
-"		103c 099c  NX6110/NC6120",
-"		103c 308b  MX6125",
-"	8035  PCI6411, PCI6421, PCI6611, PCI6621, PCI7411, PCI7421, PCI7611, PCI7621 Smart Card Controller (SMC)",
-"		103c 099c  NX6110/NC6120",
-"	8036  PCI6515 Cardbus Controller",
-"	8038  PCI6515 SmartCard Controller",
-"	803b  5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD)",
-"	8201  PCI1620 Firmware Loading Function",
-"	8204  PCI7410,7510,7610 PCI Firmware Loading Function",
-"		1028 0139  Latitude D400",
-"		1028 014e  Latitude D800",
-"	8231  XIO2000(A)/XIO2200 PCI Express-to-PCI Bridge",
-"	8235  XIO2200 IEEE-1394a-2000 Controller (PHY/Link)",
-"	8400  ACX 100 22Mbps Wireless Interface",
-"		1186 3b00  DWL-650+ PC Card cardbus 22Mbs Wireless Adapter [AirPlus]",
-"		1186 3b01  DWL-520+ 22Mbps PCI Wireless Adapter",
-"		16ab 8501  WL-8305 IEEE802.11b+ Wireless LAN PCI Adapter",
-"	8401  ACX 100 22Mbps Wireless Interface",
-"	9000  Wireless Interface (of unknown type)",
-"	9065  TMS320DM642",
-"	9066  ACX 111 54Mbps Wireless Interface",
-"		104c 9066  Trendnet TEW-421PC Wireless PCI Adapter",
-"		1186 3b04  DWL-G520+ Wireless PCI Adapter",
-"		1186 3b05  DWL-G650+ AirPlusG+ CardBus Wireless LAN",
-"		13d1 aba0  SWLMP-54108 108Mbps Wireless mini PCI card 802.11g+",
-"		1737 0033  WPC54G Ver.2 802.11G PC Card",
-"	a001  TDC1570",
-"	a100  TDC1561",
-"	a102  TNETA1575 HyperSAR Plus w/PCI Host i/f & UTOPIA i/f",
-"	a106  TMS320C6414 TMS320C6415 TMS320C6416",
-"		175c 5000  ASI50xx Audio Adapter",
-"		175c 6400  ASI6400 Cobranet series",
-"		175c 8700  ASI87xx Radio Tuner card",
-"	ac10  PCI1050",
-"	ac11  PCI1053",
-"	ac12  PCI1130",
-"	ac13  PCI1031",
-"	ac15  PCI1131",
-"	ac16  PCI1250",
-"		1014 0092  ThinkPad 600",
-"	ac17  PCI1220",
-"	ac18  PCI1260",
-"	ac19  PCI1221",
-"	ac1a  PCI1210",
-"	ac1b  PCI1450",
-"		0e11 b113  Armada M700",
-"		1014 0130  Thinkpad T20/T22/A21m",
-"	ac1c  PCI1225",
-"		0e11 b121  Armada E500",
-"		1028 0088  Latitude CPi A400XT",
-"	ac1d  PCI1251A",
-"	ac1e  PCI1211",
-"	ac1f  PCI1251B",
-"	ac20  TI 2030",
-"	ac21  PCI2031",
-"	ac22  PCI2032 PCI Docking Bridge",
-"	ac23  PCI2250 PCI-to-PCI Bridge",
-"	ac28  PCI2050 PCI-to-PCI Bridge",
-"	ac30  PCI1260 PC card Cardbus Controller",
-"	ac40  PCI4450 PC card Cardbus Controller",
-"	ac41  PCI4410 PC card Cardbus Controller",
-"	ac42  PCI4451 PC card Cardbus Controller",
-"		1028 00e6  PCI4451 PC card CardBus Controller (Dell Inspiron 8100)",
-"	ac44  PCI4510 PC card Cardbus Controller",
-"		1028 0163  Latitude D505",
-"		1028 0196  Inspiron 5160",
-"		1071 8160  MIM2000",
-"	ac46  PCI4520 PC card Cardbus Controller",
-"	ac47  PCI7510 PC card Cardbus Controller",
-"		1028 0139  Latitude D400",
-"		1028 013f  Precision M60",
-"		1028 014e  Latitude D800",
-"	ac4a  PCI7510,7610 PC card Cardbus Controller",
-"		1028 0139  Latitude D400",
-"		1028 014e  Latitude D800",
-"	ac50  PCI1410 PC card Cardbus Controller",
-"	ac51  PCI1420",
-"		0e11 004e  Evo N600c",
-"		1014 0148  ThinkPad A20m",
-"		1014 023b  ThinkPad T23 (2647-4MG)",
-"		1028 00b1  Latitude C600",
-"		1028 012a  Latitude C640",
-"		1033 80cd  Versa Note VXi",
-"		1095 10cf  Fujitsu-Siemens LifeBook C Series",
-"		10cf 1095  Lifebook S-4510/C6155",
-"		e4bf 1000  CP2-2-HIPHOP",
-"	ac52  PCI1451 PC card Cardbus Controller",
-"	ac53  PCI1421 PC card Cardbus Controller",
-"	ac54  PCI1620 PC Card Controller",
-"	ac55  PCI1520 PC card Cardbus Controller",
-"		1014 0512  ThinkPad T30/T40",
-"	ac56  PCI1510 PC card Cardbus Controller",
-"		1014 0528  ThinkPad R40e (2684-HVG) Cardbus Controller",
-"	ac60  PCI2040 PCI to DSP Bridge Controller",
-"		175c 5100  ASI51xx Audio Adapter",
-"		175c 6100  ASI61xx Audio Adapter",
-"		175c 6200  ASI62xx Audio Adapter",
-"		175c 8800  ASI88xx Audio Adapter",
-"	ac8d  PCI 7620",
-"	ac8e  PCI7420 CardBus Controller",
-"	ac8f  PCI7420/PCI7620 Dual Socket CardBus and Smart Card Cont. w/ 1394a-2000 OHCI Two-Port  PHY/Link-Layer Cont. and SD/MS-Pro Sockets",
-"	fe00  FireWire Host Controller",
-"	fe03  12C01A FireWire Host Controller",
-"104d  Sony Corporation",
-"	8004  DTL-H2500 [Playstation development board]",
-"	8009  CXD1947Q i.LINK Controller",
-"	8039  CXD3222 i.LINK Controller",
-"	8056  Rockwell HCF 56K modem",
-"	808a  Memory Stick Controller",
-"104e  Oak Technology, Inc",
-"	0017  OTI-64017",
-"	0107  OTI-107 [Spitfire]",
-"	0109  Video Adapter",
-"	0111  OTI-64111 [Spitfire]",
-"	0217  OTI-64217",
-"	0317  OTI-64317",
-"104f  Co-time Computer Ltd",
-"1050  Winbond Electronics Corp",
-"	0000  NE2000",
-"	0001  W83769F",
-"	0033  W89C33D 802.11 a/b/g BB/MAC",
-"	0105  W82C105",
-"	0840  W89C840",
-"		1050 0001  W89C840 Ethernet Adapter",
-"		1050 0840  W89C840 Ethernet Adapter",
-"	0940  W89C940",
-"	5a5a  W89C940F",
-"	6692  W6692",
-"		1043 1702  ISDN Adapter (PCI Bus, D, W)",
-"		1043 1703  ISDN Adapter (PCI Bus, DV, W)",
-"		1043 1707  ISDN Adapter (PCI Bus, DV, W)",
-"		144f 1702  ISDN Adapter (PCI Bus, D, W)",
-"		144f 1703  ISDN Adapter (PCI Bus, DV, W)",
-"		144f 1707  ISDN Adapter (PCI Bus, DV, W)",
-"	9921  W99200F MPEG-1 Video Encoder",
-"	9922  W99200F/W9922PF MPEG-1/2 Video Encoder",
-"	9970  W9970CF",
-"1051  Anigma, Inc.",
-"1052  \?Young Micro Systems",
-"1053  Young Micro Systems",
-"1054  Hitachi, Ltd",
-"1055  Efar Microsystems",
-"	9130  SLC90E66 [Victory66] IDE",
-"	9460  SLC90E66 [Victory66] ISA",
-"	9462  SLC90E66 [Victory66] USB",
-"	9463  SLC90E66 [Victory66] ACPI",
-"1056  ICL",
-"1057  Motorola",
-"	0001  MPC105 [Eagle]",
-"	0002  MPC106 [Grackle]",
-"	0003  MPC8240 [Kahlua]",
-"	0004  MPC107",
-"	0006  MPC8245 [Unity]",
-"	0008  MPC8540",
-"	0009  MPC8560",
-"	0100  MC145575 [HFC-PCI]",
-"	0431  KTI829c 100VG",
-"	1801  DSP56301 Digital Signal Processor",
-"		14fb 0101  Transas Radar Imitator Board [RIM]",
-"		14fb 0102  Transas Radar Imitator Board [RIM-2]",
-"		14fb 0202  Transas Radar Integrator Board [RIB-2]",
-"		14fb 0611  1 channel CAN bus Controller [CanPci-1]",
-"		14fb 0612  2 channels CAN bus Controller [CanPci-2]",
-"		14fb 0613  3 channels CAN bus Controller [CanPci-3]",
-"		14fb 0614  4 channels CAN bus Controller [CanPci-4]",
-"		14fb 0621  1 channel CAN bus Controller [CanPci2-1]",
-"		14fb 0622  2 channels CAN bus Controller [CanPci2-2]",
-"		14fb 0810  Transas VTS Radar Integrator Board [RIB-4]",
-"		175c 4200  ASI4215 Audio Adapter",
-"		175c 4300  ASI43xx Audio Adapter",
-"		175c 4400  ASI4401 Audio Adapter",
-"		ecc0 0010  Darla",
-"		ecc0 0020  Gina",
-"		ecc0 0030  Layla rev.0",
-"		ecc0 0031  Layla rev.1",
-"		ecc0 0040  Darla24 rev.0",
-"		ecc0 0041  Darla24 rev.1",
-"		ecc0 0050  Gina24 rev.0",
-"		ecc0 0051  Gina24 rev.1",
-"		ecc0 0070  Mona rev.0",
-"		ecc0 0071  Mona rev.1",
-"		ecc0 0072  Mona rev.2",
-"	18c0  MPC8265A/8266/8272",
-"	18c1  MPC8271/MPC8272",
-"	3410  DSP56361 Digital Signal Processor",
-"		ecc0 0050  Gina24 rev.0",
-"		ecc0 0051  Gina24 rev.1",
-"		ecc0 0060  Layla24",
-"		ecc0 0070  Mona rev.0",
-"		ecc0 0071  Mona rev.1",
-"		ecc0 0072  Mona rev.2",
-"		ecc0 0080  Mia rev.0",
-"		ecc0 0081  Mia rev.1",
-"		ecc0 0090  Indigo",
-"		ecc0 00a0  Indigo IO",
-"		ecc0 00b0  Indigo DJ",
-"		ecc0 0100  3G",
-"	4801  Raven",
-"	4802  Falcon",
-"	4803  Hawk",
-"	4806  CPX8216",
-"	4d68  20268",
-"	5600  SM56 PCI Modem",
-"		1057 0300  SM56 PCI Speakerphone Modem",
-"		1057 0301  SM56 PCI Voice Modem",
-"		1057 0302  SM56 PCI Fax Modem",
-"		1057 5600  SM56 PCI Voice modem",
-"		13d2 0300  SM56 PCI Speakerphone Modem",
-"		13d2 0301  SM56 PCI Voice modem",
-"		13d2 0302  SM56 PCI Fax Modem",
-"		1436 0300  SM56 PCI Speakerphone Modem",
-"		1436 0301  SM56 PCI Voice modem",
-"		1436 0302  SM56 PCI Fax Modem",
-"		144f 100c  SM56 PCI Fax Modem",
-"		1494 0300  SM56 PCI Speakerphone Modem",
-"		1494 0301  SM56 PCI Voice modem",
-"		14c8 0300  SM56 PCI Speakerphone Modem",
-"		14c8 0302  SM56 PCI Fax Modem",
-"		1668 0300  SM56 PCI Speakerphone Modem",
-"		1668 0302  SM56 PCI Fax Modem",
-"	5608  Wildcard X100P",
-"	5803  MPC5200",
-"	5806  MCF54 Coldfire",
-"	5808  MPC8220",
-"	5809  MPC5200B",
-"	6400  MPC190 Security Processor (S1 family, encryption)",
-"	6405  MPC184 Security Processor (S1 family)",
-"1058  Electronics & Telecommunications RSH",
-"1059  Teknor Industrial Computers Inc",
-"105a  Promise Technology, Inc.",
-"	0d30  PDC20265 (FastTrak100 Lite/Ultra100)",
-"		105a 4d33  Ultra100",
-"	0d38  20263",
-"		105a 4d39  Fasttrak66",
-"	1275  20275",
-"	3318  PDC20318 (SATA150 TX4)",
-"	3319  PDC20319 (FastTrak S150 TX4)",
-"		8086 3427  S875WP1-E mainboard",
-"	3371  PDC20371 (FastTrak S150 TX2plus)",
-"	3373  PDC20378 (FastTrak 378/SATA 378)",
-"		1043 80f5  K8V Deluxe/PC-DL Deluxe motherboard",
-"		1462 702e  K8T NEO FIS2R motherboard",
-"	3375  PDC20375 (SATA150 TX2plus)",
-"	3376  PDC20376 (FastTrak 376)",
-"		1043 809e  A7V8X motherboard",
-"	3515  PDC40719 [FastTrak TX4300/TX4310]",
-"	3519  PDC40519 (FastTrak TX4200)",
-"	3570  20771 (FastTrak TX2300)",
-"	3571  PDC20571 (FastTrak TX2200)",
-"	3574  PDC20579 SATAII 150 IDE Controller",
-"	3577  PDC40779 (SATA 300 779)",
-"	3d17  PDC40718 (SATA 300 TX4)",
-"	3d18  PDC20518/PDC40518 (SATAII 150 TX4)",
-"	3d73  PDC40775 (SATA 300 TX2plus)",
-"	3d75  PDC20575 (SATAII150 TX2plus)",
-"	4d30  PDC20267 (FastTrak100/Ultra100)",
-"		105a 4d33  Ultra100",
-"		105a 4d39  FastTrak100",
-"	4d33  20246",
-"		105a 4d33  20246 IDE Controller",
-"	4d38  PDC20262 (FastTrak66/Ultra66)",
-"		105a 4d30  Ultra Device on SuperTrak",
-"		105a 4d33  Ultra66",
-"		105a 4d39  FastTrak66",
-"	4d68  PDC20268 (Ultra100 TX2)",
-"		105a 4d68  Ultra100TX2",
-"	4d69  20269",
-"		105a 4d68  Ultra133TX2",
-"	5275  PDC20276 (MBFastTrak133 Lite)",
-"		1043 807e  A7V333 motherboard.",
-"		105a 0275  SuperTrak SX6000 IDE",
-"		105a 1275  MBFastTrak133 Lite (tm) Controller (RAID mode)",
-"		1458 b001  MBUltra 133",
-"	5300  DC5300",
-"	6268  PDC20270 (FastTrak100 LP/TX2/TX4)",
-"		105a 4d68  FastTrak100 TX2",
-"	6269  PDC20271 (FastTrak TX2000)",
-"		105a 6269  FastTrak TX2/TX2000",
-"	6621  PDC20621 (FastTrak S150 SX4/FastTrak SX4000 lite)",
-"	6622  PDC20621 [SATA150 SX4] 4 Channel IDE RAID Controller",
-"	6624  PDC20621 [FastTrak SX4100]",
-"	6626  PDC20618 (Ultra 618)",
-"	6629  PDC20619 (FastTrak TX4000)",
-"	7275  PDC20277 (SBFastTrak133 Lite)",
-"	8002  SATAII150 SX8",
-"105b  Foxconn International, Inc.",
-"105c  Wipro Infotech Limited",
-"105d  Number 9 Computer Company",
-"	2309  Imagine 128",
-"	2339  Imagine 128-II",
-"		105d 0000  Imagine 128 series 2 4Mb VRAM",
-"		105d 0001  Imagine 128 series 2 4Mb VRAM",
-"		105d 0002  Imagine 128 series 2 4Mb VRAM",
-"		105d 0003  Imagine 128 series 2 4Mb VRAM",
-"		105d 0004  Imagine 128 series 2 4Mb VRAM",
-"		105d 0005  Imagine 128 series 2 4Mb VRAM",
-"		105d 0006  Imagine 128 series 2 4Mb VRAM",
-"		105d 0007  Imagine 128 series 2 4Mb VRAM",
-"		105d 0008  Imagine 128 series 2e 4Mb DRAM",
-"		105d 0009  Imagine 128 series 2e 4Mb DRAM",
-"		105d 000a  Imagine 128 series 2 8Mb VRAM",
-"		105d 000b  Imagine 128 series 2 8Mb H-VRAM",
-"		11a4 000a  Barco Metheus 5 Megapixel",
-"		13cc 0000  Barco Metheus 5 Megapixel",
-"		13cc 0004  Barco Metheus 5 Megapixel",
-"		13cc 0005  Barco Metheus 5 Megapixel",
-"		13cc 0006  Barco Metheus 5 Megapixel",
-"		13cc 0008  Barco Metheus 5 Megapixel",
-"		13cc 0009  Barco Metheus 5 Megapixel",
-"		13cc 000a  Barco Metheus 5 Megapixel",
-"		13cc 000c  Barco Metheus 5 Megapixel",
-"	493d  Imagine 128 T2R [Ticket to Ride]",
-"		11a4 000a  Barco Metheus 5 Megapixel, Dual Head",
-"		11a4 000b  Barco Metheus 5 Megapixel, Dual Head",
-"		13cc 0002  Barco Metheus 4 Megapixel, Dual Head",
-"		13cc 0003  Barco Metheus 5 Megapixel, Dual Head",
-"		13cc 0007  Barco Metheus 5 Megapixel, Dual Head",
-"		13cc 0008  Barco Metheus 5 Megapixel, Dual Head",
-"		13cc 0009  Barco Metheus 5 Megapixel, Dual Head",
-"		13cc 000a  Barco Metheus 5 Megapixel, Dual Head",
-"	5348  Revolution 4",
-"		105d 0037  Revolution IV-FP AGP (For SGI 1600SW)",
-"		11a4 0028  PVS5600M",
-"		11a4 0038  PVS5600D",
-"105e  Vtech Computers Ltd",
-"105f  Infotronic America Inc",
-"1060  United Microelectronics [UMC]",
-"	0001  UM82C881",
-"	0002  UM82C886",
-"	0101  UM8673F",
-"	0881  UM8881",
-"	0886  UM8886F",
-"	0891  UM8891A",
-"	1001  UM886A",
-"	673a  UM8886BF",
-"	673b  EIDE Master/DMA",
-"	8710  UM8710",
-"	886a  UM8886A",
-"	8881  UM8881F",
-"	8886  UM8886F",
-"	888a  UM8886A",
-"	8891  UM8891A",
-"	9017  UM9017F",
-"	9018  UM9018",
-"	9026  UM9026",
-"	e881  UM8881N",
-"	e886  UM8886N",
-"	e88a  UM8886N",
-"	e891  UM8891N",
-"1061  I.I.T.",
-"	0001  AGX016",
-"	0002  IIT3204/3501",
-"1062  Maspar Computer Corp",
-"1063  Ocean Office Automation",
-"1064  Alcatel",
-"1065  Texas Microsystems",
-"1066  PicoPower Technology",
-"	0000  PT80C826",
-"	0001  PT86C521 [Vesuvius v1] Host Bridge",
-"	0002  PT86C523 [Vesuvius v3] PCI-ISA Bridge Master",
-"	0003  PT86C524 [Nile] PCI-to-PCI Bridge",
-"	0004  PT86C525 [Nile-II] PCI-to-PCI Bridge",
-"	0005  National PC87550 System Controller",
-"	8002  PT86C523 [Vesuvius v3] PCI-ISA Bridge Slave",
-"1067  Mitsubishi Electric",
-"	0301  AccelGraphics AccelECLIPSE",
-"	0304  AccelGALAXY A2100 [OEM Evans & Sutherland]",
-"	0308  Tornado 3000 [OEM Evans & Sutherland]",
-"	1002  VG500 [VolumePro Volume Rendering Accelerator]",
-"1068  Diversified Technology",
-"1069  Mylex Corporation",
-"	0001  DAC960P",
-"	0002  DAC960PD",
-"	0010  DAC960PG",
-"	0020  DAC960LA",
-"	0050  AcceleRAID 352/170/160 support Device",
-"		1069 0050  AcceleRAID 352 support Device",
-"		1069 0052  AcceleRAID 170 support Device",
-"		1069 0054  AcceleRAID 160 support Device",
-"	b166  AcceleRAID 600/500/400/Sapphire support Device",
-"		1014 0242  iSeries 2872 DASD IOA",
-"		1014 0266  Dual Channel PCI-X U320 SCSI Adapter",
-"		1014 0278  Dual Channel PCI-X U320 SCSI RAID Adapter",
-"		1014 02d3  Dual Channel PCI-X U320 SCSI Adapter",
-"		1014 02d4  Dual Channel PCI-X U320 SCSI RAID Adapter",
-"		1069 0200  AcceleRAID 400, Single Channel, PCI-X, U320, SCSI RAID",
-"		1069 0202  AcceleRAID Sapphire, Dual Channel, PCI-X, U320, SCSI RAID",
-"		1069 0204  AcceleRAID 500, Dual Channel, Low-Profile, PCI-X, U320, SCSI RAID",
-"		1069 0206  AcceleRAID 600, Dual Channel, PCI-X, U320, SCSI RAID",
-"	ba55  eXtremeRAID 1100 support Device",
-"	ba56  eXtremeRAID 2000/3000 support Device",
-"		1069 0030  eXtremeRAID 3000 support Device",
-"		1069 0040  eXtremeRAID 2000 support Device",
-"	ba57  eXtremeRAID 4000/5000 support Device",
-"		1069 0072  eXtremeRAID 5000 support Device",
-"106a  Aten Research Inc",
-"106b  Apple Computer Inc.",
-"	0001  Bandit PowerPC host bridge",
-"	0002  Grand Central I/O",
-"	0003  Control Video",
-"	0004  PlanB Video-In",
-"	0007  O'Hare I/O",
-"	000c  DOS on Mac",
-"	000e  Hydra Mac I/O",
-"	0010  Heathrow Mac I/O",
-"	0017  Paddington Mac I/O",
-"	0018  UniNorth FireWire",
-"	0019  KeyLargo USB",
-"	001e  UniNorth Internal PCI",
-"	001f  UniNorth PCI",
-"	0020  UniNorth AGP",
-"	0021  UniNorth GMAC (Sun GEM)",
-"	0022  KeyLargo Mac I/O",
-"	0024  UniNorth/Pangea GMAC (Sun GEM)",
-"	0025  KeyLargo/Pangea Mac I/O",
-"	0026  KeyLargo/Pangea USB",
-"	0027  UniNorth/Pangea AGP",
-"	0028  UniNorth/Pangea PCI",
-"	0029  UniNorth/Pangea Internal PCI",
-"	002d  UniNorth 1.5 AGP",
-"	002e  UniNorth 1.5 PCI",
-"	002f  UniNorth 1.5 Internal PCI",
-"	0030  UniNorth/Pangea FireWire",
-"	0031  UniNorth 2 FireWire",
-"		106b 5811  iBook G4 2004",
-"	0032  UniNorth 2 GMAC (Sun GEM)",
-"	0033  UniNorth 2 ATA/100",
-"	0034  UniNorth 2 AGP",
-"	0035  UniNorth 2 PCI",
-"	0036  UniNorth 2 Internal PCI",
-"	003b  UniNorth/Intrepid ATA/100",
-"	003e  KeyLargo/Intrepid Mac I/O",
-"	003f  KeyLargo/Intrepid USB",
-"	0040  K2 KeyLargo USB",
-"	0041  K2 KeyLargo Mac/IO",
-"	0042  K2 FireWire",
-"	0043  K2 ATA/100",
-"	0045  K2 HT-PCI Bridge",
-"	0046  K2 HT-PCI Bridge",
-"	0047  K2 HT-PCI Bridge",
-"	0048  K2 HT-PCI Bridge",
-"	0049  K2 HT-PCI Bridge",
-"	004b  U3 AGP",
-"	004c  K2 GMAC (Sun GEM)",
-"	004f  Shasta Mac I/O",
-"	0050  Shasta IDE",
-"	0051  Shasta (Sun GEM)",
-"	0052  Shasta Firewire",
-"	0053  Shasta PCI Bridge",
-"	0054  Shasta PCI Bridge",
-"	0055  Shasta PCI Bridge",
-"	0058  U3L AGP Bridge",
-"	0059  U3H AGP Bridge",
-"	0066  Intrepid2 AGP Bridge",
-"	0067  Intrepid2 PCI Bridge",
-"	0068  Intrepid2 PCI Bridge",
-"	0069  Intrepid2 ATA/100",
-"	006a  Intrepid2 Firewire",
-"	006b  Intrepid2 GMAC (Sun GEM)",
-"	1645  Tigon3 Gigabit Ethernet NIC (BCM5701)",
-"106c  Hynix Semiconductor",
-"	8801  Dual Pentium ISA/PCI Motherboard",
-"	8802  PowerPC ISA/PCI Motherboard",
-"	8803  Dual Window Graphics Accelerator",
-"	8804  LAN Controller",
-"	8805  100-BaseT LAN",
-"106d  Sequent Computer Systems",
-"106e  DFI, Inc",
-"106f  City Gate Development Ltd",
-"1070  Daewoo Telecom Ltd",
-"1071  Mitac",
-"	8160  Mitac 8060B Mobile Platform",
-"1072  GIT Co Ltd",
-"1073  Yamaha Corporation",
-"	0001  3D GUI Accelerator",
-"	0002  YGV615 [RPA3 3D-Graphics Controller]",
-"	0003  YMF-740",
-"	0004  YMF-724",
-"		1073 0004  YMF724-Based PCI Audio Adapter",
-"	0005  DS1 Audio",
-"		1073 0005  DS-XG PCI Audio CODEC",
-"	0006  DS1 Audio",
-"	0008  DS1 Audio",
-"		1073 0008  DS-XG PCI Audio CODEC",
-"	000a  DS1L Audio",
-"		1073 0004  DS-XG PCI Audio CODEC",
-"		1073 000a  DS-XG PCI Audio CODEC",
-"	000c  YMF-740C [DS-1L Audio Controller]",
-"		107a 000c  DS-XG PCI Audio CODEC",
-"	000d  YMF-724F [DS-1 Audio Controller]",
-"		1073 000d  DS-XG PCI Audio CODEC",
-"	0010  YMF-744B [DS-1S Audio Controller]",
-"		1073 0006  DS-XG PCI Audio CODEC",
-"		1073 0010  DS-XG PCI Audio CODEC",
-"	0012  YMF-754 [DS-1E Audio Controller]",
-"		1073 0012  DS-XG PCI Audio Codec",
-"	0020  DS-1 Audio",
-"	2000  DS2416 Digital Mixing Card",
-"		1073 2000  DS2416 Digital Mixing Card",
-"1074  NexGen Microsystems",
-"	4e78  82c500/1",
-"1075  Advanced Integrations Research",
-"1076  Chaintech Computer Co. Ltd",
-"1077  QLogic Corp.",
-"	1016  ISP10160 Single Channel Ultra3 SCSI Processor",
-"	1020  ISP1020 Fast-wide SCSI",
-"	1022  ISP1022 Fast-wide SCSI",
-"	1080  ISP1080 SCSI Host Adapter",
-"	1216  ISP12160 Dual Channel Ultra3 SCSI Processor",
-"		101e 8471  QLA12160 on AMI MegaRAID",
-"		101e 8493  QLA12160 on AMI MegaRAID",
-"	1240  ISP1240 SCSI Host Adapter",
-"	1280  ISP1280 SCSI Host Adapter",
-"	2020  ISP2020A Fast!SCSI Basic Adapter",
-"	2100  QLA2100 64-bit Fibre Channel Adapter",
-"		1077 0001  QLA2100 64-bit Fibre Channel Adapter",
-"	2200  QLA2200 64-bit Fibre Channel Adapter",
-"		1077 0002  QLA2200",
-"	2300  QLA2300 64-bit Fibre Channel Adapter",
-"	2312  QLA2312 Fibre Channel Adapter",
-"	2322  QLA2322 Fibre Channel Adapter",
-"	2422  QLA2422 Fibre Channel Adapter",
-"	2432  QLA2432 Fibre Channel Adapter",
-"	3010  QLA3010 Network Adapter",
-"	3022  QLA3022 Network Adapter",
-"	4010  QLA4010 iSCSI TOE Adapter",
-"	4022  QLA4022 iSCSI TOE Adapter",
-"	6312  QLA6312 Fibre Channel Adapter",
-"	6322  QLA6322 Fibre Channel Adapter",
-"1078  Cyrix Corporation",
-"	0000  5510 [Grappa]",
-"	0001  PCI Master",
-"	0002  5520 [Cognac]",
-"	0100  5530 Legacy [Kahlua]",
-"	0101  5530 SMI [Kahlua]",
-"	0102  5530 IDE [Kahlua]",
-"	0103  5530 Audio [Kahlua]",
-"	0104  5530 Video [Kahlua]",
-"	0400  ZFMicro PCI Bridge",
-"	0401  ZFMicro Chipset SMI",
-"	0402  ZFMicro Chipset IDE",
-"	0403  ZFMicro Expansion Bus",
-"1079  I-Bus",
-"107a  NetWorth",
-"107b  Gateway 2000",
-"107c  LG Electronics [Lucky Goldstar Co. Ltd]",
-"107d  LeadTek Research Inc.",
-"	0000  P86C850",
-"	204d  [GeForce 7800 GTX] Winfast PX7800 GTX TDH",
-"	2134  WinFast 3D S320 II",
-"	2971  [GeForce FX 5900] WinFast A350 TDH MyViVo",
-"107e  Interphase Corporation",
-"	0001  5515 ATM Adapter [Flipper]",
-"	0002  100 VG AnyLan Controller",
-"	0004  5526 Fibre Channel Host Adapter",
-"	0005  x526 Fibre Channel Host Adapter",
-"	0008  5525/5575 ATM Adapter (155 Mbit) [Atlantic]",
-"	9003  5535-4P-BRI-ST",
-"	9007  5535-4P-BRI-U",
-"	9008  5535-1P-SR",
-"	900c  5535-1P-SR-ST",
-"	900e  5535-1P-SR-U",
-"	9011  5535-1P-PRI",
-"	9013  5535-2P-PRI",
-"	9023  5536-4P-BRI-ST",
-"	9027  5536-4P-BRI-U",
-"	9031  5536-1P-PRI",
-"	9033  5536-2P-PRI",
-"107f  Data Technology Corporation",
-"	0802  SL82C105",
-"1080  Contaq Microsystems",
-"	0600  82C599",
-"	c691  Cypress CY82C691",
-"	c693  82c693",
-"1081  Supermac Technology",
-"	0d47  Radius PCI to NuBUS Bridge",
-"1082  EFA Corporation of America",
-"1083  Forex Computer Corporation",
-"	0001  FR710",
-"1084  Parador",
-"1085  Tulip Computers Int.B.V.",
-"1086  J. Bond Computer Systems",
-"1087  Cache Computer",
-"1088  Microcomputer Systems (M) Son",
-"1089  Data General Corporation",
-"108a  SBS Technologies",
-"	0001  VME Bridge Model 617",
-"	0010  VME Bridge Model 618",
-"	0040  dataBLIZZARD",
-"	3000  VME Bridge Model 2706",
-"108c  Oakleigh Systems Inc.",
-"108d  Olicom",
-"	0001  Token-Ring 16/4 PCI Adapter (3136/3137)",
-"	0002  16/4 Token Ring",
-"	0004  RapidFire 3139 Token-Ring 16/4 PCI Adapter",
-"		108d 0004  OC-3139/3140 RapidFire Token-Ring 16/4 Adapter",
-"	0005  GoCard 3250 Token-Ring 16/4 CardBus PC Card",
-"	0006  OC-3530 RapidFire Token-Ring 100",
-"	0007  RapidFire 3141 Token-Ring 16/4 PCI Fiber Adapter",
-"		108d 0007  OC-3141 RapidFire Token-Ring 16/4 Adapter",
-"	0008  RapidFire 3540 HSTR 100/16/4 PCI Adapter",
-"		108d 0008  OC-3540 RapidFire HSTR 100/16/4 Adapter",
-"	0011  OC-2315",
-"	0012  OC-2325",
-"	0013  OC-2183/2185",
-"	0014  OC-2326",
-"	0019  OC-2327/2250 10/100 Ethernet Adapter",
-"		108d 0016  OC-2327 Rapidfire 10/100 Ethernet Adapter",
-"		108d 0017  OC-2250 GoCard 10/100 Ethernet Adapter",
-"	0021  OC-6151/6152 [RapidFire ATM 155]",
-"	0022  ATM Adapter",
-"108e  Sun Microsystems Computer Corp.",
-"	0001  EBUS",
-"	1000  EBUS",
-"	1001  Happy Meal",
-"	1100  RIO EBUS",
-"	1101  RIO GEM",
-"	1102  RIO 1394",
-"	1103  RIO USB",
-"	1648  [bge] Gigabit Ethernet",
-"	2bad  GEM",
-"	5000  Simba Advanced PCI Bridge",
-"	5043  SunPCI Co-processor",
-"	8000  Psycho PCI Bus Module",
-"	8001  Schizo PCI Bus Module",
-"	8002  Schizo+ PCI Bus Module",
-"	a000  Ultra IIi",
-"	a001  Ultra IIe",
-"	a801  Tomatillo PCI Bus Module",
-"	abba  Cassini 10/100/1000",
-"108f  Systemsoft",
-"1090  Compro Computer Services, Inc.",
-"1091  Intergraph Corporation",
-"	0020  3D graphics processor",
-"	0021  3D graphics processor w/Texturing",
-"	0040  3D graphics frame buffer",
-"	0041  3D graphics frame buffer",
-"	0060  Proprietary bus bridge",
-"	00e4  Powerstorm 4D50T",
-"	0720  Motion JPEG codec",
-"	07a0  Sun Expert3D-Lite Graphics Accelerator",
-"	1091  Sun Expert3D Graphics Accelerator",
-"1092  Diamond Multimedia Systems",
-"	00a0  Speedstar Pro SE",
-"	00a8  Speedstar 64",
-"	0550  Viper V550",
-"	08d4  Supra 2260 Modem",
-"	094c  SupraExpress 56i Pro",
-"	1092  Viper V330",
-"	6120  Maximum DVD",
-"	8810  Stealth SE",
-"	8811  Stealth 64/SE",
-"	8880  Stealth",
-"	8881  Stealth",
-"	88b0  Stealth 64",
-"	88b1  Stealth 64",
-"	88c0  Stealth 64",
-"	88c1  Stealth 64",
-"	88d0  Stealth 64",
-"	88d1  Stealth 64",
-"	88f0  Stealth 64",
-"	88f1  Stealth 64",
-"	9999  DMD-I0928-1 'Monster sound' sound chip",
-"1093  National Instruments",
-"	0160  PCI-DIO-96",
-"	0162  PCI-MIO-16XE-50",
-"	1150  PCI-DIO-32HS High Speed Digital I/O Board",
-"	1170  PCI-MIO-16XE-10",
-"	1180  PCI-MIO-16E-1",
-"	1190  PCI-MIO-16E-4",
-"	1310  PCI-6602",
-"	1330  PCI-6031E",
-"	1350  PCI-6071E",
-"	14e0  PCI-6110",
-"	14f0  PCI-6111",
-"	17d0  PCI-6503",
-"	1870  PCI-6713",
-"	1880  PCI-6711",
-"	18b0  PCI-6052E",
-"	2410  PCI-6733",
-"	2890  PCI-6036E",
-"	2a60  PCI-6023E",
-"	2a70  PCI-6024E",
-"	2a80  PCI-6025E",
-"	2c80  PCI-6035E",
-"	2ca0  PCI-6034E",
-"	70a9  PCI-6528 (Digital I/O at 60V)",
-"	70b8  PCI-6251 [M Series - High Speed Multifunction DAQ]",
-"	b001  IMAQ-PCI-1408",
-"	b011  IMAQ-PXI-1408",
-"	b021  IMAQ-PCI-1424",
-"	b031  IMAQ-PCI-1413",
-"	b041  IMAQ-PCI-1407",
-"	b051  IMAQ-PXI-1407",
-"	b061  IMAQ-PCI-1411",
-"	b071  IMAQ-PCI-1422",
-"	b081  IMAQ-PXI-1422",
-"	b091  IMAQ-PXI-1411",
-"	c801  PCI-GPIB",
-"	c831  PCI-GPIB bridge",
-"1094  First International Computers [FIC]",
-"1095  Silicon Image, Inc.",
-"	0240  Adaptec AAR-1210SA SATA HostRAID Controller",
-"	0640  PCI0640",
-"	0643  PCI0643",
-"	0646  PCI0646",
-"	0647  PCI0647",
-"	0648  PCI0648",
-"		1043 8025  CUBX motherboard",
-"	0649  SiI 0649 Ultra ATA/100 PCI to ATA Host Controller",
-"		0e11 005d  Integrated Ultra ATA-100 Dual Channel Controller",
-"		0e11 007e  Integrated Ultra ATA-100 IDE RAID Controller",
-"		101e 0649  AMI MegaRAID IDE 100 Controller",
-"	0650  PBC0650A",
-"	0670  USB0670",
-"		1095 0670  USB0670",
-"	0673  USB0673",
-"	0680  PCI0680 Ultra ATA-133 Host Controller",
-"		1095 3680  Winic W-680 (Silicon Image 680 based)",
-"	3112  SiI 3112 [SATALink/SATARaid] Serial ATA Controller",
-"		1095 3112  SiI 3112 SATALink Controller",
-"		1095 6112  SiI 3112 SATARaid Controller",
-"		9005 0250  SATAConnect 1205SA Host Controller",
-"	3114  SiI 3114 [SATALink/SATARaid] Serial ATA Controller",
-"		1095 3114  SiI 3114 SATALink Controller",
-"		1095 6114  SiI 3114 SATARaid Controller",
-"	3124  SiI 3124 PCI-X Serial ATA Controller",
-"		1095 3124  SiI 3124 PCI-X Serial ATA Controller",
-"	3132  SiI 3132 Serial ATA Raid II Controller",
-"	3512  SiI 3512 [SATALink/SATARaid] Serial ATA Controller",
-"		1095 3512  SiI 3512 SATALink Controller",
-"		1095 6512  SiI 3512 SATARaid Controller",
-"1096  Alacron",
-"1097  Appian Technology",
-"1098  Quantum Designs (H.K.) Ltd",
-"	0001  QD-8500",
-"	0002  QD-8580",
-"1099  Samsung Electronics Co., Ltd",
-"109a  Packard Bell",
-"109b  Gemlight Computer Ltd.",
-"109c  Megachips Corporation",
-"109d  Zida Technologies Ltd.",
-"109e  Brooktree Corporation",
-"	032e  Bt878 Video Capture",
-"	0350  Bt848 Video Capture",
-"	0351  Bt849A Video capture",
-"	0369  Bt878 Video Capture",
-"		1002 0001  TV-Wonder",
-"		1002 0003  TV-Wonder/VE",
-"	036c  Bt879(\?\?) Video Capture",
-"		13e9 0070  Win/TV (Video Section)",
-"	036e  Bt878 Video Capture",
-"		0070 13eb  WinTV Series",
-"		0070 ff01  Viewcast Osprey 200",
-"		0071 0101  DigiTV PCI",
-"		107d 6606  WinFast TV 2000",
-"		11bd 0012  PCTV pro (TV + FM stereo receiver)",
-"		11bd 001c  PCTV Sat (DBC receiver)",
-"		127a 0001  Bt878 Mediastream Controller NTSC",
-"		127a 0002  Bt878 Mediastream Controller PAL BG",
-"		127a 0003  Bt878a Mediastream Controller PAL BG",
-"		127a 0048  Bt878/832 Mediastream Controller",
-"		144f 3000  MagicTView CPH060 - Video",
-"		1461 0002  TV98 Series (TV/No FM/Remote)",
-"		1461 0003  AverMedia UltraTV PCI 350",
-"		1461 0004  AVerTV WDM Video Capture",
-"		1461 0761  AverTV DVB-T",
-"		14f1 0001  Bt878 Mediastream Controller NTSC",
-"		14f1 0002  Bt878 Mediastream Controller PAL BG",
-"		14f1 0003  Bt878a Mediastream Controller PAL BG",
-"		14f1 0048  Bt878/832 Mediastream Controller",
-"		1822 0001  VisionPlus DVB card",
-"		1851 1850  FlyVideo'98 - Video",
-"		1851 1851  FlyVideo II",
-"		1852 1852  FlyVideo'98 - Video (with FM Tuner)",
-"		18ac d500  DViCO FusionHDTV5 Lite",
-"		270f fc00  Digitop DTT-1000",
-"		bd11 1200  PCTV pro (TV + FM stereo receiver)",
-"	036f  Bt879 Video Capture",
-"		127a 0044  Bt879 Video Capture NTSC",
-"		127a 0122  Bt879 Video Capture PAL I",
-"		127a 0144  Bt879 Video Capture NTSC",
-"		127a 0222  Bt879 Video Capture PAL BG",
-"		127a 0244  Bt879a Video Capture NTSC",
-"		127a 0322  Bt879 Video Capture NTSC",
-"		127a 0422  Bt879 Video Capture NTSC",
-"		127a 1122  Bt879 Video Capture PAL I",
-"		127a 1222  Bt879 Video Capture PAL BG",
-"		127a 1322  Bt879 Video Capture NTSC",
-"		127a 1522  Bt879a Video Capture PAL I",
-"		127a 1622  Bt879a Video Capture PAL BG",
-"		127a 1722  Bt879a Video Capture NTSC",
-"		14f1 0044  Bt879 Video Capture NTSC",
-"		14f1 0122  Bt879 Video Capture PAL I",
-"		14f1 0144  Bt879 Video Capture NTSC",
-"		14f1 0222  Bt879 Video Capture PAL BG",
-"		14f1 0244  Bt879a Video Capture NTSC",
-"		14f1 0322  Bt879 Video Capture NTSC",
-"		14f1 0422  Bt879 Video Capture NTSC",
-"		14f1 1122  Bt879 Video Capture PAL I",
-"		14f1 1222  Bt879 Video Capture PAL BG",
-"		14f1 1322  Bt879 Video Capture NTSC",
-"		14f1 1522  Bt879a Video Capture PAL I",
-"		14f1 1622  Bt879a Video Capture PAL BG",
-"		14f1 1722  Bt879a Video Capture NTSC",
-"		1851 1850  FlyVideo'98 - Video",
-"		1851 1851  FlyVideo II",
-"		1852 1852  FlyVideo'98 - Video (with FM Tuner)",
-"	0370  Bt880 Video Capture",
-"		1851 1850  FlyVideo'98",
-"		1851 1851  FlyVideo'98 EZ - video",
-"		1852 1852  FlyVideo'98 (with FM Tuner)",
-"	0878  Bt878 Audio Capture",
-"		0070 13eb  WinTV Series",
-"		0070 ff01  Viewcast Osprey 200",
-"		0071 0101  DigiTV PCI",
-"		1002 0001  TV-Wonder",
-"		1002 0003  TV-Wonder/VE",
-"		11bd 0012  PCTV pro (TV + FM stereo receiver, audio section)",
-"		11bd 001c  PCTV Sat (DBC receiver)",
-"		127a 0001  Bt878 Video Capture (Audio Section)",
-"		127a 0002  Bt878 Video Capture (Audio Section)",
-"		127a 0003  Bt878 Video Capture (Audio Section)",
-"		127a 0048  Bt878 Video Capture (Audio Section)",
-"		13e9 0070  Win/TV (Audio Section)",
-"		144f 3000  MagicTView CPH060 - Audio",
-"		1461 0002  Avermedia PCTV98 Audio Capture",
-"		1461 0004  AVerTV WDM Audio Capture",
-"		1461 0761  AVerTV DVB-T",
-"		14f1 0001  Bt878 Video Capture (Audio Section)",
-"		14f1 0002  Bt878 Video Capture (Audio Section)",
-"		14f1 0003  Bt878 Video Capture (Audio Section)",
-"		14f1 0048  Bt878 Video Capture (Audio Section)",
-"		1822 0001  VisionPlus DVB Card",
-"		18ac d500  DViCO FusionHDTV5 Lite",
-"		270f fc00  Digitop DTT-1000",
-"		bd11 1200  PCTV pro (TV + FM stereo receiver, audio section)",
-"	0879  Bt879 Audio Capture",
-"		127a 0044  Bt879 Video Capture (Audio Section)",
-"		127a 0122  Bt879 Video Capture (Audio Section)",
-"		127a 0144  Bt879 Video Capture (Audio Section)",
-"		127a 0222  Bt879 Video Capture (Audio Section)",
-"		127a 0244  Bt879 Video Capture (Audio Section)",
-"		127a 0322  Bt879 Video Capture (Audio Section)",
-"		127a 0422  Bt879 Video Capture (Audio Section)",
-"		127a 1122  Bt879 Video Capture (Audio Section)",
-"		127a 1222  Bt879 Video Capture (Audio Section)",
-"		127a 1322  Bt879 Video Capture (Audio Section)",
-"		127a 1522  Bt879 Video Capture (Audio Section)",
-"		127a 1622  Bt879 Video Capture (Audio Section)",
-"		127a 1722  Bt879 Video Capture (Audio Section)",
-"		14f1 0044  Bt879 Video Capture (Audio Section)",
-"		14f1 0122  Bt879 Video Capture (Audio Section)",
-"		14f1 0144  Bt879 Video Capture (Audio Section)",
-"		14f1 0222  Bt879 Video Capture (Audio Section)",
-"		14f1 0244  Bt879 Video Capture (Audio Section)",
-"		14f1 0322  Bt879 Video Capture (Audio Section)",
-"		14f1 0422  Bt879 Video Capture (Audio Section)",
-"		14f1 1122  Bt879 Video Capture (Audio Section)",
-"		14f1 1222  Bt879 Video Capture (Audio Section)",
-"		14f1 1322  Bt879 Video Capture (Audio Section)",
-"		14f1 1522  Bt879 Video Capture (Audio Section)",
-"		14f1 1622  Bt879 Video Capture (Audio Section)",
-"		14f1 1722  Bt879 Video Capture (Audio Section)",
-"	0880  Bt880 Audio Capture",
-"	2115  BtV 2115 Mediastream controller",
-"	2125  BtV 2125 Mediastream controller",
-"	2164  BtV 2164",
-"	2165  BtV 2165",
-"	8230  Bt8230 ATM Segment/Reassembly Ctrlr (SRC)",
-"	8472  Bt8472",
-"	8474  Bt8474",
-"109f  Trigem Computer Inc.",
-"10a0  Meidensha Corporation",
-"10a1  Juko Electronics Ind. Co. Ltd",
-"10a2  Quantum Corporation",
-"10a3  Everex Systems Inc",
-"10a4  Globe Manufacturing Sales",
-"10a5  Smart Link Ltd.",
-"	3052  SmartPCI562 56K Modem",
-"	5449  SmartPCI561 modem",
-"10a6  Informtech Industrial Ltd.",
-"10a7  Benchmarq Microelectronics",
-"10a8  Sierra Semiconductor",
-"	0000  STB Horizon 64",
-"10a9  Silicon Graphics, Inc.",
-"	0001  Crosstalk to PCI Bridge",
-"	0002  Linc I/O controller",
-"	0003  IOC3 I/O controller",
-"	0004  O2 MACE",
-"	0005  RAD Audio",
-"	0006  HPCEX",
-"	0007  RPCEX",
-"	0008  DiVO VIP",
-"	0009  AceNIC Gigabit Ethernet",
-"		10a9 8002  AceNIC Gigabit Ethernet",
-"	0010  AMP Video I/O",
-"	0011  GRIP",
-"	0012  SGH PSHAC GSN",
-"	1001  Magic Carpet",
-"	1002  Lithium",
-"	1003  Dual JPEG 1",
-"	1004  Dual JPEG 2",
-"	1005  Dual JPEG 3",
-"	1006  Dual JPEG 4",
-"	1007  Dual JPEG 5",
-"	1008  Cesium",
-"	100a  IOC4 I/O controller",
-"	2001  Fibre Channel",
-"	2002  ASDE",
-"	4001  TIO-CE PCI Express Bridge",
-"	4002  TIO-CE PCI Express Port",
-"	8001  O2 1394",
-"	8002  G-net NT",
-"	8010  Broadcom e-net [SGI IO9/IO10 BaseIO]",
-"	8018  Broadcom e-net [SGI A330 Server BaseIO]",
-"10aa  ACC Microelectronics",
-"	0000  ACCM 2188",
-"10ab  Digicom",
-"10ac  Honeywell IAC",
-"10ad  Symphony Labs",
-"	0001  W83769F",
-"	0003  SL82C103",
-"	0005  SL82C105",
-"	0103  SL82c103",
-"	0105  SL82c105",
-"	0565  W83C553",
-"10ae  Cornerstone Technology",
-"10af  Micro Computer Systems Inc",
-"10b0  CardExpert Technology",
-"10b1  Cabletron Systems Inc",
-"10b2  Raytheon Company",
-"10b3  Databook Inc",
-"	3106  DB87144",
-"	b106  DB87144",
-"10b4  STB Systems Inc",
-"	1b1d  Velocity 128 3D",
-"		10b4 237e  Velocity 4400",
-"10b5  PLX Technology, Inc.",
-"	0001  i960 PCI bus interface",
-"	1042  Brandywine / jxi2, Inc. - PMC-SyncClock32, IRIG A & B, Nasa 36",
-"	1076  VScom 800 8 port serial adaptor",
-"	1077  VScom 400 4 port serial adaptor",
-"	1078  VScom 210 2 port serial and 1 port parallel adaptor",
-"	1103  VScom 200 2 port serial adaptor",
-"	1146  VScom 010 1 port parallel adaptor",
-"	1147  VScom 020 2 port parallel adaptor",
-"	2540  IXXAT CAN-Interface PC-I 04/PCI",
-"	2724  Thales PCSM Security Card",
-"	6540  PCI6540/6466 PCI-PCI bridge (transparent mode)",
-"		4c53 10e0  PSL09 PrPMC",
-"	6541  PCI6540/6466 PCI-PCI bridge (non-transparent mode, primary side)",
-"		4c53 10e0  PSL09 PrPMC",
-"	6542  PCI6540/6466 PCI-PCI bridge (non-transparent mode, secondary side)",
-"		4c53 10e0  PSL09 PrPMC",
-"	8111  PEX 8111 PCI Express-to-PCI Bridge",
-"	8114  PEX 8114 PCI Express-to-PCI/PCI-X Bridge",
-"	8516  PEX 8516  Versatile PCI Express Switch",
-"	8532  PEX 8532  Versatile PCI Express Switch",
-"	9030  PCI <-> IOBus Bridge Hot Swap",
-"		10b5 2862  Alpermann+Velte PCL PCI LV (3V/5V): Timecode Reader Board",
-"		10b5 2906  Alpermann+Velte PCI TS (3V/5V): Time Synchronisation Board",
-"		10b5 2940  Alpermann+Velte PCL PCI D (3V/5V): Timecode Reader Board",
-"		10b5 2977  IXXAT iPC-I XC16/PCI CAN Board",
-"		10b5 2978  SH ARC-PCIu SOHARD ARCNET card",
-"		10b5 3025  Alpermann+Velte PCL PCI L (3V/5V): Timecode Reader Board",
-"		10b5 3068  Alpermann+Velte PCL PCI HD (3V/5V): Timecode Reader Board",
-"		1397 3136  4xS0-ISDN PCI Adapter",
-"		1397 3137  S2M-E1-ISDN PCI Adapter",
-"		1518 0200  Kontron ThinkIO-C",
-"		15ed 1002  MCCS 8-port Serial Hot Swap",
-"		15ed 1003  MCCS 16-port Serial Hot Swap",
-"	9036  9036",
-"	9050  PCI <-> IOBus Bridge",
-"		10b5 1067  IXXAT CAN i165",
-"		10b5 1172  IK220 (Heidenhain)",
-"		10b5 2036  SatPak GPS",
-"		10b5 2221  Alpermann+Velte PCL PCI LV: Timecode Reader Board",
-"		10b5 2273  SH ARC-PCI SOHARD ARCNET card",
-"		10b5 2431  Alpermann+Velte PCL PCI D: Timecode Reader Board",
-"		10b5 2905  Alpermann+Velte PCI TS: Time Synchronisation Board",
-"		10b5 9050  MP9050",
-"		1498 0362  TPMC866 8 Channel Serial Card",
-"		1522 0001  RockForce 4 Port V.90 Data/Fax/Voice Modem",
-"		1522 0002  RockForce 2 Port V.90 Data/Fax/Voice Modem",
-"		1522 0003  RockForce 6 Port V.90 Data/Fax/Voice Modem",
-"		1522 0004  RockForce 8 Port V.90 Data/Fax/Voice Modem",
-"		1522 0010  RockForce2000 4 Port V.90 Data/Fax/Voice Modem",
-"		1522 0020  RockForce2000 2 Port V.90 Data/Fax/Voice Modem",
-"		15ed 1000  Macrolink MCCS 8-port Serial",
-"		15ed 1001  Macrolink MCCS 16-port Serial",
-"		15ed 1002  Macrolink MCCS 8-port Serial Hot Swap",
-"		15ed 1003  Macrolink MCCS 16-port Serial Hot Swap",
-"		5654 2036  OpenSwitch 6 Telephony card",
-"		5654 3132  OpenSwitch 12 Telephony card",
-"		5654 5634  OpenLine4 Telephony Card",
-"		d531 c002  PCIntelliCAN 2xSJA1000 CAN bus",
-"		d84d 4006  EX-4006 1P",
-"		d84d 4008  EX-4008 1P EPP/ECP",
-"		d84d 4014  EX-4014 2P",
-"		d84d 4018  EX-4018 3P EPP/ECP",
-"		d84d 4025  EX-4025 1S(16C550) RS-232",
-"		d84d 4027  EX-4027 1S(16C650) RS-232",
-"		d84d 4028  EX-4028 1S(16C850) RS-232",
-"		d84d 4036  EX-4036 2S(16C650) RS-232",
-"		d84d 4037  EX-4037 2S(16C650) RS-232",
-"		d84d 4038  EX-4038 2S(16C850) RS-232",
-"		d84d 4052  EX-4052 1S(16C550) RS-422/485",
-"		d84d 4053  EX-4053 2S(16C550) RS-422/485",
-"		d84d 4055  EX-4055 4S(16C550) RS-232",
-"		d84d 4058  EX-4055 4S(16C650) RS-232",
-"		d84d 4065  EX-4065 8S(16C550) RS-232",
-"		d84d 4068  EX-4068 8S(16C650) RS-232",
-"		d84d 4078  EX-4078 2S(16C552) RS-232+1P",
-"	9054  PCI <-> IOBus Bridge",
-"		10b5 2455  Wessex Techology PHIL-PCI",
-"		10b5 2696  Innes Corp AM Radcap card",
-"		10b5 2717  Innes Corp Auricon card",
-"		10b5 2844  Innes Corp TVS Encoder card",
-"		12c7 4001  Intel Dialogic DM/V960-4T1 PCI",
-"		12d9 0002  PCI Prosody Card rev 1.5",
-"		16df 0011  PIKA PrimeNet MM PCI",
-"		16df 0012  PIKA PrimeNet MM cPCI 8",
-"		16df 0013  PIKA PrimeNet MM cPCI 8 (without CAS Signaling)",
-"		16df 0014  PIKA PrimeNet MM cPCI 4",
-"		16df 0015  PIKA Daytona MM",
-"		16df 0016  PIKA InLine MM",
-"	9056  Francois",
-"		10b5 2979  CellinkBlade 11 - CPCI board VoATM AAL1",
-"	9060  9060",
-"	906d  9060SD",
-"		125c 0640  Aries 16000P",
-"	906e  9060ES",
-"	9080  9080",
-"		103c 10eb  (Agilent) E2777B 83K Series Optical Communication Interface",
-"		103c 10ec  (Agilent) E6978-66442 PCI CIC",
-"		10b5 9080  9080 [real subsystem ID not set]",
-"		129d 0002  Aculab PCI Prosidy card",
-"		12d9 0002  PCI Prosody Card",
-"		12df 4422  4422PCI ['Do-All' Telemetry Data Aquisition System]",
-"	bb04  B&B 3PCIOSD1A Isolated PCI Serial",
-"10b6  Madge Networks",
-"	0001  Smart 16/4 PCI Ringnode",
-"	0002  Smart 16/4 PCI Ringnode Mk2",
-"		10b6 0002  Smart 16/4 PCI Ringnode Mk2",
-"		10b6 0006  16/4 CardBus Adapter",
-"	0003  Smart 16/4 PCI Ringnode Mk3",
-"		0e11 b0fd  Compaq NC4621 PCI, 4/16, WOL",
-"		10b6 0003  Smart 16/4 PCI Ringnode Mk3",
-"		10b6 0007  Presto PCI Plus Adapter",
-"	0004  Smart 16/4 PCI Ringnode Mk1",
-"	0006  16/4 Cardbus Adapter",
-"		10b6 0006  16/4 CardBus Adapter",
-"	0007  Presto PCI Adapter",
-"		10b6 0007  Presto PCI",
-"	0009  Smart 100/16/4 PCI-HS Ringnode",
-"		10b6 0009  Smart 100/16/4 PCI-HS Ringnode",
-"	000a  Smart 100/16/4 PCI Ringnode",
-"		10b6 000a  Smart 100/16/4 PCI Ringnode",
-"	000b  16/4 CardBus Adapter Mk2",
-"		10b6 0008  16/4 CardBus Adapter Mk2",
-"		10b6 000b  16/4 Cardbus Adapter Mk2",
-"	000c  RapidFire 3140V2 16/4 TR Adapter",
-"		10b6 000c  RapidFire 3140V2 16/4 TR Adapter",
-"	1000  Collage 25/155 ATM Client Adapter",
-"	1001  Collage 155 ATM Server Adapter",
-"10b7  3Com Corporation",
-"	0001  3c985 1000BaseSX (SX/TX)",
-"	0013  AR5212 802.11abg NIC (3CRDAG675)",
-"		10b7 2031  3CRDAG675 11a/b/g Wireless PCI Adapter",
-"	0910  3C910-A01",
-"	1006  MINI PCI type 3B Data Fax Modem",
-"	1007  Mini PCI 56k Winmodem",
-"		10b7 615c  Mini PCI 56K Modem",
-"	1201  3c982-TXM 10/100baseTX Dual Port A [Hydra]",
-"	1202  3c982-TXM 10/100baseTX Dual Port B [Hydra]",
-"	1700  3c940 10/100/1000Base-T [Marvell]",
-"		1043 80eb  A7V600/P4P800/K8V motherboard",
-"		10b7 0010  3C940 Gigabit LOM Ethernet Adapter",
-"		10b7 0020  3C941 Gigabit LOM Ethernet Adapter",
-"		147b 1407  KV8-MAX3 motherboard",
-"	3390  3c339 TokenLink Velocity",
-"	3590  3c359 TokenLink Velocity XL",
-"		10b7 3590  TokenLink Velocity XL Adapter (3C359/359B)",
-"	4500  3c450 HomePNA [Tornado]",
-"	5055  3c555 Laptop Hurricane",
-"	5057  3c575 Megahertz 10/100 LAN CardBus [Boomerang]",
-"		10b7 5a57  3C575 Megahertz 10/100 LAN Cardbus PC Card",
-"	5157  3cCFE575BT Megahertz 10/100 LAN CardBus [Cyclone]",
-"		10b7 5b57  3C575 Megahertz 10/100 LAN Cardbus PC Card",
-"	5257  3cCFE575CT CardBus [Cyclone]",
-"		10b7 5c57  FE575C-3Com 10/100 LAN CardBus-Fast Ethernet",
-"	5900  3c590 10BaseT [Vortex]",
-"	5920  3c592 EISA 10mbps Demon/Vortex",
-"	5950  3c595 100BaseTX [Vortex]",
-"	5951  3c595 100BaseT4 [Vortex]",
-"	5952  3c595 100Base-MII [Vortex]",
-"	5970  3c597 EISA Fast Demon/Vortex",
-"	5b57  3c595 Megahertz 10/100 LAN CardBus [Boomerang]",
-"		10b7 5b57  3C575 Megahertz 10/100 LAN Cardbus PC Card",
-"	6000  3CRSHPW796 [OfficeConnect Wireless CardBus]",
-"	6001  3com 3CRWE154G72 [Office Connect Wireless LAN Adapter]",
-"	6055  3c556 Hurricane CardBus [Cyclone]",
-"	6056  3c556B CardBus [Tornado]",
-"		10b7 6556  10/100 Mini PCI Ethernet Adapter",
-"	6560  3cCFE656 CardBus [Cyclone]",
-"		10b7 656a  3CCFEM656 10/100 LAN+56K Modem CardBus",
-"	6561  3cCFEM656 10/100 LAN+56K Modem CardBus",
-"		10b7 656b  3CCFEM656 10/100 LAN+56K Modem CardBus",
-"	6562  3cCFEM656B 10/100 LAN+Winmodem CardBus [Cyclone]",
-"		10b7 656b  3CCFEM656B 10/100 LAN+56K Modem CardBus",
-"	6563  3cCFEM656B 10/100 LAN+56K Modem CardBus",
-"		10b7 656b  3CCFEM656 10/100 LAN+56K Modem CardBus",
-"	6564  3cXFEM656C 10/100 LAN+Winmodem CardBus [Tornado]",
-"	7646  3cSOHO100-TX Hurricane",
-"	7770  3CRWE777 PCI(PLX) Wireless Adaptor [Airconnect]",
-"	7940  3c803 FDDILink UTP Controller",
-"	7980  3c804 FDDILink SAS Controller",
-"	7990  3c805 FDDILink DAS Controller",
-"	80eb  3c940B 10/100/1000Base-T",
-"	8811  Token ring",
-"	9000  3c900 10BaseT [Boomerang]",
-"	9001  3c900 10Mbps Combo [Boomerang]",
-"	9004  3c900B-TPO Etherlink XL [Cyclone]",
-"		10b7 9004  3C900B-TPO Etherlink XL TPO 10Mb",
-"	9005  3c900B-Combo Etherlink XL [Cyclone]",
-"		10b7 9005  3C900B-Combo Etherlink XL Combo",
-"	9006  3c900B-TPC Etherlink XL [Cyclone]",
-"	900a  3c900B-FL 10base-FL [Cyclone]",
-"	9050  3c905 100BaseTX [Boomerang]",
-"	9051  3c905 100BaseT4 [Boomerang]",
-"	9055  3c905B 100BaseTX [Cyclone]",
-"		1028 0080  3C905B Fast Etherlink XL 10/100",
-"		1028 0081  3C905B Fast Etherlink XL 10/100",
-"		1028 0082  3C905B Fast Etherlink XL 10/100",
-"		1028 0083  3C905B Fast Etherlink XL 10/100",
-"		1028 0084  3C905B Fast Etherlink XL 10/100",
-"		1028 0085  3C905B Fast Etherlink XL 10/100",
-"		1028 0086  3C905B Fast Etherlink XL 10/100",
-"		1028 0087  3C905B Fast Etherlink XL 10/100",
-"		1028 0088  3C905B Fast Etherlink XL 10/100",
-"		1028 0089  3C905B Fast Etherlink XL 10/100",
-"		1028 0090  3C905B Fast Etherlink XL 10/100",
-"		1028 0091  3C905B Fast Etherlink XL 10/100",
-"		1028 0092  3C905B Fast Etherlink XL 10/100",
-"		1028 0093  3C905B Fast Etherlink XL 10/100",
-"		1028 0094  3C905B Fast Etherlink XL 10/100",
-"		1028 0095  3C905B Fast Etherlink XL 10/100",
-"		1028 0096  3C905B Fast Etherlink XL 10/100",
-"		1028 0097  3C905B Fast Etherlink XL 10/100",
-"		1028 0098  3C905B Fast Etherlink XL 10/100",
-"		1028 0099  3C905B Fast Etherlink XL 10/100",
-"		10b7 9055  3C905B Fast Etherlink XL 10/100",
-"	9056  3c905B-T4 Fast EtherLink XL [Cyclone]",
-"	9058  3c905B Deluxe Etherlink 10/100/BNC [Cyclone]",
-"	905a  3c905B-FX Fast Etherlink XL FX 100baseFx [Cyclone]",
-"	9200  3c905C-TX/TX-M [Tornado]",
-"		1028 0095  3C920 Integrated Fast Ethernet Controller",
-"		1028 0097  3C920 Integrated Fast Ethernet Controller",
-"		1028 00fe  Optiplex GX240",
-"		1028 012a  3C920 Integrated Fast Ethernet Controller [Latitude C640]",
-"		10b7 1000  3C905C-TX Fast Etherlink for PC Management NIC",
-"		10b7 7000  10/100 Mini PCI Ethernet Adapter",
-"		10f1 2466  Tiger MPX S2466 (3C920 Integrated Fast Ethernet Controller)",
-"	9201  3C920B-EMB Integrated Fast Ethernet Controller [Tornado]",
-"		1043 80ab  A7N8X Deluxe onboard 3C920B-EMB Integrated Fast Ethernet Controller",
-"	9202  3Com 3C920B-EMB-WNM Integrated Fast Ethernet Controller",
-"	9210  3C920B-EMB-WNM Integrated Fast Ethernet Controller",
-"	9300  3CSOHO100B-TX 910-A01 [tulip]",
-"	9800  3c980-TX Fast Etherlink XL Server Adapter [Cyclone]",
-"		10b7 9800  3c980-TX Fast Etherlink XL Server Adapter",
-"	9805  3c980-C 10/100baseTX NIC [Python-T]",
-"		10b7 1201  EtherLink Server 10/100 Dual Port A",
-"		10b7 1202  EtherLink Server 10/100 Dual Port B",
-"		10b7 9805  3c980 10/100baseTX NIC [Python-T]",
-"		10f1 2462  Thunder K7 S2462",
-"	9900  3C990-TX [Typhoon]",
-"	9902  3CR990-TX-95 [Typhoon 56-bit]",
-"	9903  3CR990-TX-97 [Typhoon 168-bit]",
-"	9904  3C990B-TX-M/3C990BSVR [Typhoon2]",
-"		10b7 1000  3CR990B-TX-M [Typhoon2]",
-"		10b7 2000  3CR990BSVR [Typhoon2 Server]",
-"	9905  3CR990-FX-95/97/95 [Typhon Fiber]",
-"		10b7 1101  3CR990-FX-95 [Typhoon Fiber 56-bit]",
-"		10b7 1102  3CR990-FX-97 [Typhoon Fiber 168-bit]",
-"		10b7 2101  3CR990-FX-95 Server [Typhoon Fiber 56-bit]",
-"		10b7 2102  3CR990-FX-97 Server [Typhoon Fiber 168-bit]",
-"	9908  3CR990SVR95 [Typhoon Server 56-bit]",
-"	9909  3CR990SVR97 [Typhoon Server 168-bit]",
-"	990a  3C990SVR [Typhoon Server]",
-"	990b  3C990SVR [Typhoon Server]",
-"10b8  Standard Microsystems Corp [SMC]",
-"	0005  83c170 EPIC/100 Fast Ethernet Adapter",
-"		1055 e000  LANEPIC 10/100 [EVB171Q-PCI]",
-"		1055 e002  LANEPIC 10/100 [EVB171G-PCI]",
-"		10b8 a011  EtherPower II 10/100",
-"		10b8 a014  EtherPower II 10/100",
-"		10b8 a015  EtherPower II 10/100",
-"		10b8 a016  EtherPower II 10/100",
-"		10b8 a017  EtherPower II 10/100",
-"	0006  83c175 EPIC/100 Fast Ethernet Adapter",
-"		1055 e100  LANEPIC Cardbus Fast Ethernet Adapter",
-"		1055 e102  LANEPIC Cardbus Fast Ethernet Adapter",
-"		1055 e300  LANEPIC Cardbus Fast Ethernet Adapter",
-"		1055 e302  LANEPIC Cardbus Fast Ethernet Adapter",
-"		10b8 a012  LANEPIC Cardbus Fast Ethernet Adapter",
-"		13a2 8002  LANEPIC Cardbus Fast Ethernet Adapter",
-"		13a2 8006  LANEPIC Cardbus Fast Ethernet Adapter",
-"	1000  FDC 37c665",
-"	1001  FDC 37C922",
-"	2802  SMC2802W [EZ Connect g]",
-"	a011  83C170QF",
-"	b106  SMC34C90",
-"10b9  ALi Corporation",
-"	0101  CMI8338/C3DX PCI Audio Device",
-"	0111  C-Media CMI8738/C3DX Audio Device (OEM)",
-"		10b9 0111  C-Media CMI8738/C3DX Audio Device (OEM)",
-"	0780  Multi-IO Card",
-"	0782  Multi-IO Card",
-"	1435  M1435",
-"	1445  M1445",
-"	1449  M1449",
-"	1451  M1451",
-"	1461  M1461",
-"	1489  M1489",
-"	1511  M1511 [Aladdin]",
-"	1512  M1512 [Aladdin]",
-"	1513  M1513 [Aladdin]",
-"	1521  M1521 [Aladdin III]",
-"		10b9 1521  ALI M1521 Aladdin III CPU Bridge",
-"	1523  M1523",
-"		10b9 1523  ALI M1523 ISA Bridge",
-"	1531  M1531 [Aladdin IV]",
-"	1533  M1533/M1535 PCI to ISA Bridge [Aladdin IV/V/V+]",
-"		1014 053b  ThinkPad R40e (2684-HVG) PCI to ISA Bridge",
-"		10b9 1533  ALi M1533 Aladdin IV/V ISA Bridge",
-"	1541  M1541",
-"		10b9 1541  ALI M1541 Aladdin V/V+ AGP System Controller",
-"	1543  M1543",
-"	1563  M1563 HyperTransport South Bridge",
-"	1573  PCI to LPC Controller",
-"	1621  M1621",
-"	1631  ALI M1631 PCI North Bridge Aladdin Pro III",
-"	1632  M1632M Northbridge+Trident",
-"	1641  ALI M1641 PCI North Bridge Aladdin Pro IV",
-"	1644  M1644/M1644T Northbridge+Trident",
-"	1646  M1646 Northbridge+Trident",
-"	1647  M1647 Northbridge [MAGiK 1 / MobileMAGiK 1]",
-"	1651  M1651/M1651T Northbridge [Aladdin-Pro 5/5M,Aladdin-Pro 5T/5TM]",
-"	1671  M1671 Super P4 Northbridge [AGP4X,PCI and SDR/DDR]",
-"	1672  M1672 Northbridge [CyberALADDiN-P4]",
-"	1681  M1681 P4 Northbridge [AGP8X,HyperTransport and SDR/DDR]",
-"	1687  M1687 K8 Northbridge [AGP8X and HyperTransport]",
-"	1689  M1689 K8 Northbridge [Super K8 Single Chip]",
-"	1695  M1695 K8 Northbridge [PCI Express and HyperTransport]",
-"	1697  M1697 HTT Host Bridge",
-"	3141  M3141",
-"	3143  M3143",
-"	3145  M3145",
-"	3147  M3147",
-"	3149  M3149",
-"	3151  M3151",
-"	3307  M3307",
-"	3309  M3309",
-"	3323  M3325 Video/Audio Decoder",
-"	5212  M4803",
-"	5215  MS4803",
-"	5217  M5217H",
-"	5219  M5219",
-"	5225  M5225",
-"	5228  M5228 ALi ATA/RAID Controller",
-"	5229  M5229 IDE",
-"		1014 050f  ThinkPad R30",
-"		1014 053d  ThinkPad R40e (2684-HVG) builtin IDE",
-"		103c 0024  Pavilion ze4400 builtin IDE",
-"		1043 8053  A7A266 Motherboard IDE",
-"	5235  M5225",
-"	5237  USB 1.1 Controller",
-"		1014 0540  ThinkPad R40e (2684-HVG) builtin USB",
-"		103c 0024  Pavilion ze4400 builtin USB",
-"		104d 810f  VAIO PCG-U1 USB/OHCI Revision 1.0",
-"	5239  USB 2.0 Controller",
-"	5243  M1541 PCI to AGP Controller",
-"	5246  AGP8X Controller",
-"	5247  PCI to AGP Controller",
-"	5249  M5249 HTT to PCI Bridge",
-"	524b  PCI Express Root Port",
-"	524c  PCI Express Root Port",
-"	524d  PCI Express Root Port",
-"	524e  PCI Express Root Port",
-"	5251  M5251 P1394 OHCI 1.0 Controller",
-"	5253  M5253 P1394 OHCI 1.1 Controller",
-"	5261  M5261 Ethernet Controller",
-"	5263  M5263 Ethernet Controller",
-"	5281  ALi M5281 Serial ATA / RAID Host Controller",
-"	5287  ULi 5287 SATA",
-"	5288  ULi M5288 SATA",
-"	5289  ULi 5289 SATA",
-"	5450  Lucent Technologies Soft Modem AMR",
-"	5451  M5451 PCI AC-Link Controller Audio Device",
-"		1014 0506  ThinkPad R30",
-"		1014 053e  ThinkPad R40e (2684-HVG) builtin Audio",
-"		103c 0024  Pavilion ze4400 builtin Audio",
-"		10b9 5451  HP Compaq nc4010 (DY885AA#ABN)",
-"	5453  M5453 PCI AC-Link Controller Modem Device",
-"	5455  M5455 PCI AC-Link Controller Audio Device",
-"	5457  M5457 AC'97 Modem Controller",
-"		1014 0535  ThinkPad R40e (2684-HVG) builtin modem",
-"		103c 0024  Pavilion ze4400 builtin Modem Device",
-"	5459  SmartLink SmartPCI561 56K Modem",
-"	545a  SmartLink SmartPCI563 56K Modem",
-"	5461  High Definition Audio/AC'97 Host Controller",
-"	5471  M5471 Memory Stick Controller",
-"	5473  M5473 SD-MMC Controller",
-"	7101  M7101 Power Management Controller [PMU]",
-"		1014 0510  ThinkPad R30",
-"		1014 053c  ThinkPad R40e (2684-HVG) Power Management Controller",
-"		103c 0024  Pavilion ze4400",
-"10ba  Mitsubishi Electric Corp.",
-"	0301  AccelGraphics AccelECLIPSE",
-"	0304  AccelGALAXY A2100 [OEM Evans & Sutherland]",
-"	0308  Tornado 3000 [OEM Evans & Sutherland]",
-"	1002  VG500 [VolumePro Volume Rendering Accelerator]",
-"10bb  Dapha Electronics Corporation",
-"10bc  Advanced Logic Research",
-"10bd  Surecom Technology",
-"	0e34  NE-34",
-"10be  Tseng Labs International Co.",
-"10bf  Most Inc",
-"10c0  Boca Research Inc.",
-"10c1  ICM Co., Ltd.",
-"10c2  Auspex Systems Inc.",
-"10c3  Samsung Semiconductors, Inc.",
-"	1100  Smartether100 SC1100 LAN Adapter (i82557B)",
-"10c4  Award Software International Inc.",
-"10c5  Xerox Corporation",
-"10c6  Rambus Inc.",
-"10c7  Media Vision",
-"10c8  Neomagic Corporation",
-"	0001  NM2070 [MagicGraph 128]",
-"	0002  NM2090 [MagicGraph 128V]",
-"	0003  NM2093 [MagicGraph 128ZV]",
-"	0004  NM2160 [MagicGraph 128XD]",
-"		1014 00ba  MagicGraph 128XD",
-"		1025 1007  MagicGraph 128XD",
-"		1028 0074  MagicGraph 128XD",
-"		1028 0075  MagicGraph 128XD",
-"		1028 007d  MagicGraph 128XD",
-"		1028 007e  MagicGraph 128XD",
-"		1033 802f  MagicGraph 128XD",
-"		104d 801b  MagicGraph 128XD",
-"		104d 802f  MagicGraph 128XD",
-"		104d 830b  MagicGraph 128XD",
-"		10ba 0e00  MagicGraph 128XD",
-"		10c8 0004  MagicGraph 128XD",
-"		10cf 1029  MagicGraph 128XD",
-"		10f7 8308  MagicGraph 128XD",
-"		10f7 8309  MagicGraph 128XD",
-"		10f7 830b  MagicGraph 128XD",
-"		10f7 830d  MagicGraph 128XD",
-"		10f7 8312  MagicGraph 128XD",
-"	0005  NM2200 [MagicGraph 256AV]",
-"		1014 00dd  ThinkPad 570",
-"		1028 0088  Latitude CPi A",
-"	0006  NM2360 [MagicMedia 256ZX]",
-"	0016  NM2380 [MagicMedia 256XL+]",
-"		10c8 0016  MagicMedia 256XL+",
-"	0025  NM2230 [MagicGraph 256AV+]",
-"	0083  NM2093 [MagicGraph 128ZV+]",
-"	8005  NM2200 [MagicMedia 256AV Audio]",
-"		0e11 b0d1  MagicMedia 256AV Audio Device on Discovery",
-"		0e11 b126  MagicMedia 256AV Audio Device on Durango",
-"		1014 00dd  MagicMedia 256AV Audio Device on BlackTip Thinkpad",
-"		1025 1003  MagicMedia 256AV Audio Device on TravelMate 720",
-"		1028 0088  Latitude CPi A",
-"		1028 008f  MagicMedia 256AV Audio Device on Colorado Inspiron",
-"		103c 0007  MagicMedia 256AV Audio Device on Voyager II",
-"		103c 0008  MagicMedia 256AV Audio Device on Voyager III",
-"		103c 000d  MagicMedia 256AV Audio Device on Omnibook 900",
-"		10c8 8005  MagicMedia 256AV Audio Device on FireAnt",
-"		110a 8005  MagicMedia 256AV Audio Device",
-"		14c0 0004  MagicMedia 256AV Audio Device",
-"	8006  NM2360 [MagicMedia 256ZX Audio]",
-"	8016  NM2380 [MagicMedia 256XL+ Audio]",
-"10c9  Dataexpert Corporation",
-"10ca  Fujitsu Microelectr., Inc.",
-"10cb  Omron Corporation",
-"10cc  Mai Logic Incorporated",
-"	0660  Articia S Host Bridge",
-"	0661  Articia S PCI Bridge",
-"10cd  Advanced System Products, Inc",
-"	1100  ASC1100",
-"	1200  ASC1200 [(abp940) Fast SCSI-II]",
-"	1300  ABP940-U / ABP960-U",
-"		10cd 1310  ASC1300 SCSI Adapter",
-"	2300  ABP940-UW",
-"	2500  ABP940-U2W",
-"10ce  Radius",
-"10cf  Fujitsu Limited.",
-"	2001  mb86605",
-"10d1  FuturePlus Systems Corp.",
-"10d2  Molex Incorporated",
-"10d3  Jabil Circuit Inc",
-"10d4  Hualon Microelectronics",
-"10d5  Autologic Inc.",
-"10d6  Cetia",
-"10d7  BCM Advanced Research",
-"10d8  Advanced Peripherals Labs",
-"10d9  Macronix, Inc. [MXIC]",
-"	0431  MX98715",
-"	0512  MX98713",
-"	0531  MX987x5",
-"		1186 1200  DFE-540TX ProFAST 10/100 Adapter",
-"	8625  MX86250",
-"	8626  Macronix MX86251 + 3Dfx Voodoo Rush",
-"	8888  MX86200",
-"10da  Compaq IPG-Austin",
-"	0508  TC4048 Token Ring 4/16",
-"	3390  Tl3c3x9",
-"10db  Rohm LSI Systems, Inc.",
-"10dc  CERN/ECP/EDU",
-"	0001  STAR/RD24 SCI-PCI (PMC)",
-"	0002  TAR/RD24 SCI-PCI (PMC)",
-"	0021  HIPPI destination",
-"	0022  HIPPI source",
-"	10dc  ATT2C15-3 FPGA",
-"10dd  Evans & Sutherland",
-"	0100  Lightning 1200",
-"10de  nVidia Corporation",
-"	0008  NV1 [EDGE 3D]",
-"	0009  NV1 [EDGE 3D]",
-"	0010  NV2 [Mutara V08]",
-"	0020  NV4 [RIVA TNT]",
-"		1043 0200  V3400 TNT",
-"		1048 0c18  Erazor II SGRAM",
-"		1048 0c19  Erazor II",
-"		1048 0c1b  Erazor II",
-"		1048 0c1c  Erazor II",
-"		1092 0550  Viper V550",
-"		1092 0552  Viper V550",
-"		1092 4804  Viper V550",
-"		1092 4808  Viper V550",
-"		1092 4810  Viper V550",
-"		1092 4812  Viper V550",
-"		1092 4815  Viper V550",
-"		1092 4820  Viper V550 with TV out",
-"		1092 4822  Viper V550",
-"		1092 4904  Viper V550",
-"		1092 4914  Viper V550",
-"		1092 8225  Viper V550",
-"		10b4 273d  Velocity 4400",
-"		10b4 273e  Velocity 4400",
-"		10b4 2740  Velocity 4400",
-"		10de 0020  Riva TNT",
-"		1102 1015  Graphics Blaster CT6710",
-"		1102 1016  Graphics Blaster RIVA TNT",
-"	0028  NV5 [RIVA TNT2/TNT2 Pro]",
-"		1043 0200  AGP-V3800 SGRAM",
-"		1043 0201  AGP-V3800 SDRAM",
-"		1043 0205  PCI-V3800",
-"		1043 4000  AGP-V3800PRO",
-"		1048 0c21  Synergy II",
-"		1048 0c28  Erazor III",
-"		1048 0c29  Erazor III",
-"		1048 0c2a  Erazor III",
-"		1048 0c2b  Erazor III",
-"		1048 0c31  Erazor III Pro",
-"		1048 0c32  Erazor III Pro",
-"		1048 0c33  Erazor III Pro",
-"		1048 0c34  Erazor III Pro",
-"		107d 2134  WinFast 3D S320 II + TV-Out",
-"		1092 4804  Viper V770",
-"		1092 4a00  Viper V770",
-"		1092 4a02  Viper V770 Ultra",
-"		1092 5a00  RIVA TNT2/TNT2 Pro",
-"		1092 6a02  Viper V770 Ultra",
-"		1092 7a02  Viper V770 Ultra",
-"		10de 0005  RIVA TNT2 Pro",
-"		10de 000f  Compaq NVIDIA TNT2 Pro",
-"		1102 1020  3D Blaster RIVA TNT2",
-"		1102 1026  3D Blaster RIVA TNT2 Digital",
-"		14af 5810  Maxi Gamer Xentor",
-"	0029  NV5 [RIVA TNT2 Ultra]",
-"		1043 0200  AGP-V3800 Deluxe",
-"		1043 0201  AGP-V3800 Ultra SDRAM",
-"		1043 0205  PCI-V3800 Ultra",
-"		1048 0c2e  Erazor III Ultra",
-"		1048 0c2f  Erazor III Ultra",
-"		1048 0c30  Erazor III Ultra",
-"		1102 1021  3D Blaster RIVA TNT2 Ultra",
-"		1102 1029  3D Blaster RIVA TNT2 Ultra",
-"		1102 102f  3D Blaster RIVA TNT2 Ultra",
-"		14af 5820  Maxi Gamer Xentor 32",
-"	002a  NV5 [Riva TnT2]",
-"	002b  NV5 [Riva TnT2]",
-"	002c  NV6 [Vanta/Vanta LT]",
-"		1043 0200  AGP-V3800 Combat SDRAM",
-"		1043 0201  AGP-V3800 Combat",
-"		1048 0c20  TNT2 Vanta",
-"		1048 0c21  TNT2 Vanta",
-"		1092 6820  Viper V730",
-"		1102 1031  CT6938 VANTA 8MB",
-"		1102 1034  CT6894 VANTA 16MB",
-"		14af 5008  Maxi Gamer Phoenix 2",
-"	002d  NV5M64 [RIVA TNT2 Model 64/Model 64 Pro]",
-"		1043 0200  AGP-V3800M",
-"		1043 0201  AGP-V3800M",
-"		1048 0c3a  Erazor III LT",
-"		1048 0c3b  Erazor III LT",
-"		10de 001e  M64 AGP4x",
-"		1102 1023  CT6892 RIVA TNT2 Value",
-"		1102 1024  CT6932 RIVA TNT2 Value 32Mb",
-"		1102 102c  CT6931 RIVA TNT2 Value [Jumper]",
-"		1462 8808  MSI-8808",
-"		1554 1041  Pixelview RIVA TNT2 M64",
-"		1569 002d  Palit Microsystems Daytona TNT2 M64",
-"	002e  NV6 [Vanta]",
-"	002f  NV6 [Vanta]",
-"	0034  MCP04 SMBus",
-"	0035  MCP04 IDE",
-"	0036  MCP04 Serial ATA Controller",
-"	0037  MCP04 Ethernet Controller",
-"	0038  MCP04 Ethernet Controller",
-"	003a  MCP04 AC'97 Audio Controller",
-"	003b  MCP04 USB Controller",
-"	003c  MCP04 USB Controller",
-"	003d  MCP04 PCI Bridge",
-"	003e  MCP04 Serial ATA Controller",
-"	0040  NV40 [GeForce 6800 Ultra]",
-"	0041  NV40 [GeForce 6800]",
-"		1043 817b  V9999 Gamer Edition",
-"	0042  NV40.2 [GeForce 6800 LE]",
-"	0043  NV40.3",
-"	0044  NV40 [GeForce 6800 XT]",
-"	0045  NV40 [GeForce 6800 GT]",
-"	0047  NV40 [GeForce 6800 GS]",
-"		1682 2109  GeForce 6800 GS",
-"	0049  NV40GL",
-"	004e  NV40GL [Quadro FX 4000]",
-"	0050  CK804 ISA Bridge",
-"		1043 815a  K8N4-E Mainboard",
-"		1458 0c11  GA-K8N Ultra-9 Mainboard",
-"		1462 7100  MSI K8N Diamond",
-"	0051  CK804 ISA Bridge",
-"	0052  CK804 SMBus",
-"		1043 815a  K8N4-E Mainboard",
-"		1458 0c11  GA-K8N Ultra-9 Mainboard",
-"		1462 7100  MSI K8N Diamond",
-"	0053  CK804 IDE",
-"		1043 815a  K8N4-E Mainboard",
-"		1458 5002  GA-K8N Ultra-9 Mainboard",
-"		1462 7100  MSI K8N Diamond",
-"	0054  CK804 Serial ATA Controller",
-"		1458 b003  GA-K8N Ultra-9 Mainboard",
-"		1462 7100  MSI K8N Diamond",
-"	0055  CK804 Serial ATA Controller",
-"		1043 815a  K8N4-E Mainboard",
-"		1458 b003  GA-K8N Ultra-9 Mainboard",
-"	0056  CK804 Ethernet Controller",
-"	0057  CK804 Ethernet Controller",
-"		1043 8141  K8N4-E Mainboard",
-"		1458 e000  GA-K8N Ultra-9 Mainboard",
-"		1462 7100  MSI K8N Diamond",
-"	0058  CK804 AC'97 Modem",
-"	0059  CK804 AC'97 Audio Controller",
-"		1043 812a  K8N4-E Mainboard",
-"	005a  CK804 USB Controller",
-"		1043 815a  K8N4-E Mainboard",
-"		1458 5004  GA-K8N Ultra-9 Mainboard",
-"		1462 7100  MSI K8N Diamond",
-"	005b  CK804 USB Controller",
-"		1043 815a  K8N4-E Mainboard",
-"		1458 5004  GA-K8N Ultra-9 Mainboard",
-"		1462 7100  MSI K8N Diamond",
-"	005c  CK804 PCI Bridge",
-"	005d  CK804 PCIE Bridge",
-"	005e  CK804 Memory Controller",
-"		10f1 2891  Thunder K8SRE Mainboard",
-"		1458 5000  GA-K8N Ultra-9 Mainboard",
-"		1462 7100  MSI K8N Diamond",
-"	005f  CK804 Memory Controller",
-"	0060  nForce2 ISA Bridge",
-"		1043 80ad  A7N8X Mainboard",
-"		a0a0 03ba  UK79G-1394 motherboard",
-"	0064  nForce2 SMBus (MCP)",
-"		a0a0 03bb  UK79G-1394 motherboard",
-"	0065  nForce2 IDE",
-"		a0a0 03b2  UK79G-1394 motherboard",
-"	0066  nForce2 Ethernet Controller",
-"		1043 80a7  A7N8X Mainboard onboard nForce2 Ethernet",
-"	0067  nForce2 USB Controller",
-"		1043 0c11  A7N8X Mainboard",
-"	0068  nForce2 USB Controller",
-"		1043 0c11  A7N8X Mainboard",
-"		a0a0 03b4  UK79G-1394 motherboard",
-"	006a  nForce2 AC97 Audio Controler (MCP)",
-"		a0a0 0304  UK79G-1394 motherboard",
-"	006b  nForce Audio Processing Unit",
-"		10de 006b  nForce2 MCP Audio Processing Unit",
-"	006c  nForce2 External PCI Bridge",
-"	006d  nForce2 PCI Bridge",
-"	006e  nForce2 FireWire (IEEE 1394) Controller",
-"		a0a0 0306  UK79G-1394 motherboard",
-"	0080  MCP2A ISA bridge",
-"		147b 1c09  NV7 Motherboard",
-"	0084  MCP2A SMBus",
-"		147b 1c09  NV7 Motherboard",
-"	0085  MCP2A IDE",
-"		147b 1c09  NV7 Motherboard",
-"	0086  MCP2A Ethernet Controller",
-"	0087  MCP2A USB Controller",
-"		147b 1c09  NV7 Motherboard",
-"	0088  MCP2A USB Controller",
-"		147b 1c09  NV7 Motherboard",
-"	008a  MCP2S AC'97 Audio Controller",
-"		147b 1c09  NV7 Motherboard",
-"	008b  MCP2A PCI Bridge",
-"	008c  MCP2A Ethernet Controller",
-"	008e  nForce2 Serial ATA Controller",
-"	0090  G70 [GeForce 7800 GTX]",
-"	0091  G70 [GeForce 7800 GTX]",
-"	0092  G70 [GeForce 7800 GT]",
-"	0093  G70 [GeForce 7800 GS]",
-"	0098  GeForce Go 7800",
-"	0099  GE Force Go 7800 GTX",
-"	009d  G70GL [Quadro FX4500]",
-"	00a0  NV5 [Aladdin TNT2]",
-"		14af 5810  Maxi Gamer Xentor",
-"	00c0  NV41 [GeForce 6800 GS]",
-"	00c1  NV41.1 [GeForce 6800]",
-"	00c2  NV41.2 [GeForce 6800 LE]",
-"	00c3  NV42 [Geforce 6800 XT]",
-"	00c8  NV41.8 [GeForce Go 6800]",
-"	00c9  NV41.9 [GeForce Go 6800 Ultra]",
-"	00cc  NV41 [Quadro FX Go1400]",
-"	00cd  NV41 [Quadro FX 3450/4000 SDI]",
-"	00ce  NV41GL [Quadro FX 1400]",
-"	00d0  nForce3 LPC Bridge",
-"	00d1  nForce3 Host Bridge",
-"	00d2  nForce3 AGP Bridge",
-"	00d3  CK804 Memory Controller",
-"	00d4  nForce3 SMBus",
-"	00d5  nForce3 IDE",
-"	00d6  nForce3 Ethernet",
-"	00d7  nForce3 USB 1.1",
-"	00d8  nForce3 USB 2.0",
-"	00d9  nForce3 Audio",
-"	00da  nForce3 Audio",
-"	00dd  nForce3 PCI Bridge",
-"	00df  CK8S Ethernet Controller",
-"		147b 1c0b  NF8 Mainboard",
-"	00e0  nForce3 250Gb LPC Bridge",
-"		147b 1c0b  NF8 Mainboard",
-"	00e1  nForce3 250Gb Host Bridge",
-"		147b 1c0b  NF8 Mainboard",
-"	00e2  nForce3 250Gb AGP Host to PCI Bridge",
-"	00e3  CK8S Serial ATA Controller (v2.5)",
-"		147b 1c0b  NF8 Mainboard",
-"	00e4  nForce 250Gb PCI System Management",
-"		147b 1c0b  NF8 Mainboard",
-"	00e5  CK8S Parallel ATA Controller (v2.5)",
-"		147b 1c0b  NF8 Mainboard",
-"	00e6  CK8S Ethernet Controller",
-"	00e7  CK8S USB Controller",
-"		147b 1c0b  NF8 Mainboard",
-"	00e8  nForce3 EHCI USB 2.0 Controller",
-"		147b 1c0b  NF8 Mainboard",
-"	00ea  nForce3 250Gb AC'97 Audio Controller",
-"		147b 1c0b  NF8 Mainboard",
-"	00ed  nForce3 250Gb PCI-to-PCI Bridge",
-"	00ee  CK8S Serial ATA Controller (v2.5)",
-"	00f0  NV40 [GeForce 6800/GeForce 6800 Ultra]",
-"	00f1  NV43 [GeForce 6600/GeForce 6600 GT]",
-"		1043 81a6  N6600GT TD 128M AGP",
-"		1682 2119  GeForce 6600 GT AGP 128MB DDR3 DUAL DVI TV",
-"	00f2  NV43 [GeForce 6600/GeForce 6600 GT]",
-"		1682 211c  GeForce 6600 256MB DDR DUAL DVI TV",
-"	00f3  NV43 [GeForce 6200]",
-"	00f4  NV43 [GeForce 6600 LE]",
-"	00f5  G70 [GeForce 7800 GS]",
-"	00f6  NV43 [GeForce 6600 GS]",
-"	00f8  NV45GL [Quadro FX 3400/4400]",
-"	00f9  NV40 [GeForce 6800 Ultra/GeForce 6800 GT]",
-"		1682 2120  GEFORCE 6800 GT PCI-E",
-"	00fa  NV36 [GeForce PCX 5750]",
-"	00fb  NV35 [GeForce PCX 5900]",
-"	00fc  NV37GL [Quadro FX 330/GeForce PCX 5300]",
-"	00fd  NV37GL [Quadro FX 330/Quadro NVS280]",
-"	00fe  NV38GL [Quadro FX 1300]",
-"	00ff  NV18 [GeForce PCX 4300]",
-"	0100  NV10 [GeForce 256 SDR]",
-"		1043 0200  AGP-V6600 SGRAM",
-"		1043 0201  AGP-V6600 SDRAM",
-"		1043 4008  AGP-V6600 SGRAM",
-"		1043 4009  AGP-V6600 SDRAM",
-"		1048 0c41  Erazor X",
-"		1048 0c43  ERAZOR X PCI",
-"		1048 0c48  Synergy Force",
-"		1102 102d  CT6941 GeForce 256",
-"		14af 5022  3D Prophet SE",
-"	0101  NV10DDR [GeForce 256 DDR]",
-"		1043 0202  AGP-V6800 DDR",
-"		1043 400a  AGP-V6800 DDR SGRAM",
-"		1043 400b  AGP-V6800 DDR SDRAM",
-"		1048 0c42  Erazor X",
-"		107d 2822  WinFast GeForce 256",
-"		1102 102e  CT6971 GeForce 256 DDR",
-"		14af 5021  3D Prophet DDR-DVI",
-"	0103  NV10GL [Quadro]",
-"		1048 0c40  GLoria II-64",
-"		1048 0c44  GLoria II",
-"		1048 0c45  GLoria II",
-"		1048 0c4a  GLoria II-64 Pro",
-"		1048 0c4b  GLoria II-64 Pro DVII",
-"	0110  NV11 [GeForce2 MX/MX 400]",
-"		1043 4015  AGP-V7100 Pro",
-"		1043 4031  V7100 Pro with TV output",
-"		1048 0c60  Gladiac MX",
-"		1048 0c61  Gladiac 511PCI",
-"		1048 0c63  Gladiac 511TV-OUT 32MB",
-"		1048 0c64  Gladiac 511TV-OUT 64MB",
-"		1048 0c65  Gladiac 511TWIN",
-"		1048 0c66  Gladiac 311",
-"		10de 0091  Dell OEM GeForce 2 MX 400",
-"		10de 00a1  Apple OEM GeForce2 MX",
-"		1462 8817  MSI GeForce2 MX400 Pro32S [MS-8817]",
-"		14af 7102  3D Prophet II MX",
-"		14af 7103  3D Prophet II MX Dual-Display",
-"	0111  NV11DDR [GeForce2 MX 100 DDR/200 DDR]",
-"	0112  NV11 [GeForce2 Go]",
-"	0113  NV11GL [Quadro2 MXR/EX/Go]",
-"	0140  NV43 [GeForce 6600 GT]",
-"	0141  NV43 [GeForce 6600]",
-"		1458 3124  GV-NX66128DP Turbo Force Edition",
-"	0142  NV43 [GeForce 6600 PCIe]",
-"	0144  NV43 [GeForce Go 6600]",
-"	0145  NV43 [GeForce 6610 XL]",
-"	0146  NV43 [Geforce Go 6600TE/6200TE]",
-"	0148  NV43 [GeForce Go 6600]",
-"	0149  NV43 [GeForce Go 6600 GT]",
-"	014a  Quadro NVS 440",
-"	014c  Quadro FX 550",
-"	014e  NV43GL [Quadro FX 540]",
-"	014f  NV43 [GeForce 6200]",
-"	0150  NV15 [GeForce2 GTS/Pro]",
-"		1043 4016  V7700 AGP Video Card",
-"		1048 0c50  Gladiac",
-"		1048 0c52  Gladiac-64",
-"		107d 2840  WinFast GeForce2 GTS with TV output",
-"		107d 2842  WinFast GeForce 2 Pro",
-"		1462 8831  Creative GeForce2 Pro",
-"	0151  NV15DDR [GeForce2 Ti]",
-"		1043 405f  V7700Ti",
-"		1462 5506  Creative 3D Blaster Geforce2 Titanium",
-"	0152  NV15BR [GeForce2 Ultra, Bladerunner]",
-"		1048 0c56  GLADIAC Ultra",
-"	0153  NV15GL [Quadro2 Pro]",
-"	0161  GeForce 6200 TurboCache(TM)",
-"	0162  NV43 [GeForce 6200 SE]",
-"	0164  NV44 [GeForce Go 6200]",
-"	0165  NV44 [Quadro NVS 285]",
-"	0166  NV43 [GeForce Go 6400]",
-"	0167  GeForce Go 6200 TurboCache",
-"	0168  NV43 [GeForce Go 6200 TurboCache]",
-"	0170  NV17 [GeForce4 MX 460]",
-"	0171  NV17 [GeForce4 MX 440]",
-"		10b0 0002  Gainward Pro/600 TV",
-"		10de 0008  Apple OEM GeForce4 MX 440",
-"		1462 8661  G4MX440-VTP",
-"		1462 8730  MX440SES-T (MS-8873)",
-"		1462 8852  GeForce4 MX440 PCI",
-"		147b 8f00  Abit Siluro GeForce4MX440",
-"	0172  NV17 [GeForce4 MX 420]",
-"	0173  NV17 [GeForce4 MX 440-SE]",
-"	0174  NV17 [GeForce4 440 Go]",
-"	0175  NV17 [GeForce4 420 Go]",
-"	0176  NV17 [GeForce4 420 Go 32M]",
-"		4c53 1090  Cx9 / Vx9 mainboard",
-"	0177  NV17 [GeForce4 460 Go]",
-"	0178  NV17GL [Quadro4 550 XGL]",
-"	0179  NV17 [GeForce4 420 Go 32M]",
-"		10de 0179  GeForce4 MX (Mac)",
-"	017a  NV17GL [Quadro4 200/400 NVS]",
-"	017b  NV17GL [Quadro4 550 XGL]",
-"	017c  NV17GL [Quadro4 500 GoGL]",
-"	017d  NV17 [GeForce4 410 Go 16M]",
-"	0181  NV18 [GeForce4 MX 440 AGP 8x]",
-"		1043 806f  V9180 Magic",
-"		1462 8880  MS-StarForce GeForce4 MX 440 with AGP8X",
-"		1462 8900  MS-8890 GeForce 4 MX440 AGP8X",
-"		1462 9350  MSI Geforce4 MX T8X with AGP8X",
-"		147b 8f0d  Siluro GF4 MX-8X",
-"	0182  NV18 [GeForce4 MX 440SE AGP 8x]",
-"	0183  NV18 [GeForce4 MX 420 AGP 8x]",
-"	0185  NV18 [GeForce4 MX 4000 AGP 8x]",
-"	0186  NV18M [GeForce4 448 Go]",
-"	0187  NV18M [GeForce4 488 Go]",
-"	0188  NV18GL [Quadro4 580 XGL]",
-"	018a  NV18GL [Quadro4 NVS AGP 8x]",
-"	018b  NV18GL [Quadro4 380 XGL]",
-"	018c  Quadro NVS 50 PCI",
-"	018d  NV18M [GeForce4 448 Go]",
-"	01a0  NVCrush11 [GeForce2 MX Integrated Graphics]",
-"	01a4  nForce CPU bridge",
-"	01ab  nForce 420 Memory Controller (DDR)",
-"	01ac  nForce 220/420 Memory Controller",
-"	01ad  nForce 220/420 Memory Controller",
-"	01b0  nForce Audio",
-"	01b1  nForce Audio",
-"	01b2  nForce ISA Bridge",
-"	01b4  nForce PCI System Management",
-"	01b7  nForce AGP to PCI Bridge",
-"	01b8  nForce PCI-to-PCI bridge",
-"	01bc  nForce IDE",
-"	01c1  nForce AC'97 Modem Controller",
-"	01c2  nForce USB Controller",
-"	01c3  nForce Ethernet Controller",
-"	01d1  GeForce 7300 LE",
-"	01d7  Quadro NVS 110M / GeForce Go 7300",
-"	01d8  GeForce Go 7400",
-"	01da  Quadro NVS 110M",
-"	01de  Quadro FX 350",
-"		10de 01dc  Quadro  FX Go350M",
-"	01df  GeForce 7300 GS",
-"	01e0  nForce2 AGP (different version\?)",
-"		147b 1c09  NV7 Motherboard",
-"	01e8  nForce2 AGP",
-"	01ea  nForce2 Memory Controller 0",
-"		a0a0 03b9  UK79G-1394 motherboard",
-"	01eb  nForce2 Memory Controller 1",
-"		a0a0 03b9  UK79G-1394 motherboard",
-"	01ec  nForce2 Memory Controller 2",
-"		a0a0 03b9  UK79G-1394 motherboard",
-"	01ed  nForce2 Memory Controller 3",
-"		a0a0 03b9  UK79G-1394 motherboard",
-"	01ee  nForce2 Memory Controller 4",
-"		a0a0 03b9  UK79G-1394 motherboard",
-"	01ef  nForce2 Memory Controller 5",
-"		a0a0 03b9  UK79G-1394 motherboard",
-"	01f0  NV18 [GeForce4 MX - nForce GPU]",
-"		a0a0 03b5  UK79G-1394 motherboard",
-"	0200  NV20 [GeForce3]",
-"		1043 402f  AGP-V8200 DDR",
-"		1048 0c70  GLADIAC 920",
-"	0201  NV20 [GeForce3 Ti 200]",
-"	0202  NV20 [GeForce3 Ti 500]",
-"		1043 405b  V8200 T5",
-"		1545 002f  Xtasy 6964",
-"	0203  NV20DCC [Quadro DCC]",
-"	0211  NV40 [GeForce 6800]",
-"	0212  NV40 [GeForce 6800 LE]",
-"	0215  NV40 [GeForce 6800 GT]",
-"	0218  NV40 [GeForce 6800 XT]",
-"	0221  NV43 [GeForce 6200]",
-"	0240  C51PV [GeForce 6150]",
-"		1462 7207  K8NGM2 series",
-"	0241  C51 PCI Express Bridge",
-"	0242  C51G [GeForce 6100]",
-"	0243  C51 PCI Express Bridge",
-"	0244  C51 PCI Express Bridge",
-"	0245  C51 PCI Express Bridge",
-"	0246  C51 PCI Express Bridge",
-"	0247  C51 PCI Express Bridge",
-"	0248  C51 PCI Express Bridge",
-"	0249  C51 PCI Express Bridge",
-"	024a  C51 PCI Express Bridge",
-"	024b  C51 PCI Express Bridge",
-"	024c  C51 PCI Express Bridge",
-"	024d  C51 PCI Express Bridge",
-"	024e  C51 PCI Express Bridge",
-"	024f  C51 PCI Express Bridge",
-"	0250  NV25 [GeForce4 Ti 4600]",
-"	0251  NV25 [GeForce4 Ti 4400]",
-"		1043 8023  v8440 GeForce 4 Ti4400",
-"	0252  NV25 [GeForce4 Ti]",
-"	0253  NV25 [GeForce4 Ti 4200]",
-"		107d 2896  WinFast A250 LE TD (Dual VGA/TV-out/DVI)",
-"		147b 8f09  Siluro (Dual VGA/TV-out/DVI)",
-"	0258  NV25GL [Quadro4 900 XGL]",
-"	0259  NV25GL [Quadro4 750 XGL]",
-"	025b  NV25GL [Quadro4 700 XGL]",
-"	0260  MCP51 LPC Bridge",
-"		1462 7207  K8NGM2 series",
-"	0261  MCP51 LPC Bridge",
-"	0262  MCP51 LPC Bridge",
-"	0263  MCP51 LPC Bridge",
-"	0264  MCP51 SMBus",
-"		1462 7207  K8NGM2 series",
-"	0265  MCP51 IDE",
-"		1462 7207  K8NGM2 series",
-"	0266  MCP51 Serial ATA Controller",
-"		1462 7207  K8NGM2 series",
-"	0267  MCP51 Serial ATA Controller",
-"		1462 7207  K8NGM2 series",
-"	0268  MCP51 Ethernet Controller",
-"	0269  MCP51 Ethernet Controller",
-"		1462 7207  K8NGM2 series",
-"	026a  MCP51 MCI",
-"	026b  MCP51 AC97 Audio Controller",
-"	026c  MCP51 High Definition Audio",
-"		1462 7207  K8NGM2 series",
-"	026d  MCP51 USB Controller",
-"		1462 7207  K8NGM2 series",
-"	026e  MCP51 USB Controller",
-"		1462 7207  K8NGM2 series",
-"	026f  MCP51 PCI Bridge",
-"	0270  MCP51 Host Bridge",
-"		1462 7207  K8NGM2 series",
-"	0271  MCP51 PMU",
-"	0272  MCP51 Memory Controller 0",
-"	027e  C51 Memory Controller 2",
-"		1462 7207  K8NGM2 series",
-"	027f  C51 Memory Controller 3",
-"		1462 7207  K8NGM2 series",
-"	0280  NV28 [GeForce4 Ti 4800]",
-"	0281  NV28 [GeForce4 Ti 4200 AGP 8x]",
-"	0282  NV28 [GeForce4 Ti 4800 SE]",
-"	0286  NV28 [GeForce4 Ti 4200 Go AGP 8x]",
-"	0288  NV28GL [Quadro4 980 XGL]",
-"	0289  NV28GL [Quadro4 780 XGL]",
-"	028c  NV28GLM [Quadro4 700 GoGL]",
-"	0290  GeForce 7900 GTX",
-"	0291  GeForce 7900 GT",
-"	029a  G71 [Quadro FX 2500M]",
-"	029b  G71 [Quadro FX 1500M]",
-"	029c  Quadro FX 5500",
-"	029d  Quadro FX 3500",
-"	029e  Quadro FX 1500",
-"	02a0  NV2A [XGPU]",
-"	02e1  GeForce 7600 GS",
-"	02f0  C51 Host Bridge",
-"		1462 7207  K8NGM2 series",
-"	02f1  C51 Host Bridge",
-"	02f2  C51 Host Bridge",
-"	02f3  C51 Host Bridge",
-"	02f4  C51 Host Bridge",
-"	02f5  C51 Host Bridge",
-"	02f6  C51 Host Bridge",
-"	02f7  C51 Host Bridge",
-"	02f8  C51 Memory Controller 5",
-"		1462 7207  K8NGM2 series",
-"	02f9  C51 Memory Controller 4",
-"		1462 7207  K8NGM2 series",
-"	02fa  C51 Memory Controller 0",
-"		1462 7207  K8NGM2 series",
-"	02fb  C51 PCI Express Bridge",
-"	02fc  C51 PCI Express Bridge",
-"	02fd  C51 PCI Express Bridge",
-"	02fe  C51 Memory Controller 1",
-"		1462 7207  K8NGM2 series",
-"	02ff  C51 Host Bridge",
-"		1462 7207  K8NGM2 series",
-"	0300  NV30 [GeForce FX]",
-"	0301  NV30 [GeForce FX 5800 Ultra]",
-"	0302  NV30 [GeForce FX 5800]",
-"	0308  NV30GL [Quadro FX 2000]",
-"	0309  NV30GL [Quadro FX 1000]",
-"	0311  NV31 [GeForce FX 5600 Ultra]",
-"	0312  NV31 [GeForce FX 5600]",
-"	0313  NV31",
-"	0314  NV31 [GeForce FX 5600XT]",
-"		1043 814a  V9560XT/TD",
-"	0316  NV31M",
-"	0317  NV31M Pro",
-"	031a  NV31M [GeForce FX Go5600]",
-"	031b  NV31M [GeForce FX Go5650]",
-"	031c  NVIDIA Quadro FX Go700",
-"	031d  NV31GLM",
-"	031e  NV31GLM Pro",
-"	031f  NV31GLM Pro",
-"	0320  NV34 [GeForce FX 5200]",
-"	0321  NV34 [GeForce FX 5200 Ultra]",
-"	0322  NV34 [GeForce FX 5200]",
-"		1462 9171  MS-8917 (FX5200-T128)",
-"		1462 9360  MS-8936 (FX5200-T128)",
-"	0323  NV34 [GeForce FX 5200LE]",
-"	0324  NV34M [GeForce FX Go5200]",
-"		1028 0196  Inspiron 5160",
-"		1071 8160  MIM2000",
-"	0325  NV34M [GeForce FX Go5250]",
-"	0326  NV34 [GeForce FX 5500]",
-"	0327  NV34 [GeForce FX 5100]",
-"	0328  NV34M [GeForce FX Go5200 32M/64M]",
-"	0329  NV34M [GeForce FX Go5200]",
-"	032a  NV34GL [Quadro NVS 280 PCI]",
-"	032b  NV34GL [Quadro FX 500/600 PCI]",
-"	032c  NV34GLM [GeForce FX Go 5300]",
-"	032d  NV34 [GeForce FX Go5100]",
-"	032f  NV34GL",
-"	0330  NV35 [GeForce FX 5900 Ultra]",
-"	0331  NV35 [GeForce FX 5900]",
-"		1043 8145  V9950GE",
-"	0332  NV35 [GeForce FX 5900XT]",
-"	0333  NV38 [GeForce FX 5950 Ultra]",
-"	0334  NV35 [GeForce FX 5900ZT]",
-"	0338  NV35GL [Quadro FX 3000]",
-"	033f  NV35GL [Quadro FX 700]",
-"	0341  NV36.1 [GeForce FX 5700 Ultra]",
-"	0342  NV36.2 [GeForce FX 5700]",
-"	0343  NV36 [GeForce FX 5700LE]",
-"	0344  NV36.4 [GeForce FX 5700VE]",
-"	0345  NV36.5",
-"	0347  NV36 [GeForce FX Go5700]",
-"		103c 006a  NX9500",
-"	0348  NV36 [GeForce FX Go5700]",
-"	0349  NV36M Pro",
-"	034b  NV36MAP",
-"	034c  NV36 [Quadro FX Go1000]",
-"	034e  NV36GL [Quadro FX 1100]",
-"	034f  NV36GL",
-"	0360  MCP55 LPC Bridge",
-"	0361  MCP55 LPC Bridge",
-"	0362  MCP55 LPC Bridge",
-"	0363  MCP55 LPC Bridge",
-"	0364  MCP55 LPC Bridge",
-"	0365  MCP55 LPC Bridge",
-"	0366  MCP55 LPC Bridge",
-"	0367  MCP55 LPC Bridge",
-"	0368  MCP55 SMBus",
-"	0369  MCP55 Memory Controller",
-"	036a  MCP55 Memory Controller",
-"	036c  MCP55 USB Controller",
-"	036d  MCP55 USB Controller",
-"	036e  MCP55 IDE",
-"	0371  MCP55 High Definition Audio",
-"	0372  MCP55 Ethernet",
-"	0373  MCP55 Ethernet",
-"	037a  MCP55 Memory Controller",
-"	037e  MCP55 SATA Controller",
-"	037f  MCP55 SATA Controller",
-"	0391  G70 [GeForce 7600 GT]",
-"	0392  G70 [GeForce 7600 GS]",
-"	0398  G70 [GeForce Go 7600]",
-"	039e  Quadro FX 560",
-"	03e0  MCP61 LPC Bridge",
-"	03e1  MCP61 LPC Bridge",
-"	03e2  MCP61 LPC Bridge",
-"	03e3  MCP61 LPC Bridge",
-"	03e4  MCP61 High Definition Audio",
-"	03e5  MCP61 Ethernet",
-"	03e6  MCP61 Ethernet",
-"	03e7  MCP61 SATA Controller",
-"	03ea  MCP61 Memory Controller",
-"	03eb  MCP61 SMBus",
-"	03ec  MCP61 IDE",
-"	03ee  MCP61 Ethernet",
-"	03ef  MCP61 Ethernet",
-"	03f0  MCP61 High Definition Audio",
-"	03f1  MCP61 USB Controller",
-"	03f2  MCP61 USB Controller",
-"	03f5  MCP61 Memory Controller",
-"	03f6  MCP61 SATA Controller",
-"	03f7  MCP61 SATA Controller",
-"10df  Emulex Corporation",
-"	1ae5  LP6000 Fibre Channel Host Adapter",
-"	f085  LP850 Fibre Channel Host Adapter",
-"	f095  LP952 Fibre Channel Host Adapter",
-"	f098  LP982 Fibre Channel Host Adapter",
-"	f0a1  Thor LightPulse Fibre Channel Host Adapter",
-"	f0a5  Thor LightPulse Fibre Channel Host Adapter",
-"	f0b5  Viper LightPulse Fibre Channel Host Adapter",
-"	f0d1  Helios LightPulse Fibre Channel Host Adapter",
-"	f0d5  Helios LightPulse Fibre Channel Host Adapter",
-"	f0e1  Zephyr LightPulse Fibre Channel Host Adapter",
-"	f0e5  Zephyr LightPulse Fibre Channel Host Adapter",
-"	f0f5  Neptune LightPulse Fibre Channel Host Adapter",
-"	f700  LP7000 Fibre Channel Host Adapter",
-"	f701  LP7000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2)",
-"	f800  LP8000 Fibre Channel Host Adapter",
-"	f801  LP8000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2)",
-"	f900  LP9000 Fibre Channel Host Adapter",
-"	f901  LP9000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2)",
-"	f980  LP9802 Fibre Channel Host Adapter",
-"	f981  LP9802 Fibre Channel Host Adapter Alternate ID",
-"	f982  LP9802 Fibre Channel Host Adapter Alternate ID",
-"	fa00  Thor-X LightPulse Fibre Channel Host Adapter",
-"	fb00  Viper LightPulse Fibre Channel Host Adapter",
-"	fc00  Thor-X LightPulse Fibre Channel Host Adapter",
-"	fc10  Helios-X LightPulse Fibre Channel Host Adapter",
-"	fc20  Zephyr-X LightPulse Fibre Channel Host Adapter",
-"	fd00  Helios-X LightPulse Fibre Channel Host Adapter",
-"	fe00  Zephyr-X LightPulse Fibre Channel Host Adapter",
-"	ff00  Neptune LightPulse Fibre Channel Host Adapter",
-"10e0  Integrated Micro Solutions Inc.",
-"	5026  IMS5026/27/28",
-"	5027  IMS5027",
-"	5028  IMS5028",
-"	8849  IMS8849",
-"	8853  IMS8853",
-"	9128  IMS9128 [Twin turbo 128]",
-"10e1  Tekram Technology Co.,Ltd.",
-"	0391  TRM-S1040",
-"		10e1 0391  DC-315U SCSI-3 Host Adapter",
-"	690c  DC-690c",
-"	dc29  DC-290",
-"10e2  Aptix Corporation",
-"10e3  Tundra Semiconductor Corp.",
-"	0000  CA91C042 [Universe]",
-"	0148  Tsi148 [Tempe]",
-"	0860  CA91C860 [QSpan]",
-"	0862  CA91C862A [QSpan-II]",
-"	8260  CA91L8200B [Dual PCI PowerSpan II]",
-"	8261  CA91L8260B [Single PCI PowerSpan II]",
-"10e4  Tandem Computers",
-"	8029  Realtek 8029 Network Card",
-"10e5  Micro Industries Corporation",
-"10e6  Gainbery Computer Products Inc.",
-"10e7  Vadem",
-"10e8  Applied Micro Circuits Corp.",
-"	1072  INES GPIB-PCI (AMCC5920 based)",
-"	2011  Q-Motion Video Capture/Edit board",
-"	4750  S5930 [Matchmaker]",
-"	5920  S5920",
-"	8043  LANai4.x [Myrinet LANai interface chip]",
-"	8062  S5933_PARASTATION",
-"	807d  S5933 [Matchmaker]",
-"	8088  Kongsberg Spacetec Format Synchronizer",
-"	8089  Kongsberg Spacetec Serial Output Board",
-"	809c  S5933_HEPC3",
-"	80d7  PCI-9112",
-"	80d9  PCI-9118",
-"	80da  PCI-9812",
-"	811a  PCI-IEEE1355-DS-DE Interface",
-"	814c  Fastcom ESCC-PCI (Commtech, Inc.)",
-"	8170  S5933 [Matchmaker] (Chipset Development Tool)",
-"	81e6  Multimedia video controller",
-"	8291  Fastcom 232/8-PCI (Commtech, Inc.)",
-"	82c4  Fastcom 422/4-PCI (Commtech, Inc.)",
-"	82c5  Fastcom 422/2-PCI (Commtech, Inc.)",
-"	82c6  Fastcom IG422/1-PCI (Commtech, Inc.)",
-"	82c7  Fastcom IG232/2-PCI (Commtech, Inc.)",
-"	82ca  Fastcom 232/4-PCI (Commtech, Inc.)",
-"	82db  AJA HDNTV HD SDI Framestore",
-"	82e2  Fastcom DIO24H-PCI (Commtech, Inc.)",
-"	8851  S5933 on Innes Corp FM Radio Capture card",
-"10e9  Alps Electric Co., Ltd.",
-"10ea  Intergraphics Systems",
-"	1680  IGA-1680",
-"	1682  IGA-1682",
-"	1683  IGA-1683",
-"	2000  CyberPro 2000",
-"	2010  CyberPro 2000A",
-"	5000  CyberPro 5000",
-"	5050  CyberPro 5050",
-"	5202  CyberPro 5202",
-"	5252  CyberPro5252",
-"10eb  Artists Graphics",
-"	0101  3GA",
-"	8111  Twist3 Frame Grabber",
-"10ec  Realtek Semiconductor Co., Ltd.",
-"	0139  Zonet Zen3200",
-"	8029  RTL-8029(AS)",
-"		10b8 2011  EZ-Card (SMC1208)",
-"		10ec 8029  RTL-8029(AS)",
-"		1113 1208  EN1208",
-"		1186 0300  DE-528",
-"		1259 2400  AT-2400",
-"	8129  RTL-8129",
-"		10ec 8129  RT8129 Fast Ethernet Adapter",
-"	8138  RT8139 (B/C) Cardbus Fast Ethernet Adapter",
-"		10ec 8138  RT8139 (B/C) Fast Ethernet Adapter",
-"	8139  RTL-8139/8139C/8139C+",
-"		0357 000a  TTP-Monitoring Card V2.0",
-"		1025 005a  TravelMate 290",
-"		1025 8920  ALN-325",
-"		1025 8921  ALN-325",
-"		103c 006a  NX9500",
-"		1043 8109  P5P800-MX Mainboard",
-"		1071 8160  MIM2000",
-"		10bd 0320  EP-320X-R",
-"		10ec 8139  RT8139",
-"		1113 ec01  FNC-0107TX",
-"		1186 1300  DFE-538TX",
-"		1186 1320  SN5200",
-"		1186 8139  DRN-32TX",
-"		11f6 8139  FN22-3(A) LinxPRO Ethernet Adapter",
-"		1259 2500  AT-2500TX",
-"		1259 2503  AT-2500TX/ACPI",
-"		1429 d010  ND010",
-"		1432 9130  EN-9130TX",
-"		1436 8139  RT8139",
-"		1458 e000  GA-7VM400M/7VT600 Motherboard",
-"		1462 788c  865PE Neo2-V Mainboard",
-"		146c 1439  FE-1439TX",
-"		1489 6001  GF100TXRII",
-"		1489 6002  GF100TXRA",
-"		149c 139a  LFE-8139ATX",
-"		149c 8139  LFE-8139TX",
-"		14cb 0200  LNR-100 Family 10/100 Base-TX Ethernet",
-"		1695 9001  Onboard RTL8101L 10/100 MBit",
-"		1799 5000  F5D5000 PCI Card/Desktop Network PCI Card",
-"		1904 8139  RTL8139D Fast Ethernet Adapter",
-"		2646 0001  EtheRx",
-"		8e2e 7000  KF-230TX",
-"		8e2e 7100  KF-230TX/2",
-"		a0a0 0007  ALN-325C",
-"	8169  RTL-8169 Gigabit Ethernet",
-"		1025 0079  Aspire 5024WLMi",
-"		1259 c107  CG-LAPCIGT",
-"		1371 434e  ProG-2000L",
-"		1458 e000  GA-8I915ME-G Mainboard",
-"		1462 702c  K8T NEO 2 motherboard",
-"	8180  RTL8180L 802.11b MAC",
-"	8185  RTL-8185 IEEE 802.11a/b/g Wireless LAN Controller",
-"	8197  SmartLAN56 56K Modem",
-"10ed  Ascii Corporation",
-"	7310  V7310",
-"10ee  Xilinx Corporation",
-"	0205  Wildcard TE205P",
-"	0210  Wildcard TE210P",
-"	0314  Wildcard TE405P/TE410P (1st Gen)",
-"	0405  Wildcard TE405P (2nd Gen)",
-"	0410  Wildcard TE410P (2nd Gen)",
-"	3fc0  RME Digi96",
-"	3fc1  RME Digi96/8",
-"	3fc2  RME Digi96/8 Pro",
-"	3fc3  RME Digi96/8 Pad",
-"	3fc4  RME Digi9652 (Hammerfall)",
-"	3fc5  RME Hammerfall DSP",
-"	3fc6  RME Hammerfall DSP MADI",
-"	8381  Ellips Santos Frame Grabber",
-"	d154  Copley Controls CAN card (PCI-CAN-02)",
-"10ef  Racore Computer Products, Inc.",
-"	8154  M815x Token Ring Adapter",
-"10f0  Peritek Corporation",
-"10f1  Tyan Computer",
-"	2865  Tyan Thunder K8E S2865",
-"10f2  Achme Computer, Inc.",
-"10f3  Alaris, Inc.",
-"10f4  S-MOS Systems, Inc.",
-"10f5  NKK Corporation",
-"	a001  NDR4000 [NR4600 Bridge]",
-"10f6  Creative Electronic Systems SA",
-"10f7  Matsushita Electric Industrial Co., Ltd.",
-"10f8  Altos India Ltd",
-"10f9  PC Direct",
-"10fa  Truevision",
-"	000c  TARGA 1000",
-"10fb  Thesys Gesellschaft fuer Mikroelektronik mbH",
-"	186f  TH 6255",
-"10fc  I-O Data Device, Inc.",
-"	0003  Cardbus IDE Controller",
-"	0005  Cardbus SCSI CBSC II",
-"10fd  Soyo Computer, Inc",
-"10fe  Fast Multimedia AG",
-"10ff  NCube",
-"1100  Jazz Multimedia",
-"1101  Initio Corporation",
-"	1060  INI-A100U2W",
-"	9100  INI-9100/9100W",
-"	9400  INI-940",
-"	9401  INI-950",
-"	9500  360P",
-"	9502  Initio INI-9100UW Ultra Wide SCSI Controller INIC-950P chip",
-"1102  Creative Labs",
-"	0002  SB Live! EMU10k1",
-"		1102 0020  CT4850 SBLive! Value",
-"		1102 0021  CT4620 SBLive!",
-"		1102 002f  SBLive! mainboard implementation",
-"		1102 100a  SB Live! 5.1 Digital OEM [SB0220]",
-"		1102 4001  E-mu APS",
-"		1102 8022  CT4780 SBLive! Value",
-"		1102 8023  CT4790 SoundBlaster PCI512",
-"		1102 8024  CT4760 SBLive!",
-"		1102 8025  SBLive! Mainboard Implementation",
-"		1102 8026  CT4830 SBLive! Value",
-"		1102 8027  CT4832 SBLive! Value",
-"		1102 8028  CT4760 SBLive! OEM version",
-"		1102 8031  CT4831 SBLive! Value",
-"		1102 8040  CT4760 SBLive!",
-"		1102 8051  CT4850 SBLive! Value",
-"		1102 8061  SBLive! Player 5.1",
-"		1102 8064  SBLive! 5.1 Model SB0100",
-"		1102 8065  SBLive! 5.1 Digital Model SB0220",
-"		1102 8067  SBLive! 5.1 eMicro 28028",
-"	0004  SB Audigy",
-"		1102 0051  SB0090 Audigy Player",
-"		1102 0053  SB0090 Audigy Player/OEM",
-"		1102 0058  SB0090 Audigy Player/OEM",
-"		1102 1007  SB0240 Audigy 2 Platinum 6.1",
-"		1102 2002  SB Audigy 2 ZS (SB0350)",
-"	0006  [SB Live! Value] EMU10k1X",
-"	0007  SB Audigy LS",
-"		1102 0007  SBLive! 24bit",
-"		1102 1001  SB0310 Audigy LS",
-"		1102 1002  SB0312 Audigy LS",
-"		1102 1006  SB0410 SBLive! 24-bit",
-"		1462 1009  K8N Diamond",
-"	0008  SB0400 Audigy2 Value",
-"		1102 0008  EMU0404 Digital Audio System",
-"	4001  SB Audigy FireWire Port",
-"		1102 0010  SB Audigy FireWire Port",
-"	7002  SB Live! Game Port",
-"		1102 0020  Gameport Joystick",
-"	7003  SB Audigy Game Port",
-"		1102 0040  SB Audigy MIDI/Game Port",
-"	7004  [SB Live! Value] Input device controller",
-"	7005  SB Audigy LS Game Port",
-"		1102 1001  SB0310 Audigy LS MIDI/Game port",
-"		1102 1002  SB0312 Audigy LS MIDI/Game port",
-"	8064  SB0100 [SBLive! 5.1 OEM]",
-"	8938  Ectiva EV1938",
-"		1033 80e5  SlimTower-Jim (NEC)",
-"		1071 7150  Mitac 7150",
-"		110a 5938  Siemens Scenic Mobile 510PIII",
-"		13bd 100c  Ceres-C (Sharp, Intel BX)",
-"		13bd 100d  Sharp, Intel Banister",
-"		13bd 100e  TwinHead P09S/P09S3 (Sharp)",
-"		13bd f6f1  Marlin (Sharp)",
-"		14ff 0e70  P88TE (TWINHEAD INTERNATIONAL Corp)",
-"		14ff c401  Notebook 9100/9200/2000 (TWINHEAD INTERNATIONAL Corp)",
-"		156d b400  G400 - Geo (AlphaTop (Taiwan))",
-"		156d b550  G560  (AlphaTop (Taiwan))",
-"		156d b560  G560  (AlphaTop (Taiwan))",
-"		156d b700  G700/U700  (AlphaTop (Taiwan))",
-"		156d b795  G795  (AlphaTop (Taiwan))",
-"		156d b797  G797  (AlphaTop (Taiwan))",
-"1103  Triones Technologies, Inc.",
-"	0003  HPT343/345/346/363",
-"	0004  HPT366/368/370/370A/372/372N",
-"		1103 0001  HPT370A",
-"		1103 0004  HPT366 UDMA66 (r1) / HPT368 UDMA66 (r2) / HPT370 UDMA100 (r3) / HPT370 UDMA100 RAID (r4)",
-"		1103 0005  HPT370 UDMA100",
-"	0005  HPT372A/372N",
-"	0006  HPT302/302N",
-"	0007  HPT371/371N",
-"	0008  HPT374",
-"	0009  HPT372N",
-"1104  RasterOps Corp.",
-"1105  Sigma Designs, Inc.",
-"	1105  REALmagic Xcard MPEG 1/2/3/4 DVD Decoder",
-"	8300  REALmagic Hollywood Plus DVD Decoder",
-"	8400  EM840x REALmagic DVD/MPEG-2 Audio/Video Decoder",
-"	8401  EM8401 REALmagic DVD/MPEG-2 A/V Decoder",
-"	8470  EM8470 REALmagic DVD/MPEG-4 A/V Decoder",
-"	8471  EM8471 REALmagic DVD/MPEG-4 A/V Decoder",
-"	8475  EM8475 REALmagic DVD/MPEG-4 A/V Decoder",
-"		1105 0001  REALmagic X-Card",
-"	8476  EM8476 REALmagic DVD/MPEG-4 A/V Decoder",
-"		127d 0000  CineView II",
-"	8485  EM8485 REALmagic DVD/MPEG-4 A/V Decoder",
-"	8486  EM8486 REALmagic DVD/MPEG-4 A/V Decoder",
-"1106  VIA Technologies, Inc.",
-"	0102  Embedded VIA Ethernet Controller",
-"	0130  VT6305 1394.A Controller",
-"	0204  K8M800 Host Bridge",
-"	0208  PT890 Host Bridge",
-"	0238  K8T890 Host Bridge",
-"	0258  PT880 Host Bridge",
-"	0259  CN400/PM880 Host Bridge",
-"	0269  KT880 Host Bridge",
-"	0282  K8T800Pro Host Bridge",
-"		1043 80a3  A8V Deluxe",
-"	0290  K8M890 Host Bridge",
-"	0293  PM896 Host Bridge",
-"	0296  P4M800 Host Bridge",
-"	0305  VT8363/8365 [KT133/KM133]",
-"		1019 0987  K7VZA Mainboard",
-"		1043 8033  A7V Mainboard",
-"		1043 803e  A7V-E Mainboard",
-"		1043 8042  A7V133/A7V133-C Mainboard",
-"		147b a401  KT7/KT7-RAID/KT7A/KT7A-RAID Mainboard",
-"	0308  PT894 Host Bridge",
-"	0314  CN700/VN800/P4M800CE/Pro Host Bridge",
-"	0324  CX700 Host Bridge",
-"	0327  P4M890 Host Bridge",
-"	0336  K8M890CE Host Bridge",
-"	0340  PT900 Host Bridge",
-"	0351  VT3351 Host Bridge",
-"	0364  P4M900 Host Bridge",
-"	0391  VT8371 [KX133]",
-"	0501  VT8501 [Apollo MVP4]",
-"	0505  VT82C505",
-"	0561  VT82C576MV",
-"	0571  VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE",
-"		1019 0985  P6VXA Motherboard",
-"		1019 0a81  L7VTA v1.0 Motherboard (KT400-8235)",
-"		1043 8052  VT8233A Bus Master ATA100/66/33 IDE",
-"		1043 808c  A7V8X / A7V333 motherboard",
-"		1043 80a1  A7V8X-X motherboard rev. 1.01",
-"		1043 80ed  A7V600/K8V-X/A8V Deluxe motherboard",
-"		1106 0571  VT82C586/B/VT82C686/A/B/VT8233/A/C/VT8235 PIPC Bus Master IDE",
-"		1179 0001  Magnia Z310",
-"		1297 f641  FX41 motherboard",
-"		1458 5002  GA-7VAX Mainboard",
-"		1462 7020  K8T NEO 2 motherboard",
-"		147b 1407  KV8-MAX3 motherboard",
-"		1849 0571  K7VT2/K7VT6 motherboard",
-"	0576  VT82C576 3V [Apollo Master]",
-"	0585  VT82C585VP [Apollo VP1/VPX]",
-"	0586  VT82C586/A/B PCI-to-ISA [Apollo VP]",
-"		1106 0000  MVP3 ISA Bridge",
-"	0591  VT8237A SATA 2-Port Controller",
-"	0595  VT82C595 [Apollo VP2]",
-"	0596  VT82C596 ISA [Mobile South]",
-"		1106 0000  VT82C596/A/B PCI to ISA Bridge",
-"		1458 0596  VT82C596/A/B PCI to ISA Bridge",
-"	0597  VT82C597 [Apollo VP3]",
-"	0598  VT82C598 [Apollo MVP3]",
-"	0601  VT8601 [Apollo ProMedia]",
-"	0605  VT8605 [ProSavage PM133]",
-"		1043 802c  CUV4X mainboard",
-"	0680  VT82C680 [Apollo P6]",
-"	0686  VT82C686 [Apollo Super South]",
-"		1019 0985  P6VXA Motherboard",
-"		1043 802c  CUV4X mainboard",
-"		1043 8033  A7V Mainboard",
-"		1043 803e  A7V-E Mainboard",
-"		1043 8040  A7M266 Mainboard",
-"		1043 8042  A7V133/A7V133-C Mainboard",
-"		1106 0000  VT82C686/A PCI to ISA Bridge",
-"		1106 0686  VT82C686/A PCI to ISA Bridge",
-"		1179 0001  Magnia Z310",
-"		147b a702  KG7-Lite Mainboard",
-"	0691  VT82C693A/694x [Apollo PRO133x]",
-"		1019 0985  P6VXA Motherboard",
-"		1179 0001  Magnia Z310",
-"		1458 0691  VT82C691 Apollo Pro System Controller",
-"	0693  VT82C693 [Apollo Pro Plus]",
-"	0698  VT82C693A [Apollo Pro133 AGP]",
-"	0926  VT82C926 [Amazon]",
-"	1000  VT82C570MV",
-"	1106  VT82C570MV",
-"	1204  K8M800 Host Bridge",
-"	1208  PT890 Host Bridge",
-"	1238  K8T890 Host Bridge",
-"	1258  PT880 Host Bridge",
-"	1259  CN400/PM880 Host Bridge",
-"	1269  KT880 Host Bridge",
-"	1282  K8T800Pro Host Bridge",
-"	1290  K8M890 Host Bridge",
-"	1293  PM896 Host Bridge",
-"	1296  P4M800 Host Bridge",
-"	1308  PT894 Host Bridge",
-"	1314  CN700/VN800/P4M800CE/Pro Host Bridge",
-"	1324  CX700 Host Bridge",
-"	1327  P4M890 Host Bridge",
-"	1336  K8M890CE Host Bridge",
-"	1340  PT900 Host Bridge",
-"	1351  VT3351 Host Bridge",
-"	1364  P4M900 Host Bridge",
-"	1571  VT82C576M/VT82C586",
-"	1595  VT82C595/97 [Apollo VP2/97]",
-"	2204  K8M800 Host Bridge",
-"	2208  PT890 Host Bridge",
-"	2238  K8T890 Host Bridge",
-"	2258  PT880 Host Bridge",
-"	2259  CN400/PM880 Host Bridge",
-"	2269  KT880 Host Bridge",
-"	2282  K8T800Pro Host Bridge",
-"	2290  K8M890 Host Bridge",
-"	2293  PM896 Host Bridge",
-"	2296  P4M800 Host Bridge",
-"	2308  PT894 Host Bridge",
-"	2314  CN700/VN800/P4M800CE/Pro Host Bridge",
-"	2324  CX700 Host Bridge",
-"	2327  P4M890 Host Bridge",
-"	2336  K8M890CE Host Bridge",
-"	2340  PT900 Host Bridge",
-"	2351  VT3351 Host Bridge",
-"	2364  P4M900 Host Bridge",
-"	287a  VT8251 PCI to PCI Bridge",
-"	287b  VT8251 Host Bridge",
-"	287c  VT8251 PCIE Root Port",
-"	287d  VT8251 PCIE Root Port",
-"	287e  VT8251 Ultra VLINK Controller",
-"	3022  CLE266",
-"	3038  VT82xxxxx UHCI USB 1.1 Controller",
-"		0925 1234  USB Controller",
-"		1019 0985  P6VXA Motherboard",
-"		1019 0a81  L7VTA v1.0 Motherboard (KT400-8235)",
-"		1043 8080  A7V333 motherboard",
-"		1043 808c  VT6202 USB2.0 4 port controller",
-"		1043 80a1  A7V8X-X motherboard",
-"		1043 80ed  A7V600/K8V-X/A8V Deluxe motherboard",
-"		1179 0001  Magnia Z310",
-"		1458 5004  GA-7VAX Mainboard",
-"		1462 7020  K8T NEO 2 motherboard",
-"		147b 1407  KV8-MAX3 motherboard",
-"		182d 201d  CN-029 USB2.0 4 port PCI Card",
-"		1849 3038  K7VT6",
-"	3040  VT82C586B ACPI",
-"	3043  VT86C100A [Rhine]",
-"		10bd 0000  VT86C100A Fast Ethernet Adapter",
-"		1106 0100  VT86C100A Fast Ethernet Adapter",
-"		1186 1400  DFE-530TX rev A",
-"	3044  IEEE 1394 Host Controller",
-"		1025 005a  TravelMate 290",
-"		1043 808a  A8V Deluxe",
-"		1458 1000  GA-7VT600-1394 Motherboard",
-"		1462 207d  K8NGM2 series motherboard",
-"		1462 702d  K8T NEO 2 motherboard",
-"		1462 971d  MS-6917",
-"	3050  VT82C596 Power Management",
-"	3051  VT82C596 Power Management",
-"	3053  VT6105M [Rhine-III]",
-"	3057  VT82C686 [Apollo Super ACPI]",
-"		1019 0985  P6VXA Motherboard",
-"		1019 0987  K7VZA Motherboard",
-"		1043 8033  A7V Mainboard",
-"		1043 803e  A7V-E Mainboard",
-"		1043 8040  A7M266 Mainboard",
-"		1043 8042  A7V133/A7V133-C Mainboard",
-"		1179 0001  Magnia Z310",
-"	3058  VT82C686 AC97 Audio Controller",
-"		0e11 0097  SoundMax Digital Integrated Audio",
-"		0e11 b194  Soundmax integrated digital audio",
-"		1019 0985  P6VXA Motherboard",
-"		1019 0987  K7VZA Motherboard",
-"		1043 1106  A7V133/A7V133-C Mainboard",
-"		1106 4511  Onboard Audio on EP7KXA",
-"		1458 7600  Onboard Audio",
-"		1462 3091  MS-6309 Onboard Audio",
-"		1462 3300  MS-6330 Onboard Audio",
-"		15dd 7609  Onboard Audio",
-"	3059  VT8233/A/8235/8237 AC97 Audio Controller",
-"		1019 0a81  L7VTA v1.0 Motherboard (KT400-8235)",
-"		1043 8095  A7V8X Motherboard (Realtek ALC650 codec)",
-"		1043 80a1  A7V8X-X Motherboard",
-"		1043 80b0  A7V600/K8V Deluxe motherboard (ADI AD1980 codec [SoundMAX])",
-"		1043 812a  A8V Deluxe motherboard (Realtek ALC850 codec)",
-"		1106 3059  L7VMM2 Motherboard",
-"		1106 4161  K7VT2 motherboard",
-"		1106 4170  PCPartner P4M800-8237R Motherboard",
-"		1106 4552  Soyo KT-600 Dragon Plus (Realtek ALC 650)",
-"		1297 c160  FX41 motherboard (Realtek ALC650 codec)",
-"		1458 a002  GA-7VAX Onboard Audio (Realtek ALC650)",
-"		1462 0080  K8T NEO 2 motherboard",
-"		1462 3800  KT266 onboard audio",
-"		147b 1407  KV8-MAX3 motherboard",
-"		1849 9761  K7VT6 motherboard",
-"		4005 4710  MSI K7T266 Pro2-RU (MSI-6380 v2) onboard audio (Realtek/ALC 200/200P)",
-"		a0a0 01b6  AK77-8XN onboard audio",
-"	3065  VT6102 [Rhine-II]",
-"		1043 80a1  A7V8X-X Motherboard",
-"		1106 0102  VT6102 [Rhine II] Embeded Ethernet Controller on VT8235",
-"		1186 1400  DFE-530TX rev A",
-"		1186 1401  DFE-530TX rev B",
-"		13b9 1421  LD-10/100AL PCI Fast Ethernet Adapter (rev.B)",
-"		147b 1c09  NV7 Motherboard",
-"		1695 3005  VT6103",
-"		1695 300c  Realtek ALC655 sound chip",
-"		1849 3065  K7VT6 motherboard",
-"	3068  AC'97 Modem Controller",
-"		1462 309e  MS-6309 Saturn Motherboard",
-"	3074  VT8233 PCI to ISA Bridge",
-"		1043 8052  VT8233A",
-"	3091  VT8633 [Apollo Pro266]",
-"	3099  VT8366/A/7 [Apollo KT266/A/333]",
-"		1043 8064  A7V266-E Mainboard",
-"		1043 807f  A7V333 Mainboard",
-"		1849 3099  K7VT2 motherboard",
-"	3101  VT8653 Host Bridge",
-"	3102  VT8662 Host Bridge",
-"	3103  VT8615 Host Bridge",
-"	3104  USB 2.0",
-"		1019 0a81  L7VTA v1.0 Motherboard (KT400-8235)",
-"		1043 808c  A7V8X motherboard",
-"		1043 80a1  A7V8X-X motherboard rev 1.01",
-"		1043 80ed  A7V600/K8V-X/A8V Deluxe motherboard",
-"		1297 f641  FX41 motherboard",
-"		1458 5004  GA-7VAX Mainboard",
-"		1462 7020  K8T NEO 2 motherboard",
-"		147b 1407  KV8-MAX3 motherboard",
-"		182d 201d  CN-029 USB 2.0 4 port PCI Card",
-"		1849 3104  K7VT6 motherboard",
-"	3106  VT6105 [Rhine-III]",
-"		1186 1403  DFE-530TX rev C",
-"	3108  S3 Unichrome Pro VGA Adapter",
-"	3109  VT8233C PCI to ISA Bridge",
-"	3112  VT8361 [KLE133] Host Bridge",
-"	3113  VPX/VPX2 PCI to PCI Bridge Controller",
-"	3116  VT8375 [KM266/KL266] Host Bridge",
-"		1297 f641  FX41 motherboard",
-"	3118  S3 Unichrome Pro VGA Adapter",
-"	3119  VT6120/VT6121/VT6122 Gigabit Ethernet Adapter",
-"	3122  VT8623 [Apollo CLE266] integrated CastleRock graphics",
-"	3123  VT8623 [Apollo CLE266]",
-"	3128  VT8753 [P4X266 AGP]",
-"	3133  VT3133 Host Bridge",
-"	3147  VT8233A ISA Bridge",
-"		1043 808c  A7V333 motherboard",
-"	3148  P4M266 Host Bridge",
-"	3149  VIA VT6420 SATA RAID Controller",
-"		1043 80ed  A7V600/K8V Deluxe/K8V-X/A8V Deluxe motherboard",
-"		1458 b003  GA-7VM400AM(F) Motherboard",
-"		1462 7020  K8T Neo 2 Motherboard",
-"		147b 1407  KV8-MAX3 motherboard",
-"		147b 1408  KV7",
-"		1849 3149  K7VT6 motherboard",
-"	3156  P/KN266 Host Bridge",
-"	3164  VT6410 ATA133 RAID controller",
-"		1043 80f4  P4P800 Mainboard Deluxe ATX",
-"		1462 7028  915P/G Neo2",
-"	3168  VT8374 P4X400 Host Controller/AGP Bridge",
-"	3177  VT8235 ISA Bridge",
-"		1019 0a81  L7VTA v1.0 Motherboard (KT400-8235)",
-"		1043 808c  A7V8X motherboard",
-"		1043 80a1  A7V8X-X motherboard",
-"		1297 f641  FX41 motherboard",
-"		1458 5001  GA-7VAX Mainboard",
-"		1849 3177  K7VT2 motherboard",
-"	3178  ProSavageDDR P4N333 Host Bridge",
-"	3188  VT8385 [K8T800 AGP] Host Bridge",
-"		1043 80a3  K8V Deluxe/K8V-X motherboard",
-"		147b 1407  KV8-MAX3 motherboard",
-"	3189  VT8377 [KT400/KT600 AGP] Host Bridge",
-"		1043 807f  A7V8X motherboard",
-"		1458 5000  GA-7VAX Mainboard",
-"		1849 3189  K7VT6 motherboard",
-"	3204  K8M800 Host Bridge",
-"	3205  VT8378 [KM400/A] Chipset Host Bridge",
-"		1458 5000  GA-7VM400M Motherboard",
-"	3208  PT890 Host Bridge",
-"	3213  VPX/VPX2 PCI to PCI Bridge Controller",
-"	3218  K8T800M Host Bridge",
-"	3227  VT8237 ISA bridge [KT600/K8T800/K8T890 South]",
-"		1043 80ed  A7V600/K8V-X/A8V Deluxe motherboard",
-"		1106 3227  DFI KT600-AL Motherboard",
-"		1458 5001  GA-7VT600 Motherboard",
-"		147b 1407  KV8-MAX3 motherboard",
-"		1849 3227  K7VT4 motherboard",
-"	3238  K8T890 Host Bridge",
-"	3249  VT6421 IDE RAID Controller",
-"	324a  CX700 PCI to PCI Bridge",
-"	324b  CX700 Host Bridge",
-"	324e  CX700 Internal Module Bus",
-"	3258  PT880 Host Bridge",
-"	3259  CN400/PM880 Host Bridge",
-"	3269  KT880 Host Bridge",
-"	3282  K8T800Pro Host Bridge",
-"	3287  VT8251 PCI to ISA Bridge",
-"	3288  VIA High Definition Audio Controller",
-"	3290  K8M890 Host Bridge",
-"	3296  P4M800 Host Bridge",
-"	3324  CX700 Host Bridge",
-"	3327  P4M890 Host Bridge",
-"	3336  K8M890CE Host Bridge",
-"	3337  VT8237A PCI to ISA Bridge",
-"	3340  PT900 Host Bridge",
-"	3344  UniChrome Pro IGP",
-"	3349  VT8251 AHCI/SATA 4-Port Controller",
-"	3351  VT3351 Host Bridge",
-"	3364  P4M900 Host Bridge",
-"	337a  VT8237A PCI to PCI Bridge",
-"	337b  VT8237A Host Bridge",
-"	4149  VIA VT6420 (ATA133) Controller",
-"	4204  K8M800 Host Bridge",
-"	4208  PT890 Host Bridge",
-"	4238  K8T890 Host Bridge",
-"	4258  PT880 Host Bridge",
-"	4259  CN400/PM880 Host Bridge",
-"	4269  KT880 Host Bridge",
-"	4282  K8T800Pro Host Bridge",
-"	4290  K8M890 Host Bridge",
-"	4293  PM896 Host Bridge",
-"	4296  P4M800 Host Bridge",
-"	4308  PT894 Host Bridge",
-"	4314  CN700/VN800/P4M800CE/Pro Host Bridge",
-"	4324  CX700 Host Bridge",
-"	4327  P4M890 Host Bridge",
-"	4336  K8M890CE Host Bridge",
-"	4340  PT900 Host Bridge",
-"	4351  VT3351 Host Bridge",
-"	4364  P4M900 Host Bridge",
-"	5030  VT82C596 ACPI [Apollo PRO]",
-"	5208  PT890 I/O APIC Interrupt Controller",
-"	5238  K8T890 I/O APIC Interrupt Controller",
-"	5290  K8M890 I/O APIC Interrupt Controller",
-"	5308  PT894 I/O APIC Interrupt Controller",
-"	5327  P4M890 I/O APIC Interrupt Controller",
-"	5336  K8M890CE I/O APIC Interrupt Controller",
-"	5340  PT900 I/O APIC Interrupt Controller",
-"	5351  VT3351 I/O APIC Interrupt Controller",
-"	5364  P4M900 I/O APIC Interrupt Controller",
-"	6100  VT85C100A [Rhine II]",
-"	6327  P4M890 Security Device",
-"	7204  K8M800 Host Bridge",
-"	7205  VT8378 [S3 UniChrome] Integrated Video",
-"		1458 d000  Gigabyte GA-7VM400(A)M(F) Motherboard",
-"	7208  PT890 Host Bridge",
-"	7238  K8T890 Host Bridge",
-"	7258  PT880 Host Bridge",
-"	7259  CN400/PM880 Host Bridge",
-"	7269  KT880 Host Bridge",
-"	7282  K8T800Pro Host Bridge",
-"	7290  K8M890 Host Bridge",
-"	7293  PM896 Host Bridge",
-"	7296  P4M800 Host Bridge",
-"	7308  PT894 Host Bridge",
-"	7314  CN700/VN800/P4M800CE/Pro Host Bridge",
-"	7324  CX700 Host Bridge",
-"	7327  P4M890 Host Bridge",
-"	7336  K8M890CE Host Bridge",
-"	7340  PT900 Host Bridge",
-"	7351  VT3351 Host Bridge",
-"	7364  P4M900 Host Bridge",
-"	8231  VT8231 [PCI-to-ISA Bridge]",
-"	8235  VT8235 ACPI",
-"	8305  VT8363/8365 [KT133/KM133 AGP]",
-"	8324  CX700 PCI to ISA Bridge",
-"	8391  VT8371 [KX133 AGP]",
-"	8501  VT8501 [Apollo MVP4 AGP]",
-"	8596  VT82C596 [Apollo PRO AGP]",
-"	8597  VT82C597 [Apollo VP3 AGP]",
-"	8598  VT82C598/694x [Apollo MVP3/Pro133x AGP]",
-"		1019 0985  P6VXA Motherboard",
-"	8601  VT8601 [Apollo ProMedia AGP]",
-"	8605  VT8605 [PM133 AGP]",
-"	8691  VT82C691 [Apollo Pro]",
-"	8693  VT82C693 [Apollo Pro Plus] PCI Bridge",
-"	a208  PT890 PCI to PCI Bridge Controller",
-"	a238  K8T890 PCI to PCI Bridge Controller",
-"	a327  P4M890 PCI to PCI Bridge Controller",
-"	a364  P4M900 PCI to PCI Bridge Controller",
-"	b091  VT8633 [Apollo Pro266 AGP]",
-"	b099  VT8366/A/7 [Apollo KT266/A/333 AGP]",
-"	b101  VT8653 AGP Bridge",
-"	b102  VT8362 AGP Bridge",
-"	b103  VT8615 AGP Bridge",
-"	b112  VT8361 [KLE133] AGP Bridge",
-"	b113  VPX/VPX2 I/O APIC Interrupt Controller",
-"	b115  VT8363/8365 [KT133/KM133] PCI Bridge",
-"	b168  VT8235 PCI Bridge",
-"	b188  VT8237 PCI bridge [K8T800/K8T890 South]",
-"		147b 1407  KV8-MAX3 motherboard",
-"	b198  VT8237 PCI Bridge",
-"	b213  VPX/VPX2 I/O APIC Interrupt Controller",
-"	b999  [K8T890 North / VT8237 South] PCI Bridge",
-"	c208  PT890 PCI to PCI Bridge Controller",
-"	c238  K8T890 PCI to PCI Bridge Controller",
-"	c327  P4M890 PCI to PCI Bridge Controller",
-"	c340  PT900 PCI to PCI Bridge Controller",
-"	c364  P4M900 PCI to PCI Bridge Controller",
-"	d104  VT8237 Integrated Fast Ethernet Controller",
-"	d208  PT890 PCI to PCI Bridge Controller",
-"	d213  VPX/VPX2 PCI to PCI Bridge Controller",
-"	d238  K8T890 PCI to PCI Bridge Controller",
-"	d340  PT900 PCI to PCI Bridge Controller",
-"	e208  PT890 PCI to PCI Bridge Controller",
-"	e238  K8T890 PCI to PCI Bridge Controller",
-"	e340  PT900 PCI to PCI Bridge Controller",
-"	f208  PT890 PCI to PCI Bridge Controller",
-"	f238  K8T890 PCI to PCI Bridge Controller",
-"	f340  PT900 PCI to PCI Bridge Controller",
-"1107  Stratus Computers",
-"	0576  VIA VT82C570MV [Apollo] (Wrong vendor ID!)",
-"1108  Proteon, Inc.",
-"	0100  p1690plus_AA",
-"	0101  p1690plus_AB",
-"	0105  P1690Plus",
-"	0108  P1690Plus",
-"	0138  P1690Plus",
-"	0139  P1690Plus",
-"	013c  P1690Plus",
-"	013d  P1690Plus",
-"1109  Cogent Data Technologies, Inc.",
-"	1400  EM110TX [EX110TX]",
-"110a  Siemens Nixdorf AG",
-"	0002  Pirahna 2-port",
-"	0005  Tulip controller, power management, switch extender",
-"	0006  FSC PINC (I/O-APIC)",
-"	0015  FSC Multiprocessor Interrupt Controller",
-"	001d  FSC Copernicus Management Controller",
-"	007b  FSC Remote Service Controller, mailbox device",
-"	007c  FSC Remote Service Controller, shared memory device",
-"	007d  FSC Remote Service Controller, SMIC device",
-"	2101  HST SAPHIR V Primary PCI (ISDN/PMx)",
-"	2102  DSCC4 PEB/PEF 20534 DMA Supported Serial Communication Controller with 4 Channels",
-"	2104  Eicon Diva 2.02 compatible passive ISDN card",
-"	3142  SIMATIC NET CP 5613A1 (Profibus Adapter)",
-"	4021  SIMATIC NET CP 5512 (Profibus and MPI Cardbus Adapter)",
-"	4029  SIMATIC NET CP 5613A2 (Profibus Adapter)",
-"	4942  FPGA I-Bus Tracer for MBD",
-"	6120  SZB6120",
-"110b  Chromatic Research Inc.",
-"	0001  Mpact Media Processor",
-"	0004  Mpact 2",
-"110c  Mini-Max Technology, Inc.",
-"110d  Znyx Advanced Systems",
-"110e  CPU Technology",
-"110f  Ross Technology",
-"1110  Powerhouse Systems",
-"	6037  Firepower Powerized SMP I/O ASIC",
-"	6073  Firepower Powerized SMP I/O ASIC",
-"1111  Santa Cruz Operation",
-"1112  Osicom Technologies Inc",
-"	2200  FDDI Adapter",
-"	2300  Fast Ethernet Adapter",
-"	2340  4 Port Fast Ethernet Adapter",
-"	2400  ATM Adapter",
-"1113  Accton Technology Corporation",
-"	1211  SMC2-1211TX",
-"		103c 1207  EN-1207D Fast Ethernet Adapter",
-"		1113 1211  EN-1207D Fast Ethernet Adapter",
-"	1216  EN-1216 Ethernet Adapter",
-"		1113 2242  EN2242 10/100 Ethernet Mini-PCI Card",
-"		111a 1020  SpeedStream 1020 PCI 10/100 Ethernet Adaptor [EN-1207F-TX \?]",
-"	1217  EN-1217 Ethernet Adapter",
-"	5105  10Mbps Network card",
-"	9211  EN-1207D Fast Ethernet Adapter",
-"		1113 9211  EN-1207D Fast Ethernet Adapter",
-"	9511  21x4x DEC-Tulip compatible Fast Ethernet",
-"	d301  CPWNA100 (Philips wireless PCMCIA)",
-"	ec02  SMC 1244TX v3",
-"1114  Atmel Corporation",
-"	0506  at76c506 802.11b Wireless Network Adaptor",
-"1115  3D Labs",
-"1116  Data Translation",
-"	0022  DT3001",
-"	0023  DT3002",
-"	0024  DT3003",
-"	0025  DT3004",
-"	0026  DT3005",
-"	0027  DT3001-PGL",
-"	0028  DT3003-PGL",
-"1117  Datacube, Inc",
-"	9500  Max-1C SVGA card",
-"	9501  Max-1C image processing",
-"1118  Berg Electronics",
-"1119  ICP Vortex Computersysteme GmbH",
-"	0000  GDT 6000/6020/6050",
-"	0001  GDT 6000B/6010",
-"	0002  GDT 6110/6510",
-"	0003  GDT 6120/6520",
-"	0004  GDT 6530",
-"	0005  GDT 6550",
-"	0006  GDT 6117/6517",
-"	0007  GDT 6127/6527",
-"	0008  GDT 6537",
-"	0009  GDT 6557/6557-ECC",
-"	000a  GDT 6115/6515",
-"	000b  GDT 6125/6525",
-"	000c  GDT 6535",
-"	000d  GDT 6555",
-"	0010  GDT 6115/6515",
-"	0011  GDT 6125/6525",
-"	0012  GDT 6535",
-"	0013  GDT 6555/6555-ECC",
-"	0100  GDT 6117RP/6517RP",
-"	0101  GDT 6127RP/6527RP",
-"	0102  GDT 6537RP",
-"	0103  GDT 6557RP",
-"	0104  GDT 6111RP/6511RP",
-"	0105  GDT 6121RP/6521RP",
-"	0110  GDT 6117RD/6517RD",
-"	0111  GDT 6127RD/6527RD",
-"	0112  GDT 6537RD",
-"	0113  GDT 6557RD",
-"	0114  GDT 6111RD/6511RD",
-"	0115  GDT 6121RD/6521RD",
-"	0118  GDT 6118RD/6518RD/6618RD",
-"	0119  GDT 6128RD/6528RD/6628RD",
-"	011a  GDT 6538RD/6638RD",
-"	011b  GDT 6558RD/6658RD",
-"	0120  GDT 6117RP2/6517RP2",
-"	0121  GDT 6127RP2/6527RP2",
-"	0122  GDT 6537RP2",
-"	0123  GDT 6557RP2",
-"	0124  GDT 6111RP2/6511RP2",
-"	0125  GDT 6121RP2/6521RP2",
-"	0136  GDT 6113RS/6513RS",
-"	0137  GDT 6123RS/6523RS",
-"	0138  GDT 6118RS/6518RS/6618RS",
-"	0139  GDT 6128RS/6528RS/6628RS",
-"	013a  GDT 6538RS/6638RS",
-"	013b  GDT 6558RS/6658RS",
-"	013c  GDT 6533RS/6633RS",
-"	013d  GDT 6543RS/6643RS",
-"	013e  GDT 6553RS/6653RS",
-"	013f  GDT 6563RS/6663RS",
-"	0166  GDT 7113RN/7513RN/7613RN",
-"	0167  GDT 7123RN/7523RN/7623RN",
-"	0168  GDT 7118RN/7518RN/7518RN",
-"	0169  GDT 7128RN/7528RN/7628RN",
-"	016a  GDT 7538RN/7638RN",
-"	016b  GDT 7558RN/7658RN",
-"	016c  GDT 7533RN/7633RN",
-"	016d  GDT 7543RN/7643RN",
-"	016e  GDT 7553RN/7653RN",
-"	016f  GDT 7563RN/7663RN",
-"	01d6  GDT 4x13RZ",
-"	01d7  GDT 4x23RZ",
-"	01f6  GDT 8x13RZ",
-"	01f7  GDT 8x23RZ",
-"	01fc  GDT 8x33RZ",
-"	01fd  GDT 8x43RZ",
-"	01fe  GDT 8x53RZ",
-"	01ff  GDT 8x63RZ",
-"	0210  GDT 6519RD/6619RD",
-"	0211  GDT 6529RD/6629RD",
-"	0260  GDT 7519RN/7619RN",
-"	0261  GDT 7529RN/7629RN",
-"	02ff  GDT MAXRP",
-"	0300  GDT NEWRX",
-"111a  Efficient Networks, Inc",
-"	0000  155P-MF1 (FPGA)",
-"	0002  155P-MF1 (ASIC)",
-"	0003  ENI-25P ATM",
-"		111a 0000  ENI-25p Miniport ATM Adapter",
-"	0005  SpeedStream (LANAI)",
-"		111a 0001  ENI-3010 ATM",
-"		111a 0009  ENI-3060 ADSL (VPI=0)",
-"		111a 0101  ENI-3010 ATM",
-"		111a 0109  ENI-3060CO ADSL (VPI=0)",
-"		111a 0809  ENI-3060 ADSL (VPI=0 or 8)",
-"		111a 0909  ENI-3060CO ADSL (VPI=0 or 8)",
-"		111a 0a09  ENI-3060 ADSL (VPI=<0..15>)",
-"	0007  SpeedStream ADSL",
-"		111a 1001  ENI-3061 ADSL [ASIC]",
-"	1203  SpeedStream 1023 Wireless PCI Adapter",
-"111b  Teledyne Electronic Systems",
-"111c  Tricord Systems Inc.",
-"	0001  Powerbis Bridge",
-"111d  Integrated Device Technology, Inc.",
-"	0001  IDT77201/77211 155Mbps ATM SAR Controller [NICStAR]",
-"	0003  IDT77222/77252 155Mbps ATM MICRO ABR SAR Controller",
-"	0004  IDT77V252 155Mbps ATM MICRO ABR SAR Controller",
-"	0005  IDT77V222 155Mbps ATM MICRO ABR SAR Controller",
-"111e  Eldec",
-"111f  Precision Digital Images",
-"	4a47  Precision MX Video engine interface",
-"	5243  Frame capture bus interface",
-"1120  EMC Corporation",
-"1121  Zilog",
-"1122  Multi-tech Systems, Inc.",
-"1123  Excellent Design, Inc.",
-"1124  Leutron Vision AG",
-"	2581  Picport Monochrome",
-"1125  Eurocore",
-"1126  Vigra",
-"1127  FORE Systems Inc",
-"	0200  ForeRunner PCA-200 ATM",
-"	0210  PCA-200PC",
-"	0250  ATM",
-"	0300  ForeRunner PCA-200EPC ATM",
-"	0310  ATM",
-"	0400  ForeRunnerHE ATM Adapter",
-"		1127 0400  ForeRunnerHE ATM",
-"1129  Firmworks",
-"112a  Hermes Electronics Company, Ltd.",
-"112b  Linotype - Hell AG",
-"112c  Zenith Data Systems",
-"112d  Ravicad",
-"112e  Infomedia Microelectronics Inc.",
-"112f  Imaging Technology Inc",
-"	0000  MVC IC-PCI",
-"	0001  MVC IM-PCI Video frame grabber/processor",
-"	0008  PC-CamLink PCI framegrabber",
-"1130  Computervision",
-"1131  Philips Semiconductors",
-"	1561  USB 1.1 Host Controller",
-"	1562  USB 2.0 Host Controller",
-"	3400  SmartPCI56(UCB1500) 56K Modem",
-"	5400  TriMedia TM1000/1100",
-"	5402  TriMedia TM-1300",
-"		1244 0f00  Fritz!Card DSL",
-"	5405  TriMedia TM1500",
-"	5406  TriMedia TM1700",
-"	7130  SAA7130 Video Broadcast Decoder",
-"		102b 48d0  Matrox CronosPlus",
-"		1048 226b  ELSA EX-VISION 300TV",
-"		1131 2001  10MOONS PCI TV CAPTURE CARD",
-"		1131 2005  Techcom (India) TV Tuner Card (SSD-TV-670)",
-"		1461 050c  Nagase Sangyo TransGear 3000TV",
-"		1461 10ff  AVerMedia DVD EZMaker",
-"		1461 2108  AverMedia AverTV/305",
-"		1461 2115  AverMedia AverTV Studio 305",
-"		153b 1152  Terratec Cinergy 200 TV",
-"		185b c100  Compro VideoMate TV PVR/FM",
-"		185b c901  Videomate DVB-T200",
-"		5168 0138  LifeView FlyVIDEO2000",
-"	7133  SAA7133/SAA7135 Video Broadcast Decoder",
-"		0000 4091  Beholder BeholdTV 409 FM",
-"		1019 4cb5  Elitegroup ECS TVP3XP FM1236 Tuner Card (NTSC,FM)",
-"		1043 0210  FlyTV mini Asus Digimatrix",
-"		1043 4843  ASUS TV-FM 7133",
-"		1043 4845  TV-FM 7135",
-"		1043 4862  P7131 Dual",
-"		1131 2001  Proteus Pro [philips reference design]",
-"		1131 2018  Tiger reference design",
-"		1131 4ee9  MonsterTV Mobile",
-"		11bd 002b  PCTV Stereo",
-"		11bd 002e  PCTV 110i (saa7133)",
-"		12ab 0800  PURPLE TV",
-"		1421 0335  Instant TV DVB-T Cardbus",
-"		1421 1370  Instant TV (saa7135)",
-"		1435 7330  VFG7330",
-"		1435 7350  VFG7350",
-"		1461 1044  AVerTVHD MCE A180",
-"		1461 f31f  Avermedia AVerTV GO 007 FM",
-"		1462 6231  TV@Anywhere plus",
-"		1489 0214  LifeView FlyTV Platinum FM",
-"		14c0 1212  LifeView FlyTV Platinum Mini2",
-"		153b 1160  Cinergy 250 PCI TV",
-"		153b 1162  Terratec Cinergy 400 mobile",
-"		185b c100  VideoMate TV",
-"		5168 0306  LifeView FlyDVB-T DUO",
-"		5168 0319  LifeView FlyDVB Trio",
-"	7134  SAA7134/SAA7135HL Video Broadcast Decoder",
-"		1019 4cb4  Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM)",
-"		1043 0210  Digimatrix TV",
-"		1043 4840  ASUS TV-FM 7134",
-"		1131 2004  EUROPA V3 reference design",
-"		1131 4e85  SKNet Monster TV",
-"		1131 6752  EMPRESS",
-"		11bd 002b  PCTV Stereo",
-"		11bd 002d  PCTV 300i DVB-T + PAL",
-"		1461 2c00  AverTV Hybrid+FM PCI",
-"		1461 9715  AVerTV Studio 307",
-"		1461 a70a  Avermedia AVerTV 307",
-"		1461 a70b  AverMedia M156 / Medion 2819",
-"		1461 d6ee  Cardbus TV/Radio (E500)",
-"		1471 b7e9  AVerTV Cardbus plus",
-"		153b 1142  Terratec Cinergy 400 TV",
-"		153b 1143  Terratec Cinergy 600 TV",
-"		153b 1158  Terratec Cinergy 600 TV MK3",
-"		1540 9524  ProVideo PV952",
-"		16be 0003  Medion 7134",
-"		185b c200  Compro VideoMate Gold+ Pal",
-"		185b c900  Videomate DVB-T300",
-"		1894 a006  KNC One TV-Station DVR",
-"		1894 fe01  KNC One TV-Station RDS / Typhoon TV Tuner RDS",
-"	7145  SAA7145",
-"	7146  SAA7146",
-"		110a 0000  Fujitsu/Siemens DVB-C card rev1.5",
-"		110a ffff  Fujitsu/Siemens DVB-C card rev1.5",
-"		1131 4f56  KNC1 DVB-S Budget",
-"		1131 4f60  Fujitsu-Siemens Activy DVB-S Budget Rev AL",
-"		1131 4f61  Activy DVB-S Budget Rev GR",
-"		1131 5f61  Activy DVB-T Budget",
-"		114b 2003  DVRaptor Video Edit/Capture Card",
-"		11bd 0006  DV500 Overlay",
-"		11bd 000a  DV500 Overlay",
-"		11bd 000f  DV500 Overlay",
-"		13c2 0000  Siemens/Technotrend/Hauppauge DVB card rev1.3 or rev1.5",
-"		13c2 0001  Technotrend/Hauppauge DVB card rev1.3 or rev1.6",
-"		13c2 0002  Technotrend/Hauppauge DVB card rev2.1",
-"		13c2 0003  Technotrend/Hauppauge DVB card rev2.1",
-"		13c2 0004  Technotrend/Hauppauge DVB card rev2.1",
-"		13c2 0006  Technotrend/Hauppauge DVB card rev1.3 or rev1.6",
-"		13c2 0008  Technotrend/Hauppauge DVB-T",
-"		13c2 000a  Octal/Technotrend DVB-C for iTV",
-"		13c2 1003  Technotrend-Budget/Hauppauge WinTV-NOVA-S DVB card",
-"		13c2 1004  Technotrend-Budget/Hauppauge WinTV-NOVA-C DVB card",
-"		13c2 1005  Technotrend-Budget/Hauppauge WinTV-NOVA-T DVB card",
-"		13c2 100c  Technotrend-Budget/Hauppauge WinTV-NOVA-CI DVB card",
-"		13c2 100f  Technotrend-Budget/Hauppauge WinTV-NOVA-CI DVB card",
-"		13c2 1011  Technotrend-Budget/Hauppauge WinTV-NOVA-T DVB card",
-"		13c2 1013  SATELCO Multimedia DVB",
-"		13c2 1016  WinTV-NOVA-SE DVB card",
-"		13c2 1102  Technotrend/Hauppauge DVB card rev2.1",
-"		153b 1156  Terratec Cynergy 1200C",
-"	9730  SAA9730 Integrated Multimedia and Peripheral Controller",
-"1132  Mitel Corp.",
-"1133  Eicon Networks Corporation",
-"	7901  EiconCard S90",
-"	7902  EiconCard S90",
-"	7911  EiconCard S91",
-"	7912  EiconCard S91",
-"	7941  EiconCard S94",
-"	7942  EiconCard S94",
-"	7943  EiconCard S94",
-"	7944  EiconCard S94",
-"	b921  EiconCard P92",
-"	b922  EiconCard P92",
-"	b923  EiconCard P92",
-"	e001  Diva Pro 2.0 S/T",
-"	e002  Diva 2.0 S/T PCI",
-"	e003  Diva Pro 2.0 U",
-"	e004  Diva 2.0 U PCI",
-"	e005  Diva 2.01 S/T PCI",
-"	e006  Diva CT S/T PCI",
-"	e007  Diva CT U PCI",
-"	e008  Diva CT Lite S/T PCI",
-"	e009  Diva CT Lite U PCI",
-"	e00a  Diva ISDN+V.90 PCI",
-"	e00b  Diva 2.02 PCI S/T",
-"	e00c  Diva 2.02 PCI U",
-"	e00d  Diva ISDN Pro 3.0 PCI",
-"	e00e  Diva ISDN+CT S/T PCI Rev 2",
-"	e010  Diva Server BRI-2M PCI",
-"		110a 0021  Fujitsu Siemens ISDN S0",
-"	e011  Diva Server BRI S/T Rev 2",
-"	e012  Diva Server 4BRI-8M PCI",
-"	e013  Diva Server 4BRI Rev 2",
-"		1133 1300  Diva Server V-4BRI-8",
-"		1133 e013  Diva Server 4BRI-8M 2.0 PCI",
-"	e014  Diva Server PRI-30M PCI",
-"	e015  DIVA Server PRI Rev 2",
-"		1133 e015  Diva Server PRI 2.0 PCI",
-"	e016  Diva Server Voice 4BRI PCI",
-"	e017  Diva Server Voice 4BRI Rev 2",
-"		1133 e017  Diva Server Voice 4BRI-8M 2.0 PCI",
-"	e018  Diva Server BRI-2M 2.0 PCI",
-"		1133 1800  Diva Server V-BRI-2",
-"		1133 e018  Diva Server BRI-2M 2.0 PCI",
-"	e019  Diva Server Voice PRI Rev 2",
-"		1133 e019  Diva Server Voice PRI 2.0 PCI",
-"	e01a  Diva Server 2FX",
-"	e01b  Diva Server Voice BRI-2M 2.0 PCI",
-"		1133 e01b  Diva Server Voice BRI-2M 2.0 PCI",
-"	e01c  Diva Server PRI Rev 3",
-"		1133 1c01  Diva Server PRI/E1/T1-8",
-"		1133 1c02  Diva Server PRI/T1-24",
-"		1133 1c03  Diva Server PRI/E1-30",
-"		1133 1c04  Diva Server PRI/E1/T1",
-"		1133 1c05  Diva Server V-PRI/T1-24",
-"		1133 1c06  Diva Server V-PRI/E1-30",
-"		1133 1c07  Diva Server PRI/E1/T1-8 Cornet NQ",
-"		1133 1c08  Diva Server PRI/T1-24 Cornet NQ",
-"		1133 1c09  Diva Server PRI/E1-30 Cornet NQ",
-"		1133 1c0a  Diva Server PRI/E1/T1 Cornet NQ",
-"		1133 1c0b  Diva Server V-PRI/T1-24 Cornet NQ",
-"		1133 1c0c  Diva Server V-PRI/E1-30 Cornet NQ",
-"	e01e  Diva Server 2PRI",
-"	e020  Diva Server 4PRI",
-"	e022  Diva Server Analog-2P",
-"	e024  Diva Server Analog-4P",
-"		1133 2400  Diva Server V-Analog-4P",
-"		1133 e024  Diva Server Analog-4P",
-"	e028  Diva Server Analog-8P",
-"		1133 2800  Diva Server V-Analog-8P",
-"		1133 e028  Diva Server Analog-8P",
-"	e02a  Diva Server IPM-300",
-"	e02c  Diva Server IPM-600",
-"1134  Mercury Computer Systems",
-"	0001  Raceway Bridge",
-"	0002  Dual PCI to RapidIO Bridge",
-"1135  Fuji Xerox Co Ltd",
-"	0001  Printer controller",
-"1136  Momentum Data Systems",
-"1137  Cisco Systems Inc",
-"1138  Ziatech Corporation",
-"	8905  8905 [STD 32 Bridge]",
-"1139  Dynamic Pictures, Inc",
-"	0001  VGA Compatable 3D Graphics",
-"113a  FWB Inc",
-"113b  Network Computing Devices",
-"113c  Cyclone Microsystems, Inc.",
-"	0000  PCI-9060 i960 Bridge",
-"	0001  PCI-SDK [PCI i960 Evaluation Platform]",
-"	0911  PCI-911 [i960Jx-based Intelligent I/O Controller]",
-"	0912  PCI-912 [i960CF-based Intelligent I/O Controller]",
-"	0913  PCI-913",
-"	0914  PCI-914 [I/O Controller w/ secondary PCI bus]",
-"113d  Leading Edge Products Inc",
-"113e  Sanyo Electric Co - Computer Engineering Dept",
-"113f  Equinox Systems, Inc.",
-"	0808  SST-64P Adapter",
-"	1010  SST-128P Adapter",
-"	80c0  SST-16P DB Adapter",
-"	80c4  SST-16P RJ Adapter",
-"	80c8  SST-16P Adapter",
-"	8888  SST-4P Adapter",
-"	9090  SST-8P Adapter",
-"1140  Intervoice Inc",
-"1141  Crest Microsystem Inc",
-"1142  Alliance Semiconductor Corporation",
-"	3210  AP6410",
-"	6422  ProVideo 6422",
-"	6424  ProVideo 6424",
-"	6425  ProMotion AT25",
-"	643d  ProMotion AT3D",
-"1143  NetPower, Inc",
-"1144  Cincinnati Milacron",
-"	0001  Noservo controller",
-"1145  Workbit Corporation",
-"	8007  NinjaSCSI-32 Workbit",
-"	f007  NinjaSCSI-32 KME",
-"	f010  NinjaSCSI-32 Workbit",
-"	f012  NinjaSCSI-32 Logitec",
-"	f013  NinjaSCSI-32 Logitec",
-"	f015  NinjaSCSI-32 Melco",
-"	f020  NinjaSCSI-32 Sony PCGA-DVD51",
-"1146  Force Computers",
-"1147  Interface Corp",
-"1148  SysKonnect",
-"	4000  FDDI Adapter",
-"		0e11 b03b  Netelligent 100 FDDI DAS Fibre SC",
-"		0e11 b03c  Netelligent 100 FDDI SAS Fibre SC",
-"		0e11 b03d  Netelligent 100 FDDI DAS UTP",
-"		0e11 b03e  Netelligent 100 FDDI SAS UTP",
-"		0e11 b03f  Netelligent 100 FDDI SAS Fibre MIC",
-"		1148 5521  FDDI SK-5521 (SK-NET FDDI-UP)",
-"		1148 5522  FDDI SK-5522 (SK-NET FDDI-UP DAS)",
-"		1148 5541  FDDI SK-5541 (SK-NET FDDI-FP)",
-"		1148 5543  FDDI SK-5543 (SK-NET FDDI-LP)",
-"		1148 5544  FDDI SK-5544 (SK-NET FDDI-LP DAS)",
-"		1148 5821  FDDI SK-5821 (SK-NET FDDI-UP64)",
-"		1148 5822  FDDI SK-5822 (SK-NET FDDI-UP64 DAS)",
-"		1148 5841  FDDI SK-5841 (SK-NET FDDI-FP64)",
-"		1148 5843  FDDI SK-5843 (SK-NET FDDI-LP64)",
-"		1148 5844  FDDI SK-5844 (SK-NET FDDI-LP64 DAS)",
-"	4200  Token Ring adapter",
-"	4300  SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link)",
-"		1148 9821  SK-9821 Gigabit Ethernet Server Adapter (SK-NET GE-T)",
-"		1148 9822  SK-9822 Gigabit Ethernet Server Adapter (SK-NET GE-T dual link)",
-"		1148 9841  SK-9841 Gigabit Ethernet Server Adapter (SK-NET GE-LX)",
-"		1148 9842  SK-9842 Gigabit Ethernet Server Adapter (SK-NET GE-LX dual link)",
-"		1148 9843  SK-9843 Gigabit Ethernet Server Adapter (SK-NET GE-SX)",
-"		1148 9844  SK-9844 Gigabit Ethernet Server Adapter (SK-NET GE-SX dual link)",
-"		1148 9861  SK-9861 Gigabit Ethernet Server Adapter (SK-NET GE-SX Volition)",
-"		1148 9862  SK-9862 Gigabit Ethernet Server Adapter (SK-NET GE-SX Volition dual link)",
-"		1148 9871  SK-9871 Gigabit Ethernet Server Adapter (SK-NET GE-ZX)",
-"		1148 9872  SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link)",
-"		1259 2970  AT-2970SX Gigabit Ethernet Adapter",
-"		1259 2971  AT-2970LX Gigabit Ethernet Adapter",
-"		1259 2972  AT-2970TX Gigabit Ethernet Adapter",
-"		1259 2973  AT-2971SX Gigabit Ethernet Adapter",
-"		1259 2974  AT-2971T Gigabit Ethernet Adapter",
-"		1259 2975  AT-2970SX/2SC Gigabit Ethernet Adapter",
-"		1259 2976  AT-2970LX/2SC Gigabit Ethernet Adapter",
-"		1259 2977  AT-2970TX/2TX Gigabit Ethernet Adapter",
-"	4320  SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter, PCI64, Fiber ZX/SC",
-"		1148 0121  Marvell RDK-8001 Adapter",
-"		1148 0221  Marvell RDK-8002 Adapter",
-"		1148 0321  Marvell RDK-8003 Adapter",
-"		1148 0421  Marvell RDK-8004 Adapter",
-"		1148 0621  Marvell RDK-8006 Adapter",
-"		1148 0721  Marvell RDK-8007 Adapter",
-"		1148 0821  Marvell RDK-8008 Adapter",
-"		1148 0921  Marvell RDK-8009 Adapter",
-"		1148 1121  Marvell RDK-8011 Adapter",
-"		1148 1221  Marvell RDK-8012 Adapter",
-"		1148 3221  SK-9521 V2.0 10/100/1000Base-T Adapter",
-"		1148 5021  SK-9821 V2.0 Gigabit Ethernet 10/100/1000Base-T Adapter",
-"		1148 5041  SK-9841 V2.0 Gigabit Ethernet 1000Base-LX Adapter",
-"		1148 5043  SK-9843 V2.0 Gigabit Ethernet 1000Base-SX Adapter",
-"		1148 5051  SK-9851 V2.0 Gigabit Ethernet 1000Base-SX Adapter",
-"		1148 5061  SK-9861 V2.0 Gigabit Ethernet 1000Base-SX Adapter",
-"		1148 5071  SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter",
-"		1148 9521  SK-9521 10/100/1000Base-T Adapter",
-"	4400  SK-9Dxx Gigabit Ethernet Adapter",
-"	4500  SK-9Mxx Gigabit Ethernet Adapter",
-"	9000  SK-9S21 10/100/1000Base-T Server Adapter, PCI-X, Copper RJ-45",
-"	9843  [Fujitsu] Gigabit Ethernet",
-"	9e00  SK-9E21D 10/100/1000Base-T Adapter, Copper RJ-45",
-"		1148 2100  SK-9E21 Server Adapter",
-"		1148 21d0  SK-9E21D 10/100/1000Base-T Adapter",
-"		1148 2200  SK-9E22 Server Adapter",
-"		1148 8100  SK-9E81 Server Adapter",
-"		1148 8200  SK-9E82 Server Adapter",
-"		1148 9100  SK-9E91 Server Adapter",
-"		1148 9200  SK-9E92 Server Adapter",
-"1149  Win System Corporation",
-"114a  VMIC",
-"	5579  VMIPCI-5579 (Reflective Memory Card)",
-"	5587  VMIPCI-5587 (Reflective Memory Card)",
-"	6504  VMIC PCI 7755 FPGA",
-"	7587  VMIVME-7587",
-"114b  Canopus Co., Ltd",
-"114c  Annabooks",
-"114d  IC Corporation",
-"114e  Nikon Systems Inc",
-"114f  Digi International",
-"	0002  AccelePort EPC",
-"	0003  RightSwitch SE-6",
-"	0004  AccelePort Xem",
-"	0005  AccelePort Xr",
-"	0006  AccelePort Xr,C/X",
-"	0009  AccelePort Xr/J",
-"	000a  AccelePort EPC/J",
-"	000c  DataFirePRIme T1 (1-port)",
-"	000d  SyncPort 2-Port (x.25/FR)",
-"	0011  AccelePort 8r EIA-232 (IBM)",
-"	0012  AccelePort 8r EIA-422",
-"	0014  AccelePort 8r EIA-422",
-"	0015  AccelePort Xem",
-"	0016  AccelePort EPC/X",
-"	0017  AccelePort C/X",
-"	001a  DataFirePRIme E1 (1-port)",
-"	001b  AccelePort C/X (IBM)",
-"	001d  DataFire RAS T1/E1/PRI",
-"		114f 0050  DataFire RAS E1 Adapter",
-"		114f 0051  DataFire RAS Dual E1 Adapter",
-"		114f 0052  DataFire RAS T1 Adapter",
-"		114f 0053  DataFire RAS Dual T1 Adapter",
-"	0023  AccelePort RAS",
-"	0024  DataFire RAS B4 ST/U",
-"		114f 0030  DataFire RAS BRI U Adapter",
-"		114f 0031  DataFire RAS BRI S/T Adapter",
-"	0026  AccelePort 4r 920",
-"	0027  AccelePort Xr 920",
-"	0028  ClassicBoard 4",
-"	0029  ClassicBoard 8",
-"	0034  AccelePort 2r 920",
-"	0035  DataFire DSP T1/E1/PRI cPCI",
-"	0040  AccelePort Xp",
-"	0042  AccelePort 2p",
-"	0043  AccelePort 4p",
-"	0044  AccelePort 8p",
-"	0045  AccelePort 16p",
-"	004e  AccelePort 32p",
-"	0070  Datafire Micro V IOM2 (Europe)",
-"	0071  Datafire Micro V (Europe)",
-"	0072  Datafire Micro V IOM2 (North America)",
-"	0073  Datafire Micro V (North America)",
-"	00b0  Digi Neo 4",
-"	00b1  Digi Neo 8",
-"	00c8  Digi Neo 2 DB9",
-"	00c9  Digi Neo 2 DB9 PRI",
-"	00ca  Digi Neo 2 RJ45",
-"	00cb  Digi Neo 2 RJ45 PRI",
-"	00d0  ClassicBoard 4 422",
-"	00d1  ClassicBoard 8 422",
-"	6001  Avanstar",
-"1150  Thinking Machines Corp",
-"1151  JAE Electronics Inc.",
-"1152  Megatek",
-"1153  Land Win Electronic Corp",
-"1154  Melco Inc",
-"1155  Pine Technology Ltd",
-"1156  Periscope Engineering",
-"1157  Avsys Corporation",
-"1158  Voarx R & D Inc",
-"	3011  Tokenet/vg 1001/10m anylan",
-"	9050  Lanfleet/Truevalue",
-"	9051  Lanfleet/Truevalue",
-"1159  Mutech Corp",
-"	0001  MV-1000",
-"115a  Harlequin Ltd",
-"115b  Parallax Graphics",
-"115c  Photron Ltd.",
-"115d  Xircom",
-"	0003  Cardbus Ethernet 10/100",
-"		1014 0181  10/100 EtherJet Cardbus Adapter",
-"		1014 1181  10/100 EtherJet Cardbus Adapter",
-"		1014 8181  10/100 EtherJet Cardbus Adapter",
-"		1014 9181  10/100 EtherJet Cardbus Adapter",
-"		115d 0181  Cardbus Ethernet 10/100",
-"		115d 0182  RealPort2 CardBus Ethernet 10/100 (R2BE-100)",
-"		115d 1181  Cardbus Ethernet 10/100",
-"		1179 0181  Cardbus Ethernet 10/100",
-"		8086 8181  EtherExpress PRO/100 Mobile CardBus 32 Adapter",
-"		8086 9181  EtherExpress PRO/100 Mobile CardBus 32 Adapter",
-"	0005  Cardbus Ethernet 10/100",
-"		1014 0182  10/100 EtherJet Cardbus Adapter",
-"		1014 1182  10/100 EtherJet Cardbus Adapter",
-"		115d 0182  Cardbus Ethernet 10/100",
-"		115d 1182  Cardbus Ethernet 10/100",
-"	0007  Cardbus Ethernet 10/100",
-"		1014 0182  10/100 EtherJet Cardbus Adapter",
-"		1014 1182  10/100 EtherJet Cardbus Adapter",
-"		115d 0182  Cardbus Ethernet 10/100",
-"		115d 1182  Cardbus Ethernet 10/100",
-"	000b  Cardbus Ethernet 10/100",
-"		1014 0183  10/100 EtherJet Cardbus Adapter",
-"		115d 0183  Cardbus Ethernet 10/100",
-"	000c  Mini-PCI V.90 56k Modem",
-"	000f  Cardbus Ethernet 10/100",
-"		1014 0183  10/100 EtherJet Cardbus Adapter",
-"		115d 0183  Cardbus Ethernet 10/100",
-"	00d4  Mini-PCI K56Flex Modem",
-"	0101  Cardbus 56k modem",
-"		115d 1081  Cardbus 56k Modem",
-"	0103  Cardbus Ethernet + 56k Modem",
-"		1014 9181  Cardbus 56k Modem",
-"		1115 1181  Cardbus Ethernet 100 + 56k Modem",
-"		115d 1181  CBEM56G-100 Ethernet + 56k Modem",
-"		8086 9181  PRO/100 LAN + Modem56 CardBus",
-"115e  Peer Protocols Inc",
-"115f  Maxtor Corporation",
-"1160  Megasoft Inc",
-"1161  PFU Limited",
-"1162  OA Laboratory Co Ltd",
-"1163  Rendition",
-"	0001  Verite 1000",
-"	2000  Verite V2000/V2100/V2200",
-"		1092 2000  Stealth II S220",
-"1164  Advanced Peripherals Technologies",
-"1165  Imagraph Corporation",
-"	0001  Motion TPEG Recorder/Player with audio",
-"1166  Broadcom",
-"	0000  CMIC-LE",
-"	0005  CNB20-LE Host Bridge",
-"	0006  CNB20HE Host Bridge",
-"	0007  CNB20-LE Host Bridge",
-"	0008  CNB20HE Host Bridge",
-"	0009  CNB20LE Host Bridge",
-"	0010  CIOB30",
-"	0011  CMIC-HE",
-"	0012  CMIC-WS Host Bridge (GC-LE chipset)",
-"	0013  CNB20-HE Host Bridge",
-"	0014  CMIC-LE Host Bridge (GC-LE chipset)",
-"	0015  CMIC-GC Host Bridge",
-"	0016  CMIC-GC Host Bridge",
-"	0017  GCNB-LE Host Bridge",
-"	0036  HT1000 PCI/PCI-X bridge",
-"	0101  CIOB-X2 PCI-X I/O Bridge",
-"	0104  HT1000 PCI/PCI-X bridge",
-"	0110  CIOB-E I/O Bridge with Gigabit Ethernet",
-"	0130  HT1000 PCI-X bridge",
-"	0132  HT1000 PCI-Express bridge",
-"	0200  OSB4 South Bridge",
-"	0201  CSB5 South Bridge",
-"		4c53 1080  CT8 mainboard",
-"	0203  CSB6 South Bridge",
-"		1734 1012  Primergy RX300",
-"	0205  HT1000 Legacy South Bridge",
-"	0211  OSB4 IDE Controller",
-"	0212  CSB5 IDE Controller",
-"		4c53 1080  CT8 mainboard",
-"	0213  CSB6 RAID/IDE Controller",
-"		1028 c134  Poweredge SC600",
-"		1734 1012  Primergy RX300",
-"	0214  HT1000 Legacy IDE controller",
-"	0217  CSB6 IDE Controller",
-"		1028 4134  Poweredge SC600",
-"	0220  OSB4/CSB5 OHCI USB Controller",
-"		4c53 1080  CT8 mainboard",
-"	0221  CSB6 OHCI USB Controller",
-"		1734 1012  Primergy RX300",
-"	0223  HT1000 USB Controller",
-"	0225  CSB5 LPC bridge",
-"	0227  GCLE-2 Host Bridge",
-"		1734 1012  Primergy RX300",
-"	0230  CSB5 LPC bridge",
-"		4c53 1080  CT8 mainboard",
-"	0234  HT1000 LPC Bridge",
-"	0240  K2 SATA",
-"	0241  RAIDCore RC4000",
-"	0242  RAIDCore BC4000",
-"	024a  BCM5785 (HT1000) SATA Native SATA Mode",
-"	024b  BCM5785 (HT1000) PATA/IDE Mode",
-"1167  Mutoh Industries Inc",
-"1168  Thine Electronics Inc",
-"1169  Centre for Development of Advanced Computing",
-"116a  Polaris Communications",
-"	6100  Bus/Tag Channel",
-"	6800  Escon Channel",
-"	7100  Bus/Tag Channel",
-"	7800  Escon Channel",
-"116b  Connectware Inc",
-"116c  Intelligent Resources Integrated Systems",
-"116d  Martin-Marietta",
-"116e  Electronics for Imaging",
-"116f  Workstation Technology",
-"1170  Inventec Corporation",
-"1171  Loughborough Sound Images Plc",
-"1172  Altera Corporation",
-"1173  Adobe Systems, Inc",
-"1174  Bridgeport Machines",
-"1175  Mitron Computer Inc.",
-"1176  SBE Incorporated",
-"1177  Silicon Engineering",
-"1178  Alfa, Inc.",
-"	afa1  Fast Ethernet Adapter",
-"1179  Toshiba America Info Systems",
-"	0102  Extended IDE Controller",
-"	0103  EX-IDE Type-B",
-"	0404  DVD Decoder card",
-"	0406  Tecra Video Capture device",
-"	0407  DVD Decoder card (Version 2)",
-"	0601  CPU to PCI bridge",
-"		1179 0001  Satellite Pro",
-"	0603  ToPIC95 PCI to CardBus Bridge for Notebooks",
-"	060a  ToPIC95",
-"		1179 0001  Satellite Pro",
-"	060f  ToPIC97",
-"	0617  ToPIC100 PCI to Cardbus Bridge with ZV Support",
-"	0618  CPU to PCI and PCI to ISA bridge",
-"	0701  FIR Port",
-"	0804  TC6371AF SmartMedia Controller",
-"	0805  SD TypA Controller",
-"	0d01  FIR Port Type-DO",
-"		1179 0001  FIR Port Type-DO",
-"117a  A-Trend Technology",
-"117b  L G Electronics, Inc.",
-"117c  Atto Technology",
-"	0030  Ultra320 SCSI Host Adapter",
-"		117c 8013  ExpressPCI UL4D",
-"		117c 8014  ExpressPCI UL4S",
-"117d  Becton & Dickinson",
-"117e  T/R Systems",
-"117f  Integrated Circuit Systems",
-"1180  Ricoh Co Ltd",
-"	0465  RL5c465",
-"	0466  RL5c466",
-"	0475  RL5c475",
-"		144d c006  vpr Matrix 170B4 CardBus bridge",
-"	0476  RL5c476 II",
-"		1014 0185  ThinkPad A/T/X Series",
-"		1028 0188  Inspiron 6000 laptop",
-"		1043 1967  V6800V",
-"		1043 1987  Asus A4K and Z81K notebooks, possibly others ( mid-2005 machines )",
-"		104d 80df  Vaio PCG-FX403",
-"		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP",
-"		144d c00c  P35 notebook",
-"		14ef 0220  PCD-RP-220S",
-"		17aa 201c  Thinkpad X60s",
-"	0477  RL5c477",
-"	0478  RL5c478",
-"		1014 0184  ThinkPad A30p (2653-64G)",
-"	0511  R5C511",
-"	0522  R5C522 IEEE 1394 Controller",
-"		1014 01cf  ThinkPad A30p (2653-64G)",
-"		1043 1967  V6800V",
-"	0551  R5C551 IEEE 1394 Controller",
-"		144d c006  vpr Matrix 170B4",
-"	0552  R5C552 IEEE 1394 Controller",
-"		1014 0511  ThinkPad A/T/X Series",
-"		1028 0188  Inspiron 6000 laptop",
-"		144d c00c  P35 notebook",
-"		17aa 201e  Thinkpad X60s",
-"	0554  R5C554",
-"	0575  R5C575 SD Bus Host Adapter",
-"	0576  R5C576 SD Bus Host Adapter",
-"	0592  R5C592 Memory Stick Bus Host Adapter",
-"		1043 1967  V6800V",
-"		144d c018  X20 IV",
-"	0811  R5C811",
-"	0822  R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter",
-"		1014 0556  Thinkpad X40",
-"		1014 0598  Thinkpad Z60m",
-"		1028 0188  Inspiron 6000 laptop",
-"		1028 01a2  Inspiron 9200",
-"		1043 1967  ASUS V6800V",
-"		144d c018  X20 IV",
-"		17aa 201d  Thinkpad X60s",
-"	0841  R5C841 CardBus/SD/SDIO/MMC/MS/MSPro/xD/IEEE1394",
-"	0852  xD-Picture Card Controller",
-"		1043 1967  V6800V",
-"1181  Telmatics International",
-"1183  Fujikura Ltd",
-"1184  Forks Inc",
-"1185  Dataworld International Ltd",
-"1186  D-Link System Inc",
-"	0100  DC21041",
-"	1002  DL10050 Sundance Ethernet",
-"		1186 1002  DFE-550TX",
-"		1186 1012  DFE-580TX",
-"	1025  AirPlus Xtreme G DWL-G650 Adapter",
-"	1026  AirXpert DWL-AG650 Wireless Cardbus Adapter",
-"	1043  AirXpert DWL-AG650 Wireless Cardbus Adapter",
-"	1300  RTL8139 Ethernet",
-"		1186 1300  DFE-538TX 10/100 Ethernet Adapter",
-"		1186 1301  DFE-530TX+ 10/100 Ethernet Adapter",
-"		1186 1303  DFE-528TX 10/100 Fast Ethernet PCI Adapter",
-"	1340  DFE-690TXD CardBus PC Card",
-"	1541  DFE-680TXD CardBus PC Card",
-"	1561  DRP-32TXD Cardbus PC Card",
-"	2027  AirPlus Xtreme G DWL-G520 Adapter",
-"	3203  AirPlus Xtreme G DWL-G520 Adapter",
-"	3300  DWL-510 2.4GHz Wireless PCI Adapter",
-"	3a03  AirPro DWL-A650 Wireless Cardbus Adapter(rev.B)",
-"	3a04  AirPro DWL-AB650 Multimode Wireless Cardbus Adapter",
-"	3a05  AirPro DWL-AB520 Multimode Wireless PCI Adapter",
-"	3a07  AirXpert DWL-AG650 Wireless Cardbus Adapter",
-"	3a08  AirXpert DWL-AG520 Wireless PCI Adapter",
-"	3a10  AirXpert DWL-AG650 Wireless Cardbus Adapter(rev.B)",
-"	3a11  AirXpert DWL-AG520 Wireless PCI Adapter(rev.B)",
-"	3a12  AirPlus DWL-G650 Wireless Cardbus Adapter(rev.C)",
-"	3a13  AirPlus DWL-G520 Wireless PCI Adapter(rev.B)",
-"	3a14  AirPremier DWL-AG530 Wireless PCI Adapter",
-"	3a63  AirXpert DWL-AG660 Wireless Cardbus Adapter",
-"	4000  DL2000-based Gigabit Ethernet",
-"	4300  DGE-528T Gigabit Ethernet Adapter",
-"	4b01  DGE-530T Gigabit Ethernet Adapter (rev 11)",
-"	4c00  Gigabit Ethernet Adapter",
-"		1186 4c00  DGE-530T Gigabit Ethernet Adapter",
-"	8400  D-Link DWL-650+ CardBus PC Card",
-"1187  Advanced Technology Laboratories, Inc.",
-"1188  Shima Seiki Manufacturing Ltd.",
-"1189  Matsushita Electronics Co Ltd",
-"118a  Hilevel Technology",
-"118b  Hypertec Pty Limited",
-"118c  Corollary, Inc",
-"	0014  PCIB [C-bus II to PCI bus host bridge chip]",
-"	1117  Intel 8-way XEON Profusion Chipset [Cache Coherency Filter]",
-"118d  BitFlow Inc",
-"	0001  Raptor-PCI framegrabber",
-"	0012  Model 12 Road Runner Frame Grabber",
-"	0014  Model 14 Road Runner Frame Grabber",
-"	0024  Model 24 Road Runner Frame Grabber",
-"	0044  Model 44 Road Runner Frame Grabber",
-"	0112  Model 12 Road Runner Frame Grabber",
-"	0114  Model 14 Road Runner Frame Grabber",
-"	0124  Model 24 Road Runner Frame Grabber",
-"	0144  Model 44 Road Runner Frame Grabber",
-"	0212  Model 12 Road Runner Frame Grabber",
-"	0214  Model 14 Road Runner Frame Grabber",
-"	0224  Model 24 Road Runner Frame Grabber",
-"	0244  Model 44 Road Runner Frame Grabber",
-"	0312  Model 12 Road Runner Frame Grabber",
-"	0314  Model 14 Road Runner Frame Grabber",
-"	0324  Model 24 Road Runner Frame Grabber",
-"	0344  Model 44 Road Runner Frame Grabber",
-"118e  Hermstedt GmbH",
-"118f  Green Logic",
-"1190  Tripace",
-"	c731  TP-910/920/940 PCI Ultra(Wide) SCSI Adapter",
-"1191  Artop Electronic Corp",
-"	0003  SCSI Cache Host Adapter",
-"	0004  ATP8400",
-"	0005  ATP850UF",
-"	0006  ATP860 NO-BIOS",
-"	0007  ATP860",
-"	0008  ATP865 NO-ROM",
-"	0009  ATP865",
-"	8002  AEC6710 SCSI-2 Host Adapter",
-"	8010  AEC6712UW SCSI",
-"	8020  AEC6712U SCSI",
-"	8030  AEC6712S SCSI",
-"	8040  AEC6712D SCSI",
-"	8050  AEC6712SUW SCSI",
-"	8060  AEC6712 SCSI",
-"	8080  AEC67160 SCSI",
-"	8081  AEC67160S SCSI",
-"	808a  AEC67162 2-ch. LVD SCSI",
-"1192  Densan Company Ltd",
-"1193  Zeitnet Inc.",
-"	0001  1221",
-"	0002  1225",
-"1194  Toucan Technology",
-"1195  Ratoc System Inc",
-"1196  Hytec Electronics Ltd",
-"1197  Gage Applied Sciences, Inc.",
-"	010c  CompuScope 82G 8bit 2GS/s Analog Input Card",
-"1198  Lambda Systems Inc",
-"1199  Attachmate Corporation",
-"119a  Mind Share, Inc.",
-"119b  Omega Micro Inc.",
-"	1221  82C092G",
-"119c  Information Technology Inst.",
-"119d  Bug, Inc. Sapporo Japan",
-"119e  Fujitsu Microelectronics Ltd.",
-"	0001  FireStream 155",
-"	0003  FireStream 50",
-"119f  Bull HN Information Systems",
-"11a0  Convex Computer Corporation",
-"11a1  Hamamatsu Photonics K.K.",
-"11a2  Sierra Research and Technology",
-"11a3  Deuretzbacher GmbH & Co. Eng. KG",
-"11a4  Barco Graphics NV",
-"11a5  Microunity Systems Eng. Inc",
-"11a6  Pure Data Ltd.",
-"11a7  Power Computing Corp.",
-"11a8  Systech Corp.",
-"11a9  InnoSys Inc.",
-"	4240  AMCC S933Q Intelligent Serial Card",
-"11aa  Actel",
-"11ab  Marvell Technology Group Ltd.",
-"	0146  GT-64010/64010A System Controller",
-"	138f  W8300 802.11 Adapter (rev 07)",
-"	1fa6  Marvell W8300 802.11 Adapter",
-"	1fa7  88W8310 and 88W8000G [Libertas] 802.11g client chipset",
-"	1faa  88w8335 [Libertas] 802.11b/g Wireless",
-"		1385 4e00  WG511 v2 54MBit/ Wireless PC-Card",
-"	4320  88E8001 Gigabit Ethernet Controller",
-"		1019 0f38  Marvell 88E8001 Gigabit Ethernet Controller (ECS)",
-"		1019 8001  Marvell 88E8001 Gigabit Ethernet Controller (ECS)",
-"		1043 173c  Marvell 88E8001 Gigabit Ethernet Controller (Asus)",
-"		1043 811a  Marvell 88E8001 Gigabit Ethernet Controller (Asus)",
-"		105b 0c19  Marvell 88E8001 Gigabit Ethernet Controller (Foxconn)",
-"		10b8 b452  EZ Card 1000 (SMC9452TXV.2)",
-"		11ab 0121  Marvell RDK-8001",
-"		11ab 0321  Marvell RDK-8003",
-"		11ab 1021  Marvell RDK-8010",
-"		11ab 4320  Marvell Yukon Gigabit Ethernet 10/100/1000Baset-T Constroller (Asus)",
-"		11ab 5021  Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Controller (64 bit)",
-"		11ab 9521  Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Controller (32 bit)",
-"		1458 e000  Marvell 88E8001 Gigabit Ethernet Controller (Gigabyte)",
-"		147b 1406  Marvell 88E8001 Gigabit Ethernet Controller (Abit)",
-"		15d4 0047  Marvell 88E8001 Gigabit Ethernet Controller (Iwill)",
-"		1695 9025  Marvell 88E8001 Gigabit Ethernet Controller (Epox)",
-"		17f2 1c03  Marvell 88E8001 Gigabit Ethernet Controller (Albatron)",
-"		270f 2803  Marvell 88E8001 Gigabit Ethernet Controller (Chaintech)",
-"	4340  88E8021 PCI-X IPMI Gigabit Ethernet Controller",
-"	4341  88E8022 PCI-X IPMI Gigabit Ethernet Controller",
-"	4342  88E8061 PCI-E IPMI Gigabit Ethernet Controller",
-"	4343  88E8062 PCI-E IPMI Gigabit Ethernet Controller",
-"	4344  88E8021 PCI-X IPMI Gigabit Ethernet Controller",
-"	4345  88E8022 PCI-X IPMI Gigabit Ethernet Controller",
-"	4346  88E8061 PCI-E IPMI Gigabit Ethernet Controller",
-"	4347  88E8062 PCI-E IPMI Gigabit Ethernet Controller",
-"	4350  88E8035 PCI-E Fast Ethernet Controller",
-"		1179 0001  Marvell 88E8035 Fast Ethernet Controller (Toshiba)",
-"		11ab 3521  Marvell RDK-8035",
-"		1854 000d  Marvell 88E8035 Fast Ethernet Controller (LGE)",
-"		1854 000e  Marvell 88E8035 Fast Ethernet Controller (LGE)",
-"		1854 000f  Marvell 88E8035 Fast Ethernet Controller (LGE)",
-"		1854 0011  Marvell 88E8035 Fast Ethernet Controller (LGE)",
-"		1854 0012  Marvell 88E8035 Fast Ethernet Controller (LGE)",
-"		1854 0016  Marvell 88E8035 Fast Ethernet Controller (LGE)",
-"		1854 0017  Marvell 88E8035 Fast Ethernet Controller (LGE)",
-"		1854 0018  Marvell 88E8035 Fast Ethernet Controller (LGE)",
-"		1854 0019  Marvell 88E8035 Fast Ethernet Controller (LGE)",
-"		1854 001c  Marvell 88E8035 Fast Ethernet Controller (LGE)",
-"		1854 001e  Marvell 88E8035 Fast Ethernet Controller (LGE)",
-"		1854 0020  Marvell 88E8035 Fast Ethernet Controller (LGE)",
-"	4351  88E8036 PCI-E Fast Ethernet Controller",
-"		107b 4009  Marvell 88E8036 Fast Ethernet Controller (Wistron)",
-"		10f7 8338  Marvell 88E8036 Fast Ethernet Controller (Panasonic)",
-"		1179 0001  Marvell 88E8036 Fast Ethernet Controller (Toshiba)",
-"		1179 ff00  Marvell 88E8036 Fast Ethernet Controller (Compal)",
-"		1179 ff10  Marvell 88E8036 Fast Ethernet Controller (Inventec)",
-"		11ab 3621  Marvell RDK-8036",
-"		13d1 ac12  Abocom EFE3K - 10/100 Ethernet Expresscard",
-"		161f 203d  Marvell 88E8036 Fast Ethernet Controller (Arima)",
-"		1854 000d  Marvell 88E8036 Fast Ethernet Controller (LGE)",
-"		1854 000e  Marvell 88E8036 Fast Ethernet Controller (LGE)",
-"		1854 000f  Marvell 88E8036 Fast Ethernet Controller (LGE)",
-"		1854 0011  Marvell 88E8036 Fast Ethernet Controller (LGE)",
-"		1854 0012  Marvell 88E8036 Fast Ethernet Controller (LGE)",
-"		1854 0016  Marvell 88E8036 Fast Ethernet Controller (LGE)",
-"		1854 0017  Marvell 88E8036 Fast Ethernet Controller (LGE)",
-"		1854 0018  Marvell 88E8036 Fast Ethernet Controller (LGE)",
-"		1854 0019  Marvell 88E8036 Fast Ethernet Controller (LGE)",
-"		1854 001c  Marvell 88E8036 Fast Ethernet Controller (LGE)",
-"		1854 001e  Marvell 88E8036 Fast Ethernet Controller (LGE)",
-"		1854 0020  Marvell 88E8036 Fast Ethernet Controller (LGE)",
-"	4352  88E8038 PCI-E Fast Ethernet Controller",
-"	4360  88E8052 PCI-E ASF Gigabit Ethernet Controller",
-"		1043 8134  Marvell 88E8052 Gigabit Ethernet Controller (Asus)",
-"		107b 4009  Marvell 88E8052 Gigabit Ethernet Controller (Wistron)",
-"		11ab 5221  Marvell RDK-8052",
-"		1458 e000  Marvell 88E8052 Gigabit Ethernet Controller (Gigabyte)",
-"		1462 052c  Marvell 88E8052 Gigabit Ethernet Controller (MSI)",
-"		1849 8052  Marvell 88E8052 Gigabit Ethernet Controller (ASRock)",
-"		a0a0 0509  Marvell 88E8052 Gigabit Ethernet Controller (Aopen)",
-"	4361  88E8050 PCI-E ASF Gigabit Ethernet Controller",
-"		107b 3015  Marvell 88E8050 Gigabit Ethernet Controller (Gateway)",
-"		11ab 5021  Marvell 88E8050 Gigabit Ethernet Controller (Intel)",
-"		8086 3063  D925XCVLK mainboard",
-"		8086 3439  Marvell 88E8050 Gigabit Ethernet Controller (Intel)",
-"	4362  88E8053 PCI-E Gigabit Ethernet Controller",
-"		103c 2a0d  Marvell 88E8053 Gigabit Ethernet Controller (Asus)",
-"		1043 8142  Marvell 88E8053 Gigabit Ethernet controller PCIe (Asus)",
-"		109f 3197  Marvell 88E8053 Gigabit Ethernet Controller (Trigem)",
-"		10f7 8338  Marvell 88E8053 Gigabit Ethernet Controller (Panasonic)",
-"		10fd a430  Marvell 88E8053 Gigabit Ethernet Controller (SOYO)",
-"		1179 0001  Marvell 88E8053 Gigabit Ethernet Controller (Toshiba)",
-"		1179 ff00  Marvell 88E8053 Gigabit Ethernet Controller (Compal)",
-"		1179 ff10  Marvell 88E8053 Gigabit Ethernet Controller (Inventec)",
-"		11ab 5321  Marvell RDK-8053",
-"		1297 c240  Marvell 88E8053 Gigabit Ethernet Controller (Shuttle)",
-"		1297 c241  Marvell 88E8053 Gigabit Ethernet Controller (Shuttle)",
-"		1297 c242  Marvell 88E8053 Gigabit Ethernet Controller (Shuttle)",
-"		1297 c243  Marvell 88E8053 Gigabit Ethernet Controller (Shuttle)",
-"		1297 c244  Marvell 88E8053 Gigabit Ethernet Controller (Shuttle)",
-"		13d1 ac11  EGE5K - Giga Ethernet Expresscard",
-"		1458 e000  Marvell 88E8053 Gigabit Ethernet Controller (Gigabyte)",
-"		1462 058c  Marvell 88E8053 Gigabit Ethernet Controller (MSI)",
-"		14c0 0012  Marvell 88E8053 Gigabit Ethernet Controller (Compal)",
-"		1558 04a0  Marvell 88E8053 Gigabit Ethernet Controller (Clevo)",
-"		15bd 1003  Marvell 88E8053 Gigabit Ethernet Controller (DFI)",
-"		161f 203c  Marvell 88E8053 Gigabit Ethernet Controller (Arima)",
-"		161f 203d  Marvell 88E8053 Gigabit Ethernet Controller (Arima)",
-"		1695 9029  Marvell 88E8053 Gigabit Ethernet Controller (Epox)",
-"		17f2 2c08  Marvell 88E8053 Gigabit Ethernet Controller (Albatron)",
-"		17ff 0585  Marvell 88E8053 Gigabit Ethernet Controller (Quanta)",
-"		1849 8053  Marvell 88E8053 Gigabit Ethernet Controller (ASRock)",
-"		1854 000b  Marvell 88E8053 Gigabit Ethernet Controller (LGE)",
-"		1854 000c  Marvell 88E8053 Gigabit Ethernet Controller (LGE)",
-"		1854 0010  Marvell 88E8053 Gigabit Ethernet Controller (LGE)",
-"		1854 0013  Marvell 88E8053 Gigabit Ethernet Controller (LGE)",
-"		1854 0014  Marvell 88E8053 Gigabit Ethernet Controller (LGE)",
-"		1854 0015  Marvell 88E8053 Gigabit Ethernet Controller (LGE)",
-"		1854 001a  Marvell 88E8053 Gigabit Ethernet Controller (LGE)",
-"		1854 001b  Marvell 88E8053 Gigabit Ethernet Controller (LGE)",
-"		1854 001d  Marvell 88E8053 Gigabit Ethernet Controller (LGE)",
-"		1854 001f  Marvell 88E8053 Gigabit Ethernet Controller (LGE)",
-"		1854 0021  Marvell 88E8053 Gigabit Ethernet Controller (LGE)",
-"		1854 0022  Marvell 88E8053 Gigabit Ethernet Controller (LGE)",
-"		270f 2801  Marvell 88E8053 Gigabit Ethernet Controller (Chaintech)",
-"		a0a0 0506  Marvell 88E8053 Gigabit Ethernet Controller (Aopen)",
-"	4363  88E8055 PCI-E Gigabit Ethernet Controller",
-"	4611  GT-64115 System Controller",
-"	4620  GT-64120/64120A/64121A System Controller",
-"	4801  GT-48001",
-"	5005  Belkin F5D5005 Gigabit Desktop Network PCI Card",
-"	5040  MV88SX5040 4-port SATA I PCI-X Controller",
-"	5041  MV88SX5041 4-port SATA I PCI-X Controller",
-"	5080  MV88SX5080 8-port SATA I PCI-X Controller",
-"	5081  MV88SX5081 8-port SATA I PCI-X Controller",
-"	6041  MV88SX6041 4-port SATA II PCI-X Controller",
-"	6081  MV88SX6081 8-port SATA II PCI-X Controller",
-"	6460  MV64360/64361/64362 System Controller",
-"	6480  MV64460/64461/64462 System Controller",
-"	f003  GT-64010 Primary Image Piranha Image Generator",
-"11ac  Canon Information Systems Research Aust.",
-"11ad  Lite-On Communications Inc",
-"	0002  LNE100TX",
-"		11ad 0002  LNE100TX",
-"		11ad 0003  LNE100TX",
-"		11ad f003  LNE100TX",
-"		11ad ffff  LNE100TX",
-"		1385 f004  FA310TX",
-"	c115  LNE100TX [Linksys EtherFast 10/100]",
-"		11ad c001  LNE100TX [ver 2.0]",
-"11ae  Aztech System Ltd",
-"11af  Avid Technology Inc.",
-"	0001  Cinema",
-"	ee40  Digidesign Audiomedia III",
-"11b0  V3 Semiconductor Inc.",
-"	0002  V300PSC",
-"	0292  V292PBC [Am29030/40 Bridge]",
-"	0960  V96xPBC",
-"	c960  V96DPC",
-"11b1  Apricot Computers",
-"11b2  Eastman Kodak",
-"11b3  Barr Systems Inc.",
-"11b4  Leitch Technology International",
-"11b5  Radstone Technology Plc",
-"11b6  United Video Corp",
-"11b7  Motorola",
-"11b8  XPoint Technologies, Inc",
-"	0001  Quad PeerMaster",
-"11b9  Pathlight Technology Inc.",
-"	c0ed  SSA Controller",
-"11ba  Videotron Corp",
-"11bb  Pyramid Technology",
-"11bc  Network Peripherals Inc",
-"	0001  NP-PCI",
-"11bd  Pinnacle Systems Inc.",
-"	002e  PCTV 40i",
-"	bede  AV/DV Studio Capture Card",
-"11be  International Microcircuits Inc",
-"11bf  Astrodesign, Inc.",
-"11c0  Hewlett Packard",
-"11c1  Agere Systems",
-"	0440  56k WinModem",
-"		1033 8015  LT WinModem 56k Data+Fax+Voice+Dsvd",
-"		1033 8047  LT WinModem 56k Data+Fax+Voice+Dsvd",
-"		1033 804f  LT WinModem 56k Data+Fax+Voice+Dsvd",
-"		10cf 102c  LB LT Modem V.90 56k",
-"		10cf 104a  BIBLO LT Modem 56k",
-"		10cf 105f  LB2 LT Modem V.90 56k",
-"		1179 0001  Internal V.90 Modem",
-"		11c1 0440  LT WinModem 56k Data+Fax+Voice+Dsvd",
-"		122d 4101  MDP7800-U Modem",
-"		122d 4102  MDP7800SP-U Modem",
-"		13e0 0040  LT WinModem 56k Data+Fax+Voice+Dsvd",
-"		13e0 0440  LT WinModem 56k Data+Fax+Voice+Dsvd",
-"		13e0 0441  LT WinModem 56k Data+Fax+Voice+Dsvd",
-"		13e0 0450  LT WinModem 56k Data+Fax+Voice+Dsvd",
-"		13e0 f100  LT WinModem 56k Data+Fax+Voice+Dsvd",
-"		13e0 f101  LT WinModem 56k Data+Fax+Voice+Dsvd",
-"		144d 2101  LT56PV Modem",
-"		149f 0440  LT WinModem 56k Data+Fax+Voice+Dsvd",
-"	0441  56k WinModem",
-"		1033 804d  LT WinModem 56k Data+Fax",
-"		1033 8065  LT WinModem 56k Data+Fax",
-"		1092 0440  Supra 56i",
-"		1179 0001  Internal V.90 Modem",
-"		11c1 0440  LT WinModem 56k Data+Fax",
-"		11c1 0441  LT WinModem 56k Data+Fax",
-"		122d 4100  MDP7800-U Modem",
-"		13e0 0040  LT WinModem 56k Data+Fax",
-"		13e0 0100  LT WinModem 56k Data+Fax",
-"		13e0 0410  LT WinModem 56k Data+Fax",
-"		13e0 0420  TelePath Internet 56k WinModem",
-"		13e0 0440  LT WinModem 56k Data+Fax",
-"		13e0 0443  LT WinModem 56k Data+Fax",
-"		13e0 f102  LT WinModem 56k Data+Fax",
-"		1416 9804  CommWave 56k Modem",
-"		141d 0440  LT WinModem 56k Data+Fax",
-"		144f 0441  Lucent 56k V.90 DF Modem",
-"		144f 0449  Lucent 56k V.90 DF Modem",
-"		144f 110d  Lucent Win Modem",
-"		1468 0441  Presario 56k V.90 DF Modem",
-"		1668 0440  Lucent Win Modem",
-"	0442  56k WinModem",
-"		11c1 0440  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd",
-"		11c1 0442  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd",
-"		13e0 0412  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd",
-"		13e0 0442  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd",
-"		13fc 2471  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd",
-"		144d 2104  LT56PT Modem",
-"		144f 1104  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd",
-"		149f 0440  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd",
-"		1668 0440  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd",
-"	0443  LT WinModem",
-"	0444  LT WinModem",
-"	0445  LT WinModem",
-"		8086 2203  PRO/100+ MiniPCI (probably an Ambit U98.003.C.00 combo card)",
-"		8086 2204  PRO/100+ MiniPCI on Armada E500",
-"	0446  LT WinModem",
-"	0447  LT WinModem",
-"	0448  WinModem 56k",
-"		1014 0131  Lucent Win Modem",
-"		1033 8066  LT WinModem 56k Data+Fax+Voice+Dsvd",
-"		13e0 0030  56k Voice Modem",
-"		13e0 0040  LT WinModem 56k Data+Fax+Voice+Dsvd",
-"		1668 2400  LT WinModem 56k (MiniPCI Ethernet+Modem)",
-"	0449  WinModem 56k",
-"		0e11 b14d  56k V.90 Modem",
-"		13e0 0020  LT WinModem 56k Data+Fax",
-"		13e0 0041  TelePath Internet 56k WinModem",
-"		1436 0440  Lucent Win Modem",
-"		144f 0449  Lucent 56k V.90 DFi Modem",
-"		1468 0410  IBM ThinkPad T23 (2647-4MG)",
-"		1468 0440  Lucent Win Modem",
-"		1468 0449  Presario 56k V.90 DFi Modem",
-"	044a  F-1156IV WinModem (V90, 56KFlex)",
-"		10cf 1072  LB Global LT Modem",
-"		13e0 0012  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd",
-"		13e0 0042  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd",
-"		144f 1005  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd",
-"	044b  LT WinModem",
-"	044c  LT WinModem",
-"	044d  LT WinModem",
-"	044e  LT WinModem",
-"	044f  V90 WildWire Modem",
-"	0450  LT WinModem",
-"		1033 80a8  Versa Note Vxi",
-"		144f 4005  Magnia SG20",
-"		1468 0450  Evo N600c",
-"		4005 144f  LifeBook C Series",
-"	0451  LT WinModem",
-"	0452  LT WinModem",
-"	0453  LT WinModem",
-"	0454  LT WinModem",
-"	0455  LT WinModem",
-"	0456  LT WinModem",
-"	0457  LT WinModem",
-"	0458  LT WinModem",
-"	0459  LT WinModem",
-"	045a  LT WinModem",
-"	045c  LT WinModem",
-"	0461  V90 WildWire Modem",
-"	0462  V90 WildWire Modem",
-"	0480  Venus Modem (V90, 56KFlex)",
-"	048c  V.92 56K WinModem",
-"	048f  V.92 56k WinModem",
-"	5801  USB",
-"	5802  USS-312 USB Controller",
-"	5803  USS-344S USB Controller",
-"	5811  FW323",
-"		8086 524c  D865PERL mainboard",
-"		dead 0800  FireWire Host Bus Adapter",
-"	8110  T8110 H.100/H.110 TDM switch",
-"		12d9 000c  E1/T1 PMXc cPCI carrier card",
-"	ab10  WL60010 Wireless LAN MAC",
-"	ab11  WL60040 Multimode Wireles LAN MAC",
-"		11c1 ab12  WaveLAN 11abg Cardbus card (Model 1102)",
-"		11c1 ab13  WaveLAN 11abg MiniPCI card (Model 0512)",
-"		11c1 ab15  WaveLAN 11abg Cardbus card (Model 1106)",
-"		11c1 ab16  WaveLAN 11abg MiniPCI card (Model 0516)",
-"	ab20  ORiNOCO PCI Adapter",
-"	ab21  Agere Wireless PCI Adapter",
-"	ab30  Hermes2 Mini-PCI WaveLAN a/b/g",
-"		14cd 2012  Hermes2 Mini-PCI WaveLAN a/b/g",
-"	ed00  ET-131x PCI-E Ethernet Controller",
-"11c2  Sand Microelectronics",
-"11c3  NEC Corporation",
-"11c4  Document Technologies, Inc",
-"11c5  Shiva Corporation",
-"11c6  Dainippon Screen Mfg. Co. Ltd",
-"11c7  D.C.M. Data Systems",
-"11c8  Dolphin Interconnect Solutions AS",
-"	0658  PSB32 SCI-Adapter D31x",
-"	d665  PSB64 SCI-Adapter D32x",
-"	d667  PSB66 SCI-Adapter D33x",
-"11c9  Magma",
-"	0010  16-line serial port w/- DMA",
-"	0011  4-line serial port w/- DMA",
-"11ca  LSI Systems, Inc",
-"11cb  Specialix Research Ltd.",
-"	2000  PCI_9050",
-"		11cb 0200  SX",
-"		11cb b008  I/O8+",
-"	4000  SUPI_1",
-"	8000  T225",
-"11cc  Michels & Kleberhoff Computer GmbH",
-"11cd  HAL Computer Systems, Inc.",
-"11ce  Netaccess",
-"11cf  Pioneer Electronic Corporation",
-"11d0  Lockheed Martin Federal Systems-Manassas",
-"11d1  Auravision",
-"	01f7  VxP524",
-"11d2  Intercom Inc.",
-"11d3  Trancell Systems Inc",
-"11d4  Analog Devices",
-"	1535  Blackfin BF535 processor",
-"	1805  SM56 PCI modem",
-"	1889  AD1889 sound chip",
-"	1986  AD1986A sound chip",
-"	5340  AD1881 sound chip",
-"11d5  Ikon Corporation",
-"	0115  10115",
-"	0117  10117",
-"11d6  Tekelec Telecom",
-"11d7  Trenton Technology, Inc.",
-"11d8  Image Technologies Development",
-"11d9  TEC Corporation",
-"11da  Novell",
-"11db  Sega Enterprises Ltd",
-"11dc  Questra Corporation",
-"11dd  Crosfield Electronics Limited",
-"11de  Zoran Corporation",
-"	6057  ZR36057PQC Video cutting chipset",
-"		1031 7efe  DC10 Plus",
-"		1031 fc00  MiroVIDEO DC50, Motion JPEG Capture/CODEC Board",
-"		12f8 8a02  Tekram Video Kit",
-"		13ca 4231  JPEG/TV Card",
-"	6120  ZR36120",
-"		1328 f001  Cinemaster C DVD Decoder",
-"		13c2 0000  MediaFocus Satellite TV Card",
-"		1de1 9fff  Video Kit C210",
-"11df  New Wave PDG",
-"11e0  Cray Communications A/S",
-"11e1  GEC Plessey Semi Inc.",
-"11e2  Samsung Information Systems America",
-"11e3  Quicklogic Corporation",
-"	0001  COM-ON-AIR Dosch&Amand DECT",
-"	5030  PC Watchdog",
-"11e4  Second Wave Inc",
-"11e5  IIX Consulting",
-"11e6  Mitsui-Zosen System Research",
-"11e7  Toshiba America, Elec. Company",
-"11e8  Digital Processing Systems Inc.",
-"11e9  Highwater Designs Ltd.",
-"11ea  Elsag Bailey",
-"11eb  Formation Inc.",
-"11ec  Coreco Inc",
-"11ed  Mediamatics",
-"11ee  Dome Imaging Systems Inc",
-"11ef  Nicolet Technologies B.V.",
-"11f0  Compu-Shack",
-"	4231  FDDI",
-"	4232  FASTline UTP Quattro",
-"	4233  FASTline FO",
-"	4234  FASTline UTP",
-"	4235  FASTline-II UTP",
-"	4236  FASTline-II FO",
-"	4731  GIGAline",
-"11f1  Symbios Logic Inc",
-"11f2  Picture Tel Japan K.K.",
-"11f3  Keithley Metrabyte",
-"11f4  Kinetic Systems Corporation",
-"	2915  CAMAC controller",
-"11f5  Computing Devices International",
-"11f6  Compex",
-"	0112  ENet100VG4",
-"	0113  FreedomLine 100",
-"	1401  ReadyLink 2000",
-"	2011  RL100-ATX 10/100",
-"		11f6 2011  RL100-ATX",
-"	2201  ReadyLink 100TX (Winbond W89C840)",
-"		11f6 2011  ReadyLink 100TX",
-"	9881  RL100TX Fast Ethernet",
-"11f7  Scientific Atlanta",
-"11f8  PMC-Sierra Inc.",
-"	7375  PM7375 [LASAR-155 ATM SAR]",
-"11f9  I-Cube Inc",
-"11fa  Kasan Electronics Company, Ltd.",
-"11fb  Datel Inc",
-"11fc  Silicon Magic",
-"11fd  High Street Consultants",
-"11fe  Comtrol Corporation",
-"	0001  RocketPort 32 port w/external I/F",
-"	0002  RocketPort 8 port w/external I/F",
-"	0003  RocketPort 16 port w/external I/F",
-"	0004  RocketPort 4 port w/quad cable",
-"	0005  RocketPort 8 port w/octa cable",
-"	0006  RocketPort 8 port w/RJ11 connectors",
-"	0007  RocketPort 4 port w/RJ11 connectors",
-"	0008  RocketPort 8 port w/ DB78 SNI (Siemens) connector",
-"	0009  RocketPort 16 port w/ DB78 SNI (Siemens) connector",
-"	000a  RocketPort Plus 4 port",
-"	000b  RocketPort Plus 8 port",
-"	000c  RocketModem 6 port",
-"	000d  RocketModem 4-port",
-"	000e  RocketPort Plus 2 port RS232",
-"	000f  RocketPort Plus 2 port RS422",
-"	0801  RocketPort UPCI 32 port w/external I/F",
-"	0802  RocketPort UPCI 8 port w/external I/F",
-"	0803  RocketPort UPCI 16 port w/external I/F",
-"	0805  RocketPort UPCI 8 port w/octa cable",
-"	080c  RocketModem III 8 port",
-"	080d  RocketModem III 4 port",
-"	0812  RocketPort UPCI Plus 8 port RS422",
-"	0903  RocketPort Compact PCI 16 port w/external I/F",
-"	8015  RocketPort 4-port UART 16954",
-"11ff  Scion Corporation",
-"	0003  AG-5",
-"1200  CSS Corporation",
-"1201  Vista Controls Corp",
-"1202  Network General Corp.",
-"	4300  Gigabit Ethernet Adapter",
-"		1202 9841  SK-9841 LX",
-"		1202 9842  SK-9841 LX dual link",
-"		1202 9843  SK-9843 SX",
-"		1202 9844  SK-9843 SX dual link",
-"1203  Bayer Corporation, Agfa Division",
-"1204  Lattice Semiconductor Corporation",
-"1205  Array Corporation",
-"1206  Amdahl Corporation",
-"1208  Parsytec GmbH",
-"	4853  HS-Link Device",
-"1209  SCI Systems Inc",
-"120a  Synaptel",
-"120b  Adaptive Solutions",
-"120c  Technical Corp.",
-"120d  Compression Labs, Inc.",
-"120e  Cyclades Corporation",
-"	0100  Cyclom-Y below first megabyte",
-"	0101  Cyclom-Y above first megabyte",
-"	0102  Cyclom-4Y below first megabyte",
-"	0103  Cyclom-4Y above first megabyte",
-"	0104  Cyclom-8Y below first megabyte",
-"	0105  Cyclom-8Y above first megabyte",
-"	0200  Cyclades-Z below first megabyte",
-"	0201  Cyclades-Z above first megabyte",
-"	0300  PC300/RSV or /X21 (2 ports)",
-"	0301  PC300/RSV or /X21 (1 port)",
-"	0310  PC300/TE (2 ports)",
-"	0311  PC300/TE (1 port)",
-"	0320  PC300/TE-M (2 ports)",
-"	0321  PC300/TE-M (1 port)",
-"	0400  PC400",
-"120f  Essential Communications",
-"	0001  Roadrunner serial HIPPI",
-"1210  Hyperparallel Technologies",
-"1211  Braintech Inc",
-"1212  Kingston Technology Corp.",
-"1213  Applied Intelligent Systems, Inc.",
-"1214  Performance Technologies, Inc.",
-"1215  Interware Co., Ltd",
-"1216  Purup Prepress A/S",
-"1217  O2 Micro, Inc.",
-"	6729  OZ6729",
-"	673a  OZ6730",
-"	6832  OZ6832/6833 CardBus Controller",
-"	6836  OZ6836/6860 CardBus Controller",
-"	6872  OZ6812 CardBus Controller",
-"	6925  OZ6922 CardBus Controller",
-"	6933  OZ6933/711E1 CardBus/SmartCardBus Controller",
-"		1025 1016  Travelmate 612 TX",
-"	6972  OZ601/6912/711E0 CardBus/SmartCardBus Controller",
-"		1014 020c  ThinkPad R30",
-"		1179 0001  Magnia Z310",
-"	7110  OZ711Mx 4-in-1 MemoryCardBus Accelerator",
-"		103c 088c  NC8000 laptop",
-"		103c 0890  NC6000 laptop",
-"		1734 106c  Amilo A1645",
-"	7112  OZ711EC1/M1 SmartCardBus/MemoryCardBus Controller",
-"	7113  OZ711EC1 SmartCardBus Controller",
-"	7114  OZ711M1/MC1 4-in-1 MemoryCardBus Controller",
-"	7134  OZ711MP1/MS1 MemoryCardBus Controller",
-"	71e2  OZ711E2 SmartCardBus Controller",
-"	7212  OZ711M2 4-in-1 MemoryCardBus Controller",
-"	7213  OZ6933E CardBus Controller",
-"	7223  OZ711M3/MC3 4-in-1 MemoryCardBus Controller",
-"		103c 088c  NC8000 laptop",
-"		103c 0890  NC6000 laptop",
-"	7233  OZ711MP3/MS3 4-in-1 MemoryCardBus Controller",
-"1218  Hybricon Corp.",
-"1219  First Virtual Corporation",
-"121a  3Dfx Interactive, Inc.",
-"	0001  Voodoo",
-"	0002  Voodoo 2",
-"	0003  Voodoo Banshee",
-"		1092 0003  Monster Fusion",
-"		1092 4000  Monster Fusion",
-"		1092 4002  Monster Fusion",
-"		1092 4801  Monster Fusion AGP",
-"		1092 4803  Monster Fusion AGP",
-"		1092 8030  Monster Fusion",
-"		1092 8035  Monster Fusion AGP",
-"		10b0 0001  Dragon 4000",
-"		1102 1018  3D Blaster Banshee VE",
-"		121a 0001  Voodoo Banshee AGP",
-"		121a 0003  Voodoo Banshee AGP SGRAM",
-"		121a 0004  Voodoo Banshee",
-"		139c 0016  Raven",
-"		139c 0017  Raven",
-"		14af 0002  Maxi Gamer Phoenix",
-"	0004  Voodoo Banshee [Velocity 100]",
-"	0005  Voodoo 3",
-"		121a 0004  Voodoo3 AGP",
-"		121a 0030  Voodoo3 AGP",
-"		121a 0031  Voodoo3 AGP",
-"		121a 0034  Voodoo3 AGP",
-"		121a 0036  Voodoo3 2000 PCI",
-"		121a 0037  Voodoo3 AGP",
-"		121a 0038  Voodoo3 AGP",
-"		121a 003a  Voodoo3 AGP",
-"		121a 0044  Voodoo3",
-"		121a 004b  Velocity 100",
-"		121a 004c  Velocity 200",
-"		121a 004d  Voodoo3 AGP",
-"		121a 004e  Voodoo3 AGP",
-"		121a 0051  Voodoo3 AGP",
-"		121a 0052  Voodoo3 AGP",
-"		121a 0057  Voodoo3 3000 PCI",
-"		121a 0060  Voodoo3 3500 TV (NTSC)",
-"		121a 0061  Voodoo3 3500 TV (PAL)",
-"		121a 0062  Voodoo3 3500 TV (SECAM)",
-"	0009  Voodoo 4 / Voodoo 5",
-"		121a 0003  Voodoo5 PCI 5500",
-"		121a 0009  Voodoo5 AGP 5500/6000",
-"	0057  Voodoo 3/3000 [Avenger]",
-"121b  Advanced Telecommunications Modules",
-"121c  Nippon Texaco., Ltd",
-"121d  Lippert Automationstechnik GmbH",
-"121e  CSPI",
-"	0201  Myrinet 2000 Scalable Cluster Interconnect",
-"121f  Arcus Technology, Inc.",
-"1220  Ariel Corporation",
-"	1220  AMCC 5933 TMS320C80 DSP/Imaging board",
-"1221  Contec Co., Ltd",
-"1222  Ancor Communications, Inc.",
-"1223  Artesyn Communication Products",
-"	0003  PM/Link",
-"	0004  PM/T1",
-"	0005  PM/E1",
-"	0008  PM/SLS",
-"	0009  BajaSpan Resource Target",
-"	000a  BajaSpan Section 0",
-"	000b  BajaSpan Section 1",
-"	000c  BajaSpan Section 2",
-"	000d  BajaSpan Section 3",
-"	000e  PM/PPC",
-"1224  Interactive Images",
-"1225  Power I/O, Inc.",
-"1227  Tech-Source",
-"	0006  Raptor GFX 8P",
-"	0023  Raptor GFX [1100T]",
-"1228  Norsk Elektro Optikk A/S",
-"1229  Data Kinesis Inc.",
-"122a  Integrated Telecom",
-"122b  LG Industrial Systems Co., Ltd",
-"122c  Sican GmbH",
-"122d  Aztech System Ltd",
-"	1206  368DSP",
-"	1400  Trident PCI288-Q3DII (NX)",
-"	50dc  3328 Audio",
-"		122d 0001  3328 Audio",
-"	80da  3328 Audio",
-"		122d 0001  3328 Audio",
-"122e  Xyratex",
-"122f  Andrew Corporation",
-"1230  Fishcamp Engineering",
-"1231  Woodward McCoach, Inc.",
-"1232  GPT Limited",
-"1233  Bus-Tech, Inc.",
-"1234  Technical Corp.",
-"1235  Risq Modular Systems, Inc.",
-"1236  Sigma Designs Corporation",
-"	0000  RealMagic64/GX",
-"	6401  REALmagic 64/GX (SD 6425)",
-"1237  Alta Technology Corporation",
-"1238  Adtran",
-"1239  3DO Company",
-"123a  Visicom Laboratories, Inc.",
-"123b  Seeq Technology, Inc.",
-"123c  Century Systems, Inc.",
-"123d  Engineering Design Team, Inc.",
-"	0000  EasyConnect 8/32",
-"	0002  EasyConnect 8/64",
-"	0003  EasyIO",
-"123e  Simutech, Inc.",
-"123f  C-Cube Microsystems",
-"	00e4  MPEG",
-"	8120  E4\?",
-"		11bd 0006  DV500 E4",
-"		11bd 000a  DV500 E4",
-"		11bd 000f  DV500 E4",
-"		1809 0016  Emuzed MAUI-III PCI PVR FM TV",
-"	8888  Cinemaster C 3.0 DVD Decoder",
-"		1002 0001  Cinemaster C 3.0 DVD Decoder",
-"		1002 0002  Cinemaster C 3.0 DVD Decoder",
-"		1328 0001  Cinemaster C 3.0 DVD Decoder",
-"1240  Marathon Technologies Corp.",
-"1241  DSC Communications",
-"1242  JNI Corporation",
-"	1560  JNIC-1560 PCI-X Fibre Channel Controller",
-"		1242 6562  FCX2-6562 Dual Channel PCI-X Fibre Channel Adapter",
-"		1242 656a  FCX-6562 PCI-X Fibre Channel Adapter",
-"	4643  FCI-1063 Fibre Channel Adapter",
-"	6562  FCX2-6562 Dual Channel PCI-X Fibre Channel Adapter",
-"	656a  FCX-6562 PCI-X Fibre Channel Adapter",
-"1243  Delphax",
-"1244  AVM Audiovisuelles MKTG & Computer System GmbH",
-"	0700  B1 ISDN",
-"	0800  C4 ISDN",
-"	0a00  A1 ISDN [Fritz]",
-"		1244 0a00  FRITZ!Card ISDN Controller",
-"	0e00  Fritz!PCI v2.0 ISDN",
-"	1100  C2 ISDN",
-"	1200  T1 ISDN",
-"	2700  Fritz!Card DSL SL",
-"	2900  Fritz!Card DSL v2.0",
-"1245  A.P.D., S.A.",
-"1246  Dipix Technologies, Inc.",
-"1247  Xylon Research, Inc.",
-"1248  Central Data Corporation",
-"1249  Samsung Electronics Co., Ltd.",
-"124a  AEG Electrocom GmbH",
-"124b  SBS/Greenspring Modular I/O",
-"	0040  PCI-40A or cPCI-200 Quad IndustryPack carrier",
-"		124b 9080  PCI9080 Bridge",
-"124c  Solitron Technologies, Inc.",
-"124d  Stallion Technologies, Inc.",
-"	0000  EasyConnection 8/32",
-"	0002  EasyConnection 8/64",
-"	0003  EasyIO",
-"	0004  EasyConnection/RA",
-"124e  Cylink",
-"124f  Infortrend Technology, Inc.",
-"	0041  IFT-2000 Series RAID Controller",
-"1250  Hitachi Microcomputer System Ltd",
-"1251  VLSI Solutions Oy",
-"1253  Guzik Technical Enterprises",
-"1254  Linear Systems Ltd.",
-"1255  Optibase Ltd",
-"	1110  MPEG Forge",
-"	1210  MPEG Fusion",
-"	2110  VideoPlex",
-"	2120  VideoPlex CC",
-"	2130  VideoQuest",
-"1256  Perceptive Solutions, Inc.",
-"	4201  PCI-2220I",
-"	4401  PCI-2240I",
-"	5201  PCI-2000",
-"1257  Vertex Networks, Inc.",
-"1258  Gilbarco, Inc.",
-"1259  Allied Telesyn International",
-"	2560  AT-2560 Fast Ethernet Adapter (i82557B)",
-"	a117  RTL81xx Fast Ethernet",
-"	a120  21x4x DEC-Tulip compatible 10/100 Ethernet",
-"125a  ABB Power Systems",
-"125b  Asix Electronics Corporation",
-"	1400  ALFA GFC2204 Fast Ethernet",
-"		1186 1100  AX8814X Based PCI Fast Ethernet Adapter",
-"125c  Aurora Technologies, Inc.",
-"	0101  Saturn 4520P",
-"	0640  Aries 16000P",
-"125d  ESS Technology",
-"	0000  ES336H Fax Modem (Early Model)",
-"	1948  Solo\?",
-"	1968  ES1968 Maestro 2",
-"		1028 0085  ES1968 Maestro-2 PCI",
-"		1033 8051  ES1968 Maestro-2 Audiodrive",
-"	1969  ES1969 Solo-1 Audiodrive",
-"		1014 0166  ES1969 SOLO-1 AudioDrive on IBM Aptiva Mainboard",
-"		125d 8888  Solo-1 Audio Adapter",
-"		153b 111b  Terratec 128i PCI",
-"	1978  ES1978 Maestro 2E",
-"		0e11 b112  Armada M700/E500",
-"		1033 803c  ES1978 Maestro-2E Audiodrive",
-"		1033 8058  ES1978 Maestro-2E Audiodrive",
-"		1092 4000  Monster Sound MX400",
-"		1179 0001  ES1978 Maestro-2E Audiodrive",
-"	1988  ES1988 Allegro-1",
-"		0e11 0098  Evo N600c",
-"		1092 4100  Sonic Impact S100",
-"		125d 1988  ESS Allegro-1 Audiodrive",
-"	1989  ESS Modem",
-"		125d 1989  ESS Modem",
-"	1998  ES1983S Maestro-3i PCI Audio Accelerator",
-"		1028 00b1  Latitude C600",
-"		1028 00e6  ES1983S Maestro-3i (Dell Inspiron 8100)",
-"	1999  ES1983S Maestro-3i PCI Modem Accelerator",
-"	199a  ES1983S Maestro-3i PCI Audio Accelerator",
-"	199b  ES1983S Maestro-3i PCI Modem Accelerator",
-"	2808  ES336H Fax Modem (Later Model)",
-"	2838  ES2838/2839 SuperLink Modem",
-"	2898  ES2898 Modem",
-"		125d 0424  ES56-PI Data Fax Modem",
-"		125d 0425  ES56T-PI Data Fax Modem",
-"		125d 0426  ES56V-PI Data Fax Modem",
-"		125d 0427  VW-PI Data Fax Modem",
-"		125d 0428  ES56ST-PI Data Fax Modem",
-"		125d 0429  ES56SV-PI Data Fax Modem",
-"		147a c001  ES56-PI Data Fax Modem",
-"		14fe 0428  ES56-PI Data Fax Modem",
-"		14fe 0429  ES56-PI Data Fax Modem",
-"125e  Specialvideo Engineering SRL",
-"125f  Concurrent Technologies, Inc.",
-"1260  Intersil Corporation",
-"	3872  Prism 2.5 Wavelan chipset",
-"		1468 0202  LAN-Express IEEE 802.11b Wireless LAN",
-"	3873  Prism 2.5 Wavelan chipset",
-"		1186 3501  DWL-520 Wireless PCI Adapter",
-"		1186 3700  DWL-520 Wireless PCI Adapter, Rev E1",
-"		1385 4105  MA311 802.11b wireless adapter",
-"		1668 0414  HWP01170-01 802.11b PCI Wireless Adapter",
-"		16a5 1601  AIR.mate PC-400 PCI Wireless LAN Adapter",
-"		1737 3874  WMP11 Wireless 802.11b PCI Adapter",
-"		8086 2513  Wireless 802.11b MiniPCI Adapter",
-"	3886  ISL3886 [Prism Javelin/Prism Xbow]",
-"		17cf 0037  XG-901 and clones Wireless Adapter",
-"	3890  ISL3890 [Prism GT/Prism Duette]/ISL3886 [Prism Javelin/Prism Xbow]",
-"		10b8 2802  SMC2802W Wireless PCI Adapter",
-"		10b8 2835  SMC2835W Wireless Cardbus Adapter",
-"		10b8 a835  SMC2835W V2 Wireless Cardbus Adapter",
-"		1113 4203  WN4201B",
-"		1113 ee03  SMC2802W V2 Wireless PCI Adapter [ISL3886]",
-"		1113 ee08  SMC2835W V3 EU Wireless Cardbus Adapter",
-"		1186 3202  DWL-G650 A1 Wireless Adapter",
-"		1259 c104  CG-WLCB54GT Wireless Adapter",
-"		1385 4800  WG511 Wireless Adapter",
-"		16a5 1605  ALLNET ALL0271 Wireless PCI Adapter",
-"		17cf 0014  XG-600 and clones Wireless Adapter",
-"		17cf 0020  XG-900 and clones Wireless Adapter",
-"	8130  HMP8130 NTSC/PAL Video Decoder",
-"	8131  HMP8131 NTSC/PAL Video Decoder",
-"	ffff  ISL3886IK",
-"		1260 0000  Senao 3054MP+ (J) mini-PCI WLAN 802.11g adapter",
-"1261  Matsushita-Kotobuki Electronics Industries, Ltd.",
-"1262  ES Computer Company, Ltd.",
-"1263  Sonic Solutions",
-"1264  Aval Nagasaki Corporation",
-"1265  Casio Computer Co., Ltd.",
-"1266  Microdyne Corporation",
-"	0001  NE10/100 Adapter (i82557B)",
-"	1910  NE2000Plus (RT8029) Ethernet Adapter",
-"		1266 1910  NE2000Plus Ethernet Adapter",
-"1267  S. A. Telecommunications",
-"	5352  PCR2101",
-"	5a4b  Telsat Turbo",
-"1268  Tektronix",
-"1269  Thomson-CSF/TTM",
-"126a  Lexmark International, Inc.",
-"126b  Adax, Inc.",
-"126c  Northern Telecom",
-"	1211  10/100BaseTX [RTL81xx]",
-"	126c  802.11b Wireless Ethernet Adapter",
-"126d  Splash Technology, Inc.",
-"126e  Sumitomo Metal Industries, Ltd.",
-"126f  Silicon Motion, Inc.",
-"	0501  SM501 VoyagerGX Rev. AA",
-"	0510  SM501 VoyagerGX Rev. B",
-"	0710  SM710 LynxEM",
-"	0712  SM712 LynxEM+",
-"	0720  SM720 Lynx3DM",
-"	0730  SM731 Cougar3DR",
-"	0810  SM810 LynxE",
-"	0811  SM811 LynxE",
-"	0820  SM820 Lynx3D",
-"	0910  SM910",
-"1270  Olympus Optical Co., Ltd.",
-"1271  GW Instruments",
-"1272  Telematics International",
-"1273  Hughes Network Systems",
-"	0002  DirecPC",
-"1274  Ensoniq",
-"	1171  ES1373 [AudioPCI] (also Creative Labs CT5803)",
-"	1371  ES1371 [AudioPCI-97]",
-"		0e11 0024  AudioPCI on Motherboard Compaq Deskpro",
-"		0e11 b1a7  ES1371, ES1373 AudioPCI",
-"		1033 80ac  ES1371, ES1373 AudioPCI",
-"		1042 1854  Tazer",
-"		107b 8054  Tabor2",
-"		1274 1371  Creative Sound Blaster AudioPCI64V, AudioPCI128",
-"		1274 8001  CT4751 board",
-"		1462 6470  ES1371, ES1373 AudioPCI On Motherboard MS-6147 1.1A",
-"		1462 6560  ES1371, ES1373 AudioPCI On Motherboard MS-6156 1.10",
-"		1462 6630  ES1371, ES1373 AudioPCI On Motherboard MS-6163BX 1.0A",
-"		1462 6631  ES1371, ES1373 AudioPCI On Motherboard MS-6163VIA 1.0A",
-"		1462 6632  ES1371, ES1373 AudioPCI On Motherboard MS-6163BX 2.0A",
-"		1462 6633  ES1371, ES1373 AudioPCI On Motherboard MS-6163VIA 2.0A",
-"		1462 6820  ES1371, ES1373 AudioPCI On Motherboard MS-6182 1.00",
-"		1462 6822  ES1371, ES1373 AudioPCI On Motherboard MS-6182 1.00A",
-"		1462 6830  ES1371, ES1373 AudioPCI On Motherboard MS-6183 1.00",
-"		1462 6880  ES1371, ES1373 AudioPCI On Motherboard MS-6188 1.00",
-"		1462 6900  ES1371, ES1373 AudioPCI On Motherboard MS-6190 1.00",
-"		1462 6910  ES1371, ES1373 AudioPCI On Motherboard MS-6191",
-"		1462 6930  ES1371, ES1373 AudioPCI On Motherboard MS-6193",
-"		1462 6990  ES1371, ES1373 AudioPCI On Motherboard MS-6199BX 2.0A",
-"		1462 6991  ES1371, ES1373 AudioPCI On Motherboard MS-6199VIA 2.0A",
-"		14a4 2077  ES1371, ES1373 AudioPCI On Motherboard KR639",
-"		14a4 2105  ES1371, ES1373 AudioPCI On Motherboard MR800",
-"		14a4 2107  ES1371, ES1373 AudioPCI On Motherboard MR801",
-"		14a4 2172  ES1371, ES1373 AudioPCI On Motherboard DR739",
-"		1509 9902  ES1371, ES1373 AudioPCI On Motherboard KW11",
-"		1509 9903  ES1371, ES1373 AudioPCI On Motherboard KW31",
-"		1509 9904  ES1371, ES1373 AudioPCI On Motherboard KA11",
-"		1509 9905  ES1371, ES1373 AudioPCI On Motherboard KC13",
-"		152d 8801  ES1371, ES1373 AudioPCI On Motherboard CP810E",
-"		152d 8802  ES1371, ES1373 AudioPCI On Motherboard CP810",
-"		152d 8803  ES1371, ES1373 AudioPCI On Motherboard P3810E",
-"		152d 8804  ES1371, ES1373 AudioPCI On Motherboard P3810-S",
-"		152d 8805  ES1371, ES1373 AudioPCI On Motherboard P3820-S",
-"		270f 2001  ES1371, ES1373 AudioPCI On Motherboard 6CTR",
-"		270f 2200  ES1371, ES1373 AudioPCI On Motherboard 6WTX",
-"		270f 3000  ES1371, ES1373 AudioPCI On Motherboard 6WSV",
-"		270f 3100  ES1371, ES1373 AudioPCI On Motherboard 6WIV2",
-"		270f 3102  ES1371, ES1373 AudioPCI On Motherboard 6WIV",
-"		270f 7060  ES1371, ES1373 AudioPCI On Motherboard 6ASA2",
-"		8086 4249  ES1371, ES1373 AudioPCI On Motherboard BI440ZX",
-"		8086 424c  ES1371, ES1373 AudioPCI On Motherboard BL440ZX",
-"		8086 425a  ES1371, ES1373 AudioPCI On Motherboard BZ440ZX",
-"		8086 4341  ES1371, ES1373 AudioPCI On Motherboard Cayman",
-"		8086 4343  ES1371, ES1373 AudioPCI On Motherboard Cape Cod",
-"		8086 4541  D815EEA Motherboard",
-"		8086 4649  ES1371, ES1373 AudioPCI On Motherboard Fire Island",
-"		8086 464a  ES1371, ES1373 AudioPCI On Motherboard FJ440ZX",
-"		8086 4d4f  ES1371, ES1373 AudioPCI On Motherboard Montreal",
-"		8086 4f43  ES1371, ES1373 AudioPCI On Motherboard OC440LX",
-"		8086 5243  ES1371, ES1373 AudioPCI On Motherboard RC440BX",
-"		8086 5352  ES1371, ES1373 AudioPCI On Motherboard SunRiver",
-"		8086 5643  ES1371, ES1373 AudioPCI On Motherboard Vancouver",
-"		8086 5753  ES1371, ES1373 AudioPCI On Motherboard WS440BX",
-"	5000  ES1370 [AudioPCI]",
-"	5880  5880 AudioPCI",
-"		1274 2000  Creative Sound Blaster AudioPCI128",
-"		1274 2003  Creative SoundBlaster AudioPCI 128",
-"		1274 5880  Creative Sound Blaster AudioPCI128",
-"		1274 8001  Sound Blaster 16PCI 4.1ch",
-"		1458 a000  5880 AudioPCI On Motherboard 6OXET",
-"		1462 6880  5880 AudioPCI On Motherboard MS-6188 1.00",
-"		270f 2001  5880 AudioPCI On Motherboard 6CTR",
-"		270f 2200  5880 AudioPCI On Motherboard 6WTX",
-"		270f 7040  5880 AudioPCI On Motherboard 6ATA4",
-"1275  Network Appliance Corporation",
-"1276  Switched Network Technologies, Inc.",
-"1277  Comstream",
-"1278  Transtech Parallel Systems Ltd.",
-"	0701  TPE3/TM3 PowerPC Node",
-"	0710  TPE5 PowerPC PCI board",
-"1279  Transmeta Corporation",
-"	0060  TM8000 Northbridge",
-"	0061  TM8000 AGP bridge",
-"	0295  Northbridge",
-"	0395  LongRun Northbridge",
-"	0396  SDRAM controller",
-"	0397  BIOS scratchpad",
-"127a  Rockwell International",
-"	1002  HCF 56k Data/Fax Modem",
-"		1092 094c  SupraExpress 56i PRO [Diamond SUP2380]",
-"		122d 4002  HPG / MDP3858-U",
-"		122d 4005  MDP3858-E",
-"		122d 4007  MDP3858-A/-NZ",
-"		122d 4012  MDP3858-SA",
-"		122d 4017  MDP3858-W",
-"		122d 4018  MDP3858-W",
-"		127a 1002  Rockwell 56K D/F HCF Modem",
-"	1003  HCF 56k Data/Fax Modem",
-"		0e11 b0bc  229-DF Zephyr",
-"		0e11 b114  229-DF Cheetah",
-"		1033 802b  229-DF",
-"		13df 1003  PCI56RX Modem",
-"		13e0 0117  IBM",
-"		13e0 0147  IBM F-1156IV+/R3 Spain V.90 Modem",
-"		13e0 0197  IBM",
-"		13e0 01c7  IBM F-1156IV+/R3 WW V.90 Modem",
-"		13e0 01f7  IBM",
-"		1436 1003  IBM",
-"		1436 1103  IBM 5614PM3G V.90 Modem",
-"		1436 1602  Compaq 229-DF Ducati",
-"	1004  HCF 56k Data/Fax/Voice Modem",
-"		1048 1500  MicroLink 56k Modem",
-"		10cf 1059  Fujitsu 229-DFRT",
-"	1005  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem",
-"		1005 127a  AOpen FM56-P",
-"		1033 8029  229-DFSV",
-"		1033 8054  Modem",
-"		10cf 103c  Fujitsu",
-"		10cf 1055  Fujitsu 229-DFSV",
-"		10cf 1056  Fujitsu 229-DFSV",
-"		122d 4003  MDP3858SP-U",
-"		122d 4006  Packard Bell MDP3858V-E",
-"		122d 4008  MDP3858SP-A/SP-NZ",
-"		122d 4009  MDP3858SP-E",
-"		122d 4010  MDP3858V-U",
-"		122d 4011  MDP3858SP-SA",
-"		122d 4013  MDP3858V-A/V-NZ",
-"		122d 4015  MDP3858SP-W",
-"		122d 4016  MDP3858V-W",
-"		122d 4019  MDP3858V-SA",
-"		13df 1005  PCI56RVP Modem",
-"		13e0 0187  IBM",
-"		13e0 01a7  IBM",
-"		13e0 01b7  IBM DF-1156IV+/R3 Spain V.90 Modem",
-"		13e0 01d7  IBM DF-1156IV+/R3 WW V.90 Modem",
-"		1436 1005  IBM",
-"		1436 1105  IBM",
-"		1437 1105  IBM 5614PS3G V.90 Modem",
-"	1022  HCF 56k Modem",
-"		1436 1303  M3-5614PM3G V.90 Modem",
-"	1023  HCF 56k Data/Fax Modem",
-"		122d 4020  Packard Bell MDP3858-WE",
-"		122d 4023  MDP3858-UE",
-"		13e0 0247  IBM F-1156IV+/R6 Spain V.90 Modem",
-"		13e0 0297  IBM",
-"		13e0 02c7  IBM F-1156IV+/R6 WW V.90 Modem",
-"		1436 1203  IBM",
-"		1436 1303  IBM",
-"	1024  HCF 56k Data/Fax/Voice Modem",
-"	1025  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem",
-"		10cf 106a  Fujitsu 235-DFSV",
-"		122d 4021  Packard Bell MDP3858V-WE",
-"		122d 4022  MDP3858SP-WE",
-"		122d 4024  MDP3858V-UE",
-"		122d 4025  MDP3858SP-UE",
-"	1026  HCF 56k PCI Speakerphone Modem",
-"	1032  HCF 56k Modem",
-"	1033  HCF 56k Modem",
-"	1034  HCF 56k Modem",
-"	1035  HCF 56k PCI Speakerphone Modem",
-"	1036  HCF 56k Modem",
-"	1085  HCF 56k Volcano PCI Modem",
-"	2005  HCF 56k Data/Fax Modem",
-"		104d 8044  229-DFSV",
-"		104d 8045  229-DFSV",
-"		104d 8055  PBE/Aztech 235W-DFSV",
-"		104d 8056  235-DFSV",
-"		104d 805a  Modem",
-"		104d 805f  Modem",
-"		104d 8074  Modem",
-"	2013  HSF 56k Data/Fax Modem",
-"		1179 0001  Modem",
-"		1179 ff00  Modem",
-"	2014  HSF 56k Data/Fax/Voice Modem",
-"		10cf 1057  Fujitsu Citicorp III",
-"		122d 4050  MSP3880-U",
-"		122d 4055  MSP3880-W",
-"	2015  HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem",
-"		10cf 1063  Fujitsu",
-"		10cf 1064  Fujitsu",
-"		1468 2015  Fujitsu",
-"	2016  HSF 56k Data/Fax/Voice/Spkp Modem",
-"		122d 4051  MSP3880V-W",
-"		122d 4052  MSP3880SP-W",
-"		122d 4054  MSP3880V-U",
-"		122d 4056  MSP3880SP-U",
-"		122d 4057  MSP3880SP-A",
-"	4311  Riptide HSF 56k PCI Modem",
-"		127a 4311  Ring Modular\? Riptide HSF RT HP Dom",
-"		13e0 0210  HP-GVC",
-"	4320  Riptide PCI Audio Controller",
-"		1235 4320  Riptide PCI Audio Controller",
-"	4321  Riptide HCF 56k PCI Modem",
-"		1235 4321  Hewlett Packard DF",
-"		1235 4324  Hewlett Packard DF",
-"		13e0 0210  Hewlett Packard DF",
-"		144d 2321  Riptide",
-"	4322  Riptide PCI Game Controller",
-"		1235 4322  Riptide PCI Game Controller",
-"	8234  RapidFire 616X ATM155 Adapter",
-"		108d 0022  RapidFire 616X ATM155 Adapter",
-"		108d 0027  RapidFire 616X ATM155 Adapter",
-"127b  Pixera Corporation",
-"127c  Crosspoint Solutions, Inc.",
-"127d  Vela Research",
-"127e  Winnov, L.P.",
-"127f  Fujifilm",
-"1280  Photoscript Group Ltd.",
-"1281  Yokogawa Electric Corporation",
-"1282  Davicom Semiconductor, Inc.",
-"	9009  Ethernet 100/10 MBit",
-"	9100  21x4x DEC-Tulip compatible 10/100 Ethernet",
-"	9102  21x4x DEC-Tulip compatible 10/100 Ethernet",
-"	9132  Ethernet 100/10 MBit",
-"1283  Integrated Technology Express, Inc.",
-"	673a  IT8330G",
-"	8211  ITE 8211F Single Channel UDMA 133 (ASUS 8211 (ITE IT8212 ATA RAID Controller))",
-"		1043 8138  P5GD1-VW Mainboard",
-"	8212  IT/ITE8212 Dual channel ATA RAID controller (PCI version seems to be IT8212, embedded seems to be ITE8212)",
-"		1283 0001  IT/ITE8212 Dual channel ATA RAID controller",
-"	8330  IT8330G",
-"	8872  IT8874F PCI Dual Serial Port Controller",
-"	8888  IT8888F PCI to ISA Bridge with SMB",
-"	8889  IT8889F PCI to ISA Bridge",
-"	e886  IT8330G",
-"1284  Sahara Networks, Inc.",
-"1285  Platform Technologies, Inc.",
-"	0100  AGOGO sound chip (aka ESS Maestro 1)",
-"1286  Mazet GmbH",
-"1287  M-Pact, Inc.",
-"	001e  LS220D DVD Decoder",
-"	001f  LS220C DVD Decoder",
-"1288  Timestep Corporation",
-"1289  AVC Technology, Inc.",
-"128a  Asante Technologies, Inc.",
-"128b  Transwitch Corporation",
-"128c  Retix Corporation",
-"128d  G2 Networks, Inc.",
-"	0021  ATM155 Adapter",
-"128e  Hoontech Corporation/Samho Multi Tech Ltd.",
-"	0008  ST128 WSS/SB",
-"	0009  ST128 SAM9407",
-"	000a  ST128 Game Port",
-"	000b  ST128 MPU Port",
-"	000c  ST128 Ctrl Port",
-"128f  Tateno Dennou, Inc.",
-"1290  Sord Computer Corporation",
-"1291  NCS Computer Italia",
-"1292  Tritech Microelectronics Inc",
-"1293  Media Reality Technology",
-"1294  Rhetorex, Inc.",
-"1295  Imagenation Corporation",
-"1296  Kofax Image Products",
-"1297  Holco Enterprise Co, Ltd/Shuttle Computer",
-"1298  Spellcaster Telecommunications Inc.",
-"1299  Knowledge Technology Lab.",
-"129a  VMetro, inc.",
-"	0615  PBT-615 PCI-X Bus Analyzer",
-"129b  Image Access",
-"129c  Jaycor",
-"129d  Compcore Multimedia, Inc.",
-"129e  Victor Company of Japan, Ltd.",
-"129f  OEC Medical Systems, Inc.",
-"12a0  Allen-Bradley Company",
-"12a1  Simpact Associates, Inc.",
-"12a2  Newgen Systems Corporation",
-"12a3  Lucent Technologies",
-"	8105  T8105 H100 Digital Switch",
-"12a4  NTT Electronics Technology Company",
-"12a5  Vision Dynamics Ltd.",
-"12a6  Scalable Networks, Inc.",
-"12a7  AMO GmbH",
-"12a8  News Datacom",
-"12a9  Xiotech Corporation",
-"12aa  SDL Communications, Inc.",
-"12ab  Yuan Yuan Enterprise Co., Ltd.",
-"	0002  AU8830 [Vortex2] Based Sound Card With A3D Support",
-"	3000  MPG-200C PCI DVD Decoder Card",
-"12ac  Measurex Corporation",
-"12ad  Multidata GmbH",
-"12ae  Alteon Networks Inc.",
-"	0001  AceNIC Gigabit Ethernet",
-"		1014 0104  Gigabit Ethernet-SX PCI Adapter",
-"		12ae 0001  Gigabit Ethernet-SX (Universal)",
-"		1410 0104  Gigabit Ethernet-SX PCI Adapter",
-"	0002  AceNIC Gigabit Ethernet (Copper)",
-"		10a9 8002  Acenic Gigabit Ethernet",
-"		12ae 0002  Gigabit Ethernet-T (3C986-T)",
-"	00fa  Farallon PN9100-T Gigabit Ethernet",
-"12af  TDK USA Corp",
-"12b0  Jorge Scientific Corp",
-"12b1  GammaLink",
-"12b2  General Signal Networks",
-"12b3  Inter-Face Co Ltd",
-"12b4  FutureTel Inc",
-"12b5  Granite Systems Inc.",
-"12b6  Natural Microsystems",
-"12b7  Cognex Modular Vision Systems Div. - Acumen Inc.",
-"12b8  Korg",
-"12b9  3Com Corp, Modem Division",
-"	1006  WinModem",
-"		12b9 005c  USR 56k Internal Voice WinModem (Model 3472)",
-"		12b9 005e  USR 56k Internal WinModem (Models 662975)",
-"		12b9 0062  USR 56k Internal Voice WinModem (Model 662978)",
-"		12b9 0068  USR 56k Internal Voice WinModem (Model 5690)",
-"		12b9 007a  USR 56k Internal Voice WinModem (Model 662974)",
-"		12b9 007f  USR 56k Internal WinModem (Models 5698, 5699)",
-"		12b9 0080  USR 56k Internal WinModem (Models 2975, 3528)",
-"		12b9 0081  USR 56k Internal Voice WinModem (Models 2974, 3529)",
-"		12b9 0091  USR 56k Internal Voice WinModem (Model 2978)",
-"	1007  USR 56k Internal WinModem",
-"		12b9 00a3  USR 56k Internal WinModem (Model 3595)",
-"	1008  56K FaxModem Model 5610",
-"		12b9 00a2  USR 56k Internal FAX Modem (Model 2977)",
-"		12b9 00aa  USR 56k Internal Voice Modem (Model 2976)",
-"		12b9 00ab  USR 56k Internal Voice Modem (Model 5609)",
-"		12b9 00ac  USR 56k Internal Voice Modem (Model 3298)",
-"		12b9 00ad  USR 56k Internal FAX Modem (Model 5610)",
-"12ba  BittWare, Inc.",
-"12bb  Nippon Unisoft Corporation",
-"12bc  Array Microsystems",
-"12bd  Computerm Corp.",
-"12be  Anchor Chips Inc.",
-"	3041  AN3041Q CO-MEM",
-"	3042  AN3042Q CO-MEM Lite",
-"		12be 3042  Anchor Chips Lite Evaluation Board",
-"12bf  Fujifilm Microdevices",
-"12c0  Infimed",
-"12c1  GMM Research Corp",
-"12c2  Mentec Limited",
-"12c3  Holtek Microelectronics Inc",
-"	0058  PCI NE2K Ethernet",
-"	5598  PCI NE2K Ethernet",
-"12c4  Connect Tech Inc",
-"	0001  Blue HEAT/PCI 8 (RS232/CL/RJ11)",
-"	0002  Blue HEAT/PCI 4 (RS232)",
-"	0003  Blue HEAT/PCI 2 (RS232)",
-"	0004  Blue HEAT/PCI 8 (UNIV, RS485)",
-"	0005  Blue HEAT/PCI 4+4/6+2 (UNIV, RS232/485)",
-"	0006  Blue HEAT/PCI 4 (OPTO, RS485)",
-"	0007  Blue HEAT/PCI 2+2 (RS232/485)",
-"	0008  Blue HEAT/PCI 2 (OPTO, Tx, RS485)",
-"	0009  Blue HEAT/PCI 2+6 (RS232/485)",
-"	000a  Blue HEAT/PCI 8 (Tx, RS485)",
-"	000b  Blue HEAT/PCI 4 (Tx, RS485)",
-"	000c  Blue HEAT/PCI 2 (20 MHz, RS485)",
-"	000d  Blue HEAT/PCI 2 PTM",
-"	0100  NT960/PCI",
-"	0201  cPCI Titan - 2 Port",
-"	0202  cPCI Titan - 4 Port",
-"	0300  CTI PCI UART 2 (RS232)",
-"	0301  CTI PCI UART 4 (RS232)",
-"	0302  CTI PCI UART 8 (RS232)",
-"	0310  CTI PCI UART 1+1 (RS232/485)",
-"	0311  CTI PCI UART 2+2 (RS232/485)",
-"	0312  CTI PCI UART 4+4 (RS232/485)",
-"	0320  CTI PCI UART 2",
-"	0321  CTI PCI UART 4",
-"	0322  CTI PCI UART 8",
-"	0330  CTI PCI UART 2 (RS485)",
-"	0331  CTI PCI UART 4 (RS485)",
-"	0332  CTI PCI UART 8 (RS485)",
-"12c5  Picture Elements Incorporated",
-"	007e  Imaging/Scanning Subsystem Engine",
-"	007f  Imaging/Scanning Subsystem Engine",
-"	0081  PCIVST [Grayscale Thresholding Engine]",
-"	0085  Video Simulator/Sender",
-"	0086  THR2 Multi-scale Thresholder",
-"12c6  Mitani Corporation",
-"12c7  Dialogic Corp",
-"12c8  G Force Co, Ltd",
-"12c9  Gigi Operations",
-"12ca  Integrated Computing Engines",
-"12cb  Antex Electronics Corporation",
-"12cc  Pluto Technologies International",
-"12cd  Aims Lab",
-"12ce  Netspeed Inc.",
-"12cf  Prophet Systems, Inc.",
-"12d0  GDE Systems, Inc.",
-"12d1  PSITech",
-"12d2  NVidia / SGS Thomson (Joint Venture)",
-"	0008  NV1",
-"	0009  DAC64",
-"	0018  Riva128",
-"		1048 0c10  VICTORY Erazor",
-"		107b 8030  STB Velocity 128",
-"		1092 0350  Viper V330",
-"		1092 1092  Viper V330",
-"		10b4 1b1b  STB Velocity 128",
-"		10b4 1b1d  STB Velocity 128",
-"		10b4 1b1e  STB Velocity 128, PAL TV-Out",
-"		10b4 1b20  STB Velocity 128 Sapphire",
-"		10b4 1b21  STB Velocity 128",
-"		10b4 1b22  STB Velocity 128 AGP, NTSC TV-Out",
-"		10b4 1b23  STB Velocity 128 AGP, PAL TV-Out",
-"		10b4 1b27  STB Velocity 128 DVD",
-"		10b4 1b88  MVP Pro 128",
-"		10b4 222a  STB Velocity 128 AGP",
-"		10b4 2230  STB Velocity 128",
-"		10b4 2232  STB Velocity 128",
-"		10b4 2235  STB Velocity 128 AGP",
-"		2a15 54a3  3DVision-SAGP / 3DexPlorer 3000",
-"	0019  Riva128ZX",
-"	0020  TNT",
-"	0028  TNT2",
-"	0029  UTNT2",
-"	002c  VTNT2",
-"	00a0  ITNT2",
-"12d3  Vingmed Sound A/S",
-"12d4  Ulticom (Formerly DGM&S)",
-"	0200  T1 Card",
-"12d5  Equator Technologies Inc",
-"	0003  BSP16",
-"	1000  BSP15",
-"12d6  Analogic Corp",
-"12d7  Biotronic SRL",
-"12d8  Pericom Semiconductor",
-"	8150  PCI to PCI Bridge",
-"12d9  Aculab PLC",
-"	0002  PCI Prosody",
-"	0004  cPCI Prosody",
-"	0005  Aculab E1/T1 PCI card",
-"	1078  Prosody X class e1000 device",
-"		12d9 000d  Prosody X PCI",
-"12da  True Time Inc.",
-"12db  Annapolis Micro Systems, Inc",
-"12dc  Symicron Computer Communication Ltd.",
-"12dd  Management Graphics",
-"12de  Rainbow Technologies",
-"	0200  CryptoSwift CS200",
-"12df  SBS Technologies Inc",
-"12e0  Chase Research",
-"	0010  ST16C654 Quad UART",
-"	0020  ST16C654 Quad UART",
-"	0030  ST16C654 Quad UART",
-"12e1  Nintendo Co, Ltd",
-"12e2  Datum Inc. Bancomm-Timing Division",
-"12e3  Imation Corp - Medical Imaging Systems",
-"12e4  Brooktrout Technology Inc",
-"12e5  Apex Semiconductor Inc",
-"12e6  Cirel Systems",
-"12e7  Sunsgroup Corporation",
-"12e8  Crisc Corp",
-"12e9  GE Spacenet",
-"12ea  Zuken",
-"12eb  Aureal Semiconductor",
-"	0001  Vortex 1",
-"		104d 8036  AU8820 Vortex Digital Audio Processor",
-"		1092 2000  Sonic Impact A3D",
-"		1092 2100  Sonic Impact A3D",
-"		1092 2110  Sonic Impact A3D",
-"		1092 2200  Sonic Impact A3D",
-"		122d 1002  AU8820 Vortex Digital Audio Processor",
-"		12eb 0001  AU8820 Vortex Digital Audio Processor",
-"		5053 3355  Montego",
-"	0002  Vortex 2",
-"		104d 8049  AU8830 Vortex 3D Digital Audio Processor",
-"		104d 807b  AU8830 Vortex 3D Digital Audio Processor",
-"		1092 3000  Monster Sound II",
-"		1092 3001  Monster Sound II",
-"		1092 3002  Monster Sound II",
-"		1092 3003  Monster Sound II",
-"		1092 3004  Monster Sound II",
-"		12eb 0002  AU8830 Vortex 3D Digital Audio Processor",
-"		12eb 0088  AU8830 Vortex 3D Digital Audio Processor",
-"		144d 3510  AU8830 Vortex 3D Digital Audio Processor",
-"		5053 3356  Montego II",
-"	0003  AU8810 Vortex Digital Audio Processor",
-"		104d 8049  AU8810 Vortex Digital Audio Processor",
-"		104d 8077  AU8810 Vortex Digital Audio Processor",
-"		109f 1000  AU8810 Vortex Digital Audio Processor",
-"		12eb 0003  AU8810 Vortex Digital Audio Processor",
-"		1462 6780  AU8810 Vortex Digital Audio Processor",
-"		14a4 2073  AU8810 Vortex Digital Audio Processor",
-"		14a4 2091  AU8810 Vortex Digital Audio Processor",
-"		14a4 2104  AU8810 Vortex Digital Audio Processor",
-"		14a4 2106  AU8810 Vortex Digital Audio Processor",
-"	8803  Vortex 56k Software Modem",
-"		12eb 8803  Vortex 56k Software Modem",
-"12ec  3A International, Inc.",
-"12ed  Optivision Inc.",
-"12ee  Orange Micro",
-"12ef  Vienna Systems",
-"12f0  Pentek",
-"12f1  Sorenson Vision Inc",
-"12f2  Gammagraphx, Inc.",
-"12f3  Radstone Technology",
-"12f4  Megatel",
-"12f5  Forks",
-"12f6  Dawson France",
-"12f7  Cognex",
-"12f8  Electronic Design GmbH",
-"	0002  VideoMaker",
-"12f9  Four Fold Ltd",
-"12fb  Spectrum Signal Processing",
-"	0001  PMC-MAI",
-"	00f5  F5 Dakar",
-"	02ad  PMC-2MAI",
-"	2adc  ePMC-2ADC",
-"	3100  PRO-3100",
-"	3500  PRO-3500",
-"	4d4f  Modena",
-"	8120  ePMC-8120",
-"	da62  Daytona C6201 PCI (Hurricane)",
-"	db62  Ingliston XBIF",
-"	dc62  Ingliston PLX9054",
-"	dd62  Ingliston JTAG/ISP",
-"	eddc  ePMC-MSDDC",
-"	fa01  ePMC-FPGA",
-"12fc  Capital Equipment Corp",
-"12fd  I2S",
-"12fe  ESD Electronic System Design GmbH",
-"12ff  Lexicon",
-"1300  Harman International Industries Inc",
-"1302  Computer Sciences Corp",
-"1303  Innovative Integration",
-"1304  Juniper Networks",
-"1305  Netphone, Inc",
-"1306  Duet Technologies",
-"1307  Measurement Computing",
-"	0001  PCI-DAS1602/16",
-"	000b  PCI-DIO48H",
-"	000c  PCI-PDISO8",
-"	000d  PCI-PDISO16",
-"	000f  PCI-DAS1200",
-"	0010  PCI-DAS1602/12",
-"	0014  PCI-DIO24H",
-"	0015  PCI-DIO24H/CTR3",
-"	0016  PCI-DIO48H/CTR15",
-"	0017  PCI-DIO96H",
-"	0018  PCI-CTR05",
-"	0019  PCI-DAS1200/JR",
-"	001a  PCI-DAS1001",
-"	001b  PCI-DAS1002",
-"	001c  PCI-DAS1602JR/16",
-"	001d  PCI-DAS6402/16",
-"	001e  PCI-DAS6402/12",
-"	001f  PCI-DAS16/M1",
-"	0020  PCI-DDA02/12",
-"	0021  PCI-DDA04/12",
-"	0022  PCI-DDA08/12",
-"	0023  PCI-DDA02/16",
-"	0024  PCI-DDA04/16",
-"	0025  PCI-DDA08/16",
-"	0026  PCI-DAC04/12-HS",
-"	0027  PCI-DAC04/16-HS",
-"	0028  PCI-DIO24",
-"	0029  PCI-DAS08",
-"	002c  PCI-INT32",
-"	0033  PCI-DUAL-AC5",
-"	0034  PCI-DAS-TC",
-"	0035  PCI-DAS64/M1/16",
-"	0036  PCI-DAS64/M2/16",
-"	0037  PCI-DAS64/M3/16",
-"	004c  PCI-DAS1000",
-"	004d  PCI-QUAD04",
-"	0052  PCI-DAS4020/12",
-"	0054  PCI-DIO96",
-"	005e  PCI-DAS6025",
-"1308  Jato Technologies Inc.",
-"	0001  NetCelerator Adapter",
-"		1308 0001  NetCelerator Adapter",
-"1309  AB Semiconductor Ltd",
-"130a  Mitsubishi Electric Microcomputer",
-"130b  Colorgraphic Communications Corp",
-"130c  Ambex Technologies, Inc",
-"130d  Accelerix Inc",
-"130e  Yamatake-Honeywell Co. Ltd",
-"130f  Advanet Inc",
-"1310  Gespac",
-"1311  Videoserver, Inc",
-"1312  Acuity Imaging, Inc",
-"1313  Yaskawa Electric Co.",
-"1316  Teradyne Inc",
-"1317  Linksys",
-"	0981  21x4x DEC-Tulip compatible 10/100 Ethernet",
-"	0985  NC100 Network Everywhere Fast Ethernet 10/100",
-"		1734 100c  Scenic N300 ADMtek AN983 10/100 Mbps PCI Adapter",
-"	1985  21x4x DEC-Tulip compatible 10/100 Ethernet",
-"	2850  HSP MicroModem 56",
-"	5120  ADMtek ADM5120 OpenGate System-on-Chip",
-"	8201  ADMtek ADM8211 802.11b Wireless Interface",
-"		10b8 2635  SMC2635W 802.11b (11Mbps) wireless lan pcmcia (cardbus) card",
-"		1317 8201  SMC2635W 802.11b (11mbps) wireless lan pcmcia (cardbus) card",
-"	8211  ADMtek ADM8211 802.11b Wireless Interface",
-"	9511  21x4x DEC-Tulip compatible 10/100 Ethernet",
-"1318  Packet Engines Inc.",
-"	0911  GNIC-II PCI Gigabit Ethernet [Hamachi]",
-"1319  Fortemedia, Inc",
-"	0801  Xwave QS3000A [FM801]",
-"		1319 1319  FM801 PCI Audio",
-"	0802  Xwave QS3000A [FM801 game port]",
-"		1319 1319  FM801 PCI Joystick",
-"	1000  FM801 PCI Audio",
-"	1001  FM801 PCI Joystick",
-"131a  Finisar Corp.",
-"131c  Nippon Electro-Sensory Devices Corp",
-"131d  Sysmic, Inc.",
-"131e  Xinex Networks Inc",
-"131f  Siig Inc",
-"	1000  CyberSerial (1-port) 16550",
-"	1001  CyberSerial (1-port) 16650",
-"	1002  CyberSerial (1-port) 16850",
-"	1010  Duet 1S(16550)+1P",
-"	1011  Duet 1S(16650)+1P",
-"	1012  Duet 1S(16850)+1P",
-"	1020  CyberParallel (1-port)",
-"	1021  CyberParallel (2-port)",
-"	1030  CyberSerial (2-port) 16550",
-"	1031  CyberSerial (2-port) 16650",
-"	1032  CyberSerial (2-port) 16850",
-"	1034  Trio 2S(16550)+1P",
-"	1035  Trio 2S(16650)+1P",
-"	1036  Trio 2S(16850)+1P",
-"	1050  CyberSerial (4-port) 16550",
-"	1051  CyberSerial (4-port) 16650",
-"	1052  CyberSerial (4-port) 16850",
-"	2000  CyberSerial (1-port) 16550",
-"	2001  CyberSerial (1-port) 16650",
-"	2002  CyberSerial (1-port) 16850",
-"	2010  Duet 1S(16550)+1P",
-"	2011  Duet 1S(16650)+1P",
-"	2012  Duet 1S(16850)+1P",
-"	2020  CyberParallel (1-port)",
-"	2021  CyberParallel (2-port)",
-"	2030  CyberSerial (2-port) 16550",
-"		131f 2030  PCI Serial Card",
-"	2031  CyberSerial (2-port) 16650",
-"	2032  CyberSerial (2-port) 16850",
-"	2040  Trio 1S(16550)+2P",
-"	2041  Trio 1S(16650)+2P",
-"	2042  Trio 1S(16850)+2P",
-"	2050  CyberSerial (4-port) 16550",
-"	2051  CyberSerial (4-port) 16650",
-"	2052  CyberSerial (4-port) 16850",
-"	2060  Trio 2S(16550)+1P",
-"	2061  Trio 2S(16650)+1P",
-"	2062  Trio 2S(16850)+1P",
-"	2081  CyberSerial (8-port) ST16654",
-"1320  Crypto AG",
-"1321  Arcobel Graphics BV",
-"1322  MTT Co., Ltd",
-"1323  Dome Inc",
-"1324  Sphere Communications",
-"1325  Salix Technologies, Inc",
-"1326  Seachange international",
-"1327  Voss scientific",
-"1328  quadrant international",
-"1329  Productivity Enhancement",
-"132a  Microcom Inc.",
-"132b  Broadband Technologies",
-"132c  Micrel Inc",
-"132d  Integrated Silicon Solution, Inc.",
-"1330  MMC Networks",
-"1331  Radisys Corp.",
-"	0030  ENP-2611",
-"	8200  82600 Host Bridge",
-"	8201  82600 IDE",
-"	8202  82600 USB",
-"	8210  82600 PCI Bridge",
-"1332  Micro Memory",
-"	5415  MM-5415CN PCI Memory Module with Battery Backup",
-"	5425  MM-5425CN PCI 64/66 Memory Module with Battery Backup",
-"	6140  MM-6140D",
-"1334  Redcreek Communications, Inc",
-"1335  Videomail, Inc",
-"1337  Third Planet Publishing",
-"1338  BT Electronics",
-"133a  Vtel Corp",
-"133b  Softcom Microsystems",
-"133c  Holontech Corp",
-"133d  SS Technologies",
-"133e  Virtual Computer Corp",
-"133f  SCM Microsystems",
-"1340  Atalla Corp",
-"1341  Kyoto Microcomputer Co",
-"1342  Promax Systems Inc",
-"1343  Phylon Communications Inc",
-"1344  Crucial Technology",
-"1345  Arescom Inc",
-"1347  Odetics",
-"1349  Sumitomo Electric Industries, Ltd.",
-"134a  DTC Technology Corp.",
-"	0001  Domex 536",
-"	0002  Domex DMX3194UP SCSI Adapter",
-"134b  ARK Research Corp.",
-"134c  Chori Joho System Co. Ltd",
-"134d  PCTel Inc",
-"	2189  HSP56 MicroModem",
-"	2486  2304WT V.92 MDC Modem",
-"	7890  HSP MicroModem 56",
-"		134d 0001  PCT789 adapter",
-"	7891  HSP MicroModem 56",
-"		134d 0001  HSP MicroModem 56",
-"	7892  HSP MicroModem 56",
-"	7893  HSP MicroModem 56",
-"	7894  HSP MicroModem 56",
-"	7895  HSP MicroModem 56",
-"	7896  HSP MicroModem 56",
-"	7897  HSP MicroModem 56",
-"134e  CSTI",
-"134f  Algo System Co Ltd",
-"1350  Systec Co. Ltd",
-"1351  Sonix Inc",
-"1353  Thales Idatys",
-"	0002  Proserver",
-"	0003  PCI-FUT",
-"	0004  PCI-S0",
-"	0005  PCI-FUT-S0",
-"1354  Dwave System Inc",
-"1355  Kratos Analytical Ltd",
-"1356  The Logical Co",
-"1359  Prisa Networks",
-"135a  Brain Boxes",
-"135b  Giganet Inc",
-"135c  Quatech Inc",
-"	0010  QSC-100",
-"	0020  DSC-100",
-"	0030  DSC-200/300",
-"	0040  QSC-200/300",
-"	0050  ESC-100D",
-"	0060  ESC-100M",
-"	00f0  MPAC-100 Syncronous Serial Card (Zilog 85230)",
-"	0170  QSCLP-100",
-"	0180  DSCLP-100",
-"	0190  SSCLP-100",
-"	01a0  QSCLP-200/300",
-"	01b0  DSCLP-200/300",
-"	01c0  SSCLP-200/300",
-"135d  ABB Network Partner AB",
-"135e  Sealevel Systems Inc",
-"	5101  Route 56.PCI - Multi-Protocol Serial Interface (Zilog Z16C32)",
-"	7101  Single Port RS-232/422/485/530",
-"	7201  Dual Port RS-232/422/485 Interface",
-"	7202  Dual Port RS-232 Interface",
-"	7401  Four Port RS-232 Interface",
-"	7402  Four Port RS-422/485 Interface",
-"	7801  Eight Port RS-232 Interface",
-"	7804  Eight Port RS-232/422/485 Interface",
-"	8001  8001 Digital I/O Adapter",
-"135f  I-Data International A-S",
-"1360  Meinberg Funkuhren",
-"	0101  PCI32 DCF77 Radio Clock",
-"	0102  PCI509 DCF77 Radio Clock",
-"	0103  PCI510 DCF77 Radio Clock",
-"	0104  PCI511 DCF77 Radio Clock",
-"	0201  GPS167PCI GPS Receiver",
-"	0202  GPS168PCI GPS Receiver",
-"	0203  GPS169PCI GPS Receiver",
-"	0204  GPS170PCI GPS Receiver",
-"	0301  TCR510PCI IRIG Timecode Reader",
-"	0302  TCR167PCI IRIG Timecode Reader",
-"1361  Soliton Systems K.K.",
-"1362  Fujifacom Corporation",
-"1363  Phoenix Technology Ltd",
-"1364  ATM Communications Inc",
-"1365  Hypercope GmbH",
-"1366  Teijin Seiki Co. Ltd",
-"1367  Hitachi Zosen Corporation",
-"1368  Skyware Corporation",
-"1369  Digigram",
-"136a  High Soft Tech",
-"136b  Kawasaki Steel Corporation",
-"	ff01  KL5A72002 Motion JPEG",
-"136c  Adtek System Science Co Ltd",
-"136d  Gigalabs Inc",
-"136f  Applied Magic Inc",
-"1370  ATL Products",
-"1371  CNet Technology Inc",
-"	434e  GigaCard Network Adapter",
-"		1371 434e  N-Way PCI-Bus Giga-Card 1000/100/10Mbps(L)",
-"1373  Silicon Vision Inc",
-"1374  Silicom Ltd.",
-"	0024  Silicom Dual port Giga Ethernet BGE Bypass Server Adapter",
-"	0025  Silicom Quad port Giga Ethernet BGE Bypass Server Adapter",
-"	0026  Silicom Dual port Fiber Giga Ethernet 546 Bypass Server Adapter",
-"	0027  Silicom Dual port Fiber LX Giga Ethernet 546 Bypass Server Adapter",
-"	0029  Silicom Dual port Copper Giga Ethernet 546GB Bypass Server Adapter",
-"	002a  Silicom Dual port Fiber Giga Ethernet 546 TAP/Bypass Server Adapter",
-"	002b  Silicom Dual port Copper Fast Ethernet 546 TAP/Bypass Server Adapter (PXE2TBI)",
-"	002c  Silicom Quad port Copper Giga Ethernet 546GB Bypass Server Adapter (PXG4BPI)",
-"	002d  Silicom Quad port Fiber-SX Giga Ethernet 546GB Bypass Server Adapter (PXG4BPFI)",
-"	002e  Silicom Quad port Fiber-LX Giga Ethernet 546GB Bypass Server Adapter (PXG4BPFI-LX)",
-"	002f  Silicom Dual port Fiber-SX Giga Ethernet 546GB Low profile Bypass Server Adapter (PXG2BPFIL)",
-"	0030  Silicom Dual port Fiber-LX Giga Ethernet 546GB Low profile Bypass Server Adapter",
-"	0031  Silicom Quad port Copper Giga Ethernet PCI-E Bypass Server Adapter",
-"	0032  Silicom Dual port Copper Fast Ethernet 546 TAP/Bypass Server Adapter",
-"	0034  Silicom Dual port Copper Giga Ethernet PCI-E BGE Bypass Server Adapter",
-"	0035  Silicom Quad port Copper Giga Ethernet PCI-E BGE Bypass Server Adapter",
-"	0036  Silicom Dual port Fiber Giga Ethernet PCI-E BGE Bypass Server Adapter",
-"	0037  Silicom Quad port Copper Ethernet PCI-E Intel based Bypass Server Adapter",
-"	0038  Silicom Quad port Copper Ethernet PCI-E Intel based Bypass Server Adapter",
-"	0039  Silicom Dual port Fiber-SX Ethernet PCI-E Intel based Bypass Server Adapter",
-"	003a  Silicom Dual port Fiber-LX Ethernet PCI-E Intel based Bypass Server Adapter",
-"1375  Argosystems Inc",
-"1376  LMC",
-"1377  Electronic Equipment Production & Distribution GmbH",
-"1378  Telemann Co. Ltd",
-"1379  Asahi Kasei Microsystems Co Ltd",
-"137a  Mark of the Unicorn Inc",
-"	0001  PCI-324 Audiowire Interface",
-"137b  PPT Vision",
-"137c  Iwatsu Electric Co Ltd",
-"137d  Dynachip Corporation",
-"137e  Patriot Scientific Corporation",
-"137f  Japan Satellite Systems Inc",
-"1380  Sanritz Automation Co Ltd",
-"1381  Brains Co. Ltd",
-"1382  Marian - Electronic & Software",
-"	0001  ARC88 audio recording card",
-"	2008  Prodif 96 Pro sound system",
-"	2048  Prodif Plus sound system",
-"	2088  Marc 8 Midi sound system",
-"	20c8  Marc A sound system",
-"	4008  Marc 2 sound system",
-"	4010  Marc 2 Pro sound system",
-"	4048  Marc 4 MIDI sound system",
-"	4088  Marc 4 Digi sound system",
-"	4248  Marc X sound system",
-"	4424  TRACE D4 Sound System",
-"1383  Controlnet Inc",
-"1384  Reality Simulation Systems Inc",
-"1385  Netgear",
-"	0013  WG311T 108 Mbps Wireless PCI Adapter",
-"	311a  GA511 Gigabit Ethernet",
-"	4100  802.11b Wireless Adapter (MA301)",
-"	4105  MA311 802.11b wireless adapter",
-"	4251  WG111T 108 Mbps Wireless USB 2.0 Adapter",
-"	4400  WAG511 802.11a/b/g Dual Band Wireless PC Card",
-"	4600  WAG511 802.11a/b/g Dual Band Wireless PC Card",
-"	4601  WAG511 802.11a/b/g Dual Band Wireless PC Card",
-"	4610  WAG511 802.11a/b/g Dual Band Wireless PC Card",
-"	4800  WG511(v1) 54 Mbps Wireless PC Card",
-"	4900  WG311v1 54 Mbps Wireless PCI Adapter",
-"	4a00  WAG311 802.11a/g Wireless PCI Adapter",
-"	4b00  WG511T 108 Mbps Wireless PC Card",
-"	4c00  WG311v2 54 Mbps Wireless PCI Adapter",
-"	4d00  WG311T 108 Mbps Wireless PCI Adapter",
-"	4e00  WG511v2 54 Mbps Wireless PC Card",
-"	4f00  WG511U Double 108 Mbps  Wireless PC Card",
-"	5200  GA511 Gigabit PC Card",
-"	620a  GA620 Gigabit Ethernet",
-"	622a  GA622",
-"	630a  GA630 Gigabit Ethernet",
-"	6b00  WG311v3 54 Mbps Wireless PCI Adapter",
-"	6d00  WPNT511 RangeMax 240 Mbps Wireless PC Card",
-"	f004  FA310TX",
-"1386  Video Domain Technologies",
-"1387  Systran Corp",
-"1388  Hitachi Information Technology Co Ltd",
-"1389  Applicom International",
-"	0001  PCI1500PFB [Intelligent fieldbus adaptor]",
-"138a  Fusion Micromedia Corp",
-"138b  Tokimec Inc",
-"138c  Silicon Reality",
-"138d  Future Techno Designs pte Ltd",
-"138e  Basler GmbH",
-"138f  Patapsco Designs Inc",
-"1390  Concept Development Inc",
-"1391  Development Concepts Inc",
-"1392  Medialight Inc",
-"1393  Moxa Technologies Co Ltd",
-"	1040  Smartio C104H/PCI",
-"	1141  Industrio CP-114",
-"	1680  Smartio C168H/PCI",
-"	2040  Intellio CP-204J",
-"	2180  Intellio C218 Turbo PCI",
-"	3200  Intellio C320 Turbo PCI",
-"1394  Level One Communications",
-"	0001  LXT1001 Gigabit Ethernet",
-"		1394 0001  NetCelerator Adapter",
-"1395  Ambicom Inc",
-"1396  Cipher Systems Inc",
-"1397  Cologne Chip Designs GmbH",
-"	08b4  ISDN network Controller [HFC-4S]",
-"		1397 b520  HFC-4S [IOB4ST]",
-"		1397 b540  HFC-4S [Swyx 4xS0 SX2 QuadBri]",
-"	16b8  ISDN network Controller [HFC-8S]",
-"	2bd0  ISDN network controller [HFC-PCI]",
-"		0675 1704  ISDN Adapter (PCI Bus, D, C)",
-"		0675 1708  ISDN Adapter (PCI Bus, D, C, ACPI)",
-"		1397 2bd0  ISDN Board",
-"		e4bf 1000  CI1-1-Harp",
-"1398  Clarion co. Ltd",
-"1399  Rios systems Co Ltd",
-"139a  Alacritech Inc",
-"	0001  Quad Port 10/100 Server Accelerator",
-"	0003  Single Port 10/100 Server Accelerator",
-"	0005  Single Port Gigabit Server Accelerator",
-"139b  Mediasonic Multimedia Systems Ltd",
-"139c  Quantum 3d Inc",
-"139d  EPL limited",
-"139e  Media4",
-"139f  Aethra s.r.l.",
-"13a0  Crystal Group Inc",
-"13a1  Kawasaki Heavy Industries Ltd",
-"13a2  Ositech Communications Inc",
-"13a3  Hifn Inc.",
-"	0005  7751 Security Processor",
-"	0006  6500 Public Key Processor",
-"	0007  7811 Security Processor",
-"	0012  7951 Security Processor",
-"	0014  78XX Security Processor",
-"	0016  8065 Security Processor",
-"	0017  8165 Security Processor",
-"	0018  8154 Security Processor",
-"	001d  7956 Security Processor",
-"	0020  7955 Security Processor",
-"	0026  8155 Security Processor",
-"13a4  Rascom Inc",
-"13a5  Audio Digital Imaging Inc",
-"13a6  Videonics Inc",
-"13a7  Teles AG",
-"13a8  Exar Corp.",
-"	0152  XR17C/D152 Dual PCI UART",
-"	0154  XR17C154 Quad UART",
-"	0158  XR17C158 Octal UART",
-"13a9  Siemens Medical Systems, Ultrasound Group",
-"13aa  Broadband Networks Inc",
-"13ab  Arcom Control Systems Ltd",
-"13ac  Motion Media Technology Ltd",
-"13ad  Nexus Inc",
-"13ae  ALD Technology Ltd",
-"13af  T.Sqware",
-"13b0  Maxspeed Corp",
-"13b1  Tamura corporation",
-"13b2  Techno Chips Co. Ltd",
-"13b3  Lanart Corporation",
-"13b4  Wellbean Co Inc",
-"13b5  ARM",
-"13b6  Dlog GmbH",
-"13b7  Logic Devices Inc",
-"13b8  Nokia Telecommunications oy",
-"13b9  Elecom Co Ltd",
-"13ba  Oxford Instruments",
-"13bb  Sanyo Technosound Co Ltd",
-"13bc  Bitran Corporation",
-"13bd  Sharp corporation",
-"13be  Miroku Jyoho Service Co. Ltd",
-"13bf  Sharewave Inc",
-"13c0  Microgate Corporation",
-"	0010  SyncLink Adapter v1",
-"	0020  SyncLink SCC Adapter",
-"	0030  SyncLink Multiport Adapter",
-"	0210  SyncLink Adapter v2",
-"13c1  3ware Inc",
-"	1000  5xxx/6xxx-series PATA-RAID",
-"	1001  7xxx/8xxx-series PATA/SATA-RAID",
-"		13c1 1001  7xxx/8xxx-series PATA/SATA-RAID",
-"	1002  9xxx-series SATA-RAID",
-"	1003  9550SX SATA-RAID",
-"13c2  Technotrend Systemtechnik GmbH",
-"	000e  Technotrend/Hauppauge DVB card rev2.3",
-"13c3  Janz Computer AG",
-"13c4  Phase Metrics",
-"13c5  Alphi Technology Corp",
-"13c6  Condor Engineering Inc",
-"	0520  CEI-520 A429 Card",
-"	0620  CEI-620 A429 Card",
-"	0820  CEI-820 A429 Card",
-"13c7  Blue Chip Technology Ltd",
-"13c8  Apptech Inc",
-"13c9  Eaton Corporation",
-"13ca  Iomega Corporation",
-"13cb  Yano Electric Co Ltd",
-"13cc  Metheus Corporation",
-"13cd  Compatible Systems Corporation",
-"13ce  Cocom A/S",
-"13cf  Studio Audio & Video Ltd",
-"13d0  Techsan Electronics Co Ltd",
-"	2103  B2C2 FlexCopII DVB chip / Technisat SkyStar2 DVB card",
-"	2200  B2C2 FlexCopIII DVB chip / Technisat SkyStar2 DVB card",
-"13d1  Abocom Systems Inc",
-"	ab02  ADMtek Centaur-C rev 17 [D-Link DFE-680TX] CardBus Fast Ethernet Adapter",
-"	ab03  21x4x DEC-Tulip compatible 10/100 Ethernet",
-"	ab06  RTL8139 [FE2000VX] CardBus Fast Ethernet Attached Port Adapter",
-"	ab08  21x4x DEC-Tulip compatible 10/100 Ethernet",
-"13d2  Shark Multimedia Inc",
-"13d3  IMC Networks",
-"13d4  Graphics Microsystems Inc",
-"13d5  Media 100 Inc",
-"13d6  K.I. Technology Co Ltd",
-"13d7  Toshiba Engineering Corporation",
-"13d8  Phobos corporation",
-"13d9  Apex PC Solutions Inc",
-"13da  Intresource Systems pte Ltd",
-"13db  Janich & Klass Computertechnik GmbH",
-"13dc  Netboost Corporation",
-"13dd  Multimedia Bundle Inc",
-"13de  ABB Robotics Products AB",
-"13df  E-Tech Inc",
-"	0001  PCI56RVP Modem",
-"		13df 0001  PCI56RVP Modem",
-"13e0  GVC Corporation",
-"13e1  Silicom Multimedia Systems Inc",
-"13e2  Dynamics Research Corporation",
-"13e3  Nest Inc",
-"13e4  Calculex Inc",
-"13e5  Telesoft Design Ltd",
-"13e6  Argosy research Inc",
-"13e7  NAC Incorporated",
-"13e8  Chip Express Corporation",
-"13e9  Intraserver Technology Inc",
-"13ea  Dallas Semiconductor",
-"13eb  Hauppauge Computer Works Inc",
-"13ec  Zydacron Inc",
-"	000a  NPC-RC01 Remote control receiver",
-"13ed  Raytheion E-Systems",
-"13ee  Hayes Microcomputer Products Inc",
-"13ef  Coppercom Inc",
-"13f0  Sundance Technology Inc / IC Plus Corp",
-"	0200  IC Plus IP100A Integrated 10/100 Ethernet MAC + PHY",
-"	0201  ST201 Sundance Ethernet",
-"	1023  IC Plus IP1000 Family Gigabit Ethernet",
-"13f1  Oce' - Technologies B.V.",
-"13f2  Ford Microelectronics Inc",
-"13f3  Mcdata Corporation",
-"13f4  Troika Networks, Inc.",
-"	1401  Zentai Fibre Channel Adapter",
-"13f5  Kansai Electric Co. Ltd",
-"13f6  C-Media Electronics Inc",
-"	0011  CMI8738",
-"	0100  CM8338A",
-"		13f6 ffff  CMI8338/C3DX PCI Audio Device",
-"	0101  CM8338B",
-"		13f6 0101  CMI8338-031 PCI Audio Device",
-"	0111  CM8738",
-"		1019 0970  P6STP-FL motherboard",
-"		1043 8035  CUSI-FX motherboard",
-"		1043 8077  CMI8738 6-channel audio controller",
-"		1043 80e2  CMI8738 6ch-MX",
-"		13f6 0111  CMI8738/C3DX PCI Audio Device",
-"		1681 a000  Gamesurround MUSE XL",
-"	0211  CM8738",
-"13f7  Wildfire Communications",
-"13f8  Ad Lib Multimedia Inc",
-"13f9  NTT Advanced Technology Corp.",
-"13fa  Pentland Systems Ltd",
-"13fb  Aydin Corp",
-"13fc  Computer Peripherals International",
-"13fd  Micro Science Inc",
-"13fe  Advantech Co. Ltd",
-"	1240  PCI-1240 4-channel stepper motor controller card",
-"	1600  PCI-1612 4-port RS-232/422/485 PCI communication card",
-"	1733  PCI-1733 32-channel isolated digital input card",
-"	1752  PCI-1752",
-"	1754  PCI-1754",
-"	1756  PCI-1756",
-"13ff  Silicon Spice Inc",
-"1400  Artx Inc",
-"	1401  9432 TX",
-"1401  CR-Systems A/S",
-"1402  Meilhaus Electronic GmbH",
-"1403  Ascor Inc",
-"1404  Fundamental Software Inc",
-"1405  Excalibur Systems Inc",
-"1406  Oce' Printing Systems GmbH",
-"1407  Lava Computer mfg Inc",
-"	0100  Lava Dual Serial",
-"	0101  Lava Quatro A",
-"	0102  Lava Quatro B",
-"	0110  Lava DSerial-PCI Port A",
-"	0111  Lava DSerial-PCI Port B",
-"	0120  Quattro-PCI A",
-"	0121  Quattro-PCI B",
-"	0180  Lava Octo A",
-"	0181  Lava Octo B",
-"	0200  Lava Port Plus",
-"	0201  Lava Quad A",
-"	0202  Lava Quad B",
-"	0220  Lava Quattro PCI Ports A/B",
-"	0221  Lava Quattro PCI Ports C/D",
-"	0500  Lava Single Serial",
-"	0600  Lava Port 650",
-"	8000  Lava Parallel",
-"	8001  Dual parallel port controller A",
-"	8002  Lava Dual Parallel port A",
-"	8003  Lava Dual Parallel port B",
-"	8800  BOCA Research IOPPAR",
-"1408  Aloka Co. Ltd",
-"1409  Timedia Technology Co Ltd",
-"	7168  PCI2S550 (Dual 16550 UART)",
-"140a  DSP Research Inc",
-"140b  Ramix Inc",
-"140c  Elmic Systems Inc",
-"140d  Matsushita Electric Works Ltd",
-"140e  Goepel Electronic GmbH",
-"140f  Salient Systems Corp",
-"1410  Midas lab Inc",
-"1411  Ikos Systems Inc",
-"1412  VIA Technologies Inc.",
-"	1712  ICE1712 [Envy24] PCI Multi-Channel I/O Controller",
-"		1412 1712  Hoontech ST Audio DSP 24",
-"		1412 d630  M-Audio Delta 1010",
-"		1412 d631  M-Audio Delta DiO",
-"		1412 d632  M-Audio Delta 66",
-"		1412 d633  M-Audio Delta 44",
-"		1412 d634  M-Audio Delta Audiophile",
-"		1412 d635  M-Audio Delta TDIF",
-"		1412 d637  M-Audio Delta RBUS",
-"		1412 d638  M-Audio Delta 410",
-"		1412 d63b  M-Audio Delta 1010LT",
-"		1412 d63c  Digigram VX442",
-"		1416 1712  Hoontech ST Audio DSP 24 Media 7.1",
-"		153b 1115  EWS88 MT",
-"		153b 1125  EWS88 MT (Master)",
-"		153b 112b  EWS88 D",
-"		153b 112c  EWS88 D (Master)",
-"		153b 1130  EWX 24/96",
-"		153b 1138  DMX 6fire 24/96",
-"		153b 1151  PHASE88",
-"		16ce 1040  Edirol DA-2496",
-"	1724  VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller",
-"		1412 1724  Albatron PX865PE 7.1",
-"		1412 3630  M-Audio Revolution 7.1",
-"		1412 3631  M-Audio Revolution 5.1",
-"		153b 1145  Aureon 7.1 Space",
-"		153b 1147  Aureon 5.1 Sky",
-"		153b 1153  Aureon 7.1 Universe",
-"		270f f641  ZNF3-150",
-"		270f f645  ZNF3-250",
-"1413  Addonics",
-"1414  Microsoft Corporation",
-"1415  Oxford Semiconductor Ltd",
-"	8403  VScom 011H-EP1 1 port parallel adaptor",
-"	9501  OX16PCI954 (Quad 16950 UART) function 0",
-"		131f 2050  CyberPro (4-port)",
-"		131f 2051  CyberSerial 4S Plus",
-"		15ed 2000  MCCR Serial p0-3 of 8",
-"		15ed 2001  MCCR Serial p0-3 of 16",
-"	950a  EXSYS EX-41092 Dual 16950 Serial adapter",
-"	950b  OXCB950 Cardbus 16950 UART",
-"	9510  OX16PCI954 (Quad 16950 UART) function 1 (Disabled)",
-"	9511  OX16PCI954 (Quad 16950 UART) function 1",
-"		15ed 2000  MCCR Serial p4-7 of 8",
-"		15ed 2001  MCCR Serial p4-15 of 16",
-"	9521  OX16PCI952 (Dual 16950 UART)",
-"	9523  OX16PCI952 Integrated Parallel Port",
-"1416  Multiwave Innovation pte Ltd",
-"1417  Convergenet Technologies Inc",
-"1418  Kyushu electronics systems Inc",
-"1419  Excel Switching Corp",
-"141a  Apache Micro Peripherals Inc",
-"141b  Zoom Telephonics Inc",
-"141d  Digitan Systems Inc",
-"141e  Fanuc Ltd",
-"141f  Visiontech Ltd",
-"1420  Psion Dacom plc",
-"	8002  Gold Card NetGlobal 56k+10/100Mb CardBus (Ethernet part)",
-"	8003  Gold Card NetGlobal 56k+10/100Mb CardBus (Modem part)",
-"1421  Ads Technologies Inc",
-"1422  Ygrec Systems Co Ltd",
-"1423  Custom Technology Corp.",
-"1424  Videoserver Connections",
-"1425  Chelsio Communications Inc",
-"	000b  T210 Protocol Engine",
-"1426  Storage Technology Corp.",
-"1427  Better On-Line Solutions",
-"1428  Edec Co Ltd",
-"1429  Unex Technology Corp.",
-"142a  Kingmax Technology Inc",
-"142b  Radiolan",
-"142c  Minton Optic Industry Co Ltd",
-"142d  Pix stream Inc",
-"142e  Vitec Multimedia",
-"	4020  VM2-2 [Video Maker 2] MPEG1/2 Encoder",
-"	4337  VM2-2-C7 [Video Maker 2 rev. C7] MPEG1/2 Encoder",
-"142f  Radicom Research Inc",
-"1430  ITT Aerospace/Communications Division",
-"1431  Gilat Satellite Networks",
-"1432  Edimax Computer Co.",
-"	9130  RTL81xx Fast Ethernet",
-"1433  Eltec Elektronik GmbH",
-"1435  RTD Embedded Technologies, Inc.",
-"1436  CIS Technology Inc",
-"1437  Nissin Inc Co",
-"1438  Atmel-dream",
-"1439  Outsource Engineering & Mfg. Inc",
-"143a  Stargate Solutions Inc",
-"143b  Canon Research Center, America",
-"143c  Amlogic Inc",
-"143d  Tamarack Microelectronics Inc",
-"143e  Jones Futurex Inc",
-"143f  Lightwell Co Ltd - Zax Division",
-"1440  ALGOL Corp.",
-"1441  AGIE Ltd",
-"1442  Phoenix Contact GmbH & Co.",
-"1443  Unibrain S.A.",
-"1444  TRW",
-"1445  Logical DO Ltd",
-"1446  Graphin Co Ltd",
-"1447  AIM GmBH",
-"1448  Alesis Studio Electronics",
-"1449  TUT Systems Inc",
-"144a  Adlink Technology",
-"	7296  PCI-7296",
-"	7432  PCI-7432",
-"	7433  PCI-7433",
-"	7434  PCI-7434",
-"	7841  PCI-7841",
-"	8133  PCI-8133",
-"	8164  PCI-8164",
-"	8554  PCI-8554",
-"	9111  PCI-9111",
-"	9113  PCI-9113",
-"	9114  PCI-9114",
-"144b  Loronix Information Systems Inc",
-"144c  Catalina Research Inc",
-"144d  Samsung Electronics Co Ltd",
-"	c00c  P35 laptop",
-"144e  OLITEC",
-"144f  Askey Computer Corp.",
-"1450  Octave Communications Ind.",
-"1451  SP3D Chip Design GmBH",
-"1453  MYCOM Inc",
-"1454  Altiga Networks",
-"1455  Logic Plus Plus Inc",
-"1456  Advanced Hardware Architectures",
-"1457  Nuera Communications Inc",
-"1458  Giga-byte Technology",
-"	0c11  K8NS Pro Mainboard",
-"	e911  GN-WIAG02",
-"1459  DOOIN Electronics",
-"145a  Escalate Networks Inc",
-"145b  PRAIM SRL",
-"145c  Cryptek",
-"145d  Gallant Computer Inc",
-"145e  Aashima Technology B.V.",
-"145f  Baldor Electric Company",
-"	0001  NextMove PCI",
-"1460  DYNARC INC",
-"1461  Avermedia Technologies Inc",
-"	f436  AVerTV Hybrid+FM",
-"1462  Micro-Star International Co., Ltd.",
-"	5501  nVidia NV15DDR [GeForce2 Ti]",
-"	6819  Broadcom Corporation BCM4306 802.11b/g Wireless LAN Controller [MSI CB54G]",
-"	6825  PCI Card wireless 11g [PC54G]",
-"	6834  RaLink RT2500 802.11g [PC54G2]",
-"	7125  K8N motherboard",
-"	8725  NVIDIA NV25 [GeForce4 Ti 4600] VGA Adapter",
-"	9000  NVIDIA NV28 [GeForce4 Ti 4800] VGA Adapter",
-"	9110  GeFORCE FX5200",
-"	9119  NVIDIA NV31 [GeForce FX 5600XT] VGA Adapter",
-"	9123  NVIDIA NV31 [GeForce FX 5600] FX5600-VTDR128 [MS-8912]",
-"	9591  nVidia Corporation NV36 [GeForce FX 5700LE]",
-"1463  Fast Corporation",
-"1464  Interactive Circuits & Systems Ltd",
-"1465  GN NETTEST Telecom DIV.",
-"1466  Designpro Inc.",
-"1467  DIGICOM SPA",
-"1468  AMBIT Microsystem Corp.",
-"1469  Cleveland Motion Controls",
-"146a  IFR",
-"146b  Parascan Technologies Ltd",
-"146c  Ruby Tech Corp.",
-"	1430  FE-1430TX Fast Ethernet PCI Adapter",
-"146d  Tachyon, INC.",
-"146e  Williams Electronics Games, Inc.",
-"146f  Multi Dimensional Consulting Inc",
-"1470  Bay Networks",
-"1471  Integrated Telecom Express Inc",
-"1472  DAIKIN Industries, Ltd",
-"1473  ZAPEX Technologies Inc",
-"1474  Doug Carson & Associates",
-"1475  PICAZO Communications",
-"1476  MORTARA Instrument Inc",
-"1477  Net Insight",
-"1478  DIATREND Corporation",
-"1479  TORAY Industries Inc",
-"147a  FORMOSA Industrial Computing",
-"147b  ABIT Computer Corp.",
-"147c  AWARE, Inc.",
-"147d  Interworks Computer Products",
-"147e  Matsushita Graphic Communication Systems, Inc.",
-"147f  NIHON UNISYS, Ltd.",
-"1480  SCII Telecom",
-"1481  BIOPAC Systems Inc",
-"1482  ISYTEC - Integrierte Systemtechnik GmBH",
-"1483  LABWAY Corporation",
-"1484  Logic Corporation",
-"1485  ERMA - Electronic GmBH",
-"1486  L3 Communications Telemetry & Instrumentation",
-"1487  MARQUETTE Medical Systems",
-"1488  KONTRON Electronik GmBH",
-"1489  KYE Systems Corporation",
-"148a  OPTO",
-"148b  INNOMEDIALOGIC Inc.",
-"148c  C.P. Technology Co. Ltd",
-"148d  DIGICOM Systems, Inc.",
-"	1003  HCF 56k Data/Fax Modem",
-"148e  OSI Plus Corporation",
-"148f  Plant Equipment, Inc.",
-"1490  Stone Microsystems PTY Ltd.",
-"1491  ZEAL Corporation",
-"1492  Time Logic Corporation",
-"1493  MAKER Communications",
-"1494  WINTOP Technology, Inc.",
-"1495  TOKAI Communications Industry Co. Ltd",
-"1496  JOYTECH Computer Co., Ltd.",
-"1497  SMA Regelsysteme GmBH",
-"	1497  SMA Technologie AG",
-"1498  TEWS Datentechnik GmBH",
-"	0330  TPMC816 2 Channel CAN bus controller.",
-"	0385  TPMC901 Extended CAN bus with 2/4/6 CAN controller",
-"	21cd  TCP461 CompactPCI 8 Channel Serial Interface RS232/RS422",
-"	30c8  TPCI200",
-"1499  EMTEC CO., Ltd",
-"149a  ANDOR Technology Ltd",
-"149b  SEIKO Instruments Inc",
-"149c  OVISLINK Corp.",
-"149d  NEWTEK Inc",
-"	0001  Video Toaster for PC",
-"149e  Mapletree Networks Inc.",
-"149f  LECTRON Co Ltd",
-"14a0  SOFTING GmBH",
-"14a1  Systembase Co Ltd",
-"14a2  Millennium Engineering Inc",
-"14a3  Maverick Networks",
-"14a4  GVC/BCM Advanced Research",
-"14a5  XIONICS Document Technologies Inc",
-"14a6  INOVA Computers GmBH & Co KG",
-"14a7  MYTHOS Systems Inc",
-"14a8  FEATRON Technologies Corporation",
-"14a9  HIVERTEC Inc",
-"14aa  Advanced MOS Technology Inc",
-"14ab  Mentor Graphics Corp.",
-"14ac  Novaweb Technologies Inc",
-"14ad  Time Space Radio AB",
-"14ae  CTI, Inc",
-"14af  Guillemot Corporation",
-"	7102  3D Prophet II MX",
-"14b0  BST Communication Technology Ltd",
-"14b1  Nextcom K.K.",
-"14b2  ENNOVATE Networks Inc",
-"14b3  XPEED Inc",
-"	0000  DSL NIC",
-"14b4  PHILIPS Business Electronics B.V.",
-"14b5  Creamware GmBH",
-"	0200  Scope",
-"	0300  Pulsar",
-"	0400  PulsarSRB",
-"	0600  Pulsar2",
-"	0800  DSP-Board",
-"	0900  DSP-Board",
-"	0a00  DSP-Board",
-"	0b00  DSP-Board",
-"14b6  Quantum Data Corp.",
-"14b7  PROXIM Inc",
-"	0001  Symphony 4110",
-"14b8  Techsoft Technology Co Ltd",
-"14b9  AIRONET Wireless Communications",
-"	0001  PC4800",
-"	0340  PC4800",
-"	0350  PC4800",
-"	4500  PC4500",
-"	4800  Cisco Aironet 340 802.11b Wireless LAN Adapter/Aironet PC4800",
-"	a504  Cisco Aironet Wireless 802.11b",
-"	a505  Cisco Aironet CB20a 802.11a Wireless LAN Adapter",
-"	a506  Cisco Aironet Mini PCI b/g",
-"14ba  INTERNIX Inc.",
-"14bb  SEMTECH Corporation",
-"14bc  Globespan Semiconductor Inc.",
-"14bd  CARDIO Control N.V.",
-"14be  L3 Communications",
-"14bf  SPIDER Communications Inc.",
-"14c0  COMPAL Electronics Inc",
-"14c1  MYRICOM Inc.",
-"	0008  Myri-10G Dual-Protocol Interconnect",
-"	8043  Myrinet 2000 Scalable Cluster Interconnect",
-"14c2  DTK Computer",
-"14c3  MEDIATEK Corp.",
-"14c4  IWASAKI Information Systems Co Ltd",
-"14c5  Automation Products AB",
-"14c6  Data Race Inc",
-"14c7  Modular Technology Holdings Ltd",
-"14c8  Turbocomm Tech. Inc.",
-"14c9  ODIN Telesystems Inc",
-"14ca  PE Logic Corp.",
-"14cb  Billionton Systems Inc",
-"14cc  NAKAYO Telecommunications Inc",
-"14cd  Universal Scientific Ind.",
-"14ce  Whistle Communications",
-"14cf  TEK Microsystems Inc.",
-"14d0  Ericsson Axe R & D",
-"14d1  Computer Hi-Tech Co Ltd",
-"14d2  Titan Electronics Inc",
-"	8001  VScom 010L 1 port parallel adaptor",
-"	8002  VScom 020L 2 port parallel adaptor",
-"	8010  VScom 100L 1 port serial adaptor",
-"	8011  VScom 110L 1 port serial and 1 port parallel adaptor",
-"	8020  VScom 200L 1 port serial adaptor",
-"	8021  VScom 210L 2 port serial and 1 port parallel adaptor",
-"	8040  VScom 400L 4 port serial adaptor",
-"	8080  VScom 800L 8 port serial adaptor",
-"	a000  VScom 010H 1 port parallel adaptor",
-"	a001  VScom 100H 1 port serial adaptor",
-"	a003  VScom 400H 4 port serial adaptor",
-"	a004  VScom 400HF1 4 port serial adaptor",
-"	a005  VScom 200H 2 port serial adaptor",
-"	e001  VScom 010HV2 1 port parallel adaptor",
-"	e010  VScom 100HV2 1 port serial adaptor",
-"	e020  VScom 200HV2 2 port serial adaptor",
-"14d3  CIRTECH (UK) Ltd",
-"14d4  Panacom Technology Corp",
-"14d5  Nitsuko Corporation",
-"14d6  Accusys Inc",
-"14d7  Hirakawa Hewtech Corp",
-"14d8  HOPF Elektronik GmBH",
-"14d9  Alliance Semiconductor Corporation",
-"	0010  AP1011/SP1011 HyperTransport-PCI Bridge [Sturgeon]",
-"	9000  AS90L10204/10208 HyperTransport to PCI-X Bridge",
-"14da  National Aerospace Laboratories",
-"14db  AFAVLAB Technology Inc",
-"	2120  TK9902",
-"	2182  AFAVLAB Technology Inc. 8-port serial card",
-"14dc  Amplicon Liveline Ltd",
-"	0000  PCI230",
-"	0001  PCI242",
-"	0002  PCI244",
-"	0003  PCI247",
-"	0004  PCI248",
-"	0005  PCI249",
-"	0006  PCI260",
-"	0007  PCI224",
-"	0008  PCI234",
-"	0009  PCI236",
-"	000a  PCI272",
-"	000b  PCI215",
-"14dd  Boulder Design Labs Inc",
-"14de  Applied Integration Corporation",
-"14df  ASIC Communications Corp",
-"14e1  INVERTEX",
-"14e2  INFOLIBRIA",
-"14e3  AMTELCO",
-"14e4  Broadcom Corporation",
-"	0800  Sentry5 Chipcommon I/O Controller",
-"	0804  Sentry5 PCI Bridge",
-"	0805  Sentry5 MIPS32 CPU",
-"	0806  Sentry5 Ethernet Controller",
-"	080b  Sentry5 Crypto Accelerator",
-"	080f  Sentry5 DDR/SDR RAM Controller",
-"	0811  Sentry5 External Interface Core",
-"	0816  BCM3302 Sentry5 MIPS32 CPU",
-"	1600  NetXtreme BCM5752 Gigabit Ethernet PCI Express",
-"	1601  NetXtreme BCM5752M Gigabit Ethernet PCI Express",
-"	1644  NetXtreme BCM5700 Gigabit Ethernet",
-"		1014 0277  Broadcom Vigil B5700 1000Base-T",
-"		1028 00d1  Broadcom BCM5700",
-"		1028 0106  Broadcom BCM5700",
-"		1028 0109  Broadcom BCM5700 1000Base-T",
-"		1028 010a  Broadcom BCM5700 1000BaseTX",
-"		10b7 1000  3C996-T 1000Base-T",
-"		10b7 1001  3C996B-T 1000Base-T",
-"		10b7 1002  3C996C-T 1000Base-T",
-"		10b7 1003  3C997-T 1000Base-T Dual Port",
-"		10b7 1004  3C996-SX 1000Base-SX",
-"		10b7 1005  3C997-SX 1000Base-SX Dual Port",
-"		10b7 1008  3C942 Gigabit LOM (31X31)",
-"		14e4 0002  NetXtreme 1000Base-SX",
-"		14e4 0003  NetXtreme 1000Base-SX",
-"		14e4 0004  NetXtreme 1000Base-T",
-"		14e4 1028  NetXtreme 1000BaseTX",
-"		14e4 1644  BCM5700 1000Base-T",
-"	1645  NetXtreme BCM5701 Gigabit Ethernet",
-"		0e11 007c  NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T)",
-"		0e11 007d  NC6770 Gigabit Server Adapter (PCI-X, 1000-SX)",
-"		0e11 0085  NC7780 Gigabit Server Adapter (embedded, WOL)",
-"		0e11 0099  NC7780 Gigabit Server Adapter (embedded, WOL)",
-"		0e11 009a  NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T)",
-"		0e11 00c1  NC6770 Gigabit Server Adapter (PCI-X, 1000-SX)",
-"		1028 0121  Broadcom BCM5701 1000Base-T",
-"		103c 128a  1000Base-T (PCI) [A7061A]",
-"		103c 128b  1000Base-SX (PCI) [A7073A]",
-"		103c 12a4  Core Lan 1000Base-T",
-"		103c 12c1  IOX Core Lan 1000Base-T [A7109AX]",
-"		103c 1300  Core LAN/SCSI Combo [A6794A]",
-"		10a9 8010  IO9/IO10 Gigabit Ethernet (Copper)",
-"		10a9 8011  Gigabit Ethernet (Copper)",
-"		10a9 8012  Gigabit Ethernet (Fiber)",
-"		10b7 1004  3C996-SX 1000Base-SX",
-"		10b7 1006  3C996B-T 1000Base-T",
-"		10b7 1007  3C1000-T 1000Base-T",
-"		10b7 1008  3C940-BR01 1000Base-T",
-"		14e4 0001  BCM5701 1000Base-T",
-"		14e4 0005  BCM5701 1000Base-T",
-"		14e4 0006  BCM5701 1000Base-T",
-"		14e4 0007  BCM5701 1000Base-SX",
-"		14e4 0008  BCM5701 1000Base-T",
-"		14e4 8008  BCM5701 1000Base-T",
-"	1646  NetXtreme BCM5702 Gigabit Ethernet",
-"		0e11 00bb  NC7760 1000BaseTX",
-"		1028 0126  Broadcom BCM5702 1000BaseTX",
-"		14e4 8009  BCM5702 1000BaseTX",
-"	1647  NetXtreme BCM5703 Gigabit Ethernet",
-"		0e11 0099  NC7780 1000BaseTX",
-"		0e11 009a  NC7770 1000BaseTX",
-"		10a9 8010  SGI IO9 Gigabit Ethernet (Copper)",
-"		14e4 0009  BCM5703 1000BaseTX",
-"		14e4 000a  BCM5703 1000BaseSX",
-"		14e4 000b  BCM5703 1000BaseTX",
-"		14e4 8009  BCM5703 1000BaseTX",
-"		14e4 800a  BCM5703 1000BaseTX",
-"	1648  NetXtreme BCM5704 Gigabit Ethernet",
-"		0e11 00cf  NC7772 Gigabit Server Adapter (PCI-X, 10,100,1000-T)",
-"		0e11 00d0  NC7782 Gigabit Server Adapter (PCI-X, 10,100,1000-T)",
-"		0e11 00d1  NC7783 Gigabit Server Adapter (PCI-X, 10,100,1000-T)",
-"		10b7 2000  3C998-T Dual Port 10/100/1000 PCI-X",
-"		10b7 3000  3C999-T Quad Port 10/100/1000 PCI-X",
-"		1166 1648  NetXtreme CIOB-E 1000Base-T",
-"		1734 100b  Primergy RX300",
-"	164a  NetXtreme II BCM5706 Gigabit Ethernet",
-"		103c 3101  NC370T MultifuNCtion Gigabit Server Adapter",
-"	164c  NetXtreme II BCM5708 Gigabit Ethernet",
-"	164d  NetXtreme BCM5702FE Gigabit Ethernet",
-"	1653  NetXtreme BCM5705 Gigabit Ethernet",
-"		0e11 00e3  NC7761 Gigabit Server Adapter",
-"	1654  NetXtreme BCM5705_2 Gigabit Ethernet",
-"		0e11 00e3  NC7761 Gigabit Server Adapter",
-"		103c 3100  NC1020 HP ProLiant Gigabit Server Adapter 32 PCI",
-"		103c 3226  NC150T 4-port Gigabit Combo Switch & Adapter",
-"	1659  NetXtreme BCM5721 Gigabit Ethernet PCI Express",
-"		1014 02c6  eServer xSeries server mainboard",
-"		103c 7031  NC320T PCIe Gigabit Server Adapter",
-"		103c 7032  NC320i PCIe Gigabit Server Adapter",
-"		1734 1061  Primergy RX300 S2",
-"	165d  NetXtreme BCM5705M Gigabit Ethernet",
-"		1028 865d  Latitude D400",
-"	165e  NetXtreme BCM5705M_2 Gigabit Ethernet",
-"		103c 088c  NC8000 laptop",
-"		103c 0890  NC6000 laptop",
-"		103c 099c  NX6110/NC6120",
-"	1668  NetXtreme BCM5714 Gigabit Ethernet",
-"		103c 7039  NC324i PCIe Dual Port Gigabit Server Adapter",
-"	1669  NetXtreme 5714S Gigabit Ethernet",
-"	166a  NetXtreme BCM5780 Gigabit Ethernet",
-"	166b  NetXtreme BCM5780S Gigabit Ethernet",
-"	166e  570x 10/100 Integrated Controller",
-"	1672  NetXtreme BCM5754M Gigabit Ethernet PCI Express",
-"	1673  NetXtreme BCM5755M Gigabit Ethernet PCI Express",
-"	1677  NetXtreme BCM5751 Gigabit Ethernet PCI Express",
-"		1028 0179  Optiplex GX280",
-"		1028 0182  Latitude D610",
-"		1028 0187  Precision M70",
-"		1028 01ad  Optiplex GX620",
-"		103c 3006  DC7100 SFF(DX878AV)",
-"		1734 105d  Scenic W620",
-"	1678  NetXtreme BCM5715 Gigabit Ethernet",
-"	1679  NetXtreme 5715S Gigabit Ethernet",
-"		103c 703c  NC326i PCIe Dual Port Gigabit Server Adapter",
-"	167a  NetXtreme BCM5754 Gigabit Ethernet PCI Express",
-"	167b  NetXtreme BCM5755 Gigabit Ethernet PCI Express",
-"	167d  NetXtreme BCM5751M Gigabit Ethernet PCI Express",
-"	167e  NetXtreme BCM5751F Fast Ethernet PCI Express",
-"	1693  NetLink BCM5787M Gigabit Ethernet PCI Express",
-"	1696  NetXtreme BCM5782 Gigabit Ethernet",
-"		103c 12bc  HP d530 CMT (DG746A)",
-"		14e4 000d  NetXtreme BCM5782 1000Base-T",
-"	169b  NetLink BCM5787 Gigabit Ethernet PCI Express",
-"	169c  NetXtreme BCM5788 Gigabit Ethernet",
-"		103c 308b  MX6125",
-"	169d  NetLink BCM5789 Gigabit Ethernet PCI Express",
-"	16a6  NetXtreme BCM5702X Gigabit Ethernet",
-"		0e11 00bb  NC7760 Gigabit Server Adapter (PCI-X, 10/100/1000-T)",
-"		1028 0126  BCM5702 1000Base-T",
-"		14e4 000c  BCM5702 1000Base-T",
-"		14e4 8009  BCM5702 1000Base-T",
-"	16a7  NetXtreme BCM5703X Gigabit Ethernet",
-"		0e11 00ca  NC7771 Gigabit Server Adapter (PCI-X, 10,100,1000-T)",
-"		0e11 00cb  NC7781 Gigabit Server Adapter (PCI-X, 10,100,1000-T)",
-"		14e4 0009  NetXtreme BCM5703 1000Base-T",
-"		14e4 000a  NetXtreme BCM5703 1000Base-SX",
-"		14e4 000b  NetXtreme BCM5703 1000Base-T",
-"		14e4 800a  NetXtreme BCM5703 1000Base-T",
-"	16a8  NetXtreme BCM5704S Gigabit Ethernet",
-"		10b7 2001  3C998-SX Dual Port 1000-SX PCI-X",
-"	16aa  NetXtreme II BCM5706S Gigabit Ethernet",
-"		103c 3102  NC370F MultifuNCtion Gigabit Server Adapter",
-"	16ac  NetXtreme II BCM5708S Gigabit Ethernet",
-"	16c6  NetXtreme BCM5702A3 Gigabit Ethernet",
-"		10b7 1100  3C1000B-T 10/100/1000 PCI",
-"		14e4 000c  BCM5702 1000Base-T",
-"		14e4 8009  BCM5702 1000Base-T",
-"	16c7  NetXtreme BCM5703 Gigabit Ethernet",
-"		0e11 00ca  NC7771 Gigabit Server Adapter (PCI-X, 10,100,1000-T)",
-"		0e11 00cb  NC7781 Gigabit Server Adapter (PCI-X, 10,100,1000-T)",
-"		103c 12c3  Combo FC/GigE-SX [A9782A]",
-"		103c 12ca  Combo FC/GigE-T [A9784A]",
-"		14e4 0009  NetXtreme BCM5703 1000Base-T",
-"		14e4 000a  NetXtreme BCM5703 1000Base-SX",
-"	16dd  NetLink BCM5781 Gigabit Ethernet PCI Express",
-"	16f7  NetXtreme BCM5753 Gigabit Ethernet PCI Express",
-"	16fd  NetXtreme BCM5753M Gigabit Ethernet PCI Express",
-"	16fe  NetXtreme BCM5753F Fast Ethernet PCI Express",
-"	170c  BCM4401-B0 100Base-TX",
-"		1028 0188  Inspiron 6000 laptop",
-"		1028 0196  Inspiron 5160",
-"		103c 099c  NX6110/NC6120",
-"	170d  NetXtreme BCM5901 100Base-TX",
-"		1014 0545  ThinkPad R40e (2684-HVG) builtin ethernet controller",
-"	170e  NetXtreme BCM5901 100Base-TX",
-"	3352  BCM3352",
-"	3360  BCM3360",
-"	4210  BCM4210 iLine10 HomePNA 2.0",
-"	4211  BCM4211 iLine10 HomePNA 2.0 + V.90 56k modem",
-"	4212  BCM4212 v.90 56k modem",
-"	4301  BCM4303 802.11b Wireless LAN Controller",
-"		1028 0407  TrueMobile 1180 Onboard WLAN",
-"		1043 0120  WL-103b Wireless LAN PC Card",
-"	4305  BCM4307 V.90 56k Modem",
-"	4306  BCM4307 Ethernet Controller",
-"	4307  BCM4307 802.11b Wireless LAN Controller",
-"	4310  BCM4310 Chipcommon I/OController",
-"	4312  BCM4310 UART",
-"	4313  BCM4310 Ethernet Controller",
-"	4315  BCM4310 USB Controller",
-"	4318  BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller",
-"		103c 1356  MX6125",
-"		1043 120f  A6U notebook embedded card",
-"		1468 0311  Aspire 3022WLMi, 5024WLMi",
-"		1468 0312  TravelMate 2410",
-"		14e4 0449  Gateway 7510GX",
-"		14e4 4318  WPC54G version 3 [Wireless-G Notebook Adapter] 802.11g Wireless Lan Controller",
-"		16ec 0119  U.S.Robotics Wireless MAXg PC Card",
-"		1737 0048  WPC54G-EU version 3 [Wireless-G Notebook Adapter]",
-"	4319  Dell Wireless 1470 DualBand WLAN",
-"	4320  BCM4306 802.11b/g Wireless LAN Controller",
-"		1028 0001  TrueMobile 1300 WLAN Mini-PCI Card",
-"		1028 0003  Wireless 1350 WLAN Mini-PCI Card",
-"		103c 12f4  NX9500 Built-in Wireless",
-"		103c 12fa  Presario R3000 802.11b/g",
-"		1043 100f  WL-100G",
-"		1057 7025  WN825G",
-"		106b 004e  AirPort Extreme",
-"		1154 0330  Buffalo WLI2-PCI-G54S High Speed Mode Wireless Desktop Adapter",
-"		144f 7050  eMachines M6805 802.11g Built-in Wireless",
-"		14e4 4320  Linksys WMP54G PCI",
-"		1737 4320  WPC54G",
-"		1799 7001  Belkin F5D7001 High-Speed Mode Wireless G Network Card",
-"		1799 7010  Belkin F5D7010 54g Wireless Network card",
-"		185f 1220  TravelMate 290E WLAN Mini-PCI Card",
-"	4321  BCM4306 802.11a Wireless LAN Controller",
-"	4322  BCM4306 UART",
-"	4324  BCM4309 802.11a/b/g",
-"		1028 0001  Truemobile 1400",
-"		1028 0003  Truemobile 1450 MiniPCI",
-"	4325  BCM43xG 802.11b/g",
-"		1414 0003  Wireless Notebook Adapter MN-720",
-"		1414 0004  Wireless PCI Adapter MN-730",
-"	4326  BCM4307 Chipcommon I/O Controller\?",
-"	4401  BCM4401 100Base-T",
-"		1043 80a8  A7V8X motherboard",
-"	4402  BCM4402 Integrated 10/100BaseT",
-"	4403  BCM4402 V.90 56k Modem",
-"	4410  BCM4413 iLine32 HomePNA 2.0",
-"	4411  BCM4413 V.90 56k modem",
-"	4412  BCM4412 10/100BaseT",
-"	4430  BCM44xx CardBus iLine32 HomePNA 2.0",
-"	4432  BCM4432 CardBus 10/100BaseT",
-"	4610  BCM4610 Sentry5 PCI to SB Bridge",
-"	4611  BCM4610 Sentry5 iLine32 HomePNA 1.0",
-"	4612  BCM4610 Sentry5 V.90 56k Modem",
-"	4613  BCM4610 Sentry5 Ethernet Controller",
-"	4614  BCM4610 Sentry5 External Interface",
-"	4615  BCM4610 Sentry5 USB Controller",
-"	4704  BCM4704 PCI to SB Bridge",
-"	4705  BCM4704 Sentry5 802.11b Wireless LAN Controller",
-"	4706  BCM4704 Sentry5 Ethernet Controller",
-"	4707  BCM4704 Sentry5 USB Controller",
-"	4708  BCM4704 Crypto Accelerator",
-"	4710  BCM4710 Sentry5 PCI to SB Bridge",
-"	4711  BCM47xx Sentry5 iLine32 HomePNA 2.0",
-"	4712  BCM47xx V.92 56k modem",
-"	4713  Sentry5 Ethernet Controller",
-"	4714  BCM47xx Sentry5 External Interface",
-"	4715  Sentry5 USB Controller",
-"	4716  BCM47xx Sentry5 USB Host Controller",
-"	4717  BCM47xx Sentry5 USB Device Controller",
-"	4718  Sentry5 Crypto Accelerator",
-"	4719  BCM47xx/53xx RoboSwitch Core",
-"	4720  BCM4712 MIPS CPU",
-"	5365  BCM5365P Sentry5 Host Bridge",
-"	5600  BCM5600 StrataSwitch 24+2 Ethernet Switch Controller",
-"	5605  BCM5605 StrataSwitch 24+2 Ethernet Switch Controller",
-"	5615  BCM5615 StrataSwitch 24+2 Ethernet Switch Controller",
-"	5625  BCM5625 StrataSwitch 24+2 Ethernet Switch Controller",
-"	5645  BCM5645 StrataSwitch 24+2 Ethernet Switch Controller",
-"	5670  BCM5670 8-Port 10GE Ethernet Switch Fabric",
-"	5680  BCM5680 G-Switch 8 Port Gigabit Ethernet Switch Controller",
-"	5690  BCM5690 12-port Multi-Layer Gigabit Ethernet Switch",
-"	5691  BCM5691 GE/10GE 8+2 Gigabit Ethernet Switch Controller",
-"	5692  BCM5692 12-port Multi-Layer Gigabit Ethernet Switch",
-"	5820  BCM5820 Crypto Accelerator",
-"	5821  BCM5821 Crypto Accelerator",
-"	5822  BCM5822 Crypto Accelerator",
-"	5823  BCM5823 Crypto Accelerator",
-"	5824  BCM5824 Crypto Accelerator",
-"	5840  BCM5840 Crypto Accelerator",
-"	5841  BCM5841 Crypto Accelerator",
-"	5850  BCM5850 Crypto Accelerator",
-"14e5  Pixelfusion Ltd",
-"14e6  SHINING Technology Inc",
-"14e7  3CX",
-"14e8  RAYCER Inc",
-"14e9  GARNETS System CO Ltd",
-"14ea  Planex Communications, Inc",
-"	ab06  FNW-3603-TX CardBus Fast Ethernet",
-"	ab07  RTL81xx RealTek Ethernet",
-"	ab08  FNW-3602-TX CardBus Fast Ethernet",
-"14eb  SEIKO EPSON Corp",
-"14ec  ACQIRIS",
-"14ed  DATAKINETICS Ltd",
-"14ee  MASPRO KENKOH Corp",
-"14ef  CARRY Computer ENG. CO Ltd",
-"14f0  CANON RESEACH CENTRE FRANCE",
-"14f1  Conexant",
-"	1002  HCF 56k Modem",
-"	1003  HCF 56k Modem",
-"	1004  HCF 56k Modem",
-"	1005  HCF 56k Modem",
-"	1006  HCF 56k Modem",
-"	1022  HCF 56k Modem",
-"	1023  HCF 56k Modem",
-"	1024  HCF 56k Modem",
-"	1025  HCF 56k Modem",
-"	1026  HCF 56k Modem",
-"	1032  HCF 56k Modem",
-"	1033  HCF 56k Data/Fax Modem",
-"		1033 8077  NEC",
-"		122d 4027  Dell Zeus - MDP3880-W(B) Data Fax Modem",
-"		122d 4030  Dell Mercury - MDP3880-U(B) Data Fax Modem",
-"		122d 4034  Dell Thor - MDP3880-W(U) Data Fax Modem",
-"		13e0 020d  Dell Copper",
-"		13e0 020e  Dell Silver",
-"		13e0 0261  IBM",
-"		13e0 0290  Compaq Goldwing",
-"		13e0 02a0  IBM",
-"		13e0 02b0  IBM",
-"		13e0 02c0  Compaq Scooter",
-"		13e0 02d0  IBM",
-"		144f 1500  IBM P85-DF (1)",
-"		144f 1501  IBM P85-DF (2)",
-"		144f 150a  IBM P85-DF (3)",
-"		144f 150b  IBM P85-DF Low Profile (1)",
-"		144f 1510  IBM P85-DF Low Profile (2)",
-"	1034  HCF 56k Data/Fax/Voice Modem",
-"	1035  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem",
-"		10cf 1098  Fujitsu P85-DFSV",
-"	1036  HCF 56k Data/Fax/Voice/Spkp Modem",
-"		104d 8067  HCF 56k Modem",
-"		122d 4029  MDP3880SP-W",
-"		122d 4031  MDP3880SP-U",
-"		13e0 0209  Dell Titanium",
-"		13e0 020a  Dell Graphite",
-"		13e0 0260  Gateway Red Owl",
-"		13e0 0270  Gateway White Horse",
-"	1052  HCF 56k Data/Fax Modem (Worldwide)",
-"	1053  HCF 56k Data/Fax Modem (Worldwide)",
-"	1054  HCF 56k Data/Fax/Voice Modem (Worldwide)",
-"	1055  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (Worldwide)",
-"	1056  HCF 56k Data/Fax/Voice/Spkp Modem (Worldwide)",
-"	1057  HCF 56k Data/Fax/Voice/Spkp Modem (Worldwide)",
-"	1059  HCF 56k Data/Fax/Voice Modem (Worldwide)",
-"	1063  HCF 56k Data/Fax Modem",
-"	1064  HCF 56k Data/Fax/Voice Modem",
-"	1065  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem",
-"	1066  HCF 56k Data/Fax/Voice/Spkp Modem",
-"		122d 4033  Dell Athena - MDP3900V-U",
-"	1085  HCF V90 56k Data/Fax/Voice/Spkp PCI Modem",
-"	1433  HCF 56k Data/Fax Modem",
-"	1434  HCF 56k Data/Fax/Voice Modem",
-"	1435  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem",
-"	1436  HCF 56k Data/Fax Modem",
-"	1453  HCF 56k Data/Fax Modem",
-"		13e0 0240  IBM",
-"		13e0 0250  IBM",
-"		144f 1502  IBM P95-DF (1)",
-"		144f 1503  IBM P95-DF (2)",
-"	1454  HCF 56k Data/Fax/Voice Modem",
-"	1455  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem",
-"	1456  HCF 56k Data/Fax/Voice/Spkp Modem",
-"		122d 4035  Dell Europa - MDP3900V-W",
-"		122d 4302  Dell MP3930V-W(C) MiniPCI",
-"	1610  ADSL AccessRunner PCI Arbitration Device",
-"	1611  AccessRunner PCI ADSL Interface Device",
-"	1620  AccessRunner V2 PCI ADSL Arbitration Device",
-"	1621  AccessRunner V2 PCI ADSL Interface Device",
-"	1622  AccessRunner V2 PCI ADSL Yukon WAN Adapter",
-"	1803  HCF 56k Modem",
-"		0e11 0023  623-LAN Grizzly",
-"		0e11 0043  623-LAN Yogi",
-"	1811  Conextant MiniPCI Network Adapter",
-"	1815  HCF 56k Modem",
-"		0e11 0022  Grizzly",
-"		0e11 0042  Yogi",
-"	2003  HSF 56k Data/Fax Modem",
-"	2004  HSF 56k Data/Fax/Voice Modem",
-"	2005  HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem",
-"	2006  HSF 56k Data/Fax/Voice/Spkp Modem",
-"	2013  HSF 56k Data/Fax Modem",
-"		0e11 b195  Bear",
-"		0e11 b196  Seminole 1",
-"		0e11 b1be  Seminole 2",
-"		1025 8013  Acer",
-"		1033 809d  NEC",
-"		1033 80bc  NEC",
-"		155d 6793  HP",
-"		155d 8850  E Machines",
-"	2014  HSF 56k Data/Fax/Voice Modem",
-"	2015  HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem",
-"	2016  HSF 56k Data/Fax/Voice/Spkp Modem",
-"	2043  HSF 56k Data/Fax Modem (WorldW SmartDAA)",
-"	2044  HSF 56k Data/Fax/Voice Modem (WorldW SmartDAA)",
-"	2045  HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (WorldW SmartDAA)",
-"		14f1 2045  Generic SoftK56",
-"	2046  HSF 56k Data/Fax/Voice/Spkp Modem (WorldW SmartDAA)",
-"	2063  HSF 56k Data/Fax Modem (SmartDAA)",
-"	2064  HSF 56k Data/Fax/Voice Modem (SmartDAA)",
-"	2065  HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (SmartDAA)",
-"	2066  HSF 56k Data/Fax/Voice/Spkp Modem (SmartDAA)",
-"	2093  HSF 56k Modem",
-"		155d 2f07  Legend",
-"	2143  HSF 56k Data/Fax/Cell Modem (Mob WorldW SmartDAA)",
-"	2144  HSF 56k Data/Fax/Voice/Cell Modem (Mob WorldW SmartDAA)",
-"	2145  HSF 56k Data/Fax/Voice/Spkp (w/HS)/Cell Modem (Mob WorldW SmartDAA)",
-"	2146  HSF 56k Data/Fax/Voice/Spkp/Cell Modem (Mob WorldW SmartDAA)",
-"	2163  HSF 56k Data/Fax/Cell Modem (Mob SmartDAA)",
-"	2164  HSF 56k Data/Fax/Voice/Cell Modem (Mob SmartDAA)",
-"	2165  HSF 56k Data/Fax/Voice/Spkp (w/HS)/Cell Modem (Mob SmartDAA)",
-"	2166  HSF 56k Data/Fax/Voice/Spkp/Cell Modem (Mob SmartDAA)",
-"	2343  HSF 56k Data/Fax CardBus Modem (Mob WorldW SmartDAA)",
-"	2344  HSF 56k Data/Fax/Voice CardBus Modem (Mob WorldW SmartDAA)",
-"	2345  HSF 56k Data/Fax/Voice/Spkp (w/HS) CardBus Modem (Mob WorldW SmartDAA)",
-"	2346  HSF 56k Data/Fax/Voice/Spkp CardBus Modem (Mob WorldW SmartDAA)",
-"	2363  HSF 56k Data/Fax CardBus Modem (Mob SmartDAA)",
-"	2364  HSF 56k Data/Fax/Voice CardBus Modem (Mob SmartDAA)",
-"	2365  HSF 56k Data/Fax/Voice/Spkp (w/HS) CardBus Modem (Mob SmartDAA)",
-"	2366  HSF 56k Data/Fax/Voice/Spkp CardBus Modem (Mob SmartDAA)",
-"	2443  HSF 56k Data/Fax Modem (Mob WorldW SmartDAA)",
-"		104d 8075  Modem",
-"		104d 8083  Modem",
-"		104d 8097  Modem",
-"	2444  HSF 56k Data/Fax/Voice Modem (Mob WorldW SmartDAA)",
-"	2445  HSF 56k Data/Fax/Voice/Spkp (w/HS) Modem (Mob WorldW SmartDAA)",
-"	2446  HSF 56k Data/Fax/Voice/Spkp Modem (Mob WorldW SmartDAA)",
-"	2463  HSF 56k Data/Fax Modem (Mob SmartDAA)",
-"	2464  HSF 56k Data/Fax/Voice Modem (Mob SmartDAA)",
-"	2465  HSF 56k Data/Fax/Voice/Spkp (w/HS) Modem (Mob SmartDAA)",
-"	2466  HSF 56k Data/Fax/Voice/Spkp Modem (Mob SmartDAA)",
-"	2bfa  HDAudio Soft Data Fax Modem with SmartCP",
-"	2f00  HSF 56k HSFi Modem",
-"		13e0 8d84  IBM HSFi V.90",
-"		13e0 8d85  Compaq Stinger",
-"		14f1 2004  Dynalink 56PMi",
-"	2f02  HSF 56k HSFi Data/Fax",
-"	2f11  HSF 56k HSFi Modem",
-"	2f20  HSF 56k Data/Fax Modem",
-"	8234  RS8234 ATM SAR Controller [ServiceSAR Plus]",
-"	8800  CX23880/1/2/3 PCI Video and Audio Decoder",
-"		0070 2801  Hauppauge WinTV 28xxx (Roslyn) models",
-"		0070 3401  Hauppauge WinTV 34xxx models",
-"		0070 9001  Nova-T DVB-T",
-"		0070 9200  Nova-SE2 DVB-S",
-"		0070 9202  Nova-S-Plus DVB-S",
-"		0070 9402  WinTV-HVR1100 DVB-T/Hybrid",
-"		0070 9802  WinTV-HVR1100 DVB-T/Hybrid (Low Profile)",
-"		1002 00f8  ATI TV Wonder Pro",
-"		1002 a101  HDTV Wonder",
-"		1043 4823  ASUS PVR-416",
-"		107d 6613  Leadtek Winfast 2000XP Expert",
-"		107d 6620  Leadtek Winfast DV2000",
-"		107d 663c  Leadtek PVR 2000",
-"		107d 665f  WinFast DTV1000-T",
-"		10fc d003  IODATA GV-VCP3/PCI",
-"		10fc d035  IODATA GV/BCTV7E",
-"		1421 0334  Instant TV DVB-T PCI",
-"		1461 000a  AVerTV 303 (M126)",
-"		1461 000b  AverTV Studio 303 (M126)",
-"		1461 8011  UltraTV Media Center PCI 550",
-"		1462 8606  MSI TV-@nywhere Master",
-"		14c7 0107  GDI Black Gold",
-"		14f1 0187  Conexant DVB-T reference design",
-"		14f1 0342  Digital-Logic MICROSPACE Entertainment Center (MEC)",
-"		153b 1166  Cinergy 1400 DVB-T",
-"		1540 2580  Provideo PV259",
-"		1554 4811  PixelView",
-"		1554 4813  Club 3D  ZAP1000 MCE Edition",
-"		17de 08a1  KWorld/VStream XPert DVB-T with cx22702",
-"		17de 08a6  KWorld/VStream XPert DVB-T",
-"		17de 08b2  KWorld DVB-S 100",
-"		17de a8a6  digitalnow DNTV Live! DVB-T",
-"		1822 0025  digitalnow DNTV Live! DVB-T Pro",
-"		18ac d500  FusionHDTV 5 Gold",
-"		18ac d810  FusionHDTV 3 Gold-Q",
-"		18ac d820  FusionHDTV 3 Gold-T",
-"		18ac db00  FusionHDTV DVB-T1",
-"		18ac db11  FusionHDTV DVB-T Plus",
-"		18ac db50  FusionHDTV DVB-T Dual Digital",
-"		7063 3000  pcHDTV HD3000 HDTV",
-"	8801  CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port]",
-"		0070 2801  Hauppauge WinTV 28xxx (Roslyn) models",
-"	8802  CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port]",
-"		0070 2801  Hauppauge WinTV 28xxx (Roslyn) models",
-"		0070 9002  Nova-T DVB-T Model 909",
-"		1043 4823  ASUS PVR-416",
-"		107d 663c  Leadtek PVR 2000",
-"		14f1 0187  Conexant DVB-T reference design",
-"		17de 08a1  XPert DVB-T PCI BDA DVBT 23880 Transport Stream Capture",
-"		17de 08a6  KWorld/VStream XPert DVB-T",
-"		18ac d500  DViCO FusionHDTV5 Gold",
-"		18ac d810  DViCO FusionHDTV3 Gold-Q",
-"		18ac d820  DViCO FusionHDTV3 Gold-T",
-"		18ac db00  DVICO FusionHDTV DVB-T1",
-"		18ac db10  DVICO FusionHDTV DVB-T Plus",
-"		7063 3000  pcHDTV HD3000 HDTV",
-"	8804  CX23880/1/2/3 PCI Video and Audio Decoder [IR Port]",
-"		0070 9002  Nova-T DVB-T Model 909",
-"	8811  CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port]",
-"		0070 3401  Hauppauge WinTV 34xxx models",
-"		1462 8606  MSI TV-@nywhere Master",
-"		18ac d500  DViCO FusionHDTV5 Gold",
-"		18ac d810  DViCO FusionHDTV3 Gold-Q",
-"		18ac d820  DViCO FusionHDTV3 Gold-T",
-"		18ac db00  DVICO FusionHDTV DVB-T1",
-"14f2  MOBILITY Electronics",
-"	0120  EV1000 bridge",
-"	0121  EV1000 Parallel port",
-"	0122  EV1000 Serial port",
-"	0123  EV1000 Keyboard controller",
-"	0124  EV1000 Mouse controller",
-"14f3  BroadLogic",
-"	2030  2030 DVB-S Satellite Reciever",
-"	2050  2050 DVB-T Terrestrial (Cable) Reciever",
-"	2060  2060 ATSC Terrestrial (Cable) Reciever",
-"14f4  TOKYO Electronic Industry CO Ltd",
-"14f5  SOPAC Ltd",
-"14f6  COYOTE Technologies LLC",
-"14f7  WOLF Technology Inc",
-"14f8  AUDIOCODES Inc",
-"	2077  TP-240 dual span E1 VoIP PCI card",
-"14f9  AG COMMUNICATIONS",
-"14fa  WANDEL & GOLTERMANN",
-"14fb  TRANSAS MARINE (UK) Ltd",
-"14fc  Quadrics Ltd",
-"	0000  QsNet Elan3 Network Adapter",
-"	0001  QsNetII Elan4 Network Adapter",
-"	0002  QsNetIII Elan5 Network Adapter",
-"14fd  JAPAN Computer Industry Inc",
-"14fe  ARCHTEK TELECOM Corp",
-"14ff  TWINHEAD INTERNATIONAL Corp",
-"1500  DELTA Electronics, Inc",
-"	1360  RTL81xx RealTek Ethernet",
-"1501  BANKSOFT CANADA Ltd",
-"1502  MITSUBISHI ELECTRIC LOGISTICS SUPPORT Co Ltd",
-"1503  KAWASAKI LSI USA Inc",
-"1504  KAISER Electronics",
-"1505  ITA INGENIEURBURO FUR TESTAUFGABEN GmbH",
-"1506  CHAMELEON Systems Inc",
-"1507  Motorola \?\? / HTEC",
-"	0001  MPC105 [Eagle]",
-"	0002  MPC106 [Grackle]",
-"	0003  MPC8240 [Kahlua]",
-"	0100  MC145575 [HFC-PCI]",
-"	0431  KTI829c 100VG",
-"	4801  Raven",
-"	4802  Falcon",
-"	4803  Hawk",
-"	4806  CPX8216",
-"1508  HONDA CONNECTORS/MHOTRONICS Inc",
-"1509  FIRST INTERNATIONAL Computer Inc",
-"150a  FORVUS RESEARCH Inc",
-"150b  YAMASHITA Systems Corp",
-"150c  KYOPAL CO Ltd",
-"150d  WARPSPPED Inc",
-"150e  C-PORT Corp",
-"150f  INTEC GmbH",
-"1510  BEHAVIOR TECH Computer Corp",
-"1511  CENTILLIUM Technology Corp",
-"1512  ROSUN Technologies Inc",
-"1513  Raychem",
-"1514  TFL LAN Inc",
-"1515  Advent design",
-"1516  MYSON Technology Inc",
-"	0800  MTD-8xx 100/10M Ethernet PCI Adapter",
-"	0803  SURECOM EP-320X-S 100/10M Ethernet PCI Adapter",
-"		1320 10bd  SURECOM EP-320X-S 100/10M Ethernet PCI Adapter",
-"	0891  MTD-8xx 100/10M Ethernet PCI Adapter",
-"1517  ECHOTEK Corp",
-"1518  PEP MODULAR Computers GmbH",
-"1519  TELEFON AKTIEBOLAGET LM Ericsson",
-"151a  Globetek",
-"	1002  PCI-1002",
-"	1004  PCI-1004",
-"	1008  PCI-1008",
-"151b  COMBOX Ltd",
-"151c  DIGITAL AUDIO LABS Inc",
-"	0003  Prodif T 2496",
-"	4000  Prodif 88",
-"151d  Fujitsu Computer Products Of America",
-"151e  MATRIX Corp",
-"151f  TOPIC SEMICONDUCTOR Corp",
-"	0000  TP560 Data/Fax/Voice 56k modem",
-"1520  CHAPLET System Inc",
-"1521  BELL Corp",
-"1522  MainPine Ltd",
-"	0100  PCI <-> IOBus Bridge",
-"		1522 0200  RockForceDUO 2 Port V.92/V.44 Data/Fax/Voice Modem",
-"		1522 0300  RockForceQUATRO 4 Port V.92/V.44 Data/Fax/Voice Modem",
-"		1522 0400  RockForceDUO+ 2 Port V.92/V.44 Data/Fax/Voice Modem",
-"		1522 0500  RockForceQUATRO+ 4 Port V.92/V.44 Data/Fax/Voice Modem",
-"		1522 0600  RockForce+ 2 Port V.90 Data/Fax/Voice Modem",
-"		1522 0700  RockForce+ 4 Port V.90 Data/Fax/Voice Modem",
-"		1522 0800  RockForceOCTO+ 8 Port V.92/V.44 Data/Fax/Voice Modem",
-"		1522 0c00  RockForceDUO+ 2 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem",
-"		1522 0d00  RockForceQUATRO+ 4 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem",
-"		1522 1d00  RockForceOCTO+ 8 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem",
-"		1522 2000  RockForceD1 1 Port V.90 Data Modem",
-"		1522 2100  RockForceF1 1 Port V.34 Super-G3 Fax Modem",
-"		1522 2200  RockForceD2 2 Port V.90 Data Modem",
-"		1522 2300  RockForceF2 2 Port V.34 Super-G3 Fax Modem",
-"		1522 2400  RockForceD4 4 Port V.90 Data Modem",
-"		1522 2500  RockForceF4 4 Port V.34 Super-G3 Fax Modem",
-"		1522 2600  RockForceD8 8 Port V.90 Data Modem",
-"		1522 2700  RockForceF8 8 Port V.34 Super-G3 Fax Modem",
-"1523  MUSIC Semiconductors",
-"1524  ENE Technology Inc",
-"	0510  CB710 Memory Card Reader Controller",
-"		103c 006a  NX9500",
-"	0520  FLASH memory: ENE Technology Inc:",
-"	0530  ENE PCI Memory Stick Card Reader Controller",
-"	0550  ENE PCI Secure Digital Card Reader Controller",
-"	0610  PCI Smart Card Reader Controller",
-"	1211  CB1211 Cardbus Controller",
-"	1225  CB1225 Cardbus Controller",
-"	1410  CB1410 Cardbus Controller",
-"		1025 003c  CL50 motherboard",
-"		1025 005a  TravelMate 290",
-"	1411  CB-710/2/4 Cardbus Controller",
-"		103c 006a  NX9500",
-"	1412  CB-712/4 Cardbus Controller",
-"	1420  CB1420 Cardbus Controller",
-"	1421  CB-720/2/4 Cardbus Controller",
-"	1422  CB-722/4 Cardbus Controller",
-"1525  IMPACT Technologies",
-"1526  ISS, Inc",
-"1527  SOLECTRON",
-"1528  ACKSYS",
-"1529  AMERICAN MICROSystems Inc",
-"152a  QUICKTURN DESIGN Systems",
-"152b  FLYTECH Technology CO Ltd",
-"152c  MACRAIGOR Systems LLC",
-"152d  QUANTA Computer Inc",
-"152e  MELEC Inc",
-"152f  PHILIPS - CRYPTO",
-"1530  ACQIS Technology Inc",
-"1531  CHRYON Corp",
-"1532  ECHELON Corp",
-"	0020  LonWorks PCLTA-20 PCI LonTalk Adapter",
-"1533  BALTIMORE",
-"1534  ROAD Corp",
-"1535  EVERGREEN Technologies Inc",
-"1537  DATALEX COMMUNCATIONS",
-"1538  ARALION Inc",
-"	0303  ARS106S Ultra ATA 133/100/66 Host Controller",
-"1539  ATELIER INFORMATIQUES et ELECTRONIQUE ETUDES S.A.",
-"153a  ONO SOKKI",
-"153b  TERRATEC Electronic GmbH",
-"	1144  Aureon 5.1",
-"	1147  Aureon 5.1 Sky",
-"	1158  Philips Semiconductors SAA7134 (rev 01) [Terratec Cinergy 600 TV]",
-"153c  ANTAL Electronic",
-"153d  FILANET Corp",
-"153e  TECHWELL Inc",
-"153f  MIPS Technologies, Inc.",
-"	0001  SOC-it 101 System Controller",
-"1540  PROVIDEO MULTIMEDIA Co Ltd",
-"1541  MACHONE Communications",
-"1542  Concurrent Computer Corporation",
-"1543  SILICON Laboratories",
-"	3052  Intel 537 [Winmodem]",
-"	4c22  Si3036 MC'97 DAA",
-"1544  DCM DATA Systems",
-"1545  VISIONTEK",
-"1546  IOI Technology Corp",
-"1547  MITUTOYO Corp",
-"1548  JET PROPULSION Laboratory",
-"1549  INTERCONNECT Systems Solutions",
-"154a  MAX Technologies Inc",
-"154b  COMPUTEX Co Ltd",
-"154c  VISUAL Technology Inc",
-"154d  PAN INTERNATIONAL Industrial Corp",
-"154e  SERVOTEST Ltd",
-"154f  STRATABEAM Technology",
-"1550  OPEN NETWORK Co Ltd",
-"1551  SMART Electronic DEVELOPMENT GmBH",
-"1552  RACAL AIRTECH Ltd",
-"1553  CHICONY Electronics Co Ltd",
-"1554  PROLINK Microsystems Corp",
-"1555  GESYTEC GmBH",
-"1556  PLD APPLICATIONS",
-"1557  MEDIASTAR Co Ltd",
-"1558  CLEVO/KAPOK Computer",
-"1559  SI LOGIC Ltd",
-"155a  INNOMEDIA Inc",
-"155b  PROTAC INTERNATIONAL Corp",
-"155c  Cemax-Icon Inc",
-"155d  Mac System Co Ltd",
-"155e  LP Elektronik GmbH",
-"155f  Perle Systems Ltd",
-"1560  Terayon Communications Systems",
-"1561  Viewgraphics Inc",
-"1562  Symbol Technologies",
-"1563  A-Trend Technology Co Ltd",
-"1564  Yamakatsu Electronics Industry Co Ltd",
-"1565  Biostar Microtech Int'l Corp",
-"1566  Ardent Technologies Inc",
-"1567  Jungsoft",
-"1568  DDK Electronics Inc",
-"1569  Palit Microsystems Inc.",
-"156a  Avtec Systems",
-"156b  2wire Inc",
-"156c  Vidac Electronics GmbH",
-"156d  Alpha-Top Corp",
-"156e  Alfa Inc",
-"156f  M-Systems Flash Disk Pioneers Ltd",
-"1570  Lecroy Corp",
-"1571  Contemporary Controls",
-"	a001  CCSI PCI20-485 ARCnet",
-"	a002  CCSI PCI20-485D ARCnet",
-"	a003  CCSI PCI20-485X ARCnet",
-"	a004  CCSI PCI20-CXB ARCnet",
-"	a005  CCSI PCI20-CXS ARCnet",
-"	a006  CCSI PCI20-FOG-SMA ARCnet",
-"	a007  CCSI PCI20-FOG-ST ARCnet",
-"	a008  CCSI PCI20-TB5 ARCnet",
-"	a009  CCSI PCI20-5-485 5Mbit ARCnet",
-"	a00a  CCSI PCI20-5-485D 5Mbit ARCnet",
-"	a00b  CCSI PCI20-5-485X 5Mbit ARCnet",
-"	a00c  CCSI PCI20-5-FOG-ST 5Mbit ARCnet",
-"	a00d  CCSI PCI20-5-FOG-SMA 5Mbit ARCnet",
-"	a201  CCSI PCI22-485 10Mbit ARCnet",
-"	a202  CCSI PCI22-485D 10Mbit ARCnet",
-"	a203  CCSI PCI22-485X 10Mbit ARCnet",
-"	a204  CCSI PCI22-CHB 10Mbit ARCnet",
-"	a205  CCSI PCI22-FOG_ST 10Mbit ARCnet",
-"	a206  CCSI PCI22-THB 10Mbit ARCnet",
-"1572  Otis Elevator Company",
-"1573  Lattice - Vantis",
-"1574  Fairchild Semiconductor",
-"1575  Voltaire Advanced Data Security Ltd",
-"1576  Viewcast COM",
-"1578  HITT",
-"	5615  VPMK3 [Video Processor Mk III]",
-"1579  Dual Technology Corp",
-"157a  Japan Elecronics Ind Inc",
-"157b  Star Multimedia Corp",
-"157c  Eurosoft (UK)",
-"	8001  Fix2000 PCI Y2K Compliance Card",
-"157d  Gemflex Networks",
-"157e  Transition Networks",
-"157f  PX Instruments Technology Ltd",
-"1580  Primex Aerospace Co",
-"1581  SEH Computertechnik GmbH",
-"1582  Cytec Corp",
-"1583  Inet Technologies Inc",
-"1584  Uniwill Computer Corp",
-"1585  Logitron",
-"1586  Lancast Inc",
-"1587  Konica Corp",
-"1588  Solidum Systems Corp",
-"1589  Atlantek Microsystems Pty Ltd",
-"158a  Digalog Systems Inc",
-"158b  Allied Data Technologies",
-"158c  Hitachi Semiconductor & Devices Sales Co Ltd",
-"158d  Point Multimedia Systems",
-"158e  Lara Technology Inc",
-"158f  Ditect Coop",
-"1590  3pardata Inc",
-"1591  ARN",
-"1592  Syba Tech Ltd",
-"	0781  Multi-IO Card",
-"	0782  Parallel Port Card 2xEPP",
-"	0783  Multi-IO Card",
-"	0785  Multi-IO Card",
-"	0786  Multi-IO Card",
-"	0787  Multi-IO Card",
-"	0788  Multi-IO Card",
-"	078a  Multi-IO Card",
-"1593  Bops Inc",
-"1594  Netgame Ltd",
-"1595  Diva Systems Corp",
-"1596  Folsom Research Inc",
-"1597  Memec Design Services",
-"1598  Granite Microsystems",
-"1599  Delta Electronics Inc",
-"159a  General Instrument",
-"159b  Faraday Technology Corp",
-"159c  Stratus Computer Systems",
-"159d  Ningbo Harrison Electronics Co Ltd",
-"159e  A-Max Technology Co Ltd",
-"159f  Galea Network Security",
-"15a0  Compumaster SRL",
-"15a1  Geocast Network Systems",
-"15a2  Catalyst Enterprises Inc",
-"	0001  TA700 PCI Bus Analyzer/Exerciser",
-"15a3  Italtel",
-"15a4  X-Net OY",
-"15a5  Toyota Macs Inc",
-"15a6  Sunlight Ultrasound Technologies Ltd",
-"15a7  SSE Telecom Inc",
-"15a8  Shanghai Communications Technologies Center",
-"15aa  Moreton Bay",
-"15ab  Bluesteel Networks Inc",
-"15ac  North Atlantic Instruments",
-"15ad  VMware Inc",
-"	0405  [VMware SVGA II] PCI Display Adapter",
-"	0710  Virtual SVGA",
-"	0720  VMware High-Speed Virtual NIC [vmxnet]",
-"15ae  Amersham Pharmacia Biotech",
-"15b0  Zoltrix International Ltd",
-"15b1  Source Technology Inc",
-"15b2  Mosaid Technologies Inc",
-"15b3  Mellanox Technologies",
-"	5274  MT21108 InfiniBridge",
-"	5a44  MT23108 InfiniHost",
-"	5a45  MT23108 [Infinihost HCA Flash Recovery]",
-"	5a46  MT23108 PCI Bridge",
-"	5e8d  MT25204 [InfiniHost III Lx HCA Flash Recovery]",
-"	6274  MT25204 [InfiniHost III Lx HCA]",
-"	6278  MT25208 InfiniHost III Ex (Tavor compatibility mode)",
-"	6279  MT25208 [InfiniHost III Ex HCA Flash Recovery]",
-"	6282  MT25208 InfiniHost III Ex",
-"15b4  CCI/TRIAD",
-"15b5  Cimetrics Inc",
-"15b6  Texas Memory Systems Inc",
-"15b7  Sandisk Corp",
-"15b8  ADDI-DATA GmbH",
-"15b9  Maestro Digital Communications",
-"15ba  Impacct Technology Corp",
-"15bb  Portwell Inc",
-"15bc  Agilent Technologies",
-"	1100  E8001-66442 PCI Express CIC",
-"	2922  64 Bit, 133MHz PCI-X Exerciser & Protocol Checker",
-"	2928  64 Bit, 66MHz PCI Exerciser & Analyzer",
-"	2929  64 Bit, 133MHz PCI-X Analyzer & Exerciser",
-"15bd  DFI Inc",
-"15be  Sola Electronics",
-"15bf  High Tech Computer Corp (HTC)",
-"15c0  BVM Ltd",
-"15c1  Quantel",
-"15c2  Newer Technology Inc",
-"15c3  Taiwan Mycomp Co Ltd",
-"15c4  EVSX Inc",
-"15c5  Procomp Informatics Ltd",
-"	8010  1394b - 1394 Firewire 3-Port Host Adapter Card",
-"15c6  Technical University of Budapest",
-"15c7  Tateyama System Laboratory Co Ltd",
-"	0349  Tateyama C-PCI PLC/NC card Rev.01A",
-"15c8  Penta Media Co Ltd",
-"15c9  Serome Technology Inc",
-"15ca  Bitboys OY",
-"15cb  AG Electronics Ltd",
-"15cc  Hotrail Inc",
-"15cd  Dreamtech Co Ltd",
-"15ce  Genrad Inc",
-"15cf  Hilscher GmbH",
-"15d1  Infineon Technologies AG",
-"15d2  FIC (First International Computer Inc)",
-"15d3  NDS Technologies Israel Ltd",
-"15d4  Iwill Corp",
-"15d5  Tatung Co",
-"15d6  Entridia Corp",
-"15d7  Rockwell-Collins Inc",
-"15d8  Cybernetics Technology Co Ltd",
-"15d9  Super Micro Computer Inc",
-"15da  Cyberfirm Inc",
-"15db  Applied Computing Systems Inc",
-"15dc  Litronic Inc",
-"	0001  Argus 300 PCI Cryptography Module",
-"15dd  Sigmatel Inc",
-"15de  Malleable Technologies Inc",
-"15df  Infinilink Corp",
-"15e0  Cacheflow Inc",
-"15e1  Voice Technologies Group Inc",
-"15e2  Quicknet Technologies Inc",
-"15e3  Networth Technologies Inc",
-"15e4  VSN Systemen BV",
-"15e5  Valley technologies Inc",
-"15e6  Agere Inc",
-"15e7  Get Engineering Corp",
-"15e8  National Datacomm Corp",
-"	0130  Wireless PCI Card",
-"15e9  Pacific Digital Corp",
-"	1841  ADMA-100 DiscStaQ ATA Controller",
-"15ea  Tokyo Denshi Sekei K.K.",
-"15eb  Drsearch GmbH",
-"15ec  Beckhoff GmbH",
-"	3101  FC3101 Profibus DP 1 Channel PCI",
-"	5102  FC5102",
-"15ed  Macrolink Inc",
-"15ee  In Win Development Inc",
-"15ef  Intelligent Paradigm Inc",
-"15f0  B-Tree Systems Inc",
-"15f1  Times N Systems Inc",
-"15f2  Diagnostic Instruments Inc",
-"15f3  Digitmedia Corp",
-"15f4  Valuesoft",
-"15f5  Power Micro Research",
-"15f6  Extreme Packet Device Inc",
-"15f7  Banctec",
-"15f8  Koga Electronics Co",
-"15f9  Zenith Electronics Corp",
-"15fa  J.P. Axzam Corp",
-"15fb  Zilog Inc",
-"15fc  Techsan Electronics Co Ltd",
-"15fd  N-CUBED.NET",
-"15fe  Kinpo Electronics Inc",
-"15ff  Fastpoint Technologies Inc",
-"1600  Northrop Grumman - Canada Ltd",
-"1601  Tenta Technology",
-"1602  Prosys-tec Inc",
-"1603  Nokia Wireless Communications",
-"1604  Central System Research Co Ltd",
-"1605  Pairgain Technologies",
-"1606  Europop AG",
-"1607  Lava Semiconductor Manufacturing Inc",
-"1608  Automated Wagering International",
-"1609  Scimetric Instruments Inc",
-"1612  Telesynergy Research Inc.",
-"1619  FarSite Communications Ltd",
-"	0400  FarSync T2P (2 port X.21/V.35/V.24)",
-"	0440  FarSync T4P (4 port X.21/V.35/V.24)",
-"	0610  FarSync T1U (1 port X.21/V.35/V.24)",
-"	0620  FarSync T2U (2 port X.21/V.35/V.24)",
-"	0640  FarSync T4U (4 port X.21/V.35/V.24)",
-"	1610  FarSync TE1 (T1,E1)",
-"	2610  FarSync DSL-S1 (SHDSL)",
-"161f  Rioworks",
-"1626  TDK Semiconductor Corp.",
-"	8410  RTL81xx Fast Ethernet",
-"1629  Kongsberg Spacetec AS",
-"	1003  Format synchronizer v3.0",
-"	2002  Fast Universal Data Output",
-"1637  Linksys",
-"	3874  Linksys 802.11b WMP11 PCI Wireless card",
-"1638  Standard Microsystems Corp [SMC]",
-"	1100  SMC2602W EZConnect / Addtron AWA-100 / Eumitcom PCI WL11000",
-"163c  Smart Link Ltd.",
-"	3052  SmartLink SmartPCI562 56K Modem",
-"	5449  SmartPCI561 Modem",
-"1657  Brocade Communications Systems, Inc.",
-"165a  Epix Inc",
-"	c100  PIXCI(R) CL1 Camera Link Video Capture Board [custom QL5232]",
-"	d200  PIXCI(R) D2X Digital Video Capture Board [custom QL5232]",
-"	d300  PIXCI(R) D3X Digital Video Capture Board [custom QL5232]",
-"165d  Hsing Tech. Enterprise Co., Ltd.",
-"165f  Linux Media Labs, LLC",
-"	1020  LMLM4 MPEG-4 encoder",
-"1661  Worldspace Corp.",
-"1668  Actiontec Electronics Inc",
-"	0100  Mini-PCI bridge",
-"166d  Broadcom Corporation",
-"	0001  SiByte BCM1125/1125H/1250 System-on-a-Chip PCI",
-"	0002  SiByte BCM1125H/1250 System-on-a-Chip HyperTransport",
-"1677  Bernecker + Rainer",
-"	104e  5LS172.6 B&R Dual CAN Interface Card",
-"	12d7  5LS172.61 B&R Dual CAN Interface Card",
-"167b  ZyDAS Technology Corp.",
-"	2102  ZyDAS ZD1202",
-"		187e 3406  ZyAIR B-122 CardBus 11Mbs Wireless LAN Card",
-"1681  Hercules",
-"	0010  Hercules 3d Prophet II Ultra 64MB (350 MHz NV15BR core)",
-"1682  XFX Pine Group Inc.",
-"1688  CastleNet Technology Inc.",
-"	1170  WLAN 802.11b card",
-"168c  Atheros Communications, Inc.",
-"	0007  AR5000 802.11a Wireless Adapter",
-"	0011  AR5210 802.11a NIC",
-"	0012  AR5211 802.11ab NIC",
-"	0013  AR5212 802.11abg NIC",
-"		1113 d301  Philips CPWNA100 Wireless CardBus adapter",
-"		1186 3202  D-link DWL-G650 (Rev B3,B5) Wireless cardbus adapter",
-"		1186 3203  DWL-G520 Wireless PCI Adapter",
-"		1186 3a12  D-Link AirPlus DWL-G650 Wireless Cardbus Adapter(rev.C)",
-"		1186 3a13  D-Link AirPlus DWL-G520 Wireless PCI Adapter(rev.B)",
-"		1186 3a14  D-Link AirPremier DWL-AG530 Wireless PCI Adapter",
-"		1186 3a17  D-Link AirPremier DWL-G680 Wireless Cardbus Adapter",
-"		1186 3a18  D-Link AirPremier DWL-G550 Wireless PCI Adapter",
-"		1186 3a63  D-Link AirPremier DWL-AG660 Wireless Cardbus Adapter",
-"		1186 3a94  C54C Wireless 801.11g cardbus",
-"		1186 3ab0  Allnet ALL0281 Wireless PCI Card",
-"		1385 4d00  Netgear WG311T Wireless PCI Adapter",
-"		1458 e911  Gigabyte GN-WIAG02",
-"		14b7 0a60  8482-WD ORiNOCO 11a/b/g Wireless PCI Adapter",
-"		168c 0013  AirPlus XtremeG DWL-G650 Wireless PCMCIA Adapter",
-"		168c 1025  DWL-G650B2 Wireless CardBus Adapter",
-"		168c 1027  Netgate NL-3054CB ARIES b/g CardBus Adapter",
-"		168c 2026  Netgate 5354MP ARIES a(108Mb turbo)/b/g MiniPCI Adapter",
-"		168c 2041  Netgate 5354MP Plus ARIES2 b/g MiniPCI Adapter",
-"		168c 2042  Netgate 5354MP Plus ARIES2 a/b/g MiniPCI Adapter",
-"		16ab 7302  Trust Speedshare Turbo Pro Wireless PCI Adapter",
-"		185f 2012  Wistron NeWeb WLAN a+b+g model CB9",
-"	001a  AR5005G 802.11abg NIC",
-"		1113 ee20  SMC Wireless CardBus Adapter 802.11g (SMCWCB-G EU)",
-"		1113 ee24  SMC Wireless PCI Card WPCI-G",
-"		1186 3a15  D-Link AirPlus G DWL-G630 Wireless Cardbus Adapter(rev.D)",
-"		1186 3a16  D-Link AirPlus G DWL-G510 Wireless PCI Adapter(rev.B)",
-"		1186 3a23  D-Link AirPlus G DWL-G520+A Wireless PCI Adapter",
-"		1186 3a24  D-Link AirPlus G DWL-G650+A Wireless Cardbus Adapter",
-"		168c 1052  TP-Link TL-WN510G Wireless CardBus Adapter",
-"	001b  AR5006X 802.11abg NIC",
-"		1186 3a19  D-Link AirPremier AG DWL-AG660 Wireless Cardbus Adapter",
-"		1186 3a22  D-Link AirPremier AG DWL-AG530 Wireless PCI Adapter",
-"		168c 2062  EnGenius EMP-8602 (400mw)",
-"		168c 2063  EnGenius EMP-8602 (400mw)",
-"	0020  AR5005VL 802.11bg Wireless NIC",
-"	1014  AR5212 802.11abg NIC",
-"1695  EPoX Computer Co., Ltd.",
-"169c  Netcell Corporation",
-"	0044  Revolution Storage Processing Card",
-"16a5  Tekram Technology Co.,Ltd.",
-"16ab  Global Sun Technology Inc",
-"	1100  GL24110P",
-"	1101  PLX9052 PCMCIA-to-PCI Wireless LAN",
-"	1102  PCMCIA-to-PCI Wireless Network Bridge",
-"	8501  WL-8305 Wireless LAN PCI Adapter",
-"16ae  Safenet Inc",
-"	1141  SafeXcel-1141",
-"16af  SparkLAN Communications, Inc.",
-"16b4  Aspex Semiconductor Ltd",
-"16b8  Sonnet Technologies, Inc.",
-"16be  Creatix Polymedia GmbH",
-"16c6  Micrel-Kendin",
-"	8695  Centaur KS8695 ARM processor",
-"16c8  Octasic Inc.",
-"16c9  EONIC B.V. The Netherlands",
-"16ca  CENATEK Inc",
-"	0001  Rocket Drive DL",
-"16cd  Densitron Technologies",
-"16ce  Roland Corp.",
-"16d5  Acromag, Inc.",
-"	4d4e  PMC482, APC482, AcPC482 Counter Timer Board",
-"16df  PIKA Technologies Inc.",
-"16e3  European Space Agency",
-"	1e0f  LEON2FT Processor",
-"16ec  U.S. Robotics",
-"	00ff  USR997900 10/100 Mbps PCI Network Card",
-"	0116  USR997902 10/100/1000 Mbps PCI Network Card",
-"	3685  Wireless Access PCI Adapter Model 022415",
-"16ed  Sycron N. V.",
-"	1001  UMIO communication card",
-"16f3  Jetway Information Co., Ltd.",
-"16f4  Vweb Corp",
-"	8000  VW2010",
-"16f6  VideoTele.com, Inc.",
-"1702  Internet Machines Corporation (IMC)",
-"1705  Digital First, Inc.",
-"170b  NetOctave",
-"	0100  NSP2000-SSL crypto accelerator",
-"170c  YottaYotta Inc.",
-"1725  Vitesse Semiconductor",
-"	7174  VSC7174 PCI/PCI-X Serial ATA Host Bus Controller",
-"172a  Accelerated Encryption",
-"	13c8  AEP SureWare Runner 1000V3",
-"1734  Fujitsu Siemens Computer GmbH",
-"	1078  Amilo Pro v2010",
-"1737  Linksys",
-"	0013  WMP54G Wireless Pci Card",
-"	0015  WMP54GS Wireless Pci Card",
-"	1032  Gigabit Network Adapter",
-"		1737 0015  EG1032 v2 Instant Gigabit Network Adapter",
-"		1737 0024  EG1032 v3 Instant Gigabit Network Adapter",
-"	1064  Gigabit Network Adapter",
-"		1737 0016  EG1064 v2 Instant Gigabit Network Adapter",
-"	ab08  21x4x DEC-Tulip compatible 10/100 Ethernet",
-"	ab09  21x4x DEC-Tulip compatible 10/100 Ethernet",
-"173b  Altima (nee Broadcom)",
-"	03e8  AC1000 Gigabit Ethernet",
-"	03e9  AC1001 Gigabit Ethernet",
-"	03ea  AC9100 Gigabit Ethernet",
-"		173b 0001  AC1002",
-"	03eb  AC1003 Gigabit Ethernet",
-"1743  Peppercon AG",
-"	8139  ROL/F-100 Fast Ethernet Adapter with ROL",
-"1749  RLX Technologies",
-"174b  PC Partner Limited",
-"174d  WellX Telecom SA",
-"175c  AudioScience Inc",
-"175e  Sanera Systems, Inc.",
-"1775  SBS Technologies",
-"1787  Hightech Information System Ltd.",
-"1796  Research Centre Juelich",
-"	0001  SIS1100 [Gigabit link]",
-"	0002  HOTlink",
-"	0003  Counter Timer",
-"	0004  CAMAC Controller",
-"	0005  PROFIBUS",
-"	0006  AMCC HOTlink",
-"1797  JumpTec h, GMBH",
-"1799  Belkin",
-"	6001  Wireless PCI Card - F5D6001",
-"	6020  Wireless PCMCIA Card - F5D6020",
-"	6060  Wireless PDA Card - F5D6060",
-"	7000  Wireless PCI Card - F5D7000",
-"	7010  BCM4306 802.11b/g Wireless Lan Controller F5D7010",
-"179c  Data Patterns",
-"	0557  DP-PCI-557 [PCI 1553B]",
-"	0566  DP-PCI-566 [Intelligent PCI 1553B]",
-"	5031  DP-CPCI-5031-Synchro Module",
-"	5121  DP-CPCI-5121-IP Carrier",
-"	5211  DP-CPCI-5211-IP Carrier",
-"	5679  AGE Display Module",
-"17a0  Genesys Logic, Inc",
-"	8033  GL880S USB 1.1 controller",
-"	8034  GL880S USB 2.0 controller",
-"17aa  Lenovo",
-"17af  Hightech Information System Ltd.",
-"17b3  Hawking Technologies",
-"	ab08  PN672TX 10/100 Ethernet",
-"17b4  Indra Networks, Inc.",
-"	0011  WebEnhance 100 GZIP Compression Card",
-"17c0  Wistron Corp.",
-"17c2  Newisys, Inc.",
-"17cb  Airgo Networks Inc",
-"17cc  NetChip Technology, Inc",
-"	2280  USB 2.0",
-"17cf  Z-Com, Inc.",
-"17d3  Areca Technology Corp.",
-"	1110  ARC-1110 4-Port PCI-X to SATA RAID Controller",
-"	1120  ARC-1120 8-Port PCI-X to SATA RAID Controller",
-"	1130  ARC-1130 12-Port PCI-X to SATA RAID Controller",
-"	1160  ARC-1160 16-Port PCI-X to SATA RAID Controller",
-"	1210  ARC-1210 4-Port PCI-Express to SATA RAID Controller",
-"	1220  ARC-1220 8-Port PCI-Express to SATA RAID Controller",
-"	1230  ARC-1230 12-Port PCI-Express to SATA RAID Controller",
-"	1260  ARC-1260 16-Port PCI-Express to SATA RAID Controller",
-"17d5  S2io Inc.",
-"	5831  Xframe 10 Gigabit Ethernet PCI-X",
-"		103c 12d5  HP PCI-X 133MHz 10GbE SR Fiber",
-"	5832  Xframe II 10Gbps Ethernet",
-"17de  KWorld Computer Co. Ltd.",
-"17ee  Connect Components Ltd",
-"17f2  Albatron Corp.",
-"17fe  Linksys, A Division of Cisco Systems",
-"	2120  WMP11v4 802.11b PCI card",
-"	2220  [AirConn] INPROCOMM IPN 2220 Wireless LAN Adapter (rev 01)",
-"		17fe 2220  WPC54G ver. 4",
-"17ff  Benq Corporation",
-"1809  Lumanate, Inc.",
-"1813  Ambient Technologies Inc",
-"	4000  HaM controllerless modem",
-"		16be 0001  V9x HAM Data Fax Modem",
-"	4100  HaM plus Data Fax Modem",
-"		16be 0002  V9x HAM 1394",
-"1814  RaLink",
-"	0101  Wireless PCI Adapter RT2400 / RT2460",
-"		1043 0127  WiFi-b add-on Card",
-"		1462 6828  PC11B2 (MS-6828) Wireless 11b PCI Card",
-"	0200  RT2500 802.11g PCI [PC54G2]",
-"	0201  RT2500 802.11g Cardbus/mini-PCI",
-"		1043 130f  WL-130g",
-"		1371 001e  CWC-854 Wireless-G CardBus Adapter",
-"		1371 001f  CWM-854 Wireless-G Mini PCI Adapter",
-"		1371 0020  CWP-854 Wireless-G PCI Adapter",
-"		1458 e381  GN-WMKG 802.11b/g Wireless CardBus Adapter",
-"		1458 e931  GN-WIKG 802.11b/g mini-PCI Adapter",
-"		1462 6835  Wireless 11G CardBus CB54G2",
-"		1737 0032  WMP54G 2.0 PCI Adapter",
-"		1799 700a  F5D7000 Wireless G Desktop Network Card",
-"		1799 701a  F5D7010 Wireless G Notebook Network Card",
-"		185f 22a0  CN-WF513 Wireless Cardbus Adapter",
-"	0301  RT2561/RT61 802.11g PCI",
-"		1186 3c08  DWL-G630 Rev E",
-"		1186 3c09  DWL-G510 Rev C",
-"	0302  RT2561/RT61 rev B 802.11g",
-"		1186 3c08  DWL-G630 Rev E",
-"		1186 3c09  DWL-G510 Rev C",
-"	0401  Ralink RT2600 802.11 MIMO",
-"1820  InfiniCon Systems Inc.",
-"1822  Twinhan Technology Co. Ltd",
-"	4e35  Mantis DTV PCI Bridge Controller [Ver 1.0]",
-"182d  SiteCom Europe BV",
-"	3069  ISDN PCI DC-105V2",
-"	9790  WL-121 Wireless Network Adapter 100g+ [Ver.3]",
-"1830  Credence Systems Corporation",
-"183b  MikroM GmbH",
-"	08a7  MVC100 DVI",
-"	08a8  MVC101 SDI",
-"	08a9  MVC102 DVI+Audio",
-"1849  ASRock Incorporation",
-"1851  Microtune, Inc.",
-"1852  Anritsu Corp.",
-"1853  SMSC Automotive Infotainment System Group",
-"1854  LG Electronics, Inc.",
-"185b  Compro Technology, Inc.",
-"185f  Wistron NeWeb Corp.",
-"1864  SilverBack",
-"	2110  ISNAP 2110",
-"1867  Topspin Communications",
-"	5a44  MT23108 InfiniHost HCA",
-"	5a45  MT23108 InfiniHost HCA flash recovery",
-"	5a46  MT23108 InfiniHost HCA bridge",
-"	6278  MT25208 InfiniHost III Ex (Tavor compatibility mode)",
-"	6282  MT25208 InfiniHost III Ex",
-"187e  ZyXEL Communication Corporation",
-"	3403  ZyAir G-110 802.11g",
-"	340e  M-302 802.11g XtremeMIMO",
-"1888  Varisys Ltd",
-"	0301  VMFX1 FPGA PMC module",
-"	0601  VSM2 dual PMC carrier",
-"	0710  VS14x series PowerPC PCI board",
-"	0720  VS24x series PowerPC PCI board",
-"188a  Ample Communications, Inc",
-"1890  Egenera, Inc.",
-"1894  KNC One",
-"1896  B&B Electronics Manufacturing Company, Inc.",
-"18a1  Astute Networks Inc.",
-"18ac  DViCO Corporation",
-"	d500  FusionHDTV 5",
-"	d810  FusionHDTV 3 Gold",
-"	d820  FusionHDTV 3 Gold-T",
-"18b8  Ammasso",
-"	b001  AMSO 1100 iWARP/RDMA Gigabit Ethernet Coprocessor",
-"18bc  Info-Tek Corp.",
-"18c3  Micronas Semiconductor Holding AG",
-"18c8  Cray Inc",
-"18c9  ARVOO Engineering BV",
-"18ca  XGI - Xabre Graphics Inc",
-"	0020  Volari Z7",
-"	0040  Volari V3XT/V5/V8",
-"18d2  Sitecom",
-"	3069  DC-105v2 ISDN controller",
-"18dd  Artimi Inc",
-"	4c6f  Artimi RTMI-100 UWB adapter",
-"18e6  MPL AG",
-"	0001  OSCI [Octal Serial Communication Interface]",
-"18ec  Cesnet, z.s.p.o.",
-"	c006  COMBO6",
-"		18ec d001  COMBO-4MTX",
-"		18ec d002  COMBO-4SFP",
-"		18ec d003  COMBO-4SFPRO",
-"		18ec d004  COMBO-2XFP",
-"	c045  COMBO6E",
-"	c050  COMBO-PTM",
-"	c058  COMBO6X",
-"		18ec d001  COMBO-4MTX",
-"		18ec d002  COMBO-4SFP",
-"		18ec d003  COMBO-4SFPRO",
-"		18ec d004  COMBO-2XFP",
-"18f7  Commtech, Inc.",
-"	0001  Fastcom ESCC-PCI-335",
-"	0002  Fastcom 422/4-PCI-335",
-"	0004  Fastcom 422/2-PCI-335",
-"	0005  Fastcom IGESCC-PCI-ISO/1",
-"	000a  Fastcom 232/4-PCI-335",
-"18fb  Resilience Corporation",
-"1904  Hangzhou Silan Microelectronics Co., Ltd.",
-"1923  Sangoma Technologies Corp.",
-"	0100  A104d QUAD T1/E1 AFT card",
-"	0400  A104u Quad T1/E1 AFT",
-"1924  Level 5 Networks Inc.",
-"192e  TransDimension",
-"1931  Option N.V.",
-"	000c  Qualcomm MSM6275 UMTS chip",
-"1942  ClearSpeed Technology plc",
-"	e511  CSX600 Advance Accelerator Board",
-"1957  Freescale Semiconductor Inc",
-"	0080  MPC8349E",
-"	0081  MPC8349",
-"	0082  MPC8347E TBGA",
-"	0083  MPC8347 TBGA",
-"	0084  MPC8347E PBGA",
-"	0085  MPC8347 PBGA",
-"	0086  MPC8343E",
-"	0087  MPC8343",
-"1958  Faster Technology, LLC.",
-"1966  Orad Hi-Tec Systems",
-"	1975  DVG64 family",
-"196a  Sensory Networks Inc.",
-"	0101  NodalCore C-1000 Content Classification Accelerator",
-"	0102  NodalCore C-2000 Content Classification Accelerator",
-"197b  JMicron Technologies, Inc.",
-"	2360  JMicron 20360/20363 AHCI Controller",
-"	2361  JMB361 AHCI/IDE",
-"	2363  JMicron 20360/20363 AHCI Controller",
-"	2365  JMB365 AHCI/IDE",
-"	2366  JMB366 AHCI/IDE",
-"1989  Montilio Inc.",
-"	0001  RapidFile Bridge",
-"	8001  RapidFile",
-"1993  Innominate Security Technologies AG",
-"199a  Pulse-LINK, Inc.",
-"19a8  DAQDATA GmbH",
-"19ac  Kasten Chase Applied Research",
-"	0001  ACA2400 Crypto Accelerator",
-"19ae  Progeny Systems Corporation",
-"	0520  4135 HFT Interface Controller",
-"19d4  Quixant Limited",
-"19e2  Vector Informatik GmbH",
-"1a03  ASPEED Technology, Inc.",
-"	2000  AST2000",
-"1a08  Sierra semiconductor",
-"	0000  SC15064",
-"1a1d  GFaI e.V.",
-"1a29  Fortinet, Inc.",
-"1b13  Jaton Corp",
-"1c1c  Symphony",
-"	0001  82C101",
-"1d44  DPT",
-"	a400  PM2x24/PM3224",
-"1de1  Tekram Technology Co.,Ltd.",
-"	0391  TRM-S1040",
-"	2020  DC-390",
-"	690c  690c",
-"	dc29  DC290",
-"1fc0  Tumsan Oy",
-"	0300  E2200 Dual E1/Rawpipe Card",
-"1fc1  PathScale, Inc",
-"	000d  InfiniPath HT-400",
-"	0010  InfiniPath PE-800",
-"1fce  Cognio Inc.",
-"	0001  Spectrum Analyzer PC Card (SAgE)",
-"2000  Smart Link Ltd.",
-"2001  Temporal Research Ltd",
-"2003  Smart Link Ltd.",
-"2004  Smart Link Ltd.",
-"21c3  21st Century Computer Corp.",
-"22b8  Motorola, Inc.",
-"2348  Racore",
-"	2010  8142 100VG/AnyLAN",
-"2646  Kingston Technologies",
-"270b  Xantel Corporation",
-"270f  Chaintech Computer Co. Ltd",
-"2711  AVID Technology Inc.",
-"2a15  3D Vision(\?\?\?)",
-"3000  Hansol Electronics Inc.",
-"3142  Post Impression Systems.",
-"3388  Hint Corp",
-"	0013  HiNT HC4 PCI to ISDN bridge, Multimedia audio controller",
-"	0014  HiNT HC4 PCI to ISDN bridge, Network controller",
-"	0020  HB6 Universal PCI-PCI bridge (transparent mode)",
-"	0021  HB6 Universal PCI-PCI bridge (non-transparent mode)",
-"		4c53 1050  CT7 mainboard",
-"		4c53 1080  CT8 mainboard",
-"		4c53 1090  Cx9 mainboard",
-"		4c53 10a0  CA3/CR3 mainboard",
-"		4c53 3010  PPCI mezzanine (32-bit PMC)",
-"		4c53 3011  PPCI mezzanine (64-bit PMC)",
-"		4c53 4000  PMCCARR1 carrier board",
-"	0022  HiNT HB4 PCI-PCI Bridge (PCI6150)",
-"	0026  HB2 PCI-PCI Bridge",
-"	101a  E.Band [AudioTrak Inca88]",
-"	101b  E.Band [AudioTrak Inca88]",
-"	8011  VXPro II Chipset",
-"		3388 8011  VXPro II Chipset CPU to PCI Bridge",
-"	8012  VXPro II Chipset",
-"		3388 8012  VXPro II Chipset PCI to ISA Bridge",
-"	8013  VXPro II IDE",
-"		3388 8013  VXPro II Chipset EIDE Controller",
-"3411  Quantum Designs (H.K.) Inc",
-"3513  ARCOM Control Systems Ltd",
-"3842  eVga.com. Corp.",
-"	c370  e-GeFORCE 6600 256 DDR PCI-e",
-"38ef  4Links",
-"3d3d  3DLabs",
-"	0001  GLINT 300SX",
-"	0002  GLINT 500TX",
-"		0000 0000  GLoria L",
-"	0003  GLINT Delta",
-"		0000 0000  GLoria XL",
-"	0004  Permedia",
-"	0005  Permedia",
-"	0006  GLINT MX",
-"		0000 0000  GLoria XL",
-"		1048 0a42  GLoria XXL",
-"	0007  3D Extreme",
-"	0008  GLINT Gamma G1",
-"		1048 0a42  GLoria XXL",
-"	0009  Permedia II 2D+3D",
-"		1040 0011  AccelStar II",
-"		1048 0a42  GLoria XXL",
-"		13e9 1000  6221L-4U",
-"		3d3d 0100  AccelStar II 3D Accelerator",
-"		3d3d 0111  Permedia 3:16",
-"		3d3d 0114  Santa Ana",
-"		3d3d 0116  Oxygen GVX1",
-"		3d3d 0119  Scirocco",
-"		3d3d 0120  Santa Ana PCL",
-"		3d3d 0125  Oxygen VX1",
-"		3d3d 0127  Permedia3 Create!",
-"	000a  GLINT R3",
-"		3d3d 0121  Oxygen VX1",
-"	000c  GLINT R3 [Oxygen VX1]",
-"		3d3d 0144  Oxygen VX1-4X AGP [Permedia 4]",
-"	000d  GLint R4 rev A",
-"	0011  GLint R4 rev B",
-"	0012  GLint R5 rev A",
-"	0013  GLint R5 rev B",
-"	0020  VP10 visual processor",
-"	0022  VP10 visual processor",
-"	0024  VP9 visual processor",
-"	0100  Permedia II 2D+3D",
-"	07a1  Wildcat III 6210",
-"	07a2  Sun XVR-500 Graphics Accelerator",
-"	07a3  Wildcat IV 7210",
-"	1004  Permedia",
-"	3d04  Permedia",
-"	ffff  Glint VGA",
-"4005  Avance Logic Inc.",
-"	0300  ALS300 PCI Audio Device",
-"	0308  ALS300+ PCI Audio Device",
-"	0309  PCI Input Controller",
-"	1064  ALG-2064",
-"	2064  ALG-2064i",
-"	2128  ALG-2364A GUI Accelerator",
-"	2301  ALG-2301",
-"	2302  ALG-2302",
-"	2303  AVG-2302 GUI Accelerator",
-"	2364  ALG-2364A",
-"	2464  ALG-2464",
-"	2501  ALG-2564A/25128A",
-"	4000  ALS4000 Audio Chipset",
-"		4005 4000  ALS4000 Audio Chipset",
-"	4710  ALC200/200P",
-"4033  Addtron Technology Co, Inc.",
-"	1360  RTL8139 Ethernet",
-"4143  Digital Equipment Corp",
-"4144  Alpha Data",
-"	0044  ADM-XRCIIPro",
-"416c  Aladdin Knowledge Systems",
-"	0100  AladdinCARD",
-"	0200  CPC",
-"4321  Tata Power Strategic Electronics Division",
-"4444  Internext Compression Inc",
-"	0016  iTVC16 (CX23416) MPEG-2 Encoder",
-"		0070 0003  WinTV PVR 250",
-"		0070 0009  WinTV PVR 150",
-"		0070 0801  WinTV PVR 150",
-"		0070 0807  WinTV PVR 150",
-"		0070 4001  WinTV PVR 250",
-"		0070 4009  WinTV PVR 250",
-"		0070 4801  WinTV PVR 250",
-"		0070 4803  WinTV PVR 250",
-"		0070 8003  WinTV PVR 150",
-"		0070 8801  WinTV PVR 150",
-"		0070 c801  WinTV PVR 150",
-"		0070 e807  WinTV PVR 500 (1st unit)",
-"		0070 e817  WinTV PVR 500 (2nd unit)",
-"		0070 ff92  WiNTV PVR-550",
-"		0270 0801  WinTV PVR 150",
-"		12ab fff3  MPG600",
-"		12ab ffff  MPG600",
-"		9005 0092  VideOh! AVC-2010",
-"		9005 0093  VideOh! AVC-2410",
-"	0803  iTVC15 MPEG-2 Encoder",
-"		0070 4000  WinTV PVR-350",
-"		0070 4001  WinTV PVR-250",
-"		0070 4800  WinTV PVR-350 (V1)",
-"		12ab 0000  MPG160",
-"		1461 a3ce  M179",
-"		1461 a3cf  M179",
-"4468  Bridgeport machines",
-"4594  Cogetec Informatique Inc",
-"45fb  Baldor Electric Company",
-"4680  Umax Computer Corp",
-"4843  Hercules Computer Technology Inc",
-"4916  RedCreek Communications Inc",
-"	1960  RedCreek PCI adapter",
-"4943  Growth Networks",
-"494f  ACCES I/O Products, Inc.",
-"	10e8  LPCI-COM-8SM",
-"4978  Axil Computer Inc",
-"4a14  NetVin",
-"	5000  NV5000SC",
-"		4a14 5000  RT8029-Based Ethernet Adapter",
-"4b10  Buslogic Inc.",
-"4c48  LUNG HWA Electronics",
-"4c53  SBS Technologies",
-"	0000  PLUSTEST device",
-"		4c53 3000  PLUSTEST card (PC104+)",
-"		4c53 3001  PLUSTEST card (PMC)",
-"	0001  PLUSTEST-MM device",
-"		4c53 3002  PLUSTEST-MM card (PMC)",
-"4ca1  Seanix Technology Inc",
-"4d51  MediaQ Inc.",
-"	0200  MQ-200",
-"4d54  Microtechnica Co Ltd",
-"4ddc  ILC Data Device Corp",
-"	0100  DD-42924I5-300 (ARINC 429 Data Bus)",
-"	0801  BU-65570I1 MIL-STD-1553 Test and Simulation",
-"	0802  BU-65570I2 MIL-STD-1553 Test and Simulation",
-"	0811  BU-65572I1 MIL-STD-1553 Test and Simulation",
-"	0812  BU-65572I2 MIL-STD-1553 Test and Simulation",
-"	0881  BU-65570T1 MIL-STD-1553 Test and Simulation",
-"	0882  BU-65570T2 MIL-STD-1553 Test and Simulation",
-"	0891  BU-65572T1 MIL-STD-1553 Test and Simulation",
-"	0892  BU-65572T2 MIL-STD-1553 Test and Simulation",
-"	0901  BU-65565C1 MIL-STD-1553 Data Bus",
-"	0902  BU-65565C2 MIL-STD-1553 Data Bus",
-"	0903  BU-65565C3 MIL-STD-1553 Data Bus",
-"	0904  BU-65565C4 MIL-STD-1553 Data Bus",
-"	0b01  BU-65569I1 MIL-STD-1553 Data Bus",
-"	0b02  BU-65569I2 MIL-STD-1553 Data Bus",
-"	0b03  BU-65569I3 MIL-STD-1553 Data Bus",
-"	0b04  BU-65569I4 MIL-STD-1553 Data Bus",
-"5046  GemTek Technology Corporation",
-"	1001  PCI Radio",
-"5053  Voyetra Technologies",
-"	2010  Daytona Audio Adapter",
-"5136  S S Technologies",
-"5143  Qualcomm Inc",
-"5145  Ensoniq (Old)",
-"	3031  Concert AudioPCI",
-"5168  Animation Technologies Inc.",
-"	0300  FlyDVB-S",
-"	0301  FlyDVB-T",
-"5301  Alliance Semiconductor Corp.",
-"	0001  ProMotion aT3D",
-"5333  S3 Inc.",
-"	0551  Plato/PX (system)",
-"	5631  86c325 [ViRGE]",
-"	8800  86c866 [Vision 866]",
-"	8801  86c964 [Vision 964]",
-"	8810  86c764_0 [Trio 32 vers 0]",
-"	8811  86c764/765 [Trio32/64/64V+]",
-"	8812  86cM65 [Aurora64V+]",
-"	8813  86c764_3 [Trio 32/64 vers 3]",
-"	8814  86c767 [Trio 64UV+]",
-"	8815  86cM65 [Aurora 128]",
-"	883d  86c988 [ViRGE/VX]",
-"	8870  FireGL",
-"	8880  86c868 [Vision 868 VRAM] vers 0",
-"	8881  86c868 [Vision 868 VRAM] vers 1",
-"	8882  86c868 [Vision 868 VRAM] vers 2",
-"	8883  86c868 [Vision 868 VRAM] vers 3",
-"	88b0  86c928 [Vision 928 VRAM] vers 0",
-"	88b1  86c928 [Vision 928 VRAM] vers 1",
-"	88b2  86c928 [Vision 928 VRAM] vers 2",
-"	88b3  86c928 [Vision 928 VRAM] vers 3",
-"	88c0  86c864 [Vision 864 DRAM] vers 0",
-"	88c1  86c864 [Vision 864 DRAM] vers 1",
-"	88c2  86c864 [Vision 864-P DRAM] vers 2",
-"	88c3  86c864 [Vision 864-P DRAM] vers 3",
-"	88d0  86c964 [Vision 964 VRAM] vers 0",
-"	88d1  86c964 [Vision 964 VRAM] vers 1",
-"	88d2  86c964 [Vision 964-P VRAM] vers 2",
-"	88d3  86c964 [Vision 964-P VRAM] vers 3",
-"	88f0  86c968 [Vision 968 VRAM] rev 0",
-"	88f1  86c968 [Vision 968 VRAM] rev 1",
-"	88f2  86c968 [Vision 968 VRAM] rev 2",
-"	88f3  86c968 [Vision 968 VRAM] rev 3",
-"	8900  86c755 [Trio 64V2/DX]",
-"		5333 8900  86C775 Trio64V2/DX",
-"	8901  86c775/86c785 [Trio 64V2/DX or /GX]",
-"		5333 8901  86C775 Trio64V2/DX, 86C785 Trio64V2/GX",
-"	8902  Plato/PX",
-"	8903  Trio 3D business multimedia",
-"	8904  Trio 64 3D",
-"		1014 00db  Integrated Trio3D",
-"		5333 8904  86C365 Trio3D AGP",
-"	8905  Trio 64V+ family",
-"	8906  Trio 64V+ family",
-"	8907  Trio 64V+ family",
-"	8908  Trio 64V+ family",
-"	8909  Trio 64V+ family",
-"	890a  Trio 64V+ family",
-"	890b  Trio 64V+ family",
-"	890c  Trio 64V+ family",
-"	890d  Trio 64V+ family",
-"	890e  Trio 64V+ family",
-"	890f  Trio 64V+ family",
-"	8a01  ViRGE/DX or /GX",
-"		0e11 b032  ViRGE/GX",
-"		10b4 1617  Nitro 3D",
-"		10b4 1717  Nitro 3D",
-"		5333 8a01  ViRGE/DX",
-"	8a10  ViRGE/GX2",
-"		1092 8a10  Stealth 3D 4000",
-"	8a13  86c368 [Trio 3D/2X]",
-"		5333 8a13  Trio3D/2X",
-"	8a20  86c794 [Savage 3D]",
-"		5333 8a20  86C391 Savage3D",
-"	8a21  86c390 [Savage 3D/MV]",
-"		5333 8a21  86C390 Savage3D/MV",
-"	8a22  Savage 4",
-"		1033 8068  Savage 4",
-"		1033 8069  Savage 4",
-"		1033 8110  Savage 4 LT",
-"		105d 0018  SR9 8Mb SDRAM",
-"		105d 002a  SR9 Pro 16Mb SDRAM",
-"		105d 003a  SR9 Pro 32Mb SDRAM",
-"		105d 092f  SR9 Pro+ 16Mb SGRAM",
-"		1092 4207  Stealth III S540",
-"		1092 4800  Stealth III S540",
-"		1092 4807  SpeedStar A90",
-"		1092 4808  Stealth III S540",
-"		1092 4809  Stealth III S540",
-"		1092 480e  Stealth III S540",
-"		1092 4904  Stealth III S520",
-"		1092 4905  SpeedStar A200",
-"		1092 4a09  Stealth III S540",
-"		1092 4a0b  Stealth III S540 Xtreme",
-"		1092 4a0f  Stealth III S540",
-"		1092 4e01  Stealth III S540",
-"		1102 101d  3d Blaster Savage 4",
-"		1102 101e  3d Blaster Savage 4",
-"		5333 8100  86C394-397 Savage4 SDRAM 100",
-"		5333 8110  86C394-397 Savage4 SDRAM 110",
-"		5333 8125  86C394-397 Savage4 SDRAM 125",
-"		5333 8143  86C394-397 Savage4 SDRAM 143",
-"		5333 8a22  86C394-397 Savage4",
-"		5333 8a2e  86C394-397 Savage4 32bit",
-"		5333 9125  86C394-397 Savage4 SGRAM 125",
-"		5333 9143  86C394-397 Savage4 SGRAM 143",
-"	8a23  Savage 4",
-"	8a25  ProSavage PM133",
-"	8a26  ProSavage KM133",
-"	8c00  ViRGE/M3",
-"	8c01  ViRGE/MX",
-"		1179 0001  ViRGE/MX",
-"	8c02  ViRGE/MX+",
-"	8c03  ViRGE/MX+MV",
-"	8c10  86C270-294 Savage/MX-MV",
-"	8c11  82C270-294 Savage/MX",
-"	8c12  86C270-294 Savage/IX-MV",
-"		1014 017f  Thinkpad T20/T22",
-"		1179 0001  86C584 SuperSavage/IXC Toshiba",
-"	8c13  86C270-294 Savage/IX",
-"		1179 0001  Magnia Z310",
-"	8c22  SuperSavage MX/128",
-"	8c24  SuperSavage MX/64",
-"	8c26  SuperSavage MX/64C",
-"	8c2a  SuperSavage IX/128 SDR",
-"	8c2b  SuperSavage IX/128 DDR",
-"	8c2c  SuperSavage IX/64 SDR",
-"	8c2d  SuperSavage IX/64 DDR",
-"	8c2e  SuperSavage IX/C SDR",
-"		1014 01fc  ThinkPad T23 (2647-4MG)",
-"	8c2f  SuperSavage IX/C DDR",
-"	8d01  86C380 [ProSavageDDR K4M266]",
-"	8d02  VT8636A [ProSavage KN133] AGP4X VGA Controller (TwisterK)",
-"	8d03  VT8751 [ProSavageDDR P4M266]",
-"	8d04  VT8375 [ProSavage8 KM266/KL266]",
-"	9102  86C410 Savage 2000",
-"		1092 5932  Viper II Z200",
-"		1092 5934  Viper II Z200",
-"		1092 5952  Viper II Z200",
-"		1092 5954  Viper II Z200",
-"		1092 5a35  Viper II Z200",
-"		1092 5a37  Viper II Z200",
-"		1092 5a55  Viper II Z200",
-"		1092 5a57  Viper II Z200",
-"	ca00  SonicVibes",
-"544c  Teralogic Inc",
-"	0350  TL880-based HDTV/ATSC tuner",
-"5455  Technische University Berlin",
-"	4458  S5933",
-"5519  Cnet Technologies, Inc.",
-"5544  Dunord Technologies",
-"	0001  I-30xx Scanner Interface",
-"5555  Genroco, Inc",
-"	0003  TURBOstor HFP-832 [HiPPI NIC]",
-"5654  VoiceTronix Pty Ltd",
-"	3132  OpenSwitch12",
-"5700  Netpower",
-"5851  Exacq Technologies",
-"6356  UltraStor",
-"6374  c't Magazin fuer Computertechnik",
-"	6773  GPPCI",
-"6409  Logitec Corp.",
-"6666  Decision Computer International Co.",
-"	0001  PCCOM4",
-"	0002  PCCOM8",
-"	0004  PCCOM2",
-"	0101  PCI 8255/8254 I/O Card",
-"7063  pcHDTV",
-"	2000  HD-2000",
-"	3000  HD-3000",
-"7604  O.N. Electronic Co Ltd.",
-"7bde  MIDAC Corporation",
-"7fed  PowerTV",
-"8008  Quancom Electronic GmbH",
-"	0010  WDOG1 [PCI-Watchdog 1]",
-"	0011  PWDOG2 [PCI-Watchdog 2]",
-"807d  Asustek Computer, Inc.",
-"8086  Intel Corporation",
-"	0007  82379AB",
-"	0008  Extended Express System Support Controller",
-"	0039  21145 Fast Ethernet",
-"	0122  82437FX",
-"	0309  80303 I/O Processor PCI-to-PCI Bridge",
-"	030d  80312 I/O Companion Chip PCI-to-PCI Bridge",
-"	0326  6700/6702PXH I/OxAPIC Interrupt Controller A",
-"	0327  6700PXH I/OxAPIC Interrupt Controller B",
-"	0329  6700PXH PCI Express-to-PCI Bridge A",
-"	032a  6700PXH PCI Express-to-PCI Bridge B",
-"	032c  6702PXH PCI Express-to-PCI Bridge A",
-"	0330  80332 [Dobson] I/O processor (A-Segment Bridge)",
-"	0331  80332 [Dobson] I/O processor (A-Segment IOAPIC)",
-"	0332  80332 [Dobson] I/O processor (B-Segment Bridge)",
-"	0333  80332 [Dobson] I/O processor (B-Segment IOAPIC)",
-"	0334  80332 [Dobson] I/O processor (ATU)",
-"	0335  80331 [Lindsay] I/O processor (PCI-X Bridge)",
-"	0336  80331 [Lindsay] I/O processor (ATU)",
-"	0340  41210 [Lanai] Serial to Parallel PCI Bridge (A-Segment Bridge)",
-"	0341  41210 [Lanai] Serial to Parallel PCI Bridge (B-Segment Bridge)",
-"	0370  80333 Segment-A PCI Express-to-PCI Express Bridge",
-"	0371  80333 A-Bus IOAPIC",
-"	0372  80333 Segment-B PCI Express-to-PCI Express Bridge",
-"	0373  80333 B-Bus IOAPIC",
-"	0374  80333 Address Translation Unit",
-"	0482  82375EB/SB PCI to EISA Bridge",
-"	0483  82424TX/ZX [Saturn] CPU to PCI bridge",
-"	0484  82378ZB/IB, 82379AB (SIO, SIO.A) PCI to ISA Bridge",
-"	0486  82425EX/ZX [Aries] PCIset with ISA bridge",
-"	04a3  82434LX/NX [Mercury/Neptune] Processor to PCI bridge",
-"	04d0  82437FX [Triton FX]",
-"	0500  E8870 Processor bus control",
-"	0501  E8870 Memory controller",
-"	0502  E8870 Scalability Port 0",
-"	0503  E8870 Scalability Port 1",
-"	0510  E8870IO Hub Interface Port 0 registers (8-bit compatibility port)",
-"	0511  E8870IO Hub Interface Port 1 registers",
-"	0512  E8870IO Hub Interface Port 2 registers",
-"	0513  E8870IO Hub Interface Port 3 registers",
-"	0514  E8870IO Hub Interface Port 4 registers",
-"	0515  E8870IO General SIOH registers",
-"	0516  E8870IO RAS registers",
-"	0530  E8870SP Scalability Port 0 registers",
-"	0531  E8870SP Scalability Port 1 registers",
-"	0532  E8870SP Scalability Port 2 registers",
-"	0533  E8870SP Scalability Port 3 registers",
-"	0534  E8870SP Scalability Port 4 registers",
-"	0535  E8870SP Scalability Port 5 registers",
-"	0536  E8870SP Interleave registers 0 and 1",
-"	0537  E8870SP Interleave registers 2 and 3",
-"	0600  RAID Controller",
-"		8086 01af  SRCZCR",
-"		8086 01c1  ICP Vortex GDT8546RZ",
-"		8086 01f7  SCRU32",
-"	061f  80303 I/O Processor",
-"	0960  80960RP [i960 RP Microprocessor/Bridge]",
-"	0962  80960RM [i960RM Bridge]",
-"	0964  80960RP [i960 RP Microprocessor/Bridge]",
-"	1000  82542 Gigabit Ethernet Controller",
-"		0e11 b0df  NC1632 Gigabit Ethernet Adapter (1000-SX)",
-"		0e11 b0e0  NC1633 Gigabit Ethernet Adapter (1000-LX)",
-"		0e11 b123  NC1634 Gigabit Ethernet Adapter (1000-SX)",
-"		1014 0119  Netfinity Gigabit Ethernet SX Adapter",
-"		8086 1000  PRO/1000 Gigabit Server Adapter",
-"	1001  82543GC Gigabit Ethernet Controller (Fiber)",
-"		0e11 004a  NC6136 Gigabit Server Adapter",
-"		1014 01ea  Netfinity Gigabit Ethernet SX Adapter",
-"		8086 1002  PRO/1000 F Server Adapter",
-"		8086 1003  PRO/1000 F Server Adapter",
-"	1002  Pro 100 LAN+Modem 56 Cardbus II",
-"		8086 200e  Pro 100 LAN+Modem 56 Cardbus II",
-"		8086 2013  Pro 100 SR Mobile Combo Adapter",
-"		8086 2017  Pro 100 S Combo Mobile Adapter",
-"	1004  82543GC Gigabit Ethernet Controller (Copper)",
-"		0e11 0049  NC7132 Gigabit Upgrade Module",
-"		0e11 b1a4  NC7131 Gigabit Server Adapter",
-"		1014 10f2  Gigabit Ethernet Server Adapter",
-"		8086 1004  PRO/1000 T Server Adapter",
-"		8086 2004  PRO/1000 T Server Adapter",
-"	1008  82544EI Gigabit Ethernet Controller (Copper)",
-"		1014 0269  iSeries 1000/100/10 Ethernet Adapter",
-"		1028 011c  PRO/1000 XT Network Connection",
-"		8086 1107  PRO/1000 XT Server Adapter",
-"		8086 2107  PRO/1000 XT Server Adapter",
-"		8086 2110  PRO/1000 XT Server Adapter",
-"		8086 3108  PRO/1000 XT Network Connection",
-"	1009  82544EI Gigabit Ethernet Controller (Fiber)",
-"		1014 0268  iSeries Gigabit Ethernet Adapter",
-"		8086 1109  PRO/1000 XF Server Adapter",
-"		8086 2109  PRO/1000 XF Server Adapter",
-"	100a  82540EM Gigabit Ethernet Controller",
-"	100c  82544GC Gigabit Ethernet Controller (Copper)",
-"		8086 1112  PRO/1000 T Desktop Adapter",
-"		8086 2112  PRO/1000 T Desktop Adapter",
-"	100d  82544GC Gigabit Ethernet Controller (LOM)",
-"		1028 0123  PRO/1000 XT Network Connection",
-"		1079 891f  82544GC Based Network Connection",
-"		4c53 1080  CT8 mainboard",
-"		8086 110d  82544GC Based Network Connection",
-"	100e  82540EM Gigabit Ethernet Controller",
-"		1014 0265  PRO/1000 MT Network Connection",
-"		1014 0267  PRO/1000 MT Network Connection",
-"		1014 026a  PRO/1000 MT Network Connection",
-"		1024 0134  Poweredge SC600",
-"		1028 002e  Optiplex GX260",
-"		1028 0151  PRO/1000 MT Network Connection",
-"		107b 8920  PRO/1000 MT Desktop Adapter",
-"		8086 001e  PRO/1000 MT Desktop Adapter",
-"		8086 002e  PRO/1000 MT Desktop Adapter",
-"		8086 1376  PRO/1000 GT Desktop Adapter",
-"		8086 1476  PRO/1000 GT Desktop Adapter",
-"	100f  82545EM Gigabit Ethernet Controller (Copper)",
-"		1014 0269  iSeries 1000/100/10 Ethernet Adapter",
-"		1014 028e  PRO/1000 MT Network Connection",
-"		8086 1000  PRO/1000 MT Network Connection",
-"		8086 1001  PRO/1000 MT Server Adapter",
-"	1010  82546EB Gigabit Ethernet Controller (Copper)",
-"		0e11 00db  NC7170 Gigabit Server Adapter",
-"		1014 027c  PRO/1000 MT Dual Port Network Adapter",
-"		18fb 7872  RESlink-X",
-"		1fc1 0026  Niagara 2260 Bypass Card",
-"		4c53 1080  CT8 mainboard",
-"		4c53 10a0  CA3/CR3 mainboard",
-"		8086 1011  PRO/1000 MT Dual Port Server Adapter",
-"		8086 1012  Primergy RX300",
-"		8086 101a  PRO/1000 MT Dual Port Network Adapter",
-"		8086 3424  SE7501HG2 Mainboard",
-"	1011  82545EM Gigabit Ethernet Controller (Fiber)",
-"		1014 0268  iSeries Gigabit Ethernet Adapter",
-"		8086 1002  PRO/1000 MF Server Adapter",
-"		8086 1003  PRO/1000 MF Server Adapter (LX)",
-"	1012  82546EB Gigabit Ethernet Controller (Fiber)",
-"		0e11 00dc  NC6170 Gigabit Server Adapter",
-"		8086 1012  PRO/1000 MF Dual Port Server Adapter",
-"	1013  82541EI Gigabit Ethernet Controller (Copper)",
-"		8086 0013  PRO/1000 MT Network Connection",
-"		8086 1013  IBM ThinkCentre Network Card",
-"		8086 1113  PRO/1000 MT Desktop Adapter",
-"	1014  82541ER Gigabit Ethernet Controller",
-"	1015  82540EM Gigabit Ethernet Controller (LOM)",
-"	1016  82540EP Gigabit Ethernet Controller (LOM)",
-"		1014 052c  PRO/1000 MT Mobile Connection",
-"		1179 0001  PRO/1000 MT Mobile Connection",
-"		8086 1016  PRO/1000 MT Mobile Connection",
-"	1017  82540EP Gigabit Ethernet Controller (LOM)",
-"		8086 1017  PR0/1000 MT Desktop Connection",
-"	1018  82541EI Gigabit Ethernet Controller",
-"		8086 1018  PRO/1000 MT Desktop Adapter",
-"	1019  82547EI Gigabit Ethernet Controller (LOM)",
-"		1458 1019  GA-8IPE1000 Pro2 motherboard (865PE)",
-"		1458 e000  Intel Gigabit Ethernet (Kenai II)",
-"		8086 1019  PRO/1000 CT Desktop Connection",
-"		8086 301f  D865PERL mainboard",
-"		8086 302c  Intel 82865G Mainboard (D865GBF)",
-"		8086 3427  S875WP1-E mainboard",
-"	101a  82547EI Gigabit Ethernet Controller (Mobile)",
-"	101d  82546EB Gigabit Ethernet Controller",
-"		8086 1000  PRO/1000 MT Quad Port Server Adapter",
-"	101e  82540EP Gigabit Ethernet Controller (Mobile)",
-"		1014 0549  PRO/1000 MT Mobile Connection",
-"		1179 0001  PRO/1000 MT Mobile Connection",
-"		8086 101e  PRO/1000 MT Mobile Connection",
-"	1026  82545GM Gigabit Ethernet Controller",
-"		1028 0169  Precision 470",
-"		8086 1000  PRO/1000 MT Server Connection",
-"		8086 1001  PRO/1000 MT Server Adapter",
-"		8086 1002  PRO/1000 MT Server Adapter",
-"		8086 1026  PRO/1000 MT Server Connection",
-"	1027  82545GM Gigabit Ethernet Controller",
-"		103c 3103  NC310F PCI-X Gigabit Server Adapter",
-"		8086 1001  PRO/1000 MF Server Adapter(LX)",
-"		8086 1002  PRO/1000 MF Server Adapter(LX)",
-"		8086 1003  PRO/1000 MF Server Adapter(LX)",
-"		8086 1027  PRO/1000 MF Server Adapter",
-"	1028  82545GM Gigabit Ethernet Controller",
-"		8086 1028  PRO/1000 MB Server Adapter",
-"	1029  82559 Ethernet Controller",
-"	1030  82559 InBusiness 10/100",
-"	1031  82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller",
-"		1014 0209  ThinkPad A/T/X Series",
-"		104d 80e7  Vaio PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP",
-"		104d 813c  Vaio PCG-GRV616G",
-"		107b 5350  EtherExpress PRO/100 VE",
-"		1179 0001  EtherExpress PRO/100 VE",
-"		144d c000  EtherExpress PRO/100 VE",
-"		144d c001  EtherExpress PRO/100 VE",
-"		144d c003  EtherExpress PRO/100 VE",
-"		144d c006  vpr Matrix 170B4",
-"	1032  82801CAM (ICH3) PRO/100 VE Ethernet Controller",
-"	1033  82801CAM (ICH3) PRO/100 VM (LOM) Ethernet Controller",
-"	1034  82801CAM (ICH3) PRO/100 VM Ethernet Controller",
-"	1035  82801CAM (ICH3)/82562EH (LOM)  Ethernet Controller",
-"	1036  82801CAM (ICH3) 82562EH Ethernet Controller",
-"	1037  82801CAM (ICH3) Chipset Ethernet Controller",
-"	1038  82801CAM (ICH3) PRO/100 VM (KM) Ethernet Controller",
-"		0e11 0098  Evo N600c",
-"	1039  82801DB PRO/100 VE (LOM) Ethernet Controller",
-"		1014 0267  NetVista A30p",
-"	103a  82801DB PRO/100 VE (CNR) Ethernet Controller",
-"	103b  82801DB PRO/100 VM (LOM) Ethernet Controller",
-"	103c  82801DB PRO/100 VM (CNR) Ethernet Controller",
-"	103d  82801DB PRO/100 VE (MOB) Ethernet Controller",
-"	103e  82801DB PRO/100 VM (MOB) Ethernet Controller",
-"	1040  536EP Data Fax Modem",
-"		16be 1040  V.9X DSP Data Fax Modem",
-"	1043  PRO/Wireless LAN 2100 3B Mini PCI Adapter",
-"		8086 2527  MIM2000/Centrino",
-"	1048  PRO/10GbE LR Server Adapter",
-"		8086 a01f  PRO/10GbE LR Server Adapter",
-"		8086 a11f  PRO/10GbE LR Server Adapter",
-"	104b  Ethernet Controller",
-"	1050  82562EZ 10/100 Ethernet Controller",
-"		1462 728c  865PE Neo2 (MS-6728)",
-"		1462 758c  MS-6758 (875P Neo)",
-"		8086 3020  D865PERL mainboard",
-"		8086 302f  Desktop Board D865GBF",
-"		8086 3427  S875WP1-E mainboard",
-"	1051  82801EB/ER (ICH5/ICH5R) integrated LAN Controller",
-"	1052  PRO/100 VM Network Connection",
-"	1053  PRO/100 VM Network Connection",
-"	1059  82551QM Ethernet Controller",
-"	105e  82571EB Gigabit Ethernet Controller",
-"		1775 6003  Telum GE-QT",
-"	105f  82571EB Gigabit Ethernet Controller",
-"	1060  82571EB Gigabit Ethernet Controller",
-"	1064  82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller",
-"		1043 80f8  P5GD1-VW Mainboard",
-"	1065  82562ET/EZ/GT/GZ - PRO/100 VE Ethernet Controller",
-"	1066  82562 EM/EX/GX - PRO/100 VM (LOM) Ethernet Controller",
-"	1067  82562 EM/EX/GX - PRO/100 VM Ethernet Controller",
-"	1068  82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller Mobile",
-"	1069  82562EM/EX/GX - PRO/100 VM (LOM) Ethernet Controller Mobile",
-"	106a  82562G - PRO/100 VE (LOM) Ethernet Controller",
-"	106b  82562G - PRO/100 VE Ethernet Controller Mobile",
-"	1075  82547GI Gigabit Ethernet Controller",
-"		1028 0165  PowerEdge 750",
-"		8086 0075  PRO/1000 CT Network Connection",
-"		8086 1075  PRO/1000 CT Network Connection",
-"	1076  82541GI/PI Gigabit Ethernet Controller",
-"		1028 0165  PowerEdge 750",
-"		1028 019a  PowerEdge SC1425",
-"		8086 0076  PRO/1000 MT Network Connection",
-"		8086 1076  PRO/1000 MT Network Connection",
-"		8086 1176  PRO/1000 MT Desktop Adapter",
-"		8086 1276  PRO/1000 MT Desktop Adapter",
-"	1077  82541GI Gigabit Ethernet Controller",
-"		1179 0001  PRO/1000 MT Mobile Connection",
-"		8086 0077  PRO/1000 MT Mobile Connection",
-"		8086 1077  PRO/1000 MT Mobile Connection",
-"	1078  82541EI Gigabit Ethernet Controller",
-"		8086 1078  PRO/1000 MT Network Connection",
-"	1079  82546GB Gigabit Ethernet Controller",
-"		103c 12a6  HP Dual Port 1000Base-T [A9900A]",
-"		103c 12cf  HP Core Dual Port 1000Base-T [AB352A]",
-"		1fc1 0027  Niagara 2261 Failover NIC",
-"		4c53 1090  Cx9 / Vx9 mainboard",
-"		4c53 10b0  CL9 mainboard",
-"		8086 0079  PRO/1000 MT Dual Port Network Connection",
-"		8086 1079  PRO/1000 MT Dual Port Network Connection",
-"		8086 1179  PRO/1000 MT Dual Port Network Connection",
-"		8086 117a  PRO/1000 MT Dual Port Server Adapter",
-"	107a  82546GB Gigabit Ethernet Controller",
-"		103c 12a8  HP Dual Port 1000base-SX [A9899A]",
-"		8086 107a  PRO/1000 MF Dual Port Server Adapter",
-"		8086 127a  PRO/1000 MF Dual Port Server Adapter",
-"	107b  82546GB Gigabit Ethernet Controller",
-"		8086 007b  PRO/1000 MB Dual Port Server Connection",
-"		8086 107b  PRO/1000 MB Dual Port Server Connection",
-"	107c  82541PI Gigabit Ethernet Controller",
-"	107d  82572EI Gigabit Ethernet Controller",
-"	107e  82572EI Gigabit Ethernet Controller",
-"	107f  82572EI Gigabit Ethernet Controller",
-"	1080  FA82537EP 56K V.92 Data/Fax Modem PCI",
-"	1081  Enterprise Southbridge LAN Copper",
-"	1082  Enterprise Southbridge LAN fiber",
-"	1083  Enterprise Southbridge LAN SERDES",
-"	1084  Enterprise Southbridge IDE Redirection",
-"	1085  Enterprise Southbridge Serial Port Redirection",
-"	1086  Enterprise Southbridge IPMI/KCS0",
-"	1087  Enterprise Southbridge UHCI Redirection",
-"	1089  Enterprise Southbridge BT",
-"	108a  82546EB Gigabit Ethernet Controller",
-"	108b  82573V Gigabit Ethernet Controller (Copper)",
-"	108c  82573E Gigabit Ethernet Controller (Copper)",
-"	108e  82573E KCS (Active Management)",
-"	108f  Intel(R) Active Management Technology - SOL",
-"	1092  Intel(R) PRO/100 VE Network Connection",
-"	1096  PRO/1000 EB Network Connection with I/O Acceleration",
-"	1097  Enterprise Southbridge DPT LAN fiber",
-"	1098  PRO/1000 EB Backplane Connection with I/O Acceleration",
-"	1099  82546GB Quad Port Server Adapter",
-"	109a  82573L Gigabit Ethernet Controller",
-"		17aa 207e  Thinkpad X60s",
-"	109b  82546GB PRO/1000 GF Quad Port Server Adapter",
-"	10a0  82571EB PRO/1000 AT Quad Port Bypass Adapter",
-"	10a1  82571EB PRO/1000 AF Quad Port Bypass Adapter",
-"	10b0  82573L PRO/1000 PL Network Connection",
-"	10b2  82573V PRO/1000 PM Network Connection",
-"	10b3  82573E PRO/1000 PM Network Connection",
-"	10b4  82573L PRO/1000 PL Network Connection",
-"	10b5  82546GB PRO/1000 GT Quad Port Server Adapter",
-"		103c 3109  NC340T PCI-X Quad-port Gigabit Server Adapter",
-"	1107  PRO/1000 MF Server Adapter (LX)",
-"	1130  82815 815 Chipset Host Bridge and Memory Controller Hub",
-"		1025 1016  Travelmate 612 TX",
-"		1043 8027  TUSL2-C Mainboard",
-"		104d 80df  Vaio PCG-FX403",
-"		8086 4532  D815EEA2 mainboard",
-"		8086 4557  D815EGEW Mainboard",
-"	1131  82815 815 Chipset AGP Bridge",
-"	1132  82815 CGC [Chipset Graphics Controller]",
-"		1025 1016  Travelmate 612 TX",
-"		104d 80df  Vaio PCG-FX403",
-"		8086 4532  D815EEA2 Mainboard",
-"		8086 4541  D815EEA Motherboard",
-"		8086 4557  D815EGEW Mainboard",
-"	1161  82806AA PCI64 Hub Advanced Programmable Interrupt Controller",
-"		8086 1161  82806AA PCI64 Hub APIC",
-"	1162  Xscale 80200 Big Endian Companion Chip",
-"	1200  Intel IXP1200 Network Processor",
-"		172a 0000  AEP SSL Accelerator",
-"	1209  8255xER/82551IT Fast Ethernet Controller",
-"		4c53 1050  CT7 mainboard",
-"		4c53 1051  CE7 mainboard",
-"		4c53 1070  PC6 mainboard",
-"	1221  82092AA PCI to PCMCIA Bridge",
-"	1222  82092AA IDE Controller",
-"	1223  SAA7116",
-"	1225  82452KX/GX [Orion]",
-"	1226  82596 PRO/10 PCI",
-"	1227  82865 EtherExpress PRO/100A",
-"	1228  82556 EtherExpress PRO/100 Smart",
-"	1229  82557/8/9 [Ethernet Pro 100]",
-"		0e11 3001  82559 Fast Ethernet LOM with Alert on LAN*",
-"		0e11 3002  82559 Fast Ethernet LOM with Alert on LAN*",
-"		0e11 3003  82559 Fast Ethernet LOM with Alert on LAN*",
-"		0e11 3004  82559 Fast Ethernet LOM with Alert on LAN*",
-"		0e11 3005  82559 Fast Ethernet LOM with Alert on LAN*",
-"		0e11 3006  82559 Fast Ethernet LOM with Alert on LAN*",
-"		0e11 3007  82559 Fast Ethernet LOM with Alert on LAN*",
-"		0e11 b01e  NC3120 Fast Ethernet NIC",
-"		0e11 b01f  NC3122 Fast Ethernet NIC (dual port)",
-"		0e11 b02f  NC1120 Ethernet NIC",
-"		0e11 b04a  Netelligent 10/100TX NIC with Wake on LAN",
-"		0e11 b0c6  NC3161 Fast Ethernet NIC (embedded, WOL)",
-"		0e11 b0c7  NC3160 Fast Ethernet NIC (embedded)",
-"		0e11 b0d7  NC3121 Fast Ethernet NIC (WOL)",
-"		0e11 b0dd  NC3131 Fast Ethernet NIC (dual port)",
-"		0e11 b0de  NC3132 Fast Ethernet Module (dual port)",
-"		0e11 b0e1  NC3133 Fast Ethernet Module (100-FX)",
-"		0e11 b134  NC3163 Fast Ethernet NIC (embedded, WOL)",
-"		0e11 b13c  NC3162 Fast Ethernet NIC (embedded)",
-"		0e11 b144  NC3123 Fast Ethernet NIC (WOL)",
-"		0e11 b163  NC3134 Fast Ethernet NIC (dual port)",
-"		0e11 b164  NC3135 Fast Ethernet Upgrade Module (dual port)",
-"		0e11 b1a4  NC7131 Gigabit Server Adapter",
-"		1014 005c  82558B Ethernet Pro 10/100",
-"		1014 01bc  82559 Fast Ethernet LAN On Motherboard",
-"		1014 01f1  10/100 Ethernet Server Adapter",
-"		1014 01f2  10/100 Ethernet Server Adapter",
-"		1014 0207  Ethernet Pro/100 S",
-"		1014 0232  10/100 Dual Port Server Adapter",
-"		1014 023a  ThinkPad R30",
-"		1014 105c  Netfinity 10/100",
-"		1014 2205  ThinkPad A22p",
-"		1014 305c  10/100 EtherJet Management Adapter",
-"		1014 405c  10/100 EtherJet Adapter with Alert on LAN",
-"		1014 505c  10/100 EtherJet Secure Management Adapter",
-"		1014 605c  10/100 EtherJet Secure Management Adapter",
-"		1014 705c  10/100 Netfinity 10/100 Ethernet Security Adapter",
-"		1014 805c  10/100 Netfinity 10/100 Ethernet Security Adapter",
-"		1028 009b  PowerEdge 2500/2550",
-"		1028 00ce  PowerEdge 1400",
-"		1033 8000  PC-9821X-B06",
-"		1033 8016  PK-UG-X006",
-"		1033 801f  PK-UG-X006",
-"		1033 8026  PK-UG-X006",
-"		1033 8063  82559-based Fast Ethernet Adapter",
-"		1033 8064  82559-based Fast Ethernet Adapter",
-"		103c 10c0  NetServer 10/100TX",
-"		103c 10c3  NetServer 10/100TX",
-"		103c 10ca  NetServer 10/100TX",
-"		103c 10cb  NetServer 10/100TX",
-"		103c 10e3  NetServer 10/100TX",
-"		103c 10e4  NetServer 10/100TX",
-"		103c 1200  NetServer 10/100TX",
-"		108e 10cf  EtherExpress PRO/100(B)",
-"		10c3 1100  SmartEther100 SC1100",
-"		10cf 1115  8255x-based Ethernet Adapter (10/100)",
-"		10cf 1143  8255x-based Ethernet Adapter (10/100)",
-"		110a 008b  82551QM Fast Ethernet Multifuction PCI/CardBus Controller",
-"		1179 0001  8255x-based Ethernet Adapter (10/100)",
-"		1179 0002  PCI FastEther LAN on Docker",
-"		1179 0003  8255x-based Fast Ethernet",
-"		1259 2560  AT-2560 100",
-"		1259 2561  AT-2560 100 FX Ethernet Adapter",
-"		1266 0001  NE10/100 Adapter",
-"		13e9 1000  6221L-4U",
-"		144d 2501  SEM-2000 MiniPCI LAN Adapter",
-"		144d 2502  SEM-2100IL MiniPCI LAN Adapter",
-"		1668 1100  EtherExpress PRO/100B (TX) (MiniPCI Ethernet+Modem)",
-"		4c53 1080  CT8 mainboard",
-"		4c53 10e0  PSL09 PrPMC",
-"		8086 0001  EtherExpress PRO/100B (TX)",
-"		8086 0002  EtherExpress PRO/100B (T4)",
-"		8086 0003  EtherExpress PRO/10+",
-"		8086 0004  EtherExpress PRO/100 WfM",
-"		8086 0005  82557 10/100",
-"		8086 0006  82557 10/100 with Wake on LAN",
-"		8086 0007  82558 10/100 Adapter",
-"		8086 0008  82558 10/100 with Wake on LAN",
-"		8086 000a  EtherExpress PRO/100+ Management Adapter",
-"		8086 000b  EtherExpress PRO/100+",
-"		8086 000c  EtherExpress PRO/100+ Management Adapter",
-"		8086 000d  EtherExpress PRO/100+ Alert On LAN II* Adapter",
-"		8086 000e  EtherExpress PRO/100+ Management Adapter with Alert On LAN*",
-"		8086 000f  EtherExpress PRO/100 Desktop Adapter",
-"		8086 0010  EtherExpress PRO/100 S Management Adapter",
-"		8086 0011  EtherExpress PRO/100 S Management Adapter",
-"		8086 0012  EtherExpress PRO/100 S Advanced Management Adapter (D)",
-"		8086 0013  EtherExpress PRO/100 S Advanced Management Adapter (E)",
-"		8086 0030  EtherExpress PRO/100  Management Adapter with Alert On LAN* GC",
-"		8086 0031  EtherExpress PRO/100 Desktop Adapter",
-"		8086 0040  EtherExpress PRO/100 S Desktop Adapter",
-"		8086 0041  EtherExpress PRO/100 S Desktop Adapter",
-"		8086 0042  EtherExpress PRO/100 Desktop Adapter",
-"		8086 0050  EtherExpress PRO/100 S Desktop Adapter",
-"		8086 1009  EtherExpress PRO/100+ Server Adapter",
-"		8086 100c  EtherExpress PRO/100+ Server Adapter (PILA8470B)",
-"		8086 1012  EtherExpress PRO/100 S Server Adapter (D)",
-"		8086 1013  EtherExpress PRO/100 S Server Adapter (E)",
-"		8086 1015  EtherExpress PRO/100 S Dual Port Server Adapter",
-"		8086 1017  EtherExpress PRO/100+ Dual Port Server Adapter",
-"		8086 1030  EtherExpress PRO/100+ Management Adapter with Alert On LAN* G Server",
-"		8086 1040  EtherExpress PRO/100 S Server Adapter",
-"		8086 1041  EtherExpress PRO/100 S Server Adapter",
-"		8086 1042  EtherExpress PRO/100 Server Adapter",
-"		8086 1050  EtherExpress PRO/100 S Server Adapter",
-"		8086 1051  EtherExpress PRO/100 Server Adapter",
-"		8086 1052  EtherExpress PRO/100 Server Adapter",
-"		8086 10f0  EtherExpress PRO/100+ Dual Port Adapter",
-"		8086 2009  EtherExpress PRO/100 S Mobile Adapter",
-"		8086 200d  EtherExpress PRO/100 Cardbus",
-"		8086 200e  EtherExpress PRO/100 LAN+V90 Cardbus Modem",
-"		8086 200f  EtherExpress PRO/100 SR Mobile Adapter",
-"		8086 2010  EtherExpress PRO/100 S Mobile Combo Adapter",
-"		8086 2013  EtherExpress PRO/100 SR Mobile Combo Adapter",
-"		8086 2016  EtherExpress PRO/100 S Mobile Adapter",
-"		8086 2017  EtherExpress PRO/100 S Combo Mobile Adapter",
-"		8086 2018  EtherExpress PRO/100 SR Mobile Adapter",
-"		8086 2019  EtherExpress PRO/100 SR Combo Mobile Adapter",
-"		8086 2101  EtherExpress PRO/100 P Mobile Adapter",
-"		8086 2102  EtherExpress PRO/100 SP Mobile Adapter",
-"		8086 2103  EtherExpress PRO/100 SP Mobile Adapter",
-"		8086 2104  EtherExpress PRO/100 SP Mobile Adapter",
-"		8086 2105  EtherExpress PRO/100 SP Mobile Adapter",
-"		8086 2106  EtherExpress PRO/100 P Mobile Adapter",
-"		8086 2107  EtherExpress PRO/100 Network Connection",
-"		8086 2108  EtherExpress PRO/100 Network Connection",
-"		8086 2200  EtherExpress PRO/100 P Mobile Combo Adapter",
-"		8086 2201  EtherExpress PRO/100 P Mobile Combo Adapter",
-"		8086 2202  EtherExpress PRO/100 SP Mobile Combo Adapter",
-"		8086 2203  EtherExpress PRO/100+ MiniPCI",
-"		8086 2204  EtherExpress PRO/100+ MiniPCI",
-"		8086 2205  EtherExpress PRO/100 SP Mobile Combo Adapter",
-"		8086 2206  EtherExpress PRO/100 SP Mobile Combo Adapter",
-"		8086 2207  EtherExpress PRO/100 SP Mobile Combo Adapter",
-"		8086 2208  EtherExpress PRO/100 P Mobile Combo Adapter",
-"		8086 2402  EtherExpress PRO/100+ MiniPCI",
-"		8086 2407  EtherExpress PRO/100+ MiniPCI",
-"		8086 2408  EtherExpress PRO/100+ MiniPCI",
-"		8086 2409  EtherExpress PRO/100+ MiniPCI",
-"		8086 240f  EtherExpress PRO/100+ MiniPCI",
-"		8086 2410  EtherExpress PRO/100+ MiniPCI",
-"		8086 2411  EtherExpress PRO/100+ MiniPCI",
-"		8086 2412  EtherExpress PRO/100+ MiniPCI",
-"		8086 2413  EtherExpress PRO/100+ MiniPCI",
-"		8086 3000  82559 Fast Ethernet LAN on Motherboard",
-"		8086 3001  82559 Fast Ethernet LOM with Basic Alert on LAN*",
-"		8086 3002  82559 Fast Ethernet LOM with Alert on LAN II*",
-"		8086 3006  EtherExpress PRO/100 S Network Connection",
-"		8086 3007  EtherExpress PRO/100 S Network Connection",
-"		8086 3008  EtherExpress PRO/100 Network Connection",
-"		8086 3010  EtherExpress PRO/100 S Network Connection",
-"		8086 3011  EtherExpress PRO/100 S Network Connection",
-"		8086 3012  EtherExpress PRO/100 Network Connection",
-"		8086 3411  SDS2 Mainboard",
-"	122d  430FX - 82437FX TSC [Triton I]",
-"	122e  82371FB PIIX ISA [Triton I]",
-"	1230  82371FB PIIX IDE [Triton I]",
-"	1231  DSVD Modem",
-"	1234  430MX - 82371MX Mobile PCI I/O IDE Xcelerator (MPIIX)",
-"	1235  430MX - 82437MX Mob. System Ctrlr (MTSC) & 82438MX Data Path (MTDP)",
-"	1237  440FX - 82441FX PMC [Natoma]",
-"	1239  82371FB PIIX IDE Interface",
-"	123b  82380PB PCI to PCI Docking Bridge",
-"	123c  82380AB (MISA) Mobile PCI-to-ISA Bridge",
-"	123d  683053 Programmable Interrupt Device",
-"	123e  82466GX (IHPC) Integrated Hot-Plug Controller",
-"	123f  82466GX Integrated Hot-Plug Controller (IHPC)",
-"	1240  82752 (752) AGP Graphics Accelerator",
-"	124b  82380FB (MPCI2) Mobile Docking Controller",
-"	1250  430HX - 82439HX TXC [Triton II]",
-"	1360  82806AA PCI64 Hub PCI Bridge",
-"	1361  82806AA PCI64 Hub Controller (HRes)",
-"		8086 1361  82806AA PCI64 Hub Controller (HRes)",
-"		8086 8000  82806AA PCI64 Hub Controller (HRes)",
-"	1460  82870P2 P64H2 Hub PCI Bridge",
-"	1461  82870P2 P64H2 I/OxAPIC",
-"		15d9 3480  P4DP6",
-"		4c53 1090  Cx9/Vx9 mainboard",
-"	1462  82870P2 P64H2 Hot Plug Controller",
-"	1960  80960RP [i960RP Microprocessor]",
-"		101e 0431  MegaRAID 431 RAID Controller",
-"		101e 0438  MegaRAID 438 Ultra2 LVD RAID Controller",
-"		101e 0466  MegaRAID 466 Express Plus RAID Controller",
-"		101e 0467  MegaRAID 467 Enterprise 1500 RAID Controller",
-"		101e 0490  MegaRAID 490 Express 300 RAID Controller",
-"		101e 0762  MegaRAID 762 Express RAID Controller",
-"		101e 09a0  PowerEdge Expandable RAID Controller 2/SC",
-"		1028 0467  PowerEdge Expandable RAID Controller 2/DC",
-"		1028 1111  PowerEdge Expandable RAID Controller 2/SC",
-"		103c 03a2  MegaRAID",
-"		103c 10c6  MegaRAID 438, HP NetRAID-3Si",
-"		103c 10c7  MegaRAID T5, Integrated HP NetRAID",
-"		103c 10cc  MegaRAID, Integrated HP NetRAID",
-"		103c 10cd  HP NetRAID-1Si",
-"		105a 0000  SuperTrak",
-"		105a 2168  SuperTrak Pro",
-"		105a 5168  SuperTrak66/100",
-"		1111 1111  MegaRAID 466, PowerEdge Expandable RAID Controller 2/SC",
-"		1111 1112  PowerEdge Expandable RAID Controller 2/SC",
-"		113c 03a2  MegaRAID",
-"		e4bf 1010  CG1-RADIO",
-"		e4bf 1020  CU2-QUARTET",
-"		e4bf 1040  CU1-CHORUS",
-"		e4bf 3100  CX1-BAND",
-"	1962  80960RM [i960RM Microprocessor]",
-"		105a 0000  SuperTrak SX6000 I2O CPU",
-"	1a21  82840 840 (Carmel) Chipset Host Bridge (Hub A)",
-"	1a23  82840 840 (Carmel) Chipset AGP Bridge",
-"	1a24  82840 840 (Carmel) Chipset PCI Bridge (Hub B)",
-"	1a30  82845 845 (Brookdale) Chipset Host Bridge",
-"		1028 010e  Optiplex GX240",
-"	1a31  82845 845 (Brookdale) Chipset AGP Bridge",
-"	1a38  Server DMA Engine",
-"	1a48  PRO/10GbE SR Server Adapter",
-"	2410  82801AA ISA Bridge (LPC)",
-"	2411  82801AA IDE",
-"	2412  82801AA USB",
-"	2413  82801AA SMBus",
-"	2415  82801AA AC'97 Audio",
-"		1028 0095  Precision Workstation 220 Integrated Digital Audio",
-"		110a 0051  Activy 2xx",
-"		11d4 0040  SoundMAX Integrated Digital Audio",
-"		11d4 0048  SoundMAX Integrated Digital Audio",
-"		11d4 5340  SoundMAX Integrated Digital Audio",
-"		1734 1025  Activy 3xx",
-"	2416  82801AA AC'97 Modem",
-"	2418  82801AA PCI Bridge",
-"	2420  82801AB ISA Bridge (LPC)",
-"	2421  82801AB IDE",
-"	2422  82801AB USB",
-"	2423  82801AB SMBus",
-"	2425  82801AB AC'97 Audio",
-"		11d4 0040  SoundMAX Integrated Digital Audio",
-"		11d4 0048  SoundMAX Integrated Digital Audio",
-"	2426  82801AB AC'97 Modem",
-"	2428  82801AB PCI Bridge",
-"	2440  82801BA ISA Bridge (LPC)",
-"	2442  82801BA/BAM USB (Hub #1)",
-"		1014 01c6  Netvista A40/A40p",
-"		1025 1016  Travelmate 612 TX",
-"		1028 010e  Optiplex GX240",
-"		1043 8027  TUSL2-C Mainboard",
-"		104d 80df  Vaio PCG-FX403",
-"		147b 0507  TH7II-RAID",
-"		8086 4532  D815EEA2 mainboard",
-"		8086 4557  D815EGEW Mainboard",
-"	2443  82801BA/BAM SMBus",
-"		1014 01c6  Netvista A40/A40p",
-"		1025 1016  Travelmate 612 TX",
-"		1028 010e  Optiplex GX240",
-"		1043 8027  TUSL2-C Mainboard",
-"		104d 80df  Vaio PCG-FX403",
-"		147b 0507  TH7II-RAID",
-"		8086 4532  D815EEA2 mainboard",
-"		8086 4557  D815EGEW Mainboard",
-"	2444  82801BA/BAM USB (Hub #2)",
-"		1025 1016  Travelmate 612 TX",
-"		1028 010e  Optiplex GX240",
-"		1043 8027  TUSL2-C Mainboard",
-"		104d 80df  Vaio PCG-FX403",
-"		147b 0507  TH7II-RAID",
-"		8086 4532  D815EEA2 mainboard",
-"	2445  82801BA/BAM AC'97 Audio",
-"		0e11 0088  Evo D500",
-"		1014 01c6  Netvista A40/A40p",
-"		1025 1016  Travelmate 612 TX",
-"		104d 80df  Vaio PCG-FX403",
-"		1462 3370  STAC9721 AC",
-"		147b 0507  TH7II-RAID",
-"		8086 4557  D815EGEW Mainboard",
-"	2446  82801BA/BAM AC'97 Modem",
-"		1025 1016  Travelmate 612 TX",
-"		104d 80df  Vaio PCG-FX403",
-"	2448  82801 Mobile PCI Bridge",
-"		103c 099c  NX6110/NC6120",
-"		1734 1055  Amilo M1420",
-"	2449  82801BA/BAM/CA/CAM Ethernet Controller",
-"		0e11 0012  EtherExpress PRO/100 VM",
-"		0e11 0091  EtherExpress PRO/100 VE",
-"		1014 01ce  EtherExpress PRO/100 VE",
-"		1014 01dc  EtherExpress PRO/100 VE",
-"		1014 01eb  EtherExpress PRO/100 VE",
-"		1014 01ec  EtherExpress PRO/100 VE",
-"		1014 0202  EtherExpress PRO/100 VE",
-"		1014 0205  EtherExpress PRO/100 VE",
-"		1014 0217  EtherExpress PRO/100 VE",
-"		1014 0234  EtherExpress PRO/100 VE",
-"		1014 023d  EtherExpress PRO/100 VE",
-"		1014 0244  EtherExpress PRO/100 VE",
-"		1014 0245  EtherExpress PRO/100 VE",
-"		1014 0265  PRO/100 VE Desktop Connection",
-"		1014 0267  PRO/100 VE Desktop Connection",
-"		1014 026a  PRO/100 VE Desktop Connection",
-"		109f 315d  EtherExpress PRO/100 VE",
-"		109f 3181  EtherExpress PRO/100 VE",
-"		1179 ff01  PRO/100 VE Network Connection",
-"		1186 7801  EtherExpress PRO/100 VE",
-"		144d 2602  HomePNA 1M CNR",
-"		8086 3010  EtherExpress PRO/100 VE",
-"		8086 3011  EtherExpress PRO/100 VM",
-"		8086 3012  82562EH based Phoneline",
-"		8086 3013  EtherExpress PRO/100 VE",
-"		8086 3014  EtherExpress PRO/100 VM",
-"		8086 3015  82562EH based Phoneline",
-"		8086 3016  EtherExpress PRO/100 P Mobile Combo",
-"		8086 3017  EtherExpress PRO/100 P Mobile",
-"		8086 3018  EtherExpress PRO/100",
-"	244a  82801BAM IDE U100",
-"		1025 1016  Travelmate 612TX",
-"		104d 80df  Vaio PCG-FX403",
-"	244b  82801BA IDE U100",
-"		1014 01c6  Netvista A40/A40p",
-"		1028 010e  Optiplex GX240",
-"		1043 8027  TUSL2-C Mainboard",
-"		147b 0507  TH7II-RAID",
-"		8086 4532  D815EEA2 mainboard",
-"		8086 4557  D815EGEW Mainboard",
-"	244c  82801BAM ISA Bridge (LPC)",
-"	244e  82801 PCI Bridge",
-"		1014 0267  NetVista A30p",
-"	2450  82801E ISA Bridge (LPC)",
-"	2452  82801E USB",
-"	2453  82801E SMBus",
-"	2459  82801E Ethernet Controller 0",
-"	245b  82801E IDE U100",
-"	245d  82801E Ethernet Controller 1",
-"	245e  82801E PCI Bridge",
-"	2480  82801CA LPC Interface Controller",
-"	2482  82801CA/CAM USB (Hub #1)",
-"		0e11 0030  Evo N600c",
-"		1014 0220  ThinkPad A/T/X Series",
-"		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP",
-"		15d9 3480  P4DP6",
-"		8086 1958  vpr Matrix 170B4",
-"		8086 3424  SE7501HG2 Mainboard",
-"		8086 4541  Latitude C640",
-"	2483  82801CA/CAM SMBus Controller",
-"		1014 0220  ThinkPad A/T/X Series",
-"		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP",
-"		15d9 3480  P4DP6",
-"		8086 1958  vpr Matrix 170B4",
-"	2484  82801CA/CAM USB (Hub #2)",
-"		0e11 0030  Evo N600c",
-"		1014 0220  ThinkPad A/T/X Series",
-"		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP",
-"		15d9 3480  P4DP6",
-"		8086 1958  vpr Matrix 170B4",
-"	2485  82801CA/CAM AC'97 Audio Controller",
-"		1013 5959  Crystal WMD Audio Codec",
-"		1014 0222  ThinkPad T23 (2647-4MG) or A30/A30p (2652/2653)",
-"		1014 0508  ThinkPad T30",
-"		1014 051c  ThinkPad A/T/X Series",
-"		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP",
-"		144d c006  vpr Matrix 170B4",
-"	2486  82801CA/CAM AC'97 Modem Controller",
-"		1014 0223  ThinkPad A/T/X Series",
-"		1014 0503  ThinkPad R31 2656BBG",
-"		1014 051a  ThinkPad A/T/X Series",
-"		101f 1025  620 Series",
-"		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP",
-"		134d 4c21  Dell Inspiron 2100 internal modem",
-"		144d 2115  vpr Matrix 170B4 internal modem",
-"		14f1 5421  MD56ORD V.92 MDC Modem",
-"	2487  82801CA/CAM USB (Hub #3)",
-"		0e11 0030  Evo N600c",
-"		1014 0220  ThinkPad A/T/X Series",
-"		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP",
-"		15d9 3480  P4DP6",
-"		8086 1958  vpr Matrix 170B4",
-"	248a  82801CAM IDE U100",
-"		0e11 0030  Evo N600c",
-"		1014 0220  ThinkPad A/T/X Series",
-"		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP",
-"		8086 1958  vpr Matrix 170B4",
-"		8086 4541  Latitude C640",
-"	248b  82801CA Ultra ATA Storage Controller",
-"		15d9 3480  P4DP6",
-"	248c  82801CAM ISA Bridge (LPC)",
-"	24c0  82801DB/DBL (ICH4/ICH4-L) LPC Interface Bridge",
-"		1014 0267  NetVista A30p",
-"		1462 5800  845PE Max (MS-6580)",
-"	24c1  82801DBL (ICH4-L) IDE Controller",
-"	24c2  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1",
-"		1014 0267  NetVista A30p",
-"		1025 005a  TravelMate 290",
-"		1028 0126  Optiplex GX260",
-"		1028 0163  Latitude D505",
-"		1028 0196  Inspiron 5160",
-"		103c 088c  NC8000 laptop",
-"		103c 0890  NC6000 laptop",
-"		1071 8160  MIM2000",
-"		1462 5800  845PE Max (MS-6580)",
-"		1509 2990  Averatec 5110H laptop",
-"		1734 1004  D1451 Mainboard (SCENIC N300, i845GV)",
-"		1734 1055  Amilo M1420",
-"		4c53 1090  Cx9 / Vx9 mainboard",
-"		8086 4541  Latitude D400",
-"	24c3  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller",
-"		1014 0267  NetVista A30p",
-"		1025 005a  TravelMate 290",
-"		1028 0126  Optiplex GX260",
-"		103c 088c  NC8000 laptop",
-"		103c 0890  NC6000 laptop",
-"		1071 8160  MIM2000",
-"		1458 24c2  GA-8PE667 Ultra",
-"		1462 5800  845PE Max (MS-6580)",
-"		1734 1004  D1451 Mainboard (SCENIC N300, i845GV)",
-"		1734 1055  Amilo M1420",
-"		4c53 1090  Cx9 / Vx9 mainboard",
-"	24c4  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2",
-"		1014 0267  NetVista A30p",
-"		1025 005a  TravelMate 290",
-"		1028 0126  Optiplex GX260",
-"		1028 0163  Latitude D505",
-"		1028 0196  Inspiron 5160",
-"		103c 088c  NC8000 laptop",
-"		103c 0890  NC6000 laptop",
-"		1071 8160  MIM2000",
-"		1462 5800  845PE Max (MS-6580)",
-"		1509 2990  Averatec 5110H",
-"		1734 1004  D1451 Mainboard (SCENIC N300, i845GV)",
-"		4c53 1090  Cx9 / Vx9 mainboard",
-"		8086 4541  Latitude D400",
-"	24c5  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller",
-"		0e11 00b8  Analog Devices Inc. codec [SoundMAX]",
-"		1014 0267  NetVista A30p",
-"		1025 005a  TravelMate 290",
-"		1028 0139  Latitude D400",
-"		1028 0163  Latitude D505",
-"		1028 0196  Inspiron 5160",
-"		103c 088c  NC8000 laptop",
-"		103c 0890  NC6000 laptop",
-"		1071 8160  MIM2000",
-"		1458 a002  GA-8PE667 Ultra",
-"		1462 5800  845PE Max (MS-6580)",
-"		1734 1005  D1451 (SCENIC N300, i845GV) Sigmatel STAC9750T",
-"		1734 1055  Amilo M1420",
-"	24c6  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller",
-"		1025 003c  Aspire 2001WLCi (Compal CL50 motherboard) implementation",
-"		1025 005a  TravelMate 290",
-"		1028 0196  Inspiron 5160",
-"		103c 088c  NC8000 laptop",
-"		103c 0890  NC6000 laptop",
-"		1071 8160  MIM2000",
-"	24c7  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3",
-"		1014 0267  NetVista A30p",
-"		1025 005a  TravelMate 290",
-"		1028 0126  Optiplex GX260",
-"		1028 0163  Latitude D505",
-"		1028 0196  Inspiron 5160",
-"		103c 088c  NC8000 laptop",
-"		103c 0890  NC6000 laptop",
-"		1071 8160  MIM2000",
-"		1462 5800  845PE Max (MS-6580)",
-"		1509 2990  Averatec 5110H",
-"		1734 1004  D1451 Mainboard (SCENIC N300, i845GV)",
-"		4c53 1090  Cx9 / Vx9 mainboard",
-"		8086 4541  Latitude D400",
-"	24ca  82801DBM (ICH4-M) IDE Controller",
-"		1025 005a  TravelMate 290",
-"		1028 0163  Latitude D505",
-"		1028 0196  Inspiron 5160",
-"		103c 088c  NC8000 laptop",
-"		103c 0890  NC6000 laptop",
-"		1071 8160  MIM2000",
-"		1734 1055  Amilo M1420",
-"		8086 4541  Latitude D400",
-"	24cb  82801DB (ICH4) IDE Controller",
-"		1014 0267  NetVista A30p",
-"		1028 0126  Optiplex GX260",
-"		1458 24c2  GA-8PE667 Ultra",
-"		1462 5800  845PE Max (MS-6580)",
-"		1734 1004  D1451 Mainboard (SCENIC N300, i845GV)",
-"		4c53 1090  Cx9 / Vx9 mainboard",
-"	24cc  82801DBM (ICH4-M) LPC Interface Bridge",
-"		1734 1055  Amilo M1420",
-"	24cd  82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller",
-"		1014 0267  NetVista A30p",
-"		1025 005a  TravelMate 290",
-"		1028 011d  Latitude D600",
-"		1028 0126  Optiplex GX260",
-"		1028 0139  Latitude D400",
-"		1028 0163  Latitude D505",
-"		1028 0196  Inspiron 5160",
-"		103c 088c  NC8000 laptop",
-"		103c 0890  NC6000 laptop",
-"		1071 8160  MIM2000",
-"		1462 3981  845PE Max (MS-6580)",
-"		1509 1968  Averatec 5110H",
-"		1734 1004  D1451 Mainboard (SCENIC N300, i845GV)",
-"		1734 1055  Amilo M1420",
-"		4c53 1090  Cx9 / Vx9 mainboard",
-"	24d0  82801EB/ER (ICH5/ICH5R) LPC Interface Bridge",
-"	24d1  82801EB (ICH5) SATA Controller",
-"		1028 0169  Precision 470",
-"		1028 019a  PowerEdge SC1425",
-"		103c 12bc  d530 CMT (DG746A)",
-"		1043 80a6  P4P800 SE Mainboard",
-"		1458 24d1  GA-8IPE1000 Pro2 motherboard (865PE)",
-"		1462 7280  865PE Neo2 (MS-6728)",
-"		15d9 4580  P4SCE Mainboard",
-"		8086 3427  S875WP1-E mainboard",
-"		8086 4246  Desktop Board D865GBF",
-"		8086 524c  D865PERL mainboard",
-"	24d2  82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1",
-"		1014 02ed  xSeries server mainboard",
-"		1028 0169  Precision 470",
-"		1028 0183  PowerEdge 1800",
-"		1028 019a  PowerEdge SC1425",
-"		103c 006a  NX9500",
-"		103c 12bc  d530 CMT (DG746A)",
-"		1043 80a6  P5P800-MX Mainboard",
-"		1458 24d2  GA-8IPE1000/8KNXP motherboard",
-"		1462 7280  865PE Neo2 (MS-6728)",
-"		15d9 4580  P4SCE Mainboard",
-"		1734 101c  Primergy RX300 S2",
-"		8086 3427  S875WP1-E mainboard",
-"		8086 4246  Desktop Board D865GBF",
-"		8086 524c  D865PERL mainboard",
-"	24d3  82801EB/ER (ICH5/ICH5R) SMBus Controller",
-"		1014 02ed  xSeries server mainboard",
-"		1028 0156  Precision 360",
-"		1028 0169  Precision 470",
-"		1043 80a6  P4P800 Mainboard",
-"		1458 24d2  GA-8IPE1000 Pro2 motherboard (865PE)",
-"		1462 7280  865PE Neo2 (MS-6728)",
-"		15d9 4580  P4SCE Mainboard",
-"		1734 101c  Primergy RX300 S2",
-"		8086 3427  S875WP1-E mainboard",
-"		8086 4246  Desktop Board D865GBF",
-"		8086 524c  D865PERL mainboard",
-"	24d4  82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2",
-"		1014 02ed  xSeries server mainboard",
-"		1028 0169  Precision 470",
-"		1028 0183  PowerEdge 1800",
-"		1028 019a  PowerEdge SC1425",
-"		103c 006a  NX9500",
-"		103c 12bc  d530 CMT (DG746A)",
-"		1043 80a6  P5P800-MX Mainboard",
-"		1458 24d2  GA-8IPE1000 Pro2 motherboard (865PE)",
-"		1462 7280  865PE Neo2 (MS-6728)",
-"		15d9 4580  P4SCE Mainboard",
-"		1734 101c  Primergy RX300 S2",
-"		8086 3427  S875WP1-E mainboard",
-"		8086 4246  Desktop Board D865GBF",
-"		8086 524c  D865PERL mainboard",
-"	24d5  82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller",
-"		1028 0169  Precision 470",
-"		103c 006a  NX9500",
-"		103c 12bc  d330 uT",
-"		1043 80f3  P4P800 Mainboard",
-"		1043 810f  P5P800-MX Mainboard",
-"		1458 a002  GA-8IPE1000/8KNXP motherboard",
-"		1462 0080  65PE Neo2-V (MS-6788) mainboard",
-"		1462 7280  865PE Neo2 (MS-6728)",
-"		8086 a000  D865PERL mainboard",
-"		8086 e000  D865PERL mainboard",
-"		8086 e001  Desktop Board D865GBF",
-"	24d6  82801EB/ER (ICH5/ICH5R) AC'97 Modem Controller",
-"		103c 006a  NX9500",
-"	24d7  82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3",
-"		1014 02ed  xSeries server mainboard",
-"		1028 0169  Precision 470",
-"		1028 0183  PowerEdge 1800",
-"		103c 006a  NX9500",
-"		103c 12bc  d530 CMT (DG746A)",
-"		1043 80a6  P5P800-MX Mainboard",
-"		1458 24d2  GA-8IPE1000 Pro2 motherboard (865PE)",
-"		1462 7280  865PE Neo2 (MS-6728)",
-"		15d9 4580  P4SCE Mainboard",
-"		1734 101c  Primergy RX300 S2",
-"		8086 3427  S875WP1-E mainboard",
-"		8086 4246  Desktop Board D865GBF",
-"		8086 524c  D865PERL mainboard",
-"	24db  82801EB/ER (ICH5/ICH5R) IDE Controller",
-"		1014 02ed  xSeries server mainboard",
-"		1028 0169  Precision 470",
-"		1028 019a  PowerEdge SC1425",
-"		103c 006a  NX9500",
-"		103c 12bc  d530 CMT (DG746A)",
-"		1043 80a6  P5P800-MX Mainboard",
-"		1458 24d2  GA-8IPE1000 Pro2 motherboard (865PE)",
-"		1462 7280  865PE Neo2 (MS-6728)",
-"		1462 7580  MSI 875P",
-"		15d9 4580  P4SCE Mainboard",
-"		1734 101c  Primergy RX300 S2",
-"		8086 24db  P4C800 Mainboard",
-"		8086 3427  S875WP1-E mainboard",
-"		8086 4246  Desktop Board D865GBF",
-"		8086 524c  D865PERL mainboard",
-"	24dc  82801EB (ICH5) LPC Interface Bridge",
-"	24dd  82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller",
-"		1014 02ed  xSeries server mainboard",
-"		1028 0169  Precision 470",
-"		1028 0183  PowerEdge 1800",
-"		1028 019a  PowerEdge SC1425",
-"		103c 006a  NX9500",
-"		103c 12bc  d530 CMT (DG746A)",
-"		1043 80a6  P5P800-MX Mainboard",
-"		1458 5006  GA-8IPE1000 Pro2 motherboard (865PE)",
-"		1462 7280  865PE Neo2 (MS-6728)",
-"		8086 3427  S875WP1-E mainboard",
-"		8086 4246  Desktop Board D865GBF",
-"		8086 524c  D865PERL mainboard",
-"	24de  82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4",
-"		1014 02ed  xSeries server mainboard",
-"		1028 0169  Precision 470",
-"		1043 80a6  P5P800-MX Mainboard",
-"		1458 24d2  GA-8IPE1000 Pro2 motherboard (865PE)",
-"		1462 7280  865PE Neo2 (MS-6728)",
-"		15d9 4580  P4SCE Mainboard",
-"		1734 101c  Primergy RX300 S2",
-"		8086 3427  S875WP1-E mainboard",
-"		8086 4246  Desktop Board D865GBF",
-"		8086 524c  D865PERL mainboard",
-"	24df  82801ER (ICH5R) SATA Controller",
-"	2500  82820 820 (Camino) Chipset Host Bridge (MCH)",
-"		1028 0095  Precision Workstation 220 Chipset",
-"		1043 801c  P3C-2000 system chipset",
-"	2501  82820 820 (Camino) Chipset Host Bridge (MCH)",
-"		1043 801c  P3C-2000 system chipset",
-"	250b  82820 820 (Camino) Chipset Host Bridge",
-"	250f  82820 820 (Camino) Chipset AGP Bridge",
-"	2520  82805AA MTH Memory Translator Hub",
-"	2521  82804AA MRH-S Memory Repeater Hub for SDRAM",
-"	2530  82850 850 (Tehama) Chipset Host Bridge (MCH)",
-"		147b 0507  TH7II-RAID",
-"	2531  82860 860 (Wombat) Chipset Host Bridge (MCH)",
-"	2532  82850 850 (Tehama) Chipset AGP Bridge",
-"	2533  82860 860 (Wombat) Chipset AGP Bridge",
-"	2534  82860 860 (Wombat) Chipset PCI Bridge",
-"	2540  E7500 Memory Controller Hub",
-"		15d9 3480  P4DP6",
-"	2541  E7500/E7501 Host RASUM Controller",
-"		15d9 3480  P4DP6",
-"		4c53 1090  Cx9 / Vx9 mainboard",
-"		8086 3424  SE7501HG2 Mainboard",
-"	2543  E7500/E7501 Hub Interface B PCI-to-PCI Bridge",
-"	2544  E7500/E7501 Hub Interface B RASUM Controller",
-"		4c53 1090  Cx9 / Vx9 mainboard",
-"	2545  E7500/E7501 Hub Interface C PCI-to-PCI Bridge",
-"	2546  E7500/E7501 Hub Interface C RASUM Controller",
-"	2547  E7500/E7501 Hub Interface D PCI-to-PCI Bridge",
-"	2548  E7500/E7501 Hub Interface D RASUM Controller",
-"	254c  E7501 Memory Controller Hub",
-"		4c53 1090  Cx9 / Vx9 mainboard",
-"		8086 3424  SE7501HG2 Mainboard",
-"	2550  E7505 Memory Controller Hub",
-"	2551  E7505/E7205 Series RAS Controller",
-"	2552  E7505/E7205 PCI-to-AGP Bridge",
-"	2553  E7505 Hub Interface B PCI-to-PCI Bridge",
-"	2554  E7505 Hub Interface B PCI-to-PCI Bridge RAS Controller",
-"	255d  E7205 Memory Controller Hub",
-"	2560  82845G/GL[Brookdale-G]/GE/PE DRAM Controller/Host-Hub Interface",
-"		1028 0126  Optiplex GX260",
-"		1458 2560  GA-8PE667 Ultra",
-"		1462 5800  845PE Max (MS-6580)",
-"	2561  82845G/GL[Brookdale-G]/GE/PE Host-to-AGP Bridge",
-"	2562  82845G/GL[Brookdale-G]/GE Chipset Integrated Graphics Device",
-"		0e11 00b9  Evo D510 SFF",
-"		1014 0267  NetVista A30p",
-"		1734 1004  D1451 Mainboard (SCENIC N300, i845GV)",
-"	2570  82865G/PE/P DRAM Controller/Host-Hub Interface",
-"		103c 006a  NX9500",
-"		1043 80f2  P5P800-MX Mainboard",
-"		1458 2570  GA-8IPE1000 Pro2 motherboard (865PE)",
-"	2571  82865G/PE/P PCI to AGP Controller",
-"	2572  82865G Integrated Graphics Controller",
-"		1028 019d  Dimension 3000",
-"		103c 12bc  D530 sff(dc578av)",
-"		1043 80a5  P5P800-MX Mainboard",
-"		8086 4246  Desktop Board D865GBF",
-"	2573  82865G/PE/P PCI to CSA Bridge",
-"	2576  82865G/PE/P Processor to I/O Memory Interface",
-"	2578  82875P/E7210 Memory Controller Hub",
-"		1458 2578  GA-8KNXP motherboard (875P)",
-"		1462 7580  MS-6758 (875P Neo)",
-"		15d9 4580  P4SCE Motherboard",
-"	2579  82875P Processor to AGP Controller",
-"	257b  82875P/E7210 Processor to PCI to CSA Bridge",
-"	257e  82875P/E7210 Processor to I/O Memory Interface",
-"	2580  915G/P/GV/GL/PL/910GL Express Memory Controller Hub",
-"		1458 2580  GA-8I915ME-G Mainboard",
-"		1462 7028  915P/G Neo2",
-"		1734 105b  Scenic W620",
-"	2581  915G/P/GV/GL/PL/910GL Express PCI Express Root Port",
-"	2582  82915G/GV/910GL Express Chipset Family Graphics Controller",
-"		1028 1079  Optiplex GX280",
-"		103c 3006  DC7100 SFF(DX878AV)",
-"		1043 2582  P5GD1-VW Mainboard",
-"		1458 2582  GA-8I915ME-G Mainboard",
-"		1734 105b  Scenic W620",
-"	2584  925X/XE Express Memory Controller Hub",
-"	2585  925X/XE Express PCI Express Root Port",
-"	2588  E7220/E7221 Memory Controller Hub",
-"	2589  E7220/E7221 PCI Express Root Port",
-"	258a  E7221 Integrated Graphics Controller",
-"	2590  Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller",
-"		1028 0182  Dell Latidude C610",
-"		103c 099c  NX6110/NC6120",
-"		a304 81b7  Vaio VGN-S3XP",
-"	2591  Mobile 915GM/PM Express PCI Express Root Port",
-"	2592  Mobile 915GM/GMS/910GML Express Graphics Controller",
-"		103c 099c  NX6110/NC6120",
-"		103c 308a  NC6220",
-"		1043 1881  GMA 900 915GM Integrated Graphics",
-"	25a1  6300ESB LPC Interface Controller",
-"	25a2  6300ESB PATA Storage Controller",
-"		4c53 10b0  CL9 mainboard",
-"		4c53 10e0  PSL09 PrPMC",
-"	25a3  6300ESB SATA Storage Controller",
-"		4c53 10b0  CL9 mainboard",
-"		4c53 10d0  Telum ASLP10 Processor AMC",
-"		4c53 10e0  PSL09 PrPMC",
-"	25a4  6300ESB SMBus Controller",
-"		4c53 10b0  CL9 mainboard",
-"		4c53 10d0  Telum ASLP10 Processor AMC",
-"		4c53 10e0  PSL09 PrPMC",
-"	25a6  6300ESB AC'97 Audio Controller",
-"		4c53 10b0  CL9 mainboard",
-"	25a7  6300ESB AC'97 Modem Controller",
-"	25a9  6300ESB USB Universal Host Controller",
-"		4c53 10b0  CL9 mainboard",
-"		4c53 10d0  Telum ASLP10 Processor AMC",
-"		4c53 10e0  PSL09 PrPMC",
-"	25aa  6300ESB USB Universal Host Controller",
-"		4c53 10b0  CL9 mainboard",
-"		4c53 10e0  PSL09 PrPMC",
-"	25ab  6300ESB Watchdog Timer",
-"		4c53 10b0  CL9 mainboard",
-"		4c53 10d0  Telum ASLP10 Processor AMC",
-"		4c53 10e0  PSL09 PrPMC",
-"	25ac  6300ESB I/O Advanced Programmable Interrupt Controller",
-"		4c53 10b0  CL9 mainboard",
-"		4c53 10d0  Telum ASLP10 Processor AMC",
-"		4c53 10e0  PSL09 PrPMC",
-"	25ad  6300ESB USB2 Enhanced Host Controller",
-"		4c53 10b0  CL9 mainboard",
-"		4c53 10d0  Telum ASLP10 Processor AMC",
-"		4c53 10e0  PSL09 PrPMC",
-"	25ae  6300ESB 64-bit PCI-X Bridge",
-"	25b0  6300ESB SATA RAID Controller",
-"		4c53 10d0  Telum ASLP10 Processor AMC",
-"		4c53 10e0  PSL09 PrPMC",
-"	25c0  Workstation Memory Controller Hub",
-"	25d0  Server Memory Controller Hub",
-"	25d4  Server Memory Contoller Hub",
-"	25d8  Server Memory Controller Hub",
-"	25e2  Server PCI Express x4 Port 2",
-"	25e3  Server PCI Express x4 Port 3",
-"	25e4  Server PCI Express x4 Port 4",
-"	25e5  Server PCI Express x4 Port 5",
-"	25e6  Server PCI Express x4 Port 6",
-"	25e7  Server PCI Express x4 Port 7",
-"	25e8  Server AMB Memory Mapped Registers",
-"	25f0  Server Error Reporting Registers",
-"	25f1  Reserved Registers",
-"	25f3  Reserved Registers",
-"	25f5  Server FBD Registers",
-"	25f6  Server FBD Registers",
-"	25f7  Server PCI Express x8 Port 2-3",
-"	25f8  Server PCI Express x8 Port 4-5",
-"	25f9  Server PCI Express x8 Port 6-7",
-"	25fa  Server PCI Express x16 Port 4-7",
-"	2600  E8500/E8501 Hub Interface 1.5",
-"	2601  E8500/E8501 PCI Express x4 Port D",
-"	2602  E8500/E8501 PCI Express x4 Port C0",
-"	2603  E8500/E8501 PCI Express x4 Port C1",
-"	2604  E8500/E8501 PCI Express x4 Port B0",
-"	2605  E8500/E8501 PCI Express x4 Port B1",
-"	2606  E8500/E8501 PCI Express x4 Port A0",
-"	2607  E8500/E8501 PCI Express x4 Port A1",
-"	2608  E8500/E8501 PCI Express x8 Port C",
-"	2609  E8500/E8501 PCI Express x8 Port B",
-"	260a  E8500/E8501 PCI Express x8 Port A",
-"	260c  E8500/E8501 IMI Registers",
-"	2610  E8500/E8501 Front Side Bus, Boot, and Interrupt Registers",
-"	2611  E8500/E8501 Address Mapping Registers",
-"	2612  E8500/E8501 RAS Registers",
-"	2613  E8500/E8501 Reserved Registers",
-"	2614  E8500/E8501 Reserved Registers",
-"	2615  E8500/E8501 Miscellaneous Registers",
-"	2617  E8500/E8501 Reserved Registers",
-"	2618  E8500/E8501 Reserved Registers",
-"	2619  E8500/E8501 Reserved Registers",
-"	261a  E8500/E8501 Reserved Registers",
-"	261b  E8500/E8501 Reserved Registers",
-"	261c  E8500/E8501 Reserved Registers",
-"	261d  E8500/E8501 Reserved Registers",
-"	261e  E8500/E8501 Reserved Registers",
-"	2620  E8500/E8501 eXternal Memory Bridge",
-"	2621  E8500/E8501 XMB Miscellaneous Registers",
-"	2622  E8500/E8501 XMB Memory Interleaving Registers",
-"	2623  E8500/E8501 XMB DDR Initialization and Calibration",
-"	2624  E8500/E8501 XMB Reserved Registers",
-"	2625  E8500/E8501 XMB Reserved Registers",
-"	2626  E8500/E8501 XMB Reserved Registers",
-"	2627  E8500/E8501 XMB Reserved Registers",
-"	2640  82801FB/FR (ICH6/ICH6R) LPC Interface Bridge",
-"		1462 7028  915P/G Neo2",
-"		1734 105c  Scenic W620",
-"	2641  82801FBM (ICH6M) LPC Interface Bridge",
-"		103c 099c  NX6110/NC6120",
-"	2642  82801FW/FRW (ICH6W/ICH6RW) LPC Interface Bridge",
-"	2651  82801FB/FW (ICH6/ICH6W) SATA Controller",
-"		1028 0179  Optiplex GX280",
-"		1043 2601  P5GD1-VW Mainboard",
-"		1734 105c  Scenic W620",
-"		8086 4147  D915GAG Motherboard",
-"	2652  82801FR/FRW (ICH6R/ICH6RW) SATA Controller",
-"		1462 7028  915P/G Neo2",
-"	2653  82801FBM (ICH6M) SATA Controller",
-"	2658  82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1",
-"		1028 0179  Optiplex GX280",
-"		103c 099c  NX6110/NC6120",
-"		1043 80a6  P5GD1-VW Mainboard",
-"		1458 2558  GA-8I915ME-G Mainboard",
-"		1462 7028  915P/G Neo2",
-"		1734 105c  Scenic W620",
-"	2659  82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2",
-"		1028 0179  Optiplex GX280",
-"		103c 099c  NX6110/NC6120",
-"		1043 80a6  P5GD1-VW Mainboard",
-"		1458 2659  GA-8I915ME-G Mainboard",
-"		1462 7028  915P/G Neo2",
-"		1734 105c  Scenic W620",
-"	265a  82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3",
-"		1028 0179  Optiplex GX280",
-"		103c 099c  NX6110/NC6120",
-"		1043 80a6  P5GD1-VW Mainboard",
-"		1458 265a  GA-8I915ME-G Mainboard",
-"		1462 7028  915P/G Neo2",
-"		1734 105c  Scenic W620",
-"	265b  82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4",
-"		1028 0179  Optiplex GX280",
-"		103c 099c  NX6110/NC6120",
-"		1043 80a6  P5GD1-VW Mainboard",
-"		1458 265a  GA-8I915ME-G Mainboard",
-"		1462 7028  915P/G Neo2",
-"		1734 105c  Scenic W620",
-"	265c  82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller",
-"		1028 0179  Optiplex GX280",
-"		103c 099c  NX6110/NC6120",
-"		1043 80a6  P5GD1-VW Mainboard",
-"		1458 5006  GA-8I915ME-G Mainboard",
-"		1462 7028  915P/G Neo2",
-"		1734 105c  Scenic W620",
-"	2660  82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1",
-"		103c 099c  NX6110/NC6120",
-"	2662  82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 2",
-"	2664  82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 3",
-"	2666  82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 4",
-"	2668  82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller",
-"		1043 814e  P5GD1-VW Mainboard",
-"	266a  82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller",
-"		1028 0179  Optiplex GX280",
-"		1043 80a6  P5GD1-VW Mainboard",
-"		1458 266a  GA-8I915ME-G Mainboard",
-"		1462 7028  915P/G Neo2",
-"		1734 105c  Scenic W620",
-"	266c  82801FB/FBM/FR/FW/FRW (ICH6 Family) LAN Controller",
-"	266d  82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller",
-"		1025 006a  Conexant AC'97 CoDec (in Acer TravelMate 2410 serie laptop)",
-"		103c 099c  NX6110/NC6120",
-"	266e  82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller",
-"		1025 006a  Realtek ALC 655 codec (in Acer TravelMate 2410 serie laptop)",
-"		1028 0179  Optiplex GX280",
-"		1028 0182  Latitude D610 Laptop",
-"		1028 0188  Inspiron 6000 laptop",
-"		103c 0944  Compaq NC6220",
-"		103c 099c  NX6110/NC6120",
-"		103c 3006  DC7100 SFF(DX878AV)",
-"		1458 a002  GA-8I915ME-G Mainboard",
-"		152d 0745  Packard Bell A8550 Laptop",
-"		1734 105a  Scenic W620",
-"	266f  82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller",
-"		103c 099c  NX6110/NC6120",
-"		1043 80a6  P5GD1-VW Mainboard",
-"		1458 266f  GA-8I915ME-G Mainboard",
-"		1462 7028  915P/G Neo2",
-"		1734 105c  Scenic W620",
-"	2670  Enterprise Southbridge LPC",
-"	2680  Enterprise Southbridge SATA IDE",
-"	2681  Enterprise Southbridge SATA AHCI",
-"	2682  Enterprise Southbridge SATA RAID",
-"	2683  Enterprise Southbridge SATA RAID",
-"	2688  Enterprise Southbridge UHCI USB #1",
-"	2689  Enterprise Southbridge UHCI USB #2",
-"	268a  Enterprise Southbridge UHCI USB #3",
-"	268b  Enterprise Southbridge UHCI USB #4",
-"	268c  Enterprise Southbridge EHCI USB",
-"	2690  Enterprise Southbridge PCI Express Root Port 1",
-"	2692  Enterprise Southbridge PCI Express Root Port 2",
-"	2694  Enterprise Southbridge PCI Express Root Port 3",
-"	2696  Enterprise Southbridge PCI Express Root Port 4",
-"	2698  Enterprise Southbridge AC '97 Audio",
-"	2699  Enterprise Southbridge AC '97 Modem",
-"	269a  Enterprise Southbridge High Definition Audio",
-"	269b  Enterprise Southbridge SMBus",
-"	269e  Enterprise Southbridge PATA",
-"	2770  945G/GZ/P/PL Express Memory Controller Hub",
-"		8086 544e  DeskTop Board D945GTP",
-"	2771  945G/GZ/P/PL Express PCI Express Root Port",
-"	2772  945G/GZ Express Integrated Graphics Controller",
-"		8086 544e  DeskTop Board D945GTP",
-"	2774  955X Express Memory Controller Hub",
-"	2775  955X Express PCI Express Root Port",
-"	2776  945G/GZ Express Integrated Graphics Controller",
-"	2778  E7230 Memory Controller Hub",
-"	2779  E7230 PCI Express Root Port",
-"	277a  975X Express PCI Express Root Port",
-"	277c  975X Express Memory Controller Hub",
-"	277d  975X Express PCI Express Root Port",
-"	2782  82915G Express Chipset Family Graphics Controller",
-"		1043 2582  P5GD1-VW Mainboard",
-"		1734 105b  Scenic W620",
-"	2792  Mobile 915GM/GMS/910GML Express Graphics Controller",
-"		103c 099c  NX6110/NC6120",
-"		1043 1881  GMA 900 915GM Integrated Graphics",
-"	27a0  Mobile 945GM/PM/GMS/940GML and 945GT Express Memory Controller Hub",
-"	27a1  Mobile 945GM/PM/GMS/940GML and 945GT Express PCI Express Root Port",
-"	27a2  Mobile 945GM/GMS/940GML Express Integrated Graphics Controller",
-"	27a6  Mobile 945GM/GMS/940GML Express Integrated Graphics Controller",
-"	27b0  82801GH (ICH7DH) LPC Interface Bridge",
-"	27b8  82801GB/GR (ICH7 Family) LPC Interface Bridge",
-"		8086 544e  DeskTop Board D945GTP",
-"	27b9  82801GBM (ICH7-M) LPC Interface Bridge",
-"	27bd  82801GHM (ICH7-M DH) LPC Interface Bridge",
-"	27c0  82801GB/GR/GH (ICH7 Family) Serial ATA Storage Controller IDE",
-"		8086 544e  DeskTop Board D945GTP",
-"	27c1  82801GR/GH (ICH7 Family) Serial ATA Storage Controller AHCI",
-"	27c3  82801GR/GH (ICH7 Family) Serial ATA Storage Controller RAID",
-"	27c4  82801GBM/GHM (ICH7 Family) Serial ATA Storage Controller IDE",
-"	27c5  82801GBM/GHM (ICH7 Family) Serial ATA Storage Controller AHCI",
-"	27c6  82801GHM (ICH7-M DH) Serial ATA Storage Controller RAID",
-"	27c8  82801G (ICH7 Family) USB UHCI #1",
-"		8086 544e  DeskTop Board D945GTP",
-"	27c9  82801G (ICH7 Family) USB UHCI #2",
-"		8086 544e  DeskTop Board D945GTP",
-"	27ca  82801G (ICH7 Family) USB UHCI #3",
-"		8086 544e  DeskTop Board D945GTP",
-"	27cb  82801G (ICH7 Family) USB UHCI #4",
-"		8086 544e  DeskTop Board D945GTP",
-"	27cc  82801G (ICH7 Family) USB2 EHCI Controller",
-"		8086 544e  DeskTop Board D945GTP",
-"	27d0  82801G (ICH7 Family) PCI Express Port 1",
-"	27d2  82801G (ICH7 Family) PCI Express Port 2",
-"	27d4  82801G (ICH7 Family) PCI Express Port 3",
-"	27d6  82801G (ICH7 Family) PCI Express Port 4",
-"	27d8  82801G (ICH7 Family) High Definition Audio Controller",
-"	27da  82801G (ICH7 Family) SMBus Controller",
-"		8086 544e  DeskTop Board D945GTP",
-"	27dc  82801G (ICH7 Family) LAN Controller",
-"		8086 308d  DeskTop Board D945GTP",
-"	27dd  82801G (ICH7 Family) AC'97 Modem Controller",
-"	27de  82801G (ICH7 Family) AC'97 Audio Controller",
-"	27df  82801G (ICH7 Family) IDE Controller",
-"		8086 544e  DeskTop Board D945GTP",
-"	27e0  82801GR/GH/GHM (ICH7 Family) PCI Express Port 5",
-"	27e2  82801GR/GH/GHM (ICH7 Family) PCI Express Port 6",
-"	2810  LPC Interface Controller",
-"	2811  Mobile LPC Interface Controller",
-"	2812  LPC Interface Controller",
-"	2814  LPC Interface Controller",
-"	2815  Mobile LPC Interface Controller",
-"	2820  SATA Controller 1 IDE",
-"	2821  SATA Controller AHCI",
-"	2822  SATA Controller RAID",
-"	2824  SATA Controller AHCI",
-"	2825  SATA Controller 2 IDE",
-"	2828  Mobile SATA Controller IDE",
-"	2829  Mobile SATA Controller AHCI",
-"	282a  Mobile SATA Controller RAID",
-"	2830  USB UHCI Controller #1",
-"	2831  USB UHCI Controller #2",
-"	2832  USB UHCI Controller #3",
-"	2834  USB UHCI Controller #4",
-"	2835  USB UHCI Controller #5",
-"	2836  USB2 EHCI Controller #1",
-"	283a  USB2 EHCI Controller #2",
-"	283e  SMBus Controller",
-"	283f  PCI Express Port 1",
-"	2841  PCI Express Port 2",
-"	2843  PCI Express Port 3",
-"	2845  PCI Express Port 4",
-"	2847  PCI Express Port 5",
-"	2849  PCI Express Port 6",
-"	284b  HD Audio Controller",
-"	284f  Thermal Subsystem",
-"	2850  Mobile IDE Controller",
-"	2970  Memory Controller Hub",
-"	2971  PCI Express Root Port",
-"	2972  Integrated Graphics Controller",
-"	2973  Integrated Graphics Controller",
-"	2974  HECI Controller",
-"	2976  PT IDER Controller",
-"	2977  KT Controller",
-"	2990  Memory Controller Hub",
-"	2991  PCI Express Root Port",
-"	2992  Integrated Graphics Controller",
-"	2993  Integrated Graphics Controller",
-"	2994  HECI Controller",
-"	2995  HECI Controller",
-"	2996  PT IDER Controller",
-"	2997  KT Controller",
-"	29a0  Memory Controller Hub",
-"	29a1  PCI Express Root Port",
-"	29a2  Integrated Graphics Controller",
-"	29a3  Integrated Graphics Controller",
-"	29a4  HECI Controller",
-"	29a5  HECI Controller",
-"	29a6  PT IDER Controller",
-"	29a7  KT Controller",
-"	2a00  Mobile Memory Controller Hub",
-"	2a01  Mobile PCI Express Root Port",
-"	2a02  Mobile Integrated Graphics Controller",
-"	2a03  Mobile Integrated Graphics Controller",
-"	3092  Integrated RAID",
-"	3200  GD31244 PCI-X SATA HBA",
-"	3340  82855PM Processor to I/O Controller",
-"		1025 005a  TravelMate 290",
-"		103c 088c  NC8000 laptop",
-"		103c 0890  NC6000 laptop",
-"	3341  82855PM Processor to AGP Controller",
-"	3500  Enterprise Southbridge PCI Express Upstream Port",
-"	3501  Enterprise Southbridge PCI Express Upstream Port",
-"	3504  Enterprise Southbridge IOxAPIC",
-"	3505  Enterprise Southbridge IOxAPIC",
-"	350c  Enterprise Southbridge PCI Express to PCI-X Bridge",
-"	350d  Enterprise Southbridge PCI Express to PCI-X Bridge",
-"	3510  Enterprise Southbridge PCI Express Downstream Port E1",
-"	3511  Enterprise Southbridge PCI Express Downstream Port E1",
-"	3514  Enterprise Southbridge PCI Express Downstream Port E2",
-"	3515  Enterprise Southbridge PCI Express Downstream Port E2",
-"	3518  Enterprise Southbridge PCI Express Downstream Port E3",
-"	3519  Enterprise Southbridge PCI Express Downstream Port E3",
-"	3575  82830 830 Chipset Host Bridge",
-"		0e11 0030  Evo N600c",
-"		1014 021d  ThinkPad A/T/X Series",
-"		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP",
-"	3576  82830 830 Chipset AGP Bridge",
-"	3577  82830 CGC [Chipset Graphics Controller]",
-"		1014 0513  ThinkPad A/T/X Series",
-"	3578  82830 830 Chipset Host Bridge",
-"	3580  82852/82855 GM/GME/PM/GMV Processor to I/O Controller",
-"		1028 0139  Latitude D400",
-"		1028 0163  Latitude D505",
-"		1028 0196  Inspiron 5160",
-"		1734 1055  Amilo M1420",
-"		4c53 10b0  CL9 mainboard",
-"		4c53 10e0  PSL09 PrPMC",
-"	3581  82852/82855 GM/GME/PM/GMV Processor to AGP Controller",
-"		1734 1055  Amilo M1420",
-"	3582  82852/855GM Integrated Graphics Device",
-"		1028 0139  Latitude D400",
-"		1028 0163  Latitude D505",
-"		4c53 10b0  CL9 mainboard",
-"		4c53 10e0  PSL09 PrPMC",
-"	3584  82852/82855 GM/GME/PM/GMV Processor to I/O Controller",
-"		1028 0139  Latitude D400",
-"		1028 0163  Latitude D505",
-"		1028 0196  Inspiron 5160",
-"		1734 1055  Amilo M1420",
-"		4c53 10b0  CL9 mainboard",
-"		4c53 10e0  PSL09 PrPMC",
-"	3585  82852/82855 GM/GME/PM/GMV Processor to I/O Controller",
-"		1028 0139  Latitude D400",
-"		1028 0163  Latitude D505",
-"		1028 0196  Inspiron 5160",
-"		1734 1055  Amilo M1420",
-"		4c53 10b0  CL9 mainboard",
-"		4c53 10e0  PSL09 PrPMC",
-"	3590  E7520 Memory Controller Hub",
-"		1028 019a  PowerEdge SC1425",
-"		1734 103e  Primergy RX300 S2",
-"		4c53 10d0  Telum ASLP10 Processor AMC",
-"	3591  E7525/E7520 Error Reporting Registers",
-"		1028 0169  Precision 470",
-"		4c53 10d0  Telum ASLP10 Processor AMC",
-"	3592  E7320 Memory Controller Hub",
-"	3593  E7320 Error Reporting Registers",
-"	3594  E7520 DMA Controller",
-"		4c53 10d0  Telum ASLP10 Processor AMC",
-"	3595  E7525/E7520/E7320 PCI Express Port A",
-"	3596  E7525/E7520/E7320 PCI Express Port A1",
-"	3597  E7525/E7520 PCI Express Port B",
-"	3598  E7520 PCI Express Port B1",
-"	3599  E7520 PCI Express Port C",
-"	359a  E7520 PCI Express Port C1",
-"	359b  E7525/E7520/E7320 Extended Configuration Registers",
-"	359e  E7525 Memory Controller Hub",
-"		1028 0169  Precision 470",
-"	4220  PRO/Wireless 2200BG Network Connection",
-"	4222  PRO/Wireless 3945ABG Network Connection",
-"		8086 1005  PRO/Wireless 3945BG Network Connection",
-"		8086 1034  PRO/Wireless 3945BG Network Connection",
-"		8086 1044  PRO/Wireless 3945BG Network Connection",
-"	4223  PRO/Wireless 2915ABG Network Connection",
-"		1351 103c  Compaq NC6220",
-"	4224  PRO/Wireless 2915ABG Network Connection",
-"	4227  PRO/Wireless 3945ABG Network Connection",
-"		8086 1011  Thinkpad X60s",
-"		8086 1014  PRO/Wireless 3945BG Network Connection",
-"	5200  EtherExpress PRO/100 Intelligent Server",
-"	5201  EtherExpress PRO/100 Intelligent Server",
-"		8086 0001  EtherExpress PRO/100 Server Ethernet Adapter",
-"	530d  80310 IOP [IO Processor]",
-"	7000  82371SB PIIX3 ISA [Natoma/Triton II]",
-"	7010  82371SB PIIX3 IDE [Natoma/Triton II]",
-"	7020  82371SB PIIX3 USB [Natoma/Triton II]",
-"	7030  430VX - 82437VX TVX [Triton VX]",
-"	7050  Intercast Video Capture Card",
-"	7051  PB 642365-003 (Business Video Conferencing Card)",
-"	7100  430TX - 82439TX MTXC",
-"	7110  82371AB/EB/MB PIIX4 ISA",
-"		15ad 1976  virtualHW v3",
-"	7111  82371AB/EB/MB PIIX4 IDE",
-"		15ad 1976  virtualHW v3",
-"	7112  82371AB/EB/MB PIIX4 USB",
-"		15ad 1976  virtualHW v3",
-"	7113  82371AB/EB/MB PIIX4 ACPI",
-"		15ad 1976  virtualHW v3",
-"	7120  82810 GMCH [Graphics Memory Controller Hub]",
-"		4c53 1040  CL7 mainboard",
-"		4c53 1060  PC7 mainboard",
-"	7121  82810 CGC [Chipset Graphics Controller]",
-"		4c53 1040  CL7 mainboard",
-"		4c53 1060  PC7 mainboard",
-"		8086 4341  Cayman (CA810) Mainboard",
-"	7122  82810 DC-100 GMCH [Graphics Memory Controller Hub]",
-"	7123  82810 DC-100 CGC [Chipset Graphics Controller]",
-"	7124  82810E DC-133 GMCH [Graphics Memory Controller Hub]",
-"	7125  82810E DC-133 CGC [Chipset Graphics Controller]",
-"	7126  82810 DC-133 System and Graphics Controller",
-"	7128  82810-M DC-100 System and Graphics Controller",
-"	712a  82810-M DC-133 System and Graphics Controller",
-"	7180  440LX/EX - 82443LX/EX Host bridge",
-"	7181  440LX/EX - 82443LX/EX AGP bridge",
-"	7190  440BX/ZX/DX - 82443BX/ZX/DX Host bridge",
-"		0e11 0500  Armada 1750 Laptop System Chipset",
-"		0e11 b110  Armada M700/E500",
-"		1028 008e  PowerEdge 1300 mainboard",
-"		1179 0001  Toshiba Tecra 8100 Laptop System Chipset",
-"		15ad 1976  virtualHW v3",
-"		4c53 1050  CT7 mainboard",
-"		4c53 1051  CE7 mainboard",
-"	7191  440BX/ZX/DX - 82443BX/ZX/DX AGP bridge",
-"		1028 008e  PowerEdge 1300 mainboard",
-"	7192  440BX/ZX/DX - 82443BX/ZX/DX Host bridge (AGP disabled)",
-"		0e11 0460  Armada 1700 Laptop System Chipset",
-"		4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard",
-"	7194  82440MX Host Bridge",
-"		1033 0000  Versa Note Vxi",
-"		4c53 10a0  CA3/CR3 mainboard",
-"	7195  82440MX AC'97 Audio Controller",
-"		1033 80cc  Versa Note VXi",
-"		10cf 1099  QSound_SigmaTel Stac97 PCI Audio",
-"		11d4 0040  SoundMAX Integrated Digital Audio",
-"		11d4 0048  SoundMAX Integrated Digital Audio",
-"	7196  82440MX AC'97 Modem Controller",
-"	7198  82440MX ISA Bridge",
-"	7199  82440MX EIDE Controller",
-"	719a  82440MX USB Universal Host Controller",
-"	719b  82440MX Power Management Controller",
-"	71a0  440GX - 82443GX Host bridge",
-"		4c53 1050  CT7 mainboard",
-"		4c53 1051  CE7 mainboard",
-"	71a1  440GX - 82443GX AGP bridge",
-"	71a2  440GX - 82443GX Host bridge (AGP disabled)",
-"		4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard",
-"	7600  82372FB PIIX5 ISA",
-"	7601  82372FB PIIX5 IDE",
-"	7602  82372FB PIIX5 USB",
-"	7603  82372FB PIIX5 SMBus",
-"	7800  82740 (i740) AGP Graphics Accelerator",
-"		003d 0008  Starfighter AGP",
-"		003d 000b  Starfighter AGP",
-"		1092 0100  Stealth II G460",
-"		10b4 201a  Lightspeed 740",
-"		10b4 202f  Lightspeed 740",
-"		8086 0000  Terminator 2x/i",
-"		8086 0100  Intel740 Graphics Accelerator",
-"	84c4  450KX/GX [Orion] - 82454KX/GX PCI bridge",
-"	84c5  450KX/GX [Orion] - 82453KX/GX Memory controller",
-"	84ca  450NX - 82451NX Memory & I/O Controller",
-"	84cb  450NX - 82454NX/84460GX PCI Expander Bridge",
-"	84e0  460GX - 84460GX System Address Controller (SAC)",
-"	84e1  460GX - 84460GX System Data Controller (SDC)",
-"	84e2  460GX - 84460GX AGP Bridge (GXB function 2)",
-"	84e3  460GX - 84460GX Memory Address Controller (MAC)",
-"	84e4  460GX - 84460GX Memory Data Controller (MDC)",
-"	84e6  460GX - 82466GX Wide and fast PCI eXpander Bridge (WXB)",
-"	84ea  460GX - 84460GX AGP Bridge (GXB function 1)",
-"	8500  IXP4XX Intel Network Processor (IXP420/421/422/425/IXC1100)",
-"		1993 0ded  mGuard-PCI AV#2",
-"		1993 0dee  mGuard-PCI AV#1",
-"		1993 0def  mGuard-PCI AV#0",
-"	9000  IXP2000 Family Network Processor",
-"	9001  IXP2400 Network Processor",
-"	9002  IXP2300 Network Processor",
-"	9004  IXP2800 Network Processor",
-"	9621  Integrated RAID",
-"	9622  Integrated RAID",
-"	9641  Integrated RAID",
-"	96a1  Integrated RAID",
-"	b152  21152 PCI-to-PCI Bridge",
-"	b154  21154 PCI-to-PCI Bridge",
-"	b555  21555 Non transparent PCI-to-PCI Bridge",
-"		12d9 000a  PCI VoIP Gateway",
-"		4c53 1050  CT7 mainboard",
-"		4c53 1051  CE7 mainboard",
-"		e4bf 1000  CC8-1-BLUES",
-"8401  TRENDware International Inc.",
-"8800  Trigem Computer Inc.",
-"	2008  Video assistent component",
-"8866  T-Square Design Inc.",
-"8888  Silicon Magic",
-"8912  TRX",
-"8c4a  Winbond",
-"	1980  W89C940 misprogrammed [ne2k]",
-"8e0e  Computone Corporation",
-"8e2e  KTI",
-"	3000  ET32P2",
-"9004  Adaptec",
-"	0078  AHA-2940U_CN",
-"	1078  AIC-7810",
-"	1160  AIC-1160 [Family Fibre Channel Adapter]",
-"	2178  AIC-7821",
-"	3860  AHA-2930CU",
-"	3b78  AHA-4844W/4844UW",
-"	5075  AIC-755x",
-"	5078  AHA-7850",
-"		9004 7850  AHA-2904/Integrated AIC-7850",
-"	5175  AIC-755x",
-"	5178  AIC-7851",
-"	5275  AIC-755x",
-"	5278  AIC-7852",
-"	5375  AIC-755x",
-"	5378  AIC-7850",
-"	5475  AIC-755x",
-"	5478  AIC-7850",
-"	5575  AVA-2930",
-"	5578  AIC-7855",
-"	5647  ANA-7711 TCP Offload Engine",
-"		9004 7710  ANA-7711F TCP Offload Engine - Optical",
-"		9004 7711  ANA-7711LP TCP Offload Engine - Copper",
-"	5675  AIC-755x",
-"	5678  AIC-7856",
-"	5775  AIC-755x",
-"	5778  AIC-7850",
-"	5800  AIC-5800",
-"	5900  ANA-5910/5930/5940 ATM155 & 25 LAN Adapter",
-"	5905  ANA-5910A/5930A/5940A ATM Adapter",
-"	6038  AIC-3860",
-"	6075  AIC-1480 / APA-1480",
-"		9004 7560  AIC-1480 / APA-1480 Cardbus",
-"	6078  AIC-7860",
-"	6178  AIC-7861",
-"		9004 7861  AHA-2940AU Single",
-"	6278  AIC-7860",
-"	6378  AIC-7860",
-"	6478  AIC-786x",
-"	6578  AIC-786x",
-"	6678  AIC-786x",
-"	6778  AIC-786x",
-"	6915  ANA620xx/ANA69011A",
-"		9004 0008  ANA69011A/TX 10/100",
-"		9004 0009  ANA69011A/TX 10/100",
-"		9004 0010  ANA62022 2-port 10/100",
-"		9004 0018  ANA62044 4-port 10/100",
-"		9004 0019  ANA62044 4-port 10/100",
-"		9004 0020  ANA62022 2-port 10/100",
-"		9004 0028  ANA69011A/TX 10/100",
-"		9004 8008  ANA69011A/TX 64 bit 10/100",
-"		9004 8009  ANA69011A/TX 64 bit 10/100",
-"		9004 8010  ANA62022 2-port 64 bit 10/100",
-"		9004 8018  ANA62044 4-port 64 bit 10/100",
-"		9004 8019  ANA62044 4-port 64 bit 10/100",
-"		9004 8020  ANA62022 2-port 64 bit 10/100",
-"		9004 8028  ANA69011A/TX 64 bit 10/100",
-"	7078  AHA-294x / AIC-7870",
-"	7178  AHA-2940/2940W / AIC-7871",
-"	7278  AHA-3940/3940W / AIC-7872",
-"	7378  AHA-3985 / AIC-7873",
-"	7478  AHA-2944/2944W / AIC-7874",
-"	7578  AHA-3944/3944W / AIC-7875",
-"	7678  AHA-4944W/UW / AIC-7876",
-"	7710  ANA-7711F Network Accelerator Card (NAC) - Optical",
-"	7711  ANA-7711C Network Accelerator Card (NAC) - Copper",
-"	7778  AIC-787x",
-"	7810  AIC-7810",
-"	7815  AIC-7815 RAID+Memory Controller IC",
-"		9004 7815  ARO-1130U2 RAID Controller",
-"		9004 7840  AIC-7815 RAID+Memory Controller IC",
-"	7850  AIC-7850",
-"	7855  AHA-2930",
-"	7860  AIC-7860",
-"	7870  AIC-7870",
-"	7871  AHA-2940",
-"	7872  AHA-3940",
-"	7873  AHA-3980",
-"	7874  AHA-2944",
-"	7880  AIC-7880P",
-"	7890  AIC-7890",
-"	7891  AIC-789x",
-"	7892  AIC-789x",
-"	7893  AIC-789x",
-"	7894  AIC-789x",
-"	7895  AHA-2940U/UW / AHA-39xx / AIC-7895",
-"		9004 7890  AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B",
-"		9004 7891  AHA-2940U/2940UW Dual",
-"		9004 7892  AHA-3940AU/AUW/AUWD/UWD",
-"		9004 7894  AHA-3944AUWD",
-"		9004 7895  AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B",
-"		9004 7896  AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B",
-"		9004 7897  AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B",
-"	7896  AIC-789x",
-"	7897  AIC-789x",
-"	8078  AIC-7880U",
-"		9004 7880  AIC-7880P Ultra/Ultra Wide SCSI Chipset",
-"	8178  AHA-2940U/UW/D / AIC-7881U",
-"		9004 7881  AHA-2940UW SCSI Host Adapter",
-"	8278  AHA-3940U/UW/UWD / AIC-7882U",
-"	8378  AHA-3940U/UW / AIC-7883U",
-"	8478  AHA-2944UW / AIC-7884U",
-"	8578  AHA-3944U/UWD / AIC-7885",
-"	8678  AHA-4944UW / AIC-7886",
-"	8778  AHA-2940UW Pro / AIC-788x",
-"		9004 7887  2940UW Pro Ultra-Wide SCSI Controller",
-"	8878  AHA-2930UW / AIC-7888",
-"		9004 7888  AHA-2930UW SCSI Controller",
-"	8b78  ABA-1030",
-"	ec78  AHA-4944W/UW",
-"9005  Adaptec",
-"	0010  AHA-2940U2/U2W",
-"		9005 2180  AHA-2940U2 SCSI Controller",
-"		9005 8100  AHA-2940U2B SCSI Controller",
-"		9005 a100  AHA-2940U2B SCSI Controller",
-"		9005 a180  AHA-2940U2W SCSI Controller",
-"		9005 e100  AHA-2950U2B SCSI Controller",
-"	0011  AHA-2930U2",
-"	0013  78902",
-"		9005 0003  AAA-131U2 Array1000 1 Channel RAID Controller",
-"		9005 000f  AIC7890_ARO",
-"	001f  AHA-2940U2/U2W / 7890/7891",
-"		9005 000f  2940U2W SCSI Controller",
-"		9005 a180  2940U2W SCSI Controller",
-"	0020  AIC-7890",
-"	002f  AIC-7890",
-"	0030  AIC-7890",
-"	003f  AIC-7890",
-"	0050  AHA-3940U2x/395U2x",
-"		9005 f500  AHA-3950U2B",
-"		9005 ffff  AHA-3950U2B",
-"	0051  AHA-3950U2D",
-"		9005 b500  AHA-3950U2D",
-"	0053  AIC-7896 SCSI Controller",
-"		9005 ffff  AIC-7896 SCSI Controller mainboard implementation",
-"	005f  AIC-7896U2/7897U2",
-"	0080  AIC-7892A U160/m",
-"		0e11 e2a0  Compaq 64-Bit/66MHz Wide Ultra3 SCSI Adapter",
-"		9005 6220  AHA-29160C",
-"		9005 62a0  29160N Ultra160 SCSI Controller",
-"		9005 e220  29160LP Low Profile Ultra160 SCSI Controller",
-"		9005 e2a0  29160 Ultra160 SCSI Controller",
-"	0081  AIC-7892B U160/m",
-"		9005 62a1  19160 Ultra160 SCSI Controller",
-"	0083  AIC-7892D U160/m",
-"	008f  AIC-7892P U160/m",
-"		1179 0001  Magnia Z310",
-"		15d9 9005  Onboard SCSI Host Adapter",
-"	00c0  AHA-3960D / AIC-7899A U160/m",
-"		0e11 f620  Compaq 64-Bit/66MHz Dual Channel Wide Ultra3 SCSI Adapter",
-"		9005 f620  AHA-3960D U160/m",
-"	00c1  AIC-7899B U160/m",
-"	00c3  AIC-7899D U160/m",
-"	00c5  RAID subsystem HBA",
-"		1028 00c5  PowerEdge 2400,2500,2550,4400",
-"	00cf  AIC-7899P U160/m",
-"		1028 00ce  PowerEdge 1400",
-"		1028 00d1  PowerEdge 2550",
-"		1028 00d9  PowerEdge 2500",
-"		10f1 2462  Thunder K7 S2462",
-"		15d9 9005  Onboard SCSI Host Adapter",
-"		8086 3411  SDS2 Mainboard",
-"	0241  Serial ATA II RAID 1420SA",
-"	0250  ServeRAID Controller",
-"		1014 0279  ServeRAID-xx",
-"		1014 028c  ServeRAID-xx",
-"	0279  ServeRAID 6M",
-"	0283  AAC-RAID",
-"		9005 0283  Catapult",
-"	0284  AAC-RAID",
-"		9005 0284  Tomcat",
-"	0285  AAC-RAID",
-"		0e11 0295  SATA 6Ch (Bearcat)",
-"		1014 02f2  ServeRAID 8i",
-"		1028 0287  PowerEdge Expandable RAID Controller 320/DC",
-"		1028 0291  CERC SATA RAID 2 PCI SATA 6ch (DellCorsair)",
-"		103c 3227  AAR-2610SA",
-"		17aa 0286  Legend S220 (Legend Crusader)",
-"		17aa 0287  Legend S230 (Legend Vulcan)",
-"		9005 0285  2200S (Vulcan)",
-"		9005 0286  2120S (Crusader)",
-"		9005 0287  2200S (Vulcan-2m)",
-"		9005 0288  3230S (Harrier)",
-"		9005 0289  3240S (Tornado)",
-"		9005 028a  ASR-2020ZCR",
-"		9005 028b  ASR-2025ZCR (Terminator)",
-"		9005 028e  ASR-2020SA (Skyhawk)",
-"		9005 028f  ASR-2025SA",
-"		9005 0290  AAR-2410SA PCI SATA 4ch (Jaguar II)",
-"		9005 0292  AAR-2810SA PCI SATA 8ch (Corsair-8)",
-"		9005 0293  AAR-21610SA PCI SATA 16ch (Corsair-16)",
-"		9005 0294  ESD SO-DIMM PCI-X SATA ZCR (Prowler)",
-"		9005 0296  ASR-2240S",
-"		9005 0297  ASR-4005SAS",
-"		9005 0298  ASR-4000SAS",
-"		9005 0299  ASR-4800SAS",
-"		9005 029a  4805SAS",
-"	0286  AAC-RAID (Rocket)",
-"		1014 9540  ServeRAID 8k/8k-l4",
-"		1014 9580  ServeRAID 8k/8k-l8",
-"		9005 028c  ASR-2230S + ASR-2230SLP PCI-X (Lancer)",
-"		9005 028d  ASR-2130S",
-"		9005 029b  ASR-2820SA",
-"		9005 029c  ASR-2620SA",
-"		9005 029d  ASR-2420SA",
-"		9005 029e  ICP ICP9024R0",
-"		9005 029f  ICP ICP9014R0",
-"		9005 02a0  ICP ICP9047MA",
-"		9005 02a1  ICP ICP9087MA",
-"		9005 02a2  3800SAS",
-"		9005 02a3  ICP ICP5445AU",
-"		9005 02a4  ICP ICP5085LI",
-"		9005 02a5  ICP ICP5085BR",
-"		9005 02a6  ICP9067MA",
-"		9005 02a7  AAR-2830SA",
-"		9005 02a8  AAR-2430SA",
-"		9005 02a9  ICP5087AU",
-"		9005 02aa  ICP5047AU",
-"		9005 0800  Callisto",
-"	0500  Obsidian chipset SCSI controller",
-"		1014 02c1  PCI-X DDR 3Gb SAS Adapter (572A/572C)",
-"		1014 02c2  PCI-X DDR 3Gb SAS RAID Adapter (572B/572D)",
-"	0503  Scamp chipset SCSI controller",
-"		1014 02bf  Quad Channel PCI-X DDR U320 SCSI RAID Adapter (571E)",
-"		1014 02d5  Quad Channel PCI-X DDR U320 SCSI RAID Adapter (571F)",
-"	0910  AUA-3100B",
-"	091e  AUA-3100B",
-"	8000  ASC-29320A U320",
-"	800f  AIC-7901 U320",
-"	8010  ASC-39320 U320",
-"	8011  ASC-39320D",
-"		0e11 00ac  ASC-39320D U320",
-"		9005 0041  ASC-39320D U320",
-"	8012  ASC-29320 U320",
-"	8013  ASC-29320B U320",
-"	8014  ASC-29320LP U320",
-"	8015  ASC-39320B U320",
-"	8016  ASC-39320A U320",
-"	8017  ASC-29320ALP U320",
-"	801c  ASC-39320D U320",
-"	801d  AIC-7902B U320",
-"	801e  AIC-7901A U320",
-"	801f  AIC-7902 U320",
-"		1734 1011  Primergy RX300",
-"	8080  ASC-29320A U320 w/HostRAID",
-"	808f  AIC-7901 U320 w/HostRAID",
-"	8090  ASC-39320 U320 w/HostRAID",
-"	8091  ASC-39320D U320 w/HostRAID",
-"	8092  ASC-29320 U320 w/HostRAID",
-"	8093  ASC-29320B U320 w/HostRAID",
-"	8094  ASC-29320LP U320 w/HostRAID",
-"	8095  ASC-39320(B) U320 w/HostRAID",
-"	8096  ASC-39320A U320 w/HostRAID",
-"	8097  ASC-29320ALP U320 w/HostRAID",
-"	809c  ASC-39320D(B) U320 w/HostRAID",
-"	809d  AIC-7902(B) U320 w/HostRAID",
-"	809e  AIC-7901A U320 w/HostRAID",
-"	809f  AIC-7902 U320 w/HostRAID",
-"907f  Atronics",
-"	2015  IDE-2015PL",
-"919a  Gigapixel Corp",
-"9412  Holtek",
-"	6565  6565",
-"9699  Omni Media Technology Inc",
-"	6565  6565",
-"9710  NetMos Technology",
-"	7780  USB IRDA-port",
-"	9805  PCI 1 port parallel adapter",
-"	9815  PCI 9815 Multi-I/O Controller",
-"		1000 0020  2P0S (2 port parallel adaptor)",
-"	9835  PCI 9835 Multi-I/O Controller",
-"		1000 0002  2S (16C550 UART)",
-"		1000 0012  1P2S",
-"	9845  PCI 9845 Multi-I/O Controller",
-"		1000 0004  0P4S (4 port 16550A serial card)",
-"		1000 0006  0P6S (6 port 16550a serial card)",
-"	9855  PCI 9855 Multi-I/O Controller",
-"		1000 0014  1P4S",
-"9902  Stargen Inc.",
-"	0001  SG2010 PCI over Starfabric Bridge",
-"	0002  SG2010 PCI to Starfabric Gateway",
-"	0003  SG1010 Starfabric Switch and PCI Bridge",
-"a0a0  AOPEN Inc.",
-"a0f1  UNISYS Corporation",
-"a200  NEC Corporation",
-"a259  Hewlett Packard",
-"a25b  Hewlett Packard GmbH PL24-MKT",
-"a304  Sony",
-"a727  3Com Corporation",
-"	0013  3CRPAG175 Wireless PC Card",
-"aa42  Scitex Digital Video",
-"ac1e  Digital Receiver Technology Inc",
-"ac3d  Actuality Systems",
-"aecb  Adrienne Electronics Corporation",
-"	6250  VITC/LTC Timecode Reader card [PCI-VLTC/RDR]",
-"affe  Sirrix AG security technologies",
-"	dead  Sirrix.PCI4S0 4-port ISDN S0 interface",
-"b1b3  Shiva Europe Limited",
-"bd11  Pinnacle Systems, Inc. (Wrong ID)",
-"c001  TSI Telsys",
-"c0a9  Micron/Crucial Technology",
-"c0de  Motorola",
-"c0fe  Motion Engineering, Inc.",
-"ca50  Varian Australia Pty Ltd",
-"cafe  Chrysalis-ITS",
-"	0003  Luna K3 Hardware Security Module",
-"cccc  Catapult Communications",
-"cddd  Tyzx, Inc.",
-"	0101  DeepSea 1 High Speed Stereo Vision Frame Grabber",
-"	0200  DeepSea 2 High Speed Stereo Vision Frame Grabber",
-"d161  Digium, Inc.",
-"	0205  Wildcard TE205P",
-"	0210  Wildcard TE210P",
-"	0405  Wildcard TE405P Quad-Span togglable E1/T1/J1 card 5.0v",
-"	0406  Wildcard TE406P Quad-Span togglable E1/T1/J1 echo cancellation card 5.0v",
-"	0410  Wildcard TE410P Quad-Span togglable E1/T1/J1 card 3.3v",
-"	0411  Wildcard TE411P Quad-Span togglable E1/T1/J1 echo cancellation card 3.3v",
-"	2400  Wildcard TDM2400P",
-"d4d4  Dy4 Systems Inc",
-"	0601  PCI Mezzanine Card",
-"d531  I+ME ACTIA GmbH",
-"d84d  Exsys",
-"dead  Indigita Corporation",
-"deaf  Middle Digital Inc.",
-"	9050  PC Weasel Virtual VGA",
-"	9051  PC Weasel Serial Port",
-"	9052  PC Weasel Watchdog Timer",
-"e000  Winbond",
-"	e000  W89C940",
-"e159  Tiger Jet Network Inc.",
-"	0001  Tiger3XX Modem/ISDN interface",
-"		0059 0001  128k ISDN-S/T Adapter",
-"		0059 0003  128k ISDN-U Adapter",
-"		00a7 0001  TELES.S0/PCI 2.x ISDN Adapter",
-"		8086 0003  Digium X100P/X101P analogue PSTN FXO interface",
-"	0002  Tiger100APC ISDN chipset",
-"e4bf  EKF Elektronik GmbH",
-"e55e  Essence Technology, Inc.",
-"ea01  Eagle Technology",
-"	000a  PCI-773 Temperature Card",
-"	0032  PCI-730 & PC104P-30 Card",
-"	003e  PCI-762 Opto-Isolator Card",
-"	0041  PCI-763 Reed Relay Card",
-"	0043  PCI-769 Opto-Isolator Reed Relay Combo Card",
-"	0046  PCI-766 Analog Output Card",
-"	0052  PCI-703 Analog I/O Card",
-"	0800  PCI-800 Digital I/O Card",
-"ea60  RME",
-"	9896  Digi32",
-"	9897  Digi32 Pro",
-"	9898  Digi32/8",
-"eabb  Aashima Technology B.V.",
-"eace  Endace Measurement Systems, Ltd",
-"	3100  DAG 3.10 OC-3/OC-12",
-"	3200  DAG 3.2x OC-3/OC-12",
-"	320e  DAG 3.2E Fast Ethernet",
-"	340e  DAG 3.4E Fast Ethernet",
-"	341e  DAG 3.41E Fast Ethernet",
-"	3500  DAG 3.5 OC-3/OC-12",
-"	351c  DAG 3.5ECM Fast Ethernet",
-"	4100  DAG 4.10 OC-48",
-"	4110  DAG 4.11 OC-48",
-"	4220  DAG 4.2 OC-48",
-"	422e  DAG 4.2E Dual Gigabit Ethernet",
-"ec80  Belkin Corporation",
-"	ec00  F5D6000",
-"ecc0  Echo Digital Audio Corporation",
-"edd8  ARK Logic Inc",
-"	a091  1000PV [Stingray]",
-"	a099  2000PV [Stingray]",
-"	a0a1  2000MT",
-"	a0a9  2000MI",
-"f1d0  AJA Video",
-"	c0fe  Xena HS/HD-R",
-"	c0ff  Kona/Xena 2",
-"	cafe  Kona SD",
-"	cfee  Xena LS/SD-22-DA/SD-DA",
-"	dcaf  Kona HD",
-"	dfee  Xena HD-DA",
-"	efac  Xena SD-MM/SD-22-MM",
-"	facd  Xena HD-MM",
-"fa57  Interagon AS",
-"	0001  PMC [Pattern Matching Chip]",
-"fab7  Fabric7 Systems, Inc.",
-"febd  Ultraview Corp.",
-"feda  Broadcom Inc",
-"	a0fa  BCM4210 iLine10 HomePNA 2.0",
-"	a10e  BCM4230 iLine10 HomePNA 2.0",
-"fede  Fedetec Inc.",
-"	0003  TABIC PCI v3",
-"fffd  XenSource, Inc.",
-"	0101  PCI Event Channel Controller",
-"fffe  VMWare Inc",
-"	0405  Virtual SVGA 4.0",
-"	0710  Virtual SVGA",
-"ffff  Illegal Vendor ID",
-"C 00  Unclassified device",
-"	00  Non-VGA unclassified device",
-"	01  VGA compatible unclassified device",
-"C 01  Mass storage controller",
-"	00  SCSI storage controller",
-"	01  IDE interface",
-"	02  Floppy disk controller",
-"	03  IPI bus controller",
-"	04  RAID bus controller",
-"	05  ATA controller",
-"		20  ADMA single stepping",
-"		40  ADMA continuous operation",
-"	06  SATA controller",
-"		00  Vendor specific",
-"		01  AHCI 1.0",
-"	07  Serial Attached SCSI controller",
-"	80  Mass storage controller",
-"C 02  Network controller",
-"	00  Ethernet controller",
-"	01  Token ring network controller",
-"	02  FDDI network controller",
-"	03  ATM network controller",
-"	04  ISDN controller",
-"	80  Network controller",
-"C 03  Display controller",
-"	00  VGA compatible controller",
-"		00  VGA",
-"		01  8514",
-"	01  XGA compatible controller",
-"	02  3D controller",
-"	80  Display controller",
-"C 04  Multimedia controller",
-"	00  Multimedia video controller",
-"	01  Multimedia audio controller",
-"	02  Computer telephony device",
-"	03  Audio device",
-"	80  Multimedia controller",
-"C 05  Memory controller",
-"	00  RAM memory",
-"	01  FLASH memory",
-"	80  Memory controller",
-"C 06  Bridge",
-"	00  Host bridge",
-"	01  ISA bridge",
-"	02  EISA bridge",
-"	03  MicroChannel bridge",
-"	04  PCI bridge",
-"		00  Normal decode",
-"		01  Subtractive decode",
-"	05  PCMCIA bridge",
-"	06  NuBus bridge",
-"	07  CardBus bridge",
-"	08  RACEway bridge",
-"		00  Transparent mode",
-"		01  Endpoint mode",
-"	09  Semi-transparent PCI-to-PCI bridge",
-"		40  Primary bus towards host CPU",
-"		80  Secondary bus towards host CPU",
-"	0a  InfiniBand to PCI host bridge",
-"	80  Bridge",
-"C 07  Communication controller",
-"	00  Serial controller",
-"		00  8250",
-"		01  16450",
-"		02  16550",
-"		03  16650",
-"		04  16750",
-"		05  16850",
-"		06  16950",
-"	01  Parallel controller",
-"		00  SPP",
-"		01  BiDir",
-"		02  ECP",
-"		03  IEEE1284",
-"		fe  IEEE1284 Target",
-"	02  Multiport serial controller",
-"	03  Modem",
-"		00  Generic",
-"		01  Hayes/16450",
-"		02  Hayes/16550",
-"		03  Hayes/16650",
-"		04  Hayes/16750",
-"	80  Communication controller",
-"C 08  Generic system peripheral",
-"	00  PIC",
-"		00  8259",
-"		01  ISA PIC",
-"		02  EISA PIC",
-"		10  IO-APIC",
-"		20  IO(X)-APIC",
-"	01  DMA controller",
-"		00  8237",
-"		01  ISA DMA",
-"		02  EISA DMA",
-"	02  Timer",
-"		00  8254",
-"		01  ISA Timer",
-"		02  EISA Timers",
-"	03  RTC",
-"		00  Generic",
-"		01  ISA RTC",
-"	04  PCI Hot-plug controller",
-"	80  System peripheral",
-"C 09  Input device controller",
-"	00  Keyboard controller",
-"	01  Digitizer Pen",
-"	02  Mouse controller",
-"	03  Scanner controller",
-"	04  Gameport controller",
-"		00  Generic",
-"		10  Extended",
-"	80  Input device controller",
-"C 0a  Docking station",
-"	00  Generic Docking Station",
-"	80  Docking Station",
-"C 0b  Processor",
-"	00  386",
-"	01  486",
-"	02  Pentium",
-"	10  Alpha",
-"	20  Power PC",
-"	30  MIPS",
-"	40  Co-processor",
-"C 0c  Serial bus controller",
-"	00  FireWire (IEEE 1394)",
-"		00  Generic",
-"		10  OHCI",
-"	01  ACCESS Bus",
-"	02  SSA",
-"	03  USB Controller",
-"		00  UHCI",
-"		10  OHCI",
-"		20  EHCI",
-"		80  Unspecified",
-"		fe  USB Device",
-"	04  Fibre Channel",
-"	05  SMBus",
-"	06  InfiniBand",
-"C 0d  Wireless controller",
-"	00  IRDA controller",
-"	01  Consumer IR controller",
-"	10  RF controller",
-"	80  Wireless controller",
-"C 0e  Intelligent controller",
-"	00  I2O",
-"C 0f  Satellite communications controller",
-"	00  Satellite TV controller",
-"	01  Satellite audio communication controller",
-"	03  Satellite voice communication controller",
-"	04  Satellite data communication controller",
-"C 10  Encryption controller",
-"	00  Network and computing encryption device",
-"	10  Entertainment encryption device",
-"	80  Encryption controller",
-"C 11  Signal processing controller",
-"	00  DPIO module",
-"	01  Performance counters",
-"	10  Communication synchronizer",
-"	80  Signal processing controller",
-""
-};
Index: uspace/srv/pci/libpci/sysdep.h
===================================================================
--- uspace/srv/pci/libpci/sysdep.h	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,26 +1,0 @@
-/*
- *	The PCI Library -- System-Dependent Stuff
- *
- *	Copyright (c) 1997--2004 Martin Mares <mj@ucw.cz>
- *
- *	May 8, 2006 - Modified and ported to HelenOS by Jakub Jermar.
- *
- *	Can be freely distributed and used under the terms of the GNU GPL.
- */
-
-#ifdef __GNUC__
-#define UNUSED __attribute__((unused))
-#define NONRET __attribute__((noreturn))
-#else
-#define UNUSED
-#define NONRET
-#define inline
-#endif
-
-typedef u8 byte;
-typedef u16 word;
-
-#define cpu_to_le16(x) (x)
-#define cpu_to_le32(x) (x)
-#define le16_to_cpu(x) (x)
-#define le32_to_cpu(x) (x)
Index: uspace/srv/pci/libpci/types.h
===================================================================
--- uspace/srv/pci/libpci/types.h	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,49 +1,0 @@
-/*
- *	The PCI Library -- Types and Format Strings
- *
- *	Copyright (c) 1997--2005 Martin Mares <mj@ucw.cz>
- *
- *	May 8, 2006 - Modified and ported to HelenOS by Jakub Jermar.
- *
- *	Can be freely distributed and used under the terms of the GNU GPL.
- */
-
-#include <sys/types.h>
-
-#ifndef PCI_HAVE_Uxx_TYPES
-
-typedef uint8_t u8;
-typedef uint16_t u16;
-typedef uint32_t u32;
-
-#ifdef PCI_HAVE_64BIT_ADDRESS
-#include <limits.h>
-#if ULONG_MAX > 0xffffffff
-typedef unsigned long u64;
-#define PCI_U64_FMT "l"
-#else
-typedef unsigned long long u64;
-#define PCI_U64_FMT "ll"
-#endif
-#endif
-
-#endif				/* PCI_HAVE_Uxx_TYPES */
-
-#ifdef PCI_HAVE_64BIT_ADDRESS
-typedef u64 pciaddr_t;
-#define PCIADDR_T_FMT "%08" PCI_U64_FMT "x"
-#define PCIADDR_PORT_FMT "%04" PCI_U64_FMT "x"
-#else
-typedef u32 pciaddr_t;
-#define PCIADDR_T_FMT "%08x"
-#define PCIADDR_PORT_FMT "%04x"
-#endif
-
-#ifdef PCI_ARCH_SPARC64
-/* On sparc64 Linux the kernel reports remapped port addresses and IRQ numbers */
-#undef PCIADDR_PORT_FMT
-#define PCIADDR_PORT_FMT PCIADDR_T_FMT
-#define PCIIRQ_FMT "%08x"
-#else
-#define PCIIRQ_FMT "%d"
-#endif
Index: uspace/srv/pci/pci.c
===================================================================
--- uspace/srv/pci/pci.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,88 +1,0 @@
-/*
- * HelenOS PCI driver.
- *
- * (Based on public domain libpci example.c written by Martin Mares.)
- * Copyright (c) 2006 Jakub Jermar
- *
- * Can be freely distributed and used under the terms of the GNU GPL.
- */
-
-/**
- * @addtogroup pci
- * @{
- */
-
-#include <stdio.h>
-#include <ddi.h>
-#include <task.h>
-#include <stdlib.h>
-#include <ipc/ipc.h>
-#include <ipc/services.h>
-#include <errno.h>
-
-#include "libpci/pci.h"
-
-#define PCI_CONF1	0xcf8
-#define PCI_CONF1_SIZE	8
-
-#define NAME		"PCI"
-
-static struct pci_access *pacc;
-
-int main(int argc, char *argv[])
-{
-	struct pci_dev *dev;
-	unsigned int c;
-	char buf[80];
-	ipcarg_t ns_in_phone_hash;
-
-	printf("%s: HelenOS PCI driver\n", NAME);
-
-	/*
-	 * Gain control over PCI configuration ports.
-	 */
-	iospace_enable(task_get_id(), (void *) PCI_CONF1, PCI_CONF1_SIZE);
-
-	pacc = pci_alloc();           /* Get the pci_access structure */
-	pci_init(pacc);               /* Initialize the PCI library */
-	pci_scan_bus(pacc);           /* We want to get the list of devices */
-	for(dev=pacc->devices; dev; dev=dev->next) {   /* Iterate over all devices */
-		pci_fill_info(dev, PCI_FILL_IDENT | PCI_FILL_BASES | PCI_FILL_IRQ);
-		c = pci_read_word(dev, PCI_CLASS_DEVICE); /* Read config register directly */
-		printf("%02x:%02x.%d vendor=%04x device=%04x class=%04x irq=%d base0=%lx\n",
-			dev->bus, dev->dev, dev->func, dev->vendor_id, dev->device_id,
-			c, dev->irq, dev->base_addr[0]);
-		printf("\t%s\n", pci_lookup_name(pacc, buf, sizeof(buf), PCI_LOOKUP_VENDOR | PCI_LOOKUP_DEVICE,
-			dev->vendor_id, dev->device_id));
-	}
-
-	printf("%s: registering at naming service.\n", NAME);
-	if (ipc_connect_to_me(PHONE_NS, SERVICE_PCI, 0, 0, &ns_in_phone_hash) != 0) {
-		printf("Failed to register %s at naming service.\n", NAME);
-		return -1;
-	}
-
-	printf("%s: accepting connections\n", NAME);
-	while (1) {		
-		ipc_call_t call;
-		ipc_callid_t callid;
-		ipcarg_t retval = ENOTSUP;
-
-		callid = ipc_wait_for_call(&call);
-		switch(IPC_GET_METHOD(call)) {
-		case IPC_M_CONNECT_ME_TO:
-			retval = EOK;
-			break;
-		}
-		ipc_answer_0(callid, retval);
-		printf("%s: received call from %lX\n", NAME,
-		    call.in_phone_hash);
-	}
-
-	pci_cleanup(pacc);
-	return 0;
-}
-
-/**
- * @}
- */
Index: uspace/srv/pci/update-ids
===================================================================
--- uspace/srv/pci/update-ids	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ 	(revision )
@@ -1,16 +1,0 @@
-#! /bin/bash
-
-wget -O pci.ids http://pciids.sourceforge.net/v2.2/pci.ids
-
-cat > pci_ids.h <<EOF
-/* DO NOT EDIT, THIS FILE IS AUTOMATICALLY GENERATED */
-char *pci_ids[] = {
-EOF
-
-cat pci.ids | grep -v '^#.*' | grep -v '^$' | tr \" \' | \
-    sed -n 's/\(.*\)/"\1",/p' | sed 's/?/\\?/g' >> pci_ids.h
-
-cat >> pci_ids.h <<EOF
-""
-};
-EOF
Index: uspace/srv/vfs/Makefile
===================================================================
--- uspace/srv/vfs/Makefile	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/vfs/Makefile	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -34,7 +34,7 @@
 all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
 
 clean:
-	rm -f $(DEPEND) $(DEPEND_PREV) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
+	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(OUTPUT).map $(OUTPUT).disasm
 	find . -name '*.o' -follow -exec rm \{\} \;
Index: uspace/srv/vfs/Makefile.build
===================================================================
--- uspace/srv/vfs/Makefile.build	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/vfs/Makefile.build	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -61,4 +61,7 @@
 %.o: %.c $(DEPEND)
 	$(CC) $(DEFS) $(CFLAGS) -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS)
+endif
 
 $(DEPEND):
Index: uspace/srv/vfs/Makefile.common
===================================================================
--- uspace/srv/vfs/Makefile.common	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/vfs/Makefile.common	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -37,3 +37,4 @@
 DEPEND = Makefile.depend
 DEPEND_PREV = $(DEPEND).prev
+JOB = vfs.job
 OUTPUT = vfs
Index: uspace/srv/vfs/vfs_ops.c
===================================================================
--- uspace/srv/vfs/vfs_ops.c	(revision 405f7599e6313c421a16c96d2a71c715c1b5188b)
+++ uspace/srv/vfs/vfs_ops.c	(revision 070e05aa939a4cbaed698ba35f5d2f7a7efee35c)
@@ -900,4 +900,5 @@
 		}
 		newpos = size + off;
+		file->pos = newpos;
 		fibril_mutex_unlock(&file->lock);
 		ipc_answer_1(rid, EOK, newpos);
