6608681 PSARC/2007/173 kiconv - framework and kiconv_emea (phase 1)
authoris
Tue, 09 Oct 2007 16:46:51 -0700
changeset 5206 34f0b41fc3c5
parent 5205 1b502c1a7aeb
child 5207 efec22d024fa
6608681 PSARC/2007/173 kiconv - framework and kiconv_emea (phase 1)
usr/src/pkgdefs/SUNWckr/prototype_com
usr/src/pkgdefs/SUNWckr/prototype_i386
usr/src/pkgdefs/SUNWckr/prototype_sparc
usr/src/pkgdefs/etc/exception_list_i386
usr/src/pkgdefs/etc/exception_list_sparc
usr/src/tools/opensolaris/license-list
usr/src/uts/Makefile.targ
usr/src/uts/Makefile.uts
usr/src/uts/common/Makefile.files
usr/src/uts/common/Makefile.rules
usr/src/uts/common/disp/thread.c
usr/src/uts/common/kiconv/kiconv_emea/kiconv_emea.c
usr/src/uts/common/os/kiconv.c
usr/src/uts/common/os/modconf.c
usr/src/uts/common/sys/Makefile
usr/src/uts/common/sys/THIRDPARTYLICENSE.icu
usr/src/uts/common/sys/THIRDPARTYLICENSE.icu.descrip
usr/src/uts/common/sys/kiconv.h
usr/src/uts/common/sys/kiconv_emea1.h
usr/src/uts/common/sys/kiconv_emea2.h
usr/src/uts/common/sys/kiconv_latin1.h
usr/src/uts/common/sys/modctl.h
usr/src/uts/common/sys/sunddi.h
usr/src/uts/intel/Makefile.intel.shared
usr/src/uts/intel/kiconv_emea/Makefile
usr/src/uts/sparc/Makefile.sparc.shared
usr/src/uts/sparc/kiconv_emea/Makefile
--- a/usr/src/pkgdefs/SUNWckr/prototype_com	Tue Oct 09 16:33:09 2007 -0700
+++ b/usr/src/pkgdefs/SUNWckr/prototype_com	Tue Oct 09 16:46:51 2007 -0700
@@ -142,3 +142,4 @@
 f manifest var/svc/manifest/system/intrd.xml 0444 root sys
 f manifest var/svc/manifest/system/scheduler.xml 0444 root sys
 d none kernel/devname 755 root sys
+d none kernel/kiconv 755 root sys
--- a/usr/src/pkgdefs/SUNWckr/prototype_i386	Tue Oct 09 16:33:09 2007 -0700
+++ b/usr/src/pkgdefs/SUNWckr/prototype_i386	Tue Oct 09 16:46:51 2007 -0700
@@ -450,3 +450,6 @@
 l none kernel/sys/amd64/rpcmod=../../../kernel/strmod/amd64/rpcmod
 f none kernel/sys/amd64/semsys 755 root sys
 f none kernel/sys/amd64/shmsys 755 root sys
+f none kernel/kiconv/kiconv_emea 755 root sys
+d none kernel/kiconv/amd64 755 root sys
+f none kernel/kiconv/amd64/kiconv_emea 755 root sys
--- a/usr/src/pkgdefs/SUNWckr/prototype_sparc	Tue Oct 09 16:33:09 2007 -0700
+++ b/usr/src/pkgdefs/SUNWckr/prototype_sparc	Tue Oct 09 16:46:51 2007 -0700
@@ -253,3 +253,5 @@
 f none kernel/sys/sparcv9/shmsys 755 root sys
 d none kernel/devname/sparcv9 755 root sys
 f none kernel/devname/sparcv9/sdev_nsconfig_mod 755 root sys
+d none kernel/kiconv/sparcv9 755 root sys
+f none kernel/kiconv/sparcv9/kiconv_emea 755 root sys
--- a/usr/src/pkgdefs/etc/exception_list_i386	Tue Oct 09 16:33:09 2007 -0700
+++ b/usr/src/pkgdefs/etc/exception_list_i386	Tue Oct 09 16:46:51 2007 -0700
@@ -884,3 +884,10 @@
 usr/include/sqlite			i386
 usr/include/sqlite/sqlite-misc.h	i386
 usr/include/sqlite/sqlite.h		i386
+#
+# Private/Internal kiconv header files. Do not ship.
+#
+usr/include/sys/kiconv.h		i386
+usr/include/sys/kiconv_emea1.h		i386
+usr/include/sys/kiconv_emea2.h		i386
+usr/include/sys/kiconv_latin1.h		i386
--- a/usr/src/pkgdefs/etc/exception_list_sparc	Tue Oct 09 16:33:09 2007 -0700
+++ b/usr/src/pkgdefs/etc/exception_list_sparc	Tue Oct 09 16:46:51 2007 -0700
@@ -971,3 +971,10 @@
 usr/include/sqlite			sparc
 usr/include/sqlite/sqlite-misc.h	sparc
 usr/include/sqlite/sqlite.h		sparc
+#
+# Private/Internal kiconv header files. Do not ship.
+#
+usr/include/sys/kiconv.h		sparc
+usr/include/sys/kiconv_emea1.h		sparc
+usr/include/sys/kiconv_emea2.h		sparc
+usr/include/sys/kiconv_latin1.h		sparc
--- a/usr/src/tools/opensolaris/license-list	Tue Oct 09 16:33:09 2007 -0700
+++ b/usr/src/tools/opensolaris/license-list	Tue Oct 09 16:46:51 2007 -0700
@@ -115,6 +115,7 @@
 usr/src/uts/common/io/mxfe/THIRDPARTYLICENSE
 usr/src/uts/common/io/wpi/fw-wpi/LICENSE
 usr/src/uts/common/sys/THIRDPARTYLICENSE.agpgart
+usr/src/uts/common/sys/THIRDPARTYLICENSE.icu
 usr/src/uts/common/sys/THIRDPARTYLICENSE.unicode
 usr/src/uts/common/sys/i2o/THIRDPARTYLICENSE
 usr/src/uts/common/zmod/THIRDPARTYLICENSE
--- a/usr/src/uts/Makefile.targ	Tue Oct 09 16:33:09 2007 -0700
+++ b/usr/src/uts/Makefile.targ	Tue Oct 09 16:46:51 2007 -0700
@@ -233,6 +233,9 @@
 $(USR_DEVNAME_DIR)/%:	$(OBJS_DIR)/% $(USR_DEVNAME_DIR) FRC
 	$(INS.file)
 
+$(ROOT_KICONV_DIR)/%:	$(OBJS_DIR)/% $(ROOT_KICONV_DIR) FRC
+	$(INS.file)
+
 include $(SRC)/Makefile.psm.targ
 
 #
--- a/usr/src/uts/Makefile.uts	Tue Oct 09 16:33:09 2007 -0700
+++ b/usr/src/uts/Makefile.uts	Tue Oct 09 16:46:51 2007 -0700
@@ -435,6 +435,7 @@
 ROOT_CRYPTO_DIR_32	= $(ROOT_MOD_DIR)/crypto
 ROOT_MAC_DIR_32		= $(ROOT_MOD_DIR)/mac
 ROOT_DEVNAME_DIR_32	= $(ROOT_MOD_DIR)/devname
+ROOT_KICONV_DIR_32	= $(ROOT_MOD_DIR)/kiconv
 
 ROOT_KERN_DIR_64	= $(ROOT_MOD_DIR)/$(SUBDIR64)
 ROOT_BRAND_DIR_64	= $(ROOT_MOD_DIR)/brand/$(SUBDIR64)
@@ -458,6 +459,7 @@
 ROOT_CRYPTO_DIR_64	= $(ROOT_MOD_DIR)/crypto/$(SUBDIR64)
 ROOT_MAC_DIR_64		= $(ROOT_MOD_DIR)/mac/$(SUBDIR64)
 ROOT_DEVNAME_DIR_64	= $(ROOT_MOD_DIR)/devname/$(SUBDIR64)
+ROOT_KICONV_DIR_64	= $(ROOT_MOD_DIR)/kiconv/$(SUBDIR64)
 
 ROOT_KERN_DIR		= $(ROOT_KERN_DIR_$(CLASS))
 ROOT_BRAND_DIR		= $(ROOT_BRAND_DIR_$(CLASS))
@@ -481,6 +483,7 @@
 ROOT_CRYPTO_DIR		= $(ROOT_CRYPTO_DIR_$(CLASS))
 ROOT_MAC_DIR		= $(ROOT_MAC_DIR_$(CLASS))
 ROOT_DEVNAME_DIR	= $(ROOT_DEVNAME_DIR_$(CLASS))
+ROOT_KICONV_DIR		= $(ROOT_KICONV_DIR_$(CLASS))
 
 ROOT_MOD_DIRS_32	= $(ROOT_BRAND_DIR_32) $(ROOT_DRV_DIR_32)
 ROOT_MOD_DIRS_32	= $(ROOT_BRAND_DIR_32) $(ROOT_DRV_DIR_32)
@@ -494,7 +497,7 @@
 ROOT_MOD_DIRS_32	+= $(ROOT_CPU_DIR_32) $(ROOT_FONT_DIR_32)
 ROOT_MOD_DIRS_32	+= $(ROOT_TOD_DIR_32) $(ROOT_DACF_DIR_32)
 ROOT_MOD_DIRS_32	+= $(ROOT_CRYPTO_DIR_32) $(ROOT_MAC_DIR_32)
-ROOT_MOD_DIRS_32	+= $(ROOT_DEVNAME_DIR_32)
+ROOT_MOD_DIRS_32	+= $(ROOT_DEVNAME_DIR_32) $(ROOT_KICONV_DIR_32)
 
 USR_MOD_DIR		= $(ROOT)/usr/kernel
 
@@ -585,7 +588,7 @@
 		 $(MMU_KMODS) $(DACF_KMODS) $(EXPORT_KMODS) $(IPP_KMODS) \
 		 $(CRYPTO_KMODS) $(CRYPTO_EK_KMODS) $(PCBE_KMODS) \
 		 $(DRV_KMODS_$(CLASS)) $(MISC_KMODS_$(CLASS)) $(MAC_KMODS) \
-		 $(DEVNAME_KMODS) $(BRAND_KMODS)
+		 $(DEVNAME_KMODS) $(BRAND_KMODS) $(KICONV_KMODS)
 
 KMODS = $(GENUNIX_KMODS) $(PARALLEL_KMODS)
 
@@ -600,7 +603,7 @@
 	  $(MACH_KMODS) $(GSS_KMODS) $(DACF_KMODS) $(IPP_KMODS) \
 	  $(CRYPTO_KMODS) $(PCBE_KMODS) $(DEVNAME_KMODS) \
 	  $(DRV_KMODS_$(CLASS)) $(MISC_KMODS_$(CLASS)) $(MAC_KMODS) \
-	  $(BRAND_KMODS)
+	  $(BRAND_KMODS) $(KICONV_KMODS)
 
 $(CLOSED_BUILD)CLOSED_LINT_KMODS = $(CLOSED_DRV_KMODS) $(CLOSED_TOD_KMODS) \
 	  $(CLOSED_MISC_KMODS) $(CLOSED_DRV_KMODS_$(CLASS))
--- a/usr/src/uts/common/Makefile.files	Tue Oct 09 16:33:09 2007 -0700
+++ b/usr/src/uts/common/Makefile.files	Tue Oct 09 16:46:51 2007 -0700
@@ -175,6 +175,7 @@
 		ioctl.o		\
 		issetugid.o	\
 		ippconf.o	\
+		kiconv.o	\
 		kdi.o		\
 		kcpc.o		\
 		kmem.o		\
@@ -1430,3 +1431,8 @@
 
 NXGE_HCALL_OBJS =	\
 		nxge_hcall.o
+
+#
+#	kiconv modules
+#
+KICONV_EMEA_OBJS += kiconv_emea.o
--- a/usr/src/uts/common/Makefile.rules	Tue Oct 09 16:33:09 2007 -0700
+++ b/usr/src/uts/common/Makefile.rules	Tue Oct 09 16:46:51 2007 -0700
@@ -871,6 +871,10 @@
 	$(COMPILE.c) -o $@ $<
 	$(CTFCONVERT_O)
 
+$(OBJS_DIR)/%.o:		$(UTSBASE)/common/kiconv/kiconv_emea/%.c
+	$(COMPILE.c) -o $@ $<
+	$(CTFCONVERT_O)
+
 $(OBJS_DIR)/%.o:		$(UTSBASE)/common/kmdb/%.c
 	$(COMPILE.c) -o $@ $<
 	$(CTFCONVERT_O)
@@ -1619,6 +1623,9 @@
 $(LINTS_DIR)/%.ln:		$(UTSBASE)/common/ipp/meters/%.c
 	@($(LHEAD) $(LINT.c) $< $(LTAIL))
 
+$(LINTS_DIR)/%.ln:		$(UTSBASE)/common/kiconv/kiconv_emea/%.c
+	@($(LHEAD) $(LINT.c) $< $(LTAIL))
+
 $(LINTS_DIR)/%.ln:		$(UTSBASE)/common/kmdb/%.c
 	@($(LHEAD) $(LINT.c) $< $(LTAIL))
 
--- a/usr/src/uts/common/disp/thread.c	Tue Oct 09 16:33:09 2007 -0700
+++ b/usr/src/uts/common/disp/thread.c	Tue Oct 09 16:46:51 2007 -0700
@@ -73,6 +73,7 @@
 #include <sys/kdi.h>
 #include <sys/waitq.h>
 #include <sys/cpucaps.h>
+#include <sys/kiconv.h>
 
 struct kmem_cache *thread_cache;	/* cache of free threads */
 struct kmem_cache *lwp_cache;		/* cache of free lwps */
@@ -199,6 +200,7 @@
 	zone_init();
 	project_init();
 	brand_init();
+	kiconv_init();
 	task_init();
 	tcache_init();
 	pool_init();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usr/src/uts/common/kiconv/kiconv_emea/kiconv_emea.c	Tue Oct 09 16:46:51 2007 -0700
@@ -0,0 +1,1815 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+/*
+ * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#pragma ident	"%Z%%M%	%I%	%E% SMI"
+
+/*
+ * Kernel iconv code conversion module (kiconv_emea) for Europe, Middle East,
+ * and South East Asia (PSARC/2007/173).
+ */
+
+#include <sys/types.h>
+#include <sys/param.h>
+#include <sys/sysmacros.h>
+#include <sys/systm.h>
+#include <sys/debug.h>
+#include <sys/kmem.h>
+#include <sys/cmn_err.h>
+#include <sys/ddi.h>
+#include <sys/sunddi.h>
+#include <sys/ksynch.h>
+#include <sys/modctl.h>
+#include <sys/byteorder.h>
+#include <sys/errno.h>
+#include <sys/kiconv.h>
+#include <sys/kiconv_emea1.h>
+#include <sys/kiconv_emea2.h>
+
+
+/*
+ * The following macros indicate ids to the correct code conversion mapping
+ * data tables to use. The actual tables are coming from <sys/kiconv_emea1.h>
+ * and <sys/kiconv_emea2.h>. If you update the header files, then, you might
+ * also need to update the table ids at below.
+ *
+ * The table for KICONV_TBLID_720 is a special case and should come from
+ * a separate header file than others at <sys/kiconv_emea1.h> hence it has
+ * an id that is rather unusual distinguishing itself from others. (And,
+ * the ids much be of uint8_t.)
+ */
+#define	KICONV_TBLID_720		(0xFFU)
+#define	KICONV_TBLID_RANGE1_START	KICONV_TBLID_720
+#define	KICONV_TBLID_RANGE1_END		KICONV_TBLID_720
+
+#define	KICONV_TBLID_737		(0)
+#define	KICONV_TBLID_852		(1)
+#define	KICONV_TBLID_857		(2)
+#define	KICONV_TBLID_862		(3)
+#define	KICONV_TBLID_866		(4)
+#define	KICONV_TBLID_1250		(5)
+#define	KICONV_TBLID_1251		(6)
+#define	KICONV_TBLID_1253		(7)
+#define	KICONV_TBLID_1254		(8)
+#define	KICONV_TBLID_1255		(9)
+#define	KICONV_TBLID_1256		(10)
+#define	KICONV_TBLID_1257		(11)
+#define	KICONV_TBLID_8859_2		(12)
+#define	KICONV_TBLID_8859_3		(13)
+#define	KICONV_TBLID_8859_4		(14)
+#define	KICONV_TBLID_8859_5		(15)
+#define	KICONV_TBLID_8859_6		(16)
+#define	KICONV_TBLID_8859_7		(17)
+#define	KICONV_TBLID_8859_8		(18)
+#define	KICONV_TBLID_8859_9		(19)
+#define	KICONV_TBLID_8859_10		(20)
+#define	KICONV_TBLID_8859_11		(21)
+#define	KICONV_TBLID_8859_13		(22)
+#define	KICONV_TBLID_KOI8_R		(23)
+
+#define	KICONV_MAX_MAPPING_TBLID	KICONV_TBLID_KOI8_R
+
+/*
+ * The following tables are coming from u8_textprep.c. We use them to
+ * check on validity of UTF-8 characters and their bytes.
+ */
+extern const int8_t u8_number_of_bytes[];
+extern const uint8_t u8_valid_min_2nd_byte[];
+extern const uint8_t u8_valid_max_2nd_byte[];
+
+
+/*
+ * The following 25 open_to_xxxx() functions are kiconv_open functions for
+ * the conversions from UTF-8 to xxxx single byte codesets.
+ */
+static void *
+open_to_720()
+{
+	kiconv_state_t s;
+
+	s = (kiconv_state_t)kmem_alloc(sizeof (kiconv_state_data_t), KM_SLEEP);
+	s->id = KICONV_TBLID_720;
+	s->bom_processed = 0;
+
+	return ((void *)s);
+}
+
+static void *
+open_to_737()
+{
+	kiconv_state_t s;
+
+	s = (kiconv_state_t)kmem_alloc(sizeof (kiconv_state_data_t), KM_SLEEP);
+	s->id = KICONV_TBLID_737;
+	s->bom_processed = 0;
+
+	return ((void *)s);
+}
+
+static void *
+open_to_852()
+{
+	kiconv_state_t s;
+
+	s = (kiconv_state_t)kmem_alloc(sizeof (kiconv_state_data_t), KM_SLEEP);
+	s->id = KICONV_TBLID_852;
+	s->bom_processed = 0;
+
+	return ((void *)s);
+}
+
+static void *
+open_to_857()
+{
+	kiconv_state_t s;
+
+	s = (kiconv_state_t)kmem_alloc(sizeof (kiconv_state_data_t), KM_SLEEP);
+	s->id = KICONV_TBLID_857;
+	s->bom_processed = 0;
+
+	return ((void *)s);
+}
+
+static void *
+open_to_862()
+{
+	kiconv_state_t s;
+
+	s = (kiconv_state_t)kmem_alloc(sizeof (kiconv_state_data_t), KM_SLEEP);
+	s->id = KICONV_TBLID_862;
+	s->bom_processed = 0;
+
+	return ((void *)s);
+}
+
+static void *
+open_to_866()
+{
+	kiconv_state_t s;
+
+	s = (kiconv_state_t)kmem_alloc(sizeof (kiconv_state_data_t), KM_SLEEP);
+	s->id = KICONV_TBLID_866;
+	s->bom_processed = 0;
+
+	return ((void *)s);
+}
+
+static void *
+open_to_1250()
+{
+	kiconv_state_t s;
+
+	s = (kiconv_state_t)kmem_alloc(sizeof (kiconv_state_data_t), KM_SLEEP);
+	s->id = KICONV_TBLID_1250;
+	s->bom_processed = 0;
+
+	return ((void *)s);
+}
+
+static void *
+open_to_1251()
+{
+	kiconv_state_t s;
+
+	s = (kiconv_state_t)kmem_alloc(sizeof (kiconv_state_data_t), KM_SLEEP);
+	s->id = KICONV_TBLID_1251;
+	s->bom_processed = 0;
+
+	return ((void *)s);
+}
+
+static void *
+open_to_1253()
+{
+	kiconv_state_t s;
+
+	s = (kiconv_state_t)kmem_alloc(sizeof (kiconv_state_data_t), KM_SLEEP);
+	s->id = KICONV_TBLID_1253;
+	s->bom_processed = 0;
+
+	return ((void *)s);
+}
+
+static void *
+open_to_1254()
+{
+	kiconv_state_t s;
+
+	s = (kiconv_state_t)kmem_alloc(sizeof (kiconv_state_data_t), KM_SLEEP);
+	s->id = KICONV_TBLID_1254;
+	s->bom_processed = 0;
+
+	return ((void *)s);
+}
+
+static void *
+open_to_1255()
+{
+	kiconv_state_t s;
+
+	s = (kiconv_state_t)kmem_alloc(sizeof (kiconv_state_data_t), KM_SLEEP);
+	s->id = KICONV_TBLID_1255;
+	s->bom_processed = 0;
+
+	return ((void *)s);
+}
+
+static void *
+open_to_1256()
+{
+	kiconv_state_t s;
+
+	s = (kiconv_state_t)kmem_alloc(sizeof (kiconv_state_data_t), KM_SLEEP);
+	s->id = KICONV_TBLID_1256;
+	s->bom_processed = 0;
+
+	return ((void *)s);
+}
+
+static void *
+open_to_1257()
+{
+	kiconv_state_t s;
+
+	s = (kiconv_state_t)kmem_alloc(sizeof (kiconv_state_data_t), KM_SLEEP);
+	s->id = KICONV_TBLID_1257;
+	s->bom_processed = 0;
+
+	return ((void *)s);
+}
+
+static void *
+open_to_88592()
+{
+	kiconv_state_t s;
+
+	s = (kiconv_state_t)kmem_alloc(sizeof (kiconv_state_data_t), KM_SLEEP);
+	s->id = KICONV_TBLID_8859_2;
+	s->bom_processed = 0;
+
+	return ((void *)s);
+}
+
+static void *
+open_to_88593()
+{
+	kiconv_state_t s;
+
+	s = (kiconv_state_t)kmem_alloc(sizeof (kiconv_state_data_t), KM_SLEEP);
+	s->id = KICONV_TBLID_8859_3;
+	s->bom_processed = 0;
+
+	return ((void *)s);
+}
+
+static void *
+open_to_88594()
+{
+	kiconv_state_t s;
+
+	s = (kiconv_state_t)kmem_alloc(sizeof (kiconv_state_data_t), KM_SLEEP);
+	s->id = KICONV_TBLID_8859_4;
+	s->bom_processed = 0;
+
+	return ((void *)s);
+}
+
+static void *
+open_to_88595()
+{
+	kiconv_state_t s;
+
+	s = (kiconv_state_t)kmem_alloc(sizeof (kiconv_state_data_t), KM_SLEEP);
+	s->id = KICONV_TBLID_8859_5;
+	s->bom_processed = 0;
+
+	return ((void *)s);
+}
+
+static void *
+open_to_88596()
+{
+	kiconv_state_t s;
+
+	s = (kiconv_state_t)kmem_alloc(sizeof (kiconv_state_data_t), KM_SLEEP);
+	s->id = KICONV_TBLID_8859_6;
+	s->bom_processed = 0;
+
+	return ((void *)s);
+}
+
+static void *
+open_to_88597()
+{
+	kiconv_state_t s;
+
+	s = (kiconv_state_t)kmem_alloc(sizeof (kiconv_state_data_t), KM_SLEEP);
+	s->id = KICONV_TBLID_8859_7;
+	s->bom_processed = 0;
+
+	return ((void *)s);
+}
+
+static void *
+open_to_88598()
+{
+	kiconv_state_t s;
+
+	s = (kiconv_state_t)kmem_alloc(sizeof (kiconv_state_data_t), KM_SLEEP);
+	s->id = KICONV_TBLID_8859_8;
+	s->bom_processed = 0;
+
+	return ((void *)s);
+}
+
+static void *
+open_to_88599()
+{
+	kiconv_state_t s;
+
+	s = (kiconv_state_t)kmem_alloc(sizeof (kiconv_state_data_t), KM_SLEEP);
+	s->id = KICONV_TBLID_8859_9;
+	s->bom_processed = 0;
+
+	return ((void *)s);
+}
+
+static void *
+open_to_885910()
+{
+	kiconv_state_t s;
+
+	s = (kiconv_state_t)kmem_alloc(sizeof (kiconv_state_data_t), KM_SLEEP);
+	s->id = KICONV_TBLID_8859_10;
+	s->bom_processed = 0;
+
+	return ((void *)s);
+}
+
+static void *
+open_to_885911()
+{
+	kiconv_state_t s;
+
+	s = (kiconv_state_t)kmem_alloc(sizeof (kiconv_state_data_t), KM_SLEEP);
+	s->id = KICONV_TBLID_8859_11;
+	s->bom_processed = 0;
+
+	return ((void *)s);
+}
+
+static void *
+open_to_885913()
+{
+	kiconv_state_t s;
+
+	s = (kiconv_state_t)kmem_alloc(sizeof (kiconv_state_data_t), KM_SLEEP);
+	s->id = KICONV_TBLID_8859_13;
+	s->bom_processed = 0;
+
+	return ((void *)s);
+}
+
+static void *
+open_to_koi8r()
+{
+	kiconv_state_t s;
+
+	s = (kiconv_state_t)kmem_alloc(sizeof (kiconv_state_data_t), KM_SLEEP);
+	s->id = KICONV_TBLID_KOI8_R;
+	s->bom_processed = 0;
+
+	return ((void *)s);
+}
+
+/*
+ * The following 25 open_fr_xxxx() functions are kiconv_open functions for
+ * the conversions from xxxx single byte codeset to UTF-8.
+ */
+static void *
+open_fr_720()
+{
+	return ((void *)KICONV_TBLID_720);
+}
+
+static void *
+open_fr_737()
+{
+	return ((void *)KICONV_TBLID_737);
+}
+
+static void *
+open_fr_852()
+{
+	return ((void *)KICONV_TBLID_852);
+}
+
+static void *
+open_fr_857()
+{
+	return ((void *)KICONV_TBLID_857);
+}
+
+static void *
+open_fr_862()
+{
+	return ((void *)KICONV_TBLID_862);
+}
+
+static void *
+open_fr_866()
+{
+	return ((void *)KICONV_TBLID_866);
+}
+
+static void *
+open_fr_1250()
+{
+	return ((void *)KICONV_TBLID_1250);
+}
+
+static void *
+open_fr_1251()
+{
+	return ((void *)KICONV_TBLID_1251);
+}
+
+static void *
+open_fr_1253()
+{
+	return ((void *)KICONV_TBLID_1253);
+}
+
+static void *
+open_fr_1254()
+{
+	return ((void *)KICONV_TBLID_1254);
+}
+
+static void *
+open_fr_1255()
+{
+	return ((void *)KICONV_TBLID_1255);
+}
+
+static void *
+open_fr_1256()
+{
+	return ((void *)KICONV_TBLID_1256);
+}
+
+static void *
+open_fr_1257()
+{
+	return ((void *)KICONV_TBLID_1257);
+}
+
+static void *
+open_fr_88592()
+{
+	return ((void *)KICONV_TBLID_8859_2);
+}
+
+static void *
+open_fr_88593()
+{
+	return ((void *)KICONV_TBLID_8859_3);
+}
+
+static void *
+open_fr_88594()
+{
+	return ((void *)KICONV_TBLID_8859_4);
+}
+
+static void *
+open_fr_88595()
+{
+	return ((void *)KICONV_TBLID_8859_5);
+}
+
+static void *
+open_fr_88596()
+{
+	return ((void *)KICONV_TBLID_8859_6);
+}
+
+static void *
+open_fr_88597()
+{
+	return ((void *)KICONV_TBLID_8859_7);
+}
+
+static void *
+open_fr_88598()
+{
+	return ((void *)KICONV_TBLID_8859_8);
+}
+
+static void *
+open_fr_88599()
+{
+	return ((void *)KICONV_TBLID_8859_9);
+}
+
+static void *
+open_fr_885910()
+{
+	return ((void *)KICONV_TBLID_8859_10);
+}
+
+static void *
+open_fr_885911()
+{
+	return ((void *)KICONV_TBLID_8859_11);
+}
+
+static void *
+open_fr_885913()
+{
+	return ((void *)KICONV_TBLID_8859_13);
+}
+
+static void *
+open_fr_koi8r()
+{
+	return ((void *)KICONV_TBLID_KOI8_R);
+}
+
+/*
+ * The following is the common kiconv_close function for the conversions from
+ * UTF-8 to single byte codesets.
+ */
+static int
+close_to_sb(void *s)
+{
+	if (! s || s == (void *)-1)
+		return (EBADF);
+
+	kmem_free(s, sizeof (kiconv_state_data_t));
+
+	return (0);
+}
+
+/*
+ * The following is the common kiconv_close function for the conversions from
+ * single byte codesets to UTF-8.
+ */
+static int
+close_fr_sb(void *s)
+{
+	if ((ulong_t)s > KICONV_MAX_MAPPING_TBLID &&
+	    ((ulong_t)s < KICONV_TBLID_RANGE1_START ||
+	    (ulong_t)s > KICONV_TBLID_RANGE1_END))
+		return (EBADF);
+
+	return (0);
+}
+
+/*
+ * The following is the common kiconv function for the conversions from
+ * UTF-8 to single byte codesets. (This may look a lot similar to
+ * kiconvstr_to_sb() but they do have different features to cover and
+ * it's not really worth to try to merge them into a single function since
+ * you'll have to add performance penalty for both per each character
+ * conversion as you will have to figure out if this is kiconv_to_sb() or
+ * kiconvstr_to_sb().)
+ */
+static size_t
+kiconv_to_sb(void *kcd, char **inbuf, size_t *inbytesleft, char **outbuf,
+	size_t *outbytesleft, int *errno)
+{
+	kiconv_to_sb_tbl_comp_t *tbl;
+	size_t id;
+	size_t ret_val;
+	uchar_t *ib;
+	uchar_t *oldib;
+	uchar_t *ob;
+	uchar_t *ibtail;
+	uchar_t *obtail;
+	uint32_t u8;
+	size_t i;
+	size_t l;
+	size_t h;
+	size_t init_h;
+	int8_t sz;
+	boolean_t second;
+
+	/* Check on the kiconv code conversion descriptor. */
+	if (! kcd || kcd == (void *)-1) {
+		*errno = EBADF;
+		return ((size_t)-1);
+	}
+
+	/* Get the table id and check on it. */
+	id = ((kiconv_state_t)kcd)->id;
+	if (id > KICONV_MAX_MAPPING_TBLID &&
+	    (id < KICONV_TBLID_RANGE1_START || id > KICONV_TBLID_RANGE1_END)) {
+		*errno = EBADF;
+		return ((size_t)-1);
+	}
+
+	/* If this is a state reset request, process and return. */
+	if (! inbuf || ! (*inbuf)) {
+		((kiconv_state_t)kcd)->bom_processed = 0;
+		return ((size_t)0);
+	}
+
+	ret_val = 0;
+	ib = (uchar_t *)*inbuf;
+	ob = (uchar_t *)*outbuf;
+	ibtail = ib + *inbytesleft;
+	obtail = ob + *outbytesleft;
+
+	/*
+	 * Get the table we want to use and also calculate the "init_h"
+	 * which is the initial high index for the binary search that we will
+	 * use. While the table sizes are all the same at the moment, to be
+	 * ready for future cases where tables could be in different sizes,
+	 * we separately calculate the init_h at here.
+	 */
+	if (id == KICONV_TBLID_720) {
+		tbl = (kiconv_to_sb_tbl_comp_t *)u8_to_cp720_tbl;
+		init_h = sizeof (u8_to_cp720_tbl);
+	} else {
+		tbl = (kiconv_to_sb_tbl_comp_t *)to_sb_tbl[id];
+		init_h = sizeof (to_sb_tbl[id]);
+	}
+	init_h = init_h / sizeof (kiconv_to_sb_tbl_comp_t) - 1;
+
+	/*
+	 * If we haven't checked on the UTF-8 signature BOM character in
+	 * the beginning of the conversion data stream, we check it and if
+	 * find one, we skip it since we have no use for it.
+	 */
+	if (((kiconv_state_t)kcd)->bom_processed == 0 && (ibtail - ib) >= 3 &&
+	    *ib == 0xef && *(ib + 1) == 0xbb && *(ib + 2) == 0xbf)
+			ib += 3;
+	((kiconv_state_t)kcd)->bom_processed = 1;
+
+	while (ib < ibtail) {
+		sz = u8_number_of_bytes[*ib];
+		if (sz <= 0) {
+			*errno = EILSEQ;
+			ret_val = (size_t)-1;
+			break;
+		}
+
+		/*
+		 * If there is no room to write at the output buffer,
+		 * we issue E2BIG and let the caller knows about it.
+		 */
+		if (ob >= obtail) {
+			*errno = E2BIG;
+			ret_val = (size_t)-1;
+			break;
+		}
+
+		/*
+		 * If it is a 7-bit ASCII character, we don't need to
+		 * process further and we just copy the character over.
+		 *
+		 * If not, we collect the character bytes up to four bytes,
+		 * validate the bytes, and binary search for the corresponding
+		 * single byte codeset character byte. If we find it from
+		 * the mapping table, we put that into the output buffer;
+		 * otherwise, we put a replacement character instead as
+		 * a non-identical conversion.
+		 */
+		if (sz == 1) {
+			*ob++ = *ib++;
+			continue;
+		}
+
+		/*
+		 * Issue EINVAL if the last character at the input buffer
+		 * is an incomplete character missing a byte or more.
+		 */
+		if ((ibtail - ib) < sz) {
+			*errno = EINVAL;
+			ret_val = (size_t)-1;
+			break;
+		}
+
+		/*
+		 * We collect UTF-8 character bytes and at the same time,
+		 * check on if the bytes are valid bytes or not. This follows
+		 * the latest UTF-8 byte representation.
+		 */
+		oldib = ib;
+		u8 = *ib++;
+		second = B_TRUE;
+		for (i = 1; i < sz; i++) {
+			if (second) {
+				if (*ib < u8_valid_min_2nd_byte[u8] ||
+				    *ib > u8_valid_max_2nd_byte[u8]) {
+					*errno = EILSEQ;
+					ret_val = (size_t)-1;
+					ib = oldib;
+					goto TO_SB_ILLEGAL_CHAR_ERR;
+				}
+				second = B_FALSE;
+			} else if (*ib < 0x80 || *ib > 0xbf) {
+				*errno = EILSEQ;
+				ret_val = (size_t)-1;
+				ib = oldib;
+				goto TO_SB_ILLEGAL_CHAR_ERR;
+			}
+			u8 = (u8 << 8) | ((uint32_t)*ib);
+			ib++;
+		}
+
+		i = l = 0;
+		h = init_h;
+		while (l <= h) {
+			i = (l + h) / 2;
+			if (tbl[i].u8 == u8)
+				break;
+			else if (tbl[i].u8 < u8)
+				l = i + 1;
+			else
+				h = i - 1;
+		}
+
+		if (tbl[i].u8 == u8) {
+			*ob++ = tbl[i].sb;
+		} else {
+			/*
+			 * What this means is that we encountered
+			 * a non-identical conversion. In other words,
+			 * input buffer contains a valid character in
+			 * the fromcode but the tocode doesn't have
+			 * any character that can be mapped to.
+			 *
+			 * In this case, we insert an ASCII replacement
+			 * character instead at the output buffer and
+			 * count such non-identical conversions by
+			 * increasing the ret_val.
+			 *
+			 * If the return value of the function is bigger
+			 * than zero, that means we had such non-identical
+			 * conversion(s).
+			 */
+			*ob++ = KICONV_ASCII_REPLACEMENT_CHAR;
+			ret_val++;
+		}
+	}
+
+TO_SB_ILLEGAL_CHAR_ERR:
+	*inbuf = (char *)ib;
+	*inbytesleft = ibtail - ib;
+	*outbuf = (char *)ob;
+	*outbytesleft = obtail - ob;
+
+	return (ret_val);
+}
+
+/*
+ * The following is the common kiconv function for the conversions from
+ * single byte codesets to UTf-8.
+ */
+static size_t
+kiconv_fr_sb(void *kcd, char **inbuf, size_t *inbytesleft, char **outbuf,
+	size_t *outbytesleft, int *errno)
+{
+	kiconv_to_utf8_tbl_comp_t *tbl;
+	size_t ret_val;
+	uchar_t *ib;
+	uchar_t *ob;
+	uchar_t *ibtail;
+	uchar_t *obtail;
+	size_t i;
+	size_t k;
+	int8_t sz;
+
+	/* Validate the kiconv code conversion descriptor. */
+	if ((ulong_t)kcd > KICONV_MAX_MAPPING_TBLID &&
+	    ((ulong_t)kcd < KICONV_TBLID_RANGE1_START ||
+	    (ulong_t)kcd > KICONV_TBLID_RANGE1_END)) {
+		*errno = EBADF;
+		return ((size_t)-1);
+	}
+
+	/*
+	 * If this is a state reset request, there is nothing to do and so
+	 * we just return.
+	 */
+	if (! inbuf || ! (*inbuf))
+		return ((size_t)0);
+
+	ret_val = 0;
+	ib = (uchar_t *)*inbuf;
+	ob = (uchar_t *)*outbuf;
+	ibtail = ib + *inbytesleft;
+	obtail = ob + *outbytesleft;
+
+	tbl = ((ulong_t)kcd == KICONV_TBLID_720) ?
+	    (kiconv_to_utf8_tbl_comp_t *)cp720_to_u8_tbl :
+	    (kiconv_to_utf8_tbl_comp_t *)to_u8_tbl[(ulong_t)kcd];
+
+	while (ib < ibtail) {
+		/*
+		 * If this is a 7-bit ASCII character, we just copy over and
+		 * that's all we need to do for this character.
+		 */
+		if (*ib < 0x80) {
+			if (ob >= obtail) {
+				*errno = E2BIG;
+				ret_val = (size_t)-1;
+				break;
+			}
+
+			*ob++ = *ib++;
+			continue;
+		}
+
+		/*
+		 * Otherwise, we get the corresponding UTF-8 character bytes
+		 * from the mapping table and copy them over.
+		 *
+		 * We don't need to worry about if the UTF-8 character bytes
+		 * at the mapping tables are valid or not since they are good.
+		 */
+		k = *ib - 0x80;
+		sz = u8_number_of_bytes[tbl[k].u8[0]];
+
+		/*
+		 * If (sz <= 0), that means the character in the input buffer
+		 * is an illegal character possibly unassigned or non-character
+		 * at the fromcode single byte codeset.
+		 */
+		if (sz <= 0) {
+			*errno = EILSEQ;
+			ret_val = (size_t)-1;
+			break;
+		}
+
+		if ((obtail - ob) < sz) {
+			*errno = E2BIG;
+			ret_val = (size_t)-1;
+			break;
+		}
+
+		for (i = 0; i < sz; i++)
+			*ob++ = tbl[k].u8[i];
+
+		ib++;
+	}
+
+	*inbuf = (char *)ib;
+	*inbytesleft = ibtail - ib;
+	*outbuf = (char *)ob;
+	*outbytesleft = obtail - ob;
+
+	return (ret_val);
+}
+
+/*
+ * The following is the common kiconvstr function for the conversions from
+ * UTF-8 to single byte codeset.
+ */
+static size_t
+kiconvstr_to_sb(size_t id, uchar_t *ib, size_t *inlen, uchar_t *ob,
+	size_t *outlen, int flag, int *errno)
+{
+	kiconv_to_sb_tbl_comp_t *tbl;
+	size_t ret_val;
+	uchar_t *oldib;
+	uchar_t *ibtail;
+	uchar_t *obtail;
+	uint32_t u8;
+	size_t i;
+	size_t l;
+	size_t h;
+	size_t init_h;
+	int8_t sz;
+	boolean_t second;
+	boolean_t do_not_ignore_null;
+
+	/* Let's double check on the table id. */
+	if (id > KICONV_MAX_MAPPING_TBLID &&
+	    (id < KICONV_TBLID_RANGE1_START || id > KICONV_TBLID_RANGE1_END)) {
+		*errno = EBADF;
+		return ((size_t)-1);
+	}
+
+	ret_val = 0;
+	ibtail = ib + *inlen;
+	obtail = ob + *outlen;
+	do_not_ignore_null = ((flag & KICONV_IGNORE_NULL) == 0);
+
+	if (id == KICONV_TBLID_720) {
+		tbl = (kiconv_to_sb_tbl_comp_t *)u8_to_cp720_tbl;
+		init_h = sizeof (u8_to_cp720_tbl);
+	} else {
+		tbl = (kiconv_to_sb_tbl_comp_t *)to_sb_tbl[id];
+		init_h = sizeof (to_sb_tbl[id]);
+	}
+	init_h = init_h / sizeof (kiconv_to_sb_tbl_comp_t) - 1;
+
+	/* Skip any UTF-8 signature BOM character in the beginning. */
+	if ((ibtail - ib) >= 3 && *ib == 0xef && *(ib + 1) == 0xbb &&
+	    *(ib + 2) == 0xbf)
+			ib += 3;
+
+	/*
+	 * Basically this is pretty much the same as kiconv_to_sb() except
+	 * that we are now accepting two flag values and doing the processing
+	 * accordingly.
+	 */
+	while (ib < ibtail) {
+		sz = u8_number_of_bytes[*ib];
+		if (sz <= 0) {
+			if (flag & KICONV_REPLACE_INVALID) {
+				if (ob >= obtail) {
+					*errno = E2BIG;
+					ret_val = (size_t)-1;
+					break;
+				}
+
+				ib++;
+				goto STR_TO_SB_REPLACE_INVALID;
+			}
+
+			*errno = EILSEQ;
+			ret_val = (size_t)-1;
+			break;
+		}
+
+		if (*ib == '\0' && do_not_ignore_null)
+			break;
+
+		if (ob >= obtail) {
+			*errno = E2BIG;
+			ret_val = (size_t)-1;
+			break;
+		}
+
+		if (sz == 1) {
+			*ob++ = *ib++;
+			continue;
+		}
+
+		if ((ibtail - ib) < sz) {
+			if (flag & KICONV_REPLACE_INVALID) {
+				ib = ibtail;
+				goto STR_TO_SB_REPLACE_INVALID;
+			}
+
+			*errno = EINVAL;
+			ret_val = (size_t)-1;
+			break;
+		}
+
+		oldib = ib;
+		u8 = *ib++;
+		second = B_TRUE;
+		for (i = 1; i < sz; i++) {
+			if (second) {
+				if (*ib < u8_valid_min_2nd_byte[u8] ||
+				    *ib > u8_valid_max_2nd_byte[u8]) {
+					if (flag & KICONV_REPLACE_INVALID) {
+						ib = oldib + sz;
+						goto STR_TO_SB_REPLACE_INVALID;
+					}
+
+					*errno = EILSEQ;
+					ret_val = (size_t)-1;
+					ib = oldib;
+					goto STR_TO_SB_ILLEGAL_CHAR_ERR;
+				}
+				second = B_FALSE;
+			} else if (*ib < 0x80 || *ib > 0xbf) {
+				if (flag & KICONV_REPLACE_INVALID) {
+					ib = oldib + sz;
+					goto STR_TO_SB_REPLACE_INVALID;
+				}
+
+				*errno = EILSEQ;
+				ret_val = (size_t)-1;
+				ib = oldib;
+				goto STR_TO_SB_ILLEGAL_CHAR_ERR;
+			}
+			u8 = (u8 << 8) | ((uint32_t)*ib);
+			ib++;
+		}
+
+		i = l = 0;
+		h = init_h;
+		while (l <= h) {
+			i = (l + h) / 2;
+			if (tbl[i].u8 == u8)
+				break;
+			else if (tbl[i].u8 < u8)
+				l = i + 1;
+			else
+				h = i - 1;
+		}
+
+		if (tbl[i].u8 == u8) {
+			*ob++ = tbl[i].sb;
+		} else {
+STR_TO_SB_REPLACE_INVALID:
+			*ob++ = KICONV_ASCII_REPLACEMENT_CHAR;
+			ret_val++;
+		}
+	}
+
+STR_TO_SB_ILLEGAL_CHAR_ERR:
+	*inlen = ibtail - ib;
+	*outlen = obtail - ob;
+
+	return (ret_val);
+}
+
+/*
+ * The following 25 functions are the real entry points that will be
+ * given to the kiconv framework at the genunix.
+ */
+static size_t
+kiconvstr_to_720(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_to_sb(KICONV_TBLID_720, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_to_737(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_to_sb(KICONV_TBLID_737, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_to_852(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_to_sb(KICONV_TBLID_852, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_to_857(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_to_sb(KICONV_TBLID_857, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_to_862(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_to_sb(KICONV_TBLID_862, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_to_866(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_to_sb(KICONV_TBLID_866, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_to_1250(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_to_sb(KICONV_TBLID_1250, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_to_1251(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_to_sb(KICONV_TBLID_1251, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_to_1253(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_to_sb(KICONV_TBLID_1253, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_to_1254(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_to_sb(KICONV_TBLID_1254, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_to_1255(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_to_sb(KICONV_TBLID_1255, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_to_1256(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_to_sb(KICONV_TBLID_1256, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_to_1257(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_to_sb(KICONV_TBLID_1257, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_to_88592(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_to_sb(KICONV_TBLID_8859_2, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_to_88593(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_to_sb(KICONV_TBLID_8859_3, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_to_88594(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_to_sb(KICONV_TBLID_8859_4, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_to_88595(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_to_sb(KICONV_TBLID_8859_5, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_to_88596(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_to_sb(KICONV_TBLID_8859_6, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_to_88597(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_to_sb(KICONV_TBLID_8859_7, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_to_88598(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_to_sb(KICONV_TBLID_8859_8, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_to_88599(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_to_sb(KICONV_TBLID_8859_9, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_to_885910(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_to_sb(KICONV_TBLID_8859_10, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_to_885911(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_to_sb(KICONV_TBLID_8859_11, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_to_885913(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_to_sb(KICONV_TBLID_8859_13, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_to_koi8r(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_to_sb(KICONV_TBLID_KOI8_R, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+/*
+ * The following is the common kiconvstr function for the conversions from
+ * single byte codeset to UTF-8.
+ */
+static size_t
+kiconvstr_fr_sb(size_t id, uchar_t *ib, size_t *inlen, uchar_t *ob,
+	size_t *outlen, int flag, int *errno)
+{
+	kiconv_to_utf8_tbl_comp_t *tbl;
+	size_t ret_val;
+	uchar_t *ibtail;
+	uchar_t *obtail;
+	size_t i;
+	size_t k;
+	int8_t sz;
+	boolean_t do_not_ignore_null;
+
+	if (id > KICONV_MAX_MAPPING_TBLID &&
+	    (id < KICONV_TBLID_RANGE1_START || id > KICONV_TBLID_RANGE1_END)) {
+		*errno = EBADF;
+		return ((size_t)-1);
+	}
+
+	ret_val = 0;
+	ibtail = ib + *inlen;
+	obtail = ob + *outlen;
+	do_not_ignore_null = ((flag & KICONV_IGNORE_NULL) == 0);
+
+	tbl = (id == KICONV_TBLID_720) ?
+	    (kiconv_to_utf8_tbl_comp_t *)cp720_to_u8_tbl :
+	    (kiconv_to_utf8_tbl_comp_t *)to_u8_tbl[id];
+
+	while (ib < ibtail) {
+		if (*ib == '\0' && do_not_ignore_null)
+			break;
+
+		if (*ib < 0x80) {
+			if (ob >= obtail) {
+				*errno = E2BIG;
+				ret_val = (size_t)-1;
+				break;
+			}
+			*ob++ = *ib++;
+			continue;
+		}
+
+		k = *ib - 0x80;
+		sz = u8_number_of_bytes[tbl[k].u8[0]];
+
+		if (sz <= 0) {
+			if (flag & KICONV_REPLACE_INVALID) {
+				if ((obtail - ob) < 3) {
+					*errno = E2BIG;
+					ret_val = (size_t)-1;
+					break;
+				}
+
+				/* Save KICONV_UTF8_REPLACEMENT_CHAR. */
+				*ob++ = 0xef;
+				*ob++ = 0xbf;
+				*ob++ = 0xbd;
+				ret_val++;
+				ib++;
+
+				continue;
+			}
+
+			*errno = EILSEQ;
+			ret_val = (size_t)-1;
+			break;
+		}
+
+		if ((obtail - ob) < sz) {
+			*errno = E2BIG;
+			ret_val = (size_t)-1;
+			break;
+		}
+
+		for (i = 0; i < sz; i++)
+			*ob++ = tbl[k].u8[i];
+
+		ib++;
+	}
+
+	*inlen = ibtail - ib;
+	*outlen = obtail - ob;
+
+	return (ret_val);
+}
+
+/*
+ * The following 25 functions are the real entry points that will be
+ * given to kiconv framework at the genunix.
+ */
+static size_t
+kiconvstr_fr_720(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_fr_sb(KICONV_TBLID_720, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_fr_737(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_fr_sb(KICONV_TBLID_737, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_fr_852(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_fr_sb(KICONV_TBLID_852, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_fr_857(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_fr_sb(KICONV_TBLID_857, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_fr_862(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_fr_sb(KICONV_TBLID_862, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_fr_866(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_fr_sb(KICONV_TBLID_866, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_fr_1250(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_fr_sb(KICONV_TBLID_1250, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_fr_1251(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_fr_sb(KICONV_TBLID_1251, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_fr_1253(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_fr_sb(KICONV_TBLID_1253, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_fr_1254(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_fr_sb(KICONV_TBLID_1254, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_fr_1255(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_fr_sb(KICONV_TBLID_1255, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_fr_1256(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_fr_sb(KICONV_TBLID_1256, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_fr_1257(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_fr_sb(KICONV_TBLID_1257, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_fr_88592(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_fr_sb(KICONV_TBLID_8859_2, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_fr_88593(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_fr_sb(KICONV_TBLID_8859_3, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_fr_88594(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_fr_sb(KICONV_TBLID_8859_4, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_fr_88595(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_fr_sb(KICONV_TBLID_8859_5, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_fr_88596(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_fr_sb(KICONV_TBLID_8859_6, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_fr_88597(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_fr_sb(KICONV_TBLID_8859_7, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_fr_88598(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_fr_sb(KICONV_TBLID_8859_8, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_fr_88599(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_fr_sb(KICONV_TBLID_8859_9, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_fr_885910(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_fr_sb(KICONV_TBLID_8859_10, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_fr_885911(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_fr_sb(KICONV_TBLID_8859_11, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_fr_885913(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_fr_sb(KICONV_TBLID_8859_13, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_fr_koi8r(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_fr_sb(KICONV_TBLID_KOI8_R, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+
+/*
+ * The following are the supported code conversions that will be passed to
+ * and registered from this module. The tocode and fromcode names are
+ * normalized.
+ */
+#define	KICONV_MAX_EMEA_OPS		50
+
+static kiconv_ops_t kiconv_emea_ops[KICONV_MAX_EMEA_OPS] = {
+	{
+		"utf8", "cp1250",
+		open_fr_1250, kiconv_fr_sb, close_fr_sb, kiconvstr_fr_1250
+	},
+	{
+		"cp1250", "utf8",
+		open_to_1250, kiconv_to_sb, close_to_sb, kiconvstr_to_1250
+	},
+	{
+		"utf8", "iso88592",
+		open_fr_88592, kiconv_fr_sb, close_fr_sb, kiconvstr_fr_88592
+	},
+	{
+		"iso88592", "utf8",
+		open_to_88592, kiconv_to_sb, close_to_sb, kiconvstr_to_88592
+	},
+	{
+		"utf8", "cp852",
+		open_fr_852, kiconv_fr_sb, close_fr_sb, kiconvstr_fr_852
+	},
+	{
+		"cp852", "utf8",
+		open_to_852, kiconv_to_sb, close_to_sb, kiconvstr_to_852
+	},
+	{
+		"utf8", "cp1251",
+		open_fr_1251, kiconv_fr_sb, close_fr_sb, kiconvstr_fr_1251
+	},
+	{
+		"cp1251", "utf8",
+		open_to_1251, kiconv_to_sb, close_to_sb, kiconvstr_to_1251
+	},
+	{
+		"utf8", "iso88595",
+		open_fr_88595, kiconv_fr_sb, close_fr_sb, kiconvstr_fr_88595
+	},
+	{
+		"iso88595", "utf8",
+		open_to_88595, kiconv_to_sb, close_to_sb, kiconvstr_to_88595
+	},
+	{
+		"utf8", "koi8r",
+		open_fr_koi8r, kiconv_fr_sb, close_fr_sb, kiconvstr_fr_koi8r
+	},
+	{
+		"koi8r", "utf8",
+		open_to_koi8r, kiconv_to_sb, close_to_sb, kiconvstr_to_koi8r
+	},
+	{
+		"utf8", "cp866",
+		open_fr_866, kiconv_fr_sb, close_fr_sb, kiconvstr_fr_866
+	},
+	{
+		"cp866", "utf8",
+		open_to_866, kiconv_to_sb, close_to_sb, kiconvstr_to_866
+	},
+	{
+		"utf8", "cp1253",
+		open_fr_1253, kiconv_fr_sb, close_fr_sb, kiconvstr_fr_1253
+	},
+	{
+		"cp1253", "utf8",
+		open_to_1253, kiconv_to_sb, close_to_sb, kiconvstr_to_1253
+	},
+	{
+		"utf8", "iso88597",
+		open_fr_88597, kiconv_fr_sb, close_fr_sb, kiconvstr_fr_88597
+	},
+	{
+		"iso88597", "utf8",
+		open_to_88597, kiconv_to_sb, close_to_sb, kiconvstr_to_88597
+	},
+	{
+		"utf8", "cp737",
+		open_fr_737, kiconv_fr_sb, close_fr_sb, kiconvstr_fr_737
+	},
+	{
+		"cp737", "utf8",
+		open_to_737, kiconv_to_sb, close_to_sb, kiconvstr_to_737
+	},
+	{
+		"utf8", "cp1254",
+		open_fr_1254, kiconv_fr_sb, close_fr_sb, kiconvstr_fr_1254
+	},
+	{
+		"cp1254", "utf8",
+		open_to_1254, kiconv_to_sb, close_to_sb, kiconvstr_to_1254
+	},
+	{
+		"utf8", "iso88599",
+		open_fr_88599, kiconv_fr_sb, close_fr_sb, kiconvstr_fr_88599
+	},
+	{
+		"iso88599", "utf8",
+		open_to_88599, kiconv_to_sb, close_to_sb, kiconvstr_to_88599
+	},
+	{
+		"utf8", "cp857",
+		open_fr_857, kiconv_fr_sb, close_fr_sb, kiconvstr_fr_857
+	},
+	{
+		"cp857", "utf8",
+		open_to_857, kiconv_to_sb, close_to_sb, kiconvstr_to_857
+	},
+	{
+		"utf8", "cp1256",
+		open_fr_1256, kiconv_fr_sb, close_fr_sb, kiconvstr_fr_1256
+	},
+	{
+		"cp1256", "utf8",
+		open_to_1256, kiconv_to_sb, close_to_sb, kiconvstr_to_1256
+	},
+	{
+		"utf8", "iso88596",
+		open_fr_88596, kiconv_fr_sb, close_fr_sb, kiconvstr_fr_88596
+	},
+	{
+		"iso88596", "utf8",
+		open_to_88596, kiconv_to_sb, close_to_sb, kiconvstr_to_88596
+	},
+	{
+		"utf8", "cp720",
+		open_fr_720, kiconv_fr_sb, close_fr_sb, kiconvstr_fr_720
+	},
+	{
+		"cp720", "utf8",
+		open_to_720, kiconv_to_sb, close_to_sb, kiconvstr_to_720
+	},
+	{
+		"utf8", "cp1255",
+		open_fr_1255, kiconv_fr_sb, close_fr_sb, kiconvstr_fr_1255
+	},
+	{
+		"cp1255", "utf8",
+		open_to_1255, kiconv_to_sb, close_to_sb, kiconvstr_to_1255
+	},
+	{
+		"utf8", "iso88598",
+		open_fr_88598, kiconv_fr_sb, close_fr_sb, kiconvstr_fr_88598
+	},
+	{
+		"iso88598", "utf8",
+		open_to_88598, kiconv_to_sb, close_to_sb, kiconvstr_to_88598
+	},
+	{
+		"utf8", "cp862",
+		open_fr_862, kiconv_fr_sb, close_fr_sb, kiconvstr_fr_862
+	},
+	{
+		"cp862", "utf8",
+		open_to_862, kiconv_to_sb, close_to_sb, kiconvstr_to_862
+	},
+	{
+		"utf8", "cp1257",
+		open_fr_1257, kiconv_fr_sb, close_fr_sb, kiconvstr_fr_1257
+	},
+	{
+		"cp1257", "utf8",
+		open_to_1257, kiconv_to_sb, close_to_sb, kiconvstr_to_1257
+	},
+	{
+		"utf8", "iso885913",
+		open_fr_885913, kiconv_fr_sb, close_fr_sb, kiconvstr_fr_885913
+	},
+	{
+		"iso885913", "utf8",
+		open_to_885913, kiconv_to_sb, close_to_sb, kiconvstr_to_885913
+	},
+	{
+		"utf8", "iso885910",
+		open_fr_885910, kiconv_fr_sb, close_fr_sb, kiconvstr_fr_885910
+	},
+	{
+		"iso885910", "utf8",
+		open_to_885910, kiconv_to_sb, close_to_sb, kiconvstr_to_885910
+	},
+	{
+		"utf8", "iso885911",
+		open_fr_885911, kiconv_fr_sb, close_fr_sb, kiconvstr_fr_885911
+	},
+	{
+		"iso885911", "utf8",
+		open_to_885911, kiconv_to_sb, close_to_sb, kiconvstr_to_885911
+	},
+	{
+		"utf8", "iso88593",
+		open_fr_88593, kiconv_fr_sb, close_fr_sb, kiconvstr_fr_88593
+	},
+	{
+		"iso88593", "utf8",
+		open_to_88593, kiconv_to_sb, close_to_sb, kiconvstr_to_88593
+	},
+	{
+		"utf8", "iso88594",
+		open_fr_88594, kiconv_fr_sb, close_fr_sb, kiconvstr_fr_88594
+	},
+	{
+		"iso88594", "utf8",
+		open_to_88594, kiconv_to_sb, close_to_sb, kiconvstr_to_88594
+	},
+};
+
+static kiconv_module_info_t kiconv_emea_modinfo = {
+	"kiconv_emea",		/* Must be the same as in kiconv framework. */
+	KICONV_MAX_EMEA_OPS,	/* size_t kiconv_num_convs */
+	kiconv_emea_ops,	/* kiconv_ops_t *kiconv_ops_tbl */
+	0,			/* size_t kiconv_num_aliases */
+	NULL,			/* char **aliases */
+	NULL,			/* char **canonicals */
+	0			/* int nowait */
+};
+
+static struct modlkiconv kiconv_emea = {
+	&mod_kiconvops,
+	"kiconv module for EMEA",
+	&kiconv_emea_modinfo
+};
+
+static struct modlinkage linkage = {
+	MODREV_1,
+	(void *)&kiconv_emea,
+	NULL
+};
+
+int
+_init()
+{
+	int err;
+
+	err = mod_install(&linkage);
+	if (err)
+		cmn_err(CE_WARN, "kiconv_emea: failed to load kernel module");
+
+	return (err);
+}
+
+int
+_info(struct modinfo *modinfop)
+{
+	return (mod_info(&linkage, modinfop));
+}
+
+int
+_fini()
+{
+	int err;
+
+	/*
+	 * If this module is being used, then, we cannot remove the module.
+	 * The following checking will catch pretty much all usual cases.
+	 *
+	 * Any remaining will be catached by the kiconv_unregister_module()
+	 * during mod_remove() at below.
+	 */
+	if (kiconv_module_ref_count(KICONV_MODULE_ID_EMEA))
+		return (EBUSY);
+
+	err = mod_remove(&linkage);
+	if (err)
+		cmn_err(CE_WARN, "kiconv_emea: failed to remove kernel module");
+
+	return (err);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usr/src/uts/common/os/kiconv.c	Tue Oct 09 16:46:51 2007 -0700
@@ -0,0 +1,1374 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+/*
+ * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#pragma ident	"%Z%%M%	%I%	%E% SMI"
+
+/*
+ * Kernel iconv code conversion functions (PSARC/2007/173).
+ *
+ * Man pages: kiconv_open(9F), kiconv(9F), kiconv_close(9F), and kiconvstr(9F).
+ * Interface stability: Committed.
+ */
+
+#include <sys/types.h>
+#include <sys/param.h>
+#include <sys/sysmacros.h>
+#include <sys/systm.h>
+#include <sys/debug.h>
+#include <sys/kmem.h>
+#include <sys/sunddi.h>
+#include <sys/ksynch.h>
+#include <sys/modctl.h>
+#include <sys/byteorder.h>
+#include <sys/errno.h>
+#include <sys/kiconv.h>
+#include <sys/kiconv_latin1.h>
+
+
+/*
+ * The following macros indicate ids to the correct code conversion mapping
+ * data tables to use. The actual tables are coming from <sys/kiconv_latin1.h>.
+ */
+#define	KICONV_TBLID_1252		(0x00)
+#define	KICONV_TBLID_8859_1		(0x01)
+#define	KICONV_TBLID_8859_15		(0x02)
+#define	KICONV_TBLID_850		(0x03)
+
+#define	KICONV_MAX_MAPPING_TBLID	(0x03)
+
+/*
+ * The following tables are coming from u8_textprep.c. We use them to
+ * check on validity of UTF-8 characters and their bytes.
+ */
+extern const int8_t u8_number_of_bytes[];
+extern const uint8_t u8_valid_min_2nd_byte[];
+extern const uint8_t u8_valid_max_2nd_byte[];
+
+
+/*
+ * The following four functions, open_to_1252(), open_to_88591(),
+ * open_to_885915(), and open_to_850(), are kiconv_open functions from
+ * UTF-8 to corresponding single byte codesets.
+ */
+static void *
+open_to_1252()
+{
+	kiconv_state_t s;
+
+	s = (kiconv_state_t)kmem_alloc(sizeof (kiconv_state_data_t), KM_SLEEP);
+	s->id = KICONV_TBLID_1252;
+	s->bom_processed = 0;
+
+	return ((void *)s);
+}
+
+static void *
+open_to_88591()
+{
+	kiconv_state_t s;
+
+	s = (kiconv_state_t)kmem_alloc(sizeof (kiconv_state_data_t), KM_SLEEP);
+	s->id = KICONV_TBLID_8859_1;
+	s->bom_processed = 0;
+
+	return ((void *)s);
+}
+
+static void *
+open_to_885915()
+{
+	kiconv_state_t s;
+
+	s = (kiconv_state_t)kmem_alloc(sizeof (kiconv_state_data_t), KM_SLEEP);
+	s->id = KICONV_TBLID_8859_15;
+	s->bom_processed = 0;
+
+	return ((void *)s);
+}
+
+static void *
+open_to_850()
+{
+	kiconv_state_t s;
+
+	s = (kiconv_state_t)kmem_alloc(sizeof (kiconv_state_data_t), KM_SLEEP);
+	s->id = KICONV_TBLID_850;
+	s->bom_processed = 0;
+
+	return ((void *)s);
+}
+
+/*
+ * The following four functions, open_fr_1252(), open_fr_88591(),
+ * open_fr_885915(), and open_fr_850(), are kiconv_open functions from
+ * corresponding single byte codesets to UTF-8.
+ */
+static void *
+open_fr_1252()
+{
+	return ((void *)KICONV_TBLID_1252);
+}
+
+static void *
+open_fr_88591()
+{
+	return ((void *)KICONV_TBLID_8859_1);
+}
+
+static void *
+open_fr_885915()
+{
+	return ((void *)KICONV_TBLID_8859_15);
+}
+
+static void *
+open_fr_850()
+{
+	return ((void *)KICONV_TBLID_850);
+}
+
+/*
+ * The following close_to_sb() function is kiconv_close function for
+ * the conversions from UTF-8 to single byte codesets. The close_fr_sb()
+ * is kiconv_close function for the conversions from single byte codesets to
+ * UTF-8.
+ */
+static int
+close_to_sb(void *s)
+{
+	if (! s || s == (void *)-1)
+		return (EBADF);
+
+	kmem_free(s, sizeof (kiconv_state_data_t));
+
+	return (0);
+}
+
+static int
+close_fr_sb(void *s)
+{
+	if ((ulong_t)s > KICONV_MAX_MAPPING_TBLID)
+		return (EBADF);
+
+	return (0);
+}
+
+/*
+ * The following is the common kiconv function for conversions from UTF-8
+ * to single byte codesets.
+ */
+static size_t
+kiconv_to_sb(void *kcd, char **inbuf, size_t *inbytesleft, char **outbuf,
+	size_t *outbytesleft, int *errno)
+{
+	size_t id;
+	size_t ret_val;
+	uchar_t *ib;
+	uchar_t *oldib;
+	uchar_t *ob;
+	uchar_t *ibtail;
+	uchar_t *obtail;
+	uint32_t u8;
+	size_t i;
+	size_t l;
+	size_t h;
+	size_t init_h;
+	int8_t sz;
+	boolean_t second;
+
+	/* Check on the kiconv code conversion descriptor. */
+	if (! kcd || kcd == (void *)-1) {
+		*errno = EBADF;
+		return ((size_t)-1);
+	}
+
+	/*
+	 * Get the table id we are going to use for the code conversion
+	 * and let's double check on it.
+	 */
+	id = ((kiconv_state_t)kcd)->id;
+	if (id > KICONV_MAX_MAPPING_TBLID) {
+		*errno = EBADF;
+		return ((size_t)-1);
+	}
+
+	/* If this is a state reset request, process and return. */
+	if (! inbuf || ! (*inbuf)) {
+		((kiconv_state_t)kcd)->bom_processed = 0;
+		return ((size_t)0);
+	}
+
+	ret_val = 0;
+	ib = (uchar_t *)*inbuf;
+	ob = (uchar_t *)*outbuf;
+	ibtail = ib + *inbytesleft;
+	obtail = ob + *outbytesleft;
+
+	/*
+	 * The inital high value for the binary search we will be using
+	 * shortly is a literal constant as of today but to be future proof,
+	 * let's calculate it like the following at here.
+	 */
+	init_h = sizeof (to_sb_tbl[id]) / sizeof (kiconv_to_sb_tbl_comp_t) - 1;
+
+	/*
+	 * If we haven't checked on the UTF-8 signature BOM character in
+	 * the beginning of the conversion data stream, we check it and if
+	 * find one, we skip it since we have no use for it.
+	 */
+	if (((kiconv_state_t)kcd)->bom_processed == 0 && (ibtail - ib) >= 3 &&
+	    *ib == 0xef && *(ib + 1) == 0xbb && *(ib + 2) == 0xbf)
+			ib += 3;
+	((kiconv_state_t)kcd)->bom_processed = 1;
+
+	while (ib < ibtail) {
+		sz = u8_number_of_bytes[*ib];
+		if (sz <= 0) {
+			*errno = EILSEQ;
+			ret_val = (size_t)-1;
+			break;
+		}
+
+		/*
+		 * If there is no room to write at the output buffer,
+		 * issue E2BIG error.
+		 */
+		if (ob >= obtail) {
+			*errno = E2BIG;
+			ret_val = (size_t)-1;
+			break;
+		}
+
+		/*
+		 * If it is a 7-bit ASCII character, we don't need to
+		 * process further and we just copy the character over.
+		 *
+		 * If not, we collect the character bytes up to four bytes,
+		 * validate the bytes, and binary search for the corresponding
+		 * single byte codeset character byte. If we find it from
+		 * the mapping table, we put that into the output buffer;
+		 * otherwise, we put a replacement character instead as
+		 * a non-identical conversion.
+		 */
+		if (sz == 1) {
+			*ob++ = *ib++;
+			continue;
+		}
+
+		/*
+		 * Issue EINVAL error if input buffer has an incomplete
+		 * character at the end of the buffer.
+		 */
+		if ((ibtail - ib) < sz) {
+			*errno = EINVAL;
+			ret_val = (size_t)-1;
+			break;
+		}
+
+		/*
+		 * We collect UTF-8 character bytes and also check if
+		 * this is a valid UTF-8 character without any bogus bytes
+		 * based on the latest UTF-8 binary representation.
+		 */
+		oldib = ib;
+		u8 = *ib++;
+		second = B_TRUE;
+		for (i = 1; i < sz; i++) {
+			if (second) {
+				if (*ib < u8_valid_min_2nd_byte[u8] ||
+				    *ib > u8_valid_max_2nd_byte[u8]) {
+					*errno = EILSEQ;
+					ret_val = (size_t)-1;
+					ib = oldib;
+					goto TO_SB_ILLEGAL_CHAR_ERR;
+				}
+				second = B_FALSE;
+			} else if (*ib < 0x80 || *ib > 0xbf) {
+				*errno = EILSEQ;
+				ret_val = (size_t)-1;
+				ib = oldib;
+				goto TO_SB_ILLEGAL_CHAR_ERR;
+			}
+			u8 = (u8 << 8) | ((uint32_t)*ib);
+			ib++;
+		}
+
+		i = l = 0;
+		h = init_h;
+		while (l <= h) {
+			i = (l + h) / 2;
+			if (to_sb_tbl[id][i].u8 == u8)
+				break;
+			else if (to_sb_tbl[id][i].u8 < u8)
+				l = i + 1;
+			else
+				h = i - 1;
+		}
+
+		if (to_sb_tbl[id][i].u8 == u8) {
+			*ob++ = to_sb_tbl[id][i].sb;
+		} else {
+			/*
+			 * If we don't find a character in the target
+			 * codeset, we insert an ASCII replacement character
+			 * at the output buffer and indicate such
+			 * "non-identical" conversion by increasing the
+			 * return value which is the non-identical conversion
+			 * counter if bigger than 0.
+			 */
+			*ob++ = KICONV_ASCII_REPLACEMENT_CHAR;
+			ret_val++;
+		}
+	}
+
+TO_SB_ILLEGAL_CHAR_ERR:
+	*inbuf = (char *)ib;
+	*inbytesleft = ibtail - ib;
+	*outbuf = (char *)ob;
+	*outbytesleft = obtail - ob;
+
+	return (ret_val);
+}
+
+/*
+ * The following is the common kiconv function from single byte codesets to
+ * UTF-8.
+ */
+static size_t
+kiconv_fr_sb(void *kcd, char **inbuf, size_t *inbytesleft, char **outbuf,
+	size_t *outbytesleft, int *errno)
+{
+	size_t ret_val;
+	uchar_t *ib;
+	uchar_t *ob;
+	uchar_t *ibtail;
+	uchar_t *obtail;
+	size_t i;
+	size_t k;
+	int8_t sz;
+
+	/* Check on the kiconv code conversion descriptor validity. */
+	if ((ulong_t)kcd > KICONV_MAX_MAPPING_TBLID) {
+		*errno = EBADF;
+		return ((size_t)-1);
+	}
+
+	/*
+	 * If this is a state reset request, there is nothing to do and so
+	 * we just return.
+	 */
+	if (! inbuf || ! (*inbuf))
+		return ((size_t)0);
+
+	ret_val = 0;
+	ib = (uchar_t *)*inbuf;
+	ob = (uchar_t *)*outbuf;
+	ibtail = ib + *inbytesleft;
+	obtail = ob + *outbytesleft;
+
+	while (ib < ibtail) {
+		/*
+		 * If this is a 7-bit ASCII character, we just copy over and
+		 * that's all we need to do for this character.
+		 */
+		if (*ib < 0x80) {
+			if (ob >= obtail) {
+				*errno = E2BIG;
+				ret_val = (size_t)-1;
+				break;
+			}
+
+			*ob++ = *ib++;
+			continue;
+		}
+
+		/*
+		 * Otherwise, we get the corresponding UTF-8 character bytes
+		 * from the mapping table and copy them over.
+		 *
+		 * We don't need to worry about if the UTF-8 character bytes
+		 * at the mapping tables are valid or not since they are good.
+		 */
+		k = *ib - 0x80;
+		sz = u8_number_of_bytes[to_u8_tbl[(ulong_t)kcd][k].u8[0]];
+
+		/*
+		 * If sz <= 0, that means we don't have any assigned character
+		 * at the code point, k + 0x80, of the single byte codeset
+		 * which is the fromcode. In other words, the input buffer
+		 * has an illegal character.
+		 */
+		if (sz <= 0) {
+			*errno = EILSEQ;
+			ret_val = (size_t)-1;
+			break;
+		}
+
+		if ((obtail - ob) < sz) {
+			*errno = E2BIG;
+			ret_val = (size_t)-1;
+			break;
+		}
+
+		for (i = 0; i < sz; i++)
+			*ob++ = to_u8_tbl[(ulong_t)kcd][k].u8[i];
+
+		ib++;
+	}
+
+	*inbuf = (char *)ib;
+	*inbytesleft = ibtail - ib;
+	*outbuf = (char *)ob;
+	*outbytesleft = obtail - ob;
+
+	return (ret_val);
+}
+
+/*
+ * The following is the common kiconvstr function from UTF-8 to single byte
+ * codesets.
+ */
+static size_t
+kiconvstr_to_sb(size_t id, uchar_t *ib, size_t *inlen, uchar_t *ob,
+	size_t *outlen, int flag, int *errno)
+{
+	size_t ret_val;
+	uchar_t *oldib;
+	uchar_t *ibtail;
+	uchar_t *obtail;
+	uint32_t u8;
+	size_t i;
+	size_t l;
+	size_t h;
+	size_t init_h;
+	int8_t sz;
+	boolean_t second;
+	boolean_t do_not_ignore_null;
+
+	/* Let's make sure that the table id is within the valid boundary. */
+	if (id > KICONV_MAX_MAPPING_TBLID) {
+		*errno = EBADF;
+		return ((size_t)-1);
+	}
+
+	ret_val = 0;
+	ibtail = ib + *inlen;
+	obtail = ob + *outlen;
+	do_not_ignore_null = ((flag & KICONV_IGNORE_NULL) == 0);
+	init_h = sizeof (to_sb_tbl[id]) / sizeof (kiconv_to_sb_tbl_comp_t) - 1;
+
+	/* Skip any UTF-8 signature BOM character in the beginning. */
+	if ((ibtail - ib) >= 3 && *ib == 0xef && *(ib + 1) == 0xbb &&
+	    *(ib + 2) == 0xbf)
+			ib += 3;
+
+	/*
+	 * Basically this is pretty much the same as kiconv_to_sb() except
+	 * that we are now accepting two flag values and doing the processing
+	 * accordingly.
+	 */
+	while (ib < ibtail) {
+		sz = u8_number_of_bytes[*ib];
+		if (sz <= 0) {
+			if (flag & KICONV_REPLACE_INVALID) {
+				if (ob >= obtail) {
+					*errno = E2BIG;
+					ret_val = (size_t)-1;
+					break;
+				}
+
+				ib++;
+				goto STR_TO_SB_REPLACE_INVALID;
+			}
+
+			*errno = EILSEQ;
+			ret_val = (size_t)-1;
+			break;
+		}
+
+		if (*ib == '\0' && do_not_ignore_null)
+			break;
+
+		if (ob >= obtail) {
+			*errno = E2BIG;
+			ret_val = (size_t)-1;
+			break;
+		}
+
+		if (sz == 1) {
+			*ob++ = *ib++;
+			continue;
+		}
+
+		if ((ibtail - ib) < sz) {
+			if (flag & KICONV_REPLACE_INVALID) {
+				ib = ibtail;
+				goto STR_TO_SB_REPLACE_INVALID;
+			}
+
+			*errno = EINVAL;
+			ret_val = (size_t)-1;
+			break;
+		}
+
+		oldib = ib;
+		u8 = *ib++;
+		second = B_TRUE;
+		for (i = 1; i < sz; i++) {
+			if (second) {
+				if (*ib < u8_valid_min_2nd_byte[u8] ||
+				    *ib > u8_valid_max_2nd_byte[u8]) {
+					if (flag & KICONV_REPLACE_INVALID) {
+						ib = oldib + sz;
+						goto STR_TO_SB_REPLACE_INVALID;
+					}
+
+					*errno = EILSEQ;
+					ret_val = (size_t)-1;
+					ib = oldib;
+					goto STR_TO_SB_ILLEGAL_CHAR_ERR;
+				}
+				second = B_FALSE;
+			} else if (*ib < 0x80 || *ib > 0xbf) {
+				if (flag & KICONV_REPLACE_INVALID) {
+					ib = oldib + sz;
+					goto STR_TO_SB_REPLACE_INVALID;
+				}
+
+				*errno = EILSEQ;
+				ret_val = (size_t)-1;
+				ib = oldib;
+				goto STR_TO_SB_ILLEGAL_CHAR_ERR;
+			}
+			u8 = (u8 << 8) | ((uint32_t)*ib);
+			ib++;
+		}
+
+		i = l = 0;
+		h = init_h;
+		while (l <= h) {
+			i = (l + h) / 2;
+			if (to_sb_tbl[id][i].u8 == u8)
+				break;
+			else if (to_sb_tbl[id][i].u8 < u8)
+				l = i + 1;
+			else
+				h = i - 1;
+		}
+
+		if (to_sb_tbl[id][i].u8 == u8) {
+			*ob++ = to_sb_tbl[id][i].sb;
+		} else {
+STR_TO_SB_REPLACE_INVALID:
+			*ob++ = KICONV_ASCII_REPLACEMENT_CHAR;
+			ret_val++;
+		}
+	}
+
+STR_TO_SB_ILLEGAL_CHAR_ERR:
+	*inlen = ibtail - ib;
+	*outlen = obtail - ob;
+
+	return (ret_val);
+}
+
+/*
+ * The following four functions are entry points recorded at the conv_list[]
+ * defined at below.
+ */
+static size_t
+kiconvstr_to_1252(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_to_sb(KICONV_TBLID_1252, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_to_1(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_to_sb(KICONV_TBLID_8859_1, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_to_15(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_to_sb(KICONV_TBLID_8859_15, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_to_850(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_to_sb(KICONV_TBLID_850, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+/*
+ * The following is the common kiconvstr function for conversions from
+ * single byte codesets to UTF-8.
+ */
+static size_t
+kiconvstr_fr_sb(size_t id, uchar_t *ib, size_t *inlen, uchar_t *ob,
+	size_t *outlen, int flag, int *errno)
+{
+	size_t ret_val;
+	uchar_t *ibtail;
+	uchar_t *obtail;
+	size_t i;
+	size_t k;
+	int8_t sz;
+	boolean_t do_not_ignore_null;
+
+	ret_val = 0;
+	ibtail = ib + *inlen;
+	obtail = ob + *outlen;
+	do_not_ignore_null = ((flag & KICONV_IGNORE_NULL) == 0);
+
+	while (ib < ibtail) {
+		if (*ib == '\0' && do_not_ignore_null)
+			break;
+
+		if (*ib < 0x80) {
+			if (ob >= obtail) {
+				*errno = E2BIG;
+				ret_val = (size_t)-1;
+				break;
+			}
+			*ob++ = *ib++;
+			continue;
+		}
+
+		k = *ib - 0x80;
+		sz = u8_number_of_bytes[to_u8_tbl[id][k].u8[0]];
+
+		if (sz <= 0) {
+			if (flag & KICONV_REPLACE_INVALID) {
+				if ((obtail - ob) < 3) {
+					*errno = E2BIG;
+					ret_val = (size_t)-1;
+					break;
+				}
+
+				/* Save KICONV_UTF8_REPLACEMENT_CHAR. */
+				*ob++ = 0xef;
+				*ob++ = 0xbf;
+				*ob++ = 0xbd;
+				ret_val++;
+				ib++;
+
+				continue;
+			}
+
+			*errno = EILSEQ;
+			ret_val = (size_t)-1;
+			break;
+		}
+
+		if ((obtail - ob) < sz) {
+			*errno = E2BIG;
+			ret_val = (size_t)-1;
+			break;
+		}
+
+		for (i = 0; i < sz; i++)
+			*ob++ = to_u8_tbl[id][k].u8[i];
+
+		ib++;
+	}
+
+	*inlen = ibtail - ib;
+	*outlen = obtail - ob;
+
+	return (ret_val);
+}
+
+/*
+ * The following four functions are also entry points recorded at
+ * the conv_list[] at below.
+ */
+static size_t
+kiconvstr_fr_1252(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_fr_sb(KICONV_TBLID_1252, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_fr_1(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_fr_sb(KICONV_TBLID_8859_1, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_fr_15(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_fr_sb(KICONV_TBLID_8859_15, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+static size_t
+kiconvstr_fr_850(char *inarray, size_t *inlen, char *outarray,
+	size_t *outlen, int flag, int *errno)
+{
+	return (kiconvstr_fr_sb(KICONV_TBLID_850, (uchar_t *)inarray,
+	    inlen, (uchar_t *)outarray, outlen, flag, errno));
+}
+
+/*
+ * The following static vector contains the normalized code names
+ * and their corresponding code ids. They are somewhat arbitrarily ordered
+ * based on marketing data available. A code id could repeat for aliases.
+ *
+ * The vector was generated by using a small utility program called
+ * codeidlistgen.c that you can find from PSARC/2007/173/materials/util/.
+ *
+ * The code ids must be portable, i.e., if needed, you can always generate
+ * the code_list[] again with different code ids. You'll also need to
+ * update the conv_list[] at below.
+ */
+#define	KICONV_MAX_CODEID_ENTRY		68
+#define	KICONV_MAX_CODEID		42
+
+static kiconv_code_list_t code_list[KICONV_MAX_CODEID_ENTRY] = {
+	{ "utf8", 0 },
+	{ "cp1252", 1 },
+	{ "1252", 1 },
+	{ "iso88591", 2 },
+	{ "iso885915", 3 },
+	{ "cp850", 4 },
+	{ "850", 4 },
+	{ "eucjp", 5 },
+	{ "eucjpms", 6 },
+	{ "cp932", 7 },
+	{ "932", 7 },
+	{ "shiftjis", 8 },
+	{ "pck", 8 },
+	{ "sjis", 8 },
+	{ "gb18030", 9 },
+	{ "gbk", 10 },
+	{ "cp936", 10 },
+	{ "936", 10 },
+	{ "euccn", 11 },
+	{ "euckr", 12 },
+	{ "unifiedhangul", 13 },
+	{ "cp949", 13 },
+	{ "949", 13 },
+	{ "big5", 14 },
+	{ "cp950", 14 },
+	{ "950", 14 },
+	{ "big5hkscs", 15 },
+	{ "euctw", 16 },
+	{ "cp950hkscs", 17 },
+	{ "cp1250", 18 },
+	{ "1250", 18 },
+	{ "iso88592", 19 },
+	{ "cp852", 20 },
+	{ "852", 20 },
+	{ "cp1251", 21 },
+	{ "1251", 21 },
+	{ "iso88595", 22 },
+	{ "koi8r", 23 },
+	{ "cp866", 24 },
+	{ "866", 24 },
+	{ "cp1253", 25 },
+	{ "1253", 25 },
+	{ "iso88597", 26 },
+	{ "cp737", 27 },
+	{ "737", 27 },
+	{ "cp1254", 28 },
+	{ "1254", 28 },
+	{ "iso88599", 29 },
+	{ "cp857", 30 },
+	{ "857", 30 },
+	{ "cp1256", 31 },
+	{ "1256", 31 },
+	{ "iso88596", 32 },
+	{ "cp720", 33 },
+	{ "720", 33 },
+	{ "cp1255", 34 },
+	{ "1255", 34 },
+	{ "iso88598", 35 },
+	{ "cp862", 36 },
+	{ "862", 36 },
+	{ "cp1257", 37 },
+	{ "1257", 37 },
+	{ "iso885913", 38 },
+	{ "iso885910", 39 },
+	{ "iso885911", 40 },
+	{ "tis620", 40 },
+	{ "iso88593", 41 },
+	{ "iso88594", 42 },
+};
+
+/*
+ * The list of code conversions supported are grouped together per
+ * module which will be loaded as needed.
+ */
+#define	KICONV_MAX_CONVERSIONS		84
+
+static kiconv_conv_list_t conv_list[KICONV_MAX_CONVERSIONS] = {
+	/* Embedded code conversions: */
+	{
+		1, 0, KICONV_EMBEDDED,
+		open_to_1252, kiconv_to_sb, close_to_sb, kiconvstr_to_1252
+	},
+	{
+		0, 1, KICONV_EMBEDDED,
+		open_fr_1252, kiconv_fr_sb, close_fr_sb, kiconvstr_fr_1252
+	},
+	{
+		2, 0, KICONV_EMBEDDED,
+		open_to_88591, kiconv_to_sb, close_to_sb, kiconvstr_to_1
+	},
+	{
+		0, 2, KICONV_EMBEDDED,
+		open_fr_88591, kiconv_fr_sb, close_fr_sb, kiconvstr_fr_1
+	},
+	{
+		3, 0, KICONV_EMBEDDED,
+		open_to_885915, kiconv_to_sb, close_to_sb, kiconvstr_to_15
+	},
+	{
+		0, 3, KICONV_EMBEDDED,
+		open_fr_885915, kiconv_fr_sb, close_fr_sb, kiconvstr_fr_15
+	},
+	{
+		4, 0, KICONV_EMBEDDED,
+		open_to_850, kiconv_to_sb, close_to_sb, kiconvstr_to_850
+	},
+	{
+		0, 4, KICONV_EMBEDDED,
+		open_fr_850, kiconv_fr_sb, close_fr_sb, kiconvstr_fr_850
+	},
+
+	/* kiconv_ja module conversions: */
+	{ 0, 5, KICONV_MODULE_ID_JA, NULL, NULL, NULL, NULL },
+	{ 5, 0, KICONV_MODULE_ID_JA, NULL, NULL, NULL, NULL },
+	{ 0, 6, KICONV_MODULE_ID_JA, NULL, NULL, NULL, NULL },
+	{ 6, 0, KICONV_MODULE_ID_JA, NULL, NULL, NULL, NULL },
+	{ 0, 7, KICONV_MODULE_ID_JA, NULL, NULL, NULL, NULL },
+	{ 7, 0, KICONV_MODULE_ID_JA, NULL, NULL, NULL, NULL },
+	{ 0, 8, KICONV_MODULE_ID_JA, NULL, NULL, NULL, NULL },
+	{ 8, 0, KICONV_MODULE_ID_JA, NULL, NULL, NULL, NULL },
+
+	/* kiconv_sc module conversions: */
+	{ 0, 9, KICONV_MODULE_ID_SC, NULL, NULL, NULL, NULL },
+	{ 9, 0, KICONV_MODULE_ID_SC, NULL, NULL, NULL, NULL },
+	{ 0, 10, KICONV_MODULE_ID_SC, NULL, NULL, NULL, NULL },
+	{ 10, 0, KICONV_MODULE_ID_SC, NULL, NULL, NULL, NULL },
+	{ 0, 11, KICONV_MODULE_ID_SC, NULL, NULL, NULL, NULL },
+	{ 11, 0, KICONV_MODULE_ID_SC, NULL, NULL, NULL, NULL },
+
+	/* kiconv_ko module conversions: */
+	{ 0, 12, KICONV_MODULE_ID_KO, NULL, NULL, NULL, NULL },
+	{ 12, 0, KICONV_MODULE_ID_KO, NULL, NULL, NULL, NULL },
+	{ 0, 13, KICONV_MODULE_ID_KO, NULL, NULL, NULL, NULL },
+	{ 13, 0, KICONV_MODULE_ID_KO, NULL, NULL, NULL, NULL },
+
+	/* kiconv_tc module conversions: */
+	{ 0, 14, KICONV_MODULE_ID_TC, NULL, NULL, NULL, NULL },
+	{ 14, 0, KICONV_MODULE_ID_TC, NULL, NULL, NULL, NULL },
+	{ 0, 15, KICONV_MODULE_ID_TC, NULL, NULL, NULL, NULL },
+	{ 15, 0, KICONV_MODULE_ID_TC, NULL, NULL, NULL, NULL },
+	{ 0, 16, KICONV_MODULE_ID_TC, NULL, NULL, NULL, NULL },
+	{ 16, 0, KICONV_MODULE_ID_TC, NULL, NULL, NULL, NULL },
+	{ 0, 17, KICONV_MODULE_ID_TC, NULL, NULL, NULL, NULL },
+	{ 17, 0, KICONV_MODULE_ID_TC, NULL, NULL, NULL, NULL },
+
+	/* kiconv_emea module conversions: */
+	{ 0, 18, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 18, 0, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 0, 19, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 19, 0, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 0, 20, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 20, 0, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 0, 21, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 21, 0, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 0, 22, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 22, 0, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 0, 23, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 23, 0, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 0, 24, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 24, 0, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 0, 25, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 25, 0, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 0, 26, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 26, 0, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 0, 27, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 27, 0, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 0, 28, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 28, 0, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 0, 29, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 29, 0, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 0, 30, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 30, 0, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 0, 31, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 31, 0, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 0, 32, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 32, 0, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 0, 33, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 33, 0, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 0, 34, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 34, 0, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 0, 35, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 35, 0, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 0, 36, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 36, 0, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 0, 37, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 37, 0, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 0, 38, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 38, 0, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 0, 39, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 39, 0, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 0, 40, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 40, 0, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 0, 41, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 41, 0, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 0, 42, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+	{ 42, 0, KICONV_MODULE_ID_EMEA, NULL, NULL, NULL, NULL },
+};
+
+/* The list of implemeted and supported modules. */
+static kiconv_mod_list_t module_list[KICONV_MAX_MODULE_ID + 1] = {
+	"kiconv_embedded", 0,
+	"kiconv_ja", 0,
+	"kiconv_sc", 0,
+	"kiconv_ko", 0,
+	"kiconv_tc", 0,
+	"kiconv_emea", 0,
+};
+
+/*
+ * We use conv_list_lock to restrict data access of both conv_list[] and
+ * module_list[] as they are tightly coupled critical sections that need to be
+ * dealt together as a unit.
+ */
+static kmutex_t conv_list_lock;
+
+void
+kiconv_init()
+{
+	mutex_init(&conv_list_lock, NULL, MUTEX_DEFAULT, NULL);
+}
+
+/*
+ * The following is used to check on whether a kiconv module is being
+ * used or not at the _fini() of the module.
+ */
+size_t
+kiconv_module_ref_count(size_t mid)
+{
+	int count;
+
+	if (mid <= 0 || mid > KICONV_MAX_MODULE_ID)
+		return (0);
+
+	mutex_enter(&conv_list_lock);
+
+	count = module_list[mid].refcount;
+
+	mutex_exit(&conv_list_lock);
+
+	return (count);
+}
+
+/*
+ * This function "normalizes" a given code name, n, by not including skippable
+ * characters and folding uppercase letters to corresponding lowercase letters.
+ * We only fold 7-bit ASCII uppercase characters since the names should be in
+ * Portable Character Set of 7-bit ASCII.
+ *
+ * By doing this, we will be able to maximize the code name matches.
+ */
+static size_t
+normalize_codename(const char *n)
+{
+	char s[KICONV_MAX_CODENAME_LEN + 1];
+	size_t i;
+
+	if (n == NULL)
+		return ((size_t)-1);
+
+	for (i = 0; *n; n++) {
+		if (KICONV_SKIPPABLE_CHAR(*n))
+			continue;
+
+		/* If unreasonably lengthy, we don't support such names. */
+		if (i >= KICONV_MAX_CODENAME_LEN)
+			return ((size_t)-1);
+
+		s[i++] = (*n >= 'A' && *n <= 'Z') ? *n - 'A' + 'a' : *n;
+	}
+	s[i] = '\0';
+
+	/* With the normalized name, find the corresponding codeset id. */
+	for (i = 0; i < KICONV_MAX_CODEID_ENTRY; i++)
+		if (strcmp(s, code_list[i].name) == 0)
+			return (code_list[i].id);
+
+	/*
+	 * In future time, we will also have a few more lines of code at below
+	 * that will deal with other user-created modules' fromcodes and
+	 * tocodes including aliases in a different vector. For now, we don't
+	 * support that but only the known names to this project at this time.
+	 */
+
+	return ((size_t)-1);
+}
+
+/*
+ * This function called from mod_install() registers supplied code
+ * conversions. At this point, it does not honor aliases and hence does not
+ * use nowait data field from the kiconv module info data structure.
+ */
+int
+kiconv_register_module(kiconv_module_info_t *info)
+{
+	size_t mid;
+	size_t fid;
+	size_t tid;
+	size_t i;
+	size_t j;
+	kiconv_ops_t *op;
+
+	/* Validate the given kiconv module info. */
+	if (info == NULL || info->module_name == NULL ||
+	    info->kiconv_num_convs == 0 || info->kiconv_ops_tbl == NULL)
+		return (EINVAL);
+
+	/*
+	 * Check if this is one of the known modules. At this point,
+	 * we do not allow user-defined kiconv modules and that'd be for
+	 * a future project.
+	 */
+	for (mid = 1; mid <= KICONV_MAX_MODULE_ID; mid++)
+		if (strcmp(module_list[mid].name, info->module_name) == 0)
+			break;
+	if (mid > KICONV_MAX_MODULE_ID)
+		return (EINVAL);
+
+	/* Let's register the conversions supplied. */
+	mutex_enter(&conv_list_lock);
+
+	/*
+	 * This is very unlikely situation but by any chance we don't want to
+	 * register a module that is already in.
+	 */
+	if (module_list[mid].refcount > 0) {
+		mutex_exit(&conv_list_lock);
+		return (EAGAIN);
+	}
+
+	for (i = 0; i < info->kiconv_num_convs; i++) {
+		op = &(info->kiconv_ops_tbl[i]);
+
+		fid = normalize_codename(op->fromcode);
+		tid = normalize_codename(op->tocode);
+
+		/*
+		 * If we find anything wrong in this particular conversion,
+		 * we skip this one and continue to the next one. This include
+		 * a case where there is a conversion already being assigned
+		 * into the conv_list[] somehow, i.e., new one never kicks out
+		 * old one.
+		 */
+		if (op->kiconv_open == NULL || op->kiconv == NULL ||
+		    op->kiconv_close == NULL || op->kiconvstr == NULL)
+			continue;
+
+		for (j = 0; j < KICONV_MAX_CONVERSIONS; j++) {
+			if (conv_list[j].mid == mid &&
+			    conv_list[j].fid == fid &&
+			    conv_list[j].tid == tid) {
+				if (conv_list[j].open == NULL) {
+					conv_list[j].open = op->kiconv_open;
+					conv_list[j].kiconv = op->kiconv;
+					conv_list[j].close = op->kiconv_close;
+					conv_list[j].kiconvstr = op->kiconvstr;
+				}
+				break;
+			}
+		}
+	}
+
+	mutex_exit(&conv_list_lock);
+
+	return (0);
+}
+
+/*
+ * The following function called during mod_remove() will try to unregister,
+ * i.e., clear up conversion function pointers, from the conv_list[] if it
+ * can. If there is any code conversions being used, then, the function will
+ * just return EBUSY indicating that the module cannot be unloaded.
+ */
+int
+kiconv_unregister_module(kiconv_module_info_t *info)
+{
+	size_t mid;
+	size_t i;
+
+	if (info == NULL || info->module_name == NULL ||
+	    info->kiconv_num_convs == 0 || info->kiconv_ops_tbl == NULL)
+		return (EINVAL);
+
+	for (mid = 1; mid <= KICONV_MAX_MODULE_ID; mid++)
+		if (strcmp(module_list[mid].name, info->module_name) == 0)
+			break;
+	if (mid > KICONV_MAX_MODULE_ID)
+		return (EINVAL);
+
+	mutex_enter(&conv_list_lock);
+
+	/*
+	 * If any of the conversions are used, then, this module canont be
+	 * unloaded.
+	 */
+	if (module_list[mid].refcount > 0) {
+		mutex_exit(&conv_list_lock);
+		return (EBUSY);
+	}
+
+	/*
+	 * Otherwise, we unregister all conversions from this module
+	 * and be ready for the unloading. At this point, we only care about
+	 * the conversions we know about with the module.
+	 */
+	for (i = 0; i < KICONV_MAX_CONVERSIONS; i++) {
+		if (conv_list[i].mid == mid) {
+			conv_list[i].open = NULL;
+			conv_list[i].kiconv = NULL;
+			conv_list[i].close = NULL;
+			conv_list[i].kiconvstr = NULL;
+		}
+	}
+
+	mutex_exit(&conv_list_lock);
+
+	return (0);
+}
+
+/*
+ * The following function check if asked code conversion is available
+ * and if necessary, load the corresponding kiconv module that contains
+ * the conversion (and others).
+ */
+static kiconv_t
+check_and_load_conversions(const char *tocode, const char *fromcode)
+{
+	kiconv_t kcd;
+	size_t tid;
+	size_t fid;
+	size_t mid;
+	size_t i;
+
+	/* Normalize the given names and find the corresponding code ids. */
+	tid = normalize_codename(tocode);
+	if (tid == (size_t)-1)
+		return ((kiconv_t)-1);
+
+	fid = normalize_codename(fromcode);
+	if (fid == (size_t)-1)
+		return ((kiconv_t)-1);
+
+	/*
+	 * Search the conversion.
+	 *
+	 * If the conversion isn't supported, just return -1.
+	 * If the conversion is supported but there is no corresponding
+	 * module loaded, try to load it and if successful, return
+	 * a kiconv conversion descriptor memory block.
+	 *
+	 * We maintain a reference counter of uint_t for each module.
+	 */
+	mutex_enter(&conv_list_lock);
+
+	for (i = 0; i < KICONV_MAX_CONVERSIONS; i++)
+		if (conv_list[i].tid == tid && conv_list[i].fid == fid)
+			break;
+	if (i >= KICONV_MAX_CONVERSIONS) {
+		mutex_exit(&conv_list_lock);
+		return ((kiconv_t)-1);
+	}
+
+	mid = conv_list[i].mid;
+
+	if (conv_list[i].open == NULL) {
+		mutex_exit(&conv_list_lock);
+
+		if (modload("kiconv", module_list[mid].name) < 0)
+			return ((kiconv_t)-1);
+
+		/*
+		 * Let's double check if something happened right after
+		 * the modload and/or if the module really has the conversion.
+		 */
+		mutex_enter(&conv_list_lock);
+
+		if (conv_list[i].open == NULL) {
+			mutex_exit(&conv_list_lock);
+			return ((kiconv_t)-1);
+		}
+	}
+
+	/*
+	 * If we got the conversion, we will use the conversion function
+	 * in the module and so let's increase the module's refcounter
+	 * so that the module won't be kicked out. (To be more exact and
+	 * specific, the "refcount" is thus the reference counter of
+	 * the module functions being used.)
+	 */
+	if (module_list[mid].refcount < UINT_MAX)
+		module_list[mid].refcount++;
+
+	mutex_exit(&conv_list_lock);
+
+	kcd = (kiconv_t)kmem_alloc(sizeof (kiconv_data_t), KM_SLEEP);
+	kcd->handle = (void *)-1;
+	kcd->id = i;
+
+	return (kcd);
+}
+
+/*
+ * The following are the four "Committed" interfaces.
+ */
+kiconv_t
+kiconv_open(const char *tocode, const char *fromcode)
+{
+	kiconv_t kcd;
+	size_t mid;
+
+	kcd = check_and_load_conversions(tocode, fromcode);
+	if (kcd == (kiconv_t)-1)
+		return ((kiconv_t)-1);
+
+	kcd->handle = (conv_list[kcd->id].open)();
+	if (kcd->handle == (void *)-1) {
+		/*
+		 * If the conversion couldn't be opened for some reason,
+		 * then, we unallocate the kcd and, more importantly, before
+		 * that, we also decrease the module reference counter.
+		 */
+		mid = conv_list[kcd->id].mid;
+
+		mutex_enter(&conv_list_lock);
+
+		if (module_list[mid].refcount > 0)
+			module_list[mid].refcount--;
+
+		mutex_exit(&conv_list_lock);
+
+		kmem_free((void *)kcd, sizeof (kiconv_data_t));
+
+		return ((kiconv_t)-1);
+	}
+
+	return (kcd);
+}
+
+size_t
+kiconv(kiconv_t kcd, char **inbuf, size_t *inbytesleft,
+	char **outbuf, size_t *outbytesleft, int *errno)
+{
+	/* Do some minimum checking on the kiconv conversion descriptor. */
+	if (! kcd || kcd == (kiconv_t)-1 || conv_list[kcd->id].kiconv == NULL) {
+		*errno = EBADF;
+		return ((size_t)-1);
+	}
+
+	return ((conv_list[kcd->id].kiconv)(kcd->handle, inbuf, inbytesleft,
+	    outbuf, outbytesleft, errno));
+}
+
+int
+kiconv_close(kiconv_t kcd)
+{
+	int ret;
+	size_t mid;
+
+	if (! kcd || kcd == (kiconv_t)-1 || conv_list[kcd->id].close == NULL)
+		return (EBADF);
+
+	mid = conv_list[kcd->id].mid;
+
+	ret = (conv_list[kcd->id].close)(kcd->handle);
+
+	kmem_free((void *)kcd, sizeof (kiconv_data_t));
+
+	mutex_enter(&conv_list_lock);
+
+	/*
+	 * While we maintain reference conter for each module, once loaded,
+	 * we don't modunload from kiconv functions even if the counter
+	 * reaches back to zero.
+	 */
+	if (module_list[mid].refcount > 0)
+		module_list[mid].refcount--;
+
+	mutex_exit(&conv_list_lock);
+
+	return (ret);
+}
+
+size_t
+kiconvstr(const char *tocode, const char *fromcode, char *inarray,
+	size_t *inlen, char *outarray, size_t *outlen, int flag, int *errno)
+{
+	kiconv_t kcd;
+	size_t ret;
+	size_t mid;
+
+	kcd = check_and_load_conversions(tocode, fromcode);
+	if (kcd == (kiconv_t)-1 || conv_list[kcd->id].kiconvstr == NULL) {
+		*errno = EBADF;
+		return ((size_t)-1);
+	}
+
+	mid = conv_list[kcd->id].mid;
+
+	ret = (conv_list[kcd->id].kiconvstr)(inarray, inlen, outarray, outlen,
+	    flag, errno);
+
+	kmem_free((void *)kcd, sizeof (kiconv_data_t));
+
+	mutex_enter(&conv_list_lock);
+
+	if (module_list[mid].refcount > 0)
+		module_list[mid].refcount--;
+
+	mutex_exit(&conv_list_lock);
+
+	return (ret);
+}
--- a/usr/src/uts/common/os/modconf.c	Tue Oct 09 16:33:09 2007 -0700
+++ b/usr/src/uts/common/os/modconf.c	Tue Oct 09 16:46:51 2007 -0700
@@ -19,7 +19,7 @@
  * CDDL HEADER END
  */
 /*
- * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 
@@ -59,6 +59,7 @@
 #include <sys/cpc_pcbe.h>
 #include <sys/kstat.h>
 #include <sys/fs/sdev_node.h>
+#include <sys/kiconv.h>
 
 extern int moddebug;
 
@@ -248,6 +249,16 @@
 	mod_installbrand, mod_removebrand, mod_infonull
 };
 
+/*
+ * kiconv modules.
+ */
+static int mod_installkiconv(struct modlkiconv *, struct modlinkage *);
+static int mod_removekiconv(struct modlkiconv *, struct modlinkage *);
+
+struct mod_ops mod_kiconvops = {
+	mod_installkiconv, mod_removekiconv, mod_infonull
+};
+
 static struct sysent *mod_getsysent(struct modlinkage *, struct sysent *);
 
 static char uninstall_err[] = "Cannot uninstall %s; not installed";
@@ -326,7 +337,7 @@
 			while (*linkpp != last_linkp) {
 				if (MODL_INSTALL(*linkpp, modlp) != 0) {
 					cmn_err(CE_WARN, reins_err,
-						(*linkpp)->misc_linkinfo);
+					    (*linkpp)->misc_linkinfo);
 					break;
 				}
 				linkpp++;
@@ -1208,7 +1219,7 @@
 	rw_enter(clp->cl_lock, RW_WRITER);
 	if (SCHED_INSTALLED(clp)) {
 		printf("scheduling class %s is already installed\n",
-			modl->sched_class->cl_name);
+		    modl->sched_class->cl_name);
 		rw_exit(clp->cl_lock);
 		return (EBUSY);		/* it's already there */
 	}
@@ -1309,7 +1320,7 @@
 	}
 	if (eswp->exec_func != NULL) {
 		printf("exec type %x is already installed\n",
-			*eswp->exec_magic);
+		    *eswp->exec_magic);
 			return (EBUSY);		 /* it's already there! */
 	}
 
@@ -1430,3 +1441,20 @@
 
 	return (ipp_mod_unregister(mid));
 }
+
+/*
+ * Manage kiconv modules.
+ */
+/*ARGSUSED*/
+static int
+mod_installkiconv(struct modlkiconv *modl, struct modlinkage *modlp)
+{
+	return (kiconv_register_module(modl->kiconv_moddef));
+}
+
+/*ARGSUSED*/
+static int
+mod_removekiconv(struct modlkiconv *modl, struct modlinkage *modlp)
+{
+	return (kiconv_unregister_module(modl->kiconv_moddef));
+}
--- a/usr/src/uts/common/sys/Makefile	Tue Oct 09 16:33:09 2007 -0700
+++ b/usr/src/uts/common/sys/Makefile	Tue Oct 09 16:46:51 2007 -0700
@@ -284,6 +284,10 @@
 	kcpc.h			\
 	kdi.h			\
 	kdi_impl.h		\
+	kiconv.h		\
+	kiconv_emea1.h		\
+	kiconv_emea2.h		\
+	kiconv_latin1.h		\
 	kidmap.h		\
 	klwp.h			\
 	kmdb.h			\
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usr/src/uts/common/sys/THIRDPARTYLICENSE.icu	Tue Oct 09 16:46:51 2007 -0700
@@ -0,0 +1,36 @@
+ICU License - ICU 1.8.1 and later
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright (c) 1995-2006 International Business Machines Corporation and others
+
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, and/or sell copies of the Software, and to permit persons
+to whom the Software is furnished to do so, provided that the above
+copyright notice(s) and this permission notice appear in all copies of
+the Software and that both the above copyright notice(s) and this
+permission notice appear in supporting documentation.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder
+shall not be used in advertising or otherwise to promote the sale, use
+or other dealings in this Software without prior written authorization
+of the copyright holder.
+
+-----------------------------------------------------------------------------
+All trademarks and registered trademarks mentioned herein are the property of
+their respective owners.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usr/src/uts/common/sys/THIRDPARTYLICENSE.icu.descrip	Tue Oct 09 16:46:51 2007 -0700
@@ -0,0 +1,1 @@
+CP720 CODE CONVERSION MAPPING DATA FROM ICU
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usr/src/uts/common/sys/kiconv.h	Tue Oct 09 16:46:51 2007 -0700
@@ -0,0 +1,167 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+/*
+ * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#ifndef _SYS_KICONV_H
+#define	_SYS_KICONV_H
+
+#pragma ident	"%Z%%M%	%I%	%E% SMI"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <sys/types.h>
+
+#ifdef	_KERNEL
+
+/*
+ * Supported fromcode/tocode values are saved in the following component type
+ * of (name, id) pair. The id values of fromcode and tocode are used to
+ * find out the corresponding code conversions.
+ */
+typedef struct {
+	char		*name;
+	size_t		id;
+} kiconv_code_list_t;
+
+/*
+ * Each unique kiconv code conversion identified by tocode and fromcode ids
+ * have corresponding module id and internal function pointers to open(),
+ * kiconv(), close(), and kiconvstr().
+ */
+typedef struct {
+	uint16_t	tid;		/* tocode id. */
+	uint16_t	fid;		/* fromcode id. */
+	uint16_t	mid;		/* module id. */
+	void		*(*open)(void);
+	size_t		(*kiconv)(void *, char **, size_t *, char **, size_t *,
+			int *);
+	int		(*close)(void *);
+	size_t		(*kiconvstr)(char *, size_t *, char *, size_t *, int,
+			int *);
+} kiconv_conv_list_t;
+
+/*
+ * Each module id has a corresponding module name that is used to load
+ * the module as needed and a reference counter.
+ */
+typedef struct {
+	char		*name;
+	uint_t		refcount;
+} kiconv_mod_list_t;
+
+/*
+ * The following two data structures are being used to transfer information
+ * on the supported kiconv code conversions from a module to the framework.
+ *
+ * Details can be found from kiconv_ops(9S) and kiconv_module_info(9S)
+ * man pages at PSARC/2007/173.
+ */
+typedef struct {
+	char		*tocode;
+	char		*fromcode;
+	void		*(*kiconv_open)(void);
+	size_t		(*kiconv)(void *, char **, size_t *, char **, size_t *,
+			int *);
+	int		(*kiconv_close)(void *);
+	size_t		(*kiconvstr)(char *, size_t *, char *, size_t *, int,
+			int *);
+} kiconv_ops_t;
+
+typedef struct kiconv_mod_info {
+	char		*module_name;
+	size_t		kiconv_num_convs;
+	kiconv_ops_t	*kiconv_ops_tbl;
+	size_t		kiconv_num_aliases;
+	char		**aliases;
+	char		**canonicals;
+	int		nowait;
+} kiconv_module_info_t;
+
+/* The kiconv code conversion descriptor data structure. */
+typedef struct {
+	void		*handle;	/* Handle from the actual open(). */
+	size_t		id;		/* Index to the conv_list[]. */
+} kiconv_data_t, *kiconv_t;
+
+/* Common conversion state data structure. */
+typedef struct {
+	uint8_t		id;
+	uint8_t		bom_processed;
+} kiconv_state_data_t, *kiconv_state_t;
+
+/* Common component types for possible code conversion mapping tables. */
+typedef struct {
+	uchar_t		u8[3];
+} kiconv_to_utf8_tbl_comp_t;
+
+typedef struct {
+	uint32_t	u8:24;
+	uint32_t	sb:8;
+} kiconv_to_sb_tbl_comp_t;
+
+/*
+ * The maximum name length for any given codeset or alias names; the following
+ * should be plenty big enough.
+ */
+#define	KICONV_MAX_CODENAME_LEN		63
+
+/* The following characters do not exist in the normalized code names. */
+#define	KICONV_SKIPPABLE_CHAR(c)	\
+	((c) == '-' || (c) == '_' || (c) == '.' || (c) == '@')
+
+/*
+ * When we encounter non-identical characters, as like iconv(3C) we have,
+ * map them into either one of the replacement characters based on what is
+ * the current target tocde.
+ *
+ * The 0xefbfdb in UTF-8 is U+FFFD in Unicode scalar value.
+ */
+#define	KICONV_ASCII_REPLACEMENT_CHAR	('?')
+#define	KICONV_UTF8_REPLACEMENT_CHAR	(0xefbfbd)
+
+/* Numeric ids for kiconv modules. */
+#define	KICONV_EMBEDDED			(0)
+#define	KICONV_MODULE_ID_JA		(1)
+#define	KICONV_MODULE_ID_SC		(2)
+#define	KICONV_MODULE_ID_KO		(3)
+#define	KICONV_MODULE_ID_TC		(4)
+#define	KICONV_MODULE_ID_EMEA		(5)
+
+#define	KICONV_MAX_MODULE_ID		KICONV_MODULE_ID_EMEA
+
+/* Functions used in kiconv conversion and module management. */
+extern void	kiconv_init();
+extern int	kiconv_register_module(kiconv_module_info_t *);
+extern int	kiconv_unregister_module(kiconv_module_info_t *);
+extern size_t	kiconv_module_ref_count(size_t);
+
+#endif	/* _KERNEL */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SYS_KICONV_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usr/src/uts/common/sys/kiconv_emea1.h	Tue Oct 09 16:46:51 2007 -0700
@@ -0,0 +1,6357 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+/*
+ * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
+ * Use is subject to license terms.
+ */
+/*
+ * COPYRIGHT AND PERMISSION NOTICE
+ *
+ * Copyright (c) 1991-2006 Unicode, Inc. All rights reserved. Distributed under
+ * the Terms of Use in http://www.unicode.org/copyright.html.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of the Unicode data files and any associated documentation (the
+ * "Data Files") or Unicode software and any associated documentation (the
+ * "Software") to deal in the Data Files or Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge,
+ * publish, distribute, and/or sell copies of the Data Files or Software, and
+ * to permit persons to whom the Data Files or Software are furnished to do so,
+ * provided that (a) the above copyright notice(s) and this permission notice
+ * appear with all copies of the Data Files or Software, (b) both the above
+ * copyright notice(s) and this permission notice appear in associated
+ * documentation, and (c) there is clear notice in each modified Data File or
+ * in the Software as well as in the documentation associated with the Data
+ * File(s) or Software that the data or software has been modified.
+ *
+ * THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ * KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+ * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
+ * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
+ * CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+ * OF THE DATA FILES OR SOFTWARE.
+ *
+ * Except as contained in this notice, the name of a copyright holder shall not
+ * be used in advertising or otherwise to promote the sale, use or other
+ * dealings in these Data Files or Software without prior written authorization
+ * of the copyright holder.
+ *
+ * Unicode and the Unicode logo are trademarks of Unicode, Inc., and may be
+ * registered in some jurisdictions. All other trademarks and registered
+ * trademarks mentioned herein are the property of their respective owners.
+ */
+/*
+ * This file has been modified by Sun Microsystems, Inc.
+ */
+
+#ifndef _SYS_KICONV_EMEA1_H
+#define	_SYS_KICONV_EMEA1_H
+
+#pragma ident	"%Z%%M%	%I%	%E% SMI"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <sys/kiconv.h>
+
+#ifdef	_KERNEL
+
+/*
+ * Mapping tables from CP737, CP852, CP857, CP862, CP866, CP1250, CP1251,
+ * CP1253, CP1254, CP1255, CP1256, CP1257, ISO-8859-2, ISO-8859-3, ISO-8859-4,
+ * ISO-8859-5, ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-10,
+ * ISO-8859-11, ISO-8859-13, and KOI8-R to UTF-8.
+ *
+ * Indices are calculated by subtracting 0x80 from single byte character code
+ * values.
+ *
+ * Each component has up to three UTF-8 character bytes; the first byte will
+ * be used to figure out on how many bytes should be taken. If size figured
+ * out has a value less than zero, that means that component isn't valid and
+ * has no assigned character.
+ */
+static const kiconv_to_utf8_tbl_comp_t to_u8_tbl[24][128] = {
+	{	/* CP737 -> UTF-8 */
+		{ 0xCE, 0x91, 0x00 },	/* 0x80 */
+		{ 0xCE, 0x92, 0x00 },	/* 0x81 */
+		{ 0xCE, 0x93, 0x00 },	/* 0x82 */
+		{ 0xCE, 0x94, 0x00 },	/* 0x83 */
+		{ 0xCE, 0x95, 0x00 },	/* 0x84 */
+		{ 0xCE, 0x96, 0x00 },	/* 0x85 */
+		{ 0xCE, 0x97, 0x00 },	/* 0x86 */
+		{ 0xCE, 0x98, 0x00 },	/* 0x87 */
+		{ 0xCE, 0x99, 0x00 },	/* 0x88 */
+		{ 0xCE, 0x9A, 0x00 },	/* 0x89 */
+		{ 0xCE, 0x9B, 0x00 },	/* 0x8A */
+		{ 0xCE, 0x9C, 0x00 },	/* 0x8B */
+		{ 0xCE, 0x9D, 0x00 },	/* 0x8C */
+		{ 0xCE, 0x9E, 0x00 },	/* 0x8D */
+		{ 0xCE, 0x9F, 0x00 },	/* 0x8E */
+		{ 0xCE, 0xA0, 0x00 },	/* 0x8F */
+		{ 0xCE, 0xA1, 0x00 },	/* 0x90 */
+		{ 0xCE, 0xA3, 0x00 },	/* 0x91 */
+		{ 0xCE, 0xA4, 0x00 },	/* 0x92 */
+		{ 0xCE, 0xA5, 0x00 },	/* 0x93 */
+		{ 0xCE, 0xA6, 0x00 },	/* 0x94 */
+		{ 0xCE, 0xA7, 0x00 },	/* 0x95 */
+		{ 0xCE, 0xA8, 0x00 },	/* 0x96 */
+		{ 0xCE, 0xA9, 0x00 },	/* 0x97 */
+		{ 0xCE, 0xB1, 0x00 },	/* 0x98 */
+		{ 0xCE, 0xB2, 0x00 },	/* 0x99 */
+		{ 0xCE, 0xB3, 0x00 },	/* 0x9A */
+		{ 0xCE, 0xB4, 0x00 },	/* 0x9B */
+		{ 0xCE, 0xB5, 0x00 },	/* 0x9C */
+		{ 0xCE, 0xB6, 0x00 },	/* 0x9D */
+		{ 0xCE, 0xB7, 0x00 },	/* 0x9E */
+		{ 0xCE, 0xB8, 0x00 },	/* 0x9F */
+		{ 0xCE, 0xB9, 0x00 },	/* 0xA0 */
+		{ 0xCE, 0xBA, 0x00 },	/* 0xA1 */
+		{ 0xCE, 0xBB, 0x00 },	/* 0xA2 */
+		{ 0xCE, 0xBC, 0x00 },	/* 0xA3 */
+		{ 0xCE, 0xBD, 0x00 },	/* 0xA4 */
+		{ 0xCE, 0xBE, 0x00 },	/* 0xA5 */
+		{ 0xCE, 0xBF, 0x00 },	/* 0xA6 */
+		{ 0xCF, 0x80, 0x00 },	/* 0xA7 */
+		{ 0xCF, 0x81, 0x00 },	/* 0xA8 */
+		{ 0xCF, 0x83, 0x00 },	/* 0xA9 */
+		{ 0xCF, 0x82, 0x00 },	/* 0xAA */
+		{ 0xCF, 0x84, 0x00 },	/* 0xAB */
+		{ 0xCF, 0x85, 0x00 },	/* 0xAC */
+		{ 0xCF, 0x86, 0x00 },	/* 0xAD */
+		{ 0xCF, 0x87, 0x00 },	/* 0xAE */
+		{ 0xCF, 0x88, 0x00 },	/* 0xAF */
+		{ 0xE2, 0x96, 0x91 },	/* 0xB0 */
+		{ 0xE2, 0x96, 0x92 },	/* 0xB1 */
+		{ 0xE2, 0x96, 0x93 },	/* 0xB2 */
+		{ 0xE2, 0x94, 0x82 },	/* 0xB3 */
+		{ 0xE2, 0x94, 0xA4 },	/* 0xB4 */
+		{ 0xE2, 0x95, 0xA1 },	/* 0xB5 */
+		{ 0xE2, 0x95, 0xA2 },	/* 0xB6 */
+		{ 0xE2, 0x95, 0x96 },	/* 0xB7 */
+		{ 0xE2, 0x95, 0x95 },	/* 0xB8 */
+		{ 0xE2, 0x95, 0xA3 },	/* 0xB9 */
+		{ 0xE2, 0x95, 0x91 },	/* 0xBA */
+		{ 0xE2, 0x95, 0x97 },	/* 0xBB */
+		{ 0xE2, 0x95, 0x9D },	/* 0xBC */
+		{ 0xE2, 0x95, 0x9C },	/* 0xBD */
+		{ 0xE2, 0x95, 0x9B },	/* 0xBE */
+		{ 0xE2, 0x94, 0x90 },	/* 0xBF */
+		{ 0xE2, 0x94, 0x94 },	/* 0xC0 */
+		{ 0xE2, 0x94, 0xB4 },	/* 0xC1 */
+		{ 0xE2, 0x94, 0xAC },	/* 0xC2 */
+		{ 0xE2, 0x94, 0x9C },	/* 0xC3 */
+		{ 0xE2, 0x94, 0x80 },	/* 0xC4 */
+		{ 0xE2, 0x94, 0xBC },	/* 0xC5 */
+		{ 0xE2, 0x95, 0x9E },	/* 0xC6 */
+		{ 0xE2, 0x95, 0x9F },	/* 0xC7 */
+		{ 0xE2, 0x95, 0x9A },	/* 0xC8 */
+		{ 0xE2, 0x95, 0x94 },	/* 0xC9 */
+		{ 0xE2, 0x95, 0xA9 },	/* 0xCA */
+		{ 0xE2, 0x95, 0xA6 },	/* 0xCB */
+		{ 0xE2, 0x95, 0xA0 },	/* 0xCC */
+		{ 0xE2, 0x95, 0x90 },	/* 0xCD */
+		{ 0xE2, 0x95, 0xAC },	/* 0xCE */
+		{ 0xE2, 0x95, 0xA7 },	/* 0xCF */
+		{ 0xE2, 0x95, 0xA8 },	/* 0xD0 */
+		{ 0xE2, 0x95, 0xA4 },	/* 0xD1 */
+		{ 0xE2, 0x95, 0xA5 },	/* 0xD2 */
+		{ 0xE2, 0x95, 0x99 },	/* 0xD3 */
+		{ 0xE2, 0x95, 0x98 },	/* 0xD4 */
+		{ 0xE2, 0x95, 0x92 },	/* 0xD5 */
+		{ 0xE2, 0x95, 0x93 },	/* 0xD6 */
+		{ 0xE2, 0x95, 0xAB },	/* 0xD7 */
+		{ 0xE2, 0x95, 0xAA },	/* 0xD8 */
+		{ 0xE2, 0x94, 0x98 },	/* 0xD9 */
+		{ 0xE2, 0x94, 0x8C },	/* 0xDA */
+		{ 0xE2, 0x96, 0x88 },	/* 0xDB */
+		{ 0xE2, 0x96, 0x84 },	/* 0xDC */
+		{ 0xE2, 0x96, 0x8C },	/* 0xDD */
+		{ 0xE2, 0x96, 0x90 },	/* 0xDE */
+		{ 0xE2, 0x96, 0x80 },	/* 0xDF */
+		{ 0xCF, 0x89, 0x00 },	/* 0xE0 */
+		{ 0xCE, 0xAC, 0x00 },	/* 0xE1 */
+		{ 0xCE, 0xAD, 0x00 },	/* 0xE2 */
+		{ 0xCE, 0xAE, 0x00 },	/* 0xE3 */
+		{ 0xCF, 0x8A, 0x00 },	/* 0xE4 */
+		{ 0xCE, 0xAF, 0x00 },	/* 0xE5 */
+		{ 0xCF, 0x8C, 0x00 },	/* 0xE6 */
+		{ 0xCF, 0x8D, 0x00 },	/* 0xE7 */
+		{ 0xCF, 0x8B, 0x00 },	/* 0xE8 */
+		{ 0xCF, 0x8E, 0x00 },	/* 0xE9 */
+		{ 0xCE, 0x86, 0x00 },	/* 0xEA */
+		{ 0xCE, 0x88, 0x00 },	/* 0xEB */
+		{ 0xCE, 0x89, 0x00 },	/* 0xEC */
+		{ 0xCE, 0x8A, 0x00 },	/* 0xED */
+		{ 0xCE, 0x8C, 0x00 },	/* 0xEE */
+		{ 0xCE, 0x8E, 0x00 },	/* 0xEF */
+		{ 0xCE, 0x8F, 0x00 },	/* 0xF0 */
+		{ 0xC2, 0xB1, 0x00 },	/* 0xF1 */
+		{ 0xE2, 0x89, 0xA5 },	/* 0xF2 */
+		{ 0xE2, 0x89, 0xA4 },	/* 0xF3 */
+		{ 0xCE, 0xAA, 0x00 },	/* 0xF4 */
+		{ 0xCE, 0xAB, 0x00 },	/* 0xF5 */
+		{ 0xC3, 0xB7, 0x00 },	/* 0xF6 */
+		{ 0xE2, 0x89, 0x88 },	/* 0xF7 */
+		{ 0xC2, 0xB0, 0x00 },	/* 0xF8 */
+		{ 0xE2, 0x88, 0x99 },	/* 0xF9 */
+		{ 0xC2, 0xB7, 0x00 },	/* 0xFA */
+		{ 0xE2, 0x88, 0x9A },	/* 0xFB */
+		{ 0xE2, 0x81, 0xBF },	/* 0xFC */
+		{ 0xC2, 0xB2, 0x00 },	/* 0xFD */
+		{ 0xE2, 0x96, 0xA0 },	/* 0xFE */
+		{ 0xC2, 0xA0, 0x00 },	/* 0xFF */
+	},
+	{	/* CP852 -> UTF-8 */
+		{ 0xC3, 0x87, 0x00 },	/* 0x80 */
+		{ 0xC3, 0xBC, 0x00 },	/* 0x81 */
+		{ 0xC3, 0xA9, 0x00 },	/* 0x82 */
+		{ 0xC3, 0xA2, 0x00 },	/* 0x83 */
+		{ 0xC3, 0xA4, 0x00 },	/* 0x84 */
+		{ 0xC5, 0xAF, 0x00 },	/* 0x85 */
+		{ 0xC4, 0x87, 0x00 },	/* 0x86 */
+		{ 0xC3, 0xA7, 0x00 },	/* 0x87 */
+		{ 0xC5, 0x82, 0x00 },	/* 0x88 */
+		{ 0xC3, 0xAB, 0x00 },	/* 0x89 */
+		{ 0xC5, 0x90, 0x00 },	/* 0x8A */
+		{ 0xC5, 0x91, 0x00 },	/* 0x8B */
+		{ 0xC3, 0xAE, 0x00 },	/* 0x8C */
+		{ 0xC5, 0xB9, 0x00 },	/* 0x8D */
+		{ 0xC3, 0x84, 0x00 },	/* 0x8E */
+		{ 0xC4, 0x86, 0x00 },	/* 0x8F */
+		{ 0xC3, 0x89, 0x00 },	/* 0x90 */
+		{ 0xC4, 0xB9, 0x00 },	/* 0x91 */
+		{ 0xC4, 0xBA, 0x00 },	/* 0x92 */
+		{ 0xC3, 0xB4, 0x00 },	/* 0x93 */
+		{ 0xC3, 0xB6, 0x00 },	/* 0x94 */
+		{ 0xC4, 0xBD, 0x00 },	/* 0x95 */
+		{ 0xC4, 0xBE, 0x00 },	/* 0x96 */
+		{ 0xC5, 0x9A, 0x00 },	/* 0x97 */
+		{ 0xC5, 0x9B, 0x00 },	/* 0x98 */
+		{ 0xC3, 0x96, 0x00 },	/* 0x99 */
+		{ 0xC3, 0x9C, 0x00 },	/* 0x9A */
+		{ 0xC5, 0xA4, 0x00 },	/* 0x9B */
+		{ 0xC5, 0xA5, 0x00 },	/* 0x9C */
+		{ 0xC5, 0x81, 0x00 },	/* 0x9D */
+		{ 0xC3, 0x97, 0x00 },	/* 0x9E */
+		{ 0xC4, 0x8D, 0x00 },	/* 0x9F */
+		{ 0xC3, 0xA1, 0x00 },	/* 0xA0 */
+		{ 0xC3, 0xAD, 0x00 },	/* 0xA1 */
+		{ 0xC3, 0xB3, 0x00 },	/* 0xA2 */
+		{ 0xC3, 0xBA, 0x00 },	/* 0xA3 */
+		{ 0xC4, 0x84, 0x00 },	/* 0xA4 */
+		{ 0xC4, 0x85, 0x00 },	/* 0xA5 */
+		{ 0xC5, 0xBD, 0x00 },	/* 0xA6 */
+		{ 0xC5, 0xBE, 0x00 },	/* 0xA7 */
+		{ 0xC4, 0x98, 0x00 },	/* 0xA8 */
+		{ 0xC4, 0x99, 0x00 },	/* 0xA9 */
+		{ 0xC2, 0xAC, 0x00 },	/* 0xAA */
+		{ 0xC5, 0xBA, 0x00 },	/* 0xAB */
+		{ 0xC4, 0x8C, 0x00 },	/* 0xAC */
+		{ 0xC5, 0x9F, 0x00 },	/* 0xAD */
+		{ 0xC2, 0xAB, 0x00 },	/* 0xAE */
+		{ 0xC2, 0xBB, 0x00 },	/* 0xAF */
+		{ 0xE2, 0x96, 0x91 },	/* 0xB0 */
+		{ 0xE2, 0x96, 0x92 },	/* 0xB1 */
+		{ 0xE2, 0x96, 0x93 },	/* 0xB2 */
+		{ 0xE2, 0x94, 0x82 },	/* 0xB3 */
+		{ 0xE2, 0x94, 0xA4 },	/* 0xB4 */
+		{ 0xC3, 0x81, 0x00 },	/* 0xB5 */
+		{ 0xC3, 0x82, 0x00 },	/* 0xB6 */
+		{ 0xC4, 0x9A, 0x00 },	/* 0xB7 */
+		{ 0xC5, 0x9E, 0x00 },	/* 0xB8 */
+		{ 0xE2, 0x95, 0xA3 },	/* 0xB9 */
+		{ 0xE2, 0x95, 0x91 },	/* 0xBA */
+		{ 0xE2, 0x95, 0x97 },	/* 0xBB */
+		{ 0xE2, 0x95, 0x9D },	/* 0xBC */
+		{ 0xC5, 0xBB, 0x00 },	/* 0xBD */
+		{ 0xC5, 0xBC, 0x00 },	/* 0xBE */
+		{ 0xE2, 0x94, 0x90 },	/* 0xBF */
+		{ 0xE2, 0x94, 0x94 },	/* 0xC0 */
+		{ 0xE2, 0x94, 0xB4 },	/* 0xC1 */
+		{ 0xE2, 0x94, 0xAC },	/* 0xC2 */
+		{ 0xE2, 0x94, 0x9C },	/* 0xC3 */
+		{ 0xE2, 0x94, 0x80 },	/* 0xC4 */
+		{ 0xE2, 0x94, 0xBC },	/* 0xC5 */
+		{ 0xC4, 0x82, 0x00 },	/* 0xC6 */
+		{ 0xC4, 0x83, 0x00 },	/* 0xC7 */
+		{ 0xE2, 0x95, 0x9A },	/* 0xC8 */
+		{ 0xE2, 0x95, 0x94 },	/* 0xC9 */
+		{ 0xE2, 0x95, 0xA9 },	/* 0xCA */
+		{ 0xE2, 0x95, 0xA6 },	/* 0xCB */
+		{ 0xE2, 0x95, 0xA0 },	/* 0xCC */
+		{ 0xE2, 0x95, 0x90 },	/* 0xCD */
+		{ 0xE2, 0x95, 0xAC },	/* 0xCE */
+		{ 0xC2, 0xA4, 0x00 },	/* 0xCF */
+		{ 0xC4, 0x91, 0x00 },	/* 0xD0 */
+		{ 0xC4, 0x90, 0x00 },	/* 0xD1 */
+		{ 0xC4, 0x8E, 0x00 },	/* 0xD2 */
+		{ 0xC3, 0x8B, 0x00 },	/* 0xD3 */
+		{ 0xC4, 0x8F, 0x00 },	/* 0xD4 */
+		{ 0xC5, 0x87, 0x00 },	/* 0xD5 */
+		{ 0xC3, 0x8D, 0x00 },	/* 0xD6 */
+		{ 0xC3, 0x8E, 0x00 },	/* 0xD7 */
+		{ 0xC4, 0x9B, 0x00 },	/* 0xD8 */
+		{ 0xE2, 0x94, 0x98 },	/* 0xD9 */
+		{ 0xE2, 0x94, 0x8C },	/* 0xDA */
+		{ 0xE2, 0x96, 0x88 },	/* 0xDB */
+		{ 0xE2, 0x96, 0x84 },	/* 0xDC */
+		{ 0xC5, 0xA2, 0x00 },	/* 0xDD */
+		{ 0xC5, 0xAE, 0x00 },	/* 0xDE */
+		{ 0xE2, 0x96, 0x80 },	/* 0xDF */
+		{ 0xC3, 0x93, 0x00 },	/* 0xE0 */
+		{ 0xC3, 0x9F, 0x00 },	/* 0xE1 */
+		{ 0xC3, 0x94, 0x00 },	/* 0xE2 */
+		{ 0xC5, 0x83, 0x00 },	/* 0xE3 */
+		{ 0xC5, 0x84, 0x00 },	/* 0xE4 */
+		{ 0xC5, 0x88, 0x00 },	/* 0xE5 */
+		{ 0xC5, 0xA0, 0x00 },	/* 0xE6 */
+		{ 0xC5, 0xA1, 0x00 },	/* 0xE7 */
+		{ 0xC5, 0x94, 0x00 },	/* 0xE8 */
+		{ 0xC3, 0x9A, 0x00 },	/* 0xE9 */
+		{ 0xC5, 0x95, 0x00 },	/* 0xEA */
+		{ 0xC5, 0xB0, 0x00 },	/* 0xEB */
+		{ 0xC3, 0xBD, 0x00 },	/* 0xEC */
+		{ 0xC3, 0x9D, 0x00 },	/* 0xED */
+		{ 0xC5, 0xA3, 0x00 },	/* 0xEE */
+		{ 0xC2, 0xB4, 0x00 },	/* 0xEF */
+		{ 0xC2, 0xAD, 0x00 },	/* 0xF0 */
+		{ 0xCB, 0x9D, 0x00 },	/* 0xF1 */
+		{ 0xCB, 0x9B, 0x00 },	/* 0xF2 */
+		{ 0xCB, 0x87, 0x00 },	/* 0xF3 */
+		{ 0xCB, 0x98, 0x00 },	/* 0xF4 */
+		{ 0xC2, 0xA7, 0x00 },	/* 0xF5 */
+		{ 0xC3, 0xB7, 0x00 },	/* 0xF6 */
+		{ 0xC2, 0xB8, 0x00 },	/* 0xF7 */
+		{ 0xC2, 0xB0, 0x00 },	/* 0xF8 */
+		{ 0xC2, 0xA8, 0x00 },	/* 0xF9 */
+		{ 0xCB, 0x99, 0x00 },	/* 0xFA */
+		{ 0xC5, 0xB1, 0x00 },	/* 0xFB */
+		{ 0xC5, 0x98, 0x00 },	/* 0xFC */
+		{ 0xC5, 0x99, 0x00 },	/* 0xFD */
+		{ 0xE2, 0x96, 0xA0 },	/* 0xFE */
+		{ 0xC2, 0xA0, 0x00 },	/* 0xFF */
+	},
+	{	/* CP857 -> UTF-8 */
+		{ 0xC3, 0x87, 0x00 },	/* 0x80 */
+		{ 0xC3, 0xBC, 0x00 },	/* 0x81 */
+		{ 0xC3, 0xA9, 0x00 },	/* 0x82 */
+		{ 0xC3, 0xA2, 0x00 },	/* 0x83 */
+		{ 0xC3, 0xA4, 0x00 },	/* 0x84 */
+		{ 0xC3, 0xA0, 0x00 },	/* 0x85 */
+		{ 0xC3, 0xA5, 0x00 },	/* 0x86 */
+		{ 0xC3, 0xA7, 0x00 },	/* 0x87 */
+		{ 0xC3, 0xAA, 0x00 },	/* 0x88 */
+		{ 0xC3, 0xAB, 0x00 },	/* 0x89 */
+		{ 0xC3, 0xA8, 0x00 },	/* 0x8A */
+		{ 0xC3, 0xAF, 0x00 },	/* 0x8B */
+		{ 0xC3, 0xAE, 0x00 },	/* 0x8C */
+		{ 0xC4, 0xB1, 0x00 },	/* 0x8D */
+		{ 0xC3, 0x84, 0x00 },	/* 0x8E */
+		{ 0xC3, 0x85, 0x00 },	/* 0x8F */
+		{ 0xC3, 0x89, 0x00 },	/* 0x90 */
+		{ 0xC3, 0xA6, 0x00 },	/* 0x91 */
+		{ 0xC3, 0x86, 0x00 },	/* 0x92 */
+		{ 0xC3, 0xB4, 0x00 },	/* 0x93 */
+		{ 0xC3, 0xB6, 0x00 },	/* 0x94 */
+		{ 0xC3, 0xB2, 0x00 },	/* 0x95 */
+		{ 0xC3, 0xBB, 0x00 },	/* 0x96 */
+		{ 0xC3, 0xB9, 0x00 },	/* 0x97 */
+		{ 0xC4, 0xB0, 0x00 },	/* 0x98 */
+		{ 0xC3, 0x96, 0x00 },	/* 0x99 */
+		{ 0xC3, 0x9C, 0x00 },	/* 0x9A */
+		{ 0xC3, 0xB8, 0x00 },	/* 0x9B */
+		{ 0xC2, 0xA3, 0x00 },	/* 0x9C */
+		{ 0xC3, 0x98, 0x00 },	/* 0x9D */
+		{ 0xC5, 0x9E, 0x00 },	/* 0x9E */
+		{ 0xC5, 0x9F, 0x00 },	/* 0x9F */
+		{ 0xC3, 0xA1, 0x00 },	/* 0xA0 */
+		{ 0xC3, 0xAD, 0x00 },	/* 0xA1 */
+		{ 0xC3, 0xB3, 0x00 },	/* 0xA2 */
+		{ 0xC3, 0xBA, 0x00 },	/* 0xA3 */
+		{ 0xC3, 0xB1, 0x00 },	/* 0xA4 */
+		{ 0xC3, 0x91, 0x00 },	/* 0xA5 */
+		{ 0xC4, 0x9E, 0x00 },	/* 0xA6 */
+		{ 0xC4, 0x9F, 0x00 },	/* 0xA7 */
+		{ 0xC2, 0xBF, 0x00 },	/* 0xA8 */
+		{ 0xC2, 0xAE, 0x00 },	/* 0xA9 */
+		{ 0xC2, 0xAC, 0x00 },	/* 0xAA */
+		{ 0xC2, 0xBD, 0x00 },	/* 0xAB */
+		{ 0xC2, 0xBC, 0x00 },	/* 0xAC */
+		{ 0xC2, 0xA1, 0x00 },	/* 0xAD */
+		{ 0xC2, 0xAB, 0x00 },	/* 0xAE */
+		{ 0xC2, 0xBB, 0x00 },	/* 0xAF */
+		{ 0xE2, 0x96, 0x91 },	/* 0xB0 */
+		{ 0xE2, 0x96, 0x92 },	/* 0xB1 */
+		{ 0xE2, 0x96, 0x93 },	/* 0xB2 */
+		{ 0xE2, 0x94, 0x82 },	/* 0xB3 */
+		{ 0xE2, 0x94, 0xA4 },	/* 0xB4 */
+		{ 0xC3, 0x81, 0x00 },	/* 0xB5 */
+		{ 0xC3, 0x82, 0x00 },	/* 0xB6 */
+		{ 0xC3, 0x80, 0x00 },	/* 0xB7 */
+		{ 0xC2, 0xA9, 0x00 },	/* 0xB8 */
+		{ 0xE2, 0x95, 0xA3 },	/* 0xB9 */
+		{ 0xE2, 0x95, 0x91 },	/* 0xBA */
+		{ 0xE2, 0x95, 0x97 },	/* 0xBB */
+		{ 0xE2, 0x95, 0x9D },	/* 0xBC */
+		{ 0xC2, 0xA2, 0x00 },	/* 0xBD */
+		{ 0xC2, 0xA5, 0x00 },	/* 0xBE */
+		{ 0xE2, 0x94, 0x90 },	/* 0xBF */
+		{ 0xE2, 0x94, 0x94 },	/* 0xC0 */
+		{ 0xE2, 0x94, 0xB4 },	/* 0xC1 */
+		{ 0xE2, 0x94, 0xAC },	/* 0xC2 */
+		{ 0xE2, 0x94, 0x9C },	/* 0xC3 */
+		{ 0xE2, 0x94, 0x80 },	/* 0xC4 */
+		{ 0xE2, 0x94, 0xBC },	/* 0xC5 */
+		{ 0xC3, 0xA3, 0x00 },	/* 0xC6 */
+		{ 0xC3, 0x83, 0x00 },	/* 0xC7 */
+		{ 0xE2, 0x95, 0x9A },	/* 0xC8 */
+		{ 0xE2, 0x95, 0x94 },	/* 0xC9 */
+		{ 0xE2, 0x95, 0xA9 },	/* 0xCA */
+		{ 0xE2, 0x95, 0xA6 },	/* 0xCB */
+		{ 0xE2, 0x95, 0xA0 },	/* 0xCC */
+		{ 0xE2, 0x95, 0x90 },	/* 0xCD */
+		{ 0xE2, 0x95, 0xAC },	/* 0xCE */
+		{ 0xC2, 0xA4, 0x00 },	/* 0xCF */
+		{ 0xC2, 0xBA, 0x00 },	/* 0xD0 */
+		{ 0xC2, 0xAA, 0x00 },	/* 0xD1 */
+		{ 0xC3, 0x8A, 0x00 },	/* 0xD2 */
+		{ 0xC3, 0x8B, 0x00 },	/* 0xD3 */
+		{ 0xC3, 0x88, 0x00 },	/* 0xD4 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xD5 (illegal character) */
+		{ 0xC3, 0x8D, 0x00 },	/* 0xD6 */
+		{ 0xC3, 0x8E, 0x00 },	/* 0xD7 */
+		{ 0xC3, 0x8F, 0x00 },	/* 0xD8 */
+		{ 0xE2, 0x94, 0x98 },	/* 0xD9 */
+		{ 0xE2, 0x94, 0x8C },	/* 0xDA */
+		{ 0xE2, 0x96, 0x88 },	/* 0xDB */
+		{ 0xE2, 0x96, 0x84 },	/* 0xDC */
+		{ 0xC2, 0xA6, 0x00 },	/* 0xDD */
+		{ 0xC3, 0x8C, 0x00 },	/* 0xDE */
+		{ 0xE2, 0x96, 0x80 },	/* 0xDF */
+		{ 0xC3, 0x93, 0x00 },	/* 0xE0 */
+		{ 0xC3, 0x9F, 0x00 },	/* 0xE1 */
+		{ 0xC3, 0x94, 0x00 },	/* 0xE2 */
+		{ 0xC3, 0x92, 0x00 },	/* 0xE3 */
+		{ 0xC3, 0xB5, 0x00 },	/* 0xE4 */
+		{ 0xC3, 0x95, 0x00 },	/* 0xE5 */
+		{ 0xC2, 0xB5, 0x00 },	/* 0xE6 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xE7 (illegal character) */
+		{ 0xC3, 0x97, 0x00 },	/* 0xE8 */
+		{ 0xC3, 0x9A, 0x00 },	/* 0xE9 */
+		{ 0xC3, 0x9B, 0x00 },	/* 0xEA */
+		{ 0xC3, 0x99, 0x00 },	/* 0xEB */
+		{ 0xC3, 0xAC, 0x00 },	/* 0xEC */
+		{ 0xC3, 0xBF, 0x00 },	/* 0xED */
+		{ 0xC2, 0xAF, 0x00 },	/* 0xEE */
+		{ 0xC2, 0xB4, 0x00 },	/* 0xEF */
+		{ 0xC2, 0xAD, 0x00 },	/* 0xF0 */
+		{ 0xC2, 0xB1, 0x00 },	/* 0xF1 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xF2 (illegal character) */
+		{ 0xC2, 0xBE, 0x00 },	/* 0xF3 */
+		{ 0xC2, 0xB6, 0x00 },	/* 0xF4 */
+		{ 0xC2, 0xA7, 0x00 },	/* 0xF5 */
+		{ 0xC3, 0xB7, 0x00 },	/* 0xF6 */
+		{ 0xC2, 0xB8, 0x00 },	/* 0xF7 */
+		{ 0xC2, 0xB0, 0x00 },	/* 0xF8 */
+		{ 0xC2, 0xA8, 0x00 },	/* 0xF9 */
+		{ 0xC2, 0xB7, 0x00 },	/* 0xFA */
+		{ 0xC2, 0xB9, 0x00 },	/* 0xFB */
+		{ 0xC2, 0xB3, 0x00 },	/* 0xFC */
+		{ 0xC2, 0xB2, 0x00 },	/* 0xFD */
+		{ 0xE2, 0x96, 0xA0 },	/* 0xFE */
+		{ 0xC2, 0xA0, 0x00 },	/* 0xFF */
+	},
+	{	/* CP862 -> UTF-8 */
+		{ 0xD7, 0x90, 0x00 },	/* 0x80 */
+		{ 0xD7, 0x91, 0x00 },	/* 0x81 */
+		{ 0xD7, 0x92, 0x00 },	/* 0x82 */
+		{ 0xD7, 0x93, 0x00 },	/* 0x83 */
+		{ 0xD7, 0x94, 0x00 },	/* 0x84 */
+		{ 0xD7, 0x95, 0x00 },	/* 0x85 */
+		{ 0xD7, 0x96, 0x00 },	/* 0x86 */
+		{ 0xD7, 0x97, 0x00 },	/* 0x87 */
+		{ 0xD7, 0x98, 0x00 },	/* 0x88 */
+		{ 0xD7, 0x99, 0x00 },	/* 0x89 */
+		{ 0xD7, 0x9A, 0x00 },	/* 0x8A */
+		{ 0xD7, 0x9B, 0x00 },	/* 0x8B */
+		{ 0xD7, 0x9C, 0x00 },	/* 0x8C */
+		{ 0xD7, 0x9D, 0x00 },	/* 0x8D */
+		{ 0xD7, 0x9E, 0x00 },	/* 0x8E */
+		{ 0xD7, 0x9F, 0x00 },	/* 0x8F */
+		{ 0xD7, 0xA0, 0x00 },	/* 0x90 */
+		{ 0xD7, 0xA1, 0x00 },	/* 0x91 */
+		{ 0xD7, 0xA2, 0x00 },	/* 0x92 */
+		{ 0xD7, 0xA3, 0x00 },	/* 0x93 */
+		{ 0xD7, 0xA4, 0x00 },	/* 0x94 */
+		{ 0xD7, 0xA5, 0x00 },	/* 0x95 */
+		{ 0xD7, 0xA6, 0x00 },	/* 0x96 */
+		{ 0xD7, 0xA7, 0x00 },	/* 0x97 */
+		{ 0xD7, 0xA8, 0x00 },	/* 0x98 */
+		{ 0xD7, 0xA9, 0x00 },	/* 0x99 */
+		{ 0xD7, 0xAA, 0x00 },	/* 0x9A */
+		{ 0xC2, 0xA2, 0x00 },	/* 0x9B */
+		{ 0xC2, 0xA3, 0x00 },	/* 0x9C */
+		{ 0xC2, 0xA5, 0x00 },	/* 0x9D */
+		{ 0xE2, 0x82, 0xA7 },	/* 0x9E */
+		{ 0xC6, 0x92, 0x00 },	/* 0x9F */
+		{ 0xC3, 0xA1, 0x00 },	/* 0xA0 */
+		{ 0xC3, 0xAD, 0x00 },	/* 0xA1 */
+		{ 0xC3, 0xB3, 0x00 },	/* 0xA2 */
+		{ 0xC3, 0xBA, 0x00 },	/* 0xA3 */
+		{ 0xC3, 0xB1, 0x00 },	/* 0xA4 */
+		{ 0xC3, 0x91, 0x00 },	/* 0xA5 */
+		{ 0xC2, 0xAA, 0x00 },	/* 0xA6 */
+		{ 0xC2, 0xBA, 0x00 },	/* 0xA7 */
+		{ 0xC2, 0xBF, 0x00 },	/* 0xA8 */
+		{ 0xE2, 0x8C, 0x90 },	/* 0xA9 */
+		{ 0xC2, 0xAC, 0x00 },	/* 0xAA */
+		{ 0xC2, 0xBD, 0x00 },	/* 0xAB */
+		{ 0xC2, 0xBC, 0x00 },	/* 0xAC */
+		{ 0xC2, 0xA1, 0x00 },	/* 0xAD */
+		{ 0xC2, 0xAB, 0x00 },	/* 0xAE */
+		{ 0xC2, 0xBB, 0x00 },	/* 0xAF */
+		{ 0xE2, 0x96, 0x91 },	/* 0xB0 */
+		{ 0xE2, 0x96, 0x92 },	/* 0xB1 */
+		{ 0xE2, 0x96, 0x93 },	/* 0xB2 */
+		{ 0xE2, 0x94, 0x82 },	/* 0xB3 */
+		{ 0xE2, 0x94, 0xA4 },	/* 0xB4 */
+		{ 0xE2, 0x95, 0xA1 },	/* 0xB5 */
+		{ 0xE2, 0x95, 0xA2 },	/* 0xB6 */
+		{ 0xE2, 0x95, 0x96 },	/* 0xB7 */
+		{ 0xE2, 0x95, 0x95 },	/* 0xB8 */
+		{ 0xE2, 0x95, 0xA3 },	/* 0xB9 */
+		{ 0xE2, 0x95, 0x91 },	/* 0xBA */
+		{ 0xE2, 0x95, 0x97 },	/* 0xBB */
+		{ 0xE2, 0x95, 0x9D },	/* 0xBC */
+		{ 0xE2, 0x95, 0x9C },	/* 0xBD */
+		{ 0xE2, 0x95, 0x9B },	/* 0xBE */
+		{ 0xE2, 0x94, 0x90 },	/* 0xBF */
+		{ 0xE2, 0x94, 0x94 },	/* 0xC0 */
+		{ 0xE2, 0x94, 0xB4 },	/* 0xC1 */
+		{ 0xE2, 0x94, 0xAC },	/* 0xC2 */
+		{ 0xE2, 0x94, 0x9C },	/* 0xC3 */
+		{ 0xE2, 0x94, 0x80 },	/* 0xC4 */
+		{ 0xE2, 0x94, 0xBC },	/* 0xC5 */
+		{ 0xE2, 0x95, 0x9E },	/* 0xC6 */
+		{ 0xE2, 0x95, 0x9F },	/* 0xC7 */
+		{ 0xE2, 0x95, 0x9A },	/* 0xC8 */
+		{ 0xE2, 0x95, 0x94 },	/* 0xC9 */
+		{ 0xE2, 0x95, 0xA9 },	/* 0xCA */
+		{ 0xE2, 0x95, 0xA6 },	/* 0xCB */
+		{ 0xE2, 0x95, 0xA0 },	/* 0xCC */
+		{ 0xE2, 0x95, 0x90 },	/* 0xCD */
+		{ 0xE2, 0x95, 0xAC },	/* 0xCE */
+		{ 0xE2, 0x95, 0xA7 },	/* 0xCF */
+		{ 0xE2, 0x95, 0xA8 },	/* 0xD0 */
+		{ 0xE2, 0x95, 0xA4 },	/* 0xD1 */
+		{ 0xE2, 0x95, 0xA5 },	/* 0xD2 */
+		{ 0xE2, 0x95, 0x99 },	/* 0xD3 */
+		{ 0xE2, 0x95, 0x98 },	/* 0xD4 */
+		{ 0xE2, 0x95, 0x92 },	/* 0xD5 */
+		{ 0xE2, 0x95, 0x93 },	/* 0xD6 */
+		{ 0xE2, 0x95, 0xAB },	/* 0xD7 */
+		{ 0xE2, 0x95, 0xAA },	/* 0xD8 */
+		{ 0xE2, 0x94, 0x98 },	/* 0xD9 */
+		{ 0xE2, 0x94, 0x8C },	/* 0xDA */
+		{ 0xE2, 0x96, 0x88 },	/* 0xDB */
+		{ 0xE2, 0x96, 0x84 },	/* 0xDC */
+		{ 0xE2, 0x96, 0x8C },	/* 0xDD */
+		{ 0xE2, 0x96, 0x90 },	/* 0xDE */
+		{ 0xE2, 0x96, 0x80 },	/* 0xDF */
+		{ 0xCE, 0xB1, 0x00 },	/* 0xE0 */
+		{ 0xC3, 0x9F, 0x00 },	/* 0xE1 */
+		{ 0xCE, 0x93, 0x00 },	/* 0xE2 */
+		{ 0xCF, 0x80, 0x00 },	/* 0xE3 */
+		{ 0xCE, 0xA3, 0x00 },	/* 0xE4 */
+		{ 0xCF, 0x83, 0x00 },	/* 0xE5 */
+		{ 0xC2, 0xB5, 0x00 },	/* 0xE6 */
+		{ 0xCF, 0x84, 0x00 },	/* 0xE7 */
+		{ 0xCE, 0xA6, 0x00 },	/* 0xE8 */
+		{ 0xCE, 0x98, 0x00 },	/* 0xE9 */
+		{ 0xCE, 0xA9, 0x00 },	/* 0xEA */
+		{ 0xCE, 0xB4, 0x00 },	/* 0xEB */
+		{ 0xE2, 0x88, 0x9E },	/* 0xEC */
+		{ 0xCF, 0x86, 0x00 },	/* 0xED */
+		{ 0xCE, 0xB5, 0x00 },	/* 0xEE */
+		{ 0xE2, 0x88, 0xA9 },	/* 0xEF */
+		{ 0xE2, 0x89, 0xA1 },	/* 0xF0 */
+		{ 0xC2, 0xB1, 0x00 },	/* 0xF1 */
+		{ 0xE2, 0x89, 0xA5 },	/* 0xF2 */
+		{ 0xE2, 0x89, 0xA4 },	/* 0xF3 */
+		{ 0xE2, 0x8C, 0xA0 },	/* 0xF4 */
+		{ 0xE2, 0x8C, 0xA1 },	/* 0xF5 */
+		{ 0xC3, 0xB7, 0x00 },	/* 0xF6 */
+		{ 0xE2, 0x89, 0x88 },	/* 0xF7 */
+		{ 0xC2, 0xB0, 0x00 },	/* 0xF8 */
+		{ 0xE2, 0x88, 0x99 },	/* 0xF9 */
+		{ 0xC2, 0xB7, 0x00 },	/* 0xFA */
+		{ 0xE2, 0x88, 0x9A },	/* 0xFB */
+		{ 0xE2, 0x81, 0xBF },	/* 0xFC */
+		{ 0xC2, 0xB2, 0x00 },	/* 0xFD */
+		{ 0xE2, 0x96, 0xA0 },	/* 0xFE */
+		{ 0xC2, 0xA0, 0x00 },	/* 0xFF */
+	},
+	{	/* CP866 -> UTF-8 */
+		{ 0xD0, 0x90, 0x00 },	/* 0x80 */
+		{ 0xD0, 0x91, 0x00 },	/* 0x81 */
+		{ 0xD0, 0x92, 0x00 },	/* 0x82 */
+		{ 0xD0, 0x93, 0x00 },	/* 0x83 */
+		{ 0xD0, 0x94, 0x00 },	/* 0x84 */
+		{ 0xD0, 0x95, 0x00 },	/* 0x85 */
+		{ 0xD0, 0x96, 0x00 },	/* 0x86 */
+		{ 0xD0, 0x97, 0x00 },	/* 0x87 */
+		{ 0xD0, 0x98, 0x00 },	/* 0x88 */
+		{ 0xD0, 0x99, 0x00 },	/* 0x89 */
+		{ 0xD0, 0x9A, 0x00 },	/* 0x8A */
+		{ 0xD0, 0x9B, 0x00 },	/* 0x8B */
+		{ 0xD0, 0x9C, 0x00 },	/* 0x8C */
+		{ 0xD0, 0x9D, 0x00 },	/* 0x8D */
+		{ 0xD0, 0x9E, 0x00 },	/* 0x8E */
+		{ 0xD0, 0x9F, 0x00 },	/* 0x8F */
+		{ 0xD0, 0xA0, 0x00 },	/* 0x90 */
+		{ 0xD0, 0xA1, 0x00 },	/* 0x91 */
+		{ 0xD0, 0xA2, 0x00 },	/* 0x92 */
+		{ 0xD0, 0xA3, 0x00 },	/* 0x93 */
+		{ 0xD0, 0xA4, 0x00 },	/* 0x94 */
+		{ 0xD0, 0xA5, 0x00 },	/* 0x95 */
+		{ 0xD0, 0xA6, 0x00 },	/* 0x96 */
+		{ 0xD0, 0xA7, 0x00 },	/* 0x97 */
+		{ 0xD0, 0xA8, 0x00 },	/* 0x98 */
+		{ 0xD0, 0xA9, 0x00 },	/* 0x99 */
+		{ 0xD0, 0xAA, 0x00 },	/* 0x9A */
+		{ 0xD0, 0xAB, 0x00 },	/* 0x9B */
+		{ 0xD0, 0xAC, 0x00 },	/* 0x9C */
+		{ 0xD0, 0xAD, 0x00 },	/* 0x9D */
+		{ 0xD0, 0xAE, 0x00 },	/* 0x9E */
+		{ 0xD0, 0xAF, 0x00 },	/* 0x9F */
+		{ 0xD0, 0xB0, 0x00 },	/* 0xA0 */
+		{ 0xD0, 0xB1, 0x00 },	/* 0xA1 */
+		{ 0xD0, 0xB2, 0x00 },	/* 0xA2 */
+		{ 0xD0, 0xB3, 0x00 },	/* 0xA3 */
+		{ 0xD0, 0xB4, 0x00 },	/* 0xA4 */
+		{ 0xD0, 0xB5, 0x00 },	/* 0xA5 */
+		{ 0xD0, 0xB6, 0x00 },	/* 0xA6 */
+		{ 0xD0, 0xB7, 0x00 },	/* 0xA7 */
+		{ 0xD0, 0xB8, 0x00 },	/* 0xA8 */
+		{ 0xD0, 0xB9, 0x00 },	/* 0xA9 */
+		{ 0xD0, 0xBA, 0x00 },	/* 0xAA */
+		{ 0xD0, 0xBB, 0x00 },	/* 0xAB */
+		{ 0xD0, 0xBC, 0x00 },	/* 0xAC */
+		{ 0xD0, 0xBD, 0x00 },	/* 0xAD */
+		{ 0xD0, 0xBE, 0x00 },	/* 0xAE */
+		{ 0xD0, 0xBF, 0x00 },	/* 0xAF */
+		{ 0xE2, 0x96, 0x91 },	/* 0xB0 */
+		{ 0xE2, 0x96, 0x92 },	/* 0xB1 */
+		{ 0xE2, 0x96, 0x93 },	/* 0xB2 */
+		{ 0xE2, 0x94, 0x82 },	/* 0xB3 */
+		{ 0xE2, 0x94, 0xA4 },	/* 0xB4 */
+		{ 0xE2, 0x95, 0xA1 },	/* 0xB5 */
+		{ 0xE2, 0x95, 0xA2 },	/* 0xB6 */
+		{ 0xE2, 0x95, 0x96 },	/* 0xB7 */
+		{ 0xE2, 0x95, 0x95 },	/* 0xB8 */
+		{ 0xE2, 0x95, 0xA3 },	/* 0xB9 */
+		{ 0xE2, 0x95, 0x91 },	/* 0xBA */
+		{ 0xE2, 0x95, 0x97 },	/* 0xBB */
+		{ 0xE2, 0x95, 0x9D },	/* 0xBC */
+		{ 0xE2, 0x95, 0x9C },	/* 0xBD */
+		{ 0xE2, 0x95, 0x9B },	/* 0xBE */
+		{ 0xE2, 0x94, 0x90 },	/* 0xBF */
+		{ 0xE2, 0x94, 0x94 },	/* 0xC0 */
+		{ 0xE2, 0x94, 0xB4 },	/* 0xC1 */
+		{ 0xE2, 0x94, 0xAC },	/* 0xC2 */
+		{ 0xE2, 0x94, 0x9C },	/* 0xC3 */
+		{ 0xE2, 0x94, 0x80 },	/* 0xC4 */
+		{ 0xE2, 0x94, 0xBC },	/* 0xC5 */
+		{ 0xE2, 0x95, 0x9E },	/* 0xC6 */
+		{ 0xE2, 0x95, 0x9F },	/* 0xC7 */
+		{ 0xE2, 0x95, 0x9A },	/* 0xC8 */
+		{ 0xE2, 0x95, 0x94 },	/* 0xC9 */
+		{ 0xE2, 0x95, 0xA9 },	/* 0xCA */
+		{ 0xE2, 0x95, 0xA6 },	/* 0xCB */
+		{ 0xE2, 0x95, 0xA0 },	/* 0xCC */
+		{ 0xE2, 0x95, 0x90 },	/* 0xCD */
+		{ 0xE2, 0x95, 0xAC },	/* 0xCE */
+		{ 0xE2, 0x95, 0xA7 },	/* 0xCF */
+		{ 0xE2, 0x95, 0xA8 },	/* 0xD0 */
+		{ 0xE2, 0x95, 0xA4 },	/* 0xD1 */
+		{ 0xE2, 0x95, 0xA5 },	/* 0xD2 */
+		{ 0xE2, 0x95, 0x99 },	/* 0xD3 */
+		{ 0xE2, 0x95, 0x98 },	/* 0xD4 */
+		{ 0xE2, 0x95, 0x92 },	/* 0xD5 */
+		{ 0xE2, 0x95, 0x93 },	/* 0xD6 */
+		{ 0xE2, 0x95, 0xAB },	/* 0xD7 */
+		{ 0xE2, 0x95, 0xAA },	/* 0xD8 */
+		{ 0xE2, 0x94, 0x98 },	/* 0xD9 */
+		{ 0xE2, 0x94, 0x8C },	/* 0xDA */
+		{ 0xE2, 0x96, 0x88 },	/* 0xDB */
+		{ 0xE2, 0x96, 0x84 },	/* 0xDC */
+		{ 0xE2, 0x96, 0x8C },	/* 0xDD */
+		{ 0xE2, 0x96, 0x90 },	/* 0xDE */
+		{ 0xE2, 0x96, 0x80 },	/* 0xDF */
+		{ 0xD1, 0x80, 0x00 },	/* 0xE0 */
+		{ 0xD1, 0x81, 0x00 },	/* 0xE1 */
+		{ 0xD1, 0x82, 0x00 },	/* 0xE2 */
+		{ 0xD1, 0x83, 0x00 },	/* 0xE3 */
+		{ 0xD1, 0x84, 0x00 },	/* 0xE4 */
+		{ 0xD1, 0x85, 0x00 },	/* 0xE5 */
+		{ 0xD1, 0x86, 0x00 },	/* 0xE6 */
+		{ 0xD1, 0x87, 0x00 },	/* 0xE7 */
+		{ 0xD1, 0x88, 0x00 },	/* 0xE8 */
+		{ 0xD1, 0x89, 0x00 },	/* 0xE9 */
+		{ 0xD1, 0x8A, 0x00 },	/* 0xEA */
+		{ 0xD1, 0x8B, 0x00 },	/* 0xEB */
+		{ 0xD1, 0x8C, 0x00 },	/* 0xEC */
+		{ 0xD1, 0x8D, 0x00 },	/* 0xED */
+		{ 0xD1, 0x8E, 0x00 },	/* 0xEE */
+		{ 0xD1, 0x8F, 0x00 },	/* 0xEF */
+		{ 0xD0, 0x81, 0x00 },	/* 0xF0 */
+		{ 0xD1, 0x91, 0x00 },	/* 0xF1 */
+		{ 0xD0, 0x84, 0x00 },	/* 0xF2 */
+		{ 0xD1, 0x94, 0x00 },	/* 0xF3 */
+		{ 0xD0, 0x87, 0x00 },	/* 0xF4 */
+		{ 0xD1, 0x97, 0x00 },	/* 0xF5 */
+		{ 0xD0, 0x8E, 0x00 },	/* 0xF6 */
+		{ 0xD1, 0x9E, 0x00 },	/* 0xF7 */
+		{ 0xC2, 0xB0, 0x00 },	/* 0xF8 */
+		{ 0xE2, 0x88, 0x99 },	/* 0xF9 */
+		{ 0xC2, 0xB7, 0x00 },	/* 0xFA */
+		{ 0xE2, 0x88, 0x9A },	/* 0xFB */
+		{ 0xE2, 0x84, 0x96 },	/* 0xFC */
+		{ 0xC2, 0xA4, 0x00 },	/* 0xFD */
+		{ 0xE2, 0x96, 0xA0 },	/* 0xFE */
+		{ 0xC2, 0xA0, 0x00 },	/* 0xFF */
+	},
+	{	/* CP1250 -> UTF-8 */
+		{ 0xE2, 0x82, 0xAC },	/* 0x80 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x81 (illegal character) */
+		{ 0xE2, 0x80, 0x9A },	/* 0x82 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x83 (illegal character) */
+		{ 0xE2, 0x80, 0x9E },	/* 0x84 */
+		{ 0xE2, 0x80, 0xA6 },	/* 0x85 */
+		{ 0xE2, 0x80, 0xA0 },	/* 0x86 */
+		{ 0xE2, 0x80, 0xA1 },	/* 0x87 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x88 (illegal character) */
+		{ 0xE2, 0x80, 0xB0 },	/* 0x89 */
+		{ 0xC5, 0xA0, 0x00 },	/* 0x8A */
+		{ 0xE2, 0x80, 0xB9 },	/* 0x8B */
+		{ 0xC5, 0x9A, 0x00 },	/* 0x8C */
+		{ 0xC5, 0xA4, 0x00 },	/* 0x8D */
+		{ 0xC5, 0xBD, 0x00 },	/* 0x8E */
+		{ 0xC5, 0xB9, 0x00 },	/* 0x8F */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x90 (illegal character) */
+		{ 0xE2, 0x80, 0x98 },	/* 0x91 */
+		{ 0xE2, 0x80, 0x99 },	/* 0x92 */
+		{ 0xE2, 0x80, 0x9C },	/* 0x93 */
+		{ 0xE2, 0x80, 0x9D },	/* 0x94 */
+		{ 0xE2, 0x80, 0xA2 },	/* 0x95 */
+		{ 0xE2, 0x80, 0x93 },	/* 0x96 */
+		{ 0xE2, 0x80, 0x94 },	/* 0x97 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x98 (illegal character) */
+		{ 0xE2, 0x84, 0xA2 },	/* 0x99 */
+		{ 0xC5, 0xA1, 0x00 },	/* 0x9A */
+		{ 0xE2, 0x80, 0xBA },	/* 0x9B */
+		{ 0xC5, 0x9B, 0x00 },	/* 0x9C */
+		{ 0xC5, 0xA5, 0x00 },	/* 0x9D */
+		{ 0xC5, 0xBE, 0x00 },	/* 0x9E */
+		{ 0xC5, 0xBA, 0x00 },	/* 0x9F */
+		{ 0xC2, 0xA0, 0x00 },	/* 0xA0 */
+		{ 0xCB, 0x87, 0x00 },	/* 0xA1 */
+		{ 0xCB, 0x98, 0x00 },	/* 0xA2 */
+		{ 0xC5, 0x81, 0x00 },	/* 0xA3 */
+		{ 0xC2, 0xA4, 0x00 },	/* 0xA4 */
+		{ 0xC4, 0x84, 0x00 },	/* 0xA5 */
+		{ 0xC2, 0xA6, 0x00 },	/* 0xA6 */
+		{ 0xC2, 0xA7, 0x00 },	/* 0xA7 */
+		{ 0xC2, 0xA8, 0x00 },	/* 0xA8 */
+		{ 0xC2, 0xA9, 0x00 },	/* 0xA9 */
+		{ 0xC5, 0x9E, 0x00 },	/* 0xAA */
+		{ 0xC2, 0xAB, 0x00 },	/* 0xAB */
+		{ 0xC2, 0xAC, 0x00 },	/* 0xAC */
+		{ 0xC2, 0xAD, 0x00 },	/* 0xAD */
+		{ 0xC2, 0xAE, 0x00 },	/* 0xAE */
+		{ 0xC5, 0xBB, 0x00 },	/* 0xAF */
+		{ 0xC2, 0xB0, 0x00 },	/* 0xB0 */
+		{ 0xC2, 0xB1, 0x00 },	/* 0xB1 */
+		{ 0xCB, 0x9B, 0x00 },	/* 0xB2 */
+		{ 0xC5, 0x82, 0x00 },	/* 0xB3 */
+		{ 0xC2, 0xB4, 0x00 },	/* 0xB4 */
+		{ 0xC2, 0xB5, 0x00 },	/* 0xB5 */
+		{ 0xC2, 0xB6, 0x00 },	/* 0xB6 */
+		{ 0xC2, 0xB7, 0x00 },	/* 0xB7 */
+		{ 0xC2, 0xB8, 0x00 },	/* 0xB8 */
+		{ 0xC4, 0x85, 0x00 },	/* 0xB9 */
+		{ 0xC5, 0x9F, 0x00 },	/* 0xBA */
+		{ 0xC2, 0xBB, 0x00 },	/* 0xBB */
+		{ 0xC4, 0xBD, 0x00 },	/* 0xBC */
+		{ 0xCB, 0x9D, 0x00 },	/* 0xBD */
+		{ 0xC4, 0xBE, 0x00 },	/* 0xBE */
+		{ 0xC5, 0xBC, 0x00 },	/* 0xBF */
+		{ 0xC5, 0x94, 0x00 },	/* 0xC0 */
+		{ 0xC3, 0x81, 0x00 },	/* 0xC1 */
+		{ 0xC3, 0x82, 0x00 },	/* 0xC2 */
+		{ 0xC4, 0x82, 0x00 },	/* 0xC3 */
+		{ 0xC3, 0x84, 0x00 },	/* 0xC4 */
+		{ 0xC4, 0xB9, 0x00 },	/* 0xC5 */
+		{ 0xC4, 0x86, 0x00 },	/* 0xC6 */
+		{ 0xC3, 0x87, 0x00 },	/* 0xC7 */
+		{ 0xC4, 0x8C, 0x00 },	/* 0xC8 */
+		{ 0xC3, 0x89, 0x00 },	/* 0xC9 */
+		{ 0xC4, 0x98, 0x00 },	/* 0xCA */
+		{ 0xC3, 0x8B, 0x00 },	/* 0xCB */
+		{ 0xC4, 0x9A, 0x00 },	/* 0xCC */
+		{ 0xC3, 0x8D, 0x00 },	/* 0xCD */
+		{ 0xC3, 0x8E, 0x00 },	/* 0xCE */
+		{ 0xC4, 0x8E, 0x00 },	/* 0xCF */
+		{ 0xC4, 0x90, 0x00 },	/* 0xD0 */
+		{ 0xC5, 0x83, 0x00 },	/* 0xD1 */
+		{ 0xC5, 0x87, 0x00 },	/* 0xD2 */
+		{ 0xC3, 0x93, 0x00 },	/* 0xD3 */
+		{ 0xC3, 0x94, 0x00 },	/* 0xD4 */
+		{ 0xC5, 0x90, 0x00 },	/* 0xD5 */
+		{ 0xC3, 0x96, 0x00 },	/* 0xD6 */
+		{ 0xC3, 0x97, 0x00 },	/* 0xD7 */
+		{ 0xC5, 0x98, 0x00 },	/* 0xD8 */
+		{ 0xC5, 0xAE, 0x00 },	/* 0xD9 */
+		{ 0xC3, 0x9A, 0x00 },	/* 0xDA */
+		{ 0xC5, 0xB0, 0x00 },	/* 0xDB */
+		{ 0xC3, 0x9C, 0x00 },	/* 0xDC */
+		{ 0xC3, 0x9D, 0x00 },	/* 0xDD */
+		{ 0xC5, 0xA2, 0x00 },	/* 0xDE */
+		{ 0xC3, 0x9F, 0x00 },	/* 0xDF */
+		{ 0xC5, 0x95, 0x00 },	/* 0xE0 */
+		{ 0xC3, 0xA1, 0x00 },	/* 0xE1 */
+		{ 0xC3, 0xA2, 0x00 },	/* 0xE2 */
+		{ 0xC4, 0x83, 0x00 },	/* 0xE3 */
+		{ 0xC3, 0xA4, 0x00 },	/* 0xE4 */
+		{ 0xC4, 0xBA, 0x00 },	/* 0xE5 */
+		{ 0xC4, 0x87, 0x00 },	/* 0xE6 */
+		{ 0xC3, 0xA7, 0x00 },	/* 0xE7 */
+		{ 0xC4, 0x8D, 0x00 },	/* 0xE8 */
+		{ 0xC3, 0xA9, 0x00 },	/* 0xE9 */
+		{ 0xC4, 0x99, 0x00 },	/* 0xEA */
+		{ 0xC3, 0xAB, 0x00 },	/* 0xEB */
+		{ 0xC4, 0x9B, 0x00 },	/* 0xEC */
+		{ 0xC3, 0xAD, 0x00 },	/* 0xED */
+		{ 0xC3, 0xAE, 0x00 },	/* 0xEE */
+		{ 0xC4, 0x8F, 0x00 },	/* 0xEF */
+		{ 0xC4, 0x91, 0x00 },	/* 0xF0 */
+		{ 0xC5, 0x84, 0x00 },	/* 0xF1 */
+		{ 0xC5, 0x88, 0x00 },	/* 0xF2 */
+		{ 0xC3, 0xB3, 0x00 },	/* 0xF3 */
+		{ 0xC3, 0xB4, 0x00 },	/* 0xF4 */
+		{ 0xC5, 0x91, 0x00 },	/* 0xF5 */
+		{ 0xC3, 0xB6, 0x00 },	/* 0xF6 */
+		{ 0xC3, 0xB7, 0x00 },	/* 0xF7 */
+		{ 0xC5, 0x99, 0x00 },	/* 0xF8 */
+		{ 0xC5, 0xAF, 0x00 },	/* 0xF9 */
+		{ 0xC3, 0xBA, 0x00 },	/* 0xFA */
+		{ 0xC5, 0xB1, 0x00 },	/* 0xFB */
+		{ 0xC3, 0xBC, 0x00 },	/* 0xFC */
+		{ 0xC3, 0xBD, 0x00 },	/* 0xFD */
+		{ 0xC5, 0xA3, 0x00 },	/* 0xFE */
+		{ 0xCB, 0x99, 0x00 },	/* 0xFF */
+	},
+	{	/* CP1251 -> UTF-8 */
+		{ 0xD0, 0x82, 0x00 },	/* 0x80 */
+		{ 0xD0, 0x83, 0x00 },	/* 0x81 */
+		{ 0xE2, 0x80, 0x9A },	/* 0x82 */
+		{ 0xD1, 0x93, 0x00 },	/* 0x83 */
+		{ 0xE2, 0x80, 0x9E },	/* 0x84 */
+		{ 0xE2, 0x80, 0xA6 },	/* 0x85 */
+		{ 0xE2, 0x80, 0xA0 },	/* 0x86 */
+		{ 0xE2, 0x80, 0xA1 },	/* 0x87 */
+		{ 0xE2, 0x82, 0xAC },	/* 0x88 */
+		{ 0xE2, 0x80, 0xB0 },	/* 0x89 */
+		{ 0xD0, 0x89, 0x00 },	/* 0x8A */
+		{ 0xE2, 0x80, 0xB9 },	/* 0x8B */
+		{ 0xD0, 0x8A, 0x00 },	/* 0x8C */
+		{ 0xD0, 0x8C, 0x00 },	/* 0x8D */
+		{ 0xD0, 0x8B, 0x00 },	/* 0x8E */
+		{ 0xD0, 0x8F, 0x00 },	/* 0x8F */
+		{ 0xD1, 0x92, 0x00 },	/* 0x90 */
+		{ 0xE2, 0x80, 0x98 },	/* 0x91 */
+		{ 0xE2, 0x80, 0x99 },	/* 0x92 */
+		{ 0xE2, 0x80, 0x9C },	/* 0x93 */
+		{ 0xE2, 0x80, 0x9D },	/* 0x94 */
+		{ 0xE2, 0x80, 0xA2 },	/* 0x95 */
+		{ 0xE2, 0x80, 0x93 },	/* 0x96 */
+		{ 0xE2, 0x80, 0x94 },	/* 0x97 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x98 (illegal character) */
+		{ 0xE2, 0x84, 0xA2 },	/* 0x99 */
+		{ 0xD1, 0x99, 0x00 },	/* 0x9A */
+		{ 0xE2, 0x80, 0xBA },	/* 0x9B */
+		{ 0xD1, 0x9A, 0x00 },	/* 0x9C */
+		{ 0xD1, 0x9C, 0x00 },	/* 0x9D */
+		{ 0xD1, 0x9B, 0x00 },	/* 0x9E */
+		{ 0xD1, 0x9F, 0x00 },	/* 0x9F */
+		{ 0xC2, 0xA0, 0x00 },	/* 0xA0 */
+		{ 0xD0, 0x8E, 0x00 },	/* 0xA1 */
+		{ 0xD1, 0x9E, 0x00 },	/* 0xA2 */
+		{ 0xD0, 0x88, 0x00 },	/* 0xA3 */
+		{ 0xC2, 0xA4, 0x00 },	/* 0xA4 */
+		{ 0xD2, 0x90, 0x00 },	/* 0xA5 */
+		{ 0xC2, 0xA6, 0x00 },	/* 0xA6 */
+		{ 0xC2, 0xA7, 0x00 },	/* 0xA7 */
+		{ 0xD0, 0x81, 0x00 },	/* 0xA8 */
+		{ 0xC2, 0xA9, 0x00 },	/* 0xA9 */
+		{ 0xD0, 0x84, 0x00 },	/* 0xAA */
+		{ 0xC2, 0xAB, 0x00 },	/* 0xAB */
+		{ 0xC2, 0xAC, 0x00 },	/* 0xAC */
+		{ 0xC2, 0xAD, 0x00 },	/* 0xAD */
+		{ 0xC2, 0xAE, 0x00 },	/* 0xAE */
+		{ 0xD0, 0x87, 0x00 },	/* 0xAF */
+		{ 0xC2, 0xB0, 0x00 },	/* 0xB0 */
+		{ 0xC2, 0xB1, 0x00 },	/* 0xB1 */
+		{ 0xD0, 0x86, 0x00 },	/* 0xB2 */
+		{ 0xD1, 0x96, 0x00 },	/* 0xB3 */
+		{ 0xD2, 0x91, 0x00 },	/* 0xB4 */
+		{ 0xC2, 0xB5, 0x00 },	/* 0xB5 */
+		{ 0xC2, 0xB6, 0x00 },	/* 0xB6 */
+		{ 0xC2, 0xB7, 0x00 },	/* 0xB7 */
+		{ 0xD1, 0x91, 0x00 },	/* 0xB8 */
+		{ 0xE2, 0x84, 0x96 },	/* 0xB9 */
+		{ 0xD1, 0x94, 0x00 },	/* 0xBA */
+		{ 0xC2, 0xBB, 0x00 },	/* 0xBB */
+		{ 0xD1, 0x98, 0x00 },	/* 0xBC */
+		{ 0xD0, 0x85, 0x00 },	/* 0xBD */
+		{ 0xD1, 0x95, 0x00 },	/* 0xBE */
+		{ 0xD1, 0x97, 0x00 },	/* 0xBF */
+		{ 0xD0, 0x90, 0x00 },	/* 0xC0 */
+		{ 0xD0, 0x91, 0x00 },	/* 0xC1 */
+		{ 0xD0, 0x92, 0x00 },	/* 0xC2 */
+		{ 0xD0, 0x93, 0x00 },	/* 0xC3 */
+		{ 0xD0, 0x94, 0x00 },	/* 0xC4 */
+		{ 0xD0, 0x95, 0x00 },	/* 0xC5 */
+		{ 0xD0, 0x96, 0x00 },	/* 0xC6 */
+		{ 0xD0, 0x97, 0x00 },	/* 0xC7 */
+		{ 0xD0, 0x98, 0x00 },	/* 0xC8 */
+		{ 0xD0, 0x99, 0x00 },	/* 0xC9 */
+		{ 0xD0, 0x9A, 0x00 },	/* 0xCA */
+		{ 0xD0, 0x9B, 0x00 },	/* 0xCB */
+		{ 0xD0, 0x9C, 0x00 },	/* 0xCC */
+		{ 0xD0, 0x9D, 0x00 },	/* 0xCD */
+		{ 0xD0, 0x9E, 0x00 },	/* 0xCE */
+		{ 0xD0, 0x9F, 0x00 },	/* 0xCF */
+		{ 0xD0, 0xA0, 0x00 },	/* 0xD0 */
+		{ 0xD0, 0xA1, 0x00 },	/* 0xD1 */
+		{ 0xD0, 0xA2, 0x00 },	/* 0xD2 */
+		{ 0xD0, 0xA3, 0x00 },	/* 0xD3 */
+		{ 0xD0, 0xA4, 0x00 },	/* 0xD4 */
+		{ 0xD0, 0xA5, 0x00 },	/* 0xD5 */
+		{ 0xD0, 0xA6, 0x00 },	/* 0xD6 */
+		{ 0xD0, 0xA7, 0x00 },	/* 0xD7 */
+		{ 0xD0, 0xA8, 0x00 },	/* 0xD8 */
+		{ 0xD0, 0xA9, 0x00 },	/* 0xD9 */
+		{ 0xD0, 0xAA, 0x00 },	/* 0xDA */
+		{ 0xD0, 0xAB, 0x00 },	/* 0xDB */
+		{ 0xD0, 0xAC, 0x00 },	/* 0xDC */
+		{ 0xD0, 0xAD, 0x00 },	/* 0xDD */
+		{ 0xD0, 0xAE, 0x00 },	/* 0xDE */
+		{ 0xD0, 0xAF, 0x00 },	/* 0xDF */
+		{ 0xD0, 0xB0, 0x00 },	/* 0xE0 */
+		{ 0xD0, 0xB1, 0x00 },	/* 0xE1 */
+		{ 0xD0, 0xB2, 0x00 },	/* 0xE2 */
+		{ 0xD0, 0xB3, 0x00 },	/* 0xE3 */
+		{ 0xD0, 0xB4, 0x00 },	/* 0xE4 */
+		{ 0xD0, 0xB5, 0x00 },	/* 0xE5 */
+		{ 0xD0, 0xB6, 0x00 },	/* 0xE6 */
+		{ 0xD0, 0xB7, 0x00 },	/* 0xE7 */
+		{ 0xD0, 0xB8, 0x00 },	/* 0xE8 */
+		{ 0xD0, 0xB9, 0x00 },	/* 0xE9 */
+		{ 0xD0, 0xBA, 0x00 },	/* 0xEA */
+		{ 0xD0, 0xBB, 0x00 },	/* 0xEB */
+		{ 0xD0, 0xBC, 0x00 },	/* 0xEC */
+		{ 0xD0, 0xBD, 0x00 },	/* 0xED */
+		{ 0xD0, 0xBE, 0x00 },	/* 0xEE */
+		{ 0xD0, 0xBF, 0x00 },	/* 0xEF */
+		{ 0xD1, 0x80, 0x00 },	/* 0xF0 */
+		{ 0xD1, 0x81, 0x00 },	/* 0xF1 */
+		{ 0xD1, 0x82, 0x00 },	/* 0xF2 */
+		{ 0xD1, 0x83, 0x00 },	/* 0xF3 */
+		{ 0xD1, 0x84, 0x00 },	/* 0xF4 */
+		{ 0xD1, 0x85, 0x00 },	/* 0xF5 */
+		{ 0xD1, 0x86, 0x00 },	/* 0xF6 */
+		{ 0xD1, 0x87, 0x00 },	/* 0xF7 */
+		{ 0xD1, 0x88, 0x00 },	/* 0xF8 */
+		{ 0xD1, 0x89, 0x00 },	/* 0xF9 */
+		{ 0xD1, 0x8A, 0x00 },	/* 0xFA */
+		{ 0xD1, 0x8B, 0x00 },	/* 0xFB */
+		{ 0xD1, 0x8C, 0x00 },	/* 0xFC */
+		{ 0xD1, 0x8D, 0x00 },	/* 0xFD */
+		{ 0xD1, 0x8E, 0x00 },	/* 0xFE */
+		{ 0xD1, 0x8F, 0x00 },	/* 0xFF */
+	},
+	{	/* CP1253 -> UTF-8 */
+		{ 0xE2, 0x82, 0xAC },	/* 0x80 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x81 (illegal character) */
+		{ 0xE2, 0x80, 0x9A },	/* 0x82 */
+		{ 0xC6, 0x92, 0x00 },	/* 0x83 */
+		{ 0xE2, 0x80, 0x9E },	/* 0x84 */
+		{ 0xE2, 0x80, 0xA6 },	/* 0x85 */
+		{ 0xE2, 0x80, 0xA0 },	/* 0x86 */
+		{ 0xE2, 0x80, 0xA1 },	/* 0x87 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x88 (illegal character) */
+		{ 0xE2, 0x80, 0xB0 },	/* 0x89 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x8A (illegal character) */
+		{ 0xE2, 0x80, 0xB9 },	/* 0x8B */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x8C (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x8D (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x8E (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x8F (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x90 (illegal character) */
+		{ 0xE2, 0x80, 0x98 },	/* 0x91 */
+		{ 0xE2, 0x80, 0x99 },	/* 0x92 */
+		{ 0xE2, 0x80, 0x9C },	/* 0x93 */
+		{ 0xE2, 0x80, 0x9D },	/* 0x94 */
+		{ 0xE2, 0x80, 0xA2 },	/* 0x95 */
+		{ 0xE2, 0x80, 0x93 },	/* 0x96 */
+		{ 0xE2, 0x80, 0x94 },	/* 0x97 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x98 (illegal character) */
+		{ 0xE2, 0x84, 0xA2 },	/* 0x99 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x9A (illegal character) */
+		{ 0xE2, 0x80, 0xBA },	/* 0x9B */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x9C (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x9D (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x9E (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x9F (illegal character) */
+		{ 0xC2, 0xA0, 0x00 },	/* 0xA0 */
+		{ 0xCE, 0x85, 0x00 },	/* 0xA1 */
+		{ 0xCE, 0x86, 0x00 },	/* 0xA2 */
+		{ 0xC2, 0xA3, 0x00 },	/* 0xA3 */
+		{ 0xC2, 0xA4, 0x00 },	/* 0xA4 */
+		{ 0xC2, 0xA5, 0x00 },	/* 0xA5 */
+		{ 0xC2, 0xA6, 0x00 },	/* 0xA6 */
+		{ 0xC2, 0xA7, 0x00 },	/* 0xA7 */
+		{ 0xC2, 0xA8, 0x00 },	/* 0xA8 */
+		{ 0xC2, 0xA9, 0x00 },	/* 0xA9 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xAA (illegal character) */
+		{ 0xC2, 0xAB, 0x00 },	/* 0xAB */
+		{ 0xC2, 0xAC, 0x00 },	/* 0xAC */
+		{ 0xC2, 0xAD, 0x00 },	/* 0xAD */
+		{ 0xC2, 0xAE, 0x00 },	/* 0xAE */
+		{ 0xE2, 0x80, 0x95 },	/* 0xAF */
+		{ 0xC2, 0xB0, 0x00 },	/* 0xB0 */
+		{ 0xC2, 0xB1, 0x00 },	/* 0xB1 */
+		{ 0xC2, 0xB2, 0x00 },	/* 0xB2 */
+		{ 0xC2, 0xB3, 0x00 },	/* 0xB3 */
+		{ 0xCE, 0x84, 0x00 },	/* 0xB4 */
+		{ 0xC2, 0xB5, 0x00 },	/* 0xB5 */
+		{ 0xC2, 0xB6, 0x00 },	/* 0xB6 */
+		{ 0xC2, 0xB7, 0x00 },	/* 0xB7 */
+		{ 0xCE, 0x88, 0x00 },	/* 0xB8 */
+		{ 0xCE, 0x89, 0x00 },	/* 0xB9 */
+		{ 0xCE, 0x8A, 0x00 },	/* 0xBA */
+		{ 0xC2, 0xBB, 0x00 },	/* 0xBB */
+		{ 0xCE, 0x8C, 0x00 },	/* 0xBC */
+		{ 0xC2, 0xBD, 0x00 },	/* 0xBD */
+		{ 0xCE, 0x8E, 0x00 },	/* 0xBE */
+		{ 0xCE, 0x8F, 0x00 },	/* 0xBF */
+		{ 0xCE, 0x90, 0x00 },	/* 0xC0 */
+		{ 0xCE, 0x91, 0x00 },	/* 0xC1 */
+		{ 0xCE, 0x92, 0x00 },	/* 0xC2 */
+		{ 0xCE, 0x93, 0x00 },	/* 0xC3 */
+		{ 0xCE, 0x94, 0x00 },	/* 0xC4 */
+		{ 0xCE, 0x95, 0x00 },	/* 0xC5 */
+		{ 0xCE, 0x96, 0x00 },	/* 0xC6 */
+		{ 0xCE, 0x97, 0x00 },	/* 0xC7 */
+		{ 0xCE, 0x98, 0x00 },	/* 0xC8 */
+		{ 0xCE, 0x99, 0x00 },	/* 0xC9 */
+		{ 0xCE, 0x9A, 0x00 },	/* 0xCA */
+		{ 0xCE, 0x9B, 0x00 },	/* 0xCB */
+		{ 0xCE, 0x9C, 0x00 },	/* 0xCC */
+		{ 0xCE, 0x9D, 0x00 },	/* 0xCD */
+		{ 0xCE, 0x9E, 0x00 },	/* 0xCE */
+		{ 0xCE, 0x9F, 0x00 },	/* 0xCF */
+		{ 0xCE, 0xA0, 0x00 },	/* 0xD0 */
+		{ 0xCE, 0xA1, 0x00 },	/* 0xD1 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xD2 (illegal character) */
+		{ 0xCE, 0xA3, 0x00 },	/* 0xD3 */
+		{ 0xCE, 0xA4, 0x00 },	/* 0xD4 */
+		{ 0xCE, 0xA5, 0x00 },	/* 0xD5 */
+		{ 0xCE, 0xA6, 0x00 },	/* 0xD6 */
+		{ 0xCE, 0xA7, 0x00 },	/* 0xD7 */
+		{ 0xCE, 0xA8, 0x00 },	/* 0xD8 */
+		{ 0xCE, 0xA9, 0x00 },	/* 0xD9 */
+		{ 0xCE, 0xAA, 0x00 },	/* 0xDA */
+		{ 0xCE, 0xAB, 0x00 },	/* 0xDB */
+		{ 0xCE, 0xAC, 0x00 },	/* 0xDC */
+		{ 0xCE, 0xAD, 0x00 },	/* 0xDD */
+		{ 0xCE, 0xAE, 0x00 },	/* 0xDE */
+		{ 0xCE, 0xAF, 0x00 },	/* 0xDF */
+		{ 0xCE, 0xB0, 0x00 },	/* 0xE0 */
+		{ 0xCE, 0xB1, 0x00 },	/* 0xE1 */
+		{ 0xCE, 0xB2, 0x00 },	/* 0xE2 */
+		{ 0xCE, 0xB3, 0x00 },	/* 0xE3 */
+		{ 0xCE, 0xB4, 0x00 },	/* 0xE4 */
+		{ 0xCE, 0xB5, 0x00 },	/* 0xE5 */
+		{ 0xCE, 0xB6, 0x00 },	/* 0xE6 */
+		{ 0xCE, 0xB7, 0x00 },	/* 0xE7 */
+		{ 0xCE, 0xB8, 0x00 },	/* 0xE8 */
+		{ 0xCE, 0xB9, 0x00 },	/* 0xE9 */
+		{ 0xCE, 0xBA, 0x00 },	/* 0xEA */
+		{ 0xCE, 0xBB, 0x00 },	/* 0xEB */
+		{ 0xCE, 0xBC, 0x00 },	/* 0xEC */
+		{ 0xCE, 0xBD, 0x00 },	/* 0xED */
+		{ 0xCE, 0xBE, 0x00 },	/* 0xEE */
+		{ 0xCE, 0xBF, 0x00 },	/* 0xEF */
+		{ 0xCF, 0x80, 0x00 },	/* 0xF0 */
+		{ 0xCF, 0x81, 0x00 },	/* 0xF1 */
+		{ 0xCF, 0x82, 0x00 },	/* 0xF2 */
+		{ 0xCF, 0x83, 0x00 },	/* 0xF3 */
+		{ 0xCF, 0x84, 0x00 },	/* 0xF4 */
+		{ 0xCF, 0x85, 0x00 },	/* 0xF5 */
+		{ 0xCF, 0x86, 0x00 },	/* 0xF6 */
+		{ 0xCF, 0x87, 0x00 },	/* 0xF7 */
+		{ 0xCF, 0x88, 0x00 },	/* 0xF8 */
+		{ 0xCF, 0x89, 0x00 },	/* 0xF9 */
+		{ 0xCF, 0x8A, 0x00 },	/* 0xFA */
+		{ 0xCF, 0x8B, 0x00 },	/* 0xFB */
+		{ 0xCF, 0x8C, 0x00 },	/* 0xFC */
+		{ 0xCF, 0x8D, 0x00 },	/* 0xFD */
+		{ 0xCF, 0x8E, 0x00 },	/* 0xFE */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xFF (illegal character) */
+	},
+	{	/* CP1254 -> UTF-8 */
+		{ 0xE2, 0x82, 0xAC },	/* 0x80 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x81 (illegal character) */
+		{ 0xE2, 0x80, 0x9A },	/* 0x82 */
+		{ 0xC6, 0x92, 0x00 },	/* 0x83 */
+		{ 0xE2, 0x80, 0x9E },	/* 0x84 */
+		{ 0xE2, 0x80, 0xA6 },	/* 0x85 */
+		{ 0xE2, 0x80, 0xA0 },	/* 0x86 */
+		{ 0xE2, 0x80, 0xA1 },	/* 0x87 */
+		{ 0xCB, 0x86, 0x00 },	/* 0x88 */
+		{ 0xE2, 0x80, 0xB0 },	/* 0x89 */
+		{ 0xC5, 0xA0, 0x00 },	/* 0x8A */
+		{ 0xE2, 0x80, 0xB9 },	/* 0x8B */
+		{ 0xC5, 0x92, 0x00 },	/* 0x8C */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x8D (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x8E (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x8F (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x90 (illegal character) */
+		{ 0xE2, 0x80, 0x98 },	/* 0x91 */
+		{ 0xE2, 0x80, 0x99 },	/* 0x92 */
+		{ 0xE2, 0x80, 0x9C },	/* 0x93 */
+		{ 0xE2, 0x80, 0x9D },	/* 0x94 */
+		{ 0xE2, 0x80, 0xA2 },	/* 0x95 */
+		{ 0xE2, 0x80, 0x93 },	/* 0x96 */
+		{ 0xE2, 0x80, 0x94 },	/* 0x97 */
+		{ 0xCB, 0x9C, 0x00 },	/* 0x98 */
+		{ 0xE2, 0x84, 0xA2 },	/* 0x99 */
+		{ 0xC5, 0xA1, 0x00 },	/* 0x9A */
+		{ 0xE2, 0x80, 0xBA },	/* 0x9B */
+		{ 0xC5, 0x93, 0x00 },	/* 0x9C */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x9D (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x9E (illegal character) */
+		{ 0xC5, 0xB8, 0x00 },	/* 0x9F */
+		{ 0xC2, 0xA0, 0x00 },	/* 0xA0 */
+		{ 0xC2, 0xA1, 0x00 },	/* 0xA1 */
+		{ 0xC2, 0xA2, 0x00 },	/* 0xA2 */
+		{ 0xC2, 0xA3, 0x00 },	/* 0xA3 */
+		{ 0xC2, 0xA4, 0x00 },	/* 0xA4 */
+		{ 0xC2, 0xA5, 0x00 },	/* 0xA5 */
+		{ 0xC2, 0xA6, 0x00 },	/* 0xA6 */
+		{ 0xC2, 0xA7, 0x00 },	/* 0xA7 */
+		{ 0xC2, 0xA8, 0x00 },	/* 0xA8 */
+		{ 0xC2, 0xA9, 0x00 },	/* 0xA9 */
+		{ 0xC2, 0xAA, 0x00 },	/* 0xAA */
+		{ 0xC2, 0xAB, 0x00 },	/* 0xAB */
+		{ 0xC2, 0xAC, 0x00 },	/* 0xAC */
+		{ 0xC2, 0xAD, 0x00 },	/* 0xAD */
+		{ 0xC2, 0xAE, 0x00 },	/* 0xAE */
+		{ 0xC2, 0xAF, 0x00 },	/* 0xAF */
+		{ 0xC2, 0xB0, 0x00 },	/* 0xB0 */
+		{ 0xC2, 0xB1, 0x00 },	/* 0xB1 */
+		{ 0xC2, 0xB2, 0x00 },	/* 0xB2 */
+		{ 0xC2, 0xB3, 0x00 },	/* 0xB3 */
+		{ 0xC2, 0xB4, 0x00 },	/* 0xB4 */
+		{ 0xC2, 0xB5, 0x00 },	/* 0xB5 */
+		{ 0xC2, 0xB6, 0x00 },	/* 0xB6 */
+		{ 0xC2, 0xB7, 0x00 },	/* 0xB7 */
+		{ 0xC2, 0xB8, 0x00 },	/* 0xB8 */
+		{ 0xC2, 0xB9, 0x00 },	/* 0xB9 */
+		{ 0xC2, 0xBA, 0x00 },	/* 0xBA */
+		{ 0xC2, 0xBB, 0x00 },	/* 0xBB */
+		{ 0xC2, 0xBC, 0x00 },	/* 0xBC */
+		{ 0xC2, 0xBD, 0x00 },	/* 0xBD */
+		{ 0xC2, 0xBE, 0x00 },	/* 0xBE */
+		{ 0xC2, 0xBF, 0x00 },	/* 0xBF */
+		{ 0xC3, 0x80, 0x00 },	/* 0xC0 */
+		{ 0xC3, 0x81, 0x00 },	/* 0xC1 */
+		{ 0xC3, 0x82, 0x00 },	/* 0xC2 */
+		{ 0xC3, 0x83, 0x00 },	/* 0xC3 */
+		{ 0xC3, 0x84, 0x00 },	/* 0xC4 */
+		{ 0xC3, 0x85, 0x00 },	/* 0xC5 */
+		{ 0xC3, 0x86, 0x00 },	/* 0xC6 */
+		{ 0xC3, 0x87, 0x00 },	/* 0xC7 */
+		{ 0xC3, 0x88, 0x00 },	/* 0xC8 */
+		{ 0xC3, 0x89, 0x00 },	/* 0xC9 */
+		{ 0xC3, 0x8A, 0x00 },	/* 0xCA */
+		{ 0xC3, 0x8B, 0x00 },	/* 0xCB */
+		{ 0xC3, 0x8C, 0x00 },	/* 0xCC */
+		{ 0xC3, 0x8D, 0x00 },	/* 0xCD */
+		{ 0xC3, 0x8E, 0x00 },	/* 0xCE */
+		{ 0xC3, 0x8F, 0x00 },	/* 0xCF */
+		{ 0xC4, 0x9E, 0x00 },	/* 0xD0 */
+		{ 0xC3, 0x91, 0x00 },	/* 0xD1 */
+		{ 0xC3, 0x92, 0x00 },	/* 0xD2 */
+		{ 0xC3, 0x93, 0x00 },	/* 0xD3 */
+		{ 0xC3, 0x94, 0x00 },	/* 0xD4 */
+		{ 0xC3, 0x95, 0x00 },	/* 0xD5 */
+		{ 0xC3, 0x96, 0x00 },	/* 0xD6 */
+		{ 0xC3, 0x97, 0x00 },	/* 0xD7 */
+		{ 0xC3, 0x98, 0x00 },	/* 0xD8 */
+		{ 0xC3, 0x99, 0x00 },	/* 0xD9 */
+		{ 0xC3, 0x9A, 0x00 },	/* 0xDA */
+		{ 0xC3, 0x9B, 0x00 },	/* 0xDB */
+		{ 0xC3, 0x9C, 0x00 },	/* 0xDC */
+		{ 0xC4, 0xB0, 0x00 },	/* 0xDD */
+		{ 0xC5, 0x9E, 0x00 },	/* 0xDE */
+		{ 0xC3, 0x9F, 0x00 },	/* 0xDF */
+		{ 0xC3, 0xA0, 0x00 },	/* 0xE0 */
+		{ 0xC3, 0xA1, 0x00 },	/* 0xE1 */
+		{ 0xC3, 0xA2, 0x00 },	/* 0xE2 */
+		{ 0xC3, 0xA3, 0x00 },	/* 0xE3 */
+		{ 0xC3, 0xA4, 0x00 },	/* 0xE4 */
+		{ 0xC3, 0xA5, 0x00 },	/* 0xE5 */
+		{ 0xC3, 0xA6, 0x00 },	/* 0xE6 */
+		{ 0xC3, 0xA7, 0x00 },	/* 0xE7 */
+		{ 0xC3, 0xA8, 0x00 },	/* 0xE8 */
+		{ 0xC3, 0xA9, 0x00 },	/* 0xE9 */
+		{ 0xC3, 0xAA, 0x00 },	/* 0xEA */
+		{ 0xC3, 0xAB, 0x00 },	/* 0xEB */
+		{ 0xC3, 0xAC, 0x00 },	/* 0xEC */
+		{ 0xC3, 0xAD, 0x00 },	/* 0xED */
+		{ 0xC3, 0xAE, 0x00 },	/* 0xEE */
+		{ 0xC3, 0xAF, 0x00 },	/* 0xEF */
+		{ 0xC4, 0x9F, 0x00 },	/* 0xF0 */
+		{ 0xC3, 0xB1, 0x00 },	/* 0xF1 */
+		{ 0xC3, 0xB2, 0x00 },	/* 0xF2 */
+		{ 0xC3, 0xB3, 0x00 },	/* 0xF3 */
+		{ 0xC3, 0xB4, 0x00 },	/* 0xF4 */
+		{ 0xC3, 0xB5, 0x00 },	/* 0xF5 */
+		{ 0xC3, 0xB6, 0x00 },	/* 0xF6 */
+		{ 0xC3, 0xB7, 0x00 },	/* 0xF7 */
+		{ 0xC3, 0xB8, 0x00 },	/* 0xF8 */
+		{ 0xC3, 0xB9, 0x00 },	/* 0xF9 */
+		{ 0xC3, 0xBA, 0x00 },	/* 0xFA */
+		{ 0xC3, 0xBB, 0x00 },	/* 0xFB */
+		{ 0xC3, 0xBC, 0x00 },	/* 0xFC */
+		{ 0xC4, 0xB1, 0x00 },	/* 0xFD */
+		{ 0xC5, 0x9F, 0x00 },	/* 0xFE */
+		{ 0xC3, 0xBF, 0x00 },	/* 0xFF */
+	},
+	{	/* CP1255 -> UTF-8 */
+		{ 0xE2, 0x82, 0xAC },	/* 0x80 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x81 (illegal character) */
+		{ 0xE2, 0x80, 0x9A },	/* 0x82 */
+		{ 0xC6, 0x92, 0x00 },	/* 0x83 */
+		{ 0xE2, 0x80, 0x9E },	/* 0x84 */
+		{ 0xE2, 0x80, 0xA6 },	/* 0x85 */
+		{ 0xE2, 0x80, 0xA0 },	/* 0x86 */
+		{ 0xE2, 0x80, 0xA1 },	/* 0x87 */
+		{ 0xCB, 0x86, 0x00 },	/* 0x88 */
+		{ 0xE2, 0x80, 0xB0 },	/* 0x89 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x8A (illegal character) */
+		{ 0xE2, 0x80, 0xB9 },	/* 0x8B */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x8C (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x8D (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x8E (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x8F (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x90 (illegal character) */
+		{ 0xE2, 0x80, 0x98 },	/* 0x91 */
+		{ 0xE2, 0x80, 0x99 },	/* 0x92 */
+		{ 0xE2, 0x80, 0x9C },	/* 0x93 */
+		{ 0xE2, 0x80, 0x9D },	/* 0x94 */
+		{ 0xE2, 0x80, 0xA2 },	/* 0x95 */
+		{ 0xE2, 0x80, 0x93 },	/* 0x96 */
+		{ 0xE2, 0x80, 0x94 },	/* 0x97 */
+		{ 0xCB, 0x9C, 0x00 },	/* 0x98 */
+		{ 0xE2, 0x84, 0xA2 },	/* 0x99 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x9A (illegal character) */
+		{ 0xE2, 0x80, 0xBA },	/* 0x9B */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x9C (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x9D (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x9E (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x9F (illegal character) */
+		{ 0xC2, 0xA0, 0x00 },	/* 0xA0 */
+		{ 0xC2, 0xA1, 0x00 },	/* 0xA1 */
+		{ 0xC2, 0xA2, 0x00 },	/* 0xA2 */
+		{ 0xC2, 0xA3, 0x00 },	/* 0xA3 */
+		{ 0xE2, 0x82, 0xAA },	/* 0xA4 */
+		{ 0xC2, 0xA5, 0x00 },	/* 0xA5 */
+		{ 0xC2, 0xA6, 0x00 },	/* 0xA6 */
+		{ 0xC2, 0xA7, 0x00 },	/* 0xA7 */
+		{ 0xC2, 0xA8, 0x00 },	/* 0xA8 */
+		{ 0xC2, 0xA9, 0x00 },	/* 0xA9 */
+		{ 0xC3, 0x97, 0x00 },	/* 0xAA */
+		{ 0xC2, 0xAB, 0x00 },	/* 0xAB */
+		{ 0xC2, 0xAC, 0x00 },	/* 0xAC */
+		{ 0xC2, 0xAD, 0x00 },	/* 0xAD */
+		{ 0xC2, 0xAE, 0x00 },	/* 0xAE */
+		{ 0xC2, 0xAF, 0x00 },	/* 0xAF */
+		{ 0xC2, 0xB0, 0x00 },	/* 0xB0 */
+		{ 0xC2, 0xB1, 0x00 },	/* 0xB1 */
+		{ 0xC2, 0xB2, 0x00 },	/* 0xB2 */
+		{ 0xC2, 0xB3, 0x00 },	/* 0xB3 */
+		{ 0xC2, 0xB4, 0x00 },	/* 0xB4 */
+		{ 0xC2, 0xB5, 0x00 },	/* 0xB5 */
+		{ 0xC2, 0xB6, 0x00 },	/* 0xB6 */
+		{ 0xC2, 0xB7, 0x00 },	/* 0xB7 */
+		{ 0xC2, 0xB8, 0x00 },	/* 0xB8 */
+		{ 0xC2, 0xB9, 0x00 },	/* 0xB9 */
+		{ 0xC3, 0xB7, 0x00 },	/* 0xBA */
+		{ 0xC2, 0xBB, 0x00 },	/* 0xBB */
+		{ 0xC2, 0xBC, 0x00 },	/* 0xBC */
+		{ 0xC2, 0xBD, 0x00 },	/* 0xBD */
+		{ 0xC2, 0xBE, 0x00 },	/* 0xBE */
+		{ 0xC2, 0xBF, 0x00 },	/* 0xBF */
+		{ 0xD6, 0xB0, 0x00 },	/* 0xC0 */
+		{ 0xD6, 0xB1, 0x00 },	/* 0xC1 */
+		{ 0xD6, 0xB2, 0x00 },	/* 0xC2 */
+		{ 0xD6, 0xB3, 0x00 },	/* 0xC3 */
+		{ 0xD6, 0xB4, 0x00 },	/* 0xC4 */
+		{ 0xD6, 0xB5, 0x00 },	/* 0xC5 */
+		{ 0xD6, 0xB6, 0x00 },	/* 0xC6 */
+		{ 0xD6, 0xB7, 0x00 },	/* 0xC7 */
+		{ 0xD6, 0xB8, 0x00 },	/* 0xC8 */
+		{ 0xD6, 0xB9, 0x00 },	/* 0xC9 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xCA (illegal character) */
+		{ 0xD6, 0xBB, 0x00 },	/* 0xCB */
+		{ 0xD6, 0xBC, 0x00 },	/* 0xCC */
+		{ 0xD6, 0xBD, 0x00 },	/* 0xCD */
+		{ 0xD6, 0xBE, 0x00 },	/* 0xCE */
+		{ 0xD6, 0xBF, 0x00 },	/* 0xCF */
+		{ 0xD7, 0x80, 0x00 },	/* 0xD0 */
+		{ 0xD7, 0x81, 0x00 },	/* 0xD1 */
+		{ 0xD7, 0x82, 0x00 },	/* 0xD2 */
+		{ 0xD7, 0x83, 0x00 },	/* 0xD3 */
+		{ 0xD7, 0xB0, 0x00 },	/* 0xD4 */
+		{ 0xD7, 0xB1, 0x00 },	/* 0xD5 */
+		{ 0xD7, 0xB2, 0x00 },	/* 0xD6 */
+		{ 0xD7, 0xB3, 0x00 },	/* 0xD7 */
+		{ 0xD7, 0xB4, 0x00 },	/* 0xD8 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xD9 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xDA (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xDB (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xDC (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xDD (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xDE (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xDF (illegal character) */
+		{ 0xD7, 0x90, 0x00 },	/* 0xE0 */
+		{ 0xD7, 0x91, 0x00 },	/* 0xE1 */
+		{ 0xD7, 0x92, 0x00 },	/* 0xE2 */
+		{ 0xD7, 0x93, 0x00 },	/* 0xE3 */
+		{ 0xD7, 0x94, 0x00 },	/* 0xE4 */
+		{ 0xD7, 0x95, 0x00 },	/* 0xE5 */
+		{ 0xD7, 0x96, 0x00 },	/* 0xE6 */
+		{ 0xD7, 0x97, 0x00 },	/* 0xE7 */
+		{ 0xD7, 0x98, 0x00 },	/* 0xE8 */
+		{ 0xD7, 0x99, 0x00 },	/* 0xE9 */
+		{ 0xD7, 0x9A, 0x00 },	/* 0xEA */
+		{ 0xD7, 0x9B, 0x00 },	/* 0xEB */
+		{ 0xD7, 0x9C, 0x00 },	/* 0xEC */
+		{ 0xD7, 0x9D, 0x00 },	/* 0xED */
+		{ 0xD7, 0x9E, 0x00 },	/* 0xEE */
+		{ 0xD7, 0x9F, 0x00 },	/* 0xEF */
+		{ 0xD7, 0xA0, 0x00 },	/* 0xF0 */
+		{ 0xD7, 0xA1, 0x00 },	/* 0xF1 */
+		{ 0xD7, 0xA2, 0x00 },	/* 0xF2 */
+		{ 0xD7, 0xA3, 0x00 },	/* 0xF3 */
+		{ 0xD7, 0xA4, 0x00 },	/* 0xF4 */
+		{ 0xD7, 0xA5, 0x00 },	/* 0xF5 */
+		{ 0xD7, 0xA6, 0x00 },	/* 0xF6 */
+		{ 0xD7, 0xA7, 0x00 },	/* 0xF7 */
+		{ 0xD7, 0xA8, 0x00 },	/* 0xF8 */
+		{ 0xD7, 0xA9, 0x00 },	/* 0xF9 */
+		{ 0xD7, 0xAA, 0x00 },	/* 0xFA */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xFB (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xFC (illegal character) */
+		{ 0xE2, 0x80, 0x8E },	/* 0xFD */
+		{ 0xE2, 0x80, 0x8F },	/* 0xFE */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xFF (illegal character) */
+	},
+	{	/* CP1256 -> UTF-8 */
+		{ 0xE2, 0x82, 0xAC },	/* 0x80 */
+		{ 0xD9, 0xBE, 0x00 },	/* 0x81 */
+		{ 0xE2, 0x80, 0x9A },	/* 0x82 */
+		{ 0xC6, 0x92, 0x00 },	/* 0x83 */
+		{ 0xE2, 0x80, 0x9E },	/* 0x84 */
+		{ 0xE2, 0x80, 0xA6 },	/* 0x85 */
+		{ 0xE2, 0x80, 0xA0 },	/* 0x86 */
+		{ 0xE2, 0x80, 0xA1 },	/* 0x87 */
+		{ 0xCB, 0x86, 0x00 },	/* 0x88 */
+		{ 0xE2, 0x80, 0xB0 },	/* 0x89 */
+		{ 0xD9, 0xB9, 0x00 },	/* 0x8A */
+		{ 0xE2, 0x80, 0xB9 },	/* 0x8B */
+		{ 0xC5, 0x92, 0x00 },	/* 0x8C */
+		{ 0xDA, 0x86, 0x00 },	/* 0x8D */
+		{ 0xDA, 0x98, 0x00 },	/* 0x8E */
+		{ 0xDA, 0x88, 0x00 },	/* 0x8F */
+		{ 0xDA, 0xAF, 0x00 },	/* 0x90 */
+		{ 0xE2, 0x80, 0x98 },	/* 0x91 */
+		{ 0xE2, 0x80, 0x99 },	/* 0x92 */
+		{ 0xE2, 0x80, 0x9C },	/* 0x93 */
+		{ 0xE2, 0x80, 0x9D },	/* 0x94 */
+		{ 0xE2, 0x80, 0xA2 },	/* 0x95 */
+		{ 0xE2, 0x80, 0x93 },	/* 0x96 */
+		{ 0xE2, 0x80, 0x94 },	/* 0x97 */
+		{ 0xDA, 0xA9, 0x00 },	/* 0x98 */
+		{ 0xE2, 0x84, 0xA2 },	/* 0x99 */
+		{ 0xDA, 0x91, 0x00 },	/* 0x9A */
+		{ 0xE2, 0x80, 0xBA },	/* 0x9B */
+		{ 0xC5, 0x93, 0x00 },	/* 0x9C */
+		{ 0xE2, 0x80, 0x8C },	/* 0x9D */
+		{ 0xE2, 0x80, 0x8D },	/* 0x9E */
+		{ 0xDA, 0xBA, 0x00 },	/* 0x9F */
+		{ 0xC2, 0xA0, 0x00 },	/* 0xA0 */
+		{ 0xD8, 0x8C, 0x00 },	/* 0xA1 */
+		{ 0xC2, 0xA2, 0x00 },	/* 0xA2 */
+		{ 0xC2, 0xA3, 0x00 },	/* 0xA3 */
+		{ 0xC2, 0xA4, 0x00 },	/* 0xA4 */
+		{ 0xC2, 0xA5, 0x00 },	/* 0xA5 */
+		{ 0xC2, 0xA6, 0x00 },	/* 0xA6 */
+		{ 0xC2, 0xA7, 0x00 },	/* 0xA7 */
+		{ 0xC2, 0xA8, 0x00 },	/* 0xA8 */
+		{ 0xC2, 0xA9, 0x00 },	/* 0xA9 */
+		{ 0xDA, 0xBE, 0x00 },	/* 0xAA */
+		{ 0xC2, 0xAB, 0x00 },	/* 0xAB */
+		{ 0xC2, 0xAC, 0x00 },	/* 0xAC */
+		{ 0xC2, 0xAD, 0x00 },	/* 0xAD */
+		{ 0xC2, 0xAE, 0x00 },	/* 0xAE */
+		{ 0xC2, 0xAF, 0x00 },	/* 0xAF */
+		{ 0xC2, 0xB0, 0x00 },	/* 0xB0 */
+		{ 0xC2, 0xB1, 0x00 },	/* 0xB1 */
+		{ 0xC2, 0xB2, 0x00 },	/* 0xB2 */
+		{ 0xC2, 0xB3, 0x00 },	/* 0xB3 */
+		{ 0xC2, 0xB4, 0x00 },	/* 0xB4 */
+		{ 0xC2, 0xB5, 0x00 },	/* 0xB5 */
+		{ 0xC2, 0xB6, 0x00 },	/* 0xB6 */
+		{ 0xC2, 0xB7, 0x00 },	/* 0xB7 */
+		{ 0xC2, 0xB8, 0x00 },	/* 0xB8 */
+		{ 0xC2, 0xB9, 0x00 },	/* 0xB9 */
+		{ 0xD8, 0x9B, 0x00 },	/* 0xBA */
+		{ 0xC2, 0xBB, 0x00 },	/* 0xBB */
+		{ 0xC2, 0xBC, 0x00 },	/* 0xBC */
+		{ 0xC2, 0xBD, 0x00 },	/* 0xBD */
+		{ 0xC2, 0xBE, 0x00 },	/* 0xBE */
+		{ 0xD8, 0x9F, 0x00 },	/* 0xBF */
+		{ 0xDB, 0x81, 0x00 },	/* 0xC0 */
+		{ 0xD8, 0xA1, 0x00 },	/* 0xC1 */
+		{ 0xD8, 0xA2, 0x00 },	/* 0xC2 */
+		{ 0xD8, 0xA3, 0x00 },	/* 0xC3 */
+		{ 0xD8, 0xA4, 0x00 },	/* 0xC4 */
+		{ 0xD8, 0xA5, 0x00 },	/* 0xC5 */
+		{ 0xD8, 0xA6, 0x00 },	/* 0xC6 */
+		{ 0xD8, 0xA7, 0x00 },	/* 0xC7 */
+		{ 0xD8, 0xA8, 0x00 },	/* 0xC8 */
+		{ 0xD8, 0xA9, 0x00 },	/* 0xC9 */
+		{ 0xD8, 0xAA, 0x00 },	/* 0xCA */
+		{ 0xD8, 0xAB, 0x00 },	/* 0xCB */
+		{ 0xD8, 0xAC, 0x00 },	/* 0xCC */
+		{ 0xD8, 0xAD, 0x00 },	/* 0xCD */
+		{ 0xD8, 0xAE, 0x00 },	/* 0xCE */
+		{ 0xD8, 0xAF, 0x00 },	/* 0xCF */
+		{ 0xD8, 0xB0, 0x00 },	/* 0xD0 */
+		{ 0xD8, 0xB1, 0x00 },	/* 0xD1 */
+		{ 0xD8, 0xB2, 0x00 },	/* 0xD2 */
+		{ 0xD8, 0xB3, 0x00 },	/* 0xD3 */
+		{ 0xD8, 0xB4, 0x00 },	/* 0xD4 */
+		{ 0xD8, 0xB5, 0x00 },	/* 0xD5 */
+		{ 0xD8, 0xB6, 0x00 },	/* 0xD6 */
+		{ 0xC3, 0x97, 0x00 },	/* 0xD7 */
+		{ 0xD8, 0xB7, 0x00 },	/* 0xD8 */
+		{ 0xD8, 0xB8, 0x00 },	/* 0xD9 */
+		{ 0xD8, 0xB9, 0x00 },	/* 0xDA */
+		{ 0xD8, 0xBA, 0x00 },	/* 0xDB */
+		{ 0xD9, 0x80, 0x00 },	/* 0xDC */
+		{ 0xD9, 0x81, 0x00 },	/* 0xDD */
+		{ 0xD9, 0x82, 0x00 },	/* 0xDE */
+		{ 0xD9, 0x83, 0x00 },	/* 0xDF */
+		{ 0xC3, 0xA0, 0x00 },	/* 0xE0 */
+		{ 0xD9, 0x84, 0x00 },	/* 0xE1 */
+		{ 0xC3, 0xA2, 0x00 },	/* 0xE2 */
+		{ 0xD9, 0x85, 0x00 },	/* 0xE3 */
+		{ 0xD9, 0x86, 0x00 },	/* 0xE4 */
+		{ 0xD9, 0x87, 0x00 },	/* 0xE5 */
+		{ 0xD9, 0x88, 0x00 },	/* 0xE6 */
+		{ 0xC3, 0xA7, 0x00 },	/* 0xE7 */
+		{ 0xC3, 0xA8, 0x00 },	/* 0xE8 */
+		{ 0xC3, 0xA9, 0x00 },	/* 0xE9 */
+		{ 0xC3, 0xAA, 0x00 },	/* 0xEA */
+		{ 0xC3, 0xAB, 0x00 },	/* 0xEB */
+		{ 0xD9, 0x89, 0x00 },	/* 0xEC */
+		{ 0xD9, 0x8A, 0x00 },	/* 0xED */
+		{ 0xC3, 0xAE, 0x00 },	/* 0xEE */
+		{ 0xC3, 0xAF, 0x00 },	/* 0xEF */
+		{ 0xD9, 0x8B, 0x00 },	/* 0xF0 */
+		{ 0xD9, 0x8C, 0x00 },	/* 0xF1 */
+		{ 0xD9, 0x8D, 0x00 },	/* 0xF2 */
+		{ 0xD9, 0x8E, 0x00 },	/* 0xF3 */
+		{ 0xC3, 0xB4, 0x00 },	/* 0xF4 */
+		{ 0xD9, 0x8F, 0x00 },	/* 0xF5 */
+		{ 0xD9, 0x90, 0x00 },	/* 0xF6 */
+		{ 0xC3, 0xB7, 0x00 },	/* 0xF7 */
+		{ 0xD9, 0x91, 0x00 },	/* 0xF8 */
+		{ 0xC3, 0xB9, 0x00 },	/* 0xF9 */
+		{ 0xD9, 0x92, 0x00 },	/* 0xFA */
+		{ 0xC3, 0xBB, 0x00 },	/* 0xFB */
+		{ 0xC3, 0xBC, 0x00 },	/* 0xFC */
+		{ 0xE2, 0x80, 0x8E },	/* 0xFD */
+		{ 0xE2, 0x80, 0x8F },	/* 0xFE */
+		{ 0xDB, 0x92, 0x00 },	/* 0xFF */
+	},
+	{	/* CP1257 -> UTF-8 */
+		{ 0xE2, 0x82, 0xAC },	/* 0x80 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x81 (illegal character) */
+		{ 0xE2, 0x80, 0x9A },	/* 0x82 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x83 (illegal character) */
+		{ 0xE2, 0x80, 0x9E },	/* 0x84 */
+		{ 0xE2, 0x80, 0xA6 },	/* 0x85 */
+		{ 0xE2, 0x80, 0xA0 },	/* 0x86 */
+		{ 0xE2, 0x80, 0xA1 },	/* 0x87 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x88 (illegal character) */
+		{ 0xE2, 0x80, 0xB0 },	/* 0x89 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x8A (illegal character) */
+		{ 0xE2, 0x80, 0xB9 },	/* 0x8B */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x8C (illegal character) */
+		{ 0xC2, 0xA8, 0x00 },	/* 0x8D */
+		{ 0xCB, 0x87, 0x00 },	/* 0x8E */
+		{ 0xC2, 0xB8, 0x00 },	/* 0x8F */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x90 (illegal character) */
+		{ 0xE2, 0x80, 0x98 },	/* 0x91 */
+		{ 0xE2, 0x80, 0x99 },	/* 0x92 */
+		{ 0xE2, 0x80, 0x9C },	/* 0x93 */
+		{ 0xE2, 0x80, 0x9D },	/* 0x94 */
+		{ 0xE2, 0x80, 0xA2 },	/* 0x95 */
+		{ 0xE2, 0x80, 0x93 },	/* 0x96 */
+		{ 0xE2, 0x80, 0x94 },	/* 0x97 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x98 (illegal character) */
+		{ 0xE2, 0x84, 0xA2 },	/* 0x99 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x9A (illegal character) */
+		{ 0xE2, 0x80, 0xBA },	/* 0x9B */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x9C (illegal character) */
+		{ 0xC2, 0xAF, 0x00 },	/* 0x9D */
+		{ 0xCB, 0x9B, 0x00 },	/* 0x9E */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x9F (illegal character) */
+		{ 0xC2, 0xA0, 0x00 },	/* 0xA0 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xA1 (illegal character) */
+		{ 0xC2, 0xA2, 0x00 },	/* 0xA2 */
+		{ 0xC2, 0xA3, 0x00 },	/* 0xA3 */
+		{ 0xC2, 0xA4, 0x00 },	/* 0xA4 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xA5 (illegal character) */
+		{ 0xC2, 0xA6, 0x00 },	/* 0xA6 */
+		{ 0xC2, 0xA7, 0x00 },	/* 0xA7 */
+		{ 0xC3, 0x98, 0x00 },	/* 0xA8 */
+		{ 0xC2, 0xA9, 0x00 },	/* 0xA9 */
+		{ 0xC5, 0x96, 0x00 },	/* 0xAA */
+		{ 0xC2, 0xAB, 0x00 },	/* 0xAB */
+		{ 0xC2, 0xAC, 0x00 },	/* 0xAC */
+		{ 0xC2, 0xAD, 0x00 },	/* 0xAD */
+		{ 0xC2, 0xAE, 0x00 },	/* 0xAE */
+		{ 0xC3, 0x86, 0x00 },	/* 0xAF */
+		{ 0xC2, 0xB0, 0x00 },	/* 0xB0 */
+		{ 0xC2, 0xB1, 0x00 },	/* 0xB1 */
+		{ 0xC2, 0xB2, 0x00 },	/* 0xB2 */
+		{ 0xC2, 0xB3, 0x00 },	/* 0xB3 */
+		{ 0xC2, 0xB4, 0x00 },	/* 0xB4 */
+		{ 0xC2, 0xB5, 0x00 },	/* 0xB5 */
+		{ 0xC2, 0xB6, 0x00 },	/* 0xB6 */
+		{ 0xC2, 0xB7, 0x00 },	/* 0xB7 */
+		{ 0xC3, 0xB8, 0x00 },	/* 0xB8 */
+		{ 0xC2, 0xB9, 0x00 },	/* 0xB9 */
+		{ 0xC5, 0x97, 0x00 },	/* 0xBA */
+		{ 0xC2, 0xBB, 0x00 },	/* 0xBB */
+		{ 0xC2, 0xBC, 0x00 },	/* 0xBC */
+		{ 0xC2, 0xBD, 0x00 },	/* 0xBD */
+		{ 0xC2, 0xBE, 0x00 },	/* 0xBE */
+		{ 0xC3, 0xA6, 0x00 },	/* 0xBF */
+		{ 0xC4, 0x84, 0x00 },	/* 0xC0 */
+		{ 0xC4, 0xAE, 0x00 },	/* 0xC1 */
+		{ 0xC4, 0x80, 0x00 },	/* 0xC2 */
+		{ 0xC4, 0x86, 0x00 },	/* 0xC3 */
+		{ 0xC3, 0x84, 0x00 },	/* 0xC4 */
+		{ 0xC3, 0x85, 0x00 },	/* 0xC5 */
+		{ 0xC4, 0x98, 0x00 },	/* 0xC6 */
+		{ 0xC4, 0x92, 0x00 },	/* 0xC7 */
+		{ 0xC4, 0x8C, 0x00 },	/* 0xC8 */
+		{ 0xC3, 0x89, 0x00 },	/* 0xC9 */
+		{ 0xC5, 0xB9, 0x00 },	/* 0xCA */
+		{ 0xC4, 0x96, 0x00 },	/* 0xCB */
+		{ 0xC4, 0xA2, 0x00 },	/* 0xCC */
+		{ 0xC4, 0xB6, 0x00 },	/* 0xCD */
+		{ 0xC4, 0xAA, 0x00 },	/* 0xCE */
+		{ 0xC4, 0xBB, 0x00 },	/* 0xCF */
+		{ 0xC5, 0xA0, 0x00 },	/* 0xD0 */
+		{ 0xC5, 0x83, 0x00 },	/* 0xD1 */
+		{ 0xC5, 0x85, 0x00 },	/* 0xD2 */
+		{ 0xC3, 0x93, 0x00 },	/* 0xD3 */
+		{ 0xC5, 0x8C, 0x00 },	/* 0xD4 */
+		{ 0xC3, 0x95, 0x00 },	/* 0xD5 */
+		{ 0xC3, 0x96, 0x00 },	/* 0xD6 */
+		{ 0xC3, 0x97, 0x00 },	/* 0xD7 */
+		{ 0xC5, 0xB2, 0x00 },	/* 0xD8 */
+		{ 0xC5, 0x81, 0x00 },	/* 0xD9 */
+		{ 0xC5, 0x9A, 0x00 },	/* 0xDA */
+		{ 0xC5, 0xAA, 0x00 },	/* 0xDB */
+		{ 0xC3, 0x9C, 0x00 },	/* 0xDC */
+		{ 0xC5, 0xBB, 0x00 },	/* 0xDD */
+		{ 0xC5, 0xBD, 0x00 },	/* 0xDE */
+		{ 0xC3, 0x9F, 0x00 },	/* 0xDF */
+		{ 0xC4, 0x85, 0x00 },	/* 0xE0 */
+		{ 0xC4, 0xAF, 0x00 },	/* 0xE1 */
+		{ 0xC4, 0x81, 0x00 },	/* 0xE2 */
+		{ 0xC4, 0x87, 0x00 },	/* 0xE3 */
+		{ 0xC3, 0xA4, 0x00 },	/* 0xE4 */
+		{ 0xC3, 0xA5, 0x00 },	/* 0xE5 */
+		{ 0xC4, 0x99, 0x00 },	/* 0xE6 */
+		{ 0xC4, 0x93, 0x00 },	/* 0xE7 */
+		{ 0xC4, 0x8D, 0x00 },	/* 0xE8 */
+		{ 0xC3, 0xA9, 0x00 },	/* 0xE9 */
+		{ 0xC5, 0xBA, 0x00 },	/* 0xEA */
+		{ 0xC4, 0x97, 0x00 },	/* 0xEB */
+		{ 0xC4, 0xA3, 0x00 },	/* 0xEC */
+		{ 0xC4, 0xB7, 0x00 },	/* 0xED */
+		{ 0xC4, 0xAB, 0x00 },	/* 0xEE */
+		{ 0xC4, 0xBC, 0x00 },	/* 0xEF */
+		{ 0xC5, 0xA1, 0x00 },	/* 0xF0 */
+		{ 0xC5, 0x84, 0x00 },	/* 0xF1 */
+		{ 0xC5, 0x86, 0x00 },	/* 0xF2 */
+		{ 0xC3, 0xB3, 0x00 },	/* 0xF3 */
+		{ 0xC5, 0x8D, 0x00 },	/* 0xF4 */
+		{ 0xC3, 0xB5, 0x00 },	/* 0xF5 */
+		{ 0xC3, 0xB6, 0x00 },	/* 0xF6 */
+		{ 0xC3, 0xB7, 0x00 },	/* 0xF7 */
+		{ 0xC5, 0xB3, 0x00 },	/* 0xF8 */
+		{ 0xC5, 0x82, 0x00 },	/* 0xF9 */
+		{ 0xC5, 0x9B, 0x00 },	/* 0xFA */
+		{ 0xC5, 0xAB, 0x00 },	/* 0xFB */
+		{ 0xC3, 0xBC, 0x00 },	/* 0xFC */
+		{ 0xC5, 0xBC, 0x00 },	/* 0xFD */
+		{ 0xC5, 0xBE, 0x00 },	/* 0xFE */
+		{ 0xCB, 0x99, 0x00 },	/* 0xFF */
+	},
+	{	/* ISO 8859-2 -> UTF-8 */
+		{ 0xC2, 0x80, 0x00 },	/* 0x80 */
+		{ 0xC2, 0x81, 0x00 },	/* 0x81 */
+		{ 0xC2, 0x82, 0x00 },	/* 0x82 */
+		{ 0xC2, 0x83, 0x00 },	/* 0x83 */
+		{ 0xC2, 0x84, 0x00 },	/* 0x84 */
+		{ 0xC2, 0x85, 0x00 },	/* 0x85 */
+		{ 0xC2, 0x86, 0x00 },	/* 0x86 */
+		{ 0xC2, 0x87, 0x00 },	/* 0x87 */
+		{ 0xC2, 0x88, 0x00 },	/* 0x88 */
+		{ 0xC2, 0x89, 0x00 },	/* 0x89 */
+		{ 0xC2, 0x8A, 0x00 },	/* 0x8A */
+		{ 0xC2, 0x8B, 0x00 },	/* 0x8B */
+		{ 0xC2, 0x8C, 0x00 },	/* 0x8C */
+		{ 0xC2, 0x8D, 0x00 },	/* 0x8D */
+		{ 0xC2, 0x8E, 0x00 },	/* 0x8E */
+		{ 0xC2, 0x8F, 0x00 },	/* 0x8F */
+		{ 0xC2, 0x90, 0x00 },	/* 0x90 */
+		{ 0xC2, 0x91, 0x00 },	/* 0x91 */
+		{ 0xC2, 0x92, 0x00 },	/* 0x92 */
+		{ 0xC2, 0x93, 0x00 },	/* 0x93 */
+		{ 0xC2, 0x94, 0x00 },	/* 0x94 */
+		{ 0xC2, 0x95, 0x00 },	/* 0x95 */
+		{ 0xC2, 0x96, 0x00 },	/* 0x96 */
+		{ 0xC2, 0x97, 0x00 },	/* 0x97 */
+		{ 0xC2, 0x98, 0x00 },	/* 0x98 */
+		{ 0xC2, 0x99, 0x00 },	/* 0x99 */
+		{ 0xC2, 0x9A, 0x00 },	/* 0x9A */
+		{ 0xC2, 0x9B, 0x00 },	/* 0x9B */
+		{ 0xC2, 0x9C, 0x00 },	/* 0x9C */
+		{ 0xC2, 0x9D, 0x00 },	/* 0x9D */
+		{ 0xC2, 0x9E, 0x00 },	/* 0x9E */
+		{ 0xC2, 0x9F, 0x00 },	/* 0x9F */
+		{ 0xC2, 0xA0, 0x00 },	/* 0xA0 */
+		{ 0xC4, 0x84, 0x00 },	/* 0xA1 */
+		{ 0xCB, 0x98, 0x00 },	/* 0xA2 */
+		{ 0xC5, 0x81, 0x00 },	/* 0xA3 */
+		{ 0xC2, 0xA4, 0x00 },	/* 0xA4 */
+		{ 0xC4, 0xBD, 0x00 },	/* 0xA5 */
+		{ 0xC5, 0x9A, 0x00 },	/* 0xA6 */
+		{ 0xC2, 0xA7, 0x00 },	/* 0xA7 */
+		{ 0xC2, 0xA8, 0x00 },	/* 0xA8 */
+		{ 0xC5, 0xA0, 0x00 },	/* 0xA9 */
+		{ 0xC5, 0x9E, 0x00 },	/* 0xAA */
+		{ 0xC5, 0xA4, 0x00 },	/* 0xAB */
+		{ 0xC5, 0xB9, 0x00 },	/* 0xAC */
+		{ 0xC2, 0xAD, 0x00 },	/* 0xAD */
+		{ 0xC5, 0xBD, 0x00 },	/* 0xAE */
+		{ 0xC5, 0xBB, 0x00 },	/* 0xAF */
+		{ 0xC2, 0xB0, 0x00 },	/* 0xB0 */
+		{ 0xC4, 0x85, 0x00 },	/* 0xB1 */
+		{ 0xCB, 0x9B, 0x00 },	/* 0xB2 */
+		{ 0xC5, 0x82, 0x00 },	/* 0xB3 */
+		{ 0xC2, 0xB4, 0x00 },	/* 0xB4 */
+		{ 0xC4, 0xBE, 0x00 },	/* 0xB5 */
+		{ 0xC5, 0x9B, 0x00 },	/* 0xB6 */
+		{ 0xCB, 0x87, 0x00 },	/* 0xB7 */
+		{ 0xC2, 0xB8, 0x00 },	/* 0xB8 */
+		{ 0xC5, 0xA1, 0x00 },	/* 0xB9 */
+		{ 0xC5, 0x9F, 0x00 },	/* 0xBA */
+		{ 0xC5, 0xA5, 0x00 },	/* 0xBB */
+		{ 0xC5, 0xBA, 0x00 },	/* 0xBC */
+		{ 0xCB, 0x9D, 0x00 },	/* 0xBD */
+		{ 0xC5, 0xBE, 0x00 },	/* 0xBE */
+		{ 0xC5, 0xBC, 0x00 },	/* 0xBF */
+		{ 0xC5, 0x94, 0x00 },	/* 0xC0 */
+		{ 0xC3, 0x81, 0x00 },	/* 0xC1 */
+		{ 0xC3, 0x82, 0x00 },	/* 0xC2 */
+		{ 0xC4, 0x82, 0x00 },	/* 0xC3 */
+		{ 0xC3, 0x84, 0x00 },	/* 0xC4 */
+		{ 0xC4, 0xB9, 0x00 },	/* 0xC5 */
+		{ 0xC4, 0x86, 0x00 },	/* 0xC6 */
+		{ 0xC3, 0x87, 0x00 },	/* 0xC7 */
+		{ 0xC4, 0x8C, 0x00 },	/* 0xC8 */
+		{ 0xC3, 0x89, 0x00 },	/* 0xC9 */
+		{ 0xC4, 0x98, 0x00 },	/* 0xCA */
+		{ 0xC3, 0x8B, 0x00 },	/* 0xCB */
+		{ 0xC4, 0x9A, 0x00 },	/* 0xCC */
+		{ 0xC3, 0x8D, 0x00 },	/* 0xCD */
+		{ 0xC3, 0x8E, 0x00 },	/* 0xCE */
+		{ 0xC4, 0x8E, 0x00 },	/* 0xCF */
+		{ 0xC4, 0x90, 0x00 },	/* 0xD0 */
+		{ 0xC5, 0x83, 0x00 },	/* 0xD1 */
+		{ 0xC5, 0x87, 0x00 },	/* 0xD2 */
+		{ 0xC3, 0x93, 0x00 },	/* 0xD3 */
+		{ 0xC3, 0x94, 0x00 },	/* 0xD4 */
+		{ 0xC5, 0x90, 0x00 },	/* 0xD5 */
+		{ 0xC3, 0x96, 0x00 },	/* 0xD6 */
+		{ 0xC3, 0x97, 0x00 },	/* 0xD7 */
+		{ 0xC5, 0x98, 0x00 },	/* 0xD8 */
+		{ 0xC5, 0xAE, 0x00 },	/* 0xD9 */
+		{ 0xC3, 0x9A, 0x00 },	/* 0xDA */
+		{ 0xC5, 0xB0, 0x00 },	/* 0xDB */
+		{ 0xC3, 0x9C, 0x00 },	/* 0xDC */
+		{ 0xC3, 0x9D, 0x00 },	/* 0xDD */
+		{ 0xC5, 0xA2, 0x00 },	/* 0xDE */
+		{ 0xC3, 0x9F, 0x00 },	/* 0xDF */
+		{ 0xC5, 0x95, 0x00 },	/* 0xE0 */
+		{ 0xC3, 0xA1, 0x00 },	/* 0xE1 */
+		{ 0xC3, 0xA2, 0x00 },	/* 0xE2 */
+		{ 0xC4, 0x83, 0x00 },	/* 0xE3 */
+		{ 0xC3, 0xA4, 0x00 },	/* 0xE4 */
+		{ 0xC4, 0xBA, 0x00 },	/* 0xE5 */
+		{ 0xC4, 0x87, 0x00 },	/* 0xE6 */
+		{ 0xC3, 0xA7, 0x00 },	/* 0xE7 */
+		{ 0xC4, 0x8D, 0x00 },	/* 0xE8 */
+		{ 0xC3, 0xA9, 0x00 },	/* 0xE9 */
+		{ 0xC4, 0x99, 0x00 },	/* 0xEA */
+		{ 0xC3, 0xAB, 0x00 },	/* 0xEB */
+		{ 0xC4, 0x9B, 0x00 },	/* 0xEC */
+		{ 0xC3, 0xAD, 0x00 },	/* 0xED */
+		{ 0xC3, 0xAE, 0x00 },	/* 0xEE */
+		{ 0xC4, 0x8F, 0x00 },	/* 0xEF */
+		{ 0xC4, 0x91, 0x00 },	/* 0xF0 */
+		{ 0xC5, 0x84, 0x00 },	/* 0xF1 */
+		{ 0xC5, 0x88, 0x00 },	/* 0xF2 */
+		{ 0xC3, 0xB3, 0x00 },	/* 0xF3 */
+		{ 0xC3, 0xB4, 0x00 },	/* 0xF4 */
+		{ 0xC5, 0x91, 0x00 },	/* 0xF5 */
+		{ 0xC3, 0xB6, 0x00 },	/* 0xF6 */
+		{ 0xC3, 0xB7, 0x00 },	/* 0xF7 */
+		{ 0xC5, 0x99, 0x00 },	/* 0xF8 */
+		{ 0xC5, 0xAF, 0x00 },	/* 0xF9 */
+		{ 0xC3, 0xBA, 0x00 },	/* 0xFA */
+		{ 0xC5, 0xB1, 0x00 },	/* 0xFB */
+		{ 0xC3, 0xBC, 0x00 },	/* 0xFC */
+		{ 0xC3, 0xBD, 0x00 },	/* 0xFD */
+		{ 0xC5, 0xA3, 0x00 },	/* 0xFE */
+		{ 0xCB, 0x99, 0x00 },	/* 0xFF */
+	},
+	{	/* ISO 8859-3 -> UTF-8 */
+		{ 0xC2, 0x80, 0x00 },	/* 0x80 */
+		{ 0xC2, 0x81, 0x00 },	/* 0x81 */
+		{ 0xC2, 0x82, 0x00 },	/* 0x82 */
+		{ 0xC2, 0x83, 0x00 },	/* 0x83 */
+		{ 0xC2, 0x84, 0x00 },	/* 0x84 */
+		{ 0xC2, 0x85, 0x00 },	/* 0x85 */
+		{ 0xC2, 0x86, 0x00 },	/* 0x86 */
+		{ 0xC2, 0x87, 0x00 },	/* 0x87 */
+		{ 0xC2, 0x88, 0x00 },	/* 0x88 */
+		{ 0xC2, 0x89, 0x00 },	/* 0x89 */
+		{ 0xC2, 0x8A, 0x00 },	/* 0x8A */
+		{ 0xC2, 0x8B, 0x00 },	/* 0x8B */
+		{ 0xC2, 0x8C, 0x00 },	/* 0x8C */
+		{ 0xC2, 0x8D, 0x00 },	/* 0x8D */
+		{ 0xC2, 0x8E, 0x00 },	/* 0x8E */
+		{ 0xC2, 0x8F, 0x00 },	/* 0x8F */
+		{ 0xC2, 0x90, 0x00 },	/* 0x90 */
+		{ 0xC2, 0x91, 0x00 },	/* 0x91 */
+		{ 0xC2, 0x92, 0x00 },	/* 0x92 */
+		{ 0xC2, 0x93, 0x00 },	/* 0x93 */
+		{ 0xC2, 0x94, 0x00 },	/* 0x94 */
+		{ 0xC2, 0x95, 0x00 },	/* 0x95 */
+		{ 0xC2, 0x96, 0x00 },	/* 0x96 */
+		{ 0xC2, 0x97, 0x00 },	/* 0x97 */
+		{ 0xC2, 0x98, 0x00 },	/* 0x98 */
+		{ 0xC2, 0x99, 0x00 },	/* 0x99 */
+		{ 0xC2, 0x9A, 0x00 },	/* 0x9A */
+		{ 0xC2, 0x9B, 0x00 },	/* 0x9B */
+		{ 0xC2, 0x9C, 0x00 },	/* 0x9C */
+		{ 0xC2, 0x9D, 0x00 },	/* 0x9D */
+		{ 0xC2, 0x9E, 0x00 },	/* 0x9E */
+		{ 0xC2, 0x9F, 0x00 },	/* 0x9F */
+		{ 0xC2, 0xA0, 0x00 },	/* 0xA0 */
+		{ 0xC4, 0xA6, 0x00 },	/* 0xA1 */
+		{ 0xCB, 0x98, 0x00 },	/* 0xA2 */
+		{ 0xC2, 0xA3, 0x00 },	/* 0xA3 */
+		{ 0xC2, 0xA4, 0x00 },	/* 0xA4 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xA5 (illegal character) */
+		{ 0xC4, 0xA4, 0x00 },	/* 0xA6 */
+		{ 0xC2, 0xA7, 0x00 },	/* 0xA7 */
+		{ 0xC2, 0xA8, 0x00 },	/* 0xA8 */
+		{ 0xC4, 0xB0, 0x00 },	/* 0xA9 */
+		{ 0xC5, 0x9E, 0x00 },	/* 0xAA */
+		{ 0xC4, 0x9E, 0x00 },	/* 0xAB */
+		{ 0xC4, 0xB4, 0x00 },	/* 0xAC */
+		{ 0xC2, 0xAD, 0x00 },	/* 0xAD */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xAE (illegal character) */
+		{ 0xC5, 0xBB, 0x00 },	/* 0xAF */
+		{ 0xC2, 0xB0, 0x00 },	/* 0xB0 */
+		{ 0xC4, 0xA7, 0x00 },	/* 0xB1 */
+		{ 0xC2, 0xB2, 0x00 },	/* 0xB2 */
+		{ 0xC2, 0xB3, 0x00 },	/* 0xB3 */
+		{ 0xC2, 0xB4, 0x00 },	/* 0xB4 */
+		{ 0xC2, 0xB5, 0x00 },	/* 0xB5 */
+		{ 0xC4, 0xA5, 0x00 },	/* 0xB6 */
+		{ 0xC2, 0xB7, 0x00 },	/* 0xB7 */
+		{ 0xC2, 0xB8, 0x00 },	/* 0xB8 */
+		{ 0xC4, 0xB1, 0x00 },	/* 0xB9 */
+		{ 0xC5, 0x9F, 0x00 },	/* 0xBA */
+		{ 0xC4, 0x9F, 0x00 },	/* 0xBB */
+		{ 0xC4, 0xB5, 0x00 },	/* 0xBC */
+		{ 0xC2, 0xBD, 0x00 },	/* 0xBD */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xBE (illegal character) */
+		{ 0xC5, 0xBC, 0x00 },	/* 0xBF */
+		{ 0xC3, 0x80, 0x00 },	/* 0xC0 */
+		{ 0xC3, 0x81, 0x00 },	/* 0xC1 */
+		{ 0xC3, 0x82, 0x00 },	/* 0xC2 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xC3 (illegal character) */
+		{ 0xC3, 0x84, 0x00 },	/* 0xC4 */
+		{ 0xC4, 0x8A, 0x00 },	/* 0xC5 */
+		{ 0xC4, 0x88, 0x00 },	/* 0xC6 */
+		{ 0xC3, 0x87, 0x00 },	/* 0xC7 */
+		{ 0xC3, 0x88, 0x00 },	/* 0xC8 */
+		{ 0xC3, 0x89, 0x00 },	/* 0xC9 */
+		{ 0xC3, 0x8A, 0x00 },	/* 0xCA */
+		{ 0xC3, 0x8B, 0x00 },	/* 0xCB */
+		{ 0xC3, 0x8C, 0x00 },	/* 0xCC */
+		{ 0xC3, 0x8D, 0x00 },	/* 0xCD */
+		{ 0xC3, 0x8E, 0x00 },	/* 0xCE */
+		{ 0xC3, 0x8F, 0x00 },	/* 0xCF */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xD0 (illegal character) */
+		{ 0xC3, 0x91, 0x00 },	/* 0xD1 */
+		{ 0xC3, 0x92, 0x00 },	/* 0xD2 */
+		{ 0xC3, 0x93, 0x00 },	/* 0xD3 */
+		{ 0xC3, 0x94, 0x00 },	/* 0xD4 */
+		{ 0xC4, 0xA0, 0x00 },	/* 0xD5 */
+		{ 0xC3, 0x96, 0x00 },	/* 0xD6 */
+		{ 0xC3, 0x97, 0x00 },	/* 0xD7 */
+		{ 0xC4, 0x9C, 0x00 },	/* 0xD8 */
+		{ 0xC3, 0x99, 0x00 },	/* 0xD9 */
+		{ 0xC3, 0x9A, 0x00 },	/* 0xDA */
+		{ 0xC3, 0x9B, 0x00 },	/* 0xDB */
+		{ 0xC3, 0x9C, 0x00 },	/* 0xDC */
+		{ 0xC5, 0xAC, 0x00 },	/* 0xDD */
+		{ 0xC5, 0x9C, 0x00 },	/* 0xDE */
+		{ 0xC3, 0x9F, 0x00 },	/* 0xDF */
+		{ 0xC3, 0xA0, 0x00 },	/* 0xE0 */
+		{ 0xC3, 0xA1, 0x00 },	/* 0xE1 */
+		{ 0xC3, 0xA2, 0x00 },	/* 0xE2 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xE3 (illegal character) */
+		{ 0xC3, 0xA4, 0x00 },	/* 0xE4 */
+		{ 0xC4, 0x8B, 0x00 },	/* 0xE5 */
+		{ 0xC4, 0x89, 0x00 },	/* 0xE6 */
+		{ 0xC3, 0xA7, 0x00 },	/* 0xE7 */
+		{ 0xC3, 0xA8, 0x00 },	/* 0xE8 */
+		{ 0xC3, 0xA9, 0x00 },	/* 0xE9 */
+		{ 0xC3, 0xAA, 0x00 },	/* 0xEA */
+		{ 0xC3, 0xAB, 0x00 },	/* 0xEB */
+		{ 0xC3, 0xAC, 0x00 },	/* 0xEC */
+		{ 0xC3, 0xAD, 0x00 },	/* 0xED */
+		{ 0xC3, 0xAE, 0x00 },	/* 0xEE */
+		{ 0xC3, 0xAF, 0x00 },	/* 0xEF */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xF0 (illegal character) */
+		{ 0xC3, 0xB1, 0x00 },	/* 0xF1 */
+		{ 0xC3, 0xB2, 0x00 },	/* 0xF2 */
+		{ 0xC3, 0xB3, 0x00 },	/* 0xF3 */
+		{ 0xC3, 0xB4, 0x00 },	/* 0xF4 */
+		{ 0xC4, 0xA1, 0x00 },	/* 0xF5 */
+		{ 0xC3, 0xB6, 0x00 },	/* 0xF6 */
+		{ 0xC3, 0xB7, 0x00 },	/* 0xF7 */
+		{ 0xC4, 0x9D, 0x00 },	/* 0xF8 */
+		{ 0xC3, 0xB9, 0x00 },	/* 0xF9 */
+		{ 0xC3, 0xBA, 0x00 },	/* 0xFA */
+		{ 0xC3, 0xBB, 0x00 },	/* 0xFB */
+		{ 0xC3, 0xBC, 0x00 },	/* 0xFC */
+		{ 0xC5, 0xAD, 0x00 },	/* 0xFD */
+		{ 0xC5, 0x9D, 0x00 },	/* 0xFE */
+		{ 0xCB, 0x99, 0x00 },	/* 0xFF */
+	},
+	{	/* ISO 8859-4 -> UTF-8 */
+		{ 0xC2, 0x80, 0x00 },	/* 0x80 */
+		{ 0xC2, 0x81, 0x00 },	/* 0x81 */
+		{ 0xC2, 0x82, 0x00 },	/* 0x82 */
+		{ 0xC2, 0x83, 0x00 },	/* 0x83 */
+		{ 0xC2, 0x84, 0x00 },	/* 0x84 */
+		{ 0xC2, 0x85, 0x00 },	/* 0x85 */
+		{ 0xC2, 0x86, 0x00 },	/* 0x86 */
+		{ 0xC2, 0x87, 0x00 },	/* 0x87 */
+		{ 0xC2, 0x88, 0x00 },	/* 0x88 */
+		{ 0xC2, 0x89, 0x00 },	/* 0x89 */
+		{ 0xC2, 0x8A, 0x00 },	/* 0x8A */
+		{ 0xC2, 0x8B, 0x00 },	/* 0x8B */
+		{ 0xC2, 0x8C, 0x00 },	/* 0x8C */
+		{ 0xC2, 0x8D, 0x00 },	/* 0x8D */
+		{ 0xC2, 0x8E, 0x00 },	/* 0x8E */
+		{ 0xC2, 0x8F, 0x00 },	/* 0x8F */
+		{ 0xC2, 0x90, 0x00 },	/* 0x90 */
+		{ 0xC2, 0x91, 0x00 },	/* 0x91 */
+		{ 0xC2, 0x92, 0x00 },	/* 0x92 */
+		{ 0xC2, 0x93, 0x00 },	/* 0x93 */
+		{ 0xC2, 0x94, 0x00 },	/* 0x94 */
+		{ 0xC2, 0x95, 0x00 },	/* 0x95 */
+		{ 0xC2, 0x96, 0x00 },	/* 0x96 */
+		{ 0xC2, 0x97, 0x00 },	/* 0x97 */
+		{ 0xC2, 0x98, 0x00 },	/* 0x98 */
+		{ 0xC2, 0x99, 0x00 },	/* 0x99 */
+		{ 0xC2, 0x9A, 0x00 },	/* 0x9A */
+		{ 0xC2, 0x9B, 0x00 },	/* 0x9B */
+		{ 0xC2, 0x9C, 0x00 },	/* 0x9C */
+		{ 0xC2, 0x9D, 0x00 },	/* 0x9D */
+		{ 0xC2, 0x9E, 0x00 },	/* 0x9E */
+		{ 0xC2, 0x9F, 0x00 },	/* 0x9F */
+		{ 0xC2, 0xA0, 0x00 },	/* 0xA0 */
+		{ 0xC4, 0x84, 0x00 },	/* 0xA1 */
+		{ 0xC4, 0xB8, 0x00 },	/* 0xA2 */
+		{ 0xC5, 0x96, 0x00 },	/* 0xA3 */
+		{ 0xC2, 0xA4, 0x00 },	/* 0xA4 */
+		{ 0xC4, 0xA8, 0x00 },	/* 0xA5 */
+		{ 0xC4, 0xBB, 0x00 },	/* 0xA6 */
+		{ 0xC2, 0xA7, 0x00 },	/* 0xA7 */
+		{ 0xC2, 0xA8, 0x00 },	/* 0xA8 */
+		{ 0xC5, 0xA0, 0x00 },	/* 0xA9 */
+		{ 0xC4, 0x92, 0x00 },	/* 0xAA */
+		{ 0xC4, 0xA2, 0x00 },	/* 0xAB */
+		{ 0xC5, 0xA6, 0x00 },	/* 0xAC */
+		{ 0xC2, 0xAD, 0x00 },	/* 0xAD */
+		{ 0xC5, 0xBD, 0x00 },	/* 0xAE */
+		{ 0xC2, 0xAF, 0x00 },	/* 0xAF */
+		{ 0xC2, 0xB0, 0x00 },	/* 0xB0 */
+		{ 0xC4, 0x85, 0x00 },	/* 0xB1 */
+		{ 0xCB, 0x9B, 0x00 },	/* 0xB2 */
+		{ 0xC5, 0x97, 0x00 },	/* 0xB3 */
+		{ 0xC2, 0xB4, 0x00 },	/* 0xB4 */
+		{ 0xC4, 0xA9, 0x00 },	/* 0xB5 */
+		{ 0xC4, 0xBC, 0x00 },	/* 0xB6 */
+		{ 0xCB, 0x87, 0x00 },	/* 0xB7 */
+		{ 0xC2, 0xB8, 0x00 },	/* 0xB8 */
+		{ 0xC5, 0xA1, 0x00 },	/* 0xB9 */
+		{ 0xC4, 0x93, 0x00 },	/* 0xBA */
+		{ 0xC4, 0xA3, 0x00 },	/* 0xBB */
+		{ 0xC5, 0xA7, 0x00 },	/* 0xBC */
+		{ 0xC5, 0x8A, 0x00 },	/* 0xBD */
+		{ 0xC5, 0xBE, 0x00 },	/* 0xBE */
+		{ 0xC5, 0x8B, 0x00 },	/* 0xBF */
+		{ 0xC4, 0x80, 0x00 },	/* 0xC0 */
+		{ 0xC3, 0x81, 0x00 },	/* 0xC1 */
+		{ 0xC3, 0x82, 0x00 },	/* 0xC2 */
+		{ 0xC3, 0x83, 0x00 },	/* 0xC3 */
+		{ 0xC3, 0x84, 0x00 },	/* 0xC4 */
+		{ 0xC3, 0x85, 0x00 },	/* 0xC5 */
+		{ 0xC3, 0x86, 0x00 },	/* 0xC6 */
+		{ 0xC4, 0xAE, 0x00 },	/* 0xC7 */
+		{ 0xC4, 0x8C, 0x00 },	/* 0xC8 */
+		{ 0xC3, 0x89, 0x00 },	/* 0xC9 */
+		{ 0xC4, 0x98, 0x00 },	/* 0xCA */
+		{ 0xC3, 0x8B, 0x00 },	/* 0xCB */
+		{ 0xC4, 0x96, 0x00 },	/* 0xCC */
+		{ 0xC3, 0x8D, 0x00 },	/* 0xCD */
+		{ 0xC3, 0x8E, 0x00 },	/* 0xCE */
+		{ 0xC4, 0xAA, 0x00 },	/* 0xCF */
+		{ 0xC4, 0x90, 0x00 },	/* 0xD0 */
+		{ 0xC5, 0x85, 0x00 },	/* 0xD1 */
+		{ 0xC5, 0x8C, 0x00 },	/* 0xD2 */
+		{ 0xC4, 0xB6, 0x00 },	/* 0xD3 */
+		{ 0xC3, 0x94, 0x00 },	/* 0xD4 */
+		{ 0xC3, 0x95, 0x00 },	/* 0xD5 */
+		{ 0xC3, 0x96, 0x00 },	/* 0xD6 */
+		{ 0xC3, 0x97, 0x00 },	/* 0xD7 */
+		{ 0xC3, 0x98, 0x00 },	/* 0xD8 */
+		{ 0xC5, 0xB2, 0x00 },	/* 0xD9 */
+		{ 0xC3, 0x9A, 0x00 },	/* 0xDA */
+		{ 0xC3, 0x9B, 0x00 },	/* 0xDB */
+		{ 0xC3, 0x9C, 0x00 },	/* 0xDC */
+		{ 0xC5, 0xA8, 0x00 },	/* 0xDD */
+		{ 0xC5, 0xAA, 0x00 },	/* 0xDE */
+		{ 0xC3, 0x9F, 0x00 },	/* 0xDF */
+		{ 0xC4, 0x81, 0x00 },	/* 0xE0 */
+		{ 0xC3, 0xA1, 0x00 },	/* 0xE1 */
+		{ 0xC3, 0xA2, 0x00 },	/* 0xE2 */
+		{ 0xC3, 0xA3, 0x00 },	/* 0xE3 */
+		{ 0xC3, 0xA4, 0x00 },	/* 0xE4 */
+		{ 0xC3, 0xA5, 0x00 },	/* 0xE5 */
+		{ 0xC3, 0xA6, 0x00 },	/* 0xE6 */
+		{ 0xC4, 0xAF, 0x00 },	/* 0xE7 */
+		{ 0xC4, 0x8D, 0x00 },	/* 0xE8 */
+		{ 0xC3, 0xA9, 0x00 },	/* 0xE9 */
+		{ 0xC4, 0x99, 0x00 },	/* 0xEA */
+		{ 0xC3, 0xAB, 0x00 },	/* 0xEB */
+		{ 0xC4, 0x97, 0x00 },	/* 0xEC */
+		{ 0xC3, 0xAD, 0x00 },	/* 0xED */
+		{ 0xC3, 0xAE, 0x00 },	/* 0xEE */
+		{ 0xC4, 0xAB, 0x00 },	/* 0xEF */
+		{ 0xC4, 0x91, 0x00 },	/* 0xF0 */
+		{ 0xC5, 0x86, 0x00 },	/* 0xF1 */
+		{ 0xC5, 0x8D, 0x00 },	/* 0xF2 */
+		{ 0xC4, 0xB7, 0x00 },	/* 0xF3 */
+		{ 0xC3, 0xB4, 0x00 },	/* 0xF4 */
+		{ 0xC3, 0xB5, 0x00 },	/* 0xF5 */
+		{ 0xC3, 0xB6, 0x00 },	/* 0xF6 */
+		{ 0xC3, 0xB7, 0x00 },	/* 0xF7 */
+		{ 0xC3, 0xB8, 0x00 },	/* 0xF8 */
+		{ 0xC5, 0xB3, 0x00 },	/* 0xF9 */
+		{ 0xC3, 0xBA, 0x00 },	/* 0xFA */
+		{ 0xC3, 0xBB, 0x00 },	/* 0xFB */
+		{ 0xC3, 0xBC, 0x00 },	/* 0xFC */
+		{ 0xC5, 0xA9, 0x00 },	/* 0xFD */
+		{ 0xC5, 0xAB, 0x00 },	/* 0xFE */
+		{ 0xCB, 0x99, 0x00 },	/* 0xFF */
+	},
+	{	/* ISO 8859-5 -> UTF-8 */
+		{ 0xC2, 0x80, 0x00 },	/* 0x80 */
+		{ 0xC2, 0x81, 0x00 },	/* 0x81 */
+		{ 0xC2, 0x82, 0x00 },	/* 0x82 */
+		{ 0xC2, 0x83, 0x00 },	/* 0x83 */
+		{ 0xC2, 0x84, 0x00 },	/* 0x84 */
+		{ 0xC2, 0x85, 0x00 },	/* 0x85 */
+		{ 0xC2, 0x86, 0x00 },	/* 0x86 */
+		{ 0xC2, 0x87, 0x00 },	/* 0x87 */
+		{ 0xC2, 0x88, 0x00 },	/* 0x88 */
+		{ 0xC2, 0x89, 0x00 },	/* 0x89 */
+		{ 0xC2, 0x8A, 0x00 },	/* 0x8A */
+		{ 0xC2, 0x8B, 0x00 },	/* 0x8B */
+		{ 0xC2, 0x8C, 0x00 },	/* 0x8C */
+		{ 0xC2, 0x8D, 0x00 },	/* 0x8D */
+		{ 0xC2, 0x8E, 0x00 },	/* 0x8E */
+		{ 0xC2, 0x8F, 0x00 },	/* 0x8F */
+		{ 0xC2, 0x90, 0x00 },	/* 0x90 */
+		{ 0xC2, 0x91, 0x00 },	/* 0x91 */
+		{ 0xC2, 0x92, 0x00 },	/* 0x92 */
+		{ 0xC2, 0x93, 0x00 },	/* 0x93 */
+		{ 0xC2, 0x94, 0x00 },	/* 0x94 */
+		{ 0xC2, 0x95, 0x00 },	/* 0x95 */
+		{ 0xC2, 0x96, 0x00 },	/* 0x96 */
+		{ 0xC2, 0x97, 0x00 },	/* 0x97 */
+		{ 0xC2, 0x98, 0x00 },	/* 0x98 */
+		{ 0xC2, 0x99, 0x00 },	/* 0x99 */
+		{ 0xC2, 0x9A, 0x00 },	/* 0x9A */
+		{ 0xC2, 0x9B, 0x00 },	/* 0x9B */
+		{ 0xC2, 0x9C, 0x00 },	/* 0x9C */
+		{ 0xC2, 0x9D, 0x00 },	/* 0x9D */
+		{ 0xC2, 0x9E, 0x00 },	/* 0x9E */
+		{ 0xC2, 0x9F, 0x00 },	/* 0x9F */
+		{ 0xC2, 0xA0, 0x00 },	/* 0xA0 */
+		{ 0xD0, 0x81, 0x00 },	/* 0xA1 */
+		{ 0xD0, 0x82, 0x00 },	/* 0xA2 */
+		{ 0xD0, 0x83, 0x00 },	/* 0xA3 */
+		{ 0xD0, 0x84, 0x00 },	/* 0xA4 */
+		{ 0xD0, 0x85, 0x00 },	/* 0xA5 */
+		{ 0xD0, 0x86, 0x00 },	/* 0xA6 */
+		{ 0xD0, 0x87, 0x00 },	/* 0xA7 */
+		{ 0xD0, 0x88, 0x00 },	/* 0xA8 */
+		{ 0xD0, 0x89, 0x00 },	/* 0xA9 */
+		{ 0xD0, 0x8A, 0x00 },	/* 0xAA */
+		{ 0xD0, 0x8B, 0x00 },	/* 0xAB */
+		{ 0xD0, 0x8C, 0x00 },	/* 0xAC */
+		{ 0xC2, 0xAD, 0x00 },	/* 0xAD */
+		{ 0xD0, 0x8E, 0x00 },	/* 0xAE */
+		{ 0xD0, 0x8F, 0x00 },	/* 0xAF */
+		{ 0xD0, 0x90, 0x00 },	/* 0xB0 */
+		{ 0xD0, 0x91, 0x00 },	/* 0xB1 */
+		{ 0xD0, 0x92, 0x00 },	/* 0xB2 */
+		{ 0xD0, 0x93, 0x00 },	/* 0xB3 */
+		{ 0xD0, 0x94, 0x00 },	/* 0xB4 */
+		{ 0xD0, 0x95, 0x00 },	/* 0xB5 */
+		{ 0xD0, 0x96, 0x00 },	/* 0xB6 */
+		{ 0xD0, 0x97, 0x00 },	/* 0xB7 */
+		{ 0xD0, 0x98, 0x00 },	/* 0xB8 */
+		{ 0xD0, 0x99, 0x00 },	/* 0xB9 */
+		{ 0xD0, 0x9A, 0x00 },	/* 0xBA */
+		{ 0xD0, 0x9B, 0x00 },	/* 0xBB */
+		{ 0xD0, 0x9C, 0x00 },	/* 0xBC */
+		{ 0xD0, 0x9D, 0x00 },	/* 0xBD */
+		{ 0xD0, 0x9E, 0x00 },	/* 0xBE */
+		{ 0xD0, 0x9F, 0x00 },	/* 0xBF */
+		{ 0xD0, 0xA0, 0x00 },	/* 0xC0 */
+		{ 0xD0, 0xA1, 0x00 },	/* 0xC1 */
+		{ 0xD0, 0xA2, 0x00 },	/* 0xC2 */
+		{ 0xD0, 0xA3, 0x00 },	/* 0xC3 */
+		{ 0xD0, 0xA4, 0x00 },	/* 0xC4 */
+		{ 0xD0, 0xA5, 0x00 },	/* 0xC5 */
+		{ 0xD0, 0xA6, 0x00 },	/* 0xC6 */
+		{ 0xD0, 0xA7, 0x00 },	/* 0xC7 */
+		{ 0xD0, 0xA8, 0x00 },	/* 0xC8 */
+		{ 0xD0, 0xA9, 0x00 },	/* 0xC9 */
+		{ 0xD0, 0xAA, 0x00 },	/* 0xCA */
+		{ 0xD0, 0xAB, 0x00 },	/* 0xCB */
+		{ 0xD0, 0xAC, 0x00 },	/* 0xCC */
+		{ 0xD0, 0xAD, 0x00 },	/* 0xCD */
+		{ 0xD0, 0xAE, 0x00 },	/* 0xCE */
+		{ 0xD0, 0xAF, 0x00 },	/* 0xCF */
+		{ 0xD0, 0xB0, 0x00 },	/* 0xD0 */
+		{ 0xD0, 0xB1, 0x00 },	/* 0xD1 */
+		{ 0xD0, 0xB2, 0x00 },	/* 0xD2 */
+		{ 0xD0, 0xB3, 0x00 },	/* 0xD3 */
+		{ 0xD0, 0xB4, 0x00 },	/* 0xD4 */
+		{ 0xD0, 0xB5, 0x00 },	/* 0xD5 */
+		{ 0xD0, 0xB6, 0x00 },	/* 0xD6 */
+		{ 0xD0, 0xB7, 0x00 },	/* 0xD7 */
+		{ 0xD0, 0xB8, 0x00 },	/* 0xD8 */
+		{ 0xD0, 0xB9, 0x00 },	/* 0xD9 */
+		{ 0xD0, 0xBA, 0x00 },	/* 0xDA */
+		{ 0xD0, 0xBB, 0x00 },	/* 0xDB */
+		{ 0xD0, 0xBC, 0x00 },	/* 0xDC */
+		{ 0xD0, 0xBD, 0x00 },	/* 0xDD */
+		{ 0xD0, 0xBE, 0x00 },	/* 0xDE */
+		{ 0xD0, 0xBF, 0x00 },	/* 0xDF */
+		{ 0xD1, 0x80, 0x00 },	/* 0xE0 */
+		{ 0xD1, 0x81, 0x00 },	/* 0xE1 */
+		{ 0xD1, 0x82, 0x00 },	/* 0xE2 */
+		{ 0xD1, 0x83, 0x00 },	/* 0xE3 */
+		{ 0xD1, 0x84, 0x00 },	/* 0xE4 */
+		{ 0xD1, 0x85, 0x00 },	/* 0xE5 */
+		{ 0xD1, 0x86, 0x00 },	/* 0xE6 */
+		{ 0xD1, 0x87, 0x00 },	/* 0xE7 */
+		{ 0xD1, 0x88, 0x00 },	/* 0xE8 */
+		{ 0xD1, 0x89, 0x00 },	/* 0xE9 */
+		{ 0xD1, 0x8A, 0x00 },	/* 0xEA */
+		{ 0xD1, 0x8B, 0x00 },	/* 0xEB */
+		{ 0xD1, 0x8C, 0x00 },	/* 0xEC */
+		{ 0xD1, 0x8D, 0x00 },	/* 0xED */
+		{ 0xD1, 0x8E, 0x00 },	/* 0xEE */
+		{ 0xD1, 0x8F, 0x00 },	/* 0xEF */
+		{ 0xE2, 0x84, 0x96 },	/* 0xF0 */
+		{ 0xD1, 0x91, 0x00 },	/* 0xF1 */
+		{ 0xD1, 0x92, 0x00 },	/* 0xF2 */
+		{ 0xD1, 0x93, 0x00 },	/* 0xF3 */
+		{ 0xD1, 0x94, 0x00 },	/* 0xF4 */
+		{ 0xD1, 0x95, 0x00 },	/* 0xF5 */
+		{ 0xD1, 0x96, 0x00 },	/* 0xF6 */
+		{ 0xD1, 0x97, 0x00 },	/* 0xF7 */
+		{ 0xD1, 0x98, 0x00 },	/* 0xF8 */
+		{ 0xD1, 0x99, 0x00 },	/* 0xF9 */
+		{ 0xD1, 0x9A, 0x00 },	/* 0xFA */
+		{ 0xD1, 0x9B, 0x00 },	/* 0xFB */
+		{ 0xD1, 0x9C, 0x00 },	/* 0xFC */
+		{ 0xC2, 0xA7, 0x00 },	/* 0xFD */
+		{ 0xD1, 0x9E, 0x00 },	/* 0xFE */
+		{ 0xD1, 0x9F, 0x00 },	/* 0xFF */
+	},
+	{	/* ISO 8859-6 -> UTF-8 */
+		{ 0xC2, 0x80, 0x00 },	/* 0x80 */
+		{ 0xC2, 0x81, 0x00 },	/* 0x81 */
+		{ 0xC2, 0x82, 0x00 },	/* 0x82 */
+		{ 0xC2, 0x83, 0x00 },	/* 0x83 */
+		{ 0xC2, 0x84, 0x00 },	/* 0x84 */
+		{ 0xC2, 0x85, 0x00 },	/* 0x85 */
+		{ 0xC2, 0x86, 0x00 },	/* 0x86 */
+		{ 0xC2, 0x87, 0x00 },	/* 0x87 */
+		{ 0xC2, 0x88, 0x00 },	/* 0x88 */
+		{ 0xC2, 0x89, 0x00 },	/* 0x89 */
+		{ 0xC2, 0x8A, 0x00 },	/* 0x8A */
+		{ 0xC2, 0x8B, 0x00 },	/* 0x8B */
+		{ 0xC2, 0x8C, 0x00 },	/* 0x8C */
+		{ 0xC2, 0x8D, 0x00 },	/* 0x8D */
+		{ 0xC2, 0x8E, 0x00 },	/* 0x8E */
+		{ 0xC2, 0x8F, 0x00 },	/* 0x8F */
+		{ 0xC2, 0x90, 0x00 },	/* 0x90 */
+		{ 0xC2, 0x91, 0x00 },	/* 0x91 */
+		{ 0xC2, 0x92, 0x00 },	/* 0x92 */
+		{ 0xC2, 0x93, 0x00 },	/* 0x93 */
+		{ 0xC2, 0x94, 0x00 },	/* 0x94 */
+		{ 0xC2, 0x95, 0x00 },	/* 0x95 */
+		{ 0xC2, 0x96, 0x00 },	/* 0x96 */
+		{ 0xC2, 0x97, 0x00 },	/* 0x97 */
+		{ 0xC2, 0x98, 0x00 },	/* 0x98 */
+		{ 0xC2, 0x99, 0x00 },	/* 0x99 */
+		{ 0xC2, 0x9A, 0x00 },	/* 0x9A */
+		{ 0xC2, 0x9B, 0x00 },	/* 0x9B */
+		{ 0xC2, 0x9C, 0x00 },	/* 0x9C */
+		{ 0xC2, 0x9D, 0x00 },	/* 0x9D */
+		{ 0xC2, 0x9E, 0x00 },	/* 0x9E */
+		{ 0xC2, 0x9F, 0x00 },	/* 0x9F */
+		{ 0xC2, 0xA0, 0x00 },	/* 0xA0 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xA1 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xA2 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xA3 (illegal character) */
+		{ 0xC2, 0xA4, 0x00 },	/* 0xA4 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xA5 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xA6 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xA7 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xA8 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xA9 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xAA (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xAB (illegal character) */
+		{ 0xD8, 0x8C, 0x00 },	/* 0xAC */
+		{ 0xC2, 0xAD, 0x00 },	/* 0xAD */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xAE (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xAF (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xB0 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xB1 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xB2 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xB3 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xB4 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xB5 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xB6 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xB7 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xB8 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xB9 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xBA (illegal character) */
+		{ 0xD8, 0x9B, 0x00 },	/* 0xBB */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xBC (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xBD (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xBE (illegal character) */
+		{ 0xD8, 0x9F, 0x00 },	/* 0xBF */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xC0 (illegal character) */
+		{ 0xD8, 0xA1, 0x00 },	/* 0xC1 */
+		{ 0xD8, 0xA2, 0x00 },	/* 0xC2 */
+		{ 0xD8, 0xA3, 0x00 },	/* 0xC3 */
+		{ 0xD8, 0xA4, 0x00 },	/* 0xC4 */
+		{ 0xD8, 0xA5, 0x00 },	/* 0xC5 */
+		{ 0xD8, 0xA6, 0x00 },	/* 0xC6 */
+		{ 0xD8, 0xA7, 0x00 },	/* 0xC7 */
+		{ 0xD8, 0xA8, 0x00 },	/* 0xC8 */
+		{ 0xD8, 0xA9, 0x00 },	/* 0xC9 */
+		{ 0xD8, 0xAA, 0x00 },	/* 0xCA */
+		{ 0xD8, 0xAB, 0x00 },	/* 0xCB */
+		{ 0xD8, 0xAC, 0x00 },	/* 0xCC */
+		{ 0xD8, 0xAD, 0x00 },	/* 0xCD */
+		{ 0xD8, 0xAE, 0x00 },	/* 0xCE */
+		{ 0xD8, 0xAF, 0x00 },	/* 0xCF */
+		{ 0xD8, 0xB0, 0x00 },	/* 0xD0 */
+		{ 0xD8, 0xB1, 0x00 },	/* 0xD1 */
+		{ 0xD8, 0xB2, 0x00 },	/* 0xD2 */
+		{ 0xD8, 0xB3, 0x00 },	/* 0xD3 */
+		{ 0xD8, 0xB4, 0x00 },	/* 0xD4 */
+		{ 0xD8, 0xB5, 0x00 },	/* 0xD5 */
+		{ 0xD8, 0xB6, 0x00 },	/* 0xD6 */
+		{ 0xD8, 0xB7, 0x00 },	/* 0xD7 */
+		{ 0xD8, 0xB8, 0x00 },	/* 0xD8 */
+		{ 0xD8, 0xB9, 0x00 },	/* 0xD9 */
+		{ 0xD8, 0xBA, 0x00 },	/* 0xDA */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xDB (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xDC (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xDD (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xDE (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xDF (illegal character) */
+		{ 0xD9, 0x80, 0x00 },	/* 0xE0 */
+		{ 0xD9, 0x81, 0x00 },	/* 0xE1 */
+		{ 0xD9, 0x82, 0x00 },	/* 0xE2 */
+		{ 0xD9, 0x83, 0x00 },	/* 0xE3 */
+		{ 0xD9, 0x84, 0x00 },	/* 0xE4 */
+		{ 0xD9, 0x85, 0x00 },	/* 0xE5 */
+		{ 0xD9, 0x86, 0x00 },	/* 0xE6 */
+		{ 0xD9, 0x87, 0x00 },	/* 0xE7 */
+		{ 0xD9, 0x88, 0x00 },	/* 0xE8 */
+		{ 0xD9, 0x89, 0x00 },	/* 0xE9 */
+		{ 0xD9, 0x8A, 0x00 },	/* 0xEA */
+		{ 0xD9, 0x8B, 0x00 },	/* 0xEB */
+		{ 0xD9, 0x8C, 0x00 },	/* 0xEC */
+		{ 0xD9, 0x8D, 0x00 },	/* 0xED */
+		{ 0xD9, 0x8E, 0x00 },	/* 0xEE */
+		{ 0xD9, 0x8F, 0x00 },	/* 0xEF */
+		{ 0xD9, 0x90, 0x00 },	/* 0xF0 */
+		{ 0xD9, 0x91, 0x00 },	/* 0xF1 */
+		{ 0xD9, 0x92, 0x00 },	/* 0xF2 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xF3 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xF4 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xF5 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xF6 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xF7 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xF8 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xF9 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xFA (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xFB (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xFC (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xFD (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xFE (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xFF (illegal character) */
+	},
+	{	/* ISO 8859-7 -> UTF-8 */
+		{ 0xC2, 0x80, 0x00 },	/* 0x80 */
+		{ 0xC2, 0x81, 0x00 },	/* 0x81 */
+		{ 0xC2, 0x82, 0x00 },	/* 0x82 */
+		{ 0xC2, 0x83, 0x00 },	/* 0x83 */
+		{ 0xC2, 0x84, 0x00 },	/* 0x84 */
+		{ 0xC2, 0x85, 0x00 },	/* 0x85 */
+		{ 0xC2, 0x86, 0x00 },	/* 0x86 */
+		{ 0xC2, 0x87, 0x00 },	/* 0x87 */
+		{ 0xC2, 0x88, 0x00 },	/* 0x88 */
+		{ 0xC2, 0x89, 0x00 },	/* 0x89 */
+		{ 0xC2, 0x8A, 0x00 },	/* 0x8A */
+		{ 0xC2, 0x8B, 0x00 },	/* 0x8B */
+		{ 0xC2, 0x8C, 0x00 },	/* 0x8C */
+		{ 0xC2, 0x8D, 0x00 },	/* 0x8D */
+		{ 0xC2, 0x8E, 0x00 },	/* 0x8E */
+		{ 0xC2, 0x8F, 0x00 },	/* 0x8F */
+		{ 0xC2, 0x90, 0x00 },	/* 0x90 */
+		{ 0xC2, 0x91, 0x00 },	/* 0x91 */
+		{ 0xC2, 0x92, 0x00 },	/* 0x92 */
+		{ 0xC2, 0x93, 0x00 },	/* 0x93 */
+		{ 0xC2, 0x94, 0x00 },	/* 0x94 */
+		{ 0xC2, 0x95, 0x00 },	/* 0x95 */
+		{ 0xC2, 0x96, 0x00 },	/* 0x96 */
+		{ 0xC2, 0x97, 0x00 },	/* 0x97 */
+		{ 0xC2, 0x98, 0x00 },	/* 0x98 */
+		{ 0xC2, 0x99, 0x00 },	/* 0x99 */
+		{ 0xC2, 0x9A, 0x00 },	/* 0x9A */
+		{ 0xC2, 0x9B, 0x00 },	/* 0x9B */
+		{ 0xC2, 0x9C, 0x00 },	/* 0x9C */
+		{ 0xC2, 0x9D, 0x00 },	/* 0x9D */
+		{ 0xC2, 0x9E, 0x00 },	/* 0x9E */
+		{ 0xC2, 0x9F, 0x00 },	/* 0x9F */
+		{ 0xC2, 0xA0, 0x00 },	/* 0xA0 */
+		{ 0xE2, 0x80, 0x98 },	/* 0xA1 */
+		{ 0xE2, 0x80, 0x99 },	/* 0xA2 */
+		{ 0xC2, 0xA3, 0x00 },	/* 0xA3 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xA4 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xA5 (illegal character) */
+		{ 0xC2, 0xA6, 0x00 },	/* 0xA6 */
+		{ 0xC2, 0xA7, 0x00 },	/* 0xA7 */
+		{ 0xC2, 0xA8, 0x00 },	/* 0xA8 */
+		{ 0xC2, 0xA9, 0x00 },	/* 0xA9 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xAA (illegal character) */
+		{ 0xC2, 0xAB, 0x00 },	/* 0xAB */
+		{ 0xC2, 0xAC, 0x00 },	/* 0xAC */
+		{ 0xC2, 0xAD, 0x00 },	/* 0xAD */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xAE (illegal character) */
+		{ 0xE2, 0x80, 0x95 },	/* 0xAF */
+		{ 0xC2, 0xB0, 0x00 },	/* 0xB0 */
+		{ 0xC2, 0xB1, 0x00 },	/* 0xB1 */
+		{ 0xC2, 0xB2, 0x00 },	/* 0xB2 */
+		{ 0xC2, 0xB3, 0x00 },	/* 0xB3 */
+		{ 0xCE, 0x84, 0x00 },	/* 0xB4 */
+		{ 0xCE, 0x85, 0x00 },	/* 0xB5 */
+		{ 0xCE, 0x86, 0x00 },	/* 0xB6 */
+		{ 0xC2, 0xB7, 0x00 },	/* 0xB7 */
+		{ 0xCE, 0x88, 0x00 },	/* 0xB8 */
+		{ 0xCE, 0x89, 0x00 },	/* 0xB9 */
+		{ 0xCE, 0x8A, 0x00 },	/* 0xBA */
+		{ 0xC2, 0xBB, 0x00 },	/* 0xBB */
+		{ 0xCE, 0x8C, 0x00 },	/* 0xBC */
+		{ 0xC2, 0xBD, 0x00 },	/* 0xBD */
+		{ 0xCE, 0x8E, 0x00 },	/* 0xBE */
+		{ 0xCE, 0x8F, 0x00 },	/* 0xBF */
+		{ 0xCE, 0x90, 0x00 },	/* 0xC0 */
+		{ 0xCE, 0x91, 0x00 },	/* 0xC1 */
+		{ 0xCE, 0x92, 0x00 },	/* 0xC2 */
+		{ 0xCE, 0x93, 0x00 },	/* 0xC3 */
+		{ 0xCE, 0x94, 0x00 },	/* 0xC4 */
+		{ 0xCE, 0x95, 0x00 },	/* 0xC5 */
+		{ 0xCE, 0x96, 0x00 },	/* 0xC6 */
+		{ 0xCE, 0x97, 0x00 },	/* 0xC7 */
+		{ 0xCE, 0x98, 0x00 },	/* 0xC8 */
+		{ 0xCE, 0x99, 0x00 },	/* 0xC9 */
+		{ 0xCE, 0x9A, 0x00 },	/* 0xCA */
+		{ 0xCE, 0x9B, 0x00 },	/* 0xCB */
+		{ 0xCE, 0x9C, 0x00 },	/* 0xCC */
+		{ 0xCE, 0x9D, 0x00 },	/* 0xCD */
+		{ 0xCE, 0x9E, 0x00 },	/* 0xCE */
+		{ 0xCE, 0x9F, 0x00 },	/* 0xCF */
+		{ 0xCE, 0xA0, 0x00 },	/* 0xD0 */
+		{ 0xCE, 0xA1, 0x00 },	/* 0xD1 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xD2 (illegal character) */
+		{ 0xCE, 0xA3, 0x00 },	/* 0xD3 */
+		{ 0xCE, 0xA4, 0x00 },	/* 0xD4 */
+		{ 0xCE, 0xA5, 0x00 },	/* 0xD5 */
+		{ 0xCE, 0xA6, 0x00 },	/* 0xD6 */
+		{ 0xCE, 0xA7, 0x00 },	/* 0xD7 */
+		{ 0xCE, 0xA8, 0x00 },	/* 0xD8 */
+		{ 0xCE, 0xA9, 0x00 },	/* 0xD9 */
+		{ 0xCE, 0xAA, 0x00 },	/* 0xDA */
+		{ 0xCE, 0xAB, 0x00 },	/* 0xDB */
+		{ 0xCE, 0xAC, 0x00 },	/* 0xDC */
+		{ 0xCE, 0xAD, 0x00 },	/* 0xDD */
+		{ 0xCE, 0xAE, 0x00 },	/* 0xDE */
+		{ 0xCE, 0xAF, 0x00 },	/* 0xDF */
+		{ 0xCE, 0xB0, 0x00 },	/* 0xE0 */
+		{ 0xCE, 0xB1, 0x00 },	/* 0xE1 */
+		{ 0xCE, 0xB2, 0x00 },	/* 0xE2 */
+		{ 0xCE, 0xB3, 0x00 },	/* 0xE3 */
+		{ 0xCE, 0xB4, 0x00 },	/* 0xE4 */
+		{ 0xCE, 0xB5, 0x00 },	/* 0xE5 */
+		{ 0xCE, 0xB6, 0x00 },	/* 0xE6 */
+		{ 0xCE, 0xB7, 0x00 },	/* 0xE7 */
+		{ 0xCE, 0xB8, 0x00 },	/* 0xE8 */
+		{ 0xCE, 0xB9, 0x00 },	/* 0xE9 */
+		{ 0xCE, 0xBA, 0x00 },	/* 0xEA */
+		{ 0xCE, 0xBB, 0x00 },	/* 0xEB */
+		{ 0xCE, 0xBC, 0x00 },	/* 0xEC */
+		{ 0xCE, 0xBD, 0x00 },	/* 0xED */
+		{ 0xCE, 0xBE, 0x00 },	/* 0xEE */
+		{ 0xCE, 0xBF, 0x00 },	/* 0xEF */
+		{ 0xCF, 0x80, 0x00 },	/* 0xF0 */
+		{ 0xCF, 0x81, 0x00 },	/* 0xF1 */
+		{ 0xCF, 0x82, 0x00 },	/* 0xF2 */
+		{ 0xCF, 0x83, 0x00 },	/* 0xF3 */
+		{ 0xCF, 0x84, 0x00 },	/* 0xF4 */
+		{ 0xCF, 0x85, 0x00 },	/* 0xF5 */
+		{ 0xCF, 0x86, 0x00 },	/* 0xF6 */
+		{ 0xCF, 0x87, 0x00 },	/* 0xF7 */
+		{ 0xCF, 0x88, 0x00 },	/* 0xF8 */
+		{ 0xCF, 0x89, 0x00 },	/* 0xF9 */
+		{ 0xCF, 0x8A, 0x00 },	/* 0xFA */
+		{ 0xCF, 0x8B, 0x00 },	/* 0xFB */
+		{ 0xCF, 0x8C, 0x00 },	/* 0xFC */
+		{ 0xCF, 0x8D, 0x00 },	/* 0xFD */
+		{ 0xCF, 0x8E, 0x00 },	/* 0xFE */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xFF (illegal character) */
+	},
+	{	/* ISO 8859-8 -> UTF-8 */
+		{ 0xC2, 0x80, 0x00 },	/* 0x80 */
+		{ 0xC2, 0x81, 0x00 },	/* 0x81 */
+		{ 0xC2, 0x82, 0x00 },	/* 0x82 */
+		{ 0xC2, 0x83, 0x00 },	/* 0x83 */
+		{ 0xC2, 0x84, 0x00 },	/* 0x84 */
+		{ 0xC2, 0x85, 0x00 },	/* 0x85 */
+		{ 0xC2, 0x86, 0x00 },	/* 0x86 */
+		{ 0xC2, 0x87, 0x00 },	/* 0x87 */
+		{ 0xC2, 0x88, 0x00 },	/* 0x88 */
+		{ 0xC2, 0x89, 0x00 },	/* 0x89 */
+		{ 0xC2, 0x8A, 0x00 },	/* 0x8A */
+		{ 0xC2, 0x8B, 0x00 },	/* 0x8B */
+		{ 0xC2, 0x8C, 0x00 },	/* 0x8C */
+		{ 0xC2, 0x8D, 0x00 },	/* 0x8D */
+		{ 0xC2, 0x8E, 0x00 },	/* 0x8E */
+		{ 0xC2, 0x8F, 0x00 },	/* 0x8F */
+		{ 0xC2, 0x90, 0x00 },	/* 0x90 */
+		{ 0xC2, 0x91, 0x00 },	/* 0x91 */
+		{ 0xC2, 0x92, 0x00 },	/* 0x92 */
+		{ 0xC2, 0x93, 0x00 },	/* 0x93 */
+		{ 0xC2, 0x94, 0x00 },	/* 0x94 */
+		{ 0xC2, 0x95, 0x00 },	/* 0x95 */
+		{ 0xC2, 0x96, 0x00 },	/* 0x96 */
+		{ 0xC2, 0x97, 0x00 },	/* 0x97 */
+		{ 0xC2, 0x98, 0x00 },	/* 0x98 */
+		{ 0xC2, 0x99, 0x00 },	/* 0x99 */
+		{ 0xC2, 0x9A, 0x00 },	/* 0x9A */
+		{ 0xC2, 0x9B, 0x00 },	/* 0x9B */
+		{ 0xC2, 0x9C, 0x00 },	/* 0x9C */
+		{ 0xC2, 0x9D, 0x00 },	/* 0x9D */
+		{ 0xC2, 0x9E, 0x00 },	/* 0x9E */
+		{ 0xC2, 0x9F, 0x00 },	/* 0x9F */
+		{ 0xC2, 0xA0, 0x00 },	/* 0xA0 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xA1 (illegal character) */
+		{ 0xC2, 0xA2, 0x00 },	/* 0xA2 */
+		{ 0xC2, 0xA3, 0x00 },	/* 0xA3 */
+		{ 0xC2, 0xA4, 0x00 },	/* 0xA4 */
+		{ 0xC2, 0xA5, 0x00 },	/* 0xA5 */
+		{ 0xC2, 0xA6, 0x00 },	/* 0xA6 */
+		{ 0xC2, 0xA7, 0x00 },	/* 0xA7 */
+		{ 0xC2, 0xA8, 0x00 },	/* 0xA8 */
+		{ 0xC2, 0xA9, 0x00 },	/* 0xA9 */
+		{ 0xC3, 0x97, 0x00 },	/* 0xAA */
+		{ 0xC2, 0xAB, 0x00 },	/* 0xAB */
+		{ 0xC2, 0xAC, 0x00 },	/* 0xAC */
+		{ 0xC2, 0xAD, 0x00 },	/* 0xAD */
+		{ 0xC2, 0xAE, 0x00 },	/* 0xAE */
+		{ 0xC2, 0xAF, 0x00 },	/* 0xAF */
+		{ 0xC2, 0xB0, 0x00 },	/* 0xB0 */
+		{ 0xC2, 0xB1, 0x00 },	/* 0xB1 */
+		{ 0xC2, 0xB2, 0x00 },	/* 0xB2 */
+		{ 0xC2, 0xB3, 0x00 },	/* 0xB3 */
+		{ 0xC2, 0xB4, 0x00 },	/* 0xB4 */
+		{ 0xC2, 0xB5, 0x00 },	/* 0xB5 */
+		{ 0xC2, 0xB6, 0x00 },	/* 0xB6 */
+		{ 0xC2, 0xB7, 0x00 },	/* 0xB7 */
+		{ 0xC2, 0xB8, 0x00 },	/* 0xB8 */
+		{ 0xC2, 0xB9, 0x00 },	/* 0xB9 */
+		{ 0xC3, 0xB7, 0x00 },	/* 0xBA */
+		{ 0xC2, 0xBB, 0x00 },	/* 0xBB */
+		{ 0xC2, 0xBC, 0x00 },	/* 0xBC */
+		{ 0xC2, 0xBD, 0x00 },	/* 0xBD */
+		{ 0xC2, 0xBE, 0x00 },	/* 0xBE */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xBF (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xC0 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xC1 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xC2 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xC3 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xC4 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xC5 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xC6 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xC7 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xC8 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xC9 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xCA (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xCB (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xCC (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xCD (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xCE (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xCF (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xD0 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xD1 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xD2 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xD3 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xD4 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xD5 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xD6 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xD7 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xD8 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xD9 (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xDA (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xDB (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xDC (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xDD (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xDE (illegal character) */
+		{ 0xE2, 0x80, 0x97 },	/* 0xDF */
+		{ 0xD7, 0x90, 0x00 },	/* 0xE0 */
+		{ 0xD7, 0x91, 0x00 },	/* 0xE1 */
+		{ 0xD7, 0x92, 0x00 },	/* 0xE2 */
+		{ 0xD7, 0x93, 0x00 },	/* 0xE3 */
+		{ 0xD7, 0x94, 0x00 },	/* 0xE4 */
+		{ 0xD7, 0x95, 0x00 },	/* 0xE5 */
+		{ 0xD7, 0x96, 0x00 },	/* 0xE6 */
+		{ 0xD7, 0x97, 0x00 },	/* 0xE7 */
+		{ 0xD7, 0x98, 0x00 },	/* 0xE8 */
+		{ 0xD7, 0x99, 0x00 },	/* 0xE9 */
+		{ 0xD7, 0x9A, 0x00 },	/* 0xEA */
+		{ 0xD7, 0x9B, 0x00 },	/* 0xEB */
+		{ 0xD7, 0x9C, 0x00 },	/* 0xEC */
+		{ 0xD7, 0x9D, 0x00 },	/* 0xED */
+		{ 0xD7, 0x9E, 0x00 },	/* 0xEE */
+		{ 0xD7, 0x9F, 0x00 },	/* 0xEF */
+		{ 0xD7, 0xA0, 0x00 },	/* 0xF0 */
+		{ 0xD7, 0xA1, 0x00 },	/* 0xF1 */
+		{ 0xD7, 0xA2, 0x00 },	/* 0xF2 */
+		{ 0xD7, 0xA3, 0x00 },	/* 0xF3 */
+		{ 0xD7, 0xA4, 0x00 },	/* 0xF4 */
+		{ 0xD7, 0xA5, 0x00 },	/* 0xF5 */
+		{ 0xD7, 0xA6, 0x00 },	/* 0xF6 */
+		{ 0xD7, 0xA7, 0x00 },	/* 0xF7 */
+		{ 0xD7, 0xA8, 0x00 },	/* 0xF8 */
+		{ 0xD7, 0xA9, 0x00 },	/* 0xF9 */
+		{ 0xD7, 0xAA, 0x00 },	/* 0xFA */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xFB (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xFC (illegal character) */
+		{ 0xE2, 0x80, 0x8E },	/* 0xFD */
+		{ 0xE2, 0x80, 0x8F },	/* 0xFE */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xFF (illegal character) */
+	},
+	{	/* ISO 8859-9 -> UTF-8 */
+		{ 0xC2, 0x80, 0x00 },	/* 0x80 */
+		{ 0xC2, 0x81, 0x00 },	/* 0x81 */
+		{ 0xC2, 0x82, 0x00 },	/* 0x82 */
+		{ 0xC2, 0x83, 0x00 },	/* 0x83 */
+		{ 0xC2, 0x84, 0x00 },	/* 0x84 */
+		{ 0xC2, 0x85, 0x00 },	/* 0x85 */
+		{ 0xC2, 0x86, 0x00 },	/* 0x86 */
+		{ 0xC2, 0x87, 0x00 },	/* 0x87 */
+		{ 0xC2, 0x88, 0x00 },	/* 0x88 */
+		{ 0xC2, 0x89, 0x00 },	/* 0x89 */
+		{ 0xC2, 0x8A, 0x00 },	/* 0x8A */
+		{ 0xC2, 0x8B, 0x00 },	/* 0x8B */
+		{ 0xC2, 0x8C, 0x00 },	/* 0x8C */
+		{ 0xC2, 0x8D, 0x00 },	/* 0x8D */
+		{ 0xC2, 0x8E, 0x00 },	/* 0x8E */
+		{ 0xC2, 0x8F, 0x00 },	/* 0x8F */
+		{ 0xC2, 0x90, 0x00 },	/* 0x90 */
+		{ 0xC2, 0x91, 0x00 },	/* 0x91 */
+		{ 0xC2, 0x92, 0x00 },	/* 0x92 */
+		{ 0xC2, 0x93, 0x00 },	/* 0x93 */
+		{ 0xC2, 0x94, 0x00 },	/* 0x94 */
+		{ 0xC2, 0x95, 0x00 },	/* 0x95 */
+		{ 0xC2, 0x96, 0x00 },	/* 0x96 */
+		{ 0xC2, 0x97, 0x00 },	/* 0x97 */
+		{ 0xC2, 0x98, 0x00 },	/* 0x98 */
+		{ 0xC2, 0x99, 0x00 },	/* 0x99 */
+		{ 0xC2, 0x9A, 0x00 },	/* 0x9A */
+		{ 0xC2, 0x9B, 0x00 },	/* 0x9B */
+		{ 0xC2, 0x9C, 0x00 },	/* 0x9C */
+		{ 0xC2, 0x9D, 0x00 },	/* 0x9D */
+		{ 0xC2, 0x9E, 0x00 },	/* 0x9E */
+		{ 0xC2, 0x9F, 0x00 },	/* 0x9F */
+		{ 0xC2, 0xA0, 0x00 },	/* 0xA0 */
+		{ 0xC2, 0xA1, 0x00 },	/* 0xA1 */
+		{ 0xC2, 0xA2, 0x00 },	/* 0xA2 */
+		{ 0xC2, 0xA3, 0x00 },	/* 0xA3 */
+		{ 0xC2, 0xA4, 0x00 },	/* 0xA4 */
+		{ 0xC2, 0xA5, 0x00 },	/* 0xA5 */
+		{ 0xC2, 0xA6, 0x00 },	/* 0xA6 */
+		{ 0xC2, 0xA7, 0x00 },	/* 0xA7 */
+		{ 0xC2, 0xA8, 0x00 },	/* 0xA8 */
+		{ 0xC2, 0xA9, 0x00 },	/* 0xA9 */
+		{ 0xC2, 0xAA, 0x00 },	/* 0xAA */
+		{ 0xC2, 0xAB, 0x00 },	/* 0xAB */
+		{ 0xC2, 0xAC, 0x00 },	/* 0xAC */
+		{ 0xC2, 0xAD, 0x00 },	/* 0xAD */
+		{ 0xC2, 0xAE, 0x00 },	/* 0xAE */
+		{ 0xC2, 0xAF, 0x00 },	/* 0xAF */
+		{ 0xC2, 0xB0, 0x00 },	/* 0xB0 */
+		{ 0xC2, 0xB1, 0x00 },	/* 0xB1 */
+		{ 0xC2, 0xB2, 0x00 },	/* 0xB2 */
+		{ 0xC2, 0xB3, 0x00 },	/* 0xB3 */
+		{ 0xC2, 0xB4, 0x00 },	/* 0xB4 */
+		{ 0xC2, 0xB5, 0x00 },	/* 0xB5 */
+		{ 0xC2, 0xB6, 0x00 },	/* 0xB6 */
+		{ 0xC2, 0xB7, 0x00 },	/* 0xB7 */
+		{ 0xC2, 0xB8, 0x00 },	/* 0xB8 */
+		{ 0xC2, 0xB9, 0x00 },	/* 0xB9 */
+		{ 0xC2, 0xBA, 0x00 },	/* 0xBA */
+		{ 0xC2, 0xBB, 0x00 },	/* 0xBB */
+		{ 0xC2, 0xBC, 0x00 },	/* 0xBC */
+		{ 0xC2, 0xBD, 0x00 },	/* 0xBD */
+		{ 0xC2, 0xBE, 0x00 },	/* 0xBE */
+		{ 0xC2, 0xBF, 0x00 },	/* 0xBF */
+		{ 0xC3, 0x80, 0x00 },	/* 0xC0 */
+		{ 0xC3, 0x81, 0x00 },	/* 0xC1 */
+		{ 0xC3, 0x82, 0x00 },	/* 0xC2 */
+		{ 0xC3, 0x83, 0x00 },	/* 0xC3 */
+		{ 0xC3, 0x84, 0x00 },	/* 0xC4 */
+		{ 0xC3, 0x85, 0x00 },	/* 0xC5 */
+		{ 0xC3, 0x86, 0x00 },	/* 0xC6 */
+		{ 0xC3, 0x87, 0x00 },	/* 0xC7 */
+		{ 0xC3, 0x88, 0x00 },	/* 0xC8 */
+		{ 0xC3, 0x89, 0x00 },	/* 0xC9 */
+		{ 0xC3, 0x8A, 0x00 },	/* 0xCA */
+		{ 0xC3, 0x8B, 0x00 },	/* 0xCB */
+		{ 0xC3, 0x8C, 0x00 },	/* 0xCC */
+		{ 0xC3, 0x8D, 0x00 },	/* 0xCD */
+		{ 0xC3, 0x8E, 0x00 },	/* 0xCE */
+		{ 0xC3, 0x8F, 0x00 },	/* 0xCF */
+		{ 0xC4, 0x9E, 0x00 },	/* 0xD0 */
+		{ 0xC3, 0x91, 0x00 },	/* 0xD1 */
+		{ 0xC3, 0x92, 0x00 },	/* 0xD2 */
+		{ 0xC3, 0x93, 0x00 },	/* 0xD3 */
+		{ 0xC3, 0x94, 0x00 },	/* 0xD4 */
+		{ 0xC3, 0x95, 0x00 },	/* 0xD5 */
+		{ 0xC3, 0x96, 0x00 },	/* 0xD6 */
+		{ 0xC3, 0x97, 0x00 },	/* 0xD7 */
+		{ 0xC3, 0x98, 0x00 },	/* 0xD8 */
+		{ 0xC3, 0x99, 0x00 },	/* 0xD9 */
+		{ 0xC3, 0x9A, 0x00 },	/* 0xDA */
+		{ 0xC3, 0x9B, 0x00 },	/* 0xDB */
+		{ 0xC3, 0x9C, 0x00 },	/* 0xDC */
+		{ 0xC4, 0xB0, 0x00 },	/* 0xDD */
+		{ 0xC5, 0x9E, 0x00 },	/* 0xDE */
+		{ 0xC3, 0x9F, 0x00 },	/* 0xDF */
+		{ 0xC3, 0xA0, 0x00 },	/* 0xE0 */
+		{ 0xC3, 0xA1, 0x00 },	/* 0xE1 */
+		{ 0xC3, 0xA2, 0x00 },	/* 0xE2 */
+		{ 0xC3, 0xA3, 0x00 },	/* 0xE3 */
+		{ 0xC3, 0xA4, 0x00 },	/* 0xE4 */
+		{ 0xC3, 0xA5, 0x00 },	/* 0xE5 */
+		{ 0xC3, 0xA6, 0x00 },	/* 0xE6 */
+		{ 0xC3, 0xA7, 0x00 },	/* 0xE7 */
+		{ 0xC3, 0xA8, 0x00 },	/* 0xE8 */
+		{ 0xC3, 0xA9, 0x00 },	/* 0xE9 */
+		{ 0xC3, 0xAA, 0x00 },	/* 0xEA */
+		{ 0xC3, 0xAB, 0x00 },	/* 0xEB */
+		{ 0xC3, 0xAC, 0x00 },	/* 0xEC */
+		{ 0xC3, 0xAD, 0x00 },	/* 0xED */
+		{ 0xC3, 0xAE, 0x00 },	/* 0xEE */
+		{ 0xC3, 0xAF, 0x00 },	/* 0xEF */
+		{ 0xC4, 0x9F, 0x00 },	/* 0xF0 */
+		{ 0xC3, 0xB1, 0x00 },	/* 0xF1 */
+		{ 0xC3, 0xB2, 0x00 },	/* 0xF2 */
+		{ 0xC3, 0xB3, 0x00 },	/* 0xF3 */
+		{ 0xC3, 0xB4, 0x00 },	/* 0xF4 */
+		{ 0xC3, 0xB5, 0x00 },	/* 0xF5 */
+		{ 0xC3, 0xB6, 0x00 },	/* 0xF6 */
+		{ 0xC3, 0xB7, 0x00 },	/* 0xF7 */
+		{ 0xC3, 0xB8, 0x00 },	/* 0xF8 */
+		{ 0xC3, 0xB9, 0x00 },	/* 0xF9 */
+		{ 0xC3, 0xBA, 0x00 },	/* 0xFA */
+		{ 0xC3, 0xBB, 0x00 },	/* 0xFB */
+		{ 0xC3, 0xBC, 0x00 },	/* 0xFC */
+		{ 0xC4, 0xB1, 0x00 },	/* 0xFD */
+		{ 0xC5, 0x9F, 0x00 },	/* 0xFE */
+		{ 0xC3, 0xBF, 0x00 },	/* 0xFF */
+	},
+	{	/* ISO 8859-10 -> UTF-8 */
+		{ 0xC2, 0x80, 0x00 },	/* 0x80 */
+		{ 0xC2, 0x81, 0x00 },	/* 0x81 */
+		{ 0xC2, 0x82, 0x00 },	/* 0x82 */
+		{ 0xC2, 0x83, 0x00 },	/* 0x83 */
+		{ 0xC2, 0x84, 0x00 },	/* 0x84 */
+		{ 0xC2, 0x85, 0x00 },	/* 0x85 */
+		{ 0xC2, 0x86, 0x00 },	/* 0x86 */
+		{ 0xC2, 0x87, 0x00 },	/* 0x87 */
+		{ 0xC2, 0x88, 0x00 },	/* 0x88 */
+		{ 0xC2, 0x89, 0x00 },	/* 0x89 */
+		{ 0xC2, 0x8A, 0x00 },	/* 0x8A */
+		{ 0xC2, 0x8B, 0x00 },	/* 0x8B */
+		{ 0xC2, 0x8C, 0x00 },	/* 0x8C */
+		{ 0xC2, 0x8D, 0x00 },	/* 0x8D */
+		{ 0xC2, 0x8E, 0x00 },	/* 0x8E */
+		{ 0xC2, 0x8F, 0x00 },	/* 0x8F */
+		{ 0xC2, 0x90, 0x00 },	/* 0x90 */
+		{ 0xC2, 0x91, 0x00 },	/* 0x91 */
+		{ 0xC2, 0x92, 0x00 },	/* 0x92 */
+		{ 0xC2, 0x93, 0x00 },	/* 0x93 */
+		{ 0xC2, 0x94, 0x00 },	/* 0x94 */
+		{ 0xC2, 0x95, 0x00 },	/* 0x95 */
+		{ 0xC2, 0x96, 0x00 },	/* 0x96 */
+		{ 0xC2, 0x97, 0x00 },	/* 0x97 */
+		{ 0xC2, 0x98, 0x00 },	/* 0x98 */
+		{ 0xC2, 0x99, 0x00 },	/* 0x99 */
+		{ 0xC2, 0x9A, 0x00 },	/* 0x9A */
+		{ 0xC2, 0x9B, 0x00 },	/* 0x9B */
+		{ 0xC2, 0x9C, 0x00 },	/* 0x9C */
+		{ 0xC2, 0x9D, 0x00 },	/* 0x9D */
+		{ 0xC2, 0x9E, 0x00 },	/* 0x9E */
+		{ 0xC2, 0x9F, 0x00 },	/* 0x9F */
+		{ 0xC2, 0xA0, 0x00 },	/* 0xA0 */
+		{ 0xC4, 0x84, 0x00 },	/* 0xA1 */
+		{ 0xC4, 0x92, 0x00 },	/* 0xA2 */
+		{ 0xC4, 0xA2, 0x00 },	/* 0xA3 */
+		{ 0xC4, 0xAA, 0x00 },	/* 0xA4 */
+		{ 0xC4, 0xA8, 0x00 },	/* 0xA5 */
+		{ 0xC4, 0xB6, 0x00 },	/* 0xA6 */
+		{ 0xC2, 0xA7, 0x00 },	/* 0xA7 */
+		{ 0xC4, 0xBB, 0x00 },	/* 0xA8 */
+		{ 0xC4, 0x90, 0x00 },	/* 0xA9 */
+		{ 0xC5, 0xA0, 0x00 },	/* 0xAA */
+		{ 0xC5, 0xA6, 0x00 },	/* 0xAB */
+		{ 0xC5, 0xBD, 0x00 },	/* 0xAC */
+		{ 0xC2, 0xAD, 0x00 },	/* 0xAD */
+		{ 0xC5, 0xAA, 0x00 },	/* 0xAE */
+		{ 0xC5, 0x8A, 0x00 },	/* 0xAF */
+		{ 0xC2, 0xB0, 0x00 },	/* 0xB0 */
+		{ 0xC4, 0x85, 0x00 },	/* 0xB1 */
+		{ 0xC4, 0x93, 0x00 },	/* 0xB2 */
+		{ 0xC4, 0xA3, 0x00 },	/* 0xB3 */
+		{ 0xC4, 0xAB, 0x00 },	/* 0xB4 */
+		{ 0xC4, 0xA9, 0x00 },	/* 0xB5 */
+		{ 0xC4, 0xB7, 0x00 },	/* 0xB6 */
+		{ 0xC2, 0xB7, 0x00 },	/* 0xB7 */
+		{ 0xC4, 0xBC, 0x00 },	/* 0xB8 */
+		{ 0xC4, 0x91, 0x00 },	/* 0xB9 */
+		{ 0xC5, 0xA1, 0x00 },	/* 0xBA */
+		{ 0xC5, 0xA7, 0x00 },	/* 0xBB */
+		{ 0xC5, 0xBE, 0x00 },	/* 0xBC */
+		{ 0xE2, 0x88, 0x92 },	/* 0xBD */
+		{ 0xC5, 0xAB, 0x00 },	/* 0xBE */
+		{ 0xC5, 0x8B, 0x00 },	/* 0xBF */
+		{ 0xC4, 0x80, 0x00 },	/* 0xC0 */
+		{ 0xC3, 0x81, 0x00 },	/* 0xC1 */
+		{ 0xC3, 0x82, 0x00 },	/* 0xC2 */
+		{ 0xC3, 0x83, 0x00 },	/* 0xC3 */
+		{ 0xC3, 0x84, 0x00 },	/* 0xC4 */
+		{ 0xC3, 0x85, 0x00 },	/* 0xC5 */
+		{ 0xC3, 0x86, 0x00 },	/* 0xC6 */
+		{ 0xC4, 0xAE, 0x00 },	/* 0xC7 */
+		{ 0xC4, 0x8C, 0x00 },	/* 0xC8 */
+		{ 0xC3, 0x89, 0x00 },	/* 0xC9 */
+		{ 0xC4, 0x98, 0x00 },	/* 0xCA */
+		{ 0xC3, 0x8B, 0x00 },	/* 0xCB */
+		{ 0xC4, 0x96, 0x00 },	/* 0xCC */
+		{ 0xC3, 0x8D, 0x00 },	/* 0xCD */
+		{ 0xC3, 0x8E, 0x00 },	/* 0xCE */
+		{ 0xC3, 0x8F, 0x00 },	/* 0xCF */
+		{ 0xC3, 0x90, 0x00 },	/* 0xD0 */
+		{ 0xC5, 0x85, 0x00 },	/* 0xD1 */
+		{ 0xC5, 0x8C, 0x00 },	/* 0xD2 */
+		{ 0xC3, 0x93, 0x00 },	/* 0xD3 */
+		{ 0xC3, 0x94, 0x00 },	/* 0xD4 */
+		{ 0xC3, 0x95, 0x00 },	/* 0xD5 */
+		{ 0xC3, 0x96, 0x00 },	/* 0xD6 */
+		{ 0xC5, 0xA8, 0x00 },	/* 0xD7 */
+		{ 0xC3, 0x98, 0x00 },	/* 0xD8 */
+		{ 0xC5, 0xB2, 0x00 },	/* 0xD9 */
+		{ 0xC3, 0x9A, 0x00 },	/* 0xDA */
+		{ 0xC3, 0x9B, 0x00 },	/* 0xDB */
+		{ 0xC3, 0x9C, 0x00 },	/* 0xDC */
+		{ 0xC3, 0x9D, 0x00 },	/* 0xDD */
+		{ 0xC3, 0x9E, 0x00 },	/* 0xDE */
+		{ 0xC3, 0x9F, 0x00 },	/* 0xDF */
+		{ 0xC4, 0x81, 0x00 },	/* 0xE0 */
+		{ 0xC3, 0xA1, 0x00 },	/* 0xE1 */
+		{ 0xC3, 0xA2, 0x00 },	/* 0xE2 */
+		{ 0xC3, 0xA3, 0x00 },	/* 0xE3 */
+		{ 0xC3, 0xA4, 0x00 },	/* 0xE4 */
+		{ 0xC3, 0xA5, 0x00 },	/* 0xE5 */
+		{ 0xC3, 0xA6, 0x00 },	/* 0xE6 */
+		{ 0xC4, 0xAF, 0x00 },	/* 0xE7 */
+		{ 0xC4, 0x8D, 0x00 },	/* 0xE8 */
+		{ 0xC3, 0xA9, 0x00 },	/* 0xE9 */
+		{ 0xC4, 0x99, 0x00 },	/* 0xEA */
+		{ 0xC3, 0xAB, 0x00 },	/* 0xEB */
+		{ 0xC4, 0x97, 0x00 },	/* 0xEC */
+		{ 0xC3, 0xAD, 0x00 },	/* 0xED */
+		{ 0xC3, 0xAE, 0x00 },	/* 0xEE */
+		{ 0xC3, 0xAF, 0x00 },	/* 0xEF */
+		{ 0xC3, 0xB0, 0x00 },	/* 0xF0 */
+		{ 0xC5, 0x86, 0x00 },	/* 0xF1 */
+		{ 0xC5, 0x8D, 0x00 },	/* 0xF2 */
+		{ 0xC3, 0xB3, 0x00 },	/* 0xF3 */
+		{ 0xC3, 0xB4, 0x00 },	/* 0xF4 */
+		{ 0xC3, 0xB5, 0x00 },	/* 0xF5 */
+		{ 0xC3, 0xB6, 0x00 },	/* 0xF6 */
+		{ 0xC5, 0xA9, 0x00 },	/* 0xF7 */
+		{ 0xC3, 0xB8, 0x00 },	/* 0xF8 */
+		{ 0xC5, 0xB3, 0x00 },	/* 0xF9 */
+		{ 0xC3, 0xBA, 0x00 },	/* 0xFA */
+		{ 0xC3, 0xBB, 0x00 },	/* 0xFB */
+		{ 0xC3, 0xBC, 0x00 },	/* 0xFC */
+		{ 0xC3, 0xBD, 0x00 },	/* 0xFD */
+		{ 0xC3, 0xBE, 0x00 },	/* 0xFE */
+		{ 0xC4, 0xB8, 0x00 },	/* 0xFF */
+	},
+	{	/* ISO 8859-11 -> UTF-8 */
+		{ 0xC2, 0x80, 0x00 },	/* 0x80 */
+		{ 0xC2, 0x81, 0x00 },	/* 0x81 */
+		{ 0xC2, 0x82, 0x00 },	/* 0x82 */
+		{ 0xC2, 0x83, 0x00 },	/* 0x83 */
+		{ 0xC2, 0x84, 0x00 },	/* 0x84 */
+		{ 0xC2, 0x85, 0x00 },	/* 0x85 */
+		{ 0xC2, 0x86, 0x00 },	/* 0x86 */
+		{ 0xC2, 0x87, 0x00 },	/* 0x87 */
+		{ 0xC2, 0x88, 0x00 },	/* 0x88 */
+		{ 0xC2, 0x89, 0x00 },	/* 0x89 */
+		{ 0xC2, 0x8A, 0x00 },	/* 0x8A */
+		{ 0xC2, 0x8B, 0x00 },	/* 0x8B */
+		{ 0xC2, 0x8C, 0x00 },	/* 0x8C */
+		{ 0xC2, 0x8D, 0x00 },	/* 0x8D */
+		{ 0xC2, 0x8E, 0x00 },	/* 0x8E */
+		{ 0xC2, 0x8F, 0x00 },	/* 0x8F */
+		{ 0xC2, 0x90, 0x00 },	/* 0x90 */
+		{ 0xC2, 0x91, 0x00 },	/* 0x91 */
+		{ 0xC2, 0x92, 0x00 },	/* 0x92 */
+		{ 0xC2, 0x93, 0x00 },	/* 0x93 */
+		{ 0xC2, 0x94, 0x00 },	/* 0x94 */
+		{ 0xC2, 0x95, 0x00 },	/* 0x95 */
+		{ 0xC2, 0x96, 0x00 },	/* 0x96 */
+		{ 0xC2, 0x97, 0x00 },	/* 0x97 */
+		{ 0xC2, 0x98, 0x00 },	/* 0x98 */
+		{ 0xC2, 0x99, 0x00 },	/* 0x99 */
+		{ 0xC2, 0x9A, 0x00 },	/* 0x9A */
+		{ 0xC2, 0x9B, 0x00 },	/* 0x9B */
+		{ 0xC2, 0x9C, 0x00 },	/* 0x9C */
+		{ 0xC2, 0x9D, 0x00 },	/* 0x9D */
+		{ 0xC2, 0x9E, 0x00 },	/* 0x9E */
+		{ 0xC2, 0x9F, 0x00 },	/* 0x9F */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xA0 (illegal character) */
+		{ 0xE0, 0xB8, 0x81 },	/* 0xA1 */
+		{ 0xE0, 0xB8, 0x82 },	/* 0xA2 */
+		{ 0xE0, 0xB8, 0x83 },	/* 0xA3 */
+		{ 0xE0, 0xB8, 0x84 },	/* 0xA4 */
+		{ 0xE0, 0xB8, 0x85 },	/* 0xA5 */
+		{ 0xE0, 0xB8, 0x86 },	/* 0xA6 */
+		{ 0xE0, 0xB8, 0x87 },	/* 0xA7 */
+		{ 0xE0, 0xB8, 0x88 },	/* 0xA8 */
+		{ 0xE0, 0xB8, 0x89 },	/* 0xA9 */
+		{ 0xE0, 0xB8, 0x8A },	/* 0xAA */
+		{ 0xE0, 0xB8, 0x8B },	/* 0xAB */
+		{ 0xE0, 0xB8, 0x8C },	/* 0xAC */
+		{ 0xE0, 0xB8, 0x8D },	/* 0xAD */
+		{ 0xE0, 0xB8, 0x8E },	/* 0xAE */
+		{ 0xE0, 0xB8, 0x8F },	/* 0xAF */
+		{ 0xE0, 0xB8, 0x90 },	/* 0xB0 */
+		{ 0xE0, 0xB8, 0x91 },	/* 0xB1 */
+		{ 0xE0, 0xB8, 0x92 },	/* 0xB2 */
+		{ 0xE0, 0xB8, 0x93 },	/* 0xB3 */
+		{ 0xE0, 0xB8, 0x94 },	/* 0xB4 */
+		{ 0xE0, 0xB8, 0x95 },	/* 0xB5 */
+		{ 0xE0, 0xB8, 0x96 },	/* 0xB6 */
+		{ 0xE0, 0xB8, 0x97 },	/* 0xB7 */
+		{ 0xE0, 0xB8, 0x98 },	/* 0xB8 */
+		{ 0xE0, 0xB8, 0x99 },	/* 0xB9 */
+		{ 0xE0, 0xB8, 0x9A },	/* 0xBA */
+		{ 0xE0, 0xB8, 0x9B },	/* 0xBB */
+		{ 0xE0, 0xB8, 0x9C },	/* 0xBC */
+		{ 0xE0, 0xB8, 0x9D },	/* 0xBD */
+		{ 0xE0, 0xB8, 0x9E },	/* 0xBE */
+		{ 0xE0, 0xB8, 0x9F },	/* 0xBF */
+		{ 0xE0, 0xB8, 0xA0 },	/* 0xC0 */
+		{ 0xE0, 0xB8, 0xA1 },	/* 0xC1 */
+		{ 0xE0, 0xB8, 0xA2 },	/* 0xC2 */
+		{ 0xE0, 0xB8, 0xA3 },	/* 0xC3 */
+		{ 0xE0, 0xB8, 0xA4 },	/* 0xC4 */
+		{ 0xE0, 0xB8, 0xA5 },	/* 0xC5 */
+		{ 0xE0, 0xB8, 0xA6 },	/* 0xC6 */
+		{ 0xE0, 0xB8, 0xA7 },	/* 0xC7 */
+		{ 0xE0, 0xB8, 0xA8 },	/* 0xC8 */
+		{ 0xE0, 0xB8, 0xA9 },	/* 0xC9 */
+		{ 0xE0, 0xB8, 0xAA },	/* 0xCA */
+		{ 0xE0, 0xB8, 0xAB },	/* 0xCB */
+		{ 0xE0, 0xB8, 0xAC },	/* 0xCC */
+		{ 0xE0, 0xB8, 0xAD },	/* 0xCD */
+		{ 0xE0, 0xB8, 0xAE },	/* 0xCE */
+		{ 0xE0, 0xB8, 0xAF },	/* 0xCF */
+		{ 0xE0, 0xB8, 0xB0 },	/* 0xD0 */
+		{ 0xE0, 0xB8, 0xB1 },	/* 0xD1 */
+		{ 0xE0, 0xB8, 0xB2 },	/* 0xD2 */
+		{ 0xE0, 0xB8, 0xB3 },	/* 0xD3 */
+		{ 0xE0, 0xB8, 0xB4 },	/* 0xD4 */
+		{ 0xE0, 0xB8, 0xB5 },	/* 0xD5 */
+		{ 0xE0, 0xB8, 0xB6 },	/* 0xD6 */
+		{ 0xE0, 0xB8, 0xB7 },	/* 0xD7 */
+		{ 0xE0, 0xB8, 0xB8 },	/* 0xD8 */
+		{ 0xE0, 0xB8, 0xB9 },	/* 0xD9 */
+		{ 0xE0, 0xB8, 0xBA },	/* 0xDA */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xDB (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xDC (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xDD (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xDE (illegal character) */
+		{ 0xE0, 0xB8, 0xBF },	/* 0xDF */
+		{ 0xE0, 0xB9, 0x80 },	/* 0xE0 */
+		{ 0xE0, 0xB9, 0x81 },	/* 0xE1 */
+		{ 0xE0, 0xB9, 0x82 },	/* 0xE2 */
+		{ 0xE0, 0xB9, 0x83 },	/* 0xE3 */
+		{ 0xE0, 0xB9, 0x84 },	/* 0xE4 */
+		{ 0xE0, 0xB9, 0x85 },	/* 0xE5 */
+		{ 0xE0, 0xB9, 0x86 },	/* 0xE6 */
+		{ 0xE0, 0xB9, 0x87 },	/* 0xE7 */
+		{ 0xE0, 0xB9, 0x88 },	/* 0xE8 */
+		{ 0xE0, 0xB9, 0x89 },	/* 0xE9 */
+		{ 0xE0, 0xB9, 0x8A },	/* 0xEA */
+		{ 0xE0, 0xB9, 0x8B },	/* 0xEB */
+		{ 0xE0, 0xB9, 0x8C },	/* 0xEC */
+		{ 0xE0, 0xB9, 0x8D },	/* 0xED */
+		{ 0xE0, 0xB9, 0x8E },	/* 0xEE */
+		{ 0xE0, 0xB9, 0x8F },	/* 0xEF */
+		{ 0xE0, 0xB9, 0x90 },	/* 0xF0 */
+		{ 0xE0, 0xB9, 0x91 },	/* 0xF1 */
+		{ 0xE0, 0xB9, 0x92 },	/* 0xF2 */
+		{ 0xE0, 0xB9, 0x93 },	/* 0xF3 */
+		{ 0xE0, 0xB9, 0x94 },	/* 0xF4 */
+		{ 0xE0, 0xB9, 0x95 },	/* 0xF5 */
+		{ 0xE0, 0xB9, 0x96 },	/* 0xF6 */
+		{ 0xE0, 0xB9, 0x97 },	/* 0xF7 */
+		{ 0xE0, 0xB9, 0x98 },	/* 0xF8 */
+		{ 0xE0, 0xB9, 0x99 },	/* 0xF9 */
+		{ 0xE0, 0xB9, 0x9A },	/* 0xFA */
+		{ 0xE0, 0xB9, 0x9B },	/* 0xFB */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xFC (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xFD (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xFE (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0xFF (illegal character) */
+	},
+	{	/* ISO 8859-13 -> UTF-8 */
+		{ 0xC2, 0x80, 0x00 },	/* 0x80 */
+		{ 0xC2, 0x81, 0x00 },	/* 0x81 */
+		{ 0xC2, 0x82, 0x00 },	/* 0x82 */
+		{ 0xC2, 0x83, 0x00 },	/* 0x83 */
+		{ 0xC2, 0x84, 0x00 },	/* 0x84 */
+		{ 0xC2, 0x85, 0x00 },	/* 0x85 */
+		{ 0xC2, 0x86, 0x00 },	/* 0x86 */
+		{ 0xC2, 0x87, 0x00 },	/* 0x87 */
+		{ 0xC2, 0x88, 0x00 },	/* 0x88 */
+		{ 0xC2, 0x89, 0x00 },	/* 0x89 */
+		{ 0xC2, 0x8A, 0x00 },	/* 0x8A */
+		{ 0xC2, 0x8B, 0x00 },	/* 0x8B */
+		{ 0xC2, 0x8C, 0x00 },	/* 0x8C */
+		{ 0xC2, 0x8D, 0x00 },	/* 0x8D */
+		{ 0xC2, 0x8E, 0x00 },	/* 0x8E */
+		{ 0xC2, 0x8F, 0x00 },	/* 0x8F */
+		{ 0xC2, 0x90, 0x00 },	/* 0x90 */
+		{ 0xC2, 0x91, 0x00 },	/* 0x91 */
+		{ 0xC2, 0x92, 0x00 },	/* 0x92 */
+		{ 0xC2, 0x93, 0x00 },	/* 0x93 */
+		{ 0xC2, 0x94, 0x00 },	/* 0x94 */
+		{ 0xC2, 0x95, 0x00 },	/* 0x95 */
+		{ 0xC2, 0x96, 0x00 },	/* 0x96 */
+		{ 0xC2, 0x97, 0x00 },	/* 0x97 */
+		{ 0xC2, 0x98, 0x00 },	/* 0x98 */
+		{ 0xC2, 0x99, 0x00 },	/* 0x99 */
+		{ 0xC2, 0x9A, 0x00 },	/* 0x9A */
+		{ 0xC2, 0x9B, 0x00 },	/* 0x9B */
+		{ 0xC2, 0x9C, 0x00 },	/* 0x9C */
+		{ 0xC2, 0x9D, 0x00 },	/* 0x9D */
+		{ 0xC2, 0x9E, 0x00 },	/* 0x9E */
+		{ 0xC2, 0x9F, 0x00 },	/* 0x9F */
+		{ 0xC2, 0xA0, 0x00 },	/* 0xA0 */
+		{ 0xE2, 0x80, 0x9D },	/* 0xA1 */
+		{ 0xC2, 0xA2, 0x00 },	/* 0xA2 */
+		{ 0xC2, 0xA3, 0x00 },	/* 0xA3 */
+		{ 0xC2, 0xA4, 0x00 },	/* 0xA4 */
+		{ 0xE2, 0x80, 0x9E },	/* 0xA5 */
+		{ 0xC2, 0xA6, 0x00 },	/* 0xA6 */
+		{ 0xC2, 0xA7, 0x00 },	/* 0xA7 */
+		{ 0xC3, 0x98, 0x00 },	/* 0xA8 */
+		{ 0xC2, 0xA9, 0x00 },	/* 0xA9 */
+		{ 0xC5, 0x96, 0x00 },	/* 0xAA */
+		{ 0xC2, 0xAB, 0x00 },	/* 0xAB */
+		{ 0xC2, 0xAC, 0x00 },	/* 0xAC */
+		{ 0xC2, 0xAD, 0x00 },	/* 0xAD */
+		{ 0xC2, 0xAE, 0x00 },	/* 0xAE */
+		{ 0xC3, 0x86, 0x00 },	/* 0xAF */
+		{ 0xC2, 0xB0, 0x00 },	/* 0xB0 */
+		{ 0xC2, 0xB1, 0x00 },	/* 0xB1 */
+		{ 0xC2, 0xB2, 0x00 },	/* 0xB2 */
+		{ 0xC2, 0xB3, 0x00 },	/* 0xB3 */
+		{ 0xE2, 0x80, 0x9C },	/* 0xB4 */
+		{ 0xC2, 0xB5, 0x00 },	/* 0xB5 */
+		{ 0xC2, 0xB6, 0x00 },	/* 0xB6 */
+		{ 0xC2, 0xB7, 0x00 },	/* 0xB7 */
+		{ 0xC3, 0xB8, 0x00 },	/* 0xB8 */
+		{ 0xC2, 0xB9, 0x00 },	/* 0xB9 */
+		{ 0xC5, 0x97, 0x00 },	/* 0xBA */
+		{ 0xC2, 0xBB, 0x00 },	/* 0xBB */
+		{ 0xC2, 0xBC, 0x00 },	/* 0xBC */
+		{ 0xC2, 0xBD, 0x00 },	/* 0xBD */
+		{ 0xC2, 0xBE, 0x00 },	/* 0xBE */
+		{ 0xC3, 0xA6, 0x00 },	/* 0xBF */
+		{ 0xC4, 0x84, 0x00 },	/* 0xC0 */
+		{ 0xC4, 0xAE, 0x00 },	/* 0xC1 */
+		{ 0xC4, 0x80, 0x00 },	/* 0xC2 */
+		{ 0xC4, 0x86, 0x00 },	/* 0xC3 */
+		{ 0xC3, 0x84, 0x00 },	/* 0xC4 */
+		{ 0xC3, 0x85, 0x00 },	/* 0xC5 */
+		{ 0xC4, 0x98, 0x00 },	/* 0xC6 */
+		{ 0xC4, 0x92, 0x00 },	/* 0xC7 */
+		{ 0xC4, 0x8C, 0x00 },	/* 0xC8 */
+		{ 0xC3, 0x89, 0x00 },	/* 0xC9 */
+		{ 0xC5, 0xB9, 0x00 },	/* 0xCA */
+		{ 0xC4, 0x96, 0x00 },	/* 0xCB */
+		{ 0xC4, 0xA2, 0x00 },	/* 0xCC */
+		{ 0xC4, 0xB6, 0x00 },	/* 0xCD */
+		{ 0xC4, 0xAA, 0x00 },	/* 0xCE */
+		{ 0xC4, 0xBB, 0x00 },	/* 0xCF */
+		{ 0xC5, 0xA0, 0x00 },	/* 0xD0 */
+		{ 0xC5, 0x83, 0x00 },	/* 0xD1 */
+		{ 0xC5, 0x85, 0x00 },	/* 0xD2 */
+		{ 0xC3, 0x93, 0x00 },	/* 0xD3 */
+		{ 0xC5, 0x8C, 0x00 },	/* 0xD4 */
+		{ 0xC3, 0x95, 0x00 },	/* 0xD5 */
+		{ 0xC3, 0x96, 0x00 },	/* 0xD6 */
+		{ 0xC3, 0x97, 0x00 },	/* 0xD7 */
+		{ 0xC5, 0xB2, 0x00 },	/* 0xD8 */
+		{ 0xC5, 0x81, 0x00 },	/* 0xD9 */
+		{ 0xC5, 0x9A, 0x00 },	/* 0xDA */
+		{ 0xC5, 0xAA, 0x00 },	/* 0xDB */
+		{ 0xC3, 0x9C, 0x00 },	/* 0xDC */
+		{ 0xC5, 0xBB, 0x00 },	/* 0xDD */
+		{ 0xC5, 0xBD, 0x00 },	/* 0xDE */
+		{ 0xC3, 0x9F, 0x00 },	/* 0xDF */
+		{ 0xC4, 0x85, 0x00 },	/* 0xE0 */
+		{ 0xC4, 0xAF, 0x00 },	/* 0xE1 */
+		{ 0xC4, 0x81, 0x00 },	/* 0xE2 */
+		{ 0xC4, 0x87, 0x00 },	/* 0xE3 */
+		{ 0xC3, 0xA4, 0x00 },	/* 0xE4 */
+		{ 0xC3, 0xA5, 0x00 },	/* 0xE5 */
+		{ 0xC4, 0x99, 0x00 },	/* 0xE6 */
+		{ 0xC4, 0x93, 0x00 },	/* 0xE7 */
+		{ 0xC4, 0x8D, 0x00 },	/* 0xE8 */
+		{ 0xC3, 0xA9, 0x00 },	/* 0xE9 */
+		{ 0xC5, 0xBA, 0x00 },	/* 0xEA */
+		{ 0xC4, 0x97, 0x00 },	/* 0xEB */
+		{ 0xC4, 0xA3, 0x00 },	/* 0xEC */
+		{ 0xC4, 0xB7, 0x00 },	/* 0xED */
+		{ 0xC4, 0xAB, 0x00 },	/* 0xEE */
+		{ 0xC4, 0xBC, 0x00 },	/* 0xEF */
+		{ 0xC5, 0xA1, 0x00 },	/* 0xF0 */
+		{ 0xC5, 0x84, 0x00 },	/* 0xF1 */
+		{ 0xC5, 0x86, 0x00 },	/* 0xF2 */
+		{ 0xC3, 0xB3, 0x00 },	/* 0xF3 */
+		{ 0xC5, 0x8D, 0x00 },	/* 0xF4 */
+		{ 0xC3, 0xB5, 0x00 },	/* 0xF5 */
+		{ 0xC3, 0xB6, 0x00 },	/* 0xF6 */
+		{ 0xC3, 0xB7, 0x00 },	/* 0xF7 */
+		{ 0xC5, 0xB3, 0x00 },	/* 0xF8 */
+		{ 0xC5, 0x82, 0x00 },	/* 0xF9 */
+		{ 0xC5, 0x9B, 0x00 },	/* 0xFA */
+		{ 0xC5, 0xAB, 0x00 },	/* 0xFB */
+		{ 0xC3, 0xBC, 0x00 },	/* 0xFC */
+		{ 0xC5, 0xBC, 0x00 },	/* 0xFD */
+		{ 0xC5, 0xBE, 0x00 },	/* 0xFE */
+		{ 0xE2, 0x80, 0x99 },	/* 0xFF */
+	},
+	{	/* KOI8-R -> UTF-8 */
+		{ 0xE2, 0x94, 0x80 },	/* 0x80 */
+		{ 0xE2, 0x94, 0x82 },	/* 0x81 */
+		{ 0xE2, 0x94, 0x8C },	/* 0x82 */
+		{ 0xE2, 0x94, 0x90 },	/* 0x83 */
+		{ 0xE2, 0x94, 0x94 },	/* 0x84 */
+		{ 0xE2, 0x94, 0x98 },	/* 0x85 */
+		{ 0xE2, 0x94, 0x9C },	/* 0x86 */
+		{ 0xE2, 0x94, 0xA4 },	/* 0x87 */
+		{ 0xE2, 0x94, 0xAC },	/* 0x88 */
+		{ 0xE2, 0x94, 0xB4 },	/* 0x89 */
+		{ 0xE2, 0x94, 0xBC },	/* 0x8A */
+		{ 0xE2, 0x96, 0x80 },	/* 0x8B */
+		{ 0xE2, 0x96, 0x84 },	/* 0x8C */
+		{ 0xE2, 0x96, 0x88 },	/* 0x8D */
+		{ 0xE2, 0x96, 0x8C },	/* 0x8E */
+		{ 0xE2, 0x96, 0x90 },	/* 0x8F */
+		{ 0xE2, 0x96, 0x91 },	/* 0x90 */
+		{ 0xE2, 0x96, 0x92 },	/* 0x91 */
+		{ 0xE2, 0x96, 0x93 },	/* 0x92 */
+		{ 0xE2, 0x8C, 0xA0 },	/* 0x93 */
+		{ 0xE2, 0x96, 0xA0 },	/* 0x94 */
+		{ 0xE2, 0x88, 0x99 },	/* 0x95 */
+		{ 0xE2, 0x88, 0x9A },	/* 0x96 */
+		{ 0xE2, 0x89, 0x88 },	/* 0x97 */
+		{ 0xE2, 0x89, 0xA4 },	/* 0x98 */
+		{ 0xE2, 0x89, 0xA5 },	/* 0x99 */
+		{ 0xC2, 0xA0, 0x00 },	/* 0x9A */
+		{ 0xE2, 0x8C, 0xA1 },	/* 0x9B */
+		{ 0xC2, 0xB0, 0x00 },	/* 0x9C */
+		{ 0xC2, 0xB2, 0x00 },	/* 0x9D */
+		{ 0xC2, 0xB7, 0x00 },	/* 0x9E */
+		{ 0xC3, 0xB7, 0x00 },	/* 0x9F */
+		{ 0xE2, 0x95, 0x90 },	/* 0xA0 */
+		{ 0xE2, 0x95, 0x91 },	/* 0xA1 */
+		{ 0xE2, 0x95, 0x92 },	/* 0xA2 */
+		{ 0xD1, 0x91, 0x00 },	/* 0xA3 */
+		{ 0xE2, 0x95, 0x93 },	/* 0xA4 */
+		{ 0xE2, 0x95, 0x94 },	/* 0xA5 */
+		{ 0xE2, 0x95, 0x95 },	/* 0xA6 */
+		{ 0xE2, 0x95, 0x96 },	/* 0xA7 */
+		{ 0xE2, 0x95, 0x97 },	/* 0xA8 */
+		{ 0xE2, 0x95, 0x98 },	/* 0xA9 */
+		{ 0xE2, 0x95, 0x99 },	/* 0xAA */
+		{ 0xE2, 0x95, 0x9A },	/* 0xAB */
+		{ 0xE2, 0x95, 0x9B },	/* 0xAC */
+		{ 0xE2, 0x95, 0x9C },	/* 0xAD */
+		{ 0xE2, 0x95, 0x9D },	/* 0xAE */
+		{ 0xE2, 0x95, 0x9E },	/* 0xAF */
+		{ 0xE2, 0x95, 0x9F },	/* 0xB0 */
+		{ 0xE2, 0x95, 0xA0 },	/* 0xB1 */
+		{ 0xE2, 0x95, 0xA1 },	/* 0xB2 */
+		{ 0xD0, 0x81, 0x00 },	/* 0xB3 */
+		{ 0xE2, 0x95, 0xA2 },	/* 0xB4 */
+		{ 0xE2, 0x95, 0xA3 },	/* 0xB5 */
+		{ 0xE2, 0x95, 0xA4 },	/* 0xB6 */
+		{ 0xE2, 0x95, 0xA5 },	/* 0xB7 */
+		{ 0xE2, 0x95, 0xA6 },	/* 0xB8 */
+		{ 0xE2, 0x95, 0xA7 },	/* 0xB9 */
+		{ 0xE2, 0x95, 0xA8 },	/* 0xBA */
+		{ 0xE2, 0x95, 0xA9 },	/* 0xBB */
+		{ 0xE2, 0x95, 0xAA },	/* 0xBC */
+		{ 0xE2, 0x95, 0xAB },	/* 0xBD */
+		{ 0xE2, 0x95, 0xAC },	/* 0xBE */
+		{ 0xC2, 0xA9, 0x00 },	/* 0xBF */
+		{ 0xD1, 0x8E, 0x00 },	/* 0xC0 */
+		{ 0xD0, 0xB0, 0x00 },	/* 0xC1 */
+		{ 0xD0, 0xB1, 0x00 },	/* 0xC2 */
+		{ 0xD1, 0x86, 0x00 },	/* 0xC3 */
+		{ 0xD0, 0xB4, 0x00 },	/* 0xC4 */
+		{ 0xD0, 0xB5, 0x00 },	/* 0xC5 */
+		{ 0xD1, 0x84, 0x00 },	/* 0xC6 */
+		{ 0xD0, 0xB3, 0x00 },	/* 0xC7 */
+		{ 0xD1, 0x85, 0x00 },	/* 0xC8 */
+		{ 0xD0, 0xB8, 0x00 },	/* 0xC9 */
+		{ 0xD0, 0xB9, 0x00 },	/* 0xCA */
+		{ 0xD0, 0xBA, 0x00 },	/* 0xCB */
+		{ 0xD0, 0xBB, 0x00 },	/* 0xCC */
+		{ 0xD0, 0xBC, 0x00 },	/* 0xCD */
+		{ 0xD0, 0xBD, 0x00 },	/* 0xCE */
+		{ 0xD0, 0xBE, 0x00 },	/* 0xCF */
+		{ 0xD0, 0xBF, 0x00 },	/* 0xD0 */
+		{ 0xD1, 0x8F, 0x00 },	/* 0xD1 */
+		{ 0xD1, 0x80, 0x00 },	/* 0xD2 */
+		{ 0xD1, 0x81, 0x00 },	/* 0xD3 */
+		{ 0xD1, 0x82, 0x00 },	/* 0xD4 */
+		{ 0xD1, 0x83, 0x00 },	/* 0xD5 */
+		{ 0xD0, 0xB6, 0x00 },	/* 0xD6 */
+		{ 0xD0, 0xB2, 0x00 },	/* 0xD7 */
+		{ 0xD1, 0x8C, 0x00 },	/* 0xD8 */
+		{ 0xD1, 0x8B, 0x00 },	/* 0xD9 */
+		{ 0xD0, 0xB7, 0x00 },	/* 0xDA */
+		{ 0xD1, 0x88, 0x00 },	/* 0xDB */
+		{ 0xD1, 0x8D, 0x00 },	/* 0xDC */
+		{ 0xD1, 0x89, 0x00 },	/* 0xDD */
+		{ 0xD1, 0x87, 0x00 },	/* 0xDE */
+		{ 0xD1, 0x8A, 0x00 },	/* 0xDF */
+		{ 0xD0, 0xAE, 0x00 },	/* 0xE0 */
+		{ 0xD0, 0x90, 0x00 },	/* 0xE1 */
+		{ 0xD0, 0x91, 0x00 },	/* 0xE2 */
+		{ 0xD0, 0xA6, 0x00 },	/* 0xE3 */
+		{ 0xD0, 0x94, 0x00 },	/* 0xE4 */
+		{ 0xD0, 0x95, 0x00 },	/* 0xE5 */
+		{ 0xD0, 0xA4, 0x00 },	/* 0xE6 */
+		{ 0xD0, 0x93, 0x00 },	/* 0xE7 */
+		{ 0xD0, 0xA5, 0x00 },	/* 0xE8 */
+		{ 0xD0, 0x98, 0x00 },	/* 0xE9 */
+		{ 0xD0, 0x99, 0x00 },	/* 0xEA */
+		{ 0xD0, 0x9A, 0x00 },	/* 0xEB */
+		{ 0xD0, 0x9B, 0x00 },	/* 0xEC */
+		{ 0xD0, 0x9C, 0x00 },	/* 0xED */
+		{ 0xD0, 0x9D, 0x00 },	/* 0xEE */
+		{ 0xD0, 0x9E, 0x00 },	/* 0xEF */
+		{ 0xD0, 0x9F, 0x00 },	/* 0xF0 */
+		{ 0xD0, 0xAF, 0x00 },	/* 0xF1 */
+		{ 0xD0, 0xA0, 0x00 },	/* 0xF2 */
+		{ 0xD0, 0xA1, 0x00 },	/* 0xF3 */
+		{ 0xD0, 0xA2, 0x00 },	/* 0xF4 */
+		{ 0xD0, 0xA3, 0x00 },	/* 0xF5 */
+		{ 0xD0, 0x96, 0x00 },	/* 0xF6 */
+		{ 0xD0, 0x92, 0x00 },	/* 0xF7 */
+		{ 0xD0, 0xAC, 0x00 },	/* 0xF8 */
+		{ 0xD0, 0xAB, 0x00 },	/* 0xF9 */
+		{ 0xD0, 0x97, 0x00 },	/* 0xFA */
+		{ 0xD0, 0xA8, 0x00 },	/* 0xFB */
+		{ 0xD0, 0xAD, 0x00 },	/* 0xFC */
+		{ 0xD0, 0xA9, 0x00 },	/* 0xFD */
+		{ 0xD0, 0xA7, 0x00 },	/* 0xFE */
+		{ 0xD0, 0xAA, 0x00 },	/* 0xFF */
+	}
+};
+
+/*
+ * Mapping tables from UTF-8 to CP737, CP852, CP857, CP862, CP866, CP1250,
+ * CP1251, CP1253, CP1254, CP1255, CP1256, CP1257, ISO-8859-2, ISO-8859-3,
+ * ISO-8859-4, ISO-8859-5, ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9,
+ * ISO-8859-10, ISO-8859-11, ISO-8859-13, and KOI8-R.
+ *
+ * Each table is sorted with UTF-8 values to be used with binary search.
+ * UTF-8 character byte values are saved at uint32_t:24 contiguously as
+ * scalar values.
+ */
+static const kiconv_to_sb_tbl_comp_t to_sb_tbl[24][128] = {
+	{	/* UTF-8 -> CP737 */
+		{ 0x00C2A0, 0xFF },
+		{ 0x00C2B0, 0xF8 },
+		{ 0x00C2B1, 0xF1 },
+		{ 0x00C2B2, 0xFD },
+		{ 0x00C2B7, 0xFA },
+		{ 0x00C3B7, 0xF6 },
+		{ 0x00CE86, 0xEA },
+		{ 0x00CE88, 0xEB },
+		{ 0x00CE89, 0xEC },
+		{ 0x00CE8A, 0xED },
+		{ 0x00CE8C, 0xEE },
+		{ 0x00CE8E, 0xEF },
+		{ 0x00CE8F, 0xF0 },
+		{ 0x00CE91, 0x80 },
+		{ 0x00CE92, 0x81 },
+		{ 0x00CE93, 0x82 },
+		{ 0x00CE94, 0x83 },
+		{ 0x00CE95, 0x84 },
+		{ 0x00CE96, 0x85 },
+		{ 0x00CE97, 0x86 },
+		{ 0x00CE98, 0x87 },
+		{ 0x00CE99, 0x88 },
+		{ 0x00CE9A, 0x89 },
+		{ 0x00CE9B, 0x8A },
+		{ 0x00CE9C, 0x8B },
+		{ 0x00CE9D, 0x8C },
+		{ 0x00CE9E, 0x8D },
+		{ 0x00CE9F, 0x8E },
+		{ 0x00CEA0, 0x8F },
+		{ 0x00CEA1, 0x90 },
+		{ 0x00CEA3, 0x91 },
+		{ 0x00CEA4, 0x92 },
+		{ 0x00CEA5, 0x93 },
+		{ 0x00CEA6, 0x94 },
+		{ 0x00CEA7, 0x95 },
+		{ 0x00CEA8, 0x96 },
+		{ 0x00CEA9, 0x97 },
+		{ 0x00CEAA, 0xF4 },
+		{ 0x00CEAB, 0xF5 },
+		{ 0x00CEAC, 0xE1 },
+		{ 0x00CEAD, 0xE2 },
+		{ 0x00CEAE, 0xE3 },
+		{ 0x00CEAF, 0xE5 },
+		{ 0x00CEB1, 0x98 },
+		{ 0x00CEB2, 0x99 },
+		{ 0x00CEB3, 0x9A },
+		{ 0x00CEB4, 0x9B },
+		{ 0x00CEB5, 0x9C },
+		{ 0x00CEB6, 0x9D },
+		{ 0x00CEB7, 0x9E },
+		{ 0x00CEB8, 0x9F },
+		{ 0x00CEB9, 0xA0 },
+		{ 0x00CEBA, 0xA1 },
+		{ 0x00CEBB, 0xA2 },
+		{ 0x00CEBC, 0xA3 },
+		{ 0x00CEBD, 0xA4 },
+		{ 0x00CEBE, 0xA5 },
+		{ 0x00CEBF, 0xA6 },
+		{ 0x00CF80, 0xA7 },
+		{ 0x00CF81, 0xA8 },
+		{ 0x00CF82, 0xAA },
+		{ 0x00CF83, 0xA9 },
+		{ 0x00CF84, 0xAB },
+		{ 0x00CF85, 0xAC },
+		{ 0x00CF86, 0xAD },
+		{ 0x00CF87, 0xAE },
+		{ 0x00CF88, 0xAF },
+		{ 0x00CF89, 0xE0 },
+		{ 0x00CF8A, 0xE4 },
+		{ 0x00CF8B, 0xE8 },
+		{ 0x00CF8C, 0xE6 },
+		{ 0x00CF8D, 0xE7 },
+		{ 0x00CF8E, 0xE9 },
+		{ 0xE281BF, 0xFC },
+		{ 0xE28899, 0xF9 },
+		{ 0xE2889A, 0xFB },
+		{ 0xE28988, 0xF7 },
+		{ 0xE289A4, 0xF3 },
+		{ 0xE289A5, 0xF2 },
+		{ 0xE29480, 0xC4 },
+		{ 0xE29482, 0xB3 },
+		{ 0xE2948C, 0xDA },
+		{ 0xE29490, 0xBF },
+		{ 0xE29494, 0xC0 },
+		{ 0xE29498, 0xD9 },
+		{ 0xE2949C, 0xC3 },
+		{ 0xE294A4, 0xB4 },
+		{ 0xE294AC, 0xC2 },
+		{ 0xE294B4, 0xC1 },
+		{ 0xE294BC, 0xC5 },
+		{ 0xE29590, 0xCD },
+		{ 0xE29591, 0xBA },
+		{ 0xE29592, 0xD5 },
+		{ 0xE29593, 0xD6 },
+		{ 0xE29594, 0xC9 },
+		{ 0xE29595, 0xB8 },
+		{ 0xE29596, 0xB7 },
+		{ 0xE29597, 0xBB },
+		{ 0xE29598, 0xD4 },
+		{ 0xE29599, 0xD3 },
+		{ 0xE2959A, 0xC8 },
+		{ 0xE2959B, 0xBE },
+		{ 0xE2959C, 0xBD },
+		{ 0xE2959D, 0xBC },
+		{ 0xE2959E, 0xC6 },
+		{ 0xE2959F, 0xC7 },
+		{ 0xE295A0, 0xCC },
+		{ 0xE295A1, 0xB5 },
+		{ 0xE295A2, 0xB6 },
+		{ 0xE295A3, 0xB9 },
+		{ 0xE295A4, 0xD1 },
+		{ 0xE295A5, 0xD2 },
+		{ 0xE295A6, 0xCB },
+		{ 0xE295A7, 0xCF },
+		{ 0xE295A8, 0xD0 },
+		{ 0xE295A9, 0xCA },
+		{ 0xE295AA, 0xD8 },
+		{ 0xE295AB, 0xD7 },
+		{ 0xE295AC, 0xCE },
+		{ 0xE29680, 0xDF },
+		{ 0xE29684, 0xDC },
+		{ 0xE29688, 0xDB },
+		{ 0xE2968C, 0xDD },
+		{ 0xE29690, 0xDE },
+		{ 0xE29691, 0xB0 },
+		{ 0xE29692, 0xB1 },
+		{ 0xE29693, 0xB2 },
+		{ 0xE296A0, 0xFE },
+	},
+	{	/* UTF-8 -> CP852 */
+		{ 0x00C2A0, 0xFF },
+		{ 0x00C2A4, 0xCF },
+		{ 0x00C2A7, 0xF5 },
+		{ 0x00C2A8, 0xF9 },
+		{ 0x00C2AB, 0xAE },
+		{ 0x00C2AC, 0xAA },
+		{ 0x00C2AD, 0xF0 },
+		{ 0x00C2B0, 0xF8 },
+		{ 0x00C2B4, 0xEF },
+		{ 0x00C2B8, 0xF7 },
+		{ 0x00C2BB, 0xAF },
+		{ 0x00C381, 0xB5 },
+		{ 0x00C382, 0xB6 },
+		{ 0x00C384, 0x8E },
+		{ 0x00C387, 0x80 },
+		{ 0x00C389, 0x90 },
+		{ 0x00C38B, 0xD3 },
+		{ 0x00C38D, 0xD6 },
+		{ 0x00C38E, 0xD7 },
+		{ 0x00C393, 0xE0 },
+		{ 0x00C394, 0xE2 },
+		{ 0x00C396, 0x99 },
+		{ 0x00C397, 0x9E },
+		{ 0x00C39A, 0xE9 },
+		{ 0x00C39C, 0x9A },
+		{ 0x00C39D, 0xED },
+		{ 0x00C39F, 0xE1 },
+		{ 0x00C3A1, 0xA0 },
+		{ 0x00C3A2, 0x83 },
+		{ 0x00C3A4, 0x84 },
+		{ 0x00C3A7, 0x87 },
+		{ 0x00C3A9, 0x82 },
+		{ 0x00C3AB, 0x89 },
+		{ 0x00C3AD, 0xA1 },
+		{ 0x00C3AE, 0x8C },
+		{ 0x00C3B3, 0xA2 },
+		{ 0x00C3B4, 0x93 },
+		{ 0x00C3B6, 0x94 },
+		{ 0x00C3B7, 0xF6 },
+		{ 0x00C3BA, 0xA3 },
+		{ 0x00C3BC, 0x81 },
+		{ 0x00C3BD, 0xEC },
+		{ 0x00C482, 0xC6 },
+		{ 0x00C483, 0xC7 },
+		{ 0x00C484, 0xA4 },
+		{ 0x00C485, 0xA5 },
+		{ 0x00C486, 0x8F },
+		{ 0x00C487, 0x86 },
+		{ 0x00C48C, 0xAC },
+		{ 0x00C48D, 0x9F },
+		{ 0x00C48E, 0xD2 },
+		{ 0x00C48F, 0xD4 },
+		{ 0x00C490, 0xD1 },
+		{ 0x00C491, 0xD0 },
+		{ 0x00C498, 0xA8 },
+		{ 0x00C499, 0xA9 },
+		{ 0x00C49A, 0xB7 },
+		{ 0x00C49B, 0xD8 },
+		{ 0x00C4B9, 0x91 },
+		{ 0x00C4BA, 0x92 },
+		{ 0x00C4BD, 0x95 },
+		{ 0x00C4BE, 0x96 },
+		{ 0x00C581, 0x9D },
+		{ 0x00C582, 0x88 },
+		{ 0x00C583, 0xE3 },
+		{ 0x00C584, 0xE4 },
+		{ 0x00C587, 0xD5 },
+		{ 0x00C588, 0xE5 },
+		{ 0x00C590, 0x8A },
+		{ 0x00C591, 0x8B },
+		{ 0x00C594, 0xE8 },
+		{ 0x00C595, 0xEA },
+		{ 0x00C598, 0xFC },
+		{ 0x00C599, 0xFD },
+		{ 0x00C59A, 0x97 },
+		{ 0x00C59B, 0x98 },
+		{ 0x00C59E, 0xB8 },
+		{ 0x00C59F, 0xAD },
+		{ 0x00C5A0, 0xE6 },
+		{ 0x00C5A1, 0xE7 },
+		{ 0x00C5A2, 0xDD },
+		{ 0x00C5A3, 0xEE },
+		{ 0x00C5A4, 0x9B },
+		{ 0x00C5A5, 0x9C },
+		{ 0x00C5AE, 0xDE },
+		{ 0x00C5AF, 0x85 },
+		{ 0x00C5B0, 0xEB },
+		{ 0x00C5B1, 0xFB },
+		{ 0x00C5B9, 0x8D },
+		{ 0x00C5BA, 0xAB },
+		{ 0x00C5BB, 0xBD },
+		{ 0x00C5BC, 0xBE },
+		{ 0x00C5BD, 0xA6 },
+		{ 0x00C5BE, 0xA7 },
+		{ 0x00CB87, 0xF3 },
+		{ 0x00CB98, 0xF4 },
+		{ 0x00CB99, 0xFA },
+		{ 0x00CB9B, 0xF2 },
+		{ 0x00CB9D, 0xF1 },
+		{ 0xE29480, 0xC4 },
+		{ 0xE29482, 0xB3 },
+		{ 0xE2948C, 0xDA },
+		{ 0xE29490, 0xBF },
+		{ 0xE29494, 0xC0 },
+		{ 0xE29498, 0xD9 },
+		{ 0xE2949C, 0xC3 },
+		{ 0xE294A4, 0xB4 },
+		{ 0xE294AC, 0xC2 },
+		{ 0xE294B4, 0xC1 },
+		{ 0xE294BC, 0xC5 },
+		{ 0xE29590, 0xCD },
+		{ 0xE29591, 0xBA },
+		{ 0xE29594, 0xC9 },
+		{ 0xE29597, 0xBB },
+		{ 0xE2959A, 0xC8 },
+		{ 0xE2959D, 0xBC },
+		{ 0xE295A0, 0xCC },
+		{ 0xE295A3, 0xB9 },
+		{ 0xE295A6, 0xCB },
+		{ 0xE295A9, 0xCA },
+		{ 0xE295AC, 0xCE },
+		{ 0xE29680, 0xDF },
+		{ 0xE29684, 0xDC },
+		{ 0xE29688, 0xDB },
+		{ 0xE29691, 0xB0 },
+		{ 0xE29692, 0xB1 },
+		{ 0xE29693, 0xB2 },
+		{ 0xE296A0, 0xFE },
+	},
+	{	/* UTF-8 -> CP857 */
+		{ 0x00C2A0, 0xFF },
+		{ 0x00C2A1, 0xAD },
+		{ 0x00C2A2, 0xBD },
+		{ 0x00C2A3, 0x9C },
+		{ 0x00C2A4, 0xCF },
+		{ 0x00C2A5, 0xBE },
+		{ 0x00C2A6, 0xDD },
+		{ 0x00C2A7, 0xF5 },
+		{ 0x00C2A8, 0xF9 },
+		{ 0x00C2A9, 0xB8 },
+		{ 0x00C2AA, 0xD1 },
+		{ 0x00C2AB, 0xAE },
+		{ 0x00C2AC, 0xAA },
+		{ 0x00C2AD, 0xF0 },
+		{ 0x00C2AE, 0xA9 },
+		{ 0x00C2AF, 0xEE },
+		{ 0x00C2B0, 0xF8 },
+		{ 0x00C2B1, 0xF1 },
+		{ 0x00C2B2, 0xFD },
+		{ 0x00C2B3, 0xFC },
+		{ 0x00C2B4, 0xEF },
+		{ 0x00C2B5, 0xE6 },
+		{ 0x00C2B6, 0xF4 },
+		{ 0x00C2B7, 0xFA },
+		{ 0x00C2B8, 0xF7 },
+		{ 0x00C2B9, 0xFB },
+		{ 0x00C2BA, 0xD0 },
+		{ 0x00C2BB, 0xAF },
+		{ 0x00C2BC, 0xAC },
+		{ 0x00C2BD, 0xAB },
+		{ 0x00C2BE, 0xF3 },
+		{ 0x00C2BF, 0xA8 },
+		{ 0x00C380, 0xB7 },
+		{ 0x00C381, 0xB5 },
+		{ 0x00C382, 0xB6 },
+		{ 0x00C383, 0xC7 },
+		{ 0x00C384, 0x8E },
+		{ 0x00C385, 0x8F },
+		{ 0x00C386, 0x92 },
+		{ 0x00C387, 0x80 },
+		{ 0x00C388, 0xD4 },
+		{ 0x00C389, 0x90 },
+		{ 0x00C38A, 0xD2 },
+		{ 0x00C38B, 0xD3 },
+		{ 0x00C38C, 0xDE },
+		{ 0x00C38D, 0xD6 },
+		{ 0x00C38E, 0xD7 },
+		{ 0x00C38F, 0xD8 },
+		{ 0x00C391, 0xA5 },
+		{ 0x00C392, 0xE3 },
+		{ 0x00C393, 0xE0 },
+		{ 0x00C394, 0xE2 },
+		{ 0x00C395, 0xE5 },
+		{ 0x00C396, 0x99 },
+		{ 0x00C397, 0xE8 },
+		{ 0x00C398, 0x9D },
+		{ 0x00C399, 0xEB },
+		{ 0x00C39A, 0xE9 },
+		{ 0x00C39B, 0xEA },
+		{ 0x00C39C, 0x9A },
+		{ 0x00C39F, 0xE1 },
+		{ 0x00C3A0, 0x85 },
+		{ 0x00C3A1, 0xA0 },
+		{ 0x00C3A2, 0x83 },
+		{ 0x00C3A3, 0xC6 },
+		{ 0x00C3A4, 0x84 },
+		{ 0x00C3A5, 0x86 },
+		{ 0x00C3A6, 0x91 },
+		{ 0x00C3A7, 0x87 },
+		{ 0x00C3A8, 0x8A },
+		{ 0x00C3A9, 0x82 },
+		{ 0x00C3AA, 0x88 },
+		{ 0x00C3AB, 0x89 },
+		{ 0x00C3AC, 0xEC },
+		{ 0x00C3AD, 0xA1 },
+		{ 0x00C3AE, 0x8C },
+		{ 0x00C3AF, 0x8B },
+		{ 0x00C3B1, 0xA4 },
+		{ 0x00C3B2, 0x95 },
+		{ 0x00C3B3, 0xA2 },
+		{ 0x00C3B4, 0x93 },
+		{ 0x00C3B5, 0xE4 },
+		{ 0x00C3B6, 0x94 },
+		{ 0x00C3B7, 0xF6 },
+		{ 0x00C3B8, 0x9B },
+		{ 0x00C3B9, 0x97 },
+		{ 0x00C3BA, 0xA3 },
+		{ 0x00C3BB, 0x96 },
+		{ 0x00C3BC, 0x81 },
+		{ 0x00C3BF, 0xED },
+		{ 0x00C49E, 0xA6 },
+		{ 0x00C49F, 0xA7 },
+		{ 0x00C4B0, 0x98 },
+		{ 0x00C4B1, 0x8D },
+		{ 0x00C59E, 0x9E },
+		{ 0x00C59F, 0x9F },
+		{ 0xE29480, 0xC4 },
+		{ 0xE29482, 0xB3 },
+		{ 0xE2948C, 0xDA },
+		{ 0xE29490, 0xBF },
+		{ 0xE29494, 0xC0 },
+		{ 0xE29498, 0xD9 },
+		{ 0xE2949C, 0xC3 },
+		{ 0xE294A4, 0xB4 },
+		{ 0xE294AC, 0xC2 },
+		{ 0xE294B4, 0xC1 },
+		{ 0xE294BC, 0xC5 },
+		{ 0xE29590, 0xCD },
+		{ 0xE29591, 0xBA },
+		{ 0xE29594, 0xC9 },
+		{ 0xE29597, 0xBB },
+		{ 0xE2959A, 0xC8 },
+		{ 0xE2959D, 0xBC },
+		{ 0xE295A0, 0xCC },
+		{ 0xE295A3, 0xB9 },
+		{ 0xE295A6, 0xCB },
+		{ 0xE295A9, 0xCA },
+		{ 0xE295AC, 0xCE },
+		{ 0xE29680, 0xDF },
+		{ 0xE29684, 0xDC },
+		{ 0xE29688, 0xDB },
+		{ 0xE29691, 0xB0 },
+		{ 0xE29692, 0xB1 },
+		{ 0xE29693, 0xB2 },
+		{ 0xE296A0, 0xFE },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+	},
+	{	/* UTF-8 -> CP862 */
+		{ 0x00C2A0, 0xFF },
+		{ 0x00C2A1, 0xAD },
+		{ 0x00C2A2, 0x9B },
+		{ 0x00C2A3, 0x9C },
+		{ 0x00C2A5, 0x9D },
+		{ 0x00C2AA, 0xA6 },
+		{ 0x00C2AB, 0xAE },
+		{ 0x00C2AC, 0xAA },
+		{ 0x00C2B0, 0xF8 },
+		{ 0x00C2B1, 0xF1 },
+		{ 0x00C2B2, 0xFD },
+		{ 0x00C2B5, 0xE6 },
+		{ 0x00C2B7, 0xFA },
+		{ 0x00C2BA, 0xA7 },
+		{ 0x00C2BB, 0xAF },
+		{ 0x00C2BC, 0xAC },
+		{ 0x00C2BD, 0xAB },
+		{ 0x00C2BF, 0xA8 },
+		{ 0x00C391, 0xA5 },
+		{ 0x00C39F, 0xE1 },
+		{ 0x00C3A1, 0xA0 },
+		{ 0x00C3AD, 0xA1 },
+		{ 0x00C3B1, 0xA4 },
+		{ 0x00C3B3, 0xA2 },
+		{ 0x00C3B7, 0xF6 },
+		{ 0x00C3BA, 0xA3 },
+		{ 0x00C692, 0x9F },
+		{ 0x00CE93, 0xE2 },
+		{ 0x00CE98, 0xE9 },
+		{ 0x00CEA3, 0xE4 },
+		{ 0x00CEA6, 0xE8 },
+		{ 0x00CEA9, 0xEA },
+		{ 0x00CEB1, 0xE0 },
+		{ 0x00CEB4, 0xEB },
+		{ 0x00CEB5, 0xEE },
+		{ 0x00CF80, 0xE3 },
+		{ 0x00CF83, 0xE5 },
+		{ 0x00CF84, 0xE7 },
+		{ 0x00CF86, 0xED },
+		{ 0x00D790, 0x80 },
+		{ 0x00D791, 0x81 },
+		{ 0x00D792, 0x82 },
+		{ 0x00D793, 0x83 },
+		{ 0x00D794, 0x84 },
+		{ 0x00D795, 0x85 },
+		{ 0x00D796, 0x86 },
+		{ 0x00D797, 0x87 },
+		{ 0x00D798, 0x88 },
+		{ 0x00D799, 0x89 },
+		{ 0x00D79A, 0x8A },
+		{ 0x00D79B, 0x8B },
+		{ 0x00D79C, 0x8C },
+		{ 0x00D79D, 0x8D },
+		{ 0x00D79E, 0x8E },
+		{ 0x00D79F, 0x8F },
+		{ 0x00D7A0, 0x90 },
+		{ 0x00D7A1, 0x91 },
+		{ 0x00D7A2, 0x92 },
+		{ 0x00D7A3, 0x93 },
+		{ 0x00D7A4, 0x94 },
+		{ 0x00D7A5, 0x95 },
+		{ 0x00D7A6, 0x96 },
+		{ 0x00D7A7, 0x97 },
+		{ 0x00D7A8, 0x98 },
+		{ 0x00D7A9, 0x99 },
+		{ 0x00D7AA, 0x9A },
+		{ 0xE281BF, 0xFC },
+		{ 0xE282A7, 0x9E },
+		{ 0xE28899, 0xF9 },
+		{ 0xE2889A, 0xFB },
+		{ 0xE2889E, 0xEC },
+		{ 0xE288A9, 0xEF },
+		{ 0xE28988, 0xF7 },
+		{ 0xE289A1, 0xF0 },
+		{ 0xE289A4, 0xF3 },
+		{ 0xE289A5, 0xF2 },
+		{ 0xE28C90, 0xA9 },
+		{ 0xE28CA0, 0xF4 },
+		{ 0xE28CA1, 0xF5 },
+		{ 0xE29480, 0xC4 },
+		{ 0xE29482, 0xB3 },
+		{ 0xE2948C, 0xDA },
+		{ 0xE29490, 0xBF },
+		{ 0xE29494, 0xC0 },
+		{ 0xE29498, 0xD9 },
+		{ 0xE2949C, 0xC3 },
+		{ 0xE294A4, 0xB4 },
+		{ 0xE294AC, 0xC2 },
+		{ 0xE294B4, 0xC1 },
+		{ 0xE294BC, 0xC5 },
+		{ 0xE29590, 0xCD },
+		{ 0xE29591, 0xBA },
+		{ 0xE29592, 0xD5 },
+		{ 0xE29593, 0xD6 },
+		{ 0xE29594, 0xC9 },
+		{ 0xE29595, 0xB8 },
+		{ 0xE29596, 0xB7 },
+		{ 0xE29597, 0xBB },
+		{ 0xE29598, 0xD4 },
+		{ 0xE29599, 0xD3 },
+		{ 0xE2959A, 0xC8 },
+		{ 0xE2959B, 0xBE },
+		{ 0xE2959C, 0xBD },
+		{ 0xE2959D, 0xBC },
+		{ 0xE2959E, 0xC6 },
+		{ 0xE2959F, 0xC7 },
+		{ 0xE295A0, 0xCC },
+		{ 0xE295A1, 0xB5 },
+		{ 0xE295A2, 0xB6 },
+		{ 0xE295A3, 0xB9 },
+		{ 0xE295A4, 0xD1 },
+		{ 0xE295A5, 0xD2 },
+		{ 0xE295A6, 0xCB },
+		{ 0xE295A7, 0xCF },
+		{ 0xE295A8, 0xD0 },
+		{ 0xE295A9, 0xCA },
+		{ 0xE295AA, 0xD8 },
+		{ 0xE295AB, 0xD7 },
+		{ 0xE295AC, 0xCE },
+		{ 0xE29680, 0xDF },
+		{ 0xE29684, 0xDC },
+		{ 0xE29688, 0xDB },
+		{ 0xE2968C, 0xDD },
+		{ 0xE29690, 0xDE },
+		{ 0xE29691, 0xB0 },
+		{ 0xE29692, 0xB1 },
+		{ 0xE29693, 0xB2 },
+		{ 0xE296A0, 0xFE },
+	},
+	{	/* UTF-8 -> CP866 */
+		{ 0x00C2A0, 0xFF },
+		{ 0x00C2A4, 0xFD },
+		{ 0x00C2B0, 0xF8 },
+		{ 0x00C2B7, 0xFA },
+		{ 0x00D081, 0xF0 },
+		{ 0x00D084, 0xF2 },
+		{ 0x00D087, 0xF4 },
+		{ 0x00D08E, 0xF6 },
+		{ 0x00D090, 0x80 },
+		{ 0x00D091, 0x81 },
+		{ 0x00D092, 0x82 },
+		{ 0x00D093, 0x83 },
+		{ 0x00D094, 0x84 },
+		{ 0x00D095, 0x85 },
+		{ 0x00D096, 0x86 },
+		{ 0x00D097, 0x87 },
+		{ 0x00D098, 0x88 },
+		{ 0x00D099, 0x89 },
+		{ 0x00D09A, 0x8A },
+		{ 0x00D09B, 0x8B },
+		{ 0x00D09C, 0x8C },
+		{ 0x00D09D, 0x8D },
+		{ 0x00D09E, 0x8E },
+		{ 0x00D09F, 0x8F },
+		{ 0x00D0A0, 0x90 },
+		{ 0x00D0A1, 0x91 },
+		{ 0x00D0A2, 0x92 },
+		{ 0x00D0A3, 0x93 },
+		{ 0x00D0A4, 0x94 },
+		{ 0x00D0A5, 0x95 },
+		{ 0x00D0A6, 0x96 },
+		{ 0x00D0A7, 0x97 },
+		{ 0x00D0A8, 0x98 },
+		{ 0x00D0A9, 0x99 },
+		{ 0x00D0AA, 0x9A },
+		{ 0x00D0AB, 0x9B },
+		{ 0x00D0AC, 0x9C },
+		{ 0x00D0AD, 0x9D },
+		{ 0x00D0AE, 0x9E },
+		{ 0x00D0AF, 0x9F },
+		{ 0x00D0B0, 0xA0 },
+		{ 0x00D0B1, 0xA1 },
+		{ 0x00D0B2, 0xA2 },
+		{ 0x00D0B3, 0xA3 },
+		{ 0x00D0B4, 0xA4 },
+		{ 0x00D0B5, 0xA5 },
+		{ 0x00D0B6, 0xA6 },
+		{ 0x00D0B7, 0xA7 },
+		{ 0x00D0B8, 0xA8 },
+		{ 0x00D0B9, 0xA9 },
+		{ 0x00D0BA, 0xAA },
+		{ 0x00D0BB, 0xAB },
+		{ 0x00D0BC, 0xAC },
+		{ 0x00D0BD, 0xAD },
+		{ 0x00D0BE, 0xAE },
+		{ 0x00D0BF, 0xAF },
+		{ 0x00D180, 0xE0 },
+		{ 0x00D181, 0xE1 },
+		{ 0x00D182, 0xE2 },
+		{ 0x00D183, 0xE3 },
+		{ 0x00D184, 0xE4 },
+		{ 0x00D185, 0xE5 },
+		{ 0x00D186, 0xE6 },
+		{ 0x00D187, 0xE7 },
+		{ 0x00D188, 0xE8 },
+		{ 0x00D189, 0xE9 },
+		{ 0x00D18A, 0xEA },
+		{ 0x00D18B, 0xEB },
+		{ 0x00D18C, 0xEC },
+		{ 0x00D18D, 0xED },
+		{ 0x00D18E, 0xEE },
+		{ 0x00D18F, 0xEF },
+		{ 0x00D191, 0xF1 },
+		{ 0x00D194, 0xF3 },
+		{ 0x00D197, 0xF5 },
+		{ 0x00D19E, 0xF7 },
+		{ 0xE28496, 0xFC },
+		{ 0xE28899, 0xF9 },
+		{ 0xE2889A, 0xFB },
+		{ 0xE29480, 0xC4 },
+		{ 0xE29482, 0xB3 },
+		{ 0xE2948C, 0xDA },
+		{ 0xE29490, 0xBF },
+		{ 0xE29494, 0xC0 },
+		{ 0xE29498, 0xD9 },
+		{ 0xE2949C, 0xC3 },
+		{ 0xE294A4, 0xB4 },
+		{ 0xE294AC, 0xC2 },
+		{ 0xE294B4, 0xC1 },
+		{ 0xE294BC, 0xC5 },
+		{ 0xE29590, 0xCD },
+		{ 0xE29591, 0xBA },
+		{ 0xE29592, 0xD5 },
+		{ 0xE29593, 0xD6 },
+		{ 0xE29594, 0xC9 },
+		{ 0xE29595, 0xB8 },
+		{ 0xE29596, 0xB7 },
+		{ 0xE29597, 0xBB },
+		{ 0xE29598, 0xD4 },
+		{ 0xE29599, 0xD3 },
+		{ 0xE2959A, 0xC8 },
+		{ 0xE2959B, 0xBE },
+		{ 0xE2959C, 0xBD },
+		{ 0xE2959D, 0xBC },
+		{ 0xE2959E, 0xC6 },
+		{ 0xE2959F, 0xC7 },
+		{ 0xE295A0, 0xCC },
+		{ 0xE295A1, 0xB5 },
+		{ 0xE295A2, 0xB6 },
+		{ 0xE295A3, 0xB9 },
+		{ 0xE295A4, 0xD1 },
+		{ 0xE295A5, 0xD2 },
+		{ 0xE295A6, 0xCB },
+		{ 0xE295A7, 0xCF },
+		{ 0xE295A8, 0xD0 },
+		{ 0xE295A9, 0xCA },
+		{ 0xE295AA, 0xD8 },
+		{ 0xE295AB, 0xD7 },
+		{ 0xE295AC, 0xCE },
+		{ 0xE29680, 0xDF },
+		{ 0xE29684, 0xDC },
+		{ 0xE29688, 0xDB },
+		{ 0xE2968C, 0xDD },
+		{ 0xE29690, 0xDE },
+		{ 0xE29691, 0xB0 },
+		{ 0xE29692, 0xB1 },
+		{ 0xE29693, 0xB2 },
+		{ 0xE296A0, 0xFE },
+	},
+	{	/* UTF-8 -> CP1250 */
+		{ 0x00C2A0, 0xA0 },
+		{ 0x00C2A4, 0xA4 },
+		{ 0x00C2A6, 0xA6 },
+		{ 0x00C2A7, 0xA7 },
+		{ 0x00C2A8, 0xA8 },
+		{ 0x00C2A9, 0xA9 },
+		{ 0x00C2AB, 0xAB },
+		{ 0x00C2AC, 0xAC },
+		{ 0x00C2AD, 0xAD },
+		{ 0x00C2AE, 0xAE },
+		{ 0x00C2B0, 0xB0 },
+		{ 0x00C2B1, 0xB1 },
+		{ 0x00C2B4, 0xB4 },
+		{ 0x00C2B5, 0xB5 },
+		{ 0x00C2B6, 0xB6 },
+		{ 0x00C2B7, 0xB7 },
+		{ 0x00C2B8, 0xB8 },
+		{ 0x00C2BB, 0xBB },
+		{ 0x00C381, 0xC1 },
+		{ 0x00C382, 0xC2 },
+		{ 0x00C384, 0xC4 },
+		{ 0x00C387, 0xC7 },
+		{ 0x00C389, 0xC9 },
+		{ 0x00C38B, 0xCB },
+		{ 0x00C38D, 0xCD },
+		{ 0x00C38E, 0xCE },
+		{ 0x00C393, 0xD3 },
+		{ 0x00C394, 0xD4 },
+		{ 0x00C396, 0xD6 },
+		{ 0x00C397, 0xD7 },
+		{ 0x00C39A, 0xDA },
+		{ 0x00C39C, 0xDC },
+		{ 0x00C39D, 0xDD },
+		{ 0x00C39F, 0xDF },
+		{ 0x00C3A1, 0xE1 },
+		{ 0x00C3A2, 0xE2 },
+		{ 0x00C3A4, 0xE4 },
+		{ 0x00C3A7, 0xE7 },
+		{ 0x00C3A9, 0xE9 },
+		{ 0x00C3AB, 0xEB },
+		{ 0x00C3AD, 0xED },
+		{ 0x00C3AE, 0xEE },
+		{ 0x00C3B3, 0xF3 },
+		{ 0x00C3B4, 0xF4 },
+		{ 0x00C3B6, 0xF6 },
+		{ 0x00C3B7, 0xF7 },
+		{ 0x00C3BA, 0xFA },
+		{ 0x00C3BC, 0xFC },
+		{ 0x00C3BD, 0xFD },
+		{ 0x00C482, 0xC3 },
+		{ 0x00C483, 0xE3 },
+		{ 0x00C484, 0xA5 },
+		{ 0x00C485, 0xB9 },
+		{ 0x00C486, 0xC6 },
+		{ 0x00C487, 0xE6 },
+		{ 0x00C48C, 0xC8 },
+		{ 0x00C48D, 0xE8 },
+		{ 0x00C48E, 0xCF },
+		{ 0x00C48F, 0xEF },
+		{ 0x00C490, 0xD0 },
+		{ 0x00C491, 0xF0 },
+		{ 0x00C498, 0xCA },
+		{ 0x00C499, 0xEA },
+		{ 0x00C49A, 0xCC },
+		{ 0x00C49B, 0xEC },
+		{ 0x00C4B9, 0xC5 },
+		{ 0x00C4BA, 0xE5 },
+		{ 0x00C4BD, 0xBC },
+		{ 0x00C4BE, 0xBE },
+		{ 0x00C581, 0xA3 },
+		{ 0x00C582, 0xB3 },
+		{ 0x00C583, 0xD1 },
+		{ 0x00C584, 0xF1 },
+		{ 0x00C587, 0xD2 },
+		{ 0x00C588, 0xF2 },
+		{ 0x00C590, 0xD5 },
+		{ 0x00C591, 0xF5 },
+		{ 0x00C594, 0xC0 },
+		{ 0x00C595, 0xE0 },
+		{ 0x00C598, 0xD8 },
+		{ 0x00C599, 0xF8 },
+		{ 0x00C59A, 0x8C },
+		{ 0x00C59B, 0x9C },
+		{ 0x00C59E, 0xAA },
+		{ 0x00C59F, 0xBA },
+		{ 0x00C5A0, 0x8A },
+		{ 0x00C5A1, 0x9A },
+		{ 0x00C5A2, 0xDE },
+		{ 0x00C5A3, 0xFE },
+		{ 0x00C5A4, 0x8D },
+		{ 0x00C5A5, 0x9D },
+		{ 0x00C5AE, 0xD9 },
+		{ 0x00C5AF, 0xF9 },
+		{ 0x00C5B0, 0xDB },
+		{ 0x00C5B1, 0xFB },
+		{ 0x00C5B9, 0x8F },
+		{ 0x00C5BA, 0x9F },
+		{ 0x00C5BB, 0xAF },
+		{ 0x00C5BC, 0xBF },
+		{ 0x00C5BD, 0x8E },
+		{ 0x00C5BE, 0x9E },
+		{ 0x00CB87, 0xA1 },
+		{ 0x00CB98, 0xA2 },
+		{ 0x00CB99, 0xFF },
+		{ 0x00CB9B, 0xB2 },
+		{ 0x00CB9D, 0xBD },
+		{ 0xE28093, 0x96 },
+		{ 0xE28094, 0x97 },
+		{ 0xE28098, 0x91 },
+		{ 0xE28099, 0x92 },
+		{ 0xE2809A, 0x82 },
+		{ 0xE2809C, 0x93 },
+		{ 0xE2809D, 0x94 },
+		{ 0xE2809E, 0x84 },
+		{ 0xE280A0, 0x86 },
+		{ 0xE280A1, 0x87 },
+		{ 0xE280A2, 0x95 },
+		{ 0xE280A6, 0x85 },
+		{ 0xE280B0, 0x89 },
+		{ 0xE280B9, 0x8B },
+		{ 0xE280BA, 0x9B },
+		{ 0xE282AC, 0x80 },
+		{ 0xE284A2, 0x99 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+	},
+	{	/* UTF-8 -> CP1251 */
+		{ 0x00C2A0, 0xA0 },
+		{ 0x00C2A4, 0xA4 },
+		{ 0x00C2A6, 0xA6 },
+		{ 0x00C2A7, 0xA7 },
+		{ 0x00C2A9, 0xA9 },
+		{ 0x00C2AB, 0xAB },
+		{ 0x00C2AC, 0xAC },
+		{ 0x00C2AD, 0xAD },
+		{ 0x00C2AE, 0xAE },
+		{ 0x00C2B0, 0xB0 },
+		{ 0x00C2B1, 0xB1 },
+		{ 0x00C2B5, 0xB5 },
+		{ 0x00C2B6, 0xB6 },
+		{ 0x00C2B7, 0xB7 },
+		{ 0x00C2BB, 0xBB },
+		{ 0x00D081, 0xA8 },
+		{ 0x00D082, 0x80 },
+		{ 0x00D083, 0x81 },
+		{ 0x00D084, 0xAA },
+		{ 0x00D085, 0xBD },
+		{ 0x00D086, 0xB2 },
+		{ 0x00D087, 0xAF },
+		{ 0x00D088, 0xA3 },
+		{ 0x00D089, 0x8A },
+		{ 0x00D08A, 0x8C },
+		{ 0x00D08B, 0x8E },
+		{ 0x00D08C, 0x8D },
+		{ 0x00D08E, 0xA1 },
+		{ 0x00D08F, 0x8F },
+		{ 0x00D090, 0xC0 },
+		{ 0x00D091, 0xC1 },
+		{ 0x00D092, 0xC2 },
+		{ 0x00D093, 0xC3 },
+		{ 0x00D094, 0xC4 },
+		{ 0x00D095, 0xC5 },
+		{ 0x00D096, 0xC6 },
+		{ 0x00D097, 0xC7 },
+		{ 0x00D098, 0xC8 },
+		{ 0x00D099, 0xC9 },
+		{ 0x00D09A, 0xCA },
+		{ 0x00D09B, 0xCB },
+		{ 0x00D09C, 0xCC },
+		{ 0x00D09D, 0xCD },
+		{ 0x00D09E, 0xCE },
+		{ 0x00D09F, 0xCF },
+		{ 0x00D0A0, 0xD0 },
+		{ 0x00D0A1, 0xD1 },
+		{ 0x00D0A2, 0xD2 },
+		{ 0x00D0A3, 0xD3 },
+		{ 0x00D0A4, 0xD4 },
+		{ 0x00D0A5, 0xD5 },
+		{ 0x00D0A6, 0xD6 },
+		{ 0x00D0A7, 0xD7 },
+		{ 0x00D0A8, 0xD8 },
+		{ 0x00D0A9, 0xD9 },
+		{ 0x00D0AA, 0xDA },
+		{ 0x00D0AB, 0xDB },
+		{ 0x00D0AC, 0xDC },
+		{ 0x00D0AD, 0xDD },
+		{ 0x00D0AE, 0xDE },
+		{ 0x00D0AF, 0xDF },
+		{ 0x00D0B0, 0xE0 },
+		{ 0x00D0B1, 0xE1 },
+		{ 0x00D0B2, 0xE2 },
+		{ 0x00D0B3, 0xE3 },
+		{ 0x00D0B4, 0xE4 },
+		{ 0x00D0B5, 0xE5 },
+		{ 0x00D0B6, 0xE6 },
+		{ 0x00D0B7, 0xE7 },
+		{ 0x00D0B8, 0xE8 },
+		{ 0x00D0B9, 0xE9 },
+		{ 0x00D0BA, 0xEA },
+		{ 0x00D0BB, 0xEB },
+		{ 0x00D0BC, 0xEC },
+		{ 0x00D0BD, 0xED },
+		{ 0x00D0BE, 0xEE },
+		{ 0x00D0BF, 0xEF },
+		{ 0x00D180, 0xF0 },
+		{ 0x00D181, 0xF1 },
+		{ 0x00D182, 0xF2 },
+		{ 0x00D183, 0xF3 },
+		{ 0x00D184, 0xF4 },
+		{ 0x00D185, 0xF5 },
+		{ 0x00D186, 0xF6 },
+		{ 0x00D187, 0xF7 },
+		{ 0x00D188, 0xF8 },
+		{ 0x00D189, 0xF9 },
+		{ 0x00D18A, 0xFA },
+		{ 0x00D18B, 0xFB },
+		{ 0x00D18C, 0xFC },
+		{ 0x00D18D, 0xFD },
+		{ 0x00D18E, 0xFE },
+		{ 0x00D18F, 0xFF },
+		{ 0x00D191, 0xB8 },
+		{ 0x00D192, 0x90 },
+		{ 0x00D193, 0x83 },
+		{ 0x00D194, 0xBA },
+		{ 0x00D195, 0xBE },
+		{ 0x00D196, 0xB3 },
+		{ 0x00D197, 0xBF },
+		{ 0x00D198, 0xBC },
+		{ 0x00D199, 0x9A },
+		{ 0x00D19A, 0x9C },
+		{ 0x00D19B, 0x9E },
+		{ 0x00D19C, 0x9D },
+		{ 0x00D19E, 0xA2 },
+		{ 0x00D19F, 0x9F },
+		{ 0x00D290, 0xA5 },
+		{ 0x00D291, 0xB4 },
+		{ 0xE28093, 0x96 },
+		{ 0xE28094, 0x97 },
+		{ 0xE28098, 0x91 },
+		{ 0xE28099, 0x92 },
+		{ 0xE2809A, 0x82 },
+		{ 0xE2809C, 0x93 },
+		{ 0xE2809D, 0x94 },
+		{ 0xE2809E, 0x84 },
+		{ 0xE280A0, 0x86 },
+		{ 0xE280A1, 0x87 },
+		{ 0xE280A2, 0x95 },
+		{ 0xE280A6, 0x85 },
+		{ 0xE280B0, 0x89 },
+		{ 0xE280B9, 0x8B },
+		{ 0xE280BA, 0x9B },
+		{ 0xE282AC, 0x88 },
+		{ 0xE28496, 0xB9 },
+		{ 0xE284A2, 0x99 },
+		{ 0xFFFFFF, 0x00 },
+	},
+	{	/* UTF-8 -> CP1253 */
+		{ 0x00C2A0, 0xA0 },
+		{ 0x00C2A3, 0xA3 },
+		{ 0x00C2A4, 0xA4 },
+		{ 0x00C2A5, 0xA5 },
+		{ 0x00C2A6, 0xA6 },
+		{ 0x00C2A7, 0xA7 },
+		{ 0x00C2A8, 0xA8 },
+		{ 0x00C2A9, 0xA9 },
+		{ 0x00C2AB, 0xAB },
+		{ 0x00C2AC, 0xAC },
+		{ 0x00C2AD, 0xAD },
+		{ 0x00C2AE, 0xAE },
+		{ 0x00C2B0, 0xB0 },
+		{ 0x00C2B1, 0xB1 },
+		{ 0x00C2B2, 0xB2 },
+		{ 0x00C2B3, 0xB3 },
+		{ 0x00C2B5, 0xB5 },
+		{ 0x00C2B6, 0xB6 },
+		{ 0x00C2B7, 0xB7 },
+		{ 0x00C2BB, 0xBB },
+		{ 0x00C2BD, 0xBD },
+		{ 0x00C692, 0x83 },
+		{ 0x00CE84, 0xB4 },
+		{ 0x00CE85, 0xA1 },
+		{ 0x00CE86, 0xA2 },
+		{ 0x00CE88, 0xB8 },
+		{ 0x00CE89, 0xB9 },
+		{ 0x00CE8A, 0xBA },
+		{ 0x00CE8C, 0xBC },
+		{ 0x00CE8E, 0xBE },
+		{ 0x00CE8F, 0xBF },
+		{ 0x00CE90, 0xC0 },
+		{ 0x00CE91, 0xC1 },
+		{ 0x00CE92, 0xC2 },
+		{ 0x00CE93, 0xC3 },
+		{ 0x00CE94, 0xC4 },
+		{ 0x00CE95, 0xC5 },
+		{ 0x00CE96, 0xC6 },
+		{ 0x00CE97, 0xC7 },
+		{ 0x00CE98, 0xC8 },
+		{ 0x00CE99, 0xC9 },
+		{ 0x00CE9A, 0xCA },
+		{ 0x00CE9B, 0xCB },
+		{ 0x00CE9C, 0xCC },
+		{ 0x00CE9D, 0xCD },
+		{ 0x00CE9E, 0xCE },
+		{ 0x00CE9F, 0xCF },
+		{ 0x00CEA0, 0xD0 },
+		{ 0x00CEA1, 0xD1 },
+		{ 0x00CEA3, 0xD3 },
+		{ 0x00CEA4, 0xD4 },
+		{ 0x00CEA5, 0xD5 },
+		{ 0x00CEA6, 0xD6 },
+		{ 0x00CEA7, 0xD7 },
+		{ 0x00CEA8, 0xD8 },
+		{ 0x00CEA9, 0xD9 },
+		{ 0x00CEAA, 0xDA },
+		{ 0x00CEAB, 0xDB },
+		{ 0x00CEAC, 0xDC },
+		{ 0x00CEAD, 0xDD },
+		{ 0x00CEAE, 0xDE },
+		{ 0x00CEAF, 0xDF },
+		{ 0x00CEB0, 0xE0 },
+		{ 0x00CEB1, 0xE1 },
+		{ 0x00CEB2, 0xE2 },
+		{ 0x00CEB3, 0xE3 },
+		{ 0x00CEB4, 0xE4 },
+		{ 0x00CEB5, 0xE5 },
+		{ 0x00CEB6, 0xE6 },
+		{ 0x00CEB7, 0xE7 },
+		{ 0x00CEB8, 0xE8 },
+		{ 0x00CEB9, 0xE9 },
+		{ 0x00CEBA, 0xEA },
+		{ 0x00CEBB, 0xEB },
+		{ 0x00CEBC, 0xEC },
+		{ 0x00CEBD, 0xED },
+		{ 0x00CEBE, 0xEE },
+		{ 0x00CEBF, 0xEF },
+		{ 0x00CF80, 0xF0 },
+		{ 0x00CF81, 0xF1 },
+		{ 0x00CF82, 0xF2 },
+		{ 0x00CF83, 0xF3 },
+		{ 0x00CF84, 0xF4 },
+		{ 0x00CF85, 0xF5 },
+		{ 0x00CF86, 0xF6 },
+		{ 0x00CF87, 0xF7 },
+		{ 0x00CF88, 0xF8 },
+		{ 0x00CF89, 0xF9 },
+		{ 0x00CF8A, 0xFA },
+		{ 0x00CF8B, 0xFB },
+		{ 0x00CF8C, 0xFC },
+		{ 0x00CF8D, 0xFD },
+		{ 0x00CF8E, 0xFE },
+		{ 0xE28093, 0x96 },
+		{ 0xE28094, 0x97 },
+		{ 0xE28095, 0xAF },
+		{ 0xE28098, 0x91 },
+		{ 0xE28099, 0x92 },
+		{ 0xE2809A, 0x82 },
+		{ 0xE2809C, 0x93 },
+		{ 0xE2809D, 0x94 },
+		{ 0xE2809E, 0x84 },
+		{ 0xE280A0, 0x86 },
+		{ 0xE280A1, 0x87 },
+		{ 0xE280A2, 0x95 },
+		{ 0xE280A6, 0x85 },
+		{ 0xE280B0, 0x89 },
+		{ 0xE280B9, 0x8B },
+		{ 0xE280BA, 0x9B },
+		{ 0xE282AC, 0x80 },
+		{ 0xE284A2, 0x99 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+	},
+	{	/* UTF-8 -> CP1254 */
+		{ 0x00C2A0, 0xA0 },
+		{ 0x00C2A1, 0xA1 },
+		{ 0x00C2A2, 0xA2 },
+		{ 0x00C2A3, 0xA3 },
+		{ 0x00C2A4, 0xA4 },
+		{ 0x00C2A5, 0xA5 },
+		{ 0x00C2A6, 0xA6 },
+		{ 0x00C2A7, 0xA7 },
+		{ 0x00C2A8, 0xA8 },
+		{ 0x00C2A9, 0xA9 },
+		{ 0x00C2AA, 0xAA },
+		{ 0x00C2AB, 0xAB },
+		{ 0x00C2AC, 0xAC },
+		{ 0x00C2AD, 0xAD },
+		{ 0x00C2AE, 0xAE },
+		{ 0x00C2AF, 0xAF },
+		{ 0x00C2B0, 0xB0 },
+		{ 0x00C2B1, 0xB1 },
+		{ 0x00C2B2, 0xB2 },
+		{ 0x00C2B3, 0xB3 },
+		{ 0x00C2B4, 0xB4 },
+		{ 0x00C2B5, 0xB5 },
+		{ 0x00C2B6, 0xB6 },
+		{ 0x00C2B7, 0xB7 },
+		{ 0x00C2B8, 0xB8 },
+		{ 0x00C2B9, 0xB9 },
+		{ 0x00C2BA, 0xBA },
+		{ 0x00C2BB, 0xBB },
+		{ 0x00C2BC, 0xBC },
+		{ 0x00C2BD, 0xBD },
+		{ 0x00C2BE, 0xBE },
+		{ 0x00C2BF, 0xBF },
+		{ 0x00C380, 0xC0 },
+		{ 0x00C381, 0xC1 },
+		{ 0x00C382, 0xC2 },
+		{ 0x00C383, 0xC3 },
+		{ 0x00C384, 0xC4 },
+		{ 0x00C385, 0xC5 },
+		{ 0x00C386, 0xC6 },
+		{ 0x00C387, 0xC7 },
+		{ 0x00C388, 0xC8 },
+		{ 0x00C389, 0xC9 },
+		{ 0x00C38A, 0xCA },
+		{ 0x00C38B, 0xCB },
+		{ 0x00C38C, 0xCC },
+		{ 0x00C38D, 0xCD },
+		{ 0x00C38E, 0xCE },
+		{ 0x00C38F, 0xCF },
+		{ 0x00C391, 0xD1 },
+		{ 0x00C392, 0xD2 },
+		{ 0x00C393, 0xD3 },
+		{ 0x00C394, 0xD4 },
+		{ 0x00C395, 0xD5 },
+		{ 0x00C396, 0xD6 },
+		{ 0x00C397, 0xD7 },
+		{ 0x00C398, 0xD8 },
+		{ 0x00C399, 0xD9 },
+		{ 0x00C39A, 0xDA },
+		{ 0x00C39B, 0xDB },
+		{ 0x00C39C, 0xDC },
+		{ 0x00C39F, 0xDF },
+		{ 0x00C3A0, 0xE0 },
+		{ 0x00C3A1, 0xE1 },
+		{ 0x00C3A2, 0xE2 },
+		{ 0x00C3A3, 0xE3 },
+		{ 0x00C3A4, 0xE4 },
+		{ 0x00C3A5, 0xE5 },
+		{ 0x00C3A6, 0xE6 },
+		{ 0x00C3A7, 0xE7 },
+		{ 0x00C3A8, 0xE8 },
+		{ 0x00C3A9, 0xE9 },
+		{ 0x00C3AA, 0xEA },
+		{ 0x00C3AB, 0xEB },
+		{ 0x00C3AC, 0xEC },
+		{ 0x00C3AD, 0xED },
+		{ 0x00C3AE, 0xEE },
+		{ 0x00C3AF, 0xEF },
+		{ 0x00C3B1, 0xF1 },
+		{ 0x00C3B2, 0xF2 },
+		{ 0x00C3B3, 0xF3 },
+		{ 0x00C3B4, 0xF4 },
+		{ 0x00C3B5, 0xF5 },
+		{ 0x00C3B6, 0xF6 },
+		{ 0x00C3B7, 0xF7 },
+		{ 0x00C3B8, 0xF8 },
+		{ 0x00C3B9, 0xF9 },
+		{ 0x00C3BA, 0xFA },
+		{ 0x00C3BB, 0xFB },
+		{ 0x00C3BC, 0xFC },
+		{ 0x00C3BF, 0xFF },
+		{ 0x00C49E, 0xD0 },
+		{ 0x00C49F, 0xF0 },
+		{ 0x00C4B0, 0xDD },
+		{ 0x00C4B1, 0xFD },
+		{ 0x00C592, 0x8C },
+		{ 0x00C593, 0x9C },
+		{ 0x00C59E, 0xDE },
+		{ 0x00C59F, 0xFE },
+		{ 0x00C5A0, 0x8A },
+		{ 0x00C5A1, 0x9A },
+		{ 0x00C5B8, 0x9F },
+		{ 0x00C692, 0x83 },
+		{ 0x00CB86, 0x88 },
+		{ 0x00CB9C, 0x98 },
+		{ 0xE28093, 0x96 },
+		{ 0xE28094, 0x97 },
+		{ 0xE28098, 0x91 },
+		{ 0xE28099, 0x92 },
+		{ 0xE2809A, 0x82 },
+		{ 0xE2809C, 0x93 },
+		{ 0xE2809D, 0x94 },
+		{ 0xE2809E, 0x84 },
+		{ 0xE280A0, 0x86 },
+		{ 0xE280A1, 0x87 },
+		{ 0xE280A2, 0x95 },
+		{ 0xE280A6, 0x85 },
+		{ 0xE280B0, 0x89 },
+		{ 0xE280B9, 0x8B },
+		{ 0xE280BA, 0x9B },
+		{ 0xE282AC, 0x80 },
+		{ 0xE284A2, 0x99 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+	},
+	{	/* UTF-8 -> CP1255 */
+		{ 0x00C2A0, 0xA0 },
+		{ 0x00C2A1, 0xA1 },
+		{ 0x00C2A2, 0xA2 },
+		{ 0x00C2A3, 0xA3 },
+		{ 0x00C2A5, 0xA5 },
+		{ 0x00C2A6, 0xA6 },
+		{ 0x00C2A7, 0xA7 },
+		{ 0x00C2A8, 0xA8 },
+		{ 0x00C2A9, 0xA9 },
+		{ 0x00C2AB, 0xAB },
+		{ 0x00C2AC, 0xAC },
+		{ 0x00C2AD, 0xAD },
+		{ 0x00C2AE, 0xAE },
+		{ 0x00C2AF, 0xAF },
+		{ 0x00C2B0, 0xB0 },
+		{ 0x00C2B1, 0xB1 },
+		{ 0x00C2B2, 0xB2 },
+		{ 0x00C2B3, 0xB3 },
+		{ 0x00C2B4, 0xB4 },
+		{ 0x00C2B5, 0xB5 },
+		{ 0x00C2B6, 0xB6 },
+		{ 0x00C2B7, 0xB7 },
+		{ 0x00C2B8, 0xB8 },
+		{ 0x00C2B9, 0xB9 },
+		{ 0x00C2BB, 0xBB },
+		{ 0x00C2BC, 0xBC },
+		{ 0x00C2BD, 0xBD },
+		{ 0x00C2BE, 0xBE },
+		{ 0x00C2BF, 0xBF },
+		{ 0x00C397, 0xAA },
+		{ 0x00C3B7, 0xBA },
+		{ 0x00C692, 0x83 },
+		{ 0x00CB86, 0x88 },
+		{ 0x00CB9C, 0x98 },
+		{ 0x00D6B0, 0xC0 },
+		{ 0x00D6B1, 0xC1 },
+		{ 0x00D6B2, 0xC2 },
+		{ 0x00D6B3, 0xC3 },
+		{ 0x00D6B4, 0xC4 },
+		{ 0x00D6B5, 0xC5 },
+		{ 0x00D6B6, 0xC6 },
+		{ 0x00D6B7, 0xC7 },
+		{ 0x00D6B8, 0xC8 },
+		{ 0x00D6B9, 0xC9 },
+		{ 0x00D6BB, 0xCB },
+		{ 0x00D6BC, 0xCC },
+		{ 0x00D6BD, 0xCD },
+		{ 0x00D6BE, 0xCE },
+		{ 0x00D6BF, 0xCF },
+		{ 0x00D780, 0xD0 },
+		{ 0x00D781, 0xD1 },
+		{ 0x00D782, 0xD2 },
+		{ 0x00D783, 0xD3 },
+		{ 0x00D790, 0xE0 },
+		{ 0x00D791, 0xE1 },
+		{ 0x00D792, 0xE2 },
+		{ 0x00D793, 0xE3 },
+		{ 0x00D794, 0xE4 },
+		{ 0x00D795, 0xE5 },
+		{ 0x00D796, 0xE6 },
+		{ 0x00D797, 0xE7 },
+		{ 0x00D798, 0xE8 },
+		{ 0x00D799, 0xE9 },
+		{ 0x00D79A, 0xEA },
+		{ 0x00D79B, 0xEB },
+		{ 0x00D79C, 0xEC },
+		{ 0x00D79D, 0xED },
+		{ 0x00D79E, 0xEE },
+		{ 0x00D79F, 0xEF },
+		{ 0x00D7A0, 0xF0 },
+		{ 0x00D7A1, 0xF1 },
+		{ 0x00D7A2, 0xF2 },
+		{ 0x00D7A3, 0xF3 },
+		{ 0x00D7A4, 0xF4 },
+		{ 0x00D7A5, 0xF5 },
+		{ 0x00D7A6, 0xF6 },
+		{ 0x00D7A7, 0xF7 },
+		{ 0x00D7A8, 0xF8 },
+		{ 0x00D7A9, 0xF9 },
+		{ 0x00D7AA, 0xFA },
+		{ 0x00D7B0, 0xD4 },
+		{ 0x00D7B1, 0xD5 },
+		{ 0x00D7B2, 0xD6 },
+		{ 0x00D7B3, 0xD7 },
+		{ 0x00D7B4, 0xD8 },
+		{ 0xE2808E, 0xFD },
+		{ 0xE2808F, 0xFE },
+		{ 0xE28093, 0x96 },
+		{ 0xE28094, 0x97 },
+		{ 0xE28098, 0x91 },
+		{ 0xE28099, 0x92 },
+		{ 0xE2809A, 0x82 },
+		{ 0xE2809C, 0x93 },
+		{ 0xE2809D, 0x94 },
+		{ 0xE2809E, 0x84 },
+		{ 0xE280A0, 0x86 },
+		{ 0xE280A1, 0x87 },
+		{ 0xE280A2, 0x95 },
+		{ 0xE280A6, 0x85 },
+		{ 0xE280B0, 0x89 },
+		{ 0xE280B9, 0x8B },
+		{ 0xE280BA, 0x9B },
+		{ 0xE282AA, 0xA4 },
+		{ 0xE282AC, 0x80 },
+		{ 0xE284A2, 0x99 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+	},
+	{	/* UTF-8 -> CP1256 */
+		{ 0x00C2A0, 0xA0 },
+		{ 0x00C2A2, 0xA2 },
+		{ 0x00C2A3, 0xA3 },
+		{ 0x00C2A4, 0xA4 },
+		{ 0x00C2A5, 0xA5 },
+		{ 0x00C2A6, 0xA6 },
+		{ 0x00C2A7, 0xA7 },
+		{ 0x00C2A8, 0xA8 },
+		{ 0x00C2A9, 0xA9 },
+		{ 0x00C2AB, 0xAB },
+		{ 0x00C2AC, 0xAC },
+		{ 0x00C2AD, 0xAD },
+		{ 0x00C2AE, 0xAE },
+		{ 0x00C2AF, 0xAF },
+		{ 0x00C2B0, 0xB0 },
+		{ 0x00C2B1, 0xB1 },
+		{ 0x00C2B2, 0xB2 },
+		{ 0x00C2B3, 0xB3 },
+		{ 0x00C2B4, 0xB4 },
+		{ 0x00C2B5, 0xB5 },
+		{ 0x00C2B6, 0xB6 },
+		{ 0x00C2B7, 0xB7 },
+		{ 0x00C2B8, 0xB8 },
+		{ 0x00C2B9, 0xB9 },
+		{ 0x00C2BB, 0xBB },
+		{ 0x00C2BC, 0xBC },
+		{ 0x00C2BD, 0xBD },
+		{ 0x00C2BE, 0xBE },
+		{ 0x00C397, 0xD7 },
+		{ 0x00C3A0, 0xE0 },
+		{ 0x00C3A2, 0xE2 },
+		{ 0x00C3A7, 0xE7 },
+		{ 0x00C3A8, 0xE8 },
+		{ 0x00C3A9, 0xE9 },
+		{ 0x00C3AA, 0xEA },
+		{ 0x00C3AB, 0xEB },
+		{ 0x00C3AE, 0xEE },
+		{ 0x00C3AF, 0xEF },
+		{ 0x00C3B4, 0xF4 },
+		{ 0x00C3B7, 0xF7 },
+		{ 0x00C3B9, 0xF9 },
+		{ 0x00C3BB, 0xFB },
+		{ 0x00C3BC, 0xFC },
+		{ 0x00C592, 0x8C },
+		{ 0x00C593, 0x9C },
+		{ 0x00C692, 0x83 },
+		{ 0x00CB86, 0x88 },
+		{ 0x00D88C, 0xA1 },
+		{ 0x00D89B, 0xBA },
+		{ 0x00D89F, 0xBF },
+		{ 0x00D8A1, 0xC1 },
+		{ 0x00D8A2, 0xC2 },
+		{ 0x00D8A3, 0xC3 },
+		{ 0x00D8A4, 0xC4 },
+		{ 0x00D8A5, 0xC5 },
+		{ 0x00D8A6, 0xC6 },
+		{ 0x00D8A7, 0xC7 },
+		{ 0x00D8A8, 0xC8 },
+		{ 0x00D8A9, 0xC9 },
+		{ 0x00D8AA, 0xCA },
+		{ 0x00D8AB, 0xCB },
+		{ 0x00D8AC, 0xCC },
+		{ 0x00D8AD, 0xCD },
+		{ 0x00D8AE, 0xCE },
+		{ 0x00D8AF, 0xCF },
+		{ 0x00D8B0, 0xD0 },
+		{ 0x00D8B1, 0xD1 },
+		{ 0x00D8B2, 0xD2 },
+		{ 0x00D8B3, 0xD3 },
+		{ 0x00D8B4, 0xD4 },
+		{ 0x00D8B5, 0xD5 },
+		{ 0x00D8B6, 0xD6 },
+		{ 0x00D8B7, 0xD8 },
+		{ 0x00D8B8, 0xD9 },
+		{ 0x00D8B9, 0xDA },
+		{ 0x00D8BA, 0xDB },
+		{ 0x00D980, 0xDC },
+		{ 0x00D981, 0xDD },
+		{ 0x00D982, 0xDE },
+		{ 0x00D983, 0xDF },
+		{ 0x00D984, 0xE1 },
+		{ 0x00D985, 0xE3 },
+		{ 0x00D986, 0xE4 },
+		{ 0x00D987, 0xE5 },
+		{ 0x00D988, 0xE6 },
+		{ 0x00D989, 0xEC },
+		{ 0x00D98A, 0xED },
+		{ 0x00D98B, 0xF0 },
+		{ 0x00D98C, 0xF1 },
+		{ 0x00D98D, 0xF2 },
+		{ 0x00D98E, 0xF3 },
+		{ 0x00D98F, 0xF5 },
+		{ 0x00D990, 0xF6 },
+		{ 0x00D991, 0xF8 },
+		{ 0x00D992, 0xFA },
+		{ 0x00D9B9, 0x8A },
+		{ 0x00D9BE, 0x81 },
+		{ 0x00DA86, 0x8D },
+		{ 0x00DA88, 0x8F },
+		{ 0x00DA91, 0x9A },
+		{ 0x00DA98, 0x8E },
+		{ 0x00DAA9, 0x98 },
+		{ 0x00DAAF, 0x90 },
+		{ 0x00DABA, 0x9F },
+		{ 0x00DABE, 0xAA },
+		{ 0x00DB81, 0xC0 },
+		{ 0x00DB92, 0xFF },
+		{ 0xE2808C, 0x9D },
+		{ 0xE2808D, 0x9E },
+		{ 0xE2808E, 0xFD },
+		{ 0xE2808F, 0xFE },
+		{ 0xE28093, 0x96 },
+		{ 0xE28094, 0x97 },
+		{ 0xE28098, 0x91 },
+		{ 0xE28099, 0x92 },
+		{ 0xE2809A, 0x82 },
+		{ 0xE2809C, 0x93 },
+		{ 0xE2809D, 0x94 },
+		{ 0xE2809E, 0x84 },
+		{ 0xE280A0, 0x86 },
+		{ 0xE280A1, 0x87 },
+		{ 0xE280A2, 0x95 },
+		{ 0xE280A6, 0x85 },
+		{ 0xE280B0, 0x89 },
+		{ 0xE280B9, 0x8B },
+		{ 0xE280BA, 0x9B },
+		{ 0xE282AC, 0x80 },
+		{ 0xE284A2, 0x99 },
+	},
+	{	/* UTF-8 -> CP1257 */
+		{ 0x00C2A0, 0xA0 },
+		{ 0x00C2A2, 0xA2 },
+		{ 0x00C2A3, 0xA3 },
+		{ 0x00C2A4, 0xA4 },
+		{ 0x00C2A6, 0xA6 },
+		{ 0x00C2A7, 0xA7 },
+		{ 0x00C2A8, 0x8D },
+		{ 0x00C2A9, 0xA9 },
+		{ 0x00C2AB, 0xAB },
+		{ 0x00C2AC, 0xAC },
+		{ 0x00C2AD, 0xAD },
+		{ 0x00C2AE, 0xAE },
+		{ 0x00C2AF, 0x9D },
+		{ 0x00C2B0, 0xB0 },
+		{ 0x00C2B1, 0xB1 },
+		{ 0x00C2B2, 0xB2 },
+		{ 0x00C2B3, 0xB3 },
+		{ 0x00C2B4, 0xB4 },
+		{ 0x00C2B5, 0xB5 },
+		{ 0x00C2B6, 0xB6 },
+		{ 0x00C2B7, 0xB7 },
+		{ 0x00C2B8, 0x8F },
+		{ 0x00C2B9, 0xB9 },
+		{ 0x00C2BB, 0xBB },
+		{ 0x00C2BC, 0xBC },
+		{ 0x00C2BD, 0xBD },
+		{ 0x00C2BE, 0xBE },
+		{ 0x00C384, 0xC4 },
+		{ 0x00C385, 0xC5 },
+		{ 0x00C386, 0xAF },
+		{ 0x00C389, 0xC9 },
+		{ 0x00C393, 0xD3 },
+		{ 0x00C395, 0xD5 },
+		{ 0x00C396, 0xD6 },
+		{ 0x00C397, 0xD7 },
+		{ 0x00C398, 0xA8 },
+		{ 0x00C39C, 0xDC },
+		{ 0x00C39F, 0xDF },
+		{ 0x00C3A4, 0xE4 },
+		{ 0x00C3A5, 0xE5 },
+		{ 0x00C3A6, 0xBF },
+		{ 0x00C3A9, 0xE9 },
+		{ 0x00C3B3, 0xF3 },
+		{ 0x00C3B5, 0xF5 },
+		{ 0x00C3B6, 0xF6 },
+		{ 0x00C3B7, 0xF7 },
+		{ 0x00C3B8, 0xB8 },
+		{ 0x00C3BC, 0xFC },
+		{ 0x00C480, 0xC2 },
+		{ 0x00C481, 0xE2 },
+		{ 0x00C484, 0xC0 },
+		{ 0x00C485, 0xE0 },
+		{ 0x00C486, 0xC3 },
+		{ 0x00C487, 0xE3 },
+		{ 0x00C48C, 0xC8 },
+		{ 0x00C48D, 0xE8 },
+		{ 0x00C492, 0xC7 },
+		{ 0x00C493, 0xE7 },
+		{ 0x00C496, 0xCB },
+		{ 0x00C497, 0xEB },
+		{ 0x00C498, 0xC6 },
+		{ 0x00C499, 0xE6 },
+		{ 0x00C4A2, 0xCC },
+		{ 0x00C4A3, 0xEC },
+		{ 0x00C4AA, 0xCE },
+		{ 0x00C4AB, 0xEE },
+		{ 0x00C4AE, 0xC1 },
+		{ 0x00C4AF, 0xE1 },
+		{ 0x00C4B6, 0xCD },
+		{ 0x00C4B7, 0xED },
+		{ 0x00C4BB, 0xCF },
+		{ 0x00C4BC, 0xEF },
+		{ 0x00C581, 0xD9 },
+		{ 0x00C582, 0xF9 },
+		{ 0x00C583, 0xD1 },
+		{ 0x00C584, 0xF1 },
+		{ 0x00C585, 0xD2 },
+		{ 0x00C586, 0xF2 },
+		{ 0x00C58C, 0xD4 },
+		{ 0x00C58D, 0xF4 },
+		{ 0x00C596, 0xAA },
+		{ 0x00C597, 0xBA },
+		{ 0x00C59A, 0xDA },
+		{ 0x00C59B, 0xFA },
+		{ 0x00C5A0, 0xD0 },
+		{ 0x00C5A1, 0xF0 },
+		{ 0x00C5AA, 0xDB },
+		{ 0x00C5AB, 0xFB },
+		{ 0x00C5B2, 0xD8 },
+		{ 0x00C5B3, 0xF8 },
+		{ 0x00C5B9, 0xCA },
+		{ 0x00C5BA, 0xEA },
+		{ 0x00C5BB, 0xDD },
+		{ 0x00C5BC, 0xFD },
+		{ 0x00C5BD, 0xDE },
+		{ 0x00C5BE, 0xFE },
+		{ 0x00CB87, 0x8E },
+		{ 0x00CB99, 0xFF },
+		{ 0x00CB9B, 0x9E },
+		{ 0xE28093, 0x96 },
+		{ 0xE28094, 0x97 },
+		{ 0xE28098, 0x91 },
+		{ 0xE28099, 0x92 },
+		{ 0xE2809A, 0x82 },
+		{ 0xE2809C, 0x93 },
+		{ 0xE2809D, 0x94 },
+		{ 0xE2809E, 0x84 },
+		{ 0xE280A0, 0x86 },
+		{ 0xE280A1, 0x87 },
+		{ 0xE280A2, 0x95 },
+		{ 0xE280A6, 0x85 },
+		{ 0xE280B0, 0x89 },
+		{ 0xE280B9, 0x8B },
+		{ 0xE280BA, 0x9B },
+		{ 0xE282AC, 0x80 },
+		{ 0xE284A2, 0x99 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+	},
+	{	/* UTF-8 -> ISO 8859-2 */
+		{ 0x00C280, 0x80 },
+		{ 0x00C281, 0x81 },
+		{ 0x00C282, 0x82 },
+		{ 0x00C283, 0x83 },
+		{ 0x00C284, 0x84 },
+		{ 0x00C285, 0x85 },
+		{ 0x00C286, 0x86 },
+		{ 0x00C287, 0x87 },
+		{ 0x00C288, 0x88 },
+		{ 0x00C289, 0x89 },
+		{ 0x00C28A, 0x8A },
+		{ 0x00C28B, 0x8B },
+		{ 0x00C28C, 0x8C },
+		{ 0x00C28D, 0x8D },
+		{ 0x00C28E, 0x8E },
+		{ 0x00C28F, 0x8F },
+		{ 0x00C290, 0x90 },
+		{ 0x00C291, 0x91 },
+		{ 0x00C292, 0x92 },
+		{ 0x00C293, 0x93 },
+		{ 0x00C294, 0x94 },
+		{ 0x00C295, 0x95 },
+		{ 0x00C296, 0x96 },
+		{ 0x00C297, 0x97 },
+		{ 0x00C298, 0x98 },
+		{ 0x00C299, 0x99 },
+		{ 0x00C29A, 0x9A },
+		{ 0x00C29B, 0x9B },
+		{ 0x00C29C, 0x9C },
+		{ 0x00C29D, 0x9D },
+		{ 0x00C29E, 0x9E },
+		{ 0x00C29F, 0x9F },
+		{ 0x00C2A0, 0xA0 },
+		{ 0x00C2A4, 0xA4 },
+		{ 0x00C2A7, 0xA7 },
+		{ 0x00C2A8, 0xA8 },
+		{ 0x00C2AD, 0xAD },
+		{ 0x00C2B0, 0xB0 },
+		{ 0x00C2B4, 0xB4 },
+		{ 0x00C2B8, 0xB8 },
+		{ 0x00C381, 0xC1 },
+		{ 0x00C382, 0xC2 },
+		{ 0x00C384, 0xC4 },
+		{ 0x00C387, 0xC7 },
+		{ 0x00C389, 0xC9 },
+		{ 0x00C38B, 0xCB },
+		{ 0x00C38D, 0xCD },
+		{ 0x00C38E, 0xCE },
+		{ 0x00C393, 0xD3 },
+		{ 0x00C394, 0xD4 },
+		{ 0x00C396, 0xD6 },
+		{ 0x00C397, 0xD7 },
+		{ 0x00C39A, 0xDA },
+		{ 0x00C39C, 0xDC },
+		{ 0x00C39D, 0xDD },
+		{ 0x00C39F, 0xDF },
+		{ 0x00C3A1, 0xE1 },
+		{ 0x00C3A2, 0xE2 },
+		{ 0x00C3A4, 0xE4 },
+		{ 0x00C3A7, 0xE7 },
+		{ 0x00C3A9, 0xE9 },
+		{ 0x00C3AB, 0xEB },
+		{ 0x00C3AD, 0xED },
+		{ 0x00C3AE, 0xEE },
+		{ 0x00C3B3, 0xF3 },
+		{ 0x00C3B4, 0xF4 },
+		{ 0x00C3B6, 0xF6 },
+		{ 0x00C3B7, 0xF7 },
+		{ 0x00C3BA, 0xFA },
+		{ 0x00C3BC, 0xFC },
+		{ 0x00C3BD, 0xFD },
+		{ 0x00C482, 0xC3 },
+		{ 0x00C483, 0xE3 },
+		{ 0x00C484, 0xA1 },
+		{ 0x00C485, 0xB1 },
+		{ 0x00C486, 0xC6 },
+		{ 0x00C487, 0xE6 },
+		{ 0x00C48C, 0xC8 },
+		{ 0x00C48D, 0xE8 },
+		{ 0x00C48E, 0xCF },
+		{ 0x00C48F, 0xEF },
+		{ 0x00C490, 0xD0 },
+		{ 0x00C491, 0xF0 },
+		{ 0x00C498, 0xCA },
+		{ 0x00C499, 0xEA },
+		{ 0x00C49A, 0xCC },
+		{ 0x00C49B, 0xEC },
+		{ 0x00C4B9, 0xC5 },
+		{ 0x00C4BA, 0xE5 },
+		{ 0x00C4BD, 0xA5 },
+		{ 0x00C4BE, 0xB5 },
+		{ 0x00C581, 0xA3 },
+		{ 0x00C582, 0xB3 },
+		{ 0x00C583, 0xD1 },
+		{ 0x00C584, 0xF1 },
+		{ 0x00C587, 0xD2 },
+		{ 0x00C588, 0xF2 },
+		{ 0x00C590, 0xD5 },
+		{ 0x00C591, 0xF5 },
+		{ 0x00C594, 0xC0 },
+		{ 0x00C595, 0xE0 },
+		{ 0x00C598, 0xD8 },
+		{ 0x00C599, 0xF8 },
+		{ 0x00C59A, 0xA6 },
+		{ 0x00C59B, 0xB6 },
+		{ 0x00C59E, 0xAA },
+		{ 0x00C59F, 0xBA },
+		{ 0x00C5A0, 0xA9 },
+		{ 0x00C5A1, 0xB9 },
+		{ 0x00C5A2, 0xDE },
+		{ 0x00C5A3, 0xFE },
+		{ 0x00C5A4, 0xAB },
+		{ 0x00C5A5, 0xBB },
+		{ 0x00C5AE, 0xD9 },
+		{ 0x00C5AF, 0xF9 },
+		{ 0x00C5B0, 0xDB },
+		{ 0x00C5B1, 0xFB },
+		{ 0x00C5B9, 0xAC },
+		{ 0x00C5BA, 0xBC },
+		{ 0x00C5BB, 0xAF },
+		{ 0x00C5BC, 0xBF },
+		{ 0x00C5BD, 0xAE },
+		{ 0x00C5BE, 0xBE },
+		{ 0x00CB87, 0xB7 },
+		{ 0x00CB98, 0xA2 },
+		{ 0x00CB99, 0xFF },
+		{ 0x00CB9B, 0xB2 },
+		{ 0x00CB9D, 0xBD },
+	},
+	{	/* UTF-8 -> ISO 8859-3 */
+		{ 0x00C280, 0x80 },
+		{ 0x00C281, 0x81 },
+		{ 0x00C282, 0x82 },
+		{ 0x00C283, 0x83 },
+		{ 0x00C284, 0x84 },
+		{ 0x00C285, 0x85 },
+		{ 0x00C286, 0x86 },
+		{ 0x00C287, 0x87 },
+		{ 0x00C288, 0x88 },
+		{ 0x00C289, 0x89 },
+		{ 0x00C28A, 0x8A },
+		{ 0x00C28B, 0x8B },
+		{ 0x00C28C, 0x8C },
+		{ 0x00C28D, 0x8D },
+		{ 0x00C28E, 0x8E },
+		{ 0x00C28F, 0x8F },
+		{ 0x00C290, 0x90 },
+		{ 0x00C291, 0x91 },
+		{ 0x00C292, 0x92 },
+		{ 0x00C293, 0x93 },
+		{ 0x00C294, 0x94 },
+		{ 0x00C295, 0x95 },
+		{ 0x00C296, 0x96 },
+		{ 0x00C297, 0x97 },
+		{ 0x00C298, 0x98 },
+		{ 0x00C299, 0x99 },
+		{ 0x00C29A, 0x9A },
+		{ 0x00C29B, 0x9B },
+		{ 0x00C29C, 0x9C },
+		{ 0x00C29D, 0x9D },
+		{ 0x00C29E, 0x9E },
+		{ 0x00C29F, 0x9F },
+		{ 0x00C2A0, 0xA0 },
+		{ 0x00C2A3, 0xA3 },
+		{ 0x00C2A4, 0xA4 },
+		{ 0x00C2A7, 0xA7 },
+		{ 0x00C2A8, 0xA8 },
+		{ 0x00C2AD, 0xAD },
+		{ 0x00C2B0, 0xB0 },
+		{ 0x00C2B2, 0xB2 },
+		{ 0x00C2B3, 0xB3 },
+		{ 0x00C2B4, 0xB4 },
+		{ 0x00C2B5, 0xB5 },
+		{ 0x00C2B7, 0xB7 },
+		{ 0x00C2B8, 0xB8 },
+		{ 0x00C2BD, 0xBD },
+		{ 0x00C380, 0xC0 },
+		{ 0x00C381, 0xC1 },
+		{ 0x00C382, 0xC2 },
+		{ 0x00C384, 0xC4 },
+		{ 0x00C387, 0xC7 },
+		{ 0x00C388, 0xC8 },
+		{ 0x00C389, 0xC9 },
+		{ 0x00C38A, 0xCA },
+		{ 0x00C38B, 0xCB },
+		{ 0x00C38C, 0xCC },
+		{ 0x00C38D, 0xCD },
+		{ 0x00C38E, 0xCE },
+		{ 0x00C38F, 0xCF },
+		{ 0x00C391, 0xD1 },
+		{ 0x00C392, 0xD2 },
+		{ 0x00C393, 0xD3 },
+		{ 0x00C394, 0xD4 },
+		{ 0x00C396, 0xD6 },
+		{ 0x00C397, 0xD7 },
+		{ 0x00C399, 0xD9 },
+		{ 0x00C39A, 0xDA },
+		{ 0x00C39B, 0xDB },
+		{ 0x00C39C, 0xDC },
+		{ 0x00C39F, 0xDF },
+		{ 0x00C3A0, 0xE0 },
+		{ 0x00C3A1, 0xE1 },
+		{ 0x00C3A2, 0xE2 },
+		{ 0x00C3A4, 0xE4 },
+		{ 0x00C3A7, 0xE7 },
+		{ 0x00C3A8, 0xE8 },
+		{ 0x00C3A9, 0xE9 },
+		{ 0x00C3AA, 0xEA },
+		{ 0x00C3AB, 0xEB },
+		{ 0x00C3AC, 0xEC },
+		{ 0x00C3AD, 0xED },
+		{ 0x00C3AE, 0xEE },
+		{ 0x00C3AF, 0xEF },
+		{ 0x00C3B1, 0xF1 },
+		{ 0x00C3B2, 0xF2 },
+		{ 0x00C3B3, 0xF3 },
+		{ 0x00C3B4, 0xF4 },
+		{ 0x00C3B6, 0xF6 },
+		{ 0x00C3B7, 0xF7 },
+		{ 0x00C3B9, 0xF9 },
+		{ 0x00C3BA, 0xFA },
+		{ 0x00C3BB, 0xFB },
+		{ 0x00C3BC, 0xFC },
+		{ 0x00C488, 0xC6 },
+		{ 0x00C489, 0xE6 },
+		{ 0x00C48A, 0xC5 },
+		{ 0x00C48B, 0xE5 },
+		{ 0x00C49C, 0xD8 },
+		{ 0x00C49D, 0xF8 },
+		{ 0x00C49E, 0xAB },
+		{ 0x00C49F, 0xBB },
+		{ 0x00C4A0, 0xD5 },
+		{ 0x00C4A1, 0xF5 },
+		{ 0x00C4A4, 0xA6 },
+		{ 0x00C4A5, 0xB6 },
+		{ 0x00C4A6, 0xA1 },
+		{ 0x00C4A7, 0xB1 },
+		{ 0x00C4B0, 0xA9 },
+		{ 0x00C4B1, 0xB9 },
+		{ 0x00C4B4, 0xAC },
+		{ 0x00C4B5, 0xBC },
+		{ 0x00C59C, 0xDE },
+		{ 0x00C59D, 0xFE },
+		{ 0x00C59E, 0xAA },
+		{ 0x00C59F, 0xBA },
+		{ 0x00C5AC, 0xDD },
+		{ 0x00C5AD, 0xFD },
+		{ 0x00C5BB, 0xAF },
+		{ 0x00C5BC, 0xBF },
+		{ 0x00CB98, 0xA2 },
+		{ 0x00CB99, 0xFF },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+	},
+	{	/* UTF-8 -> ISO 8859-4 */
+		{ 0x00C280, 0x80 },
+		{ 0x00C281, 0x81 },
+		{ 0x00C282, 0x82 },
+		{ 0x00C283, 0x83 },
+		{ 0x00C284, 0x84 },
+		{ 0x00C285, 0x85 },
+		{ 0x00C286, 0x86 },
+		{ 0x00C287, 0x87 },
+		{ 0x00C288, 0x88 },
+		{ 0x00C289, 0x89 },
+		{ 0x00C28A, 0x8A },
+		{ 0x00C28B, 0x8B },
+		{ 0x00C28C, 0x8C },
+		{ 0x00C28D, 0x8D },
+		{ 0x00C28E, 0x8E },
+		{ 0x00C28F, 0x8F },
+		{ 0x00C290, 0x90 },
+		{ 0x00C291, 0x91 },
+		{ 0x00C292, 0x92 },
+		{ 0x00C293, 0x93 },
+		{ 0x00C294, 0x94 },
+		{ 0x00C295, 0x95 },
+		{ 0x00C296, 0x96 },
+		{ 0x00C297, 0x97 },
+		{ 0x00C298, 0x98 },
+		{ 0x00C299, 0x99 },
+		{ 0x00C29A, 0x9A },
+		{ 0x00C29B, 0x9B },
+		{ 0x00C29C, 0x9C },
+		{ 0x00C29D, 0x9D },
+		{ 0x00C29E, 0x9E },
+		{ 0x00C29F, 0x9F },
+		{ 0x00C2A0, 0xA0 },
+		{ 0x00C2A4, 0xA4 },
+		{ 0x00C2A7, 0xA7 },
+		{ 0x00C2A8, 0xA8 },
+		{ 0x00C2AD, 0xAD },
+		{ 0x00C2AF, 0xAF },
+		{ 0x00C2B0, 0xB0 },
+		{ 0x00C2B4, 0xB4 },
+		{ 0x00C2B8, 0xB8 },
+		{ 0x00C381, 0xC1 },
+		{ 0x00C382, 0xC2 },
+		{ 0x00C383, 0xC3 },
+		{ 0x00C384, 0xC4 },
+		{ 0x00C385, 0xC5 },
+		{ 0x00C386, 0xC6 },
+		{ 0x00C389, 0xC9 },
+		{ 0x00C38B, 0xCB },
+		{ 0x00C38D, 0xCD },
+		{ 0x00C38E, 0xCE },
+		{ 0x00C394, 0xD4 },
+		{ 0x00C395, 0xD5 },
+		{ 0x00C396, 0xD6 },
+		{ 0x00C397, 0xD7 },
+		{ 0x00C398, 0xD8 },
+		{ 0x00C39A, 0xDA },
+		{ 0x00C39B, 0xDB },
+		{ 0x00C39C, 0xDC },
+		{ 0x00C39F, 0xDF },
+		{ 0x00C3A1, 0xE1 },
+		{ 0x00C3A2, 0xE2 },
+		{ 0x00C3A3, 0xE3 },
+		{ 0x00C3A4, 0xE4 },
+		{ 0x00C3A5, 0xE5 },
+		{ 0x00C3A6, 0xE6 },
+		{ 0x00C3A9, 0xE9 },
+		{ 0x00C3AB, 0xEB },
+		{ 0x00C3AD, 0xED },
+		{ 0x00C3AE, 0xEE },
+		{ 0x00C3B4, 0xF4 },
+		{ 0x00C3B5, 0xF5 },
+		{ 0x00C3B6, 0xF6 },
+		{ 0x00C3B7, 0xF7 },
+		{ 0x00C3B8, 0xF8 },
+		{ 0x00C3BA, 0xFA },
+		{ 0x00C3BB, 0xFB },
+		{ 0x00C3BC, 0xFC },
+		{ 0x00C480, 0xC0 },
+		{ 0x00C481, 0xE0 },
+		{ 0x00C484, 0xA1 },
+		{ 0x00C485, 0xB1 },
+		{ 0x00C48C, 0xC8 },
+		{ 0x00C48D, 0xE8 },
+		{ 0x00C490, 0xD0 },
+		{ 0x00C491, 0xF0 },
+		{ 0x00C492, 0xAA },
+		{ 0x00C493, 0xBA },
+		{ 0x00C496, 0xCC },
+		{ 0x00C497, 0xEC },
+		{ 0x00C498, 0xCA },
+		{ 0x00C499, 0xEA },
+		{ 0x00C4A2, 0xAB },
+		{ 0x00C4A3, 0xBB },
+		{ 0x00C4A8, 0xA5 },
+		{ 0x00C4A9, 0xB5 },
+		{ 0x00C4AA, 0xCF },
+		{ 0x00C4AB, 0xEF },
+		{ 0x00C4AE, 0xC7 },
+		{ 0x00C4AF, 0xE7 },
+		{ 0x00C4B6, 0xD3 },
+		{ 0x00C4B7, 0xF3 },
+		{ 0x00C4B8, 0xA2 },
+		{ 0x00C4BB, 0xA6 },
+		{ 0x00C4BC, 0xB6 },
+		{ 0x00C585, 0xD1 },
+		{ 0x00C586, 0xF1 },
+		{ 0x00C58A, 0xBD },
+		{ 0x00C58B, 0xBF },
+		{ 0x00C58C, 0xD2 },
+		{ 0x00C58D, 0xF2 },
+		{ 0x00C596, 0xA3 },
+		{ 0x00C597, 0xB3 },
+		{ 0x00C5A0, 0xA9 },
+		{ 0x00C5A1, 0xB9 },
+		{ 0x00C5A6, 0xAC },
+		{ 0x00C5A7, 0xBC },
+		{ 0x00C5A8, 0xDD },
+		{ 0x00C5A9, 0xFD },
+		{ 0x00C5AA, 0xDE },
+		{ 0x00C5AB, 0xFE },
+		{ 0x00C5B2, 0xD9 },
+		{ 0x00C5B3, 0xF9 },
+		{ 0x00C5BD, 0xAE },
+		{ 0x00C5BE, 0xBE },
+		{ 0x00CB87, 0xB7 },
+		{ 0x00CB99, 0xFF },
+		{ 0x00CB9B, 0xB2 },
+	},
+	{	/* UTF-8 -> ISO 8859-5 */
+		{ 0x00C280, 0x80 },
+		{ 0x00C281, 0x81 },
+		{ 0x00C282, 0x82 },
+		{ 0x00C283, 0x83 },
+		{ 0x00C284, 0x84 },
+		{ 0x00C285, 0x85 },
+		{ 0x00C286, 0x86 },
+		{ 0x00C287, 0x87 },
+		{ 0x00C288, 0x88 },
+		{ 0x00C289, 0x89 },
+		{ 0x00C28A, 0x8A },
+		{ 0x00C28B, 0x8B },
+		{ 0x00C28C, 0x8C },
+		{ 0x00C28D, 0x8D },
+		{ 0x00C28E, 0x8E },
+		{ 0x00C28F, 0x8F },
+		{ 0x00C290, 0x90 },
+		{ 0x00C291, 0x91 },
+		{ 0x00C292, 0x92 },
+		{ 0x00C293, 0x93 },
+		{ 0x00C294, 0x94 },
+		{ 0x00C295, 0x95 },
+		{ 0x00C296, 0x96 },
+		{ 0x00C297, 0x97 },
+		{ 0x00C298, 0x98 },
+		{ 0x00C299, 0x99 },
+		{ 0x00C29A, 0x9A },
+		{ 0x00C29B, 0x9B },
+		{ 0x00C29C, 0x9C },
+		{ 0x00C29D, 0x9D },
+		{ 0x00C29E, 0x9E },
+		{ 0x00C29F, 0x9F },
+		{ 0x00C2A0, 0xA0 },
+		{ 0x00C2A7, 0xFD },
+		{ 0x00C2AD, 0xAD },
+		{ 0x00D081, 0xA1 },
+		{ 0x00D082, 0xA2 },
+		{ 0x00D083, 0xA3 },
+		{ 0x00D084, 0xA4 },
+		{ 0x00D085, 0xA5 },
+		{ 0x00D086, 0xA6 },
+		{ 0x00D087, 0xA7 },
+		{ 0x00D088, 0xA8 },
+		{ 0x00D089, 0xA9 },
+		{ 0x00D08A, 0xAA },
+		{ 0x00D08B, 0xAB },
+		{ 0x00D08C, 0xAC },
+		{ 0x00D08E, 0xAE },
+		{ 0x00D08F, 0xAF },
+		{ 0x00D090, 0xB0 },
+		{ 0x00D091, 0xB1 },
+		{ 0x00D092, 0xB2 },
+		{ 0x00D093, 0xB3 },
+		{ 0x00D094, 0xB4 },
+		{ 0x00D095, 0xB5 },
+		{ 0x00D096, 0xB6 },
+		{ 0x00D097, 0xB7 },
+		{ 0x00D098, 0xB8 },
+		{ 0x00D099, 0xB9 },
+		{ 0x00D09A, 0xBA },
+		{ 0x00D09B, 0xBB },
+		{ 0x00D09C, 0xBC },
+		{ 0x00D09D, 0xBD },
+		{ 0x00D09E, 0xBE },
+		{ 0x00D09F, 0xBF },
+		{ 0x00D0A0, 0xC0 },
+		{ 0x00D0A1, 0xC1 },
+		{ 0x00D0A2, 0xC2 },
+		{ 0x00D0A3, 0xC3 },
+		{ 0x00D0A4, 0xC4 },
+		{ 0x00D0A5, 0xC5 },
+		{ 0x00D0A6, 0xC6 },
+		{ 0x00D0A7, 0xC7 },
+		{ 0x00D0A8, 0xC8 },
+		{ 0x00D0A9, 0xC9 },
+		{ 0x00D0AA, 0xCA },
+		{ 0x00D0AB, 0xCB },
+		{ 0x00D0AC, 0xCC },
+		{ 0x00D0AD, 0xCD },
+		{ 0x00D0AE, 0xCE },
+		{ 0x00D0AF, 0xCF },
+		{ 0x00D0B0, 0xD0 },
+		{ 0x00D0B1, 0xD1 },
+		{ 0x00D0B2, 0xD2 },
+		{ 0x00D0B3, 0xD3 },
+		{ 0x00D0B4, 0xD4 },
+		{ 0x00D0B5, 0xD5 },
+		{ 0x00D0B6, 0xD6 },
+		{ 0x00D0B7, 0xD7 },
+		{ 0x00D0B8, 0xD8 },
+		{ 0x00D0B9, 0xD9 },
+		{ 0x00D0BA, 0xDA },
+		{ 0x00D0BB, 0xDB },
+		{ 0x00D0BC, 0xDC },
+		{ 0x00D0BD, 0xDD },
+		{ 0x00D0BE, 0xDE },
+		{ 0x00D0BF, 0xDF },
+		{ 0x00D180, 0xE0 },
+		{ 0x00D181, 0xE1 },
+		{ 0x00D182, 0xE2 },
+		{ 0x00D183, 0xE3 },
+		{ 0x00D184, 0xE4 },
+		{ 0x00D185, 0xE5 },
+		{ 0x00D186, 0xE6 },
+		{ 0x00D187, 0xE7 },
+		{ 0x00D188, 0xE8 },
+		{ 0x00D189, 0xE9 },
+		{ 0x00D18A, 0xEA },
+		{ 0x00D18B, 0xEB },
+		{ 0x00D18C, 0xEC },
+		{ 0x00D18D, 0xED },
+		{ 0x00D18E, 0xEE },
+		{ 0x00D18F, 0xEF },
+		{ 0x00D191, 0xF1 },
+		{ 0x00D192, 0xF2 },
+		{ 0x00D193, 0xF3 },
+		{ 0x00D194, 0xF4 },
+		{ 0x00D195, 0xF5 },
+		{ 0x00D196, 0xF6 },
+		{ 0x00D197, 0xF7 },
+		{ 0x00D198, 0xF8 },
+		{ 0x00D199, 0xF9 },
+		{ 0x00D19A, 0xFA },
+		{ 0x00D19B, 0xFB },
+		{ 0x00D19C, 0xFC },
+		{ 0x00D19E, 0xFE },
+		{ 0x00D19F, 0xFF },
+		{ 0xE28496, 0xF0 },
+	},
+	{	/* UTF-8 -> ISO 8859-6 */
+		{ 0x00C280, 0x80 },
+		{ 0x00C281, 0x81 },
+		{ 0x00C282, 0x82 },
+		{ 0x00C283, 0x83 },
+		{ 0x00C284, 0x84 },
+		{ 0x00C285, 0x85 },
+		{ 0x00C286, 0x86 },
+		{ 0x00C287, 0x87 },
+		{ 0x00C288, 0x88 },
+		{ 0x00C289, 0x89 },
+		{ 0x00C28A, 0x8A },
+		{ 0x00C28B, 0x8B },
+		{ 0x00C28C, 0x8C },
+		{ 0x00C28D, 0x8D },
+		{ 0x00C28E, 0x8E },
+		{ 0x00C28F, 0x8F },
+		{ 0x00C290, 0x90 },
+		{ 0x00C291, 0x91 },
+		{ 0x00C292, 0x92 },
+		{ 0x00C293, 0x93 },
+		{ 0x00C294, 0x94 },
+		{ 0x00C295, 0x95 },
+		{ 0x00C296, 0x96 },
+		{ 0x00C297, 0x97 },
+		{ 0x00C298, 0x98 },
+		{ 0x00C299, 0x99 },
+		{ 0x00C29A, 0x9A },
+		{ 0x00C29B, 0x9B },
+		{ 0x00C29C, 0x9C },
+		{ 0x00C29D, 0x9D },
+		{ 0x00C29E, 0x9E },
+		{ 0x00C29F, 0x9F },
+		{ 0x00C2A0, 0xA0 },
+		{ 0x00C2A4, 0xA4 },
+		{ 0x00C2AD, 0xAD },
+		{ 0x00D88C, 0xAC },
+		{ 0x00D89B, 0xBB },
+		{ 0x00D89F, 0xBF },
+		{ 0x00D8A1, 0xC1 },
+		{ 0x00D8A2, 0xC2 },
+		{ 0x00D8A3, 0xC3 },
+		{ 0x00D8A4, 0xC4 },
+		{ 0x00D8A5, 0xC5 },
+		{ 0x00D8A6, 0xC6 },
+		{ 0x00D8A7, 0xC7 },
+		{ 0x00D8A8, 0xC8 },
+		{ 0x00D8A9, 0xC9 },
+		{ 0x00D8AA, 0xCA },
+		{ 0x00D8AB, 0xCB },
+		{ 0x00D8AC, 0xCC },
+		{ 0x00D8AD, 0xCD },
+		{ 0x00D8AE, 0xCE },
+		{ 0x00D8AF, 0xCF },
+		{ 0x00D8B0, 0xD0 },
+		{ 0x00D8B1, 0xD1 },
+		{ 0x00D8B2, 0xD2 },
+		{ 0x00D8B3, 0xD3 },
+		{ 0x00D8B4, 0xD4 },
+		{ 0x00D8B5, 0xD5 },
+		{ 0x00D8B6, 0xD6 },
+		{ 0x00D8B7, 0xD7 },
+		{ 0x00D8B8, 0xD8 },
+		{ 0x00D8B9, 0xD9 },
+		{ 0x00D8BA, 0xDA },
+		{ 0x00D980, 0xE0 },
+		{ 0x00D981, 0xE1 },
+		{ 0x00D982, 0xE2 },
+		{ 0x00D983, 0xE3 },
+		{ 0x00D984, 0xE4 },
+		{ 0x00D985, 0xE5 },
+		{ 0x00D986, 0xE6 },
+		{ 0x00D987, 0xE7 },
+		{ 0x00D988, 0xE8 },
+		{ 0x00D989, 0xE9 },
+		{ 0x00D98A, 0xEA },
+		{ 0x00D98B, 0xEB },
+		{ 0x00D98C, 0xEC },
+		{ 0x00D98D, 0xED },
+		{ 0x00D98E, 0xEE },
+		{ 0x00D98F, 0xEF },
+		{ 0x00D990, 0xF0 },
+		{ 0x00D991, 0xF1 },
+		{ 0x00D992, 0xF2 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+	},
+	{	/* UTF-8 -> ISO 8859-7 */
+		{ 0x00C280, 0x80 },
+		{ 0x00C281, 0x81 },
+		{ 0x00C282, 0x82 },
+		{ 0x00C283, 0x83 },
+		{ 0x00C284, 0x84 },
+		{ 0x00C285, 0x85 },
+		{ 0x00C286, 0x86 },
+		{ 0x00C287, 0x87 },
+		{ 0x00C288, 0x88 },
+		{ 0x00C289, 0x89 },
+		{ 0x00C28A, 0x8A },
+		{ 0x00C28B, 0x8B },
+		{ 0x00C28C, 0x8C },
+		{ 0x00C28D, 0x8D },
+		{ 0x00C28E, 0x8E },
+		{ 0x00C28F, 0x8F },
+		{ 0x00C290, 0x90 },
+		{ 0x00C291, 0x91 },
+		{ 0x00C292, 0x92 },
+		{ 0x00C293, 0x93 },
+		{ 0x00C294, 0x94 },
+		{ 0x00C295, 0x95 },
+		{ 0x00C296, 0x96 },
+		{ 0x00C297, 0x97 },
+		{ 0x00C298, 0x98 },
+		{ 0x00C299, 0x99 },
+		{ 0x00C29A, 0x9A },
+		{ 0x00C29B, 0x9B },
+		{ 0x00C29C, 0x9C },
+		{ 0x00C29D, 0x9D },
+		{ 0x00C29E, 0x9E },
+		{ 0x00C29F, 0x9F },
+		{ 0x00C2A0, 0xA0 },
+		{ 0x00C2A3, 0xA3 },
+		{ 0x00C2A6, 0xA6 },
+		{ 0x00C2A7, 0xA7 },
+		{ 0x00C2A8, 0xA8 },
+		{ 0x00C2A9, 0xA9 },
+		{ 0x00C2AB, 0xAB },
+		{ 0x00C2AC, 0xAC },
+		{ 0x00C2AD, 0xAD },
+		{ 0x00C2B0, 0xB0 },
+		{ 0x00C2B1, 0xB1 },
+		{ 0x00C2B2, 0xB2 },
+		{ 0x00C2B3, 0xB3 },
+		{ 0x00C2B7, 0xB7 },
+		{ 0x00C2BB, 0xBB },
+		{ 0x00C2BD, 0xBD },
+		{ 0x00CABC, 0xA2 },
+		{ 0x00CABD, 0xA1 },
+		{ 0x00CE84, 0xB4 },
+		{ 0x00CE85, 0xB5 },
+		{ 0x00CE86, 0xB6 },
+		{ 0x00CE88, 0xB8 },
+		{ 0x00CE89, 0xB9 },
+		{ 0x00CE8A, 0xBA },
+		{ 0x00CE8C, 0xBC },
+		{ 0x00CE8E, 0xBE },
+		{ 0x00CE8F, 0xBF },
+		{ 0x00CE90, 0xC0 },
+		{ 0x00CE91, 0xC1 },
+		{ 0x00CE92, 0xC2 },
+		{ 0x00CE93, 0xC3 },
+		{ 0x00CE94, 0xC4 },
+		{ 0x00CE95, 0xC5 },
+		{ 0x00CE96, 0xC6 },
+		{ 0x00CE97, 0xC7 },
+		{ 0x00CE98, 0xC8 },
+		{ 0x00CE99, 0xC9 },
+		{ 0x00CE9A, 0xCA },
+		{ 0x00CE9B, 0xCB },
+		{ 0x00CE9C, 0xCC },
+		{ 0x00CE9D, 0xCD },
+		{ 0x00CE9E, 0xCE },
+		{ 0x00CE9F, 0xCF },
+		{ 0x00CEA0, 0xD0 },
+		{ 0x00CEA1, 0xD1 },
+		{ 0x00CEA3, 0xD3 },
+		{ 0x00CEA4, 0xD4 },
+		{ 0x00CEA5, 0xD5 },
+		{ 0x00CEA6, 0xD6 },
+		{ 0x00CEA7, 0xD7 },
+		{ 0x00CEA8, 0xD8 },
+		{ 0x00CEA9, 0xD9 },
+		{ 0x00CEAA, 0xDA },
+		{ 0x00CEAB, 0xDB },
+		{ 0x00CEAC, 0xDC },
+		{ 0x00CEAD, 0xDD },
+		{ 0x00CEAE, 0xDE },
+		{ 0x00CEAF, 0xDF },
+		{ 0x00CEB0, 0xE0 },
+		{ 0x00CEB1, 0xE1 },
+		{ 0x00CEB2, 0xE2 },
+		{ 0x00CEB3, 0xE3 },
+		{ 0x00CEB4, 0xE4 },
+		{ 0x00CEB5, 0xE5 },
+		{ 0x00CEB6, 0xE6 },
+		{ 0x00CEB7, 0xE7 },
+		{ 0x00CEB8, 0xE8 },
+		{ 0x00CEB9, 0xE9 },
+		{ 0x00CEBA, 0xEA },
+		{ 0x00CEBB, 0xEB },
+		{ 0x00CEBC, 0xEC },
+		{ 0x00CEBD, 0xED },
+		{ 0x00CEBE, 0xEE },
+		{ 0x00CEBF, 0xEF },
+		{ 0x00CF80, 0xF0 },
+		{ 0x00CF81, 0xF1 },
+		{ 0x00CF82, 0xF2 },
+		{ 0x00CF83, 0xF3 },
+		{ 0x00CF84, 0xF4 },
+		{ 0x00CF85, 0xF5 },
+		{ 0x00CF86, 0xF6 },
+		{ 0x00CF87, 0xF7 },
+		{ 0x00CF88, 0xF8 },
+		{ 0x00CF89, 0xF9 },
+		{ 0x00CF8A, 0xFA },
+		{ 0x00CF8B, 0xFB },
+		{ 0x00CF8C, 0xFC },
+		{ 0x00CF8D, 0xFD },
+		{ 0x00CF8E, 0xFE },
+		{ 0xE28095, 0xAF },
+		{ 0xE28098, 0xA1 },
+		{ 0xE28099, 0xA2 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+	},
+	{	/* UTF-8 -> ISO 8859-8 */
+		{ 0x00C280, 0x80 },
+		{ 0x00C281, 0x81 },
+		{ 0x00C282, 0x82 },
+		{ 0x00C283, 0x83 },
+		{ 0x00C284, 0x84 },
+		{ 0x00C285, 0x85 },
+		{ 0x00C286, 0x86 },
+		{ 0x00C287, 0x87 },
+		{ 0x00C288, 0x88 },
+		{ 0x00C289, 0x89 },
+		{ 0x00C28A, 0x8A },
+		{ 0x00C28B, 0x8B },
+		{ 0x00C28C, 0x8C },
+		{ 0x00C28D, 0x8D },
+		{ 0x00C28E, 0x8E },
+		{ 0x00C28F, 0x8F },
+		{ 0x00C290, 0x90 },
+		{ 0x00C291, 0x91 },
+		{ 0x00C292, 0x92 },
+		{ 0x00C293, 0x93 },
+		{ 0x00C294, 0x94 },
+		{ 0x00C295, 0x95 },
+		{ 0x00C296, 0x96 },
+		{ 0x00C297, 0x97 },
+		{ 0x00C298, 0x98 },
+		{ 0x00C299, 0x99 },
+		{ 0x00C29A, 0x9A },
+		{ 0x00C29B, 0x9B },
+		{ 0x00C29C, 0x9C },
+		{ 0x00C29D, 0x9D },
+		{ 0x00C29E, 0x9E },
+		{ 0x00C29F, 0x9F },
+		{ 0x00C2A0, 0xA0 },
+		{ 0x00C2A2, 0xA2 },
+		{ 0x00C2A3, 0xA3 },
+		{ 0x00C2A4, 0xA4 },
+		{ 0x00C2A5, 0xA5 },
+		{ 0x00C2A6, 0xA6 },
+		{ 0x00C2A7, 0xA7 },
+		{ 0x00C2A8, 0xA8 },
+		{ 0x00C2A9, 0xA9 },
+		{ 0x00C2AB, 0xAB },
+		{ 0x00C2AC, 0xAC },
+		{ 0x00C2AD, 0xAD },
+		{ 0x00C2AE, 0xAE },
+		{ 0x00C2AF, 0xAF },
+		{ 0x00C2B0, 0xB0 },
+		{ 0x00C2B1, 0xB1 },
+		{ 0x00C2B2, 0xB2 },
+		{ 0x00C2B3, 0xB3 },
+		{ 0x00C2B4, 0xB4 },
+		{ 0x00C2B5, 0xB5 },
+		{ 0x00C2B6, 0xB6 },
+		{ 0x00C2B7, 0xB7 },
+		{ 0x00C2B8, 0xB8 },
+		{ 0x00C2B9, 0xB9 },
+		{ 0x00C2BB, 0xBB },
+		{ 0x00C2BC, 0xBC },
+		{ 0x00C2BD, 0xBD },
+		{ 0x00C2BE, 0xBE },
+		{ 0x00C397, 0xAA },
+		{ 0x00C3B7, 0xBA },
+		{ 0x00D790, 0xE0 },
+		{ 0x00D791, 0xE1 },
+		{ 0x00D792, 0xE2 },
+		{ 0x00D793, 0xE3 },
+		{ 0x00D794, 0xE4 },
+		{ 0x00D795, 0xE5 },
+		{ 0x00D796, 0xE6 },
+		{ 0x00D797, 0xE7 },
+		{ 0x00D798, 0xE8 },
+		{ 0x00D799, 0xE9 },
+		{ 0x00D79A, 0xEA },
+		{ 0x00D79B, 0xEB },
+		{ 0x00D79C, 0xEC },
+		{ 0x00D79D, 0xED },
+		{ 0x00D79E, 0xEE },
+		{ 0x00D79F, 0xEF },
+		{ 0x00D7A0, 0xF0 },
+		{ 0x00D7A1, 0xF1 },
+		{ 0x00D7A2, 0xF2 },
+		{ 0x00D7A3, 0xF3 },
+		{ 0x00D7A4, 0xF4 },
+		{ 0x00D7A5, 0xF5 },
+		{ 0x00D7A6, 0xF6 },
+		{ 0x00D7A7, 0xF7 },
+		{ 0x00D7A8, 0xF8 },
+		{ 0x00D7A9, 0xF9 },
+		{ 0x00D7AA, 0xFA },
+		{ 0xE2808E, 0xFD },
+		{ 0xE2808F, 0xFE },
+		{ 0xE28097, 0xDF },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+	},
+	{	/* UTF-8 -> ISO 8859-9 */
+		{ 0x00C280, 0x80 },
+		{ 0x00C281, 0x81 },
+		{ 0x00C282, 0x82 },
+		{ 0x00C283, 0x83 },
+		{ 0x00C284, 0x84 },
+		{ 0x00C285, 0x85 },
+		{ 0x00C286, 0x86 },
+		{ 0x00C287, 0x87 },
+		{ 0x00C288, 0x88 },
+		{ 0x00C289, 0x89 },
+		{ 0x00C28A, 0x8A },
+		{ 0x00C28B, 0x8B },
+		{ 0x00C28C, 0x8C },
+		{ 0x00C28D, 0x8D },
+		{ 0x00C28E, 0x8E },
+		{ 0x00C28F, 0x8F },
+		{ 0x00C290, 0x90 },
+		{ 0x00C291, 0x91 },
+		{ 0x00C292, 0x92 },
+		{ 0x00C293, 0x93 },
+		{ 0x00C294, 0x94 },
+		{ 0x00C295, 0x95 },
+		{ 0x00C296, 0x96 },
+		{ 0x00C297, 0x97 },
+		{ 0x00C298, 0x98 },
+		{ 0x00C299, 0x99 },
+		{ 0x00C29A, 0x9A },
+		{ 0x00C29B, 0x9B },
+		{ 0x00C29C, 0x9C },
+		{ 0x00C29D, 0x9D },
+		{ 0x00C29E, 0x9E },
+		{ 0x00C29F, 0x9F },
+		{ 0x00C2A0, 0xA0 },
+		{ 0x00C2A1, 0xA1 },
+		{ 0x00C2A2, 0xA2 },
+		{ 0x00C2A3, 0xA3 },
+		{ 0x00C2A4, 0xA4 },
+		{ 0x00C2A5, 0xA5 },
+		{ 0x00C2A6, 0xA6 },
+		{ 0x00C2A7, 0xA7 },
+		{ 0x00C2A8, 0xA8 },
+		{ 0x00C2A9, 0xA9 },
+		{ 0x00C2AA, 0xAA },
+		{ 0x00C2AB, 0xAB },
+		{ 0x00C2AC, 0xAC },
+		{ 0x00C2AD, 0xAD },
+		{ 0x00C2AE, 0xAE },
+		{ 0x00C2AF, 0xAF },
+		{ 0x00C2B0, 0xB0 },
+		{ 0x00C2B1, 0xB1 },
+		{ 0x00C2B2, 0xB2 },
+		{ 0x00C2B3, 0xB3 },
+		{ 0x00C2B4, 0xB4 },
+		{ 0x00C2B5, 0xB5 },
+		{ 0x00C2B6, 0xB6 },
+		{ 0x00C2B7, 0xB7 },
+		{ 0x00C2B8, 0xB8 },
+		{ 0x00C2B9, 0xB9 },
+		{ 0x00C2BA, 0xBA },
+		{ 0x00C2BB, 0xBB },
+		{ 0x00C2BC, 0xBC },
+		{ 0x00C2BD, 0xBD },
+		{ 0x00C2BE, 0xBE },
+		{ 0x00C2BF, 0xBF },
+		{ 0x00C380, 0xC0 },
+		{ 0x00C381, 0xC1 },
+		{ 0x00C382, 0xC2 },
+		{ 0x00C383, 0xC3 },
+		{ 0x00C384, 0xC4 },
+		{ 0x00C385, 0xC5 },
+		{ 0x00C386, 0xC6 },
+		{ 0x00C387, 0xC7 },
+		{ 0x00C388, 0xC8 },
+		{ 0x00C389, 0xC9 },
+		{ 0x00C38A, 0xCA },
+		{ 0x00C38B, 0xCB },
+		{ 0x00C38C, 0xCC },
+		{ 0x00C38D, 0xCD },
+		{ 0x00C38E, 0xCE },
+		{ 0x00C38F, 0xCF },
+		{ 0x00C391, 0xD1 },
+		{ 0x00C392, 0xD2 },
+		{ 0x00C393, 0xD3 },
+		{ 0x00C394, 0xD4 },
+		{ 0x00C395, 0xD5 },
+		{ 0x00C396, 0xD6 },
+		{ 0x00C397, 0xD7 },
+		{ 0x00C398, 0xD8 },
+		{ 0x00C399, 0xD9 },
+		{ 0x00C39A, 0xDA },
+		{ 0x00C39B, 0xDB },
+		{ 0x00C39C, 0xDC },
+		{ 0x00C39F, 0xDF },
+		{ 0x00C3A0, 0xE0 },
+		{ 0x00C3A1, 0xE1 },
+		{ 0x00C3A2, 0xE2 },
+		{ 0x00C3A3, 0xE3 },
+		{ 0x00C3A4, 0xE4 },
+		{ 0x00C3A5, 0xE5 },
+		{ 0x00C3A6, 0xE6 },
+		{ 0x00C3A7, 0xE7 },
+		{ 0x00C3A8, 0xE8 },
+		{ 0x00C3A9, 0xE9 },
+		{ 0x00C3AA, 0xEA },
+		{ 0x00C3AB, 0xEB },
+		{ 0x00C3AC, 0xEC },
+		{ 0x00C3AD, 0xED },
+		{ 0x00C3AE, 0xEE },
+		{ 0x00C3AF, 0xEF },
+		{ 0x00C3B1, 0xF1 },
+		{ 0x00C3B2, 0xF2 },
+		{ 0x00C3B3, 0xF3 },
+		{ 0x00C3B4, 0xF4 },
+		{ 0x00C3B5, 0xF5 },
+		{ 0x00C3B6, 0xF6 },
+		{ 0x00C3B7, 0xF7 },
+		{ 0x00C3B8, 0xF8 },
+		{ 0x00C3B9, 0xF9 },
+		{ 0x00C3BA, 0xFA },
+		{ 0x00C3BB, 0xFB },
+		{ 0x00C3BC, 0xFC },
+		{ 0x00C3BF, 0xFF },
+		{ 0x00C49E, 0xD0 },
+		{ 0x00C49F, 0xF0 },
+		{ 0x00C4B0, 0xDD },
+		{ 0x00C4B1, 0xFD },
+		{ 0x00C59E, 0xDE },
+		{ 0x00C59F, 0xFE },
+	},
+	{	/* UTF-8 -> ISO 8859-10 */
+		{ 0x00C280, 0x80 },
+		{ 0x00C281, 0x81 },
+		{ 0x00C282, 0x82 },
+		{ 0x00C283, 0x83 },
+		{ 0x00C284, 0x84 },
+		{ 0x00C285, 0x85 },
+		{ 0x00C286, 0x86 },
+		{ 0x00C287, 0x87 },
+		{ 0x00C288, 0x88 },
+		{ 0x00C289, 0x89 },
+		{ 0x00C28A, 0x8A },
+		{ 0x00C28B, 0x8B },
+		{ 0x00C28C, 0x8C },
+		{ 0x00C28D, 0x8D },
+		{ 0x00C28E, 0x8E },
+		{ 0x00C28F, 0x8F },
+		{ 0x00C290, 0x90 },
+		{ 0x00C291, 0x91 },
+		{ 0x00C292, 0x92 },
+		{ 0x00C293, 0x93 },
+		{ 0x00C294, 0x94 },
+		{ 0x00C295, 0x95 },
+		{ 0x00C296, 0x96 },
+		{ 0x00C297, 0x97 },
+		{ 0x00C298, 0x98 },
+		{ 0x00C299, 0x99 },
+		{ 0x00C29A, 0x9A },
+		{ 0x00C29B, 0x9B },
+		{ 0x00C29C, 0x9C },
+		{ 0x00C29D, 0x9D },
+		{ 0x00C29E, 0x9E },
+		{ 0x00C29F, 0x9F },
+		{ 0x00C2A0, 0xA0 },
+		{ 0x00C2A7, 0xA7 },
+		{ 0x00C2AD, 0xAD },
+		{ 0x00C2B0, 0xB0 },
+		{ 0x00C2B7, 0xB7 },
+		{ 0x00C381, 0xC1 },
+		{ 0x00C382, 0xC2 },
+		{ 0x00C383, 0xC3 },
+		{ 0x00C384, 0xC4 },
+		{ 0x00C385, 0xC5 },
+		{ 0x00C386, 0xC6 },
+		{ 0x00C389, 0xC9 },
+		{ 0x00C38B, 0xCB },
+		{ 0x00C38D, 0xCD },
+		{ 0x00C38E, 0xCE },
+		{ 0x00C38F, 0xCF },
+		{ 0x00C390, 0xD0 },
+		{ 0x00C393, 0xD3 },
+		{ 0x00C394, 0xD4 },
+		{ 0x00C395, 0xD5 },
+		{ 0x00C396, 0xD6 },
+		{ 0x00C398, 0xD8 },
+		{ 0x00C39A, 0xDA },
+		{ 0x00C39B, 0xDB },
+		{ 0x00C39C, 0xDC },
+		{ 0x00C39D, 0xDD },
+		{ 0x00C39E, 0xDE },
+		{ 0x00C39F, 0xDF },
+		{ 0x00C3A1, 0xE1 },
+		{ 0x00C3A2, 0xE2 },
+		{ 0x00C3A3, 0xE3 },
+		{ 0x00C3A4, 0xE4 },
+		{ 0x00C3A5, 0xE5 },
+		{ 0x00C3A6, 0xE6 },
+		{ 0x00C3A9, 0xE9 },
+		{ 0x00C3AB, 0xEB },
+		{ 0x00C3AD, 0xED },
+		{ 0x00C3AE, 0xEE },
+		{ 0x00C3AF, 0xEF },
+		{ 0x00C3B0, 0xF0 },
+		{ 0x00C3B3, 0xF3 },
+		{ 0x00C3B4, 0xF4 },
+		{ 0x00C3B5, 0xF5 },
+		{ 0x00C3B6, 0xF6 },
+		{ 0x00C3B8, 0xF8 },
+		{ 0x00C3BA, 0xFA },
+		{ 0x00C3BB, 0xFB },
+		{ 0x00C3BC, 0xFC },
+		{ 0x00C3BD, 0xFD },
+		{ 0x00C3BE, 0xFE },
+		{ 0x00C480, 0xC0 },
+		{ 0x00C481, 0xE0 },
+		{ 0x00C484, 0xA1 },
+		{ 0x00C485, 0xB1 },
+		{ 0x00C48C, 0xC8 },
+		{ 0x00C48D, 0xE8 },
+		{ 0x00C490, 0xA9 },
+		{ 0x00C491, 0xB9 },
+		{ 0x00C492, 0xA2 },
+		{ 0x00C493, 0xB2 },
+		{ 0x00C496, 0xCC },
+		{ 0x00C497, 0xEC },
+		{ 0x00C498, 0xCA },
+		{ 0x00C499, 0xEA },
+		{ 0x00C4A2, 0xA3 },
+		{ 0x00C4A3, 0xB3 },
+		{ 0x00C4A8, 0xA5 },
+		{ 0x00C4A9, 0xB5 },
+		{ 0x00C4AA, 0xA4 },
+		{ 0x00C4AB, 0xB4 },
+		{ 0x00C4AE, 0xC7 },
+		{ 0x00C4AF, 0xE7 },
+		{ 0x00C4B6, 0xA6 },
+		{ 0x00C4B7, 0xB6 },
+		{ 0x00C4B8, 0xFF },
+		{ 0x00C4BB, 0xA8 },
+		{ 0x00C4BC, 0xB8 },
+		{ 0x00C585, 0xD1 },
+		{ 0x00C586, 0xF1 },
+		{ 0x00C58A, 0xAF },
+		{ 0x00C58B, 0xBF },
+		{ 0x00C58C, 0xD2 },
+		{ 0x00C58D, 0xF2 },
+		{ 0x00C5A0, 0xAA },
+		{ 0x00C5A1, 0xBA },
+		{ 0x00C5A6, 0xAB },
+		{ 0x00C5A7, 0xBB },
+		{ 0x00C5A8, 0xD7 },
+		{ 0x00C5A9, 0xF7 },
+		{ 0x00C5AA, 0xAE },
+		{ 0x00C5AB, 0xBE },
+		{ 0x00C5B2, 0xD9 },
+		{ 0x00C5B3, 0xF9 },
+		{ 0x00C5BD, 0xAC },
+		{ 0x00C5BE, 0xBC },
+		{ 0xE28892, 0xBD },
+	},
+	{	/* UTF-8 -> ISO 8859-11 */
+		{ 0x00C280, 0x80 },
+		{ 0x00C281, 0x81 },
+		{ 0x00C282, 0x82 },
+		{ 0x00C283, 0x83 },
+		{ 0x00C284, 0x84 },
+		{ 0x00C285, 0x85 },
+		{ 0x00C286, 0x86 },
+		{ 0x00C287, 0x87 },
+		{ 0x00C288, 0x88 },
+		{ 0x00C289, 0x89 },
+		{ 0x00C28A, 0x8A },
+		{ 0x00C28B, 0x8B },
+		{ 0x00C28C, 0x8C },
+		{ 0x00C28D, 0x8D },
+		{ 0x00C28E, 0x8E },
+		{ 0x00C28F, 0x8F },
+		{ 0x00C290, 0x90 },
+		{ 0x00C291, 0x91 },
+		{ 0x00C292, 0x92 },
+		{ 0x00C293, 0x93 },
+		{ 0x00C294, 0x94 },
+		{ 0x00C295, 0x95 },
+		{ 0x00C296, 0x96 },
+		{ 0x00C297, 0x97 },
+		{ 0x00C298, 0x98 },
+		{ 0x00C299, 0x99 },
+		{ 0x00C29A, 0x9A },
+		{ 0x00C29B, 0x9B },
+		{ 0x00C29C, 0x9C },
+		{ 0x00C29D, 0x9D },
+		{ 0x00C29E, 0x9E },
+		{ 0x00C29F, 0x9F },
+		{ 0xE0B881, 0xA1 },
+		{ 0xE0B882, 0xA2 },
+		{ 0xE0B883, 0xA3 },
+		{ 0xE0B884, 0xA4 },
+		{ 0xE0B885, 0xA5 },
+		{ 0xE0B886, 0xA6 },
+		{ 0xE0B887, 0xA7 },
+		{ 0xE0B888, 0xA8 },
+		{ 0xE0B889, 0xA9 },
+		{ 0xE0B88A, 0xAA },
+		{ 0xE0B88B, 0xAB },
+		{ 0xE0B88C, 0xAC },
+		{ 0xE0B88D, 0xAD },
+		{ 0xE0B88E, 0xAE },
+		{ 0xE0B88F, 0xAF },
+		{ 0xE0B890, 0xB0 },
+		{ 0xE0B891, 0xB1 },
+		{ 0xE0B892, 0xB2 },
+		{ 0xE0B893, 0xB3 },
+		{ 0xE0B894, 0xB4 },
+		{ 0xE0B895, 0xB5 },
+		{ 0xE0B896, 0xB6 },
+		{ 0xE0B897, 0xB7 },
+		{ 0xE0B898, 0xB8 },
+		{ 0xE0B899, 0xB9 },
+		{ 0xE0B89A, 0xBA },
+		{ 0xE0B89B, 0xBB },
+		{ 0xE0B89C, 0xBC },
+		{ 0xE0B89D, 0xBD },
+		{ 0xE0B89E, 0xBE },
+		{ 0xE0B89F, 0xBF },
+		{ 0xE0B8A0, 0xC0 },
+		{ 0xE0B8A1, 0xC1 },
+		{ 0xE0B8A2, 0xC2 },
+		{ 0xE0B8A3, 0xC3 },
+		{ 0xE0B8A4, 0xC4 },
+		{ 0xE0B8A5, 0xC5 },
+		{ 0xE0B8A6, 0xC6 },
+		{ 0xE0B8A7, 0xC7 },
+		{ 0xE0B8A8, 0xC8 },
+		{ 0xE0B8A9, 0xC9 },
+		{ 0xE0B8AA, 0xCA },
+		{ 0xE0B8AB, 0xCB },
+		{ 0xE0B8AC, 0xCC },
+		{ 0xE0B8AD, 0xCD },
+		{ 0xE0B8AE, 0xCE },
+		{ 0xE0B8AF, 0xCF },
+		{ 0xE0B8B0, 0xD0 },
+		{ 0xE0B8B1, 0xD1 },
+		{ 0xE0B8B2, 0xD2 },
+		{ 0xE0B8B3, 0xD3 },
+		{ 0xE0B8B4, 0xD4 },
+		{ 0xE0B8B5, 0xD5 },
+		{ 0xE0B8B6, 0xD6 },
+		{ 0xE0B8B7, 0xD7 },
+		{ 0xE0B8B8, 0xD8 },
+		{ 0xE0B8B9, 0xD9 },
+		{ 0xE0B8BA, 0xDA },
+		{ 0xE0B8BF, 0xDF },
+		{ 0xE0B980, 0xE0 },
+		{ 0xE0B981, 0xE1 },
+		{ 0xE0B982, 0xE2 },
+		{ 0xE0B983, 0xE3 },
+		{ 0xE0B984, 0xE4 },
+		{ 0xE0B985, 0xE5 },
+		{ 0xE0B986, 0xE6 },
+		{ 0xE0B987, 0xE7 },
+		{ 0xE0B988, 0xE8 },
+		{ 0xE0B989, 0xE9 },
+		{ 0xE0B98A, 0xEA },
+		{ 0xE0B98B, 0xEB },
+		{ 0xE0B98C, 0xEC },
+		{ 0xE0B98D, 0xED },
+		{ 0xE0B98E, 0xEE },
+		{ 0xE0B98F, 0xEF },
+		{ 0xE0B990, 0xF0 },
+		{ 0xE0B991, 0xF1 },
+		{ 0xE0B992, 0xF2 },
+		{ 0xE0B993, 0xF3 },
+		{ 0xE0B994, 0xF4 },
+		{ 0xE0B995, 0xF5 },
+		{ 0xE0B996, 0xF6 },
+		{ 0xE0B997, 0xF7 },
+		{ 0xE0B998, 0xF8 },
+		{ 0xE0B999, 0xF9 },
+		{ 0xE0B99A, 0xFA },
+		{ 0xE0B99B, 0xFB },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+	},
+	{	/* UTF-8 -> ISO 8859-13 */
+		{ 0x00C280, 0x80 },
+		{ 0x00C281, 0x81 },
+		{ 0x00C282, 0x82 },
+		{ 0x00C283, 0x83 },
+		{ 0x00C284, 0x84 },
+		{ 0x00C285, 0x85 },
+		{ 0x00C286, 0x86 },
+		{ 0x00C287, 0x87 },
+		{ 0x00C288, 0x88 },
+		{ 0x00C289, 0x89 },
+		{ 0x00C28A, 0x8A },
+		{ 0x00C28B, 0x8B },
+		{ 0x00C28C, 0x8C },
+		{ 0x00C28D, 0x8D },
+		{ 0x00C28E, 0x8E },
+		{ 0x00C28F, 0x8F },
+		{ 0x00C290, 0x90 },
+		{ 0x00C291, 0x91 },
+		{ 0x00C292, 0x92 },
+		{ 0x00C293, 0x93 },
+		{ 0x00C294, 0x94 },
+		{ 0x00C295, 0x95 },
+		{ 0x00C296, 0x96 },
+		{ 0x00C297, 0x97 },
+		{ 0x00C298, 0x98 },
+		{ 0x00C299, 0x99 },
+		{ 0x00C29A, 0x9A },
+		{ 0x00C29B, 0x9B },
+		{ 0x00C29C, 0x9C },
+		{ 0x00C29D, 0x9D },
+		{ 0x00C29E, 0x9E },
+		{ 0x00C29F, 0x9F },
+		{ 0x00C2A0, 0xA0 },
+		{ 0x00C2A2, 0xA2 },
+		{ 0x00C2A3, 0xA3 },
+		{ 0x00C2A4, 0xA4 },
+		{ 0x00C2A6, 0xA6 },
+		{ 0x00C2A7, 0xA7 },
+		{ 0x00C2A9, 0xA9 },
+		{ 0x00C2AB, 0xAB },
+		{ 0x00C2AC, 0xAC },
+		{ 0x00C2AD, 0xAD },
+		{ 0x00C2AE, 0xAE },
+		{ 0x00C2B0, 0xB0 },
+		{ 0x00C2B1, 0xB1 },
+		{ 0x00C2B2, 0xB2 },
+		{ 0x00C2B3, 0xB3 },
+		{ 0x00C2B5, 0xB5 },
+		{ 0x00C2B6, 0xB6 },
+		{ 0x00C2B7, 0xB7 },
+		{ 0x00C2B9, 0xB9 },
+		{ 0x00C2BB, 0xBB },
+		{ 0x00C2BC, 0xBC },
+		{ 0x00C2BD, 0xBD },
+		{ 0x00C2BE, 0xBE },
+		{ 0x00C384, 0xC4 },
+		{ 0x00C385, 0xC5 },
+		{ 0x00C386, 0xAF },
+		{ 0x00C389, 0xC9 },
+		{ 0x00C393, 0xD3 },
+		{ 0x00C395, 0xD5 },
+		{ 0x00C396, 0xD6 },
+		{ 0x00C397, 0xD7 },
+		{ 0x00C398, 0xA8 },
+		{ 0x00C39C, 0xDC },
+		{ 0x00C39F, 0xDF },
+		{ 0x00C3A4, 0xE4 },
+		{ 0x00C3A5, 0xE5 },
+		{ 0x00C3A6, 0xBF },
+		{ 0x00C3A9, 0xE9 },
+		{ 0x00C3B3, 0xF3 },
+		{ 0x00C3B5, 0xF5 },
+		{ 0x00C3B6, 0xF6 },
+		{ 0x00C3B7, 0xF7 },
+		{ 0x00C3B8, 0xB8 },
+		{ 0x00C3BC, 0xFC },
+		{ 0x00C480, 0xC2 },
+		{ 0x00C481, 0xE2 },
+		{ 0x00C484, 0xC0 },
+		{ 0x00C485, 0xE0 },
+		{ 0x00C486, 0xC3 },
+		{ 0x00C487, 0xE3 },
+		{ 0x00C48C, 0xC8 },
+		{ 0x00C48D, 0xE8 },
+		{ 0x00C492, 0xC7 },
+		{ 0x00C493, 0xE7 },
+		{ 0x00C496, 0xCB },
+		{ 0x00C497, 0xEB },
+		{ 0x00C498, 0xC6 },
+		{ 0x00C499, 0xE6 },
+		{ 0x00C4A2, 0xCC },
+		{ 0x00C4A3, 0xEC },
+		{ 0x00C4AA, 0xCE },
+		{ 0x00C4AB, 0xEE },
+		{ 0x00C4AE, 0xC1 },
+		{ 0x00C4AF, 0xE1 },
+		{ 0x00C4B6, 0xCD },
+		{ 0x00C4B7, 0xED },
+		{ 0x00C4BB, 0xCF },
+		{ 0x00C4BC, 0xEF },
+		{ 0x00C581, 0xD9 },
+		{ 0x00C582, 0xF9 },
+		{ 0x00C583, 0xD1 },
+		{ 0x00C584, 0xF1 },
+		{ 0x00C585, 0xD2 },
+		{ 0x00C586, 0xF2 },
+		{ 0x00C58C, 0xD4 },
+		{ 0x00C58D, 0xF4 },
+		{ 0x00C596, 0xAA },
+		{ 0x00C597, 0xBA },
+		{ 0x00C59A, 0xDA },
+		{ 0x00C59B, 0xFA },
+		{ 0x00C5A0, 0xD0 },
+		{ 0x00C5A1, 0xF0 },
+		{ 0x00C5AA, 0xDB },
+		{ 0x00C5AB, 0xFB },
+		{ 0x00C5B2, 0xD8 },
+		{ 0x00C5B3, 0xF8 },
+		{ 0x00C5B9, 0xCA },
+		{ 0x00C5BA, 0xEA },
+		{ 0x00C5BB, 0xDD },
+		{ 0x00C5BC, 0xFD },
+		{ 0x00C5BD, 0xDE },
+		{ 0x00C5BE, 0xFE },
+		{ 0xE28099, 0xFF },
+		{ 0xE2809C, 0xB4 },
+		{ 0xE2809D, 0xA1 },
+		{ 0xE2809E, 0xA5 },
+	},
+	{	/* UTF-8 -> KOI8-R */
+		{ 0x00C2A0, 0x9A },
+		{ 0x00C2A9, 0xBF },
+		{ 0x00C2B0, 0x9C },
+		{ 0x00C2B2, 0x9D },
+		{ 0x00C2B7, 0x9E },
+		{ 0x00C3B7, 0x9F },
+		{ 0x00D081, 0xB3 },
+		{ 0x00D090, 0xE1 },
+		{ 0x00D091, 0xE2 },
+		{ 0x00D092, 0xF7 },
+		{ 0x00D093, 0xE7 },
+		{ 0x00D094, 0xE4 },
+		{ 0x00D095, 0xE5 },
+		{ 0x00D096, 0xF6 },
+		{ 0x00D097, 0xFA },
+		{ 0x00D098, 0xE9 },
+		{ 0x00D099, 0xEA },
+		{ 0x00D09A, 0xEB },
+		{ 0x00D09B, 0xEC },
+		{ 0x00D09C, 0xED },
+		{ 0x00D09D, 0xEE },
+		{ 0x00D09E, 0xEF },
+		{ 0x00D09F, 0xF0 },
+		{ 0x00D0A0, 0xF2 },
+		{ 0x00D0A1, 0xF3 },
+		{ 0x00D0A2, 0xF4 },
+		{ 0x00D0A3, 0xF5 },
+		{ 0x00D0A4, 0xE6 },
+		{ 0x00D0A5, 0xE8 },
+		{ 0x00D0A6, 0xE3 },
+		{ 0x00D0A7, 0xFE },
+		{ 0x00D0A8, 0xFB },
+		{ 0x00D0A9, 0xFD },
+		{ 0x00D0AA, 0xFF },
+		{ 0x00D0AB, 0xF9 },
+		{ 0x00D0AC, 0xF8 },
+		{ 0x00D0AD, 0xFC },
+		{ 0x00D0AE, 0xE0 },
+		{ 0x00D0AF, 0xF1 },
+		{ 0x00D0B0, 0xC1 },
+		{ 0x00D0B1, 0xC2 },
+		{ 0x00D0B2, 0xD7 },
+		{ 0x00D0B3, 0xC7 },
+		{ 0x00D0B4, 0xC4 },
+		{ 0x00D0B5, 0xC5 },
+		{ 0x00D0B6, 0xD6 },
+		{ 0x00D0B7, 0xDA },
+		{ 0x00D0B8, 0xC9 },
+		{ 0x00D0B9, 0xCA },
+		{ 0x00D0BA, 0xCB },
+		{ 0x00D0BB, 0xCC },
+		{ 0x00D0BC, 0xCD },
+		{ 0x00D0BD, 0xCE },
+		{ 0x00D0BE, 0xCF },
+		{ 0x00D0BF, 0xD0 },
+		{ 0x00D180, 0xD2 },
+		{ 0x00D181, 0xD3 },
+		{ 0x00D182, 0xD4 },
+		{ 0x00D183, 0xD5 },
+		{ 0x00D184, 0xC6 },
+		{ 0x00D185, 0xC8 },
+		{ 0x00D186, 0xC3 },
+		{ 0x00D187, 0xDE },
+		{ 0x00D188, 0xDB },
+		{ 0x00D189, 0xDD },
+		{ 0x00D18A, 0xDF },
+		{ 0x00D18B, 0xD9 },
+		{ 0x00D18C, 0xD8 },
+		{ 0x00D18D, 0xDC },
+		{ 0x00D18E, 0xC0 },
+		{ 0x00D18F, 0xD1 },
+		{ 0x00D191, 0xA3 },
+		{ 0xE28899, 0x95 },
+		{ 0xE2889A, 0x96 },
+		{ 0xE28988, 0x97 },
+		{ 0xE289A4, 0x98 },
+		{ 0xE289A5, 0x99 },
+		{ 0xE28CA0, 0x93 },
+		{ 0xE28CA1, 0x9B },
+		{ 0xE29480, 0x80 },
+		{ 0xE29482, 0x81 },
+		{ 0xE2948C, 0x82 },
+		{ 0xE29490, 0x83 },
+		{ 0xE29494, 0x84 },
+		{ 0xE29498, 0x85 },
+		{ 0xE2949C, 0x86 },
+		{ 0xE294A4, 0x87 },
+		{ 0xE294AC, 0x88 },
+		{ 0xE294B4, 0x89 },
+		{ 0xE294BC, 0x8A },
+		{ 0xE29590, 0xA0 },
+		{ 0xE29591, 0xA1 },
+		{ 0xE29592, 0xA2 },
+		{ 0xE29593, 0xA4 },
+		{ 0xE29594, 0xA5 },
+		{ 0xE29595, 0xA6 },
+		{ 0xE29596, 0xA7 },
+		{ 0xE29597, 0xA8 },
+		{ 0xE29598, 0xA9 },
+		{ 0xE29599, 0xAA },
+		{ 0xE2959A, 0xAB },
+		{ 0xE2959B, 0xAC },
+		{ 0xE2959C, 0xAD },
+		{ 0xE2959D, 0xAE },
+		{ 0xE2959E, 0xAF },
+		{ 0xE2959F, 0xB0 },
+		{ 0xE295A0, 0xB1 },
+		{ 0xE295A1, 0xB2 },
+		{ 0xE295A2, 0xB4 },
+		{ 0xE295A3, 0xB5 },
+		{ 0xE295A4, 0xB6 },
+		{ 0xE295A5, 0xB7 },
+		{ 0xE295A6, 0xB8 },
+		{ 0xE295A7, 0xB9 },
+		{ 0xE295A8, 0xBA },
+		{ 0xE295A9, 0xBB },
+		{ 0xE295AA, 0xBC },
+		{ 0xE295AB, 0xBD },
+		{ 0xE295AC, 0xBE },
+		{ 0xE29680, 0x8B },
+		{ 0xE29684, 0x8C },
+		{ 0xE29688, 0x8D },
+		{ 0xE2968C, 0x8E },
+		{ 0xE29690, 0x8F },
+		{ 0xE29691, 0x90 },
+		{ 0xE29692, 0x91 },
+		{ 0xE29693, 0x92 },
+		{ 0xE296A0, 0x94 },
+	}
+};
+
+#endif	/* _KERNEL */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SYS_KICONV_EMEA1_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usr/src/uts/common/sys/kiconv_emea2.h	Tue Oct 09 16:46:51 2007 -0700
@@ -0,0 +1,371 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+/*
+ * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
+ * Use is subject to license terms.
+ */
+/*
+ * ICU License - ICU 1.8.1 and later
+ *
+ * COPYRIGHT AND PERMISSION NOTICE
+ *
+ * Copyright (c) 1995-2006 International Business Machines Corporation and
+ * others
+ *
+ * All rights reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, and/or sell copies of the Software, and to permit persons
+ * to whom the Software is furnished to do so, provided that the above
+ * copyright notice(s) and this permission notice appear in all copies of
+ * the Software and that both the above copyright notice(s) and this
+ * permission notice appear in supporting documentation.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+ * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+ * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+ * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Except as contained in this notice, the name of a copyright holder
+ * shall not be used in advertising or otherwise to promote the sale, use
+ * or other dealings in this Software without prior written authorization
+ * of the copyright holder.
+ *
+ * -----------------------------------------------------------------------------
+ * All trademarks and registered trademarks mentioned herein are the property of
+ * their respective owners.
+ */
+/*
+ * This file has been modified by Sun Microsystems, Inc.
+ */
+
+#ifndef _SYS_KICONV_EMEA2_H
+#define	_SYS_KICONV_EMEA2_H
+
+#pragma ident	"%Z%%M%	%I%	%E% SMI"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <sys/kiconv.h>
+
+#ifdef	_KERNEL
+
+/*
+ * Mapping tables from CP720 to UTF-8.
+ *
+ * Indices are calculated by subtracting 0x80 from single byte character code
+ * values.
+ *
+ * Each component has up to three UTF-8 character bytes; the first byte will
+ * be used to figure out on how many bytes should be taken. If size figured
+ * out has a value less than zero, that means that component isn't valid and
+ * has no assigned character.
+ *
+ * We only provide mappings that will guarantee exact 1-to-1 roundtrip code
+ * conversions for the maximum compatibility with previous CP720 conversions
+ * in our storage products. (The same also goes to the other table at below.)
+ */
+static const kiconv_to_utf8_tbl_comp_t cp720_to_u8_tbl[128] = {
+	{ 0xC2, 0x80, 0x00 },	/* 0x80 */
+	{ 0xC2, 0x81, 0x00 },	/* 0x81 */
+	{ 0xC3, 0xA9, 0x00 },	/* 0x82 */
+	{ 0xC3, 0xA2, 0x00 },	/* 0x83 */
+	{ 0xC2, 0x84, 0x00 },	/* 0x84 */
+	{ 0xC3, 0xA0, 0x00 },	/* 0x85 */
+	{ 0xC2, 0x86, 0x00 },	/* 0x86 */
+	{ 0xC3, 0xA7, 0x00 },	/* 0x87 */
+	{ 0xC3, 0xAA, 0x00 },	/* 0x88 */
+	{ 0xC3, 0xAB, 0x00 },	/* 0x89 */
+	{ 0xC3, 0xA8, 0x00 },	/* 0x8A */
+	{ 0xC3, 0xAF, 0x00 },	/* 0x8B */
+	{ 0xC3, 0xAE, 0x00 },	/* 0x8C */
+	{ 0xC2, 0x8D, 0x00 },	/* 0x8D */
+	{ 0xC2, 0x8E, 0x00 },	/* 0x8E */
+	{ 0xC2, 0x8F, 0x00 },	/* 0x8F */
+	{ 0xC2, 0x90, 0x00 },	/* 0x90 */
+	{ 0xD9, 0x91, 0x00 },	/* 0x91 */
+	{ 0xD9, 0x92, 0x00 },	/* 0x92 */
+	{ 0xC3, 0xB4, 0x00 },	/* 0x93 */
+	{ 0xC2, 0xA4, 0x00 },	/* 0x94 */
+	{ 0xD9, 0x80, 0x00 },	/* 0x95 */
+	{ 0xC3, 0xBB, 0x00 },	/* 0x96 */
+	{ 0xC3, 0xB9, 0x00 },	/* 0x97 */
+	{ 0xD8, 0xA1, 0x00 },	/* 0x98 */
+	{ 0xD8, 0xA2, 0x00 },	/* 0x99 */
+	{ 0xD8, 0xA3, 0x00 },	/* 0x9A */
+	{ 0xD8, 0xA4, 0x00 },	/* 0x9B */
+	{ 0xC2, 0xA3, 0x00 },	/* 0x9C */
+	{ 0xD8, 0xA5, 0x00 },	/* 0x9D */
+	{ 0xD8, 0xA6, 0x00 },	/* 0x9E */
+	{ 0xD8, 0xA7, 0x00 },	/* 0x9F */
+	{ 0xD8, 0xA8, 0x00 },	/* 0xA0 */
+	{ 0xD8, 0xA9, 0x00 },	/* 0xA1 */
+	{ 0xD8, 0xAA, 0x00 },	/* 0xA2 */
+	{ 0xD8, 0xAB, 0x00 },	/* 0xA3 */
+	{ 0xD8, 0xAC, 0x00 },	/* 0xA4 */
+	{ 0xD8, 0xAD, 0x00 },	/* 0xA5 */
+	{ 0xD8, 0xAE, 0x00 },	/* 0xA6 */
+	{ 0xD8, 0xAF, 0x00 },	/* 0xA7 */
+	{ 0xD8, 0xB0, 0x00 },	/* 0xA8 */
+	{ 0xD8, 0xB1, 0x00 },	/* 0xA9 */
+	{ 0xD8, 0xB2, 0x00 },	/* 0xAA */
+	{ 0xD8, 0xB3, 0x00 },	/* 0xAB */
+	{ 0xD8, 0xB4, 0x00 },	/* 0xAC */
+	{ 0xD8, 0xB5, 0x00 },	/* 0xAD */
+	{ 0xC2, 0xAB, 0x00 },	/* 0xAE */
+	{ 0xC2, 0xBB, 0x00 },	/* 0xAF */
+	{ 0xE2, 0x96, 0x91 },	/* 0xB0 */
+	{ 0xE2, 0x96, 0x92 },	/* 0xB1 */
+	{ 0xE2, 0x96, 0x93 },	/* 0xB2 */
+	{ 0xE2, 0x94, 0x82 },	/* 0xB3 */
+	{ 0xE2, 0x94, 0xA4 },	/* 0xB4 */
+	{ 0xE2, 0x95, 0xA1 },	/* 0xB5 */
+	{ 0xE2, 0x95, 0xA2 },	/* 0xB6 */
+	{ 0xE2, 0x95, 0x96 },	/* 0xB7 */
+	{ 0xE2, 0x95, 0x95 },	/* 0xB8 */
+	{ 0xE2, 0x95, 0xA3 },	/* 0xB9 */
+	{ 0xE2, 0x95, 0x91 },	/* 0xBA */
+	{ 0xE2, 0x95, 0x97 },	/* 0xBB */
+	{ 0xE2, 0x95, 0x9D },	/* 0xBC */
+	{ 0xE2, 0x95, 0x9C },	/* 0xBD */
+	{ 0xE2, 0x95, 0x9B },	/* 0xBE */
+	{ 0xE2, 0x94, 0x90 },	/* 0xBF */
+	{ 0xE2, 0x94, 0x94 },	/* 0xC0 */
+	{ 0xE2, 0x94, 0xB4 },	/* 0xC1 */
+	{ 0xE2, 0x94, 0xAC },	/* 0xC2 */
+	{ 0xE2, 0x94, 0x9C },	/* 0xC3 */
+	{ 0xE2, 0x94, 0x80 },	/* 0xC4 */
+	{ 0xE2, 0x94, 0xBC },	/* 0xC5 */
+	{ 0xE2, 0x95, 0x9E },	/* 0xC6 */
+	{ 0xE2, 0x95, 0x9F },	/* 0xC7 */
+	{ 0xE2, 0x95, 0x9A },	/* 0xC8 */
+	{ 0xE2, 0x95, 0x94 },	/* 0xC9 */
+	{ 0xE2, 0x95, 0xA9 },	/* 0xCA */
+	{ 0xE2, 0x95, 0xA6 },	/* 0xCB */
+	{ 0xE2, 0x95, 0xA0 },	/* 0xCC */
+	{ 0xE2, 0x95, 0x90 },	/* 0xCD */
+	{ 0xE2, 0x95, 0xAC },	/* 0xCE */
+	{ 0xE2, 0x95, 0xA7 },	/* 0xCF */
+	{ 0xE2, 0x95, 0xA8 },	/* 0xD0 */
+	{ 0xE2, 0x95, 0xA4 },	/* 0xD1 */
+	{ 0xE2, 0x95, 0xA5 },	/* 0xD2 */
+	{ 0xE2, 0x95, 0x99 },	/* 0xD3 */
+	{ 0xE2, 0x95, 0x98 },	/* 0xD4 */
+	{ 0xE2, 0x95, 0x92 },	/* 0xD5 */
+	{ 0xE2, 0x95, 0x93 },	/* 0xD6 */
+	{ 0xE2, 0x95, 0xAB },	/* 0xD7 */
+	{ 0xE2, 0x95, 0xAA },	/* 0xD8 */
+	{ 0xE2, 0x94, 0x98 },	/* 0xD9 */
+	{ 0xE2, 0x94, 0x8C },	/* 0xDA */
+	{ 0xE2, 0x96, 0x88 },	/* 0xDB */
+	{ 0xE2, 0x96, 0x84 },	/* 0xDC */
+	{ 0xE2, 0x96, 0x8C },	/* 0xDD */
+	{ 0xE2, 0x96, 0x90 },	/* 0xDE */
+	{ 0xE2, 0x96, 0x80 },	/* 0xDF */
+	{ 0xD8, 0xB6, 0x00 },	/* 0xE0 */
+	{ 0xD8, 0xB7, 0x00 },	/* 0xE1 */
+	{ 0xD8, 0xB8, 0x00 },	/* 0xE2 */
+	{ 0xD8, 0xB9, 0x00 },	/* 0xE3 */
+	{ 0xD8, 0xBA, 0x00 },	/* 0xE4 */
+	{ 0xD9, 0x81, 0x00 },	/* 0xE5 */
+	{ 0xC2, 0xB5, 0x00 },	/* 0xE6 */
+	{ 0xD9, 0x82, 0x00 },	/* 0xE7 */
+	{ 0xD9, 0x83, 0x00 },	/* 0xE8 */
+	{ 0xD9, 0x84, 0x00 },	/* 0xE9 */
+	{ 0xD9, 0x85, 0x00 },	/* 0xEA */
+	{ 0xD9, 0x86, 0x00 },	/* 0xEB */
+	{ 0xD9, 0x87, 0x00 },	/* 0xEC */
+	{ 0xD9, 0x88, 0x00 },	/* 0xED */
+	{ 0xD9, 0x89, 0x00 },	/* 0xEE */
+	{ 0xD9, 0x8A, 0x00 },	/* 0xEF */
+	{ 0xE2, 0x89, 0xA1 },	/* 0xF0 */
+	{ 0xD9, 0x8B, 0x00 },	/* 0xF1 */
+	{ 0xD9, 0x8C, 0x00 },	/* 0xF2 */
+	{ 0xD9, 0x8D, 0x00 },	/* 0xF3 */
+	{ 0xD9, 0x8E, 0x00 },	/* 0xF4 */
+	{ 0xD9, 0x8F, 0x00 },	/* 0xF5 */
+	{ 0xD9, 0x90, 0x00 },	/* 0xF6 */
+	{ 0xE2, 0x89, 0x88 },	/* 0xF7 */
+	{ 0xC2, 0xB0, 0x00 },	/* 0xF8 */
+	{ 0xE2, 0x88, 0x99 },	/* 0xF9 */
+	{ 0xC2, 0xB7, 0x00 },	/* 0xFA */
+	{ 0xE2, 0x88, 0x9A },	/* 0xFB */
+	{ 0xE2, 0x81, 0xBF },	/* 0xFC */
+	{ 0xC2, 0xB2, 0x00 },	/* 0xFD */
+	{ 0xE2, 0x96, 0xA0 },	/* 0xFE */
+	{ 0xC2, 0xA0, 0x00 },	/* 0xFF */
+};
+
+/*
+ * Mapping tables from UTF-8 to CP720.
+ *
+ * The table is sorted with UTF-8 values to be used with binary search.
+ * UTF-8 character byte values are saved at uint32_t:24 contiguously as
+ * scalar values.
+ */
+static const kiconv_to_sb_tbl_comp_t u8_to_cp720_tbl[128] = {
+	{ 0x00C280, 0x80 },
+	{ 0x00C281, 0x81 },
+	{ 0x00C284, 0x84 },
+	{ 0x00C286, 0x86 },
+	{ 0x00C28D, 0x8D },
+	{ 0x00C28E, 0x8E },
+	{ 0x00C28F, 0x8F },
+	{ 0x00C290, 0x90 },
+	{ 0x00C2A0, 0xFF },
+	{ 0x00C2A3, 0x9C },
+	{ 0x00C2A4, 0x94 },
+	{ 0x00C2AB, 0xAE },
+	{ 0x00C2B0, 0xF8 },
+	{ 0x00C2B2, 0xFD },
+	{ 0x00C2B5, 0xE6 },
+	{ 0x00C2B7, 0xFA },
+	{ 0x00C2BB, 0xAF },
+	{ 0x00C3A0, 0x85 },
+	{ 0x00C3A2, 0x83 },
+	{ 0x00C3A7, 0x87 },
+	{ 0x00C3A8, 0x8A },
+	{ 0x00C3A9, 0x82 },
+	{ 0x00C3AA, 0x88 },
+	{ 0x00C3AB, 0x89 },
+	{ 0x00C3AE, 0x8C },
+	{ 0x00C3AF, 0x8B },
+	{ 0x00C3B4, 0x93 },
+	{ 0x00C3B9, 0x97 },
+	{ 0x00C3BB, 0x96 },
+	{ 0x00D8A1, 0x98 },
+	{ 0x00D8A2, 0x99 },
+	{ 0x00D8A3, 0x9A },
+	{ 0x00D8A4, 0x9B },
+	{ 0x00D8A5, 0x9D },
+	{ 0x00D8A6, 0x9E },
+	{ 0x00D8A7, 0x9F },
+	{ 0x00D8A8, 0xA0 },
+	{ 0x00D8A9, 0xA1 },
+	{ 0x00D8AA, 0xA2 },
+	{ 0x00D8AB, 0xA3 },
+	{ 0x00D8AC, 0xA4 },
+	{ 0x00D8AD, 0xA5 },
+	{ 0x00D8AE, 0xA6 },
+	{ 0x00D8AF, 0xA7 },
+	{ 0x00D8B0, 0xA8 },
+	{ 0x00D8B1, 0xA9 },
+	{ 0x00D8B2, 0xAA },
+	{ 0x00D8B3, 0xAB },
+	{ 0x00D8B4, 0xAC },
+	{ 0x00D8B5, 0xAD },
+	{ 0x00D8B6, 0xE0 },
+	{ 0x00D8B7, 0xE1 },
+	{ 0x00D8B8, 0xE2 },
+	{ 0x00D8B9, 0xE3 },
+	{ 0x00D8BA, 0xE4 },
+	{ 0x00D980, 0x95 },
+	{ 0x00D981, 0xE5 },
+	{ 0x00D982, 0xE7 },
+	{ 0x00D983, 0xE8 },
+	{ 0x00D984, 0xE9 },
+	{ 0x00D985, 0xEA },
+	{ 0x00D986, 0xEB },
+	{ 0x00D987, 0xEC },
+	{ 0x00D988, 0xED },
+	{ 0x00D989, 0xEE },
+	{ 0x00D98A, 0xEF },
+	{ 0x00D98B, 0xF1 },
+	{ 0x00D98C, 0xF2 },
+	{ 0x00D98D, 0xF3 },
+	{ 0x00D98E, 0xF4 },
+	{ 0x00D98F, 0xF5 },
+	{ 0x00D990, 0xF6 },
+	{ 0x00D991, 0x91 },
+	{ 0x00D992, 0x92 },
+	{ 0xE281BF, 0xFC },
+	{ 0xE28899, 0xF9 },
+	{ 0xE2889A, 0xFB },
+	{ 0xE28988, 0xF7 },
+	{ 0xE289A1, 0xF0 },
+	{ 0xE29480, 0xC4 },
+	{ 0xE29482, 0xB3 },
+	{ 0xE2948C, 0xDA },
+	{ 0xE29490, 0xBF },
+	{ 0xE29494, 0xC0 },
+	{ 0xE29498, 0xD9 },
+	{ 0xE2949C, 0xC3 },
+	{ 0xE294A4, 0xB4 },
+	{ 0xE294AC, 0xC2 },
+	{ 0xE294B4, 0xC1 },
+	{ 0xE294BC, 0xC5 },
+	{ 0xE29590, 0xCD },
+	{ 0xE29591, 0xBA },
+	{ 0xE29592, 0xD5 },
+	{ 0xE29593, 0xD6 },
+	{ 0xE29594, 0xC9 },
+	{ 0xE29595, 0xB8 },
+	{ 0xE29596, 0xB7 },
+	{ 0xE29597, 0xBB },
+	{ 0xE29598, 0xD4 },
+	{ 0xE29599, 0xD3 },
+	{ 0xE2959A, 0xC8 },
+	{ 0xE2959B, 0xBE },
+	{ 0xE2959C, 0xBD },
+	{ 0xE2959D, 0xBC },
+	{ 0xE2959E, 0xC6 },
+	{ 0xE2959F, 0xC7 },
+	{ 0xE295A0, 0xCC },
+	{ 0xE295A1, 0xB5 },
+	{ 0xE295A2, 0xB6 },
+	{ 0xE295A3, 0xB9 },
+	{ 0xE295A4, 0xD1 },
+	{ 0xE295A5, 0xD2 },
+	{ 0xE295A6, 0xCB },
+	{ 0xE295A7, 0xCF },
+	{ 0xE295A8, 0xD0 },
+	{ 0xE295A9, 0xCA },
+	{ 0xE295AA, 0xD8 },
+	{ 0xE295AB, 0xD7 },
+	{ 0xE295AC, 0xCE },
+	{ 0xE29680, 0xDF },
+	{ 0xE29684, 0xDC },
+	{ 0xE29688, 0xDB },
+	{ 0xE2968C, 0xDD },
+	{ 0xE29690, 0xDE },
+	{ 0xE29691, 0xB0 },
+	{ 0xE29692, 0xB1 },
+	{ 0xE29693, 0xB2 },
+	{ 0xE296A0, 0xFE },
+};
+
+#endif	/* _KERNEL */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SYS_KICONV_EMEA2_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usr/src/uts/common/sys/kiconv_latin1.h	Tue Oct 09 16:46:51 2007 -0700
@@ -0,0 +1,1151 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+/*
+ * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
+ * Use is subject to license terms.
+ */
+/*
+ * COPYRIGHT AND PERMISSION NOTICE
+ *
+ * Copyright (c) 1991-2006 Unicode, Inc. All rights reserved. Distributed under
+ * the Terms of Use in http://www.unicode.org/copyright.html.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of the Unicode data files and any associated documentation (the
+ * "Data Files") or Unicode software and any associated documentation (the
+ * "Software") to deal in the Data Files or Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge,
+ * publish, distribute, and/or sell copies of the Data Files or Software, and
+ * to permit persons to whom the Data Files or Software are furnished to do so,
+ * provided that (a) the above copyright notice(s) and this permission notice
+ * appear with all copies of the Data Files or Software, (b) both the above
+ * copyright notice(s) and this permission notice appear in associated
+ * documentation, and (c) there is clear notice in each modified Data File or
+ * in the Software as well as in the documentation associated with the Data
+ * File(s) or Software that the data or software has been modified.
+ *
+ * THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ * KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+ * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
+ * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
+ * CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+ * OF THE DATA FILES OR SOFTWARE.
+ *
+ * Except as contained in this notice, the name of a copyright holder shall not
+ * be used in advertising or otherwise to promote the sale, use or other
+ * dealings in these Data Files or Software without prior written authorization
+ * of the copyright holder.
+ *
+ * Unicode and the Unicode logo are trademarks of Unicode, Inc., and may be
+ * registered in some jurisdictions. All other trademarks and registered
+ * trademarks mentioned herein are the property of their respective owners.
+ */
+/*
+ * This file has been modified by Sun Microsystems, Inc.
+ */
+
+#ifndef _SYS_KICONV_LATIN1_H
+#define	_SYS_KICONV_LATIN1_H
+
+#pragma ident	"%Z%%M%	%I%	%E% SMI"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <sys/kiconv.h>
+
+#ifdef	_KERNEL
+
+/*
+ * Mapping tables from CP1252, ISO 8859-1, ISO 8859-15, and CP850 to UTF-8.
+ *
+ * Indices are calculated by subtracting 0x80 from single byte character code
+ * values.
+ *
+ * Each component has up to three UTF-8 character bytes; the first byte will
+ * be used to figure out on how many bytes should be taken. If size figured
+ * out has a value less than zero, that means that component isn't valid and
+ * has no assigned character.
+ */
+static const kiconv_to_utf8_tbl_comp_t to_u8_tbl[4][128] = {
+	{	/* CP1252 -> UTF-8 */
+		{ 0xE2, 0x82, 0xAC },	/* 0x80 */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x81 (illegal character) */
+		{ 0xE2, 0x80, 0x9A },	/* 0x82 */
+		{ 0xC6, 0x92, 0x00 },	/* 0x83 */
+		{ 0xE2, 0x80, 0x9E },	/* 0x84 */
+		{ 0xE2, 0x80, 0xA6 },	/* 0x85 */
+		{ 0xE2, 0x80, 0xA0 },	/* 0x86 */
+		{ 0xE2, 0x80, 0xA1 },	/* 0x87 */
+		{ 0xCB, 0x86, 0x00 },	/* 0x88 */
+		{ 0xE2, 0x80, 0xB0 },	/* 0x89 */
+		{ 0xC5, 0xA0, 0x00 },	/* 0x8A */
+		{ 0xE2, 0x80, 0xB9 },	/* 0x8B */
+		{ 0xC5, 0x92, 0x00 },	/* 0x8C */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x8D (illegal character) */
+		{ 0xC5, 0xBD, 0x00 },	/* 0x8E */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x8F (illegal character) */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x90 (illegal character) */
+		{ 0xE2, 0x80, 0x98 },	/* 0x91 */
+		{ 0xE2, 0x80, 0x99 },	/* 0x92 */
+		{ 0xE2, 0x80, 0x9C },	/* 0x93 */
+		{ 0xE2, 0x80, 0x9D },	/* 0x94 */
+		{ 0xE2, 0x80, 0xA2 },	/* 0x95 */
+		{ 0xE2, 0x80, 0x93 },	/* 0x96 */
+		{ 0xE2, 0x80, 0x94 },	/* 0x97 */
+		{ 0xCB, 0x9C, 0x00 },	/* 0x98 */
+		{ 0xE2, 0x84, 0xA2 },	/* 0x99 */
+		{ 0xC5, 0xA1, 0x00 },	/* 0x9A */
+		{ 0xE2, 0x80, 0xBA },	/* 0x9B */
+		{ 0xC5, 0x93, 0x00 },	/* 0x9C */
+		{ 0xFE, 0xFE, 0xFE },	/* 0x9D (illegal character) */
+		{ 0xC5, 0xBE, 0x00 },	/* 0x9E */
+		{ 0xC5, 0xB8, 0x00 },	/* 0x9F */
+		{ 0xC2, 0xA0, 0x00 },	/* 0xA0 */
+		{ 0xC2, 0xA1, 0x00 },	/* 0xA1 */
+		{ 0xC2, 0xA2, 0x00 },	/* 0xA2 */
+		{ 0xC2, 0xA3, 0x00 },	/* 0xA3 */
+		{ 0xC2, 0xA4, 0x00 },	/* 0xA4 */
+		{ 0xC2, 0xA5, 0x00 },	/* 0xA5 */
+		{ 0xC2, 0xA6, 0x00 },	/* 0xA6 */
+		{ 0xC2, 0xA7, 0x00 },	/* 0xA7 */
+		{ 0xC2, 0xA8, 0x00 },	/* 0xA8 */
+		{ 0xC2, 0xA9, 0x00 },	/* 0xA9 */
+		{ 0xC2, 0xAA, 0x00 },	/* 0xAA */
+		{ 0xC2, 0xAB, 0x00 },	/* 0xAB */
+		{ 0xC2, 0xAC, 0x00 },	/* 0xAC */
+		{ 0xC2, 0xAD, 0x00 },	/* 0xAD */
+		{ 0xC2, 0xAE, 0x00 },	/* 0xAE */
+		{ 0xC2, 0xAF, 0x00 },	/* 0xAF */
+		{ 0xC2, 0xB0, 0x00 },	/* 0xB0 */
+		{ 0xC2, 0xB1, 0x00 },	/* 0xB1 */
+		{ 0xC2, 0xB2, 0x00 },	/* 0xB2 */
+		{ 0xC2, 0xB3, 0x00 },	/* 0xB3 */
+		{ 0xC2, 0xB4, 0x00 },	/* 0xB4 */
+		{ 0xC2, 0xB5, 0x00 },	/* 0xB5 */
+		{ 0xC2, 0xB6, 0x00 },	/* 0xB6 */
+		{ 0xC2, 0xB7, 0x00 },	/* 0xB7 */
+		{ 0xC2, 0xB8, 0x00 },	/* 0xB8 */
+		{ 0xC2, 0xB9, 0x00 },	/* 0xB9 */
+		{ 0xC2, 0xBA, 0x00 },	/* 0xBA */
+		{ 0xC2, 0xBB, 0x00 },	/* 0xBB */
+		{ 0xC2, 0xBC, 0x00 },	/* 0xBC */
+		{ 0xC2, 0xBD, 0x00 },	/* 0xBD */
+		{ 0xC2, 0xBE, 0x00 },	/* 0xBE */
+		{ 0xC2, 0xBF, 0x00 },	/* 0xBF */
+		{ 0xC3, 0x80, 0x00 },	/* 0xC0 */
+		{ 0xC3, 0x81, 0x00 },	/* 0xC1 */
+		{ 0xC3, 0x82, 0x00 },	/* 0xC2 */
+		{ 0xC3, 0x83, 0x00 },	/* 0xC3 */
+		{ 0xC3, 0x84, 0x00 },	/* 0xC4 */
+		{ 0xC3, 0x85, 0x00 },	/* 0xC5 */
+		{ 0xC3, 0x86, 0x00 },	/* 0xC6 */
+		{ 0xC3, 0x87, 0x00 },	/* 0xC7 */
+		{ 0xC3, 0x88, 0x00 },	/* 0xC8 */
+		{ 0xC3, 0x89, 0x00 },	/* 0xC9 */
+		{ 0xC3, 0x8A, 0x00 },	/* 0xCA */
+		{ 0xC3, 0x8B, 0x00 },	/* 0xCB */
+		{ 0xC3, 0x8C, 0x00 },	/* 0xCC */
+		{ 0xC3, 0x8D, 0x00 },	/* 0xCD */
+		{ 0xC3, 0x8E, 0x00 },	/* 0xCE */
+		{ 0xC3, 0x8F, 0x00 },	/* 0xCF */
+		{ 0xC3, 0x90, 0x00 },	/* 0xD0 */
+		{ 0xC3, 0x91, 0x00 },	/* 0xD1 */
+		{ 0xC3, 0x92, 0x00 },	/* 0xD2 */
+		{ 0xC3, 0x93, 0x00 },	/* 0xD3 */
+		{ 0xC3, 0x94, 0x00 },	/* 0xD4 */
+		{ 0xC3, 0x95, 0x00 },	/* 0xD5 */
+		{ 0xC3, 0x96, 0x00 },	/* 0xD6 */
+		{ 0xC3, 0x97, 0x00 },	/* 0xD7 */
+		{ 0xC3, 0x98, 0x00 },	/* 0xD8 */
+		{ 0xC3, 0x99, 0x00 },	/* 0xD9 */
+		{ 0xC3, 0x9A, 0x00 },	/* 0xDA */
+		{ 0xC3, 0x9B, 0x00 },	/* 0xDB */
+		{ 0xC3, 0x9C, 0x00 },	/* 0xDC */
+		{ 0xC3, 0x9D, 0x00 },	/* 0xDD */
+		{ 0xC3, 0x9E, 0x00 },	/* 0xDE */
+		{ 0xC3, 0x9F, 0x00 },	/* 0xDF */
+		{ 0xC3, 0xA0, 0x00 },	/* 0xE0 */
+		{ 0xC3, 0xA1, 0x00 },	/* 0xE1 */
+		{ 0xC3, 0xA2, 0x00 },	/* 0xE2 */
+		{ 0xC3, 0xA3, 0x00 },	/* 0xE3 */
+		{ 0xC3, 0xA4, 0x00 },	/* 0xE4 */
+		{ 0xC3, 0xA5, 0x00 },	/* 0xE5 */
+		{ 0xC3, 0xA6, 0x00 },	/* 0xE6 */
+		{ 0xC3, 0xA7, 0x00 },	/* 0xE7 */
+		{ 0xC3, 0xA8, 0x00 },	/* 0xE8 */
+		{ 0xC3, 0xA9, 0x00 },	/* 0xE9 */
+		{ 0xC3, 0xAA, 0x00 },	/* 0xEA */
+		{ 0xC3, 0xAB, 0x00 },	/* 0xEB */
+		{ 0xC3, 0xAC, 0x00 },	/* 0xEC */
+		{ 0xC3, 0xAD, 0x00 },	/* 0xED */
+		{ 0xC3, 0xAE, 0x00 },	/* 0xEE */
+		{ 0xC3, 0xAF, 0x00 },	/* 0xEF */
+		{ 0xC3, 0xB0, 0x00 },	/* 0xF0 */
+		{ 0xC3, 0xB1, 0x00 },	/* 0xF1 */
+		{ 0xC3, 0xB2, 0x00 },	/* 0xF2 */
+		{ 0xC3, 0xB3, 0x00 },	/* 0xF3 */
+		{ 0xC3, 0xB4, 0x00 },	/* 0xF4 */
+		{ 0xC3, 0xB5, 0x00 },	/* 0xF5 */
+		{ 0xC3, 0xB6, 0x00 },	/* 0xF6 */
+		{ 0xC3, 0xB7, 0x00 },	/* 0xF7 */
+		{ 0xC3, 0xB8, 0x00 },	/* 0xF8 */
+		{ 0xC3, 0xB9, 0x00 },	/* 0xF9 */
+		{ 0xC3, 0xBA, 0x00 },	/* 0xFA */
+		{ 0xC3, 0xBB, 0x00 },	/* 0xFB */
+		{ 0xC3, 0xBC, 0x00 },	/* 0xFC */
+		{ 0xC3, 0xBD, 0x00 },	/* 0xFD */
+		{ 0xC3, 0xBE, 0x00 },	/* 0xFE */
+		{ 0xC3, 0xBF, 0x00 },	/* 0xFF */
+	},
+	{	/* ISO 8859-1 -> UTF-8 */
+		{ 0xC2, 0x80, 0x00 },	/* 0x80 */
+		{ 0xC2, 0x81, 0x00 },	/* 0x81 */
+		{ 0xC2, 0x82, 0x00 },	/* 0x82 */
+		{ 0xC2, 0x83, 0x00 },	/* 0x83 */
+		{ 0xC2, 0x84, 0x00 },	/* 0x84 */
+		{ 0xC2, 0x85, 0x00 },	/* 0x85 */
+		{ 0xC2, 0x86, 0x00 },	/* 0x86 */
+		{ 0xC2, 0x87, 0x00 },	/* 0x87 */
+		{ 0xC2, 0x88, 0x00 },	/* 0x88 */
+		{ 0xC2, 0x89, 0x00 },	/* 0x89 */
+		{ 0xC2, 0x8A, 0x00 },	/* 0x8A */
+		{ 0xC2, 0x8B, 0x00 },	/* 0x8B */
+		{ 0xC2, 0x8C, 0x00 },	/* 0x8C */
+		{ 0xC2, 0x8D, 0x00 },	/* 0x8D */
+		{ 0xC2, 0x8E, 0x00 },	/* 0x8E */
+		{ 0xC2, 0x8F, 0x00 },	/* 0x8F */
+		{ 0xC2, 0x90, 0x00 },	/* 0x90 */
+		{ 0xC2, 0x91, 0x00 },	/* 0x91 */
+		{ 0xC2, 0x92, 0x00 },	/* 0x92 */
+		{ 0xC2, 0x93, 0x00 },	/* 0x93 */
+		{ 0xC2, 0x94, 0x00 },	/* 0x94 */
+		{ 0xC2, 0x95, 0x00 },	/* 0x95 */
+		{ 0xC2, 0x96, 0x00 },	/* 0x96 */
+		{ 0xC2, 0x97, 0x00 },	/* 0x97 */
+		{ 0xC2, 0x98, 0x00 },	/* 0x98 */
+		{ 0xC2, 0x99, 0x00 },	/* 0x99 */
+		{ 0xC2, 0x9A, 0x00 },	/* 0x9A */
+		{ 0xC2, 0x9B, 0x00 },	/* 0x9B */
+		{ 0xC2, 0x9C, 0x00 },	/* 0x9C */
+		{ 0xC2, 0x9D, 0x00 },	/* 0x9D */
+		{ 0xC2, 0x9E, 0x00 },	/* 0x9E */
+		{ 0xC2, 0x9F, 0x00 },	/* 0x9F */
+		{ 0xC2, 0xA0, 0x00 },	/* 0xA0 */
+		{ 0xC2, 0xA1, 0x00 },	/* 0xA1 */
+		{ 0xC2, 0xA2, 0x00 },	/* 0xA2 */
+		{ 0xC2, 0xA3, 0x00 },	/* 0xA3 */
+		{ 0xC2, 0xA4, 0x00 },	/* 0xA4 */
+		{ 0xC2, 0xA5, 0x00 },	/* 0xA5 */
+		{ 0xC2, 0xA6, 0x00 },	/* 0xA6 */
+		{ 0xC2, 0xA7, 0x00 },	/* 0xA7 */
+		{ 0xC2, 0xA8, 0x00 },	/* 0xA8 */
+		{ 0xC2, 0xA9, 0x00 },	/* 0xA9 */
+		{ 0xC2, 0xAA, 0x00 },	/* 0xAA */
+		{ 0xC2, 0xAB, 0x00 },	/* 0xAB */
+		{ 0xC2, 0xAC, 0x00 },	/* 0xAC */
+		{ 0xC2, 0xAD, 0x00 },	/* 0xAD */
+		{ 0xC2, 0xAE, 0x00 },	/* 0xAE */
+		{ 0xC2, 0xAF, 0x00 },	/* 0xAF */
+		{ 0xC2, 0xB0, 0x00 },	/* 0xB0 */
+		{ 0xC2, 0xB1, 0x00 },	/* 0xB1 */
+		{ 0xC2, 0xB2, 0x00 },	/* 0xB2 */
+		{ 0xC2, 0xB3, 0x00 },	/* 0xB3 */
+		{ 0xC2, 0xB4, 0x00 },	/* 0xB4 */
+		{ 0xC2, 0xB5, 0x00 },	/* 0xB5 */
+		{ 0xC2, 0xB6, 0x00 },	/* 0xB6 */
+		{ 0xC2, 0xB7, 0x00 },	/* 0xB7 */
+		{ 0xC2, 0xB8, 0x00 },	/* 0xB8 */
+		{ 0xC2, 0xB9, 0x00 },	/* 0xB9 */
+		{ 0xC2, 0xBA, 0x00 },	/* 0xBA */
+		{ 0xC2, 0xBB, 0x00 },	/* 0xBB */
+		{ 0xC2, 0xBC, 0x00 },	/* 0xBC */
+		{ 0xC2, 0xBD, 0x00 },	/* 0xBD */
+		{ 0xC2, 0xBE, 0x00 },	/* 0xBE */
+		{ 0xC2, 0xBF, 0x00 },	/* 0xBF */
+		{ 0xC3, 0x80, 0x00 },	/* 0xC0 */
+		{ 0xC3, 0x81, 0x00 },	/* 0xC1 */
+		{ 0xC3, 0x82, 0x00 },	/* 0xC2 */
+		{ 0xC3, 0x83, 0x00 },	/* 0xC3 */
+		{ 0xC3, 0x84, 0x00 },	/* 0xC4 */
+		{ 0xC3, 0x85, 0x00 },	/* 0xC5 */
+		{ 0xC3, 0x86, 0x00 },	/* 0xC6 */
+		{ 0xC3, 0x87, 0x00 },	/* 0xC7 */
+		{ 0xC3, 0x88, 0x00 },	/* 0xC8 */
+		{ 0xC3, 0x89, 0x00 },	/* 0xC9 */
+		{ 0xC3, 0x8A, 0x00 },	/* 0xCA */
+		{ 0xC3, 0x8B, 0x00 },	/* 0xCB */
+		{ 0xC3, 0x8C, 0x00 },	/* 0xCC */
+		{ 0xC3, 0x8D, 0x00 },	/* 0xCD */
+		{ 0xC3, 0x8E, 0x00 },	/* 0xCE */
+		{ 0xC3, 0x8F, 0x00 },	/* 0xCF */
+		{ 0xC3, 0x90, 0x00 },	/* 0xD0 */
+		{ 0xC3, 0x91, 0x00 },	/* 0xD1 */
+		{ 0xC3, 0x92, 0x00 },	/* 0xD2 */
+		{ 0xC3, 0x93, 0x00 },	/* 0xD3 */
+		{ 0xC3, 0x94, 0x00 },	/* 0xD4 */
+		{ 0xC3, 0x95, 0x00 },	/* 0xD5 */
+		{ 0xC3, 0x96, 0x00 },	/* 0xD6 */
+		{ 0xC3, 0x97, 0x00 },	/* 0xD7 */
+		{ 0xC3, 0x98, 0x00 },	/* 0xD8 */
+		{ 0xC3, 0x99, 0x00 },	/* 0xD9 */
+		{ 0xC3, 0x9A, 0x00 },	/* 0xDA */
+		{ 0xC3, 0x9B, 0x00 },	/* 0xDB */
+		{ 0xC3, 0x9C, 0x00 },	/* 0xDC */
+		{ 0xC3, 0x9D, 0x00 },	/* 0xDD */
+		{ 0xC3, 0x9E, 0x00 },	/* 0xDE */
+		{ 0xC3, 0x9F, 0x00 },	/* 0xDF */
+		{ 0xC3, 0xA0, 0x00 },	/* 0xE0 */
+		{ 0xC3, 0xA1, 0x00 },	/* 0xE1 */
+		{ 0xC3, 0xA2, 0x00 },	/* 0xE2 */
+		{ 0xC3, 0xA3, 0x00 },	/* 0xE3 */
+		{ 0xC3, 0xA4, 0x00 },	/* 0xE4 */
+		{ 0xC3, 0xA5, 0x00 },	/* 0xE5 */
+		{ 0xC3, 0xA6, 0x00 },	/* 0xE6 */
+		{ 0xC3, 0xA7, 0x00 },	/* 0xE7 */
+		{ 0xC3, 0xA8, 0x00 },	/* 0xE8 */
+		{ 0xC3, 0xA9, 0x00 },	/* 0xE9 */
+		{ 0xC3, 0xAA, 0x00 },	/* 0xEA */
+		{ 0xC3, 0xAB, 0x00 },	/* 0xEB */
+		{ 0xC3, 0xAC, 0x00 },	/* 0xEC */
+		{ 0xC3, 0xAD, 0x00 },	/* 0xED */
+		{ 0xC3, 0xAE, 0x00 },	/* 0xEE */
+		{ 0xC3, 0xAF, 0x00 },	/* 0xEF */
+		{ 0xC3, 0xB0, 0x00 },	/* 0xF0 */
+		{ 0xC3, 0xB1, 0x00 },	/* 0xF1 */
+		{ 0xC3, 0xB2, 0x00 },	/* 0xF2 */
+		{ 0xC3, 0xB3, 0x00 },	/* 0xF3 */
+		{ 0xC3, 0xB4, 0x00 },	/* 0xF4 */
+		{ 0xC3, 0xB5, 0x00 },	/* 0xF5 */
+		{ 0xC3, 0xB6, 0x00 },	/* 0xF6 */
+		{ 0xC3, 0xB7, 0x00 },	/* 0xF7 */
+		{ 0xC3, 0xB8, 0x00 },	/* 0xF8 */
+		{ 0xC3, 0xB9, 0x00 },	/* 0xF9 */
+		{ 0xC3, 0xBA, 0x00 },	/* 0xFA */
+		{ 0xC3, 0xBB, 0x00 },	/* 0xFB */
+		{ 0xC3, 0xBC, 0x00 },	/* 0xFC */
+		{ 0xC3, 0xBD, 0x00 },	/* 0xFD */
+		{ 0xC3, 0xBE, 0x00 },	/* 0xFE */
+		{ 0xC3, 0xBF, 0x00 },	/* 0xFF */
+	},
+	{	/* ISO 8859-15 -> UTF-8 */
+		{ 0xC2, 0x80, 0x00 },	/* 0x80 */
+		{ 0xC2, 0x81, 0x00 },	/* 0x81 */
+		{ 0xC2, 0x82, 0x00 },	/* 0x82 */
+		{ 0xC2, 0x83, 0x00 },	/* 0x83 */
+		{ 0xC2, 0x84, 0x00 },	/* 0x84 */
+		{ 0xC2, 0x85, 0x00 },	/* 0x85 */
+		{ 0xC2, 0x86, 0x00 },	/* 0x86 */
+		{ 0xC2, 0x87, 0x00 },	/* 0x87 */
+		{ 0xC2, 0x88, 0x00 },	/* 0x88 */
+		{ 0xC2, 0x89, 0x00 },	/* 0x89 */
+		{ 0xC2, 0x8A, 0x00 },	/* 0x8A */
+		{ 0xC2, 0x8B, 0x00 },	/* 0x8B */
+		{ 0xC2, 0x8C, 0x00 },	/* 0x8C */
+		{ 0xC2, 0x8D, 0x00 },	/* 0x8D */
+		{ 0xC2, 0x8E, 0x00 },	/* 0x8E */
+		{ 0xC2, 0x8F, 0x00 },	/* 0x8F */
+		{ 0xC2, 0x90, 0x00 },	/* 0x90 */
+		{ 0xC2, 0x91, 0x00 },	/* 0x91 */
+		{ 0xC2, 0x92, 0x00 },	/* 0x92 */
+		{ 0xC2, 0x93, 0x00 },	/* 0x93 */
+		{ 0xC2, 0x94, 0x00 },	/* 0x94 */
+		{ 0xC2, 0x95, 0x00 },	/* 0x95 */
+		{ 0xC2, 0x96, 0x00 },	/* 0x96 */
+		{ 0xC2, 0x97, 0x00 },	/* 0x97 */
+		{ 0xC2, 0x98, 0x00 },	/* 0x98 */
+		{ 0xC2, 0x99, 0x00 },	/* 0x99 */
+		{ 0xC2, 0x9A, 0x00 },	/* 0x9A */
+		{ 0xC2, 0x9B, 0x00 },	/* 0x9B */
+		{ 0xC2, 0x9C, 0x00 },	/* 0x9C */
+		{ 0xC2, 0x9D, 0x00 },	/* 0x9D */
+		{ 0xC2, 0x9E, 0x00 },	/* 0x9E */
+		{ 0xC2, 0x9F, 0x00 },	/* 0x9F */
+		{ 0xC2, 0xA0, 0x00 },	/* 0xA0 */
+		{ 0xC2, 0xA1, 0x00 },	/* 0xA1 */
+		{ 0xC2, 0xA2, 0x00 },	/* 0xA2 */
+		{ 0xC2, 0xA3, 0x00 },	/* 0xA3 */
+		{ 0xE2, 0x82, 0xAC },	/* 0xA4 */
+		{ 0xC2, 0xA5, 0x00 },	/* 0xA5 */
+		{ 0xC5, 0xA0, 0x00 },	/* 0xA6 */
+		{ 0xC2, 0xA7, 0x00 },	/* 0xA7 */
+		{ 0xC5, 0xA1, 0x00 },	/* 0xA8 */
+		{ 0xC2, 0xA9, 0x00 },	/* 0xA9 */
+		{ 0xC2, 0xAA, 0x00 },	/* 0xAA */
+		{ 0xC2, 0xAB, 0x00 },	/* 0xAB */
+		{ 0xC2, 0xAC, 0x00 },	/* 0xAC */
+		{ 0xC2, 0xAD, 0x00 },	/* 0xAD */
+		{ 0xC2, 0xAE, 0x00 },	/* 0xAE */
+		{ 0xC2, 0xAF, 0x00 },	/* 0xAF */
+		{ 0xC2, 0xB0, 0x00 },	/* 0xB0 */
+		{ 0xC2, 0xB1, 0x00 },	/* 0xB1 */
+		{ 0xC2, 0xB2, 0x00 },	/* 0xB2 */
+		{ 0xC2, 0xB3, 0x00 },	/* 0xB3 */
+		{ 0xC5, 0xBD, 0x00 },	/* 0xB4 */
+		{ 0xC2, 0xB5, 0x00 },	/* 0xB5 */
+		{ 0xC2, 0xB6, 0x00 },	/* 0xB6 */
+		{ 0xC2, 0xB7, 0x00 },	/* 0xB7 */
+		{ 0xC5, 0xBE, 0x00 },	/* 0xB8 */
+		{ 0xC2, 0xB9, 0x00 },	/* 0xB9 */
+		{ 0xC2, 0xBA, 0x00 },	/* 0xBA */
+		{ 0xC2, 0xBB, 0x00 },	/* 0xBB */
+		{ 0xC5, 0x92, 0x00 },	/* 0xBC */
+		{ 0xC5, 0x93, 0x00 },	/* 0xBD */
+		{ 0xC5, 0xB8, 0x00 },	/* 0xBE */
+		{ 0xC2, 0xBF, 0x00 },	/* 0xBF */
+		{ 0xC3, 0x80, 0x00 },	/* 0xC0 */
+		{ 0xC3, 0x81, 0x00 },	/* 0xC1 */
+		{ 0xC3, 0x82, 0x00 },	/* 0xC2 */
+		{ 0xC3, 0x83, 0x00 },	/* 0xC3 */
+		{ 0xC3, 0x84, 0x00 },	/* 0xC4 */
+		{ 0xC3, 0x85, 0x00 },	/* 0xC5 */
+		{ 0xC3, 0x86, 0x00 },	/* 0xC6 */
+		{ 0xC3, 0x87, 0x00 },	/* 0xC7 */
+		{ 0xC3, 0x88, 0x00 },	/* 0xC8 */
+		{ 0xC3, 0x89, 0x00 },	/* 0xC9 */
+		{ 0xC3, 0x8A, 0x00 },	/* 0xCA */
+		{ 0xC3, 0x8B, 0x00 },	/* 0xCB */
+		{ 0xC3, 0x8C, 0x00 },	/* 0xCC */
+		{ 0xC3, 0x8D, 0x00 },	/* 0xCD */
+		{ 0xC3, 0x8E, 0x00 },	/* 0xCE */
+		{ 0xC3, 0x8F, 0x00 },	/* 0xCF */
+		{ 0xC3, 0x90, 0x00 },	/* 0xD0 */
+		{ 0xC3, 0x91, 0x00 },	/* 0xD1 */
+		{ 0xC3, 0x92, 0x00 },	/* 0xD2 */
+		{ 0xC3, 0x93, 0x00 },	/* 0xD3 */
+		{ 0xC3, 0x94, 0x00 },	/* 0xD4 */
+		{ 0xC3, 0x95, 0x00 },	/* 0xD5 */
+		{ 0xC3, 0x96, 0x00 },	/* 0xD6 */
+		{ 0xC3, 0x97, 0x00 },	/* 0xD7 */
+		{ 0xC3, 0x98, 0x00 },	/* 0xD8 */
+		{ 0xC3, 0x99, 0x00 },	/* 0xD9 */
+		{ 0xC3, 0x9A, 0x00 },	/* 0xDA */
+		{ 0xC3, 0x9B, 0x00 },	/* 0xDB */
+		{ 0xC3, 0x9C, 0x00 },	/* 0xDC */
+		{ 0xC3, 0x9D, 0x00 },	/* 0xDD */
+		{ 0xC3, 0x9E, 0x00 },	/* 0xDE */
+		{ 0xC3, 0x9F, 0x00 },	/* 0xDF */
+		{ 0xC3, 0xA0, 0x00 },	/* 0xE0 */
+		{ 0xC3, 0xA1, 0x00 },	/* 0xE1 */
+		{ 0xC3, 0xA2, 0x00 },	/* 0xE2 */
+		{ 0xC3, 0xA3, 0x00 },	/* 0xE3 */
+		{ 0xC3, 0xA4, 0x00 },	/* 0xE4 */
+		{ 0xC3, 0xA5, 0x00 },	/* 0xE5 */
+		{ 0xC3, 0xA6, 0x00 },	/* 0xE6 */
+		{ 0xC3, 0xA7, 0x00 },	/* 0xE7 */
+		{ 0xC3, 0xA8, 0x00 },	/* 0xE8 */
+		{ 0xC3, 0xA9, 0x00 },	/* 0xE9 */
+		{ 0xC3, 0xAA, 0x00 },	/* 0xEA */
+		{ 0xC3, 0xAB, 0x00 },	/* 0xEB */
+		{ 0xC3, 0xAC, 0x00 },	/* 0xEC */
+		{ 0xC3, 0xAD, 0x00 },	/* 0xED */
+		{ 0xC3, 0xAE, 0x00 },	/* 0xEE */
+		{ 0xC3, 0xAF, 0x00 },	/* 0xEF */
+		{ 0xC3, 0xB0, 0x00 },	/* 0xF0 */
+		{ 0xC3, 0xB1, 0x00 },	/* 0xF1 */
+		{ 0xC3, 0xB2, 0x00 },	/* 0xF2 */
+		{ 0xC3, 0xB3, 0x00 },	/* 0xF3 */
+		{ 0xC3, 0xB4, 0x00 },	/* 0xF4 */
+		{ 0xC3, 0xB5, 0x00 },	/* 0xF5 */
+		{ 0xC3, 0xB6, 0x00 },	/* 0xF6 */
+		{ 0xC3, 0xB7, 0x00 },	/* 0xF7 */
+		{ 0xC3, 0xB8, 0x00 },	/* 0xF8 */
+		{ 0xC3, 0xB9, 0x00 },	/* 0xF9 */
+		{ 0xC3, 0xBA, 0x00 },	/* 0xFA */
+		{ 0xC3, 0xBB, 0x00 },	/* 0xFB */
+		{ 0xC3, 0xBC, 0x00 },	/* 0xFC */
+		{ 0xC3, 0xBD, 0x00 },	/* 0xFD */
+		{ 0xC3, 0xBE, 0x00 },	/* 0xFE */
+		{ 0xC3, 0xBF, 0x00 },	/* 0xFF */
+	},
+	{	/* CP850 -> UTF-8 */
+		{ 0xC3, 0x87, 0x00 },	/* 0x80 */
+		{ 0xC3, 0xBC, 0x00 },	/* 0x81 */
+		{ 0xC3, 0xA9, 0x00 },	/* 0x82 */
+		{ 0xC3, 0xA2, 0x00 },	/* 0x83 */
+		{ 0xC3, 0xA4, 0x00 },	/* 0x84 */
+		{ 0xC3, 0xA0, 0x00 },	/* 0x85 */
+		{ 0xC3, 0xA5, 0x00 },	/* 0x86 */
+		{ 0xC3, 0xA7, 0x00 },	/* 0x87 */
+		{ 0xC3, 0xAA, 0x00 },	/* 0x88 */
+		{ 0xC3, 0xAB, 0x00 },	/* 0x89 */
+		{ 0xC3, 0xA8, 0x00 },	/* 0x8A */
+		{ 0xC3, 0xAF, 0x00 },	/* 0x8B */
+		{ 0xC3, 0xAE, 0x00 },	/* 0x8C */
+		{ 0xC3, 0xAC, 0x00 },	/* 0x8D */
+		{ 0xC3, 0x84, 0x00 },	/* 0x8E */
+		{ 0xC3, 0x85, 0x00 },	/* 0x8F */
+		{ 0xC3, 0x89, 0x00 },	/* 0x90 */
+		{ 0xC3, 0xA6, 0x00 },	/* 0x91 */
+		{ 0xC3, 0x86, 0x00 },	/* 0x92 */
+		{ 0xC3, 0xB4, 0x00 },	/* 0x93 */
+		{ 0xC3, 0xB6, 0x00 },	/* 0x94 */
+		{ 0xC3, 0xB2, 0x00 },	/* 0x95 */
+		{ 0xC3, 0xBB, 0x00 },	/* 0x96 */
+		{ 0xC3, 0xB9, 0x00 },	/* 0x97 */
+		{ 0xC3, 0xBF, 0x00 },	/* 0x98 */
+		{ 0xC3, 0x96, 0x00 },	/* 0x99 */
+		{ 0xC3, 0x9C, 0x00 },	/* 0x9A */
+		{ 0xC3, 0xB8, 0x00 },	/* 0x9B */
+		{ 0xC2, 0xA3, 0x00 },	/* 0x9C */
+		{ 0xC3, 0x98, 0x00 },	/* 0x9D */
+		{ 0xC3, 0x97, 0x00 },	/* 0x9E */
+		{ 0xC6, 0x92, 0x00 },	/* 0x9F */
+		{ 0xC3, 0xA1, 0x00 },	/* 0xA0 */
+		{ 0xC3, 0xAD, 0x00 },	/* 0xA1 */
+		{ 0xC3, 0xB3, 0x00 },	/* 0xA2 */
+		{ 0xC3, 0xBA, 0x00 },	/* 0xA3 */
+		{ 0xC3, 0xB1, 0x00 },	/* 0xA4 */
+		{ 0xC3, 0x91, 0x00 },	/* 0xA5 */
+		{ 0xC2, 0xAA, 0x00 },	/* 0xA6 */
+		{ 0xC2, 0xBA, 0x00 },	/* 0xA7 */
+		{ 0xC2, 0xBF, 0x00 },	/* 0xA8 */
+		{ 0xC2, 0xAE, 0x00 },	/* 0xA9 */
+		{ 0xC2, 0xAC, 0x00 },	/* 0xAA */
+		{ 0xC2, 0xBD, 0x00 },	/* 0xAB */
+		{ 0xC2, 0xBC, 0x00 },	/* 0xAC */
+		{ 0xC2, 0xA1, 0x00 },	/* 0xAD */
+		{ 0xC2, 0xAB, 0x00 },	/* 0xAE */
+		{ 0xC2, 0xBB, 0x00 },	/* 0xAF */
+		{ 0xE2, 0x96, 0x91 },	/* 0xB0 */
+		{ 0xE2, 0x96, 0x92 },	/* 0xB1 */
+		{ 0xE2, 0x96, 0x93 },	/* 0xB2 */
+		{ 0xE2, 0x94, 0x82 },	/* 0xB3 */
+		{ 0xE2, 0x94, 0xA4 },	/* 0xB4 */
+		{ 0xC3, 0x81, 0x00 },	/* 0xB5 */
+		{ 0xC3, 0x82, 0x00 },	/* 0xB6 */
+		{ 0xC3, 0x80, 0x00 },	/* 0xB7 */
+		{ 0xC2, 0xA9, 0x00 },	/* 0xB8 */
+		{ 0xE2, 0x95, 0xA3 },	/* 0xB9 */
+		{ 0xE2, 0x95, 0x91 },	/* 0xBA */
+		{ 0xE2, 0x95, 0x97 },	/* 0xBB */
+		{ 0xE2, 0x95, 0x9D },	/* 0xBC */
+		{ 0xC2, 0xA2, 0x00 },	/* 0xBD */
+		{ 0xC2, 0xA5, 0x00 },	/* 0xBE */
+		{ 0xE2, 0x94, 0x90 },	/* 0xBF */
+		{ 0xE2, 0x94, 0x94 },	/* 0xC0 */
+		{ 0xE2, 0x94, 0xB4 },	/* 0xC1 */
+		{ 0xE2, 0x94, 0xAC },	/* 0xC2 */
+		{ 0xE2, 0x94, 0x9C },	/* 0xC3 */
+		{ 0xE2, 0x94, 0x80 },	/* 0xC4 */
+		{ 0xE2, 0x94, 0xBC },	/* 0xC5 */
+		{ 0xC3, 0xA3, 0x00 },	/* 0xC6 */
+		{ 0xC3, 0x83, 0x00 },	/* 0xC7 */
+		{ 0xE2, 0x95, 0x9A },	/* 0xC8 */
+		{ 0xE2, 0x95, 0x94 },	/* 0xC9 */
+		{ 0xE2, 0x95, 0xA9 },	/* 0xCA */
+		{ 0xE2, 0x95, 0xA6 },	/* 0xCB */
+		{ 0xE2, 0x95, 0xA0 },	/* 0xCC */
+		{ 0xE2, 0x95, 0x90 },	/* 0xCD */
+		{ 0xE2, 0x95, 0xAC },	/* 0xCE */
+		{ 0xC2, 0xA4, 0x00 },	/* 0xCF */
+		{ 0xC3, 0xB0, 0x00 },	/* 0xD0 */
+		{ 0xC3, 0x90, 0x00 },	/* 0xD1 */
+		{ 0xC3, 0x8A, 0x00 },	/* 0xD2 */
+		{ 0xC3, 0x8B, 0x00 },	/* 0xD3 */
+		{ 0xC3, 0x88, 0x00 },	/* 0xD4 */
+		{ 0xC4, 0xB1, 0x00 },	/* 0xD5 */
+		{ 0xC3, 0x8D, 0x00 },	/* 0xD6 */
+		{ 0xC3, 0x8E, 0x00 },	/* 0xD7 */
+		{ 0xC3, 0x8F, 0x00 },	/* 0xD8 */
+		{ 0xE2, 0x94, 0x98 },	/* 0xD9 */
+		{ 0xE2, 0x94, 0x8C },	/* 0xDA */
+		{ 0xE2, 0x96, 0x88 },	/* 0xDB */
+		{ 0xE2, 0x96, 0x84 },	/* 0xDC */
+		{ 0xC2, 0xA6, 0x00 },	/* 0xDD */
+		{ 0xC3, 0x8C, 0x00 },	/* 0xDE */
+		{ 0xE2, 0x96, 0x80 },	/* 0xDF */
+		{ 0xC3, 0x93, 0x00 },	/* 0xE0 */
+		{ 0xC3, 0x9F, 0x00 },	/* 0xE1 */
+		{ 0xC3, 0x94, 0x00 },	/* 0xE2 */
+		{ 0xC3, 0x92, 0x00 },	/* 0xE3 */
+		{ 0xC3, 0xB5, 0x00 },	/* 0xE4 */
+		{ 0xC3, 0x95, 0x00 },	/* 0xE5 */
+		{ 0xC2, 0xB5, 0x00 },	/* 0xE6 */
+		{ 0xC3, 0xBE, 0x00 },	/* 0xE7 */
+		{ 0xC3, 0x9E, 0x00 },	/* 0xE8 */
+		{ 0xC3, 0x9A, 0x00 },	/* 0xE9 */
+		{ 0xC3, 0x9B, 0x00 },	/* 0xEA */
+		{ 0xC3, 0x99, 0x00 },	/* 0xEB */
+		{ 0xC3, 0xBD, 0x00 },	/* 0xEC */
+		{ 0xC3, 0x9D, 0x00 },	/* 0xED */
+		{ 0xC2, 0xAF, 0x00 },	/* 0xEE */
+		{ 0xC2, 0xB4, 0x00 },	/* 0xEF */
+		{ 0xC2, 0xAD, 0x00 },	/* 0xF0 */
+		{ 0xC2, 0xB1, 0x00 },	/* 0xF1 */
+		{ 0xE2, 0x80, 0x97 },	/* 0xF2 */
+		{ 0xC2, 0xBE, 0x00 },	/* 0xF3 */
+		{ 0xC2, 0xB6, 0x00 },	/* 0xF4 */
+		{ 0xC2, 0xA7, 0x00 },	/* 0xF5 */
+		{ 0xC3, 0xB7, 0x00 },	/* 0xF6 */
+		{ 0xC2, 0xB8, 0x00 },	/* 0xF7 */
+		{ 0xC2, 0xB0, 0x00 },	/* 0xF8 */
+		{ 0xC2, 0xA8, 0x00 },	/* 0xF9 */
+		{ 0xC2, 0xB7, 0x00 },	/* 0xFA */
+		{ 0xC2, 0xB9, 0x00 },	/* 0xFB */
+		{ 0xC2, 0xB3, 0x00 },	/* 0xFC */
+		{ 0xC2, 0xB2, 0x00 },	/* 0xFD */
+		{ 0xE2, 0x96, 0xA0 },	/* 0xFE */
+		{ 0xC2, 0xA0, 0x00 },	/* 0xFF */
+	}
+};
+
+/*
+ * Mapping tables from UTF-8 to CP1252, ISO 8859-1, ISO 8859-15, and CP850.
+ *
+ * Each table is sorted with UTF-8 values to be used with binary search.
+ * UTF-8 character byte values are saved at uint32_t:24 contiguously as
+ * scalar values.
+ */
+static const kiconv_to_sb_tbl_comp_t to_sb_tbl[4][128] = {
+	{	/* UTF-8 -> CP1252 */
+		{ 0x00C2A0, 0xA0 },
+		{ 0x00C2A1, 0xA1 },
+		{ 0x00C2A2, 0xA2 },
+		{ 0x00C2A3, 0xA3 },
+		{ 0x00C2A4, 0xA4 },
+		{ 0x00C2A5, 0xA5 },
+		{ 0x00C2A6, 0xA6 },
+		{ 0x00C2A7, 0xA7 },
+		{ 0x00C2A8, 0xA8 },
+		{ 0x00C2A9, 0xA9 },
+		{ 0x00C2AA, 0xAA },
+		{ 0x00C2AB, 0xAB },
+		{ 0x00C2AC, 0xAC },
+		{ 0x00C2AD, 0xAD },
+		{ 0x00C2AE, 0xAE },
+		{ 0x00C2AF, 0xAF },
+		{ 0x00C2B0, 0xB0 },
+		{ 0x00C2B1, 0xB1 },
+		{ 0x00C2B2, 0xB2 },
+		{ 0x00C2B3, 0xB3 },
+		{ 0x00C2B4, 0xB4 },
+		{ 0x00C2B5, 0xB5 },
+		{ 0x00C2B6, 0xB6 },
+		{ 0x00C2B7, 0xB7 },
+		{ 0x00C2B8, 0xB8 },
+		{ 0x00C2B9, 0xB9 },
+		{ 0x00C2BA, 0xBA },
+		{ 0x00C2BB, 0xBB },
+		{ 0x00C2BC, 0xBC },
+		{ 0x00C2BD, 0xBD },
+		{ 0x00C2BE, 0xBE },
+		{ 0x00C2BF, 0xBF },
+		{ 0x00C380, 0xC0 },
+		{ 0x00C381, 0xC1 },
+		{ 0x00C382, 0xC2 },
+		{ 0x00C383, 0xC3 },
+		{ 0x00C384, 0xC4 },
+		{ 0x00C385, 0xC5 },
+		{ 0x00C386, 0xC6 },
+		{ 0x00C387, 0xC7 },
+		{ 0x00C388, 0xC8 },
+		{ 0x00C389, 0xC9 },
+		{ 0x00C38A, 0xCA },
+		{ 0x00C38B, 0xCB },
+		{ 0x00C38C, 0xCC },
+		{ 0x00C38D, 0xCD },
+		{ 0x00C38E, 0xCE },
+		{ 0x00C38F, 0xCF },
+		{ 0x00C390, 0xD0 },
+		{ 0x00C391, 0xD1 },
+		{ 0x00C392, 0xD2 },
+		{ 0x00C393, 0xD3 },
+		{ 0x00C394, 0xD4 },
+		{ 0x00C395, 0xD5 },
+		{ 0x00C396, 0xD6 },
+		{ 0x00C397, 0xD7 },
+		{ 0x00C398, 0xD8 },
+		{ 0x00C399, 0xD9 },
+		{ 0x00C39A, 0xDA },
+		{ 0x00C39B, 0xDB },
+		{ 0x00C39C, 0xDC },
+		{ 0x00C39D, 0xDD },
+		{ 0x00C39E, 0xDE },
+		{ 0x00C39F, 0xDF },
+		{ 0x00C3A0, 0xE0 },
+		{ 0x00C3A1, 0xE1 },
+		{ 0x00C3A2, 0xE2 },
+		{ 0x00C3A3, 0xE3 },
+		{ 0x00C3A4, 0xE4 },
+		{ 0x00C3A5, 0xE5 },
+		{ 0x00C3A6, 0xE6 },
+		{ 0x00C3A7, 0xE7 },
+		{ 0x00C3A8, 0xE8 },
+		{ 0x00C3A9, 0xE9 },
+		{ 0x00C3AA, 0xEA },
+		{ 0x00C3AB, 0xEB },
+		{ 0x00C3AC, 0xEC },
+		{ 0x00C3AD, 0xED },
+		{ 0x00C3AE, 0xEE },
+		{ 0x00C3AF, 0xEF },
+		{ 0x00C3B0, 0xF0 },
+		{ 0x00C3B1, 0xF1 },
+		{ 0x00C3B2, 0xF2 },
+		{ 0x00C3B3, 0xF3 },
+		{ 0x00C3B4, 0xF4 },
+		{ 0x00C3B5, 0xF5 },
+		{ 0x00C3B6, 0xF6 },
+		{ 0x00C3B7, 0xF7 },
+		{ 0x00C3B8, 0xF8 },
+		{ 0x00C3B9, 0xF9 },
+		{ 0x00C3BA, 0xFA },
+		{ 0x00C3BB, 0xFB },
+		{ 0x00C3BC, 0xFC },
+		{ 0x00C3BD, 0xFD },
+		{ 0x00C3BE, 0xFE },
+		{ 0x00C3BF, 0xFF },
+		{ 0x00C592, 0x8C },
+		{ 0x00C593, 0x9C },
+		{ 0x00C5A0, 0x8A },
+		{ 0x00C5A1, 0x9A },
+		{ 0x00C5B8, 0x9F },
+		{ 0x00C5BD, 0x8E },
+		{ 0x00C5BE, 0x9E },
+		{ 0x00C692, 0x83 },
+		{ 0x00CB86, 0x88 },
+		{ 0x00CB9C, 0x98 },
+		{ 0xE28093, 0x96 },
+		{ 0xE28094, 0x97 },
+		{ 0xE28098, 0x91 },
+		{ 0xE28099, 0x92 },
+		{ 0xE2809A, 0x82 },
+		{ 0xE2809C, 0x93 },
+		{ 0xE2809D, 0x94 },
+		{ 0xE2809E, 0x84 },
+		{ 0xE280A0, 0x86 },
+		{ 0xE280A1, 0x87 },
+		{ 0xE280A2, 0x95 },
+		{ 0xE280A6, 0x85 },
+		{ 0xE280B0, 0x89 },
+		{ 0xE280B9, 0x8B },
+		{ 0xE280BA, 0x9B },
+		{ 0xE282AC, 0x80 },
+		{ 0xE284A2, 0x99 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+		{ 0xFFFFFF, 0x00 },
+	},
+	{	/* UTF-8 -> ISO 8859-1 */
+		{ 0x00C280, 0x80 },
+		{ 0x00C281, 0x81 },
+		{ 0x00C282, 0x82 },
+		{ 0x00C283, 0x83 },
+		{ 0x00C284, 0x84 },
+		{ 0x00C285, 0x85 },
+		{ 0x00C286, 0x86 },
+		{ 0x00C287, 0x87 },
+		{ 0x00C288, 0x88 },
+		{ 0x00C289, 0x89 },
+		{ 0x00C28A, 0x8A },
+		{ 0x00C28B, 0x8B },
+		{ 0x00C28C, 0x8C },
+		{ 0x00C28D, 0x8D },
+		{ 0x00C28E, 0x8E },
+		{ 0x00C28F, 0x8F },
+		{ 0x00C290, 0x90 },
+		{ 0x00C291, 0x91 },
+		{ 0x00C292, 0x92 },
+		{ 0x00C293, 0x93 },
+		{ 0x00C294, 0x94 },
+		{ 0x00C295, 0x95 },
+		{ 0x00C296, 0x96 },
+		{ 0x00C297, 0x97 },
+		{ 0x00C298, 0x98 },
+		{ 0x00C299, 0x99 },
+		{ 0x00C29A, 0x9A },
+		{ 0x00C29B, 0x9B },
+		{ 0x00C29C, 0x9C },
+		{ 0x00C29D, 0x9D },
+		{ 0x00C29E, 0x9E },
+		{ 0x00C29F, 0x9F },
+		{ 0x00C2A0, 0xA0 },
+		{ 0x00C2A1, 0xA1 },
+		{ 0x00C2A2, 0xA2 },
+		{ 0x00C2A3, 0xA3 },
+		{ 0x00C2A4, 0xA4 },
+		{ 0x00C2A5, 0xA5 },
+		{ 0x00C2A6, 0xA6 },
+		{ 0x00C2A7, 0xA7 },
+		{ 0x00C2A8, 0xA8 },
+		{ 0x00C2A9, 0xA9 },
+		{ 0x00C2AA, 0xAA },
+		{ 0x00C2AB, 0xAB },
+		{ 0x00C2AC, 0xAC },
+		{ 0x00C2AD, 0xAD },
+		{ 0x00C2AE, 0xAE },
+		{ 0x00C2AF, 0xAF },
+		{ 0x00C2B0, 0xB0 },
+		{ 0x00C2B1, 0xB1 },
+		{ 0x00C2B2, 0xB2 },
+		{ 0x00C2B3, 0xB3 },
+		{ 0x00C2B4, 0xB4 },
+		{ 0x00C2B5, 0xB5 },
+		{ 0x00C2B6, 0xB6 },
+		{ 0x00C2B7, 0xB7 },
+		{ 0x00C2B8, 0xB8 },
+		{ 0x00C2B9, 0xB9 },
+		{ 0x00C2BA, 0xBA },
+		{ 0x00C2BB, 0xBB },
+		{ 0x00C2BC, 0xBC },
+		{ 0x00C2BD, 0xBD },
+		{ 0x00C2BE, 0xBE },
+		{ 0x00C2BF, 0xBF },
+		{ 0x00C380, 0xC0 },
+		{ 0x00C381, 0xC1 },
+		{ 0x00C382, 0xC2 },
+		{ 0x00C383, 0xC3 },
+		{ 0x00C384, 0xC4 },
+		{ 0x00C385, 0xC5 },
+		{ 0x00C386, 0xC6 },
+		{ 0x00C387, 0xC7 },
+		{ 0x00C388, 0xC8 },
+		{ 0x00C389, 0xC9 },
+		{ 0x00C38A, 0xCA },
+		{ 0x00C38B, 0xCB },
+		{ 0x00C38C, 0xCC },
+		{ 0x00C38D, 0xCD },
+		{ 0x00C38E, 0xCE },
+		{ 0x00C38F, 0xCF },
+		{ 0x00C390, 0xD0 },
+		{ 0x00C391, 0xD1 },
+		{ 0x00C392, 0xD2 },
+		{ 0x00C393, 0xD3 },
+		{ 0x00C394, 0xD4 },
+		{ 0x00C395, 0xD5 },
+		{ 0x00C396, 0xD6 },
+		{ 0x00C397, 0xD7 },
+		{ 0x00C398, 0xD8 },
+		{ 0x00C399, 0xD9 },
+		{ 0x00C39A, 0xDA },
+		{ 0x00C39B, 0xDB },
+		{ 0x00C39C, 0xDC },
+		{ 0x00C39D, 0xDD },
+		{ 0x00C39E, 0xDE },
+		{ 0x00C39F, 0xDF },
+		{ 0x00C3A0, 0xE0 },
+		{ 0x00C3A1, 0xE1 },
+		{ 0x00C3A2, 0xE2 },
+		{ 0x00C3A3, 0xE3 },
+		{ 0x00C3A4, 0xE4 },
+		{ 0x00C3A5, 0xE5 },
+		{ 0x00C3A6, 0xE6 },
+		{ 0x00C3A7, 0xE7 },
+		{ 0x00C3A8, 0xE8 },
+		{ 0x00C3A9, 0xE9 },
+		{ 0x00C3AA, 0xEA },
+		{ 0x00C3AB, 0xEB },
+		{ 0x00C3AC, 0xEC },
+		{ 0x00C3AD, 0xED },
+		{ 0x00C3AE, 0xEE },
+		{ 0x00C3AF, 0xEF },
+		{ 0x00C3B0, 0xF0 },
+		{ 0x00C3B1, 0xF1 },
+		{ 0x00C3B2, 0xF2 },
+		{ 0x00C3B3, 0xF3 },
+		{ 0x00C3B4, 0xF4 },
+		{ 0x00C3B5, 0xF5 },
+		{ 0x00C3B6, 0xF6 },
+		{ 0x00C3B7, 0xF7 },
+		{ 0x00C3B8, 0xF8 },
+		{ 0x00C3B9, 0xF9 },
+		{ 0x00C3BA, 0xFA },
+		{ 0x00C3BB, 0xFB },
+		{ 0x00C3BC, 0xFC },
+		{ 0x00C3BD, 0xFD },
+		{ 0x00C3BE, 0xFE },
+		{ 0x00C3BF, 0xFF },
+	},
+	{	/* UTF-8 -> ISO 8859-15 */
+		{ 0x00C280, 0x80 },
+		{ 0x00C281, 0x81 },
+		{ 0x00C282, 0x82 },
+		{ 0x00C283, 0x83 },
+		{ 0x00C284, 0x84 },
+		{ 0x00C285, 0x85 },
+		{ 0x00C286, 0x86 },
+		{ 0x00C287, 0x87 },
+		{ 0x00C288, 0x88 },
+		{ 0x00C289, 0x89 },
+		{ 0x00C28A, 0x8A },
+		{ 0x00C28B, 0x8B },
+		{ 0x00C28C, 0x8C },
+		{ 0x00C28D, 0x8D },
+		{ 0x00C28E, 0x8E },
+		{ 0x00C28F, 0x8F },
+		{ 0x00C290, 0x90 },
+		{ 0x00C291, 0x91 },
+		{ 0x00C292, 0x92 },
+		{ 0x00C293, 0x93 },
+		{ 0x00C294, 0x94 },
+		{ 0x00C295, 0x95 },
+		{ 0x00C296, 0x96 },
+		{ 0x00C297, 0x97 },
+		{ 0x00C298, 0x98 },
+		{ 0x00C299, 0x99 },
+		{ 0x00C29A, 0x9A },
+		{ 0x00C29B, 0x9B },
+		{ 0x00C29C, 0x9C },
+		{ 0x00C29D, 0x9D },
+		{ 0x00C29E, 0x9E },
+		{ 0x00C29F, 0x9F },
+		{ 0x00C2A0, 0xA0 },
+		{ 0x00C2A1, 0xA1 },
+		{ 0x00C2A2, 0xA2 },
+		{ 0x00C2A3, 0xA3 },
+		{ 0x00C2A5, 0xA5 },
+		{ 0x00C2A7, 0xA7 },
+		{ 0x00C2A9, 0xA9 },
+		{ 0x00C2AA, 0xAA },
+		{ 0x00C2AB, 0xAB },
+		{ 0x00C2AC, 0xAC },
+		{ 0x00C2AD, 0xAD },
+		{ 0x00C2AE, 0xAE },
+		{ 0x00C2AF, 0xAF },
+		{ 0x00C2B0, 0xB0 },
+		{ 0x00C2B1, 0xB1 },
+		{ 0x00C2B2, 0xB2 },
+		{ 0x00C2B3, 0xB3 },
+		{ 0x00C2B5, 0xB5 },
+		{ 0x00C2B6, 0xB6 },
+		{ 0x00C2B7, 0xB7 },
+		{ 0x00C2B9, 0xB9 },
+		{ 0x00C2BA, 0xBA },
+		{ 0x00C2BB, 0xBB },
+		{ 0x00C2BF, 0xBF },
+		{ 0x00C380, 0xC0 },
+		{ 0x00C381, 0xC1 },
+		{ 0x00C382, 0xC2 },
+		{ 0x00C383, 0xC3 },
+		{ 0x00C384, 0xC4 },
+		{ 0x00C385, 0xC5 },
+		{ 0x00C386, 0xC6 },
+		{ 0x00C387, 0xC7 },
+		{ 0x00C388, 0xC8 },
+		{ 0x00C389, 0xC9 },
+		{ 0x00C38A, 0xCA },
+		{ 0x00C38B, 0xCB },
+		{ 0x00C38C, 0xCC },
+		{ 0x00C38D, 0xCD },
+		{ 0x00C38E, 0xCE },
+		{ 0x00C38F, 0xCF },
+		{ 0x00C390, 0xD0 },
+		{ 0x00C391, 0xD1 },
+		{ 0x00C392, 0xD2 },
+		{ 0x00C393, 0xD3 },
+		{ 0x00C394, 0xD4 },
+		{ 0x00C395, 0xD5 },
+		{ 0x00C396, 0xD6 },
+		{ 0x00C397, 0xD7 },
+		{ 0x00C398, 0xD8 },
+		{ 0x00C399, 0xD9 },
+		{ 0x00C39A, 0xDA },
+		{ 0x00C39B, 0xDB },
+		{ 0x00C39C, 0xDC },
+		{ 0x00C39D, 0xDD },
+		{ 0x00C39E, 0xDE },
+		{ 0x00C39F, 0xDF },
+		{ 0x00C3A0, 0xE0 },
+		{ 0x00C3A1, 0xE1 },
+		{ 0x00C3A2, 0xE2 },
+		{ 0x00C3A3, 0xE3 },
+		{ 0x00C3A4, 0xE4 },
+		{ 0x00C3A5, 0xE5 },
+		{ 0x00C3A6, 0xE6 },
+		{ 0x00C3A7, 0xE7 },
+		{ 0x00C3A8, 0xE8 },
+		{ 0x00C3A9, 0xE9 },
+		{ 0x00C3AA, 0xEA },
+		{ 0x00C3AB, 0xEB },
+		{ 0x00C3AC, 0xEC },
+		{ 0x00C3AD, 0xED },
+		{ 0x00C3AE, 0xEE },
+		{ 0x00C3AF, 0xEF },
+		{ 0x00C3B0, 0xF0 },
+		{ 0x00C3B1, 0xF1 },
+		{ 0x00C3B2, 0xF2 },
+		{ 0x00C3B3, 0xF3 },
+		{ 0x00C3B4, 0xF4 },
+		{ 0x00C3B5, 0xF5 },
+		{ 0x00C3B6, 0xF6 },
+		{ 0x00C3B7, 0xF7 },
+		{ 0x00C3B8, 0xF8 },
+		{ 0x00C3B9, 0xF9 },
+		{ 0x00C3BA, 0xFA },
+		{ 0x00C3BB, 0xFB },
+		{ 0x00C3BC, 0xFC },
+		{ 0x00C3BD, 0xFD },
+		{ 0x00C3BE, 0xFE },
+		{ 0x00C3BF, 0xFF },
+		{ 0x00C592, 0xBC },
+		{ 0x00C593, 0xBD },
+		{ 0x00C5A0, 0xA6 },
+		{ 0x00C5A1, 0xA8 },
+		{ 0x00C5B8, 0xBE },
+		{ 0x00C5BD, 0xB4 },
+		{ 0x00C5BE, 0xB8 },
+		{ 0xE282AC, 0xA4 },
+	},
+	{	/* UTF-8 -> CP850 */
+		{ 0x00C2A0, 0xFF },
+		{ 0x00C2A1, 0xAD },
+		{ 0x00C2A2, 0xBD },
+		{ 0x00C2A3, 0x9C },
+		{ 0x00C2A4, 0xCF },
+		{ 0x00C2A5, 0xBE },
+		{ 0x00C2A6, 0xDD },
+		{ 0x00C2A7, 0xF5 },
+		{ 0x00C2A8, 0xF9 },
+		{ 0x00C2A9, 0xB8 },
+		{ 0x00C2AA, 0xA6 },
+		{ 0x00C2AB, 0xAE },
+		{ 0x00C2AC, 0xAA },
+		{ 0x00C2AD, 0xF0 },
+		{ 0x00C2AE, 0xA9 },
+		{ 0x00C2AF, 0xEE },
+		{ 0x00C2B0, 0xF8 },
+		{ 0x00C2B1, 0xF1 },
+		{ 0x00C2B2, 0xFD },
+		{ 0x00C2B3, 0xFC },
+		{ 0x00C2B4, 0xEF },
+		{ 0x00C2B5, 0xE6 },
+		{ 0x00C2B6, 0xF4 },
+		{ 0x00C2B7, 0xFA },
+		{ 0x00C2B8, 0xF7 },
+		{ 0x00C2B9, 0xFB },
+		{ 0x00C2BA, 0xA7 },
+		{ 0x00C2BB, 0xAF },
+		{ 0x00C2BC, 0xAC },
+		{ 0x00C2BD, 0xAB },
+		{ 0x00C2BE, 0xF3 },
+		{ 0x00C2BF, 0xA8 },
+		{ 0x00C380, 0xB7 },
+		{ 0x00C381, 0xB5 },
+		{ 0x00C382, 0xB6 },
+		{ 0x00C383, 0xC7 },
+		{ 0x00C384, 0x8E },
+		{ 0x00C385, 0x8F },
+		{ 0x00C386, 0x92 },
+		{ 0x00C387, 0x80 },
+		{ 0x00C388, 0xD4 },
+		{ 0x00C389, 0x90 },
+		{ 0x00C38A, 0xD2 },
+		{ 0x00C38B, 0xD3 },
+		{ 0x00C38C, 0xDE },
+		{ 0x00C38D, 0xD6 },
+		{ 0x00C38E, 0xD7 },
+		{ 0x00C38F, 0xD8 },
+		{ 0x00C390, 0xD1 },
+		{ 0x00C391, 0xA5 },
+		{ 0x00C392, 0xE3 },
+		{ 0x00C393, 0xE0 },
+		{ 0x00C394, 0xE2 },
+		{ 0x00C395, 0xE5 },
+		{ 0x00C396, 0x99 },
+		{ 0x00C397, 0x9E },
+		{ 0x00C398, 0x9D },
+		{ 0x00C399, 0xEB },
+		{ 0x00C39A, 0xE9 },
+		{ 0x00C39B, 0xEA },
+		{ 0x00C39C, 0x9A },
+		{ 0x00C39D, 0xED },
+		{ 0x00C39E, 0xE8 },
+		{ 0x00C39F, 0xE1 },
+		{ 0x00C3A0, 0x85 },
+		{ 0x00C3A1, 0xA0 },
+		{ 0x00C3A2, 0x83 },
+		{ 0x00C3A3, 0xC6 },
+		{ 0x00C3A4, 0x84 },
+		{ 0x00C3A5, 0x86 },
+		{ 0x00C3A6, 0x91 },
+		{ 0x00C3A7, 0x87 },
+		{ 0x00C3A8, 0x8A },
+		{ 0x00C3A9, 0x82 },
+		{ 0x00C3AA, 0x88 },
+		{ 0x00C3AB, 0x89 },
+		{ 0x00C3AC, 0x8D },
+		{ 0x00C3AD, 0xA1 },
+		{ 0x00C3AE, 0x8C },
+		{ 0x00C3AF, 0x8B },
+		{ 0x00C3B0, 0xD0 },
+		{ 0x00C3B1, 0xA4 },
+		{ 0x00C3B2, 0x95 },
+		{ 0x00C3B3, 0xA2 },
+		{ 0x00C3B4, 0x93 },
+		{ 0x00C3B5, 0xE4 },
+		{ 0x00C3B6, 0x94 },
+		{ 0x00C3B7, 0xF6 },
+		{ 0x00C3B8, 0x9B },
+		{ 0x00C3B9, 0x97 },
+		{ 0x00C3BA, 0xA3 },
+		{ 0x00C3BB, 0x96 },
+		{ 0x00C3BC, 0x81 },
+		{ 0x00C3BD, 0xEC },
+		{ 0x00C3BE, 0xE7 },
+		{ 0x00C3BF, 0x98 },
+		{ 0x00C4B1, 0xD5 },
+		{ 0x00C692, 0x9F },
+		{ 0xE28097, 0xF2 },
+		{ 0xE29480, 0xC4 },
+		{ 0xE29482, 0xB3 },
+		{ 0xE2948C, 0xDA },
+		{ 0xE29490, 0xBF },
+		{ 0xE29494, 0xC0 },
+		{ 0xE29498, 0xD9 },
+		{ 0xE2949C, 0xC3 },
+		{ 0xE294A4, 0xB4 },
+		{ 0xE294AC, 0xC2 },
+		{ 0xE294B4, 0xC1 },
+		{ 0xE294BC, 0xC5 },
+		{ 0xE29590, 0xCD },
+		{ 0xE29591, 0xBA },
+		{ 0xE29594, 0xC9 },
+		{ 0xE29597, 0xBB },
+		{ 0xE2959A, 0xC8 },
+		{ 0xE2959D, 0xBC },
+		{ 0xE295A0, 0xCC },
+		{ 0xE295A3, 0xB9 },
+		{ 0xE295A6, 0xCB },
+		{ 0xE295A9, 0xCA },
+		{ 0xE295AC, 0xCE },
+		{ 0xE29680, 0xDF },
+		{ 0xE29684, 0xDC },
+		{ 0xE29688, 0xDB },
+		{ 0xE29691, 0xB0 },
+		{ 0xE29692, 0xB1 },
+		{ 0xE29693, 0xB2 },
+		{ 0xE296A0, 0xFE },
+	}
+};
+
+#endif	/* _KERNEL */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SYS_KICONV_LATIN1_H */
--- a/usr/src/uts/common/sys/modctl.h	Tue Oct 09 16:33:09 2007 -0700
+++ b/usr/src/uts/common/sys/modctl.h	Tue Oct 09 16:46:51 2007 -0700
@@ -80,6 +80,7 @@
 extern struct mod_ops mod_ippops;
 extern struct mod_ops mod_pcbeops;
 extern struct mod_ops mod_devfsops;
+extern struct mod_ops mod_kiconvops;
 
 #endif /* _KERNEL */
 
@@ -190,6 +191,13 @@
 	struct devname_ops	*dev_ops;
 };
 
+/* For kiconv modules */
+struct modlkiconv {
+	struct mod_ops		*kiconv_modops;
+	char			*kiconv_linkinfo;
+	struct kiconv_mod_info	*kiconv_moddef;
+};
+
 /*
  * Revision number of loadable modules support.  This is the value
  * that must be used in the modlinkage structure.
--- a/usr/src/uts/common/sys/sunddi.h	Tue Oct 09 16:33:09 2007 -0700
+++ b/usr/src/uts/common/sys/sunddi.h	Tue Oct 09 16:46:51 2007 -0700
@@ -60,6 +60,7 @@
 #include <sys/ddi_obsolete.h>
 #endif
 #include <sys/u8_textprep.h>
+#include <sys/kiconv.h>
 
 #ifdef	__cplusplus
 extern "C" {
@@ -442,6 +443,18 @@
 extern int ddi_strtoul(const char *, char **, int, unsigned long *);
 
 /*
+ * kiconv functions and their macros.
+ */
+#define	KICONV_IGNORE_NULL	(0x0001)
+#define	KICONV_REPLACE_INVALID	(0x0002)
+
+extern kiconv_t kiconv_open(const char *, const char *);
+extern size_t kiconv(kiconv_t, char **, size_t *, char **, size_t *, int *);
+extern int kiconv_close(kiconv_t);
+extern size_t kiconvstr(const char *, const char *, char *, size_t *, char *,
+	size_t *, int, int *);
+
+/*
  * ddi_map_regs
  *
  *	Map in the register set given by rnumber.
--- a/usr/src/uts/intel/Makefile.intel.shared	Tue Oct 09 16:33:09 2007 -0700
+++ b/usr/src/uts/intel/Makefile.intel.shared	Tue Oct 09 16:46:51 2007 -0700
@@ -644,3 +644,8 @@
 # 'Devname' Modules (kernel/devname)
 #
 DEVNAME_KMODS	+= sdev_nsconfig_mod
+
+#
+#	kiconv modules (/kernel/kiconv):
+#
+KICONV_KMODS	+= kiconv_emea
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usr/src/uts/intel/kiconv_emea/Makefile	Tue Oct 09 16:46:51 2007 -0700
@@ -0,0 +1,95 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+#
+# uts/intel/kiconv_emea/Makefile
+#
+# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
+# Use is subject to license terms.
+#
+# ident	"%Z%%M%	%I%	%E% SMI"
+#
+#	This makefile drives the production of the kiconv_emea kernel module.
+#
+#	intel architecture dependent
+#
+
+#
+#	Path to the base of the uts directory tree (usually /usr/src/uts).
+#
+UTSBASE	= ../..
+
+#
+#	Define the module and object file sets.
+#
+MODULE		= kiconv_emea
+OBJECTS		= $(KICONV_EMEA_OBJS:%=$(OBJS_DIR)/%)
+LINTS		= $(KICONV_EMEA_OBJS:%.o=$(LINTS_DIR)/%.ln)
+ROOTMODULE	= $(ROOT_KICONV_DIR)/$(MODULE)
+
+#
+#	Include common rules.
+#
+include $(UTSBASE)/intel/Makefile.intel
+
+#
+#	Define targets
+#
+ALL_TARGET	= $(BINARY)
+LINT_TARGET	= $(MODULE).lint
+INSTALL_TARGET	= $(BINARY) $(ROOTMODULE)
+
+#
+#	Overrides.
+#
+CFLAGS		+= $(CCVERBOSE)
+
+#
+# For now, disable these lint checks; maintainers should endeavor
+# to investigate and remove these for maximum lint coverage.
+# Please do not carry these forward to new Makefiles.
+#
+LINTTAGS	+= -erroff=E_PTRDIFF_OVERFLOW
+
+#
+#	Default build targets.
+#
+.KEEP_STATE:
+
+def:		$(DEF_DEPS)
+
+all:		$(ALL_DEPS)
+
+clean:		$(CLEAN_DEPS)
+
+clobber:	$(CLOBBER_DEPS)
+
+lint:		$(LINT_DEPS)
+
+modlintlib:	$(MODLINTLIB_DEPS)
+
+clean.lint:	$(CLEAN_LINT_DEPS)
+
+install:	$(INSTALL_DEPS)
+
+#
+#	Include common targets.
+#
+include $(UTSBASE)/intel/Makefile.targ
--- a/usr/src/uts/sparc/Makefile.sparc.shared	Tue Oct 09 16:33:09 2007 -0700
+++ b/usr/src/uts/sparc/Makefile.sparc.shared	Tue Oct 09 16:46:51 2007 -0700
@@ -463,3 +463,8 @@
 # 'Devname' Modules (kernel/devname)
 #
 DEVNAME_KMODS	+= sdev_nsconfig_mod
+
+#
+#	kiconv modules (/kernel/kiconv):
+#
+KICONV_KMODS	+= kiconv_emea
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usr/src/uts/sparc/kiconv_emea/Makefile	Tue Oct 09 16:46:51 2007 -0700
@@ -0,0 +1,95 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+#
+# uts/sparc/kiconv_emea/Makefile
+#
+# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
+# Use is subject to license terms.
+#
+# ident	"%Z%%M%	%I%	%E% SMI"
+#
+#	This makefile drives the production of the kiconv_emea kernel module.
+#
+#	sparc architecture dependent
+#
+
+#
+#	Path to the base of the uts directory tree (usually /usr/src/uts).
+#
+UTSBASE	= ../..
+
+#
+#	Define the module and object file sets.
+#
+MODULE		= kiconv_emea
+OBJECTS		= $(KICONV_EMEA_OBJS:%=$(OBJS_DIR)/%)
+LINTS		= $(KICONV_EMEA_OBJS:%.o=$(LINTS_DIR)/%.ln)
+ROOTMODULE	= $(ROOT_KICONV_DIR)/$(MODULE)
+
+#
+#	Include common rules.
+#
+include $(UTSBASE)/sparc/Makefile.sparc
+
+#
+#	Define targets
+#
+ALL_TARGET	= $(BINARY)
+LINT_TARGET	= $(MODULE).lint
+INSTALL_TARGET	= $(BINARY) $(ROOTMODULE)
+
+#
+#	Overrides.
+#
+CFLAGS		+= $(CCVERBOSE)
+
+#
+# For now, disable these lint checks; maintainers should endeavor
+# to investigate and remove these for maximum lint coverage.
+# Please do not carry these forward to new Makefiles.
+#
+LINTTAGS	+= -erroff=E_PTRDIFF_OVERFLOW
+
+#
+#	Default build targets.
+#
+.KEEP_STATE:
+
+def:		$(DEF_DEPS)
+
+all:		$(ALL_DEPS)
+
+clean:		$(CLEAN_DEPS)
+
+clobber:	$(CLOBBER_DEPS)
+
+lint:		$(LINT_DEPS)
+
+modlintlib:	$(MODLINTLIB_DEPS)
+
+clean.lint:	$(CLEAN_LINT_DEPS)
+
+install:	$(INSTALL_DEPS)
+
+#
+#	Include common targets.
+#
+include $(UTSBASE)/sparc/Makefile.targ