changeset 263:44700b433be2

Merge
author mullan
date Fri, 25 Apr 2008 09:03:20 -0400
parents 072695f32409 (current diff) d3af7105cc15 (diff)
children 4d62bebb22ea
files
diffstat 168 files changed, 20347 insertions(+), 2170 deletions(-) [+]
line wrap: on
line diff
--- a/.hgtags	Fri Apr 25 08:58:07 2008 -0400
+++ b/.hgtags	Fri Apr 25 09:03:20 2008 -0400
@@ -1,1 +1,2 @@
 37a05a11f281b4d238e2f9e7ebb67c63f64d0e77 jdk7-b24
+75fca0b0ab83ab1392e615910cea020f66535390 jdk7-b25
--- a/make/com/sun/Makefile	Fri Apr 25 08:58:07 2008 -0400
+++ b/make/com/sun/Makefile	Fri Apr 25 09:03:20 2008 -0400
@@ -41,7 +41,7 @@
 # Omit mirror since it's built with the apt tool.
 SUBDIRS = $(SCRIPT_SUBDIR) image security crypto/provider jndi jmx \
     java inputmethods org xml rowset net/httpserver net/ssl demo \
-    tools jarsigner
+    tools jarsigner tracing
 
 all build clean clobber::
 	$(SUBDIRS-loop)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/com/sun/tracing/Makefile	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,26 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+# SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+#
+
+#
+# Makefile for building tracing classes
+#
+
+BUILDDIR = ../../..
+PACKAGE = com.sun.tracing
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = dtrace 
+all build:
+	$(SUBDIRS-loop)
+clean clobber::
+	$(SUBDIRS-loop)
+
+AUTO_FILES_JAVA_DIRS = com/sun/tracing
+
+#
+# Rules.
+#
+include $(BUILDDIR)/common/Classes.gmk
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/com/sun/tracing/dtrace/Makefile	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,19 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+# SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+#
+
+#
+# Makefile for building dtrace extension
+#
+BUILDDIR = ../../../..
+PACKAGE = com.sun.tracing.dtrace
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+AUTO_FILES_JAVA_DIRS = com/sun/tracing/dtrace
+
+#
+# Rules.
+#
+include $(BUILDDIR)/common/Classes.gmk
--- a/make/common/Defs.gmk	Fri Apr 25 08:58:07 2008 -0400
+++ b/make/common/Defs.gmk	Fri Apr 25 09:03:20 2008 -0400
@@ -32,6 +32,13 @@
 #          So when it includes other files, it must use JDK_TOPDIR.
 #
 
+# Check for strange explicit settings (change to empty or true)
+ifdef OPENJDK
+  ifneq ($(OPENJDK),true)
+    x:=$(error "OPENJDK (if defined) can only be set to true")
+  endif
+endif
+
 #
 # On Solaris, the 'make' utility from Sun will not work with these makefiles.
 #    This little rule is only understood by Sun's make, and is harmless
@@ -87,19 +94,6 @@
   OPENJDK = true
 endif
 
-# Check for strange explicit settings (change to empty or true)
-ifdef OPENJDK
-  ifeq ($(OPENJDK),false)
-    # Silently treat as not defined
-    OPENJDK =
-  else
-    ifneq ($(OPENJDK),true)
-      dummy := $(warning "WARNING: OPENKJDK=$(OPENJDK) being treated as true")
-      OPENJDK = true
-    endif
-  endif
-endif
-
 # Define where closed directories are
 ifdef OPENJDK
   CLOSED_SRC =
--- a/make/common/shared/Defs-utils.gmk	Fri Apr 25 08:58:07 2008 -0400
+++ b/make/common/shared/Defs-utils.gmk	Fri Apr 25 09:03:20 2008 -0400
@@ -67,16 +67,6 @@
   UTILS_DEVTOOL_PATH=$(DEVTOOLS_PATH)
 endif
 
-# Utilities ant and findbugs
-ifndef ANT_HOME
-  ANT_HOME = $(JDK_DEVTOOLS_DIR)/share/ant/latest
-endif
-ANT = $(ANT_HOME)/bin/ant
-ifndef FINDBUGS_HOME
-  FINDBUGS_HOME = $(JDK_DEVTOOLS_DIR)/share/findbugs/latest
-endif
-FINDBUGS = $(FINDBUGS_HOME)/bin/findbugs
-
 # Utilities
 ADB            = $(UTILS_COMMAND_PATH)adb
 AR             = $(UTILS_CCS_BIN_PATH)ar
--- a/make/common/shared/Defs.gmk	Fri Apr 25 08:58:07 2008 -0400
+++ b/make/common/shared/Defs.gmk	Fri Apr 25 09:03:20 2008 -0400
@@ -512,6 +512,24 @@
   endif
 endif
 
+# Utilities ant and findbugs
+ifeq ($(ANT_HOME),)
+  ANT_HOME := $(call DirExists,/usr/share/ant,$(JDK_DEVTOOLS_DIR)/share/ant/latest,)
+endif
+ifeq ($(ANT_HOME),)
+  ANT = ant
+else
+  ANT = $(ANT_HOME)/bin/ant
+endif
+ifeq ($(FINDBUGS_HOME),)
+  FINDBUGS_HOME := $(call DirExists,/usr/share/findbugs,$(JDK_DEVTOOLS_DIR)/share/findbugs/latest,)
+endif
+ifeq ($(FINDBUGS_HOME),)
+  FINDBUGS = findbugs
+else
+  FINDBUGS = $(FINDBUGS_HOME)/bin/findbugs
+endif
+
 ifdef ALT_COPYRIGHT_YEAR
   COPYRIGHT_YEAR = $(ALT_COPYRIGHT_YEAR)
 else
--- a/make/common/shared/Platform.gmk	Fri Apr 25 08:58:07 2008 -0400
+++ b/make/common/shared/Platform.gmk	Fri Apr 25 09:03:20 2008 -0400
@@ -270,7 +270,7 @@
     REQUIRED_ALSA_VERSION = ^((0[.]9[.][1-9])|(1[.]0[.][0-9]))[0-9]*
   endif
   # How much RAM does this machine have:
-  MB_OF_MEMORY := $(shell free -m | fgrep Mem: | sed -e 's@\ \ *@ @g' | cut -d' ' -f2)
+  MB_OF_MEMORY := $(shell free -m | fgrep Mem: | awk '{print $$2;}' )
 endif
 
 # Windows with and without CYGWIN will be slightly different
@@ -374,45 +374,35 @@
   REQUIRED_DXSDK_VER = 0x0700
   OS_VENDOR = Microsoft
   # How much RAM does this machine have:
-  MB_OF_MEMORY := $(shell \
-    if [ -f "C:/cygwin/bin/free.exe" ] ; then \
-      ( C:/cygwin/bin/bash.exe -c "C:/cygwin/bin/free.exe -m" ) | \
-	grep Mem: | \
-	sed -e 's@\ \ *@ @g' | cut -d' ' -f2 ; \
-    else \
-      echo "512"; \
-    fi)
-endif
-
-# Machines with 512Mb or less of real memory are considered low memory
-#    build machines and adjustments will be made to prevent excessing
-#    system swapping during the build.
-#    If we don't know, assume 512. Subtract 128 from MB for VM MAX.
-#    Don't set VM max over 1024-128=896.
-ifneq ($(MB_OF_MEMORY),)
-  LOW_MEMORY_MACHINE := $(shell \
-    if [ $(MB_OF_MEMORY) -le 512 ] ; then \
-      echo "true"; \
-    else \
-      echo "false"; \
-    fi)
-  MAX_VM_MEMORY := $(shell \
-    if [ $(MB_OF_MEMORY) -le 1024 ] ; then \
-      expr $(MB_OF_MEMORY) '-' 128 ; \
-    else \
-      echo "896"; \
-    fi)
-  MIN_VM_MEMORY := $(shell \
-    if [ $(MAX_VM_MEMORY) -le 128 ] ; then \
-      expr $(MAX_VM_MEMORY) '-' 8 ; \
-    else \
-      echo "128"; \
-    fi)
-else
-  MB_OF_MEMORY       := unknown
-  LOW_MEMORY_MACHINE := true
-  MAX_VM_MEMORY      := 384
-  MIN_VM_MEMORY      := 128
+  ifeq ($(USING_CYGWIN),true)
+    # CYGWIN has the 'free' utility
+    _MB_OF_MEMORY := \
+	 $(shell free -m | grep Mem: | awk '{print $$2;}' )
+  else
+    # Windows 2000 has the mem utility, but two memory areas
+    #    extended memory is what is beyond 1024M
+    _B_OF_EXT_MEMORY := \
+	 $(shell mem 2> $(DEV_NULL) | grep 'total contiguous extended memory' | awk '{print $$1;}')
+    ifeq ($(_B_OF_EXT_MEMORY),)
+      _B_OF_MEMORY := \
+	 $(shell mem 2> $(DEV_NULL) | grep 'total conventional memory' | awk '{print $$1;}')
+    else
+      _B_OF_MEMORY := \
+         $(shell expr 1048576 '+' $(_B_OF_EXT_MEMORY) 2> $(DEV_NULL))
+    endif
+    ifeq ($(_B_OF_MEMORY),)
+      # Windows 2003 has the systeminfo utility use it if mem doesn't work
+      _MB_OF_MEMORY := \
+	  $(shell systeminfo 2> $(DEV_NULL) | grep 'Total Physical Memory:' | awk '{print $$4;}' | sed -e 's@,@@')
+    else
+      _MB_OF_MEMORY := $(shell expr $(_B_OF_MEMORY) '/' 1024 2> $(DEV_NULL))
+    endif
+  endif
+  ifeq ($(shell expr $(_MB_OF_MEMORY) '+' 0 2> $(DEV_NULL)), $(_MB_OF_MEMORY))
+    MB_OF_MEMORY := $(_MB_OF_MEMORY)
+  else
+    MB_OF_MEMORY := 512
+  endif
 endif
 
 REQUIRED_ZIP_VER = 2.2
@@ -452,6 +442,37 @@
   ARCH_VM_SUBDIR=jre/lib/$(LIBARCH)
 endif
 
+# Machines with 512Mb or less of real memory are considered low memory
+#    build machines and adjustments will be made to prevent excessing
+#    system swapping during the build.
+#    If we don't know, assume 512. Subtract 128 from MB for VM MAX.
+#    Don't set VM max over 1024-128=896.
+ifneq ($(MB_OF_MEMORY),)
+  LOW_MEMORY_MACHINE := $(shell \
+    if [ $(MB_OF_MEMORY) -le 512 ] ; then \
+      echo "true"; \
+    else \
+      echo "false"; \
+    fi)
+  MAX_VM_MEMORY := $(shell \
+    if [ $(MB_OF_MEMORY) -le 1024 ] ; then \
+      expr $(MB_OF_MEMORY) '-' 128 2> $(DEV_NULL) ; \
+    else \
+      echo "896"; \
+    fi)
+  MIN_VM_MEMORY := $(shell \
+    if [ $(MAX_VM_MEMORY) -le 128 ] ; then \
+      expr $(MAX_VM_MEMORY) '-' 8 2> $(DEV_NULL) ; \
+    else \
+      echo "128"; \
+    fi)
+else
+  MB_OF_MEMORY       := unknown
+  LOW_MEMORY_MACHINE := true
+  MAX_VM_MEMORY      := 384
+  MIN_VM_MEMORY      := 128
+endif
+
 # If blanks in the username, use the first 4 words and pack them together
 _USER1:=$(subst ', ,$(_USER))
 _USER2:=$(subst ", ,$(_USER1))
--- a/make/common/shared/Sanity.gmk	Fri Apr 25 08:58:07 2008 -0400
+++ b/make/common/shared/Sanity.gmk	Fri Apr 25 09:03:20 2008 -0400
@@ -105,13 +105,21 @@
 UNZIP_VER  :=$(call GetVersion,"$(_UNZIP_VER)")
 BOOT_VER   :=$(call GetVersion,"$(_BOOT_VER)")
 
-REQUIRED_ANT_VER      := 1.6.3
-_ANT_VER              :=$(shell $(ANT) -version 2>&1 )
-ANT_VER               :=$(call GetVersion,"$(_ANT_VER)")
+REQUIRED_ANT_VER := 1.6.3
+ifeq ($(ANT_HOME),)
+  _ANT_VER:=$(shell JAVACMD="$(BOOTDIR)/bin/java" $(ANT) -version 2>&1 )
+else
+  _ANT_VER:=$(shell JAVACMD="$(BOOTDIR)/bin/java" ANT_HOME="$(ANT_HOME)" $(ANT) -version 2>&1 )
+endif
+ANT_VER:=$(call GetVersion,"$(_ANT_VER)")
 
-REQUIRED_FINDBUGS_VER := 1.1
-_FINDBUGS_VER         :=$(shell $(FINDBUGS) -version 2>&1 )
-FINDBUGS_VER          :=$(call GetVersion,"$(_FINDBUGS_VER)")
+REQUIRED_FINDBUGS_VER := 1.2
+ifeq ($(FINDBUGS_HOME),)
+  _FINDBUGS_VER:=$(shell $(FINDBUGS) -javahome "$(BOOTDIR)" -textui -version 2>&1 )
+else
+  _FINDBUGS_VER:=$(shell FINDBUGS_HOME="$(FINDBUGS_HOME)" $(FINDBUGS) -javahome "$(BOOTDIR)" -textui -version 2>&1 )
+endif
+FINDBUGS_VER:=$(call GetVersion,"$(_FINDBUGS_VER)")
 
 ifdef ALT_BINDIR
   ALT_BINDIR_VERSION := $(shell $(ALT_BINDIR)/java$(EXE_SUFFIX) -version 2>&1  | $(NAWK) -F'"' '{ print $$2 }')
@@ -1564,31 +1572,31 @@
 endif
 
 
-######################################################
-# SECURITY_BASELINE_142 test
-######################################################
-security_baseline_142:
-ifeq ($(PLATFORM), windows)
-	@if [ -z "$(SECURITY_BASELINE_142)" ]; then \
-	    $(ECHO) "WARNING: Your SECURITY_BASELINE_142 setting is empty.\n" \
-		"        Setting it to the default value of 1.4.2_10.\n" \
-		"        It is recommended to set SECURITY_BASELINE_142.\n" \
-		"" >> $(WARNING_FILE) ; \
-	fi
-endif
-
-######################################################
-# SECURITY_BASELINE_150 test
-######################################################
-security_baseline_150:
-ifeq ($(PLATFORM), windows)
-	@if [ -z "$(SECURITY_BASELINE_150)" ]; then \
-	    $(ECHO) "WARNING: Your SECURITY_BASELINE_150 setting is empty.\n" \
-		"        Setting it to the default value of 1.5.0_07.\n" \
-		"        It is recommended to set SECURITY_BASELINE_150.\n" \
-		"" >> $(WARNING_FILE) ; \
-	fi
-endif
+######################################################
+# SECURITY_BASELINE_142 test
+######################################################
+security_baseline_142:
+ifeq ($(PLATFORM), windows)
+	@if [ -z "$(SECURITY_BASELINE_142)" ]; then \
+	    $(ECHO) "WARNING: Your SECURITY_BASELINE_142 setting is empty.\n" \
+		"        Setting it to the default value of 1.4.2_10.\n" \
+		"        It is recommended to set SECURITY_BASELINE_142.\n" \
+		"" >> $(WARNING_FILE) ; \
+	fi
+endif
+
+######################################################
+# SECURITY_BASELINE_150 test
+######################################################
+security_baseline_150:
+ifeq ($(PLATFORM), windows)
+	@if [ -z "$(SECURITY_BASELINE_150)" ]; then \
+	    $(ECHO) "WARNING: Your SECURITY_BASELINE_150 setting is empty.\n" \
+		"        Setting it to the default value of 1.5.0_07.\n" \
+		"        It is recommended to set SECURITY_BASELINE_150.\n" \
+		"" >> $(WARNING_FILE) ; \
+	fi
+endif
 
 
 ######################################################
--- a/make/docs/CORE_PKGS.gmk	Fri Apr 25 08:58:07 2008 -0400
+++ b/make/docs/CORE_PKGS.gmk	Fri Apr 25 09:03:20 2008 -0400
@@ -49,8 +49,8 @@
 # ACTIVE_JSR_PKGS are packages that are part of an active JSR process--
 # one that is doing its own review. These packages are not included when
 # creating diff pages for the platform's JCP process.
-# 
-#       (see /java/pubs/apisrc/jdk/6.0/beta/make/docs/active_jsr_pkgs)
+# 
+#       (see /java/pubs/apisrc/jdk/6.0/beta/make/docs/active_jsr_pkgs)
 # Note:
 # This is a list of regular expressions. So foo.* matches "foo" and "foo.bar".
 #
@@ -72,13 +72,13 @@
 # CORE_PKGS is the list of packages that form the
 # Java API Specification.
 #
-### ***IMPORTANT NOTE***
-### There is also a "REGEXP" variable in the docs/makefile that
-### determines which table the packages go in on the main page.
-### Currently, there is only table ("Platform Packages") and
-### everything goes in it, so REGEXP is "*". But if that policy
-### changes, packages added will need to be reflected in  that
-### list of wildcard expressions, as well.
+### ***IMPORTANT NOTE***
+### There is also a "REGEXP" variable in the docs/makefile that
+### determines which table the packages go in on the main page.
+### Currently, there is only table ("Platform Packages") and
+### everything goes in it, so REGEXP is "*". But if that policy
+### changes, packages added will need to be reflected in  that
+### list of wildcard expressions, as well.
 ###
 CORE_PKGS =                                      \
   java.applet                                    \
--- a/make/docs/Makefile	Fri Apr 25 08:58:07 2008 -0400
+++ b/make/docs/Makefile	Fri Apr 25 09:03:20 2008 -0400
@@ -273,6 +273,28 @@
 # SMARTCARDIO_PKGS is located in NON_CORE_PKGS.gmk
 
 #
+# Variables used by TRACING target
+#
+
+TRACING_SOURCEPATH  = $(TOPDIR)/src/share/classes
+TRACING_DOCDIR	 = $(DOCSDIR)/jre/api/tracing
+
+TRACING_JAVADOCFLAGS = $(COMMON_JAVADOCFLAGS)			    \
+		   -encoding ascii			            \
+                   -nodeprecatedlist                                \
+                   -d $(TRACING_DOCDIR)				    \
+                   -sourcepath $(TRACING_SOURCEPATH)                \
+                   -windowtitle $(TRACING_WINDOWTITLE)              \
+                   -doctitle $(TRACING_DOCTITLE)                    \
+                   -header $(TRACING_JAVADOCHEADER)                 \
+                   -linkoffline ../../../../../api $(DOCSDIR)/api/
+
+TRACING_WINDOWTITLE = "Tracing"
+TRACING_DOCTITLE    = "Java$(TRADEMARK) Platform Tracing"
+TRACING_JAVADOCHEADER      = "Platform Tracing"
+# TRACING_PKGS is located in NON_CORE_PKGS.gmk
+
+#
 # Variables used by HTTPSERVER target
 #
 
@@ -420,6 +442,7 @@
     jaasdocs \
     jgssdocs \
     smartcardiodocs \
+    tracingdocs \
     httpserverdocs  \
     mgmtdocs \
     attachdocs \
@@ -585,6 +608,14 @@
 	$(JAVADOC_CMD) $(SMARTCARDIO_JAVADOCFLAGS)                     \
 		   $(SMARTCARDIO_PKGS)
 
+.PHONY: tracingdocs
+tracingdocs:
+	@# ######## api-tracing ############################
+	$(RM) -r $(TRACING_DOCDIR)
+	$(MKDIR) -p $(TRACING_DOCDIR)
+	$(JAVADOC) $(TRACING_JAVADOCFLAGS)                     \
+		   $(TRACING_PKGS)
+
 .PHONY: httpserverdocs
 httpserverdocs:
 	@# ######## api-httpserver #######################
--- a/make/docs/NON_CORE_PKGS.gmk	Fri Apr 25 08:58:07 2008 -0400
+++ b/make/docs/NON_CORE_PKGS.gmk	Fri Apr 25 09:03:20 2008 -0400
@@ -84,6 +84,9 @@
 
 SMARTCARDIO_PKGS = javax.smartcardio
 
+TRACING_PKGS     = com.sun.tracing         \
+                   com.sun.tracing.dtrace
+
 # non-core packages in rt.jar
 NON_CORE_PKGS    = $(DOMAPI_PKGS) \
                    $(MGMT_PKGS) \
@@ -91,4 +94,5 @@
                    $(JGSS_PKGS) \
                    $(OLD_JSSE_PKGS) \
                    $(HTTPSERVER_PKGS) \
-                   $(SMARTCARDIO_PKGS)
+                   $(SMARTCARDIO_PKGS) \
+                   $(TRACING_PKGS)
--- a/make/java/sun_nio/FILES_java.gmk	Fri Apr 25 08:58:07 2008 -0400
+++ b/make/java/sun_nio/FILES_java.gmk	Fri Apr 25 09:03:20 2008 -0400
@@ -33,6 +33,7 @@
     sun/nio/cs/AbstractCharsetProvider.java \
     sun/nio/cs/HistoricallyNamedCharset.java \
     sun/nio/cs/Surrogate.java \
+    sun/nio/cs/CharsetMapping.java \
     sun/nio/cs/SingleByteEncoder.java \
     sun/nio/cs/SingleByteDecoder.java \
     sun/nio/cs/UnicodeEncoder.java \
--- a/make/sun/Makefile	Fri Apr 25 08:58:07 2008 -0400
+++ b/make/sun/Makefile	Fri Apr 25 09:03:20 2008 -0400
@@ -63,7 +63,7 @@
           $(HEADLESS_SUBDIR) $(DGA_SUBDIR) \
 	  font jpeg cmm applet rmi beans $(JDBC_SUBDIR) \
 	  jawt text nio launcher management $(ORG_SUBDIR) \
-          native2ascii serialver tools jconsole
+          native2ascii serialver tools jconsole tracing
 
 all build clean clobber::
 	$(SUBDIRS-loop)
--- a/make/sun/nio/Makefile	Fri Apr 25 08:58:07 2008 -0400
+++ b/make/sun/nio/Makefile	Fri Apr 25 09:03:20 2008 -0400
@@ -1,5 +1,5 @@
 #
-# Copyright 1996-2006 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 1996-2008 Sun Microsystems, Inc.  All Rights Reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -73,11 +73,21 @@
 SERVICE_DESCRIPTION = java.nio.charset.spi.CharsetProvider
 SERVICE_DESCRIPTION_PATH = META-INF/services/$(SERVICE_DESCRIPTION)
 
+GENCSDATASRC = $(BUILDDIR)/tools/CharsetMapping
+FILES_MAP = $(GENCSDATASRC)/sjis0213.map
+FILES_DAT = $(CLASSDESTDIR)/sun/nio/cs/ext/sjis0213.dat
+CHARSETMAPPING_JARFILE = $(BUILDTOOLJARDIR)/charsetmapping.jar
+
+$(FILES_DAT): $(FILES_MAP)
+	@$(prep-target)
+	$(BOOT_JAVA_CMD) -jar $(CHARSETMAPPING_JARFILE) \
+		$(FILES_MAP) $(FILES_DAT)
+
 $(CLASSDESTDIR)/$(SERVICE_DESCRIPTION_PATH): \
   $(SHARE_SRC)/classes/sun/nio/cs/ext/$(SERVICE_DESCRIPTION_PATH)
 	$(install-file)
 
-$(CHARSETS_JAR): $(FILES_class) $(CLASSDESTDIR)/$(SERVICE_DESCRIPTION_PATH)
+$(CHARSETS_JAR): $(FILES_class) $(CLASSDESTDIR)/$(SERVICE_DESCRIPTION_PATH) $(FILES_DAT)
 	$(BOOT_JAR_CMD) cf $(CHARSETS_JAR) \
 	      -C $(CLASSDESTDIR) sun \
 	      -C $(CLASSDESTDIR) $(SERVICE_DESCRIPTION_PATH)  \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/sun/tracing/Makefile	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,26 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+# SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+#
+
+#
+# Makefile for building tracing package implementation classes
+#
+
+BUILDDIR = ../..
+PACKAGE = sun.tracing
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+SUBDIRS = dtrace 
+all build:
+	$(SUBDIRS-loop)
+clean clobber::
+	$(SUBDIRS-loop)
+
+AUTO_FILES_JAVA_DIRS = sun/tracing
+
+#
+# Rules.
+#
+include $(BUILDDIR)/common/Classes.gmk
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/sun/tracing/dtrace/Makefile	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,59 @@
+#
+# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+# SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+#
+
+#
+# Makefile for building dtrace extension
+#
+BUILDDIR = ../../..
+PACKAGE = sun.tracing.dtrace
+LIBRARY = jsdt
+PRODUCT = sun
+include $(BUILDDIR)/common/Defs.gmk
+
+#
+# Use mapfile
+#
+FILES_m = mapfile-vers
+include $(BUILDDIR)/common/Mapfile-vers.gmk
+
+NATIVE_DTRACE_DIR=native/sun/tracing/dtrace
+
+SRCDIR=$(SHARE_SRC)/$(NATIVE_DTRACE_DIR)
+PSRCDIR=$(PLATFORM_SRC)/$(NATIVE_DTRACE_DIR)
+
+FILES_c = JVM.c jvm_symbols_md.c
+
+FILES_java = \
+    sun/tracing/dtrace/Activation.java \
+    sun/tracing/dtrace/DTraceProvider.java \
+    sun/tracing/dtrace/DTraceProbe.java \
+    sun/tracing/dtrace/DTraceProviderFactory.java \
+    sun/tracing/dtrace/JVM.java 
+
+FILES_export = $(FILES_java)
+
+ifeq ($(PLATFORM), linux)
+OTHER_LDLIBS += -ldl
+endif
+
+#
+# Use JNI for generating header files
+#
+JAVAHFLAGS += -jni
+
+#
+# Don't need to link against -ljava
+#
+JAVALIB= 
+
+#
+# Rules.
+#
+include $(BUILDDIR)/common/Library.gmk
+
+#
+# Add to ambient vpath so we pick up the library files
+#
+vpath %.c $(SRCDIR):$(PSRCDIR)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/sun/tracing/dtrace/mapfile-vers	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,19 @@
+#
+#ident "@(#)mapfile-vers	1.1 07/08/14"
+# 
+# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+# SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+#
+
+# Define library interface.
+
+SUNWprivate_1.1 {
+    global:
+        Java_sun_tracing_dtrace_JVM_isSupported0;
+        Java_sun_tracing_dtrace_JVM_activate0;
+        Java_sun_tracing_dtrace_JVM_dispose0;
+        Java_sun_tracing_dtrace_JVM_isEnabled0;
+        Java_sun_tracing_dtrace_JVM_defineClass0;
+    local:
+        *;
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/Makefile	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,43 @@
+#
+# Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+# CA 95054 USA or visit www.sun.com if you need additional information or
+# have any questions.
+#
+
+#
+# Makefile for building the charsetmapping tool
+#
+
+BUILDDIR = ../..
+PACKAGE = build.tools.charsetmapping
+PRODUCT = tools
+PROGRAM = charsetmapping
+include $(BUILDDIR)/common/Defs.gmk
+
+BUILDTOOL_SOURCE_ROOT = $(BUILDDIR)/tools/src
+BUILDTOOL_MAIN        = $(PKGDIR)/GenerateMapping.java
+
+#
+# Build tool jar rules.
+#
+include $(BUILDDIR)/common/BuildToolJar.gmk
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/CharsetMapping/sjis0213.map	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,11471 @@
+## Shift_JIS-2004 (JIS X 0213:2004 Appendix 1) vs Unicode mapping table
+## 
+## Date: 13 May 2006
+## License:
+## 	Copyright (C) 2001 earthian@tama.or.jp, All Rights Reserved.
+## 	Copyright (C) 2001 I'O, All Rights Reserved.
+## 	Copyright (C) 2006 Project X0213, All Rights Reserved.
+## 	You can use, modify, distribute this table freely.
+## Note:
+## 	[1983]	JIS codepoint defined by JIS X 0208-1983
+## 	[1990]	JIS codepoint defined by JIS X 0208-1990
+## 	[2000]	JIS codepoint defined by JIS X 0213:2000
+## 	[2004]	JIS codepoint defined by JIS X 0213:2004
+## 	[Unicode3.1]	UCS codepoint defined by Unicode 3.1
+## 	[Unicode3.2]	UCS codepoint defined by Unicode 3.2
+## 	Fullwidth	UCS fullwidth form (U+Fxxx)
+## 	Windows 	Windows (CP932) mapping
+## 	Some 0213 character can't represent by one UCS character.
+## 	In this table, such characters are described as 'U+xxxx+xxxx'.
+##
+##
+##	(1)Added JIS0213 entries
+##	(2)Updated 2 entries
+##	   0x81b0 -> u+ff5e
+## 	   0x815f -> u+ff3c
+##
+## JIS	Unicode	Name	Note
+##
+## Note: Block f09f--f0fc has been moved to the correct(sorted) position
+##
+## <RegEx Pattern="0x(\p{XDigit}++)\s++U\+(\p{XDigit}++)(?:\+(\p{XDigit}++))?\s++#.*"> GDB=1 GC=2 GCC=3>
+##
+#
+#  sjis0201
+#
+0x20	U+0020	# SPACE
+0x21	U+0021	# EXCLAMATION MARK
+0x22	U+0022	# QUOTATION MARK
+0x23	U+0023	# NUMBER SIGN
+0x24	U+0024	# DOLLAR SIGN
+0x25	U+0025	# PERCENT SIGN
+0x26	U+0026	# AMPERSAND
+0x27	U+0027	# APOSTROPHE
+0x28	U+0028	# LEFT PARENTHESIS
+0x29	U+0029	# RIGHT PARENTHESIS
+0x2A	U+002A	# ASTERISK
+0x2B	U+002B	# PLUS SIGN
+0x2C	U+002C	# COMMA
+0x2D	U+002D	# HYPHEN-MINUS
+0x2E	U+002E	# FULL STOP
+0x2F	U+002F	# SOLIDUS
+0x30	U+0030	# DIGIT ZERO
+0x31	U+0031	# DIGIT ONE
+0x32	U+0032	# DIGIT TWO
+0x33	U+0033	# DIGIT THREE
+0x34	U+0034	# DIGIT FOUR
+0x35	U+0035	# DIGIT FIVE
+0x36	U+0036	# DIGIT SIX
+0x37	U+0037	# DIGIT SEVEN
+0x38	U+0038	# DIGIT EIGHT
+0x39	U+0039	# DIGIT NINE
+0x3A	U+003A	# COLON
+0x3B	U+003B	# SEMICOLON
+0x3C	U+003C	# LESS-THAN SIGN
+0x3D	U+003D	# EQUALS SIGN
+0x3E	U+003E	# GREATER-THAN SIGN
+0x3F	U+003F	# QUESTION MARK
+0x40	U+0040	# COMMERCIAL AT
+0x41	U+0041	# LATIN CAPITAL LETTER A
+0x42	U+0042	# LATIN CAPITAL LETTER B
+0x43	U+0043	# LATIN CAPITAL LETTER C
+0x44	U+0044	# LATIN CAPITAL LETTER D
+0x45	U+0045	# LATIN CAPITAL LETTER E
+0x46	U+0046	# LATIN CAPITAL LETTER F
+0x47	U+0047	# LATIN CAPITAL LETTER G
+0x48	U+0048	# LATIN CAPITAL LETTER H
+0x49	U+0049	# LATIN CAPITAL LETTER I
+0x4A	U+004A	# LATIN CAPITAL LETTER J
+0x4B	U+004B	# LATIN CAPITAL LETTER K
+0x4C	U+004C	# LATIN CAPITAL LETTER L
+0x4D	U+004D	# LATIN CAPITAL LETTER M
+0x4E	U+004E	# LATIN CAPITAL LETTER N
+0x4F	U+004F	# LATIN CAPITAL LETTER O
+0x50	U+0050	# LATIN CAPITAL LETTER P
+0x51	U+0051	# LATIN CAPITAL LETTER Q
+0x52	U+0052	# LATIN CAPITAL LETTER R
+0x53	U+0053	# LATIN CAPITAL LETTER S
+0x54	U+0054	# LATIN CAPITAL LETTER T
+0x55	U+0055	# LATIN CAPITAL LETTER U
+0x56	U+0056	# LATIN CAPITAL LETTER V
+0x57	U+0057	# LATIN CAPITAL LETTER W
+0x58	U+0058	# LATIN CAPITAL LETTER X
+0x59	U+0059	# LATIN CAPITAL LETTER Y
+0x5A	U+005A	# LATIN CAPITAL LETTER Z
+0x5B	U+005B	# LEFT SQUARE BRACKET
+0x5C	U+005C	# YEN SIGN
+0x5D	U+005D	# RIGHT SQUARE BRACKET
+0x5E	U+005E	# CIRCUMFLEX ACCENT
+0x5F	U+005F	# LOW LINE
+0x60	U+0060	# GRAVE ACCENT
+0x61	U+0061	# LATIN SMALL LETTER A
+0x62	U+0062	# LATIN SMALL LETTER B
+0x63	U+0063	# LATIN SMALL LETTER C
+0x64	U+0064	# LATIN SMALL LETTER D
+0x65	U+0065	# LATIN SMALL LETTER E
+0x66	U+0066	# LATIN SMALL LETTER F
+0x67	U+0067	# LATIN SMALL LETTER G
+0x68	U+0068	# LATIN SMALL LETTER H
+0x69	U+0069	# LATIN SMALL LETTER I
+0x6A	U+006A	# LATIN SMALL LETTER J
+0x6B	U+006B	# LATIN SMALL LETTER K
+0x6C	U+006C	# LATIN SMALL LETTER L
+0x6D	U+006D	# LATIN SMALL LETTER M
+0x6E	U+006E	# LATIN SMALL LETTER N
+0x6F	U+006F	# LATIN SMALL LETTER O
+0x70	U+0070	# LATIN SMALL LETTER P
+0x71	U+0071	# LATIN SMALL LETTER Q
+0x72	U+0072	# LATIN SMALL LETTER R
+0x73	U+0073	# LATIN SMALL LETTER S
+0x74	U+0074	# LATIN SMALL LETTER T
+0x75	U+0075	# LATIN SMALL LETTER U
+0x76	U+0076	# LATIN SMALL LETTER V
+0x77	U+0077	# LATIN SMALL LETTER W
+0x78	U+0078	# LATIN SMALL LETTER X
+0x79	U+0079	# LATIN SMALL LETTER Y
+0x7A	U+007A	# LATIN SMALL LETTER Z
+0x7B	U+007B	# LEFT CURLY BRACKET
+0x7C	U+007C	# VERTICAL LINE
+0x7D	U+007D	# RIGHT CURLY BRACKET
+0x7E	U+007E	# OVERLINE
+0x7F	U+007F	# DELETE
+0xA1	U+FF61	# HALFWIDTH IDEOGRAPHIC FULL STOP
+0xA2	U+FF62	# HALFWIDTH LEFT CORNER BRACKET
+0xA3	U+FF63	# HALFWIDTH RIGHT CORNER BRACKET
+0xA4	U+FF64	# HALFWIDTH IDEOGRAPHIC COMMA
+0xA5	U+FF65	# HALFWIDTH KATAKANA MIDDLE DOT
+0xA6	U+FF66	# HALFWIDTH KATAKANA LETTER WO
+0xA7	U+FF67	# HALFWIDTH KATAKANA LETTER SMALL A
+0xA8	U+FF68	# HALFWIDTH KATAKANA LETTER SMALL I
+0xA9	U+FF69	# HALFWIDTH KATAKANA LETTER SMALL U
+0xAA	U+FF6A	# HALFWIDTH KATAKANA LETTER SMALL E
+0xAB	U+FF6B	# HALFWIDTH KATAKANA LETTER SMALL O
+0xAC	U+FF6C	# HALFWIDTH KATAKANA LETTER SMALL YA
+0xAD	U+FF6D	# HALFWIDTH KATAKANA LETTER SMALL YU
+0xAE	U+FF6E	# HALFWIDTH KATAKANA LETTER SMALL YO
+0xAF	U+FF6F	# HALFWIDTH KATAKANA LETTER SMALL TU
+0xB0	U+FF70	# HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+0xB1	U+FF71	# HALFWIDTH KATAKANA LETTER A
+0xB2	U+FF72	# HALFWIDTH KATAKANA LETTER I
+0xB3	U+FF73	# HALFWIDTH KATAKANA LETTER U
+0xB4	U+FF74	# HALFWIDTH KATAKANA LETTER E
+0xB5	U+FF75	# HALFWIDTH KATAKANA LETTER O
+0xB6	U+FF76	# HALFWIDTH KATAKANA LETTER KA
+0xB7	U+FF77	# HALFWIDTH KATAKANA LETTER KI
+0xB8	U+FF78	# HALFWIDTH KATAKANA LETTER KU
+0xB9	U+FF79	# HALFWIDTH KATAKANA LETTER KE
+0xBA	U+FF7A	# HALFWIDTH KATAKANA LETTER KO
+0xBB	U+FF7B	# HALFWIDTH KATAKANA LETTER SA
+0xBC	U+FF7C	# HALFWIDTH KATAKANA LETTER SI
+0xBD	U+FF7D	# HALFWIDTH KATAKANA LETTER SU
+0xBE	U+FF7E	# HALFWIDTH KATAKANA LETTER SE
+0xBF	U+FF7F	# HALFWIDTH KATAKANA LETTER SO
+0xC0	U+FF80	# HALFWIDTH KATAKANA LETTER TA
+0xC1	U+FF81	# HALFWIDTH KATAKANA LETTER TI
+0xC2	U+FF82	# HALFWIDTH KATAKANA LETTER TU
+0xC3	U+FF83	# HALFWIDTH KATAKANA LETTER TE
+0xC4	U+FF84	# HALFWIDTH KATAKANA LETTER TO
+0xC5	U+FF85	# HALFWIDTH KATAKANA LETTER NA
+0xC6	U+FF86	# HALFWIDTH KATAKANA LETTER NI
+0xC7	U+FF87	# HALFWIDTH KATAKANA LETTER NU
+0xC8	U+FF88	# HALFWIDTH KATAKANA LETTER NE
+0xC9	U+FF89	# HALFWIDTH KATAKANA LETTER NO
+0xCA	U+FF8A	# HALFWIDTH KATAKANA LETTER HA
+0xCB	U+FF8B	# HALFWIDTH KATAKANA LETTER HI
+0xCC	U+FF8C	# HALFWIDTH KATAKANA LETTER HU
+0xCD	U+FF8D	# HALFWIDTH KATAKANA LETTER HE
+0xCE	U+FF8E	# HALFWIDTH KATAKANA LETTER HO
+0xCF	U+FF8F	# HALFWIDTH KATAKANA LETTER MA
+0xD0	U+FF90	# HALFWIDTH KATAKANA LETTER MI
+0xD1	U+FF91	# HALFWIDTH KATAKANA LETTER MU
+0xD2	U+FF92	# HALFWIDTH KATAKANA LETTER ME
+0xD3	U+FF93	# HALFWIDTH KATAKANA LETTER MO
+0xD4	U+FF94	# HALFWIDTH KATAKANA LETTER YA
+0xD5	U+FF95	# HALFWIDTH KATAKANA LETTER YU
+0xD6	U+FF96	# HALFWIDTH KATAKANA LETTER YO
+0xD7	U+FF97	# HALFWIDTH KATAKANA LETTER RA
+0xD8	U+FF98	# HALFWIDTH KATAKANA LETTER RI
+0xD9	U+FF99	# HALFWIDTH KATAKANA LETTER RU
+0xDA	U+FF9A	# HALFWIDTH KATAKANA LETTER RE
+0xDB	U+FF9B	# HALFWIDTH KATAKANA LETTER RO
+0xDC	U+FF9C	# HALFWIDTH KATAKANA LETTER WA
+0xDD	U+FF9D	# HALFWIDTH KATAKANA LETTER N
+0xDE	U+FF9E	# HALFWIDTH KATAKANA VOICED SOUND MARK
+0xDF	U+FF9F	# HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+#
+#  sjis0213    
+#
+0x8140	U+3000	# IDEOGRAPHIC SPACE
+0x8141	U+3001	# IDEOGRAPHIC COMMA
+0x8142	U+3002	# IDEOGRAPHIC FULL STOP
+0x8143	U+FF0C	# FULLWIDTH COMMA
+0x8144	U+FF0E	# FULLWIDTH FULL STOP
+0x8145	U+30FB	# KATAKANA MIDDLE DOT
+0x8146	U+FF1A	# FULLWIDTH COLON
+0x8147	U+FF1B	# FULLWIDTH SEMICOLON
+0x8148	U+FF1F	# FULLWIDTH QUESTION MARK
+0x8149	U+FF01	# FULLWIDTH EXCLAMATION MARK
+0x814A	U+309B	# KATAKANA-HIRAGANA VOICED SOUND MARK
+0x814B	U+309C	# KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+0x814C	U+00B4	# ACUTE ACCENT
+0x814D	U+FF40	# FULLWIDTH GRAVE ACCENT
+0x814E	U+00A8	# DIAERESIS
+0x814F	U+FF3E	# FULLWIDTH CIRCUMFLEX ACCENT
+0x8150	U+FFE3	# FULLWIDTH MACRON 
+0x8151	U+FF3F	# FULLWIDTH LOW LINE
+0x8152	U+30FD	# KATAKANA ITERATION MARK
+0x8153	U+30FE	# KATAKANA VOICED ITERATION MARK
+0x8154	U+309D	# HIRAGANA ITERATION MARK
+0x8155	U+309E	# HIRAGANA VOICED ITERATION MARK
+0x8156	U+3003	# DITTO MARK
+0x8157	U+4EDD	# <cjk>
+0x8158	U+3005	# IDEOGRAPHIC ITERATION MARK
+0x8159	U+3006	# IDEOGRAPHIC CLOSING MARK
+0x815A	U+3007	# IDEOGRAPHIC NUMBER ZERO
+0x815B	U+30FC	# KATAKANA-HIRAGANA PROLONGED SOUND MARK
+0x815C	U+2014	# EM DASH	Windows: U+2015
+0x815D	U+2010	# HYPHEN
+0x815E	U+FF0F	# FULLWIDTH SOLIDUS
+#0x815F	U+005C	# REVERSE SOLIDUS	Fullwidth: U+FF3C
+0x815F	U+FF3C	# REVERSE SOLIDUS	Fullwidth: U+FF3C
+0x8160	U+301C	# WAVE DASH	Windows: U+FF5E
+0x8161	U+2016	# DOUBLE VERTICAL LINE	Windows: U+2225
+0x8162	U+FF5C	# FULLWIDTH VERTICAL LINE
+0x8163	U+2026	# HORIZONTAL ELLIPSIS
+0x8164	U+2025	# TWO DOT LEADER
+0x8165	U+2018	# LEFT SINGLE QUOTATION MARK
+0x8166	U+2019	# RIGHT SINGLE QUOTATION MARK
+0x8167	U+201C	# LEFT DOUBLE QUOTATION MARK
+0x8168	U+201D	# RIGHT DOUBLE QUOTATION MARK
+0x8169	U+FF08	# FULLWIDTH LEFT PARENTHESIS
+0x816A	U+FF09	# FULLWIDTH RIGHT PARENTHESIS
+0x816B	U+3014	# LEFT TORTOISE SHELL BRACKET
+0x816C	U+3015	# RIGHT TORTOISE SHELL BRACKET
+0x816D	U+FF3B	# FULLWIDTH LEFT SQUARE BRACKET
+0x816E	U+FF3D	# FULLWIDTH RIGHT SQUARE BRACKET
+0x816F	U+FF5B	# FULLWIDTH LEFT CURLY BRACKET
+0x8170	U+FF5D	# FULLWIDTH RIGHT CURLY BRACKET
+0x8171	U+3008	# LEFT ANGLE BRACKET
+0x8172	U+3009	# RIGHT ANGLE BRACKET
+0x8173	U+300A	# LEFT DOUBLE ANGLE BRACKET
+0x8174	U+300B	# RIGHT DOUBLE ANGLE BRACKET
+0x8175	U+300C	# LEFT CORNER BRACKET
+0x8176	U+300D	# RIGHT CORNER BRACKET
+0x8177	U+300E	# LEFT WHITE CORNER BRACKET
+0x8178	U+300F	# RIGHT WHITE CORNER BRACKET
+0x8179	U+3010	# LEFT BLACK LENTICULAR BRACKET
+0x817A	U+3011	# RIGHT BLACK LENTICULAR BRACKET
+0x817B	U+FF0B	# FULLWIDTH PLUS SIGN
+0x817C	U+2212	# MINUS SIGN	Windows: U+FF0D
+0x817D	U+00B1	# PLUS-MINUS SIGN
+0x817E	U+00D7	# MULTIPLICATION SIGN
+0x8180	U+00F7	# DIVISION SIGN
+0x8181	U+FF1D	# FULLWIDTH EQUALS SIGN
+0x8182	U+2260	# NOT EQUAL TO
+0x8183	U+FF1C	# FULLWIDTH LESS-THAN SIGN
+0x8184	U+FF1E	# FULLWIDTH GREATER-THAN SIGN
+0x8185	U+2266	# LESS-THAN OVER EQUAL TO
+0x8186	U+2267	# GREATER-THAN OVER EQUAL TO
+0x8187	U+221E	# INFINITY
+0x8188	U+2234	# THEREFORE
+0x8189	U+2642	# MALE SIGN
+0x818A	U+2640	# FEMALE SIGN
+0x818B	U+00B0	# DEGREE SIGN
+0x818C	U+2032	# PRIME
+0x818D	U+2033	# DOUBLE PRIME
+0x818E	U+2103	# DEGREE CELSIUS
+0x818F	U+FFE5	# FULLWIDTH YEN SIGN
+0x8190	U+FF04	# FULLWIDTH DOLLAR SIGN
+0x8191	U+00A2	# CENT SIGN	Windows: U+FFE0
+0x8192	U+00A3	# POUND SIGN	Windows: U+FFE1
+0x8193	U+FF05	# FULLWIDTH PERCENT SIGN
+0x8194	U+FF03	# FULLWIDTH NUMBER SIGN
+0x8195	U+FF06	# FULLWIDTH AMPERSAND
+0x8196	U+FF0A	# FULLWIDTH ASTERISK
+0x8197	U+FF20	# FULLWIDTH COMMERCIAL AT
+0x8198	U+00A7	# SECTION SIGN
+0x8199	U+2606	# WHITE STAR
+0x819A	U+2605	# BLACK STAR
+0x819B	U+25CB	# WHITE CIRCLE
+0x819C	U+25CF	# BLACK CIRCLE
+0x819D	U+25CE	# BULLSEYE
+0x819E	U+25C7	# WHITE DIAMOND
+0x819F	U+25C6	# BLACK DIAMOND
+0x81A0	U+25A1	# WHITE SQUARE
+0x81A1	U+25A0	# BLACK SQUARE
+0x81A2	U+25B3	# WHITE UP-POINTING TRIANGLE
+0x81A3	U+25B2	# BLACK UP-POINTING TRIANGLE
+0x81A4	U+25BD	# WHITE DOWN-POINTING TRIANGLE
+0x81A5	U+25BC	# BLACK DOWN-POINTING TRIANGLE
+0x81A6	U+203B	# REFERENCE MARK
+0x81A7	U+3012	# POSTAL MARK
+0x81A8	U+2192	# RIGHTWARDS ARROW
+0x81A9	U+2190	# LEFTWARDS ARROW
+0x81AA	U+2191	# UPWARDS ARROW
+0x81AB	U+2193	# DOWNWARDS ARROW
+0x81AC	U+3013	# GETA MARK
+0x81AD	U+FF07	# FULLWIDTH APOSTROPHE
+0x81AE	U+FF02	# FULLWIDTH QUOTATION MARK	[2000]
+0x81AF	U+FF0D	# FULLWIDTH HYPHEN-MINUS	[2000]
+#0x81B0	U+007E	# TILDE	[2000]	Fullwidth: U+FF5E
+0x81B0	U+FF5E	# TILDE	[2000]	Fullwidth: U+FF5E
+0x81B1	U+3033	# VERTICAL KANA REPEAT MARK UPPER HALF	[2000]
+0x81B2	U+3034	# VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF	[2000]
+0x81B3	U+3035	# VERTICAL KANA REPEAT MARK LOWER HALF	[2000]
+0x81B4	U+303B	# VERTICAL IDEOGRAPHIC ITERATION MARK	[2000]	[Unicode3.2]
+0x81B5	U+303C	# MASU MARK	[2000]	[Unicode3.2]
+0x81B6	U+30FF	# KATAKANA DIGRAPH KOTO	[2000]	[Unicode3.2]
+0x81B7	U+309F	# HIRAGANA DIGRAPH YORI	[2000]	[Unicode3.2]
+0x81B8	U+2208	# ELEMENT OF	[1983]
+0x81B9	U+220B	# CONTAINS AS MEMBER	[1983]
+0x81BA	U+2286	# SUBSET OF OR EQUAL TO	[1983]
+0x81BB	U+2287	# SUPERSET OF OR EQUAL TO	[1983]
+0x81BC	U+2282	# SUBSET OF	[1983]
+0x81BD	U+2283	# SUPERSET OF	[1983]
+0x81BE	U+222A	# UNION	[1983]
+0x81BF	U+2229	# INTERSECTION	[1983]
+0x81C0	U+2284	# NOT A SUBSET OF	[2000]
+0x81C1	U+2285	# NOT A SUPERSET OF	[2000]
+0x81C2	U+228A	# SUBSET OF WITH NOT EQUAL TO	[2000]
+0x81C3	U+228B	# SUPERSET OF WITH NOT EQUAL TO	[2000]
+0x81C4	U+2209	# NOT AN ELEMENT OF	[2000]
+0x81C5	U+2205	# EMPTY SET	[2000]
+0x81C6	U+2305	# PROJECTIVE	[2000]
+0x81C7	U+2306	# PERSPECTIVE	[2000]
+0x81C8	U+2227	# LOGICAL AND	[1983]
+0x81C9	U+2228	# LOGICAL OR	[1983]
+0x81CA	U+00AC	# NOT SIGN	[1983]	Windows: U+FFE2
+0x81CB	U+21D2	# RIGHTWARDS DOUBLE ARROW	[1983]
+0x81CC	U+21D4	# LEFT RIGHT DOUBLE ARROW	[1983]
+0x81CD	U+2200	# FOR ALL	[1983]
+0x81CE	U+2203	# THERE EXISTS	[1983]
+0x81CF	U+2295	# CIRCLED PLUS	[2000]
+0x81D0	U+2296	# CIRCLED MINUS	[2000]
+0x81D1	U+2297	# CIRCLED TIMES	[2000]
+0x81D2	U+2225	# PARALLEL TO	[2000]
+0x81D3	U+2226	# NOT PARALLEL TO	[2000]
+0x81D4	U+FF5F	# FULLWIDTH LEFT WHITE PARENTHESIS	[2000]	[Unicode3.2]
+0x81D5	U+FF60	# FULLWIDTH RIGHT WHITE PARENTHESIS	[2000]	[Unicode3.2]
+0x81D6	U+3018	# LEFT WHITE TORTOISE SHELL BRACKET	[2000]
+0x81D7	U+3019	# RIGHT WHITE TORTOISE SHELL BRACKET	[2000]
+0x81D8	U+3016	# LEFT WHITE LENTICULAR BRACKET	[2000]
+0x81D9	U+3017	# RIGHT WHITE LENTICULAR BRACKET	[2000]
+0x81DA	U+2220	# ANGLE	[1983]
+0x81DB	U+22A5	# UP TACK	[1983]
+0x81DC	U+2312	# ARC	[1983]
+0x81DD	U+2202	# PARTIAL DIFFERENTIAL	[1983]
+0x81DE	U+2207	# NABLA	[1983]
+0x81DF	U+2261	# IDENTICAL TO	[1983]
+0x81E0	U+2252	# APPROXIMATELY EQUAL TO OR THE IMAGE OF	[1983]
+0x81E1	U+226A	# MUCH LESS-THAN	[1983]
+0x81E2	U+226B	# MUCH GREATER-THAN	[1983]
+0x81E3	U+221A	# SQUARE ROOT	[1983]
+0x81E4	U+223D	# REVERSED TILDE 	[1983]
+0x81E5	U+221D	# PROPORTIONAL TO	[1983]
+0x81E6	U+2235	# BECAUSE	[1983]
+0x81E7	U+222B	# INTEGRAL	[1983]
+0x81E8	U+222C	# DOUBLE INTEGRAL	[1983]
+0x81E9	U+2262	# NOT IDENTICAL TO	[2000]
+0x81EA	U+2243	# ASYMPTOTICALLY EQUAL TO	[2000]
+0x81EB	U+2245	# APPROXIMATELY EQUAL TO	[2000]
+0x81EC	U+2248	# ALMOST EQUAL TO	[2000]
+0x81ED	U+2276	# LESS-THAN OR GREATER-THAN	[2000]
+0x81EE	U+2277	# GREATER-THAN OR LESS-THAN	[2000]
+0x81EF	U+2194	# LEFT RIGHT ARROW	[2000]
+0x81F0	U+212B	# ANGSTROM SIGN	[1983]
+0x81F1	U+2030	# PER MILLE SIGN	[1983]
+0x81F2	U+266F	# MUSIC SHARP SIGN	[1983]
+0x81F3	U+266D	# MUSIC FLAT SIGN	[1983]
+0x81F4	U+266A	# EIGHTH NOTE	[1983]
+0x81F5	U+2020	# DAGGER	[1983]
+0x81F6	U+2021	# DOUBLE DAGGER	[1983]
+0x81F7	U+00B6	# PILCROW SIGN	[1983]
+0x81F8	U+266E	# MUSIC NATURAL SIGN	[2000]
+0x81F9	U+266B	# BEAMED EIGHTH NOTES	[2000]
+0x81FA	U+266C	# BEAMED SIXTEENTH NOTES	[2000]
+0x81FB	U+2669	# QUARTER NOTE	[2000]
+0x81FC	U+25EF	# LARGE CIRCLE	[1983]
+0x8240	U+25B7	# WHITE RIGHT-POINTING TRIANGLE	[2000]
+0x8241	U+25B6	# BLACK RIGHT-POINTING TRIANGLE	[2000]
+0x8242	U+25C1	# WHITE LEFT-POINTING TRIANGLE	[2000]
+0x8243	U+25C0	# BLACK LEFT-POINTING TRIANGLE	[2000]
+0x8244	U+2197	# NORTH EAST ARROW	[2000]
+0x8245	U+2198	# SOUTH EAST ARROW	[2000]
+0x8246	U+2196	# NORTH WEST ARROW	[2000]
+0x8247	U+2199	# SOUTH WEST ARROW	[2000]
+0x8248	U+21C4	# RIGHTWARDS ARROW OVER LEFTWARDS ARROW	[2000]
+0x8249	U+21E8	# RIGHTWARDS WHITE ARROW	[2000]
+0x824A	U+21E6	# LEFTWARDS WHITE ARROW	[2000]
+0x824B	U+21E7	# UPWARDS WHITE ARROW	[2000]
+0x824C	U+21E9	# DOWNWARDS WHITE ARROW	[2000]
+0x824D	U+2934	# ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS	[2000]	[Unicode3.2]
+0x824E	U+2935	# ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS	[2000]	[Unicode3.2]
+0x824F	U+FF10	# FULLWIDTH DIGIT ZERO
+0x8250	U+FF11	# FULLWIDTH DIGIT ONE
+0x8251	U+FF12	# FULLWIDTH DIGIT TWO
+0x8252	U+FF13	# FULLWIDTH DIGIT THREE
+0x8253	U+FF14	# FULLWIDTH DIGIT FOUR
+0x8254	U+FF15	# FULLWIDTH DIGIT FIVE
+0x8255	U+FF16	# FULLWIDTH DIGIT SIX
+0x8256	U+FF17	# FULLWIDTH DIGIT SEVEN
+0x8257	U+FF18	# FULLWIDTH DIGIT EIGHT
+0x8258	U+FF19	# FULLWIDTH DIGIT NINE
+0x8259	U+29BF	# CIRCLED BULLET	[2000]	[Unicode3.2]
+0x825A	U+25C9	# FISHEYE	[2000]
+0x825B	U+303D	# PART ALTERNATION MARK	[2000]	[Unicode3.2]
+0x825C	U+FE46	# WHITE SESAME DOT	[2000]	[Unicode3.2]
+0x825D	U+FE45	# SESAME DOT	[2000]	[Unicode3.2]
+0x825E	U+25E6	# WHITE BULLET	[2000]
+0x825F	U+2022	# BULLET	[2000]
+0x8260	U+FF21	# FULLWIDTH LATIN CAPITAL LETTER A
+0x8261	U+FF22	# FULLWIDTH LATIN CAPITAL LETTER B
+0x8262	U+FF23	# FULLWIDTH LATIN CAPITAL LETTER C
+0x8263	U+FF24	# FULLWIDTH LATIN CAPITAL LETTER D
+0x8264	U+FF25	# FULLWIDTH LATIN CAPITAL LETTER E
+0x8265	U+FF26	# FULLWIDTH LATIN CAPITAL LETTER F
+0x8266	U+FF27	# FULLWIDTH LATIN CAPITAL LETTER G
+0x8267	U+FF28	# FULLWIDTH LATIN CAPITAL LETTER H
+0x8268	U+FF29	# FULLWIDTH LATIN CAPITAL LETTER I
+0x8269	U+FF2A	# FULLWIDTH LATIN CAPITAL LETTER J
+0x826A	U+FF2B	# FULLWIDTH LATIN CAPITAL LETTER K
+0x826B	U+FF2C	# FULLWIDTH LATIN CAPITAL LETTER L
+0x826C	U+FF2D	# FULLWIDTH LATIN CAPITAL LETTER M
+0x826D	U+FF2E	# FULLWIDTH LATIN CAPITAL LETTER N
+0x826E	U+FF2F	# FULLWIDTH LATIN CAPITAL LETTER O
+0x826F	U+FF30	# FULLWIDTH LATIN CAPITAL LETTER P
+0x8270	U+FF31	# FULLWIDTH LATIN CAPITAL LETTER Q
+0x8271	U+FF32	# FULLWIDTH LATIN CAPITAL LETTER R
+0x8272	U+FF33	# FULLWIDTH LATIN CAPITAL LETTER S
+0x8273	U+FF34	# FULLWIDTH LATIN CAPITAL LETTER T
+0x8274	U+FF35	# FULLWIDTH LATIN CAPITAL LETTER U
+0x8275	U+FF36	# FULLWIDTH LATIN CAPITAL LETTER V
+0x8276	U+FF37	# FULLWIDTH LATIN CAPITAL LETTER W
+0x8277	U+FF38	# FULLWIDTH LATIN CAPITAL LETTER X
+0x8278	U+FF39	# FULLWIDTH LATIN CAPITAL LETTER Y
+0x8279	U+FF3A	# FULLWIDTH LATIN CAPITAL LETTER Z
+0x827A	U+2213	# MINUS-OR-PLUS SIGN	[2000]
+0x827B	U+2135	# ALEF SYMBOL	[2000]
+0x827C	U+210F	# PLANCK CONSTANT OVER TWO PI	[2000]
+0x827D	U+33CB	# SQUARE HP	[2000]
+0x827E	U+2113	# SCRIPT SMALL L	[2000]
+0x8280	U+2127	# INVERTED OHM SIGN	[2000]
+0x8281	U+FF41	# FULLWIDTH LATIN SMALL LETTER A
+0x8282	U+FF42	# FULLWIDTH LATIN SMALL LETTER B
+0x8283	U+FF43	# FULLWIDTH LATIN SMALL LETTER C
+0x8284	U+FF44	# FULLWIDTH LATIN SMALL LETTER D
+0x8285	U+FF45	# FULLWIDTH LATIN SMALL LETTER E
+0x8286	U+FF46	# FULLWIDTH LATIN SMALL LETTER F
+0x8287	U+FF47	# FULLWIDTH LATIN SMALL LETTER G
+0x8288	U+FF48	# FULLWIDTH LATIN SMALL LETTER H
+0x8289	U+FF49	# FULLWIDTH LATIN SMALL LETTER I
+0x828A	U+FF4A	# FULLWIDTH LATIN SMALL LETTER J
+0x828B	U+FF4B	# FULLWIDTH LATIN SMALL LETTER K
+0x828C	U+FF4C	# FULLWIDTH LATIN SMALL LETTER L
+0x828D	U+FF4D	# FULLWIDTH LATIN SMALL LETTER M
+0x828E	U+FF4E	# FULLWIDTH LATIN SMALL LETTER N
+0x828F	U+FF4F	# FULLWIDTH LATIN SMALL LETTER O
+0x8290	U+FF50	# FULLWIDTH LATIN SMALL LETTER P
+0x8291	U+FF51	# FULLWIDTH LATIN SMALL LETTER Q
+0x8292	U+FF52	# FULLWIDTH LATIN SMALL LETTER R
+0x8293	U+FF53	# FULLWIDTH LATIN SMALL LETTER S
+0x8294	U+FF54	# FULLWIDTH LATIN SMALL LETTER T
+0x8295	U+FF55	# FULLWIDTH LATIN SMALL LETTER U
+0x8296	U+FF56	# FULLWIDTH LATIN SMALL LETTER V
+0x8297	U+FF57	# FULLWIDTH LATIN SMALL LETTER W
+0x8298	U+FF58	# FULLWIDTH LATIN SMALL LETTER X
+0x8299	U+FF59	# FULLWIDTH LATIN SMALL LETTER Y
+0x829A	U+FF5A	# FULLWIDTH LATIN SMALL LETTER Z
+0x829B	U+30A0	# KATAKANA-HIRAGANA DOUBLE HYPHEN	[2000]	[Unicode3.2]
+0x829C	U+2013	# EN DASH	[2000]
+0x829D	U+29FA	# DOUBLE PLUS	[2000]	[Unicode3.2]
+0x829E	U+29FB	# TRIPLE PLUS	[2000]	[Unicode3.2]
+0x829F	U+3041	# HIRAGANA LETTER SMALL A
+0x82A0	U+3042	# HIRAGANA LETTER A
+0x82A1	U+3043	# HIRAGANA LETTER SMALL I
+0x82A2	U+3044	# HIRAGANA LETTER I
+0x82A3	U+3045	# HIRAGANA LETTER SMALL U
+0x82A4	U+3046	# HIRAGANA LETTER U
+0x82A5	U+3047	# HIRAGANA LETTER SMALL E
+0x82A6	U+3048	# HIRAGANA LETTER E
+0x82A7	U+3049	# HIRAGANA LETTER SMALL O
+0x82A8	U+304A	# HIRAGANA LETTER O
+0x82A9	U+304B	# HIRAGANA LETTER KA
+0x82AA	U+304C	# HIRAGANA LETTER GA
+0x82AB	U+304D	# HIRAGANA LETTER KI
+0x82AC	U+304E	# HIRAGANA LETTER GI
+0x82AD	U+304F	# HIRAGANA LETTER KU
+0x82AE	U+3050	# HIRAGANA LETTER GU
+0x82AF	U+3051	# HIRAGANA LETTER KE
+0x82B0	U+3052	# HIRAGANA LETTER GE
+0x82B1	U+3053	# HIRAGANA LETTER KO
+0x82B2	U+3054	# HIRAGANA LETTER GO
+0x82B3	U+3055	# HIRAGANA LETTER SA
+0x82B4	U+3056	# HIRAGANA LETTER ZA
+0x82B5	U+3057	# HIRAGANA LETTER SI
+0x82B6	U+3058	# HIRAGANA LETTER ZI
+0x82B7	U+3059	# HIRAGANA LETTER SU
+0x82B8	U+305A	# HIRAGANA LETTER ZU
+0x82B9	U+305B	# HIRAGANA LETTER SE
+0x82BA	U+305C	# HIRAGANA LETTER ZE
+0x82BB	U+305D	# HIRAGANA LETTER SO
+0x82BC	U+305E	# HIRAGANA LETTER ZO
+0x82BD	U+305F	# HIRAGANA LETTER TA
+0x82BE	U+3060	# HIRAGANA LETTER DA
+0x82BF	U+3061	# HIRAGANA LETTER TI
+0x82C0	U+3062	# HIRAGANA LETTER DI
+0x82C1	U+3063	# HIRAGANA LETTER SMALL TU
+0x82C2	U+3064	# HIRAGANA LETTER TU
+0x82C3	U+3065	# HIRAGANA LETTER DU
+0x82C4	U+3066	# HIRAGANA LETTER TE
+0x82C5	U+3067	# HIRAGANA LETTER DE
+0x82C6	U+3068	# HIRAGANA LETTER TO
+0x82C7	U+3069	# HIRAGANA LETTER DO
+0x82C8	U+306A	# HIRAGANA LETTER NA
+0x82C9	U+306B	# HIRAGANA LETTER NI
+0x82CA	U+306C	# HIRAGANA LETTER NU
+0x82CB	U+306D	# HIRAGANA LETTER NE
+0x82CC	U+306E	# HIRAGANA LETTER NO
+0x82CD	U+306F	# HIRAGANA LETTER HA
+0x82CE	U+3070	# HIRAGANA LETTER BA
+0x82CF	U+3071	# HIRAGANA LETTER PA
+0x82D0	U+3072	# HIRAGANA LETTER HI
+0x82D1	U+3073	# HIRAGANA LETTER BI
+0x82D2	U+3074	# HIRAGANA LETTER PI
+0x82D3	U+3075	# HIRAGANA LETTER HU
+0x82D4	U+3076	# HIRAGANA LETTER BU
+0x82D5	U+3077	# HIRAGANA LETTER PU
+0x82D6	U+3078	# HIRAGANA LETTER HE
+0x82D7	U+3079	# HIRAGANA LETTER BE
+0x82D8	U+307A	# HIRAGANA LETTER PE
+0x82D9	U+307B	# HIRAGANA LETTER HO
+0x82DA	U+307C	# HIRAGANA LETTER BO
+0x82DB	U+307D	# HIRAGANA LETTER PO
+0x82DC	U+307E	# HIRAGANA LETTER MA
+0x82DD	U+307F	# HIRAGANA LETTER MI
+0x82DE	U+3080	# HIRAGANA LETTER MU
+0x82DF	U+3081	# HIRAGANA LETTER ME
+0x82E0	U+3082	# HIRAGANA LETTER MO
+0x82E1	U+3083	# HIRAGANA LETTER SMALL YA
+0x82E2	U+3084	# HIRAGANA LETTER YA
+0x82E3	U+3085	# HIRAGANA LETTER SMALL YU
+0x82E4	U+3086	# HIRAGANA LETTER YU
+0x82E5	U+3087	# HIRAGANA LETTER SMALL YO
+0x82E6	U+3088	# HIRAGANA LETTER YO
+0x82E7	U+3089	# HIRAGANA LETTER RA
+0x82E8	U+308A	# HIRAGANA LETTER RI
+0x82E9	U+308B	# HIRAGANA LETTER RU
+0x82EA	U+308C	# HIRAGANA LETTER RE
+0x82EB	U+308D	# HIRAGANA LETTER RO
+0x82EC	U+308E	# HIRAGANA LETTER SMALL WA
+0x82ED	U+308F	# HIRAGANA LETTER WA
+0x82EE	U+3090	# HIRAGANA LETTER WI
+0x82EF	U+3091	# HIRAGANA LETTER WE
+0x82F0	U+3092	# HIRAGANA LETTER WO
+0x82F1	U+3093	# HIRAGANA LETTER N
+0x82F2	U+3094	# HIRAGANA LETTER VU	[2000]
+0x82F3	U+3095	# HIRAGANA LETTER SMALL KA	[2000]	[Unicode3.2]
+0x82F4	U+3096	# HIRAGANA LETTER SMALL KE	[2000]	[Unicode3.2]
+0x82F5	U+304B+309A	# 	[2000]
+0x82F6	U+304D+309A	# 	[2000]
+0x82F7	U+304F+309A	# 	[2000]
+0x82F8	U+3051+309A	# 	[2000]
+0x82F9	U+3053+309A	# 	[2000]
+0x82FA		# <reserved>
+0x82FB		# <reserved>
+0x82FC		# <reserved>
+0x8340	U+30A1	# KATAKANA LETTER SMALL A
+0x8341	U+30A2	# KATAKANA LETTER A
+0x8342	U+30A3	# KATAKANA LETTER SMALL I
+0x8343	U+30A4	# KATAKANA LETTER I
+0x8344	U+30A5	# KATAKANA LETTER SMALL U
+0x8345	U+30A6	# KATAKANA LETTER U
+0x8346	U+30A7	# KATAKANA LETTER SMALL E
+0x8347	U+30A8	# KATAKANA LETTER E
+0x8348	U+30A9	# KATAKANA LETTER SMALL O
+0x8349	U+30AA	# KATAKANA LETTER O
+0x834A	U+30AB	# KATAKANA LETTER KA
+0x834B	U+30AC	# KATAKANA LETTER GA
+0x834C	U+30AD	# KATAKANA LETTER KI
+0x834D	U+30AE	# KATAKANA LETTER GI
+0x834E	U+30AF	# KATAKANA LETTER KU
+0x834F	U+30B0	# KATAKANA LETTER GU
+0x8350	U+30B1	# KATAKANA LETTER KE
+0x8351	U+30B2	# KATAKANA LETTER GE
+0x8352	U+30B3	# KATAKANA LETTER KO
+0x8353	U+30B4	# KATAKANA LETTER GO
+0x8354	U+30B5	# KATAKANA LETTER SA
+0x8355	U+30B6	# KATAKANA LETTER ZA
+0x8356	U+30B7	# KATAKANA LETTER SI
+0x8357	U+30B8	# KATAKANA LETTER ZI
+0x8358	U+30B9	# KATAKANA LETTER SU
+0x8359	U+30BA	# KATAKANA LETTER ZU
+0x835A	U+30BB	# KATAKANA LETTER SE
+0x835B	U+30BC	# KATAKANA LETTER ZE
+0x835C	U+30BD	# KATAKANA LETTER SO
+0x835D	U+30BE	# KATAKANA LETTER ZO
+0x835E	U+30BF	# KATAKANA LETTER TA
+0x835F	U+30C0	# KATAKANA LETTER DA
+0x8360	U+30C1	# KATAKANA LETTER TI
+0x8361	U+30C2	# KATAKANA LETTER DI
+0x8362	U+30C3	# KATAKANA LETTER SMALL TU
+0x8363	U+30C4	# KATAKANA LETTER TU
+0x8364	U+30C5	# KATAKANA LETTER DU
+0x8365	U+30C6	# KATAKANA LETTER TE
+0x8366	U+30C7	# KATAKANA LETTER DE
+0x8367	U+30C8	# KATAKANA LETTER TO
+0x8368	U+30C9	# KATAKANA LETTER DO
+0x8369	U+30CA	# KATAKANA LETTER NA
+0x836A	U+30CB	# KATAKANA LETTER NI
+0x836B	U+30CC	# KATAKANA LETTER NU
+0x836C	U+30CD	# KATAKANA LETTER NE
+0x836D	U+30CE	# KATAKANA LETTER NO
+0x836E	U+30CF	# KATAKANA LETTER HA
+0x836F	U+30D0	# KATAKANA LETTER BA
+0x8370	U+30D1	# KATAKANA LETTER PA
+0x8371	U+30D2	# KATAKANA LETTER HI
+0x8372	U+30D3	# KATAKANA LETTER BI
+0x8373	U+30D4	# KATAKANA LETTER PI
+0x8374	U+30D5	# KATAKANA LETTER HU
+0x8375	U+30D6	# KATAKANA LETTER BU
+0x8376	U+30D7	# KATAKANA LETTER PU
+0x8377	U+30D8	# KATAKANA LETTER HE
+0x8378	U+30D9	# KATAKANA LETTER BE
+0x8379	U+30DA	# KATAKANA LETTER PE
+0x837A	U+30DB	# KATAKANA LETTER HO
+0x837B	U+30DC	# KATAKANA LETTER BO
+0x837C	U+30DD	# KATAKANA LETTER PO
+0x837D	U+30DE	# KATAKANA LETTER MA
+0x837E	U+30DF	# KATAKANA LETTER MI
+0x8380	U+30E0	# KATAKANA LETTER MU
+0x8381	U+30E1	# KATAKANA LETTER ME
+0x8382	U+30E2	# KATAKANA LETTER MO
+0x8383	U+30E3	# KATAKANA LETTER SMALL YA
+0x8384	U+30E4	# KATAKANA LETTER YA
+0x8385	U+30E5	# KATAKANA LETTER SMALL YU
+0x8386	U+30E6	# KATAKANA LETTER YU
+0x8387	U+30E7	# KATAKANA LETTER SMALL YO
+0x8388	U+30E8	# KATAKANA LETTER YO
+0x8389	U+30E9	# KATAKANA LETTER RA
+0x838A	U+30EA	# KATAKANA LETTER RI
+0x838B	U+30EB	# KATAKANA LETTER RU
+0x838C	U+30EC	# KATAKANA LETTER RE
+0x838D	U+30ED	# KATAKANA LETTER RO
+0x838E	U+30EE	# KATAKANA LETTER SMALL WA
+0x838F	U+30EF	# KATAKANA LETTER WA
+0x8390	U+30F0	# KATAKANA LETTER WI
+0x8391	U+30F1	# KATAKANA LETTER WE
+0x8392	U+30F2	# KATAKANA LETTER WO
+0x8393	U+30F3	# KATAKANA LETTER N
+0x8394	U+30F4	# KATAKANA LETTER VU
+0x8395	U+30F5	# KATAKANA LETTER SMALL KA
+0x8396	U+30F6	# KATAKANA LETTER SMALL KE
+0x8397	U+30AB+309A	# 	[2000]
+0x8398	U+30AD+309A	# 	[2000]
+0x8399	U+30AF+309A	# 	[2000]
+0x839A	U+30B1+309A	# 	[2000]
+0x839B	U+30B3+309A	# 	[2000]
+0x839C	U+30BB+309A	# 	[2000]
+0x839D	U+30C4+309A	# 	[2000]
+0x839E	U+30C8+309A	# 	[2000]
+0x839F	U+0391	# GREEK CAPITAL LETTER ALPHA
+0x83A0	U+0392	# GREEK CAPITAL LETTER BETA
+0x83A1	U+0393	# GREEK CAPITAL LETTER GAMMA
+0x83A2	U+0394	# GREEK CAPITAL LETTER DELTA
+0x83A3	U+0395	# GREEK CAPITAL LETTER EPSILON
+0x83A4	U+0396	# GREEK CAPITAL LETTER ZETA
+0x83A5	U+0397	# GREEK CAPITAL LETTER ETA
+0x83A6	U+0398	# GREEK CAPITAL LETTER THETA
+0x83A7	U+0399	# GREEK CAPITAL LETTER IOTA
+0x83A8	U+039A	# GREEK CAPITAL LETTER KAPPA
+0x83A9	U+039B	# GREEK CAPITAL LETTER LAMDA
+0x83AA	U+039C	# GREEK CAPITAL LETTER MU
+0x83AB	U+039D	# GREEK CAPITAL LETTER NU
+0x83AC	U+039E	# GREEK CAPITAL LETTER XI
+0x83AD	U+039F	# GREEK CAPITAL LETTER OMICRON
+0x83AE	U+03A0	# GREEK CAPITAL LETTER PI
+0x83AF	U+03A1	# GREEK CAPITAL LETTER RHO
+0x83B0	U+03A3	# GREEK CAPITAL LETTER SIGMA
+0x83B1	U+03A4	# GREEK CAPITAL LETTER TAU
+0x83B2	U+03A5	# GREEK CAPITAL LETTER UPSILON
+0x83B3	U+03A6	# GREEK CAPITAL LETTER PHI
+0x83B4	U+03A7	# GREEK CAPITAL LETTER CHI
+0x83B5	U+03A8	# GREEK CAPITAL LETTER PSI
+0x83B6	U+03A9	# GREEK CAPITAL LETTER OMEGA
+0x83B7	U+2664	# WHITE SPADE SUIT	[2000]
+0x83B8	U+2660	# BLACK SPADE SUIT	[2000]
+0x83B9	U+2662	# WHITE DIAMOND SUIT	[2000]
+0x83BA	U+2666	# BLACK DIAMOND SUIT	[2000]
+0x83BB	U+2661	# WHITE HEART SUIT	[2000]
+0x83BC	U+2665	# BLACK HEART SUIT	[2000]
+0x83BD	U+2667	# WHITE CLUB SUIT	[2000]
+0x83BE	U+2663	# BLACK CLUB SUIT	[2000]
+0x83BF	U+03B1	# GREEK SMALL LETTER ALPHA
+0x83C0	U+03B2	# GREEK SMALL LETTER BETA
+0x83C1	U+03B3	# GREEK SMALL LETTER GAMMA
+0x83C2	U+03B4	# GREEK SMALL LETTER DELTA
+0x83C3	U+03B5	# GREEK SMALL LETTER EPSILON
+0x83C4	U+03B6	# GREEK SMALL LETTER ZETA
+0x83C5	U+03B7	# GREEK SMALL LETTER ETA
+0x83C6	U+03B8	# GREEK SMALL LETTER THETA
+0x83C7	U+03B9	# GREEK SMALL LETTER IOTA
+0x83C8	U+03BA	# GREEK SMALL LETTER KAPPA
+0x83C9	U+03BB	# GREEK SMALL LETTER LAMDA
+0x83CA	U+03BC	# GREEK SMALL LETTER MU
+0x83CB	U+03BD	# GREEK SMALL LETTER NU
+0x83CC	U+03BE	# GREEK SMALL LETTER XI
+0x83CD	U+03BF	# GREEK SMALL LETTER OMICRON
+0x83CE	U+03C0	# GREEK SMALL LETTER PI
+0x83CF	U+03C1	# GREEK SMALL LETTER RHO
+0x83D0	U+03C3	# GREEK SMALL LETTER SIGMA
+0x83D1	U+03C4	# GREEK SMALL LETTER TAU
+0x83D2	U+03C5	# GREEK SMALL LETTER UPSILON
+0x83D3	U+03C6	# GREEK SMALL LETTER PHI
+0x83D4	U+03C7	# GREEK SMALL LETTER CHI
+0x83D5	U+03C8	# GREEK SMALL LETTER PSI
+0x83D6	U+03C9	# GREEK SMALL LETTER OMEGA
+0x83D7	U+03C2	# GREEK SMALL LETTER FINAL SIGMA	[2000]
+0x83D8	U+24F5	# DOUBLE CIRCLED DIGIT ONE	[2000]	[Unicode3.2]
+0x83D9	U+24F6	# DOUBLE CIRCLED DIGIT TWO	[2000]	[Unicode3.2]
+0x83DA	U+24F7	# DOUBLE CIRCLED DIGIT THREE	[2000]	[Unicode3.2]
+0x83DB	U+24F8	# DOUBLE CIRCLED DIGIT FOUR	[2000]	[Unicode3.2]
+0x83DC	U+24F9	# DOUBLE CIRCLED DIGIT FIVE	[2000]	[Unicode3.2]
+0x83DD	U+24FA	# DOUBLE CIRCLED DIGIT SIX	[2000]	[Unicode3.2]
+0x83DE	U+24FB	# DOUBLE CIRCLED DIGIT SEVEN	[2000]	[Unicode3.2]
+0x83DF	U+24FC	# DOUBLE CIRCLED DIGIT EIGHT	[2000]	[Unicode3.2]
+0x83E0	U+24FD	# DOUBLE CIRCLED DIGIT NINE	[2000]	[Unicode3.2]
+0x83E1	U+24FE	# DOUBLE CIRCLED NUMBER TEN	[2000]	[Unicode3.2]
+0x83E2	U+2616	# WHITE SHOGI PIECE	[2000]	[Unicode3.2]
+0x83E3	U+2617	# BLACK SHOGI PIECE	[2000]	[Unicode3.2]
+0x83E4	U+3020	# POSTAL MARK FACE	[2000]
+0x83E5	U+260E	# BLACK TELEPHONE	[2000]
+0x83E6	U+2600	# BLACK SUN WITH RAYS	[2000]
+0x83E7	U+2601	# CLOUD	[2000]
+0x83E8	U+2602	# UMBRELLA	[2000]
+0x83E9	U+2603	# SNOWMAN	[2000]
+0x83EA	U+2668	# HOT SPRINGS	[2000]
+0x83EB	U+25B1	# WHITE PARALLELOGRAM	[2000]
+0x83EC	U+31F0	# KATAKANA LETTER SMALL KU	[2000]	[Unicode3.2]
+0x83ED	U+31F1	# KATAKANA LETTER SMALL SI	[2000]	[Unicode3.2]
+0x83EE	U+31F2	# KATAKANA LETTER SMALL SU	[2000]	[Unicode3.2]
+0x83EF	U+31F3	# KATAKANA LETTER SMALL TO	[2000]	[Unicode3.2]
+0x83F0	U+31F4	# KATAKANA LETTER SMALL NU	[2000]	[Unicode3.2]
+0x83F1	U+31F5	# KATAKANA LETTER SMALL HA	[2000]	[Unicode3.2]
+0x83F2	U+31F6	# KATAKANA LETTER SMALL HI	[2000]	[Unicode3.2]
+0x83F3	U+31F7	# KATAKANA LETTER SMALL HU	[2000]	[Unicode3.2]
+0x83F4	U+31F8	# KATAKANA LETTER SMALL HE	[2000]	[Unicode3.2]
+0x83F5	U+31F9	# KATAKANA LETTER SMALL HO	[2000]	[Unicode3.2]
+0x83F6	U+31F7+309A	# 	[2000]
+0x83F7	U+31FA	# KATAKANA LETTER SMALL MU	[2000]	[Unicode3.2]
+0x83F8	U+31FB	# KATAKANA LETTER SMALL RA	[2000]	[Unicode3.2]
+0x83F9	U+31FC	# KATAKANA LETTER SMALL RI	[2000]	[Unicode3.2]
+0x83FA	U+31FD	# KATAKANA LETTER SMALL RU	[2000]	[Unicode3.2]
+0x83FB	U+31FE	# KATAKANA LETTER SMALL RE	[2000]	[Unicode3.2]
+0x83FC	U+31FF	# KATAKANA LETTER SMALL RO	[2000]	[Unicode3.2]
+0x8440	U+0410	# CYRILLIC CAPITAL LETTER A
+0x8441	U+0411	# CYRILLIC CAPITAL LETTER BE
+0x8442	U+0412	# CYRILLIC CAPITAL LETTER VE
+0x8443	U+0413	# CYRILLIC CAPITAL LETTER GHE
+0x8444	U+0414	# CYRILLIC CAPITAL LETTER DE
+0x8445	U+0415	# CYRILLIC CAPITAL LETTER IE
+0x8446	U+0401	# CYRILLIC CAPITAL LETTER IO
+0x8447	U+0416	# CYRILLIC CAPITAL LETTER ZHE
+0x8448	U+0417	# CYRILLIC CAPITAL LETTER ZE
+0x8449	U+0418	# CYRILLIC CAPITAL LETTER I
+0x844A	U+0419	# CYRILLIC CAPITAL LETTER SHORT I
+0x844B	U+041A	# CYRILLIC CAPITAL LETTER KA
+0x844C	U+041B	# CYRILLIC CAPITAL LETTER EL
+0x844D	U+041C	# CYRILLIC CAPITAL LETTER EM
+0x844E	U+041D	# CYRILLIC CAPITAL LETTER EN
+0x844F	U+041E	# CYRILLIC CAPITAL LETTER O
+0x8450	U+041F	# CYRILLIC CAPITAL LETTER PE
+0x8451	U+0420	# CYRILLIC CAPITAL LETTER ER
+0x8452	U+0421	# CYRILLIC CAPITAL LETTER ES
+0x8453	U+0422	# CYRILLIC CAPITAL LETTER TE
+0x8454	U+0423	# CYRILLIC CAPITAL LETTER U
+0x8455	U+0424	# CYRILLIC CAPITAL LETTER EF
+0x8456	U+0425	# CYRILLIC CAPITAL LETTER HA
+0x8457	U+0426	# CYRILLIC CAPITAL LETTER TSE
+0x8458	U+0427	# CYRILLIC CAPITAL LETTER CHE
+0x8459	U+0428	# CYRILLIC CAPITAL LETTER SHA
+0x845A	U+0429	# CYRILLIC CAPITAL LETTER SHCHA
+0x845B	U+042A	# CYRILLIC CAPITAL LETTER HARD SIGN
+0x845C	U+042B	# CYRILLIC CAPITAL LETTER YERU
+0x845D	U+042C	# CYRILLIC CAPITAL LETTER SOFT SIGN
+0x845E	U+042D	# CYRILLIC CAPITAL LETTER E
+0x845F	U+042E	# CYRILLIC CAPITAL LETTER YU
+0x8460	U+042F	# CYRILLIC CAPITAL LETTER YA
+0x8461	U+23BE	# DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT	[2000]	[Unicode3.2]
+0x8462	U+23BF	# DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT	[2000]	[Unicode3.2]
+0x8463	U+23C0	# DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE	[2000]	[Unicode3.2]
+0x8464	U+23C1	# DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE	[2000]	[Unicode3.2]
+0x8465	U+23C2	# DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE	[2000]	[Unicode3.2]
+0x8466	U+23C3	# DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE	[2000]	[Unicode3.2]
+0x8467	U+23C4	# DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE	[2000]	[Unicode3.2]
+0x8468	U+23C5	# DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE	[2000]	[Unicode3.2]
+0x8469	U+23C6	# DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE	[2000]	[Unicode3.2]
+0x846A	U+23C7	# DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE	[2000]	[Unicode3.2]
+0x846B	U+23C8	# DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE	[2000]	[Unicode3.2]
+0x846C	U+23C9	# DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL	[2000]	[Unicode3.2]
+0x846D	U+23CA	# DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL	[2000]	[Unicode3.2]
+0x846E	U+23CB	# DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT	[2000]	[Unicode3.2]
+0x846F	U+23CC	# DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT	[2000]	[Unicode3.2]
+0x8470	U+0430	# CYRILLIC SMALL LETTER A
+0x8471	U+0431	# CYRILLIC SMALL LETTER BE
+0x8472	U+0432	# CYRILLIC SMALL LETTER VE
+0x8473	U+0433	# CYRILLIC SMALL LETTER GHE
+0x8474	U+0434	# CYRILLIC SMALL LETTER DE
+0x8475	U+0435	# CYRILLIC SMALL LETTER IE
+0x8476	U+0451	# CYRILLIC SMALL LETTER IO
+0x8477	U+0436	# CYRILLIC SMALL LETTER ZHE
+0x8478	U+0437	# CYRILLIC SMALL LETTER ZE
+0x8479	U+0438	# CYRILLIC SMALL LETTER I
+0x847A	U+0439	# CYRILLIC SMALL LETTER SHORT I
+0x847B	U+043A	# CYRILLIC SMALL LETTER KA
+0x847C	U+043B	# CYRILLIC SMALL LETTER EL
+0x847D	U+043C	# CYRILLIC SMALL LETTER EM
+0x847E	U+043D	# CYRILLIC SMALL LETTER EN
+0x8480	U+043E	# CYRILLIC SMALL LETTER O
+0x8481	U+043F	# CYRILLIC SMALL LETTER PE
+0x8482	U+0440	# CYRILLIC SMALL LETTER ER
+0x8483	U+0441	# CYRILLIC SMALL LETTER ES
+0x8484	U+0442	# CYRILLIC SMALL LETTER TE
+0x8485	U+0443	# CYRILLIC SMALL LETTER U
+0x8486	U+0444	# CYRILLIC SMALL LETTER EF
+0x8487	U+0445	# CYRILLIC SMALL LETTER HA
+0x8488	U+0446	# CYRILLIC SMALL LETTER TSE
+0x8489	U+0447	# CYRILLIC SMALL LETTER CHE
+0x848A	U+0448	# CYRILLIC SMALL LETTER SHA
+0x848B	U+0449	# CYRILLIC SMALL LETTER SHCHA
+0x848C	U+044A	# CYRILLIC SMALL LETTER HARD SIGN
+0x848D	U+044B	# CYRILLIC SMALL LETTER YERU
+0x848E	U+044C	# CYRILLIC SMALL LETTER SOFT SIGN
+0x848F	U+044D	# CYRILLIC SMALL LETTER E
+0x8490	U+044E	# CYRILLIC SMALL LETTER YU
+0x8491	U+044F	# CYRILLIC SMALL LETTER YA
+0x8492	U+30F7	# KATAKANA LETTER VA	[2000]
+0x8493	U+30F8	# KATAKANA LETTER VI	[2000]
+0x8494	U+30F9	# KATAKANA LETTER VE	[2000]
+0x8495	U+30FA	# KATAKANA LETTER VO	[2000]
+0x8496	U+22DA	# LESS-THAN EQUAL TO OR GREATER-THAN	[2000]
+0x8497	U+22DB	# GREATER-THAN EQUAL TO OR LESS-THAN	[2000]
+0x8498	U+2153	# VULGAR FRACTION ONE THIRD	[2000]
+0x8499	U+2154	# VULGAR FRACTION TWO THIRDS	[2000]
+0x849A	U+2155	# VULGAR FRACTION ONE FIFTH	[2000]
+0x849B	U+2713	# CHECK MARK	[2000]
+0x849C	U+2318	# PLACE OF INTEREST SIGN	[2000]
+0x849D	U+2423	# OPEN BOX	[2000]
+0x849E	U+23CE	# RETURN SYMBOL	[2000]	[Unicode3.2]
+0x849F	U+2500	# BOX DRAWINGS LIGHT HORIZONTAL	[1983]
+0x84A0	U+2502	# BOX DRAWINGS LIGHT VERTICAL	[1983]
+0x84A1	U+250C	# BOX DRAWINGS LIGHT DOWN AND RIGHT	[1983]
+0x84A2	U+2510	# BOX DRAWINGS LIGHT DOWN AND LEFT	[1983]
+0x84A3	U+2518	# BOX DRAWINGS LIGHT UP AND LEFT	[1983]
+0x84A4	U+2514	# BOX DRAWINGS LIGHT UP AND RIGHT	[1983]
+0x84A5	U+251C	# BOX DRAWINGS LIGHT VERTICAL AND RIGHT	[1983]
+0x84A6	U+252C	# BOX DRAWINGS LIGHT DOWN AND HORIZONTAL	[1983]
+0x84A7	U+2524	# BOX DRAWINGS LIGHT VERTICAL AND LEFT	[1983]
+0x84A8	U+2534	# BOX DRAWINGS LIGHT UP AND HORIZONTAL	[1983]
+0x84A9	U+253C	# BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL	[1983]
+0x84AA	U+2501	# BOX DRAWINGS HEAVY HORIZONTAL	[1983]
+0x84AB	U+2503	# BOX DRAWINGS HEAVY VERTICAL	[1983]
+0x84AC	U+250F	# BOX DRAWINGS HEAVY DOWN AND RIGHT	[1983]
+0x84AD	U+2513	# BOX DRAWINGS HEAVY DOWN AND LEFT	[1983]
+0x84AE	U+251B	# BOX DRAWINGS HEAVY UP AND LEFT	[1983]
+0x84AF	U+2517	# BOX DRAWINGS HEAVY UP AND RIGHT	[1983]
+0x84B0	U+2523	# BOX DRAWINGS HEAVY VERTICAL AND RIGHT	[1983]
+0x84B1	U+2533	# BOX DRAWINGS HEAVY DOWN AND HORIZONTAL	[1983]
+0x84B2	U+252B	# BOX DRAWINGS HEAVY VERTICAL AND LEFT	[1983]
+0x84B3	U+253B	# BOX DRAWINGS HEAVY UP AND HORIZONTAL	[1983]
+0x84B4	U+254B	# BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL	[1983]
+0x84B5	U+2520	# BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT	[1983]
+0x84B6	U+252F	# BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY	[1983]
+0x84B7	U+2528	# BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT	[1983]
+0x84B8	U+2537	# BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY	[1983]
+0x84B9	U+253F	# BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY	[1983]
+0x84BA	U+251D	# BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY	[1983]
+0x84BB	U+2530	# BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT	[1983]
+0x84BC	U+2525	# BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY	[1983]
+0x84BD	U+2538	# BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT	[1983]
+0x84BE	U+2542	# BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT	[1983]
+0x84BF	U+3251	# CIRCLED NUMBER TWENTY ONE	[2000]	[Unicode3.2]
+0x84C0	U+3252	# CIRCLED NUMBER TWENTY TWO	[2000]	[Unicode3.2]
+0x84C1	U+3253	# CIRCLED NUMBER TWENTY THREE	[2000]	[Unicode3.2]
+0x84C2	U+3254	# CIRCLED NUMBER TWENTY FOUR	[2000]	[Unicode3.2]
+0x84C3	U+3255	# CIRCLED NUMBER TWENTY FIVE	[2000]	[Unicode3.2]
+0x84C4	U+3256	# CIRCLED NUMBER TWENTY SIX	[2000]	[Unicode3.2]
+0x84C5	U+3257	# CIRCLED NUMBER TWENTY SEVEN	[2000]	[Unicode3.2]
+0x84C6	U+3258	# CIRCLED NUMBER TWENTY EIGHT	[2000]	[Unicode3.2]
+0x84C7	U+3259	# CIRCLED NUMBER TWENTY NINE	[2000]	[Unicode3.2]
+0x84C8	U+325A	# CIRCLED NUMBER THIRTY	[2000]	[Unicode3.2]
+0x84C9	U+325B	# CIRCLED NUMBER THIRTY ONE	[2000]	[Unicode3.2]
+0x84CA	U+325C	# CIRCLED NUMBER THIRTY TWO	[2000]	[Unicode3.2]
+0x84CB	U+325D	# CIRCLED NUMBER THIRTY THREE	[2000]	[Unicode3.2]
+0x84CC	U+325E	# CIRCLED NUMBER THIRTY FOUR	[2000]	[Unicode3.2]
+0x84CD	U+325F	# CIRCLED NUMBER THIRTY FIVE	[2000]	[Unicode3.2]
+0x84CE	U+32B1	# CIRCLED NUMBER THIRTY SIX	[2000]	[Unicode3.2]
+0x84CF	U+32B2	# CIRCLED NUMBER THIRTY SEVEN	[2000]	[Unicode3.2]
+0x84D0	U+32B3	# CIRCLED NUMBER THIRTY EIGHT	[2000]	[Unicode3.2]
+0x84D1	U+32B4	# CIRCLED NUMBER THIRTY NINE	[2000]	[Unicode3.2]
+0x84D2	U+32B5	# CIRCLED NUMBER FORTY	[2000]	[Unicode3.2]
+0x84D3	U+32B6	# CIRCLED NUMBER FORTY ONE	[2000]	[Unicode3.2]
+0x84D4	U+32B7	# CIRCLED NUMBER FORTY TWO	[2000]	[Unicode3.2]
+0x84D5	U+32B8	# CIRCLED NUMBER FORTY THREE	[2000]	[Unicode3.2]
+0x84D6	U+32B9	# CIRCLED NUMBER FORTY FOUR	[2000]	[Unicode3.2]
+0x84D7	U+32BA	# CIRCLED NUMBER FORTY FIVE	[2000]	[Unicode3.2]
+0x84D8	U+32BB	# CIRCLED NUMBER FORTY SIX	[2000]	[Unicode3.2]
+0x84D9	U+32BC	# CIRCLED NUMBER FORTY SEVEN	[2000]	[Unicode3.2]
+0x84DA	U+32BD	# CIRCLED NUMBER FORTY EIGHT	[2000]	[Unicode3.2]
+0x84DB	U+32BE	# CIRCLED NUMBER FORTY NINE	[2000]	[Unicode3.2]
+0x84DC	U+32BF	# CIRCLED NUMBER FIFTY	[2000]	[Unicode3.2]
+0x84DD		# <reserved>
+0x84DE		# <reserved>
+0x84DF		# <reserved>
+0x84E0		# <reserved>
+0x84E1		# <reserved>
+0x84E2		# <reserved>
+0x84E3		# <reserved>
+0x84E4		# <reserved>
+0x84E5	U+25D0	# CIRCLE WITH LEFT HALF BLACK	[2000]
+0x84E6	U+25D1	# CIRCLE WITH RIGHT HALF BLACK	[2000]
+0x84E7	U+25D2	# CIRCLE WITH LOWER HALF BLACK	[2000]
+0x84E8	U+25D3	# CIRCLE WITH UPPER HALF BLACK	[2000]
+0x84E9	U+203C	# DOUBLE EXCLAMATION MARK	[2000]
+0x84EA	U+2047	# DOUBLE QUESTION MARK	[2000]	[Unicode3.2]
+0x84EB	U+2048	# QUESTION EXCLAMATION MARK	[2000]
+0x84EC	U+2049	# EXCLAMATION QUESTION MARK	[2000]
+0x84ED	U+01CD	# LATIN CAPITAL LETTER A WITH CARON	[2000]
+0x84EE	U+01CE	# LATIN SMALL LETTER A WITH CARON	[2000]
+0x84EF	U+01D0	# LATIN SMALL LETTER I WITH CARON	[2000]
+0x84F0	U+1E3E	# LATIN CAPITAL LETTER M WITH ACUTE	[2000]
+0x84F1	U+1E3F	# LATIN SMALL LETTER M WITH ACUTE	[2000]
+0x84F2	U+01F8	# LATIN CAPITAL LETTER N WITH GRAVE	[2000]
+0x84F3	U+01F9	# LATIN SMALL LETTER N WITH GRAVE	[2000]
+0x84F4	U+01D1	# LATIN CAPITAL LETTER O WITH CARON	[2000]
+0x84F5	U+01D2	# LATIN SMALL LETTER O WITH CARON	[2000]
+0x84F6	U+01D4	# LATIN SMALL LETTER U WITH CARON	[2000]
+0x84F7	U+01D6	# LATIN SMALL LETTER U WITH DIAERESIS AND MACRON	[2000]
+0x84F8	U+01D8	# LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE	[2000]
+0x84F9	U+01DA	# LATIN SMALL LETTER U WITH DIAERESIS AND CARON	[2000]
+0x84FA	U+01DC	# LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE	[2000]
+0x84FB		# <reserved>
+0x84FC		# <reserved>
+0x8540	U+20AC	# EURO SIGN	[2000]
+0x8541	U+00A0	# NO-BREAK SPACE	[2000]
+0x8542	U+00A1	# INVERTED EXCLAMATION MARK	[2000]
+0x8543	U+00A4	# CURRENCY SIGN	[2000]
+0x8544	U+00A6	# BROKEN BAR	[2000]
+0x8545	U+00A9	# COPYRIGHT SIGN	[2000]
+0x8546	U+00AA	# FEMININE ORDINAL INDICATOR	[2000]
+0x8547	U+00AB	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 	[2000]
+0x8548	U+00AD	# SOFT HYPHEN	[2000]
+0x8549	U+00AE	# REGISTERED SIGN	[2000]
+0x854A	U+00AF	# MACRON	[2000]
+0x854B	U+00B2	# SUPERSCRIPT TWO	[2000]
+0x854C	U+00B3	# SUPERSCRIPT THREE	[2000]
+0x854D	U+00B7	# MIDDLE DOT	[2000]
+0x854E	U+00B8	# CEDILLA	[2000]
+0x854F	U+00B9	# SUPERSCRIPT ONE	[2000]
+0x8550	U+00BA	# MASCULINE ORDINAL INDICATOR	[2000]
+0x8551	U+00BB	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 	[2000]
+0x8552	U+00BC	# VULGAR FRACTION ONE QUARTER	[2000]
+0x8553	U+00BD	# VULGAR FRACTION ONE HALF	[2000]
+0x8554	U+00BE	# VULGAR FRACTION THREE QUARTERS	[2000]
+0x8555	U+00BF	# INVERTED QUESTION MARK	[2000]
+0x8556	U+00C0	# LATIN CAPITAL LETTER A WITH GRAVE	[2000]
+0x8557	U+00C1	# LATIN CAPITAL LETTER A WITH ACUTE	[2000]
+0x8558	U+00C2	# LATIN CAPITAL LETTER A WITH CIRCUMFLEX	[2000]
+0x8559	U+00C3	# LATIN CAPITAL LETTER A WITH TILDE	[2000]
+0x855A	U+00C4	# LATIN CAPITAL LETTER A WITH DIAERESIS	[2000]
+0x855B	U+00C5	# LATIN CAPITAL LETTER A WITH RING ABOVE	[2000]
+0x855C	U+00C6	# LATIN CAPITAL LETTER AE 	[2000]
+0x855D	U+00C7	# LATIN CAPITAL LETTER C WITH CEDILLA	[2000]
+0x855E	U+00C8	# LATIN CAPITAL LETTER E WITH GRAVE	[2000]
+0x855F	U+00C9	# LATIN CAPITAL LETTER E WITH ACUTE	[2000]
+0x8560	U+00CA	# LATIN CAPITAL LETTER E WITH CIRCUMFLEX	[2000]
+0x8561	U+00CB	# LATIN CAPITAL LETTER E WITH DIAERESIS	[2000]
+0x8562	U+00CC	# LATIN CAPITAL LETTER I WITH GRAVE	[2000]
+0x8563	U+00CD	# LATIN CAPITAL LETTER I WITH ACUTE	[2000]
+0x8564	U+00CE	# LATIN CAPITAL LETTER I WITH CIRCUMFLEX	[2000]
+0x8565	U+00CF	# LATIN CAPITAL LETTER I WITH DIAERESIS	[2000]
+0x8566	U+00D0	# LATIN CAPITAL LETTER ETH 	[2000]
+0x8567	U+00D1	# LATIN CAPITAL LETTER N WITH TILDE	[2000]
+0x8568	U+00D2	# LATIN CAPITAL LETTER O WITH GRAVE	[2000]
+0x8569	U+00D3	# LATIN CAPITAL LETTER O WITH ACUTE	[2000]
+0x856A	U+00D4	# LATIN CAPITAL LETTER O WITH CIRCUMFLEX	[2000]
+0x856B	U+00D5	# LATIN CAPITAL LETTER O WITH TILDE	[2000]
+0x856C	U+00D6	# LATIN CAPITAL LETTER O WITH DIAERESIS	[2000]
+0x856D	U+00D8	# LATIN CAPITAL LETTER O WITH STROKE	[2000]
+0x856E	U+00D9	# LATIN CAPITAL LETTER U WITH GRAVE	[2000]
+0x856F	U+00DA	# LATIN CAPITAL LETTER U WITH ACUTE	[2000]
+0x8570	U+00DB	# LATIN CAPITAL LETTER U WITH CIRCUMFLEX	[2000]
+0x8571	U+00DC	# LATIN CAPITAL LETTER U WITH DIAERESIS	[2000]
+0x8572	U+00DD	# LATIN CAPITAL LETTER Y WITH ACUTE	[2000]
+0x8573	U+00DE	# LATIN CAPITAL LETTER THORN 	[2000]
+0x8574	U+00DF	# LATIN SMALL LETTER SHARP S 	[2000]
+0x8575	U+00E0	# LATIN SMALL LETTER A WITH GRAVE	[2000]
+0x8576	U+00E1	# LATIN SMALL LETTER A WITH ACUTE	[2000]
+0x8577	U+00E2	# LATIN SMALL LETTER A WITH CIRCUMFLEX	[2000]
+0x8578	U+00E3	# LATIN SMALL LETTER A WITH TILDE	[2000]
+0x8579	U+00E4	# LATIN SMALL LETTER A WITH DIAERESIS	[2000]
+0x857A	U+00E5	# LATIN SMALL LETTER A WITH RING ABOVE	[2000]
+0x857B	U+00E6	# LATIN SMALL LETTER AE 	[2000]
+0x857C	U+00E7	# LATIN SMALL LETTER C WITH CEDILLA	[2000]
+0x857D	U+00E8	# LATIN SMALL LETTER E WITH GRAVE	[2000]
+0x857E	U+00E9	# LATIN SMALL LETTER E WITH ACUTE	[2000]
+0x8580	U+00EA	# LATIN SMALL LETTER E WITH CIRCUMFLEX	[2000]
+0x8581	U+00EB	# LATIN SMALL LETTER E WITH DIAERESIS	[2000]
+0x8582	U+00EC	# LATIN SMALL LETTER I WITH GRAVE	[2000]
+0x8583	U+00ED	# LATIN SMALL LETTER I WITH ACUTE	[2000]
+0x8584	U+00EE	# LATIN SMALL LETTER I WITH CIRCUMFLEX	[2000]
+0x8585	U+00EF	# LATIN SMALL LETTER I WITH DIAERESIS	[2000]
+0x8586	U+00F0	# LATIN SMALL LETTER ETH 	[2000]
+0x8587	U+00F1	# LATIN SMALL LETTER N WITH TILDE	[2000]
+0x8588	U+00F2	# LATIN SMALL LETTER O WITH GRAVE	[2000]
+0x8589	U+00F3	# LATIN SMALL LETTER O WITH ACUTE	[2000]
+0x858A	U+00F4	# LATIN SMALL LETTER O WITH CIRCUMFLEX	[2000]
+0x858B	U+00F5	# LATIN SMALL LETTER O WITH TILDE	[2000]
+0x858C	U+00F6	# LATIN SMALL LETTER O WITH DIAERESIS	[2000]
+0x858D	U+00F8	# LATIN SMALL LETTER O WITH STROKE	[2000]
+0x858E	U+00F9	# LATIN SMALL LETTER U WITH GRAVE	[2000]
+0x858F	U+00FA	# LATIN SMALL LETTER U WITH ACUTE	[2000]
+0x8590	U+00FB	# LATIN SMALL LETTER U WITH CIRCUMFLEX	[2000]
+0x8591	U+00FC	# LATIN SMALL LETTER U WITH DIAERESIS	[2000]
+0x8592	U+00FD	# LATIN SMALL LETTER Y WITH ACUTE	[2000]
+0x8593	U+00FE	# LATIN SMALL LETTER THORN 	[2000]
+0x8594	U+00FF	# LATIN SMALL LETTER Y WITH DIAERESIS	[2000]
+0x8595	U+0100	# LATIN CAPITAL LETTER A WITH MACRON	[2000]
+0x8596	U+012A	# LATIN CAPITAL LETTER I WITH MACRON	[2000]
+0x8597	U+016A	# LATIN CAPITAL LETTER U WITH MACRON	[2000]
+0x8598	U+0112	# LATIN CAPITAL LETTER E WITH MACRON	[2000]
+0x8599	U+014C	# LATIN CAPITAL LETTER O WITH MACRON	[2000]
+0x859A	U+0101	# LATIN SMALL LETTER A WITH MACRON	[2000]
+0x859B	U+012B	# LATIN SMALL LETTER I WITH MACRON	[2000]
+0x859C	U+016B	# LATIN SMALL LETTER U WITH MACRON	[2000]
+0x859D	U+0113	# LATIN SMALL LETTER E WITH MACRON	[2000]
+0x859E	U+014D	# LATIN SMALL LETTER O WITH MACRON	[2000]
+0x859F	U+0104	# LATIN CAPITAL LETTER A WITH OGONEK	[2000]
+0x85A0	U+02D8	# BREVE	[2000]
+0x85A1	U+0141	# LATIN CAPITAL LETTER L WITH STROKE	[2000]
+0x85A2	U+013D	# LATIN CAPITAL LETTER L WITH CARON	[2000]
+0x85A3	U+015A	# LATIN CAPITAL LETTER S WITH ACUTE	[2000]
+0x85A4	U+0160	# LATIN CAPITAL LETTER S WITH CARON	[2000]
+0x85A5	U+015E	# LATIN CAPITAL LETTER S WITH CEDILLA 	[2000]
+0x85A6	U+0164	# LATIN CAPITAL LETTER T WITH CARON	[2000]
+0x85A7	U+0179	# LATIN CAPITAL LETTER Z WITH ACUTE	[2000]
+0x85A8	U+017D	# LATIN CAPITAL LETTER Z WITH CARON	[2000]
+0x85A9	U+017B	# LATIN CAPITAL LETTER Z WITH DOT ABOVE	[2000]
+0x85AA	U+0105	# LATIN SMALL LETTER A WITH OGONEK	[2000]
+0x85AB	U+02DB	# OGONEK	[2000]
+0x85AC	U+0142	# LATIN SMALL LETTER L WITH STROKE	[2000]
+0x85AD	U+013E	# LATIN SMALL LETTER L WITH CARON	[2000]
+0x85AE	U+015B	# LATIN SMALL LETTER S WITH ACUTE	[2000]
+0x85AF	U+02C7	# CARON 	[2000]
+0x85B0	U+0161	# LATIN SMALL LETTER S WITH CARON	[2000]
+0x85B1	U+015F	# LATIN SMALL LETTER S WITH CEDILLA 	[2000]
+0x85B2	U+0165	# LATIN SMALL LETTER T WITH CARON	[2000]
+0x85B3	U+017A	# LATIN SMALL LETTER Z WITH ACUTE	[2000]
+0x85B4	U+02DD	# DOUBLE ACUTE ACCENT	[2000]
+0x85B5	U+017E	# LATIN SMALL LETTER Z WITH CARON	[2000]
+0x85B6	U+017C	# LATIN SMALL LETTER Z WITH DOT ABOVE	[2000]
+0x85B7	U+0154	# LATIN CAPITAL LETTER R WITH ACUTE	[2000]
+0x85B8	U+0102	# LATIN CAPITAL LETTER A WITH BREVE	[2000]
+0x85B9	U+0139	# LATIN CAPITAL LETTER L WITH ACUTE	[2000]
+0x85BA	U+0106	# LATIN CAPITAL LETTER C WITH ACUTE	[2000]
+0x85BB	U+010C	# LATIN CAPITAL LETTER C WITH CARON	[2000]
+0x85BC	U+0118	# LATIN CAPITAL LETTER E WITH OGONEK	[2000]
+0x85BD	U+011A	# LATIN CAPITAL LETTER E WITH CARON	[2000]
+0x85BE	U+010E	# LATIN CAPITAL LETTER D WITH CARON	[2000]
+0x85BF	U+0143	# LATIN CAPITAL LETTER N WITH ACUTE	[2000]
+0x85C0	U+0147	# LATIN CAPITAL LETTER N WITH CARON	[2000]
+0x85C1	U+0150	# LATIN CAPITAL LETTER O WITH DOUBLE ACUTE	[2000]
+0x85C2	U+0158	# LATIN CAPITAL LETTER R WITH CARON	[2000]
+0x85C3	U+016E	# LATIN CAPITAL LETTER U WITH RING ABOVE	[2000]
+0x85C4	U+0170	# LATIN CAPITAL LETTER U WITH DOUBLE ACUTE	[2000]
+0x85C5	U+0162	# LATIN CAPITAL LETTER T WITH CEDILLA 	[2000]
+0x85C6	U+0155	# LATIN SMALL LETTER R WITH ACUTE	[2000]
+0x85C7	U+0103	# LATIN SMALL LETTER A WITH BREVE	[2000]
+0x85C8	U+013A	# LATIN SMALL LETTER L WITH ACUTE	[2000]
+0x85C9	U+0107	# LATIN SMALL LETTER C WITH ACUTE	[2000]
+0x85CA	U+010D	# LATIN SMALL LETTER C WITH CARON	[2000]
+0x85CB	U+0119	# LATIN SMALL LETTER E WITH OGONEK	[2000]
+0x85CC	U+011B	# LATIN SMALL LETTER E WITH CARON	[2000]
+0x85CD	U+010F	# LATIN SMALL LETTER D WITH CARON	[2000]
+0x85CE	U+0111	# LATIN SMALL LETTER D WITH STROKE	[2000]
+0x85CF	U+0144	# LATIN SMALL LETTER N WITH ACUTE	[2000]
+0x85D0	U+0148	# LATIN SMALL LETTER N WITH CARON	[2000]
+0x85D1	U+0151	# LATIN SMALL LETTER O WITH DOUBLE ACUTE	[2000]
+0x85D2	U+0159	# LATIN SMALL LETTER R WITH CARON	[2000]
+0x85D3	U+016F	# LATIN SMALL LETTER U WITH RING ABOVE	[2000]
+0x85D4	U+0171	# LATIN SMALL LETTER U WITH DOUBLE ACUTE	[2000]
+0x85D5	U+0163	# LATIN SMALL LETTER T WITH CEDILLA 	[2000]
+0x85D6	U+02D9	# DOT ABOVE 	[2000]
+0x85D7	U+0108	# LATIN CAPITAL LETTER C WITH CIRCUMFLEX	[2000]
+0x85D8	U+011C	# LATIN CAPITAL LETTER G WITH CIRCUMFLEX	[2000]
+0x85D9	U+0124	# LATIN CAPITAL LETTER H WITH CIRCUMFLEX	[2000]
+0x85DA	U+0134	# LATIN CAPITAL LETTER J WITH CIRCUMFLEX	[2000]
+0x85DB	U+015C	# LATIN CAPITAL LETTER S WITH CIRCUMFLEX	[2000]
+0x85DC	U+016C	# LATIN CAPITAL LETTER U WITH BREVE	[2000]
+0x85DD	U+0109	# LATIN SMALL LETTER C WITH CIRCUMFLEX	[2000]
+0x85DE	U+011D	# LATIN SMALL LETTER G WITH CIRCUMFLEX	[2000]
+0x85DF	U+0125	# LATIN SMALL LETTER H WITH CIRCUMFLEX	[2000]
+0x85E0	U+0135	# LATIN SMALL LETTER J WITH CIRCUMFLEX	[2000]
+0x85E1	U+015D	# LATIN SMALL LETTER S WITH CIRCUMFLEX	[2000]
+0x85E2	U+016D	# LATIN SMALL LETTER U WITH BREVE	[2000]
+0x85E3	U+0271	# LATIN SMALL LETTER M WITH HOOK	[2000]
+0x85E4	U+028B	# LATIN SMALL LETTER V WITH HOOK	[2000]
+0x85E5	U+027E	# LATIN SMALL LETTER R WITH FISHHOOK	[2000]
+0x85E6	U+0283	# LATIN SMALL LETTER ESH	[2000]
+0x85E7	U+0292	# LATIN SMALL LETTER EZH	[2000]
+0x85E8	U+026C	# LATIN SMALL LETTER L WITH BELT	[2000]
+0x85E9	U+026E	# LATIN SMALL LETTER LEZH	[2000]
+0x85EA	U+0279	# LATIN SMALL LETTER TURNED R	[2000]
+0x85EB	U+0288	# LATIN SMALL LETTER T WITH RETROFLEX HOOK	[2000]
+0x85EC	U+0256	# LATIN SMALL LETTER D WITH TAIL	[2000]
+0x85ED	U+0273	# LATIN SMALL LETTER N WITH RETROFLEX HOOK	[2000]
+0x85EE	U+027D	# LATIN SMALL LETTER R WITH TAIL	[2000]
+0x85EF	U+0282	# LATIN SMALL LETTER S WITH HOOK	[2000]
+0x85F0	U+0290	# LATIN SMALL LETTER Z WITH RETROFLEX HOOK	[2000]
+0x85F1	U+027B	# LATIN SMALL LETTER TURNED R WITH HOOK	[2000]
+0x85F2	U+026D	# LATIN SMALL LETTER L WITH RETROFLEX HOOK	[2000]
+0x85F3	U+025F	# LATIN SMALL LETTER DOTLESS J WITH STROKE	[2000]
+0x85F4	U+0272	# LATIN SMALL LETTER N WITH LEFT HOOK	[2000]
+0x85F5	U+029D	# LATIN SMALL LETTER J WITH CROSSED-TAIL	[2000]
+0x85F6	U+028E	# LATIN SMALL LETTER TURNED Y	[2000]
+0x85F7	U+0261	# LATIN SMALL LETTER SCRIPT G	[2000]
+0x85F8	U+014B	# LATIN SMALL LETTER ENG 	[2000]
+0x85F9	U+0270	# LATIN SMALL LETTER TURNED M WITH LONG LEG	[2000]
+0x85FA	U+0281	# LATIN LETTER SMALL CAPITAL INVERTED R	[2000]
+0x85FB	U+0127	# LATIN SMALL LETTER H WITH STROKE	[2000]
+0x85FC	U+0295	# LATIN LETTER PHARYNGEAL VOICED FRICATIVE	[2000]
+0x8640	U+0294	# LATIN LETTER GLOTTAL STOP	[2000]
+0x8641	U+0266	# LATIN SMALL LETTER H WITH HOOK	[2000]
+0x8642	U+0298	# LATIN LETTER BILABIAL CLICK	[2000]
+0x8643	U+01C2	# LATIN LETTER ALVEOLAR CLICK	[2000]
+0x8644	U+0253	# LATIN SMALL LETTER B WITH HOOK	[2000]
+0x8645	U+0257	# LATIN SMALL LETTER D WITH HOOK	[2000]
+0x8646	U+0284	# LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK	[2000]
+0x8647	U+0260	# LATIN SMALL LETTER G WITH HOOK	[2000]
+0x8648	U+0193	# LATIN CAPITAL LETTER G WITH HOOK	[2000]
+0x8649	U+0153	# LATIN SMALL LIGATURE OE	[2000]
+0x864A	U+0152	# LATIN CAPITAL LIGATURE OE	[2000]
+0x864B	U+0268	# LATIN SMALL LETTER I WITH STROKE	[2000]
+0x864C	U+0289	# LATIN SMALL LETTER U BAR	[2000]
+0x864D	U+0258	# LATIN SMALL LETTER REVERSED E	[2000]
+0x864E	U+0275	# LATIN SMALL LETTER BARRED O	[2000]
+0x864F	U+0259	# LATIN SMALL LETTER SCHWA	[2000]
+0x8650	U+025C	# LATIN SMALL LETTER REVERSED OPEN E	[2000]
+0x8651	U+025E	# LATIN SMALL LETTER CLOSED REVERSED OPEN E	[2000]
+0x8652	U+0250	# LATIN SMALL LETTER TURNED A	[2000]
+0x8653	U+026F	# LATIN SMALL LETTER TURNED M	[2000]
+0x8654	U+028A	# LATIN SMALL LETTER UPSILON	[2000]
+0x8655	U+0264	# LATIN SMALL LETTER RAMS HORN	[2000]
+0x8656	U+028C	# LATIN SMALL LETTER TURNED V	[2000]
+0x8657	U+0254	# LATIN SMALL LETTER OPEN O	[2000]
+0x8658	U+0251	# LATIN SMALL LETTER ALPHA	[2000]
+0x8659	U+0252	# LATIN SMALL LETTER TURNED ALPHA	[2000]
+0x865A	U+028D	# LATIN SMALL LETTER TURNED W	[2000]
+0x865B	U+0265	# LATIN SMALL LETTER TURNED H	[2000]
+0x865C	U+02A2	# LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE	[2000]
+0x865D	U+02A1	# LATIN LETTER GLOTTAL STOP WITH STROKE	[2000]
+0x865E	U+0255	# LATIN SMALL LETTER C WITH CURL	[2000]
+0x865F	U+0291	# LATIN SMALL LETTER Z WITH CURL	[2000]
+0x8660	U+027A	# LATIN SMALL LETTER TURNED R WITH LONG LEG	[2000]
+0x8661	U+0267	# LATIN SMALL LETTER HENG WITH HOOK	[2000]
+0x8662	U+025A	# LATIN SMALL LETTER SCHWA WITH HOOK	[2000]
+0x8663	U+00E6+0300	# 	[2000]
+0x8664	U+01FD	# LATIN SMALL LETTER AE WITH ACUTE 	[2000]
+0x8665	U+1F70	# GREEK SMALL LETTER ALPHA WITH VARIA	[2000]
+0x8666	U+1F71	# GREEK SMALL LETTER ALPHA WITH OXIA	[2000]
+0x8667	U+0254+0300	# 	[2000]
+0x8668	U+0254+0301	# 	[2000]
+0x8669	U+028C+0300	# 	[2000]
+0x866A	U+028C+0301	# 	[2000]
+0x866B	U+0259+0300	# 	[2000]
+0x866C	U+0259+0301	# 	[2000]
+0x866D	U+025A+0300	# 	[2000]
+0x866E	U+025A+0301	# 	[2000]
+0x866F	U+1F72	# GREEK SMALL LETTER EPSILON WITH VARIA	[2000]
+0x8670	U+1F73	# GREEK SMALL LETTER EPSILON WITH OXIA	[2000]
+0x8671	U+0361	# COMBINING DOUBLE INVERTED BREVE	[2000]
+0x8672	U+02C8	# MODIFIER LETTER VERTICAL LINE	[2000]
+0x8673	U+02CC	# MODIFIER LETTER LOW VERTICAL LINE	[2000]
+0x8674	U+02D0	# MODIFIER LETTER TRIANGULAR COLON	[2000]
+0x8675	U+02D1	# MODIFIER LETTER HALF TRIANGULAR COLON	[2000]
+0x8676	U+0306	# COMBINING BREVE 	[2000]
+0x8677	U+203F	# UNDERTIE 	[2000]
+0x8678	U+030B	# COMBINING DOUBLE ACUTE ACCENT	[2000]
+0x8679	U+0301	# COMBINING ACUTE ACCENT 	[2000]
+0x867A	U+0304	# COMBINING MACRON	[2000]
+0x867B	U+0300	# COMBINING GRAVE ACCENT 	[2000]
+0x867C	U+030F	# COMBINING DOUBLE GRAVE ACCENT	[2000]
+0x867D	U+030C	# COMBINING CARON	[2000]
+0x867E	U+0302	# COMBINING CIRCUMFLEX ACCENT	[2000]
+0x8680	U+02E5	# MODIFIER LETTER EXTRA-HIGH TONE BAR	[2000]
+0x8681	U+02E6	# MODIFIER LETTER HIGH TONE BAR	[2000]
+0x8682	U+02E7	# MODIFIER LETTER MID TONE BAR	[2000]
+0x8683	U+02E8	# MODIFIER LETTER LOW TONE BAR	[2000]
+0x8684	U+02E9	# MODIFIER LETTER EXTRA-LOW TONE BAR	[2000]
+0x8685	U+02E9+02E5	# 	[2000]
+0x8686	U+02E5+02E9	# 	[2000]
+0x8687	U+0325	# COMBINING RING BELOW	[2000]
+0x8688	U+032C	# COMBINING CARON BELOW	[2000]
+0x8689	U+0339	# COMBINING RIGHT HALF RING BELOW	[2000]
+0x868A	U+031C	# COMBINING LEFT HALF RING BELOW	[2000]
+0x868B	U+031F	# COMBINING PLUS SIGN BELOW	[2000]
+0x868C	U+0320	# COMBINING MINUS SIGN BELOW	[2000]
+0x868D	U+0308	# COMBINING DIAERESIS 	[2000]
+0x868E	U+033D	# COMBINING X ABOVE	[2000]
+0x868F	U+0329	# COMBINING VERTICAL LINE BELOW	[2000]
+0x8690	U+032F	# COMBINING INVERTED BREVE BELOW	[2000]
+0x8691	U+02DE	# MODIFIER LETTER RHOTIC HOOK	[2000]
+0x8692	U+0324	# COMBINING DIAERESIS BELOW	[2000]
+0x8693	U+0330	# COMBINING TILDE BELOW	[2000]
+0x8694	U+033C	# COMBINING SEAGULL BELOW	[2000]
+0x8695	U+0334	# COMBINING TILDE OVERLAY	[2000]
+0x8696	U+031D	# COMBINING UP TACK BELOW	[2000]
+0x8697	U+031E	# COMBINING DOWN TACK BELOW	[2000]
+0x8698	U+0318	# COMBINING LEFT TACK BELOW	[2000]
+0x8699	U+0319	# COMBINING RIGHT TACK BELOW	[2000]
+0x869A	U+032A	# COMBINING BRIDGE BELOW	[2000]
+0x869B	U+033A	# COMBINING INVERTED BRIDGE BELOW	[2000]
+0x869C	U+033B	# COMBINING SQUARE BELOW	[2000]
+0x869D	U+0303	# COMBINING TILDE	[2000]
+0x869E	U+031A	# COMBINING LEFT ANGLE ABOVE	[2000]
+0x869F	U+2776	# DINGBAT NEGATIVE CIRCLED DIGIT ONE	[2000]
+0x86A0	U+2777	# DINGBAT NEGATIVE CIRCLED DIGIT TWO	[2000]
+0x86A1	U+2778	# DINGBAT NEGATIVE CIRCLED DIGIT THREE	[2000]
+0x86A2	U+2779	# DINGBAT NEGATIVE CIRCLED DIGIT FOUR	[2000]
+0x86A3	U+277A	# DINGBAT NEGATIVE CIRCLED DIGIT FIVE	[2000]
+0x86A4	U+277B	# DINGBAT NEGATIVE CIRCLED DIGIT SIX	[2000]
+0x86A5	U+277C	# DINGBAT NEGATIVE CIRCLED DIGIT SEVEN	[2000]
+0x86A6	U+277D	# DINGBAT NEGATIVE CIRCLED DIGIT EIGHT	[2000]
+0x86A7	U+277E	# DINGBAT NEGATIVE CIRCLED DIGIT NINE	[2000]
+0x86A8	U+277F	# DINGBAT NEGATIVE CIRCLED NUMBER TEN	[2000]
+0x86A9	U+24EB	# NEGATIVE CIRCLED NUMBER ELEVEN	[2000]	[Unicode3.2]
+0x86AA	U+24EC	# NEGATIVE CIRCLED NUMBER TWELVE	[2000]	[Unicode3.2]
+0x86AB	U+24ED	# NEGATIVE CIRCLED NUMBER THIRTEEN	[2000]	[Unicode3.2]
+0x86AC	U+24EE	# NEGATIVE CIRCLED NUMBER FOURTEEN	[2000]	[Unicode3.2]
+0x86AD	U+24EF	# NEGATIVE CIRCLED NUMBER FIFTEEN	[2000]	[Unicode3.2]
+0x86AE	U+24F0	# NEGATIVE CIRCLED NUMBER SIXTEEN	[2000]	[Unicode3.2]
+0x86AF	U+24F1	# NEGATIVE CIRCLED NUMBER SEVENTEEN	[2000]	[Unicode3.2]
+0x86B0	U+24F2	# NEGATIVE CIRCLED NUMBER EIGHTEEN	[2000]	[Unicode3.2]
+0x86B1	U+24F3	# NEGATIVE CIRCLED NUMBER NINETEEN	[2000]	[Unicode3.2]
+0x86B2	U+24F4	# NEGATIVE CIRCLED NUMBER TWENTY	[2000]	[Unicode3.2]
+0x86B3	U+2170	# SMALL ROMAN NUMERAL ONE	[2000]
+0x86B4	U+2171	# SMALL ROMAN NUMERAL TWO	[2000]
+0x86B5	U+2172	# SMALL ROMAN NUMERAL THREE	[2000]
+0x86B6	U+2173	# SMALL ROMAN NUMERAL FOUR	[2000]
+0x86B7	U+2174	# SMALL ROMAN NUMERAL FIVE	[2000]
+0x86B8	U+2175	# SMALL ROMAN NUMERAL SIX	[2000]
+0x86B9	U+2176	# SMALL ROMAN NUMERAL SEVEN	[2000]
+0x86BA	U+2177	# SMALL ROMAN NUMERAL EIGHT	[2000]
+0x86BB	U+2178	# SMALL ROMAN NUMERAL NINE	[2000]
+0x86BC	U+2179	# SMALL ROMAN NUMERAL TEN	[2000]
+0x86BD	U+217A	# SMALL ROMAN NUMERAL ELEVEN	[2000]
+0x86BE	U+217B	# SMALL ROMAN NUMERAL TWELVE	[2000]
+0x86BF	U+24D0	# CIRCLED LATIN SMALL LETTER A	[2000]
+0x86C0	U+24D1	# CIRCLED LATIN SMALL LETTER B	[2000]
+0x86C1	U+24D2	# CIRCLED LATIN SMALL LETTER C	[2000]
+0x86C2	U+24D3	# CIRCLED LATIN SMALL LETTER D	[2000]
+0x86C3	U+24D4	# CIRCLED LATIN SMALL LETTER E	[2000]
+0x86C4	U+24D5	# CIRCLED LATIN SMALL LETTER F	[2000]
+0x86C5	U+24D6	# CIRCLED LATIN SMALL LETTER G	[2000]
+0x86C6	U+24D7	# CIRCLED LATIN SMALL LETTER H	[2000]
+0x86C7	U+24D8	# CIRCLED LATIN SMALL LETTER I	[2000]
+0x86C8	U+24D9	# CIRCLED LATIN SMALL LETTER J	[2000]
+0x86C9	U+24DA	# CIRCLED LATIN SMALL LETTER K	[2000]
+0x86CA	U+24DB	# CIRCLED LATIN SMALL LETTER L	[2000]
+0x86CB	U+24DC	# CIRCLED LATIN SMALL LETTER M	[2000]
+0x86CC	U+24DD	# CIRCLED LATIN SMALL LETTER N	[2000]
+0x86CD	U+24DE	# CIRCLED LATIN SMALL LETTER O	[2000]
+0x86CE	U+24DF	# CIRCLED LATIN SMALL LETTER P	[2000]
+0x86CF	U+24E0	# CIRCLED LATIN SMALL LETTER Q	[2000]
+0x86D0	U+24E1	# CIRCLED LATIN SMALL LETTER R	[2000]
+0x86D1	U+24E2	# CIRCLED LATIN SMALL LETTER S	[2000]
+0x86D2	U+24E3	# CIRCLED LATIN SMALL LETTER T	[2000]
+0x86D3	U+24E4	# CIRCLED LATIN SMALL LETTER U	[2000]
+0x86D4	U+24E5	# CIRCLED LATIN SMALL LETTER V	[2000]
+0x86D5	U+24E6	# CIRCLED LATIN SMALL LETTER W	[2000]
+0x86D6	U+24E7	# CIRCLED LATIN SMALL LETTER X	[2000]
+0x86D7	U+24E8	# CIRCLED LATIN SMALL LETTER Y	[2000]
+0x86D8	U+24E9	# CIRCLED LATIN SMALL LETTER Z	[2000]
+0x86D9	U+32D0	# CIRCLED KATAKANA A	[2000]
+0x86DA	U+32D1	# CIRCLED KATAKANA I	[2000]
+0x86DB	U+32D2	# CIRCLED KATAKANA U	[2000]
+0x86DC	U+32D3	# CIRCLED KATAKANA E	[2000]
+0x86DD	U+32D4	# CIRCLED KATAKANA O	[2000]
+0x86DE	U+32D5	# CIRCLED KATAKANA KA	[2000]
+0x86DF	U+32D6	# CIRCLED KATAKANA KI	[2000]
+0x86E0	U+32D7	# CIRCLED KATAKANA KU	[2000]
+0x86E1	U+32D8	# CIRCLED KATAKANA KE	[2000]
+0x86E2	U+32D9	# CIRCLED KATAKANA KO	[2000]
+0x86E3	U+32DA	# CIRCLED KATAKANA SA	[2000]
+0x86E4	U+32DB	# CIRCLED KATAKANA SI	[2000]
+0x86E5	U+32DC	# CIRCLED KATAKANA SU	[2000]
+0x86E6	U+32DD	# CIRCLED KATAKANA SE	[2000]
+0x86E7	U+32DE	# CIRCLED KATAKANA SO	[2000]
+0x86E8	U+32DF	# CIRCLED KATAKANA TA	[2000]
+0x86E9	U+32E0	# CIRCLED KATAKANA TI	[2000]
+0x86EA	U+32E1	# CIRCLED KATAKANA TU	[2000]
+0x86EB	U+32E2	# CIRCLED KATAKANA TE	[2000]
+0x86EC	U+32E3	# CIRCLED KATAKANA TO	[2000]
+0x86ED	U+32FA	# CIRCLED KATAKANA RO	[2000]
+0x86EE	U+32E9	# CIRCLED KATAKANA HA	[2000]
+0x86EF	U+32E5	# CIRCLED KATAKANA NI	[2000]
+0x86F0	U+32ED	# CIRCLED KATAKANA HO	[2000]
+0x86F1	U+32EC	# CIRCLED KATAKANA HE	[2000]
+0x86F2		# <reserved>
+0x86F3		# <reserved>
+0x86F4		# <reserved>
+0x86F5		# <reserved>
+0x86F6		# <reserved>
+0x86F7		# <reserved>
+0x86F8		# <reserved>
+0x86F9		# <reserved>
+0x86FA		# <reserved>
+0x86FB	U+2051	# TWO ASTERISKS ALIGNED VERTICALLY	[2000]	[Unicode3.2]
+0x86FC	U+2042	# ASTERISM	[2000]
+0x8740	U+2460	# CIRCLED DIGIT ONE	[2000]
+0x8741	U+2461	# CIRCLED DIGIT TWO	[2000]
+0x8742	U+2462	# CIRCLED DIGIT THREE	[2000]
+0x8743	U+2463	# CIRCLED DIGIT FOUR	[2000]
+0x8744	U+2464	# CIRCLED DIGIT FIVE	[2000]
+0x8745	U+2465	# CIRCLED DIGIT SIX	[2000]
+0x8746	U+2466	# CIRCLED DIGIT SEVEN	[2000]
+0x8747	U+2467	# CIRCLED DIGIT EIGHT	[2000]
+0x8748	U+2468	# CIRCLED DIGIT NINE	[2000]
+0x8749	U+2469	# CIRCLED NUMBER TEN	[2000]
+0x874A	U+246A	# CIRCLED NUMBER ELEVEN	[2000]
+0x874B	U+246B	# CIRCLED NUMBER TWELVE	[2000]
+0x874C	U+246C	# CIRCLED NUMBER THIRTEEN	[2000]
+0x874D	U+246D	# CIRCLED NUMBER FOURTEEN	[2000]
+0x874E	U+246E	# CIRCLED NUMBER FIFTEEN	[2000]
+0x874F	U+246F	# CIRCLED NUMBER SIXTEEN	[2000]
+0x8750	U+2470	# CIRCLED NUMBER SEVENTEEN	[2000]
+0x8751	U+2471	# CIRCLED NUMBER EIGHTEEN	[2000]
+0x8752	U+2472	# CIRCLED NUMBER NINETEEN	[2000]
+0x8753	U+2473	# CIRCLED NUMBER TWENTY	[2000]
+0x8754	U+2160	# ROMAN NUMERAL ONE	[2000]
+0x8755	U+2161	# ROMAN NUMERAL TWO	[2000]
+0x8756	U+2162	# ROMAN NUMERAL THREE	[2000]
+0x8757	U+2163	# ROMAN NUMERAL FOUR	[2000]
+0x8758	U+2164	# ROMAN NUMERAL FIVE	[2000]
+0x8759	U+2165	# ROMAN NUMERAL SIX	[2000]
+0x875A	U+2166	# ROMAN NUMERAL SEVEN	[2000]
+0x875B	U+2167	# ROMAN NUMERAL EIGHT	[2000]
+0x875C	U+2168	# ROMAN NUMERAL NINE	[2000]
+0x875D	U+2169	# ROMAN NUMERAL TEN	[2000]
+0x875E	U+216A	# ROMAN NUMERAL ELEVEN	[2000]
+0x875F	U+3349	# SQUARE MIRI	[2000]
+0x8760	U+3314	# SQUARE KIRO	[2000]
+0x8761	U+3322	# SQUARE SENTI	[2000]
+0x8762	U+334D	# SQUARE MEETORU	[2000]
+0x8763	U+3318	# SQUARE GURAMU	[2000]
+0x8764	U+3327	# SQUARE TON	[2000]
+0x8765	U+3303	# SQUARE AARU	[2000]
+0x8766	U+3336	# SQUARE HEKUTAARU	[2000]
+0x8767	U+3351	# SQUARE RITTORU	[2000]
+0x8768	U+3357	# SQUARE WATTO	[2000]
+0x8769	U+330D	# SQUARE KARORII	[2000]
+0x876A	U+3326	# SQUARE DORU	[2000]
+0x876B	U+3323	# SQUARE SENTO	[2000]
+0x876C	U+332B	# SQUARE PAASENTO	[2000]
+0x876D	U+334A	# SQUARE MIRIBAARU	[2000]
+0x876E	U+333B	# SQUARE PEEZI	[2000]
+0x876F	U+339C	# SQUARE MM	[2000]
+0x8770	U+339D	# SQUARE CM	[2000]
+0x8771	U+339E	# SQUARE KM	[2000]
+0x8772	U+338E	# SQUARE MG	[2000]
+0x8773	U+338F	# SQUARE KG	[2000]
+0x8774	U+33C4	# SQUARE CC	[2000]
+0x8775	U+33A1	# SQUARE M SQUARED	[2000]
+0x8776	U+216B	# ROMAN NUMERAL TWELVE	[2000]
+0x8777		# <reserved>
+0x8778		# <reserved>
+0x8779		# <reserved>
+0x877A		# <reserved>
+0x877B		# <reserved>
+0x877C		# <reserved>
+0x877D		# <reserved>
+0x877E	U+337B	# SQUARE ERA NAME HEISEI	[2000]
+0x8780	U+301D	# REVERSED DOUBLE PRIME QUOTATION MARK	[2000]
+0x8781	U+301F	# LOW DOUBLE PRIME QUOTATION MARK	[2000]
+0x8782	U+2116	# NUMERO SIGN	[2000]
+0x8783	U+33CD	# SQUARE KK	[2000]
+0x8784	U+2121	# TELEPHONE SIGN	[2000]
+0x8785	U+32A4	# CIRCLED IDEOGRAPH HIGH	[2000]
+0x8786	U+32A5	# CIRCLED IDEOGRAPH CENTRE	[2000]
+0x8787	U+32A6	# CIRCLED IDEOGRAPH LOW	[2000]
+0x8788	U+32A7	# CIRCLED IDEOGRAPH LEFT	[2000]
+0x8789	U+32A8	# CIRCLED IDEOGRAPH RIGHT	[2000]
+0x878A	U+3231	# PARENTHESIZED IDEOGRAPH STOCK	[2000]
+0x878B	U+3232	# PARENTHESIZED IDEOGRAPH HAVE	[2000]
+0x878C	U+3239	# PARENTHESIZED IDEOGRAPH REPRESENT	[2000]
+0x878D	U+337E	# SQUARE ERA NAME MEIZI	[2000]
+0x878E	U+337D	# SQUARE ERA NAME TAISYOU	[2000]
+0x878F	U+337C	# SQUARE ERA NAME SYOUWA	[2000]
+0x8790		# <reserved>	Windows: U+2252
+0x8791		# <reserved>	Windows: U+2261
+0x8792		# <reserved>	Windows: U+222B
+0x8793	U+222E	# CONTOUR INTEGRAL	[2000]
+0x8794		# <reserved>	Windows: U+2211
+0x8795		# <reserved>	Windows: U+221A
+0x8796		# <reserved>	Windows: U+22A5
+0x8797		# <reserved>	Windows: U+2220
+0x8798	U+221F	# RIGHT ANGLE	[2000]
+0x8799	U+22BF	# RIGHT TRIANGLE	[2000]
+0x879A		# <reserved>	Windows: U+2235
+0x879B		# <reserved>	Windows: U+2229
+0x879C		# <reserved>	Windows: U+222A
+0x879D	U+2756	# BLACK DIAMOND MINUS WHITE X	[2000]
+0x879E	U+261E	# WHITE RIGHT POINTING INDEX	[2000]
+0x879F	U+4FF1	# <cjk>	[2004]
+0x87A0	U+2000B	# <cjk>	[2000]	[Unicode3.1]
+0x87A1	U+3402	# <cjk>	[2000]
+0x87A2	U+4E28	# <cjk>	[2000]
+0x87A3	U+4E2F	# <cjk>	[2000]
+0x87A4	U+4E30	# <cjk>	[2000]
+0x87A5	U+4E8D	# <cjk>	[2000]
+0x87A6	U+4EE1	# <cjk>	[2000]
+0x87A7	U+4EFD	# <cjk>	[2000]
+0x87A8	U+4EFF	# <cjk>	[2000]
+0x87A9	U+4F03	# <cjk>	[2000]
+0x87AA	U+4F0B	# <cjk>	[2000]
+0x87AB	U+4F60	# <cjk>	[2000]
+0x87AC	U+4F48	# <cjk>	[2000]
+0x87AD	U+4F49	# <cjk>	[2000]
+0x87AE	U+4F56	# <cjk>	[2000]
+0x87AF	U+4F5F	# <cjk>	[2000]
+0x87B0	U+4F6A	# <cjk>	[2000]
+0x87B1	U+4F6C	# <cjk>	[2000]
+0x87B2	U+4F7E	# <cjk>	[2000]
+0x87B3	U+4F8A	# <cjk>	[2000]
+0x87B4	U+4F94	# <cjk>	[2000]
+0x87B5	U+4F97	# <cjk>	[2000]
+0x87B6	U+FA30	# CJK COMPATIBILITY IDEOGRAPH-FA30	[2000]	[Unicode3.2]
+0x87B7	U+4FC9	# <cjk>	[2000]
+0x87B8	U+4FE0	# <cjk>	[2000]
+0x87B9	U+5001	# <cjk>	[2000]
+0x87BA	U+5002	# <cjk>	[2000]
+0x87BB	U+500E	# <cjk>	[2000]
+0x87BC	U+5018	# <cjk>	[2000]
+0x87BD	U+5027	# <cjk>	[2000]
+0x87BE	U+502E	# <cjk>	[2000]
+0x87BF	U+5040	# <cjk>	[2000]
+0x87C0	U+503B	# <cjk>	[2000]
+0x87C1	U+5041	# <cjk>	[2000]
+0x87C2	U+5094	# <cjk>	[2000]
+0x87C3	U+50CC	# <cjk>	[2000]
+0x87C4	U+50F2	# <cjk>	[2000]
+0x87C5	U+50D0	# <cjk>	[2000]
+0x87C6	U+50E6	# <cjk>	[2000]
+0x87C7	U+FA31	# CJK COMPATIBILITY IDEOGRAPH-FA31	[2000]	[Unicode3.2]
+0x87C8	U+5106	# <cjk>	[2000]
+0x87C9	U+5103	# <cjk>	[2000]
+0x87CA	U+510B	# <cjk>	[2000]
+0x87CB	U+511E	# <cjk>	[2000]
+0x87CC	U+5135	# <cjk>	[2000]
+0x87CD	U+514A	# <cjk>	[2000]
+0x87CE	U+FA32	# CJK COMPATIBILITY IDEOGRAPH-FA32	[2000]	[Unicode3.2]
+0x87CF	U+5155	# <cjk>	[2000]
+0x87D0	U+5157	# <cjk>	[2000]
+0x87D1	U+34B5	# <cjk>	[2000]
+0x87D2	U+519D	# <cjk>	[2000]
+0x87D3	U+51C3	# <cjk>	[2000]
+0x87D4	U+51CA	# <cjk>	[2000]
+0x87D5	U+51DE	# <cjk>	[2000]
+0x87D6	U+51E2	# <cjk>	[2000]
+0x87D7	U+51EE	# <cjk>	[2000]
+0x87D8	U+5201	# <cjk>	[2000]
+0x87D9	U+34DB	# <cjk>	[2000]
+0x87DA	U+5213	# <cjk>	[2000]
+0x87DB	U+5215	# <cjk>	[2000]
+0x87DC	U+5249	# <cjk>	[2000]
+0x87DD	U+5257	# <cjk>	[2000]
+0x87DE	U+5261	# <cjk>	[2000]
+0x87DF	U+5293	# <cjk>	[2000]
+0x87E0	U+52C8	# <cjk>	[2000]
+0x87E1	U+FA33	# CJK COMPATIBILITY IDEOGRAPH-FA33	[2000]	[Unicode3.2]
+0x87E2	U+52CC	# <cjk>	[2000]
+0x87E3	U+52D0	# <cjk>	[2000]
+0x87E4	U+52D6	# <cjk>	[2000]
+0x87E5	U+52DB	# <cjk>	[2000]
+0x87E6	U+FA34	# CJK COMPATIBILITY IDEOGRAPH-FA34	[2000]	[Unicode3.2]
+0x87E7	U+52F0	# <cjk>	[2000]
+0x87E8	U+52FB	# <cjk>	[2000]
+0x87E9	U+5300	# <cjk>	[2000]
+0x87EA	U+5307	# <cjk>	[2000]
+0x87EB	U+531C	# <cjk>	[2000]
+0x87EC	U+FA35	# CJK COMPATIBILITY IDEOGRAPH-FA35	[2000]	[Unicode3.2]
+0x87ED	U+5361	# <cjk>	[2000]
+0x87EE	U+5363	# <cjk>	[2000]
+0x87EF	U+537D	# <cjk>	[2000]
+0x87F0	U+5393	# <cjk>	[2000]
+0x87F1	U+539D	# <cjk>	[2000]
+0x87F2	U+53B2	# <cjk>	[2000]
+0x87F3	U+5412	# <cjk>	[2000]
+0x87F4	U+5427	# <cjk>	[2000]
+0x87F5	U+544D	# <cjk>	[2000]
+0x87F6	U+549C	# <cjk>	[2000]
+0x87F7	U+546B	# <cjk>	[2000]
+0x87F8	U+5474	# <cjk>	[2000]
+0x87F9	U+547F	# <cjk>	[2000]
+0x87FA	U+5488	# <cjk>	[2000]
+0x87FB	U+5496	# <cjk>	[2000]
+0x87FC	U+54A1	# <cjk>	[2000]
+0x8840	U+54A9	# <cjk>	[2000]
+0x8841	U+54C6	# <cjk>	[2000]
+0x8842	U+54FF	# <cjk>	[2000]
+0x8843	U+550E	# <cjk>	[2000]
+0x8844	U+552B	# <cjk>	[2000]
+0x8845	U+5535	# <cjk>	[2000]
+0x8846	U+5550	# <cjk>	[2000]
+0x8847	U+555E	# <cjk>	[2000]
+0x8848	U+5581	# <cjk>	[2000]
+0x8849	U+5586	# <cjk>	[2000]
+0x884A	U+558E	# <cjk>	[2000]
+0x884B	U+FA36	# CJK COMPATIBILITY IDEOGRAPH-FA36	[2000]	[Unicode3.2]
+0x884C	U+55AD	# <cjk>	[2000]
+0x884D	U+55CE	# <cjk>	[2000]
+0x884E	U+FA37	# CJK COMPATIBILITY IDEOGRAPH-FA37	[2000]	[Unicode3.2]
+0x884F	U+5608	# <cjk>	[2000]
+0x8850	U+560E	# <cjk>	[2000]
+0x8851	U+563B	# <cjk>	[2000]
+0x8852	U+5649	# <cjk>	[2000]
+0x8853	U+5676	# <cjk>	[2000]
+0x8854	U+5666	# <cjk>	[2000]
+0x8855	U+FA38	# CJK COMPATIBILITY IDEOGRAPH-FA38	[2000]	[Unicode3.2]
+0x8856	U+566F	# <cjk>	[2000]
+0x8857	U+5671	# <cjk>	[2000]
+0x8858	U+5672	# <cjk>	[2000]
+0x8859	U+5699	# <cjk>	[2000]
+0x885A	U+569E	# <cjk>	[2000]
+0x885B	U+56A9	# <cjk>	[2000]
+0x885C	U+56AC	# <cjk>	[2000]
+0x885D	U+56B3	# <cjk>	[2000]
+0x885E	U+56C9	# <cjk>	[2000]
+0x885F	U+56CA	# <cjk>	[2000]
+0x8860	U+570A	# <cjk>	[2000]
+0x8861	U+2123D	# <cjk>	[2000]	[Unicode3.1]
+0x8862	U+5721	# <cjk>	[2000]
+0x8863	U+572F	# <cjk>	[2000]
+0x8864	U+5733	# <cjk>	[2000]
+0x8865	U+5734	# <cjk>	[2000]
+0x8866	U+5770	# <cjk>	[2000]
+0x8867	U+5777	# <cjk>	[2000]
+0x8868	U+577C	# <cjk>	[2000]
+0x8869	U+579C	# <cjk>	[2000]
+0x886A	U+FA0F	# CJK COMPATIBILITY IDEOGRAPH-FA0F	[2000]
+0x886B	U+2131B	# <cjk>	[2000]	[Unicode3.1]
+0x886C	U+57B8	# <cjk>	[2000]
+0x886D	U+57C7	# <cjk>	[2000]
+0x886E	U+57C8	# <cjk>	[2000]
+0x886F	U+57CF	# <cjk>	[2000]
+0x8870	U+57E4	# <cjk>	[2000]
+0x8871	U+57ED	# <cjk>	[2000]
+0x8872	U+57F5	# <cjk>	[2000]
+0x8873	U+57F6	# <cjk>	[2000]
+0x8874	U+57FF	# <cjk>	[2000]
+0x8875	U+5809	# <cjk>	[2000]
+0x8876	U+FA10	# CJK COMPATIBILITY IDEOGRAPH-FA10	[2000]
+0x8877	U+5861	# <cjk>	[2000]
+0x8878	U+5864	# <cjk>	[2000]
+0x8879	U+FA39	# CJK COMPATIBILITY IDEOGRAPH-FA39	[2000]	[Unicode3.2]
+0x887A	U+587C	# <cjk>	[2000]
+0x887B	U+5889	# <cjk>	[2000]
+0x887C	U+589E	# <cjk>	[2000]
+0x887D	U+FA3A	# CJK COMPATIBILITY IDEOGRAPH-FA3A	[2000]	[Unicode3.2]
+0x887E	U+58A9	# <cjk>	[2000]
+0x8880	U+2146E	# <cjk>	[2000]	[Unicode3.1]
+0x8881	U+58D2	# <cjk>	[2000]
+0x8882	U+58CE	# <cjk>	[2000]
+0x8883	U+58D4	# <cjk>	[2000]
+0x8884	U+58DA	# <cjk>	[2000]
+0x8885	U+58E0	# <cjk>	[2000]
+0x8886	U+58E9	# <cjk>	[2000]
+0x8887	U+590C	# <cjk>	[2000]
+0x8888	U+8641	# <cjk>	[2000]
+0x8889	U+595D	# <cjk>	[2000]
+0x888A	U+596D	# <cjk>	[2000]
+0x888B	U+598B	# <cjk>	[2000]
+0x888C	U+5992	# <cjk>	[2000]
+0x888D	U+59A4	# <cjk>	[2000]
+0x888E	U+59C3	# <cjk>	[2000]
+0x888F	U+59D2	# <cjk>	[2000]
+0x8890	U+59DD	# <cjk>	[2000]
+0x8891	U+5A13	# <cjk>	[2000]
+0x8892	U+5A23	# <cjk>	[2000]
+0x8893	U+5A67	# <cjk>	[2000]
+0x8894	U+5A6D	# <cjk>	[2000]
+0x8895	U+5A77	# <cjk>	[2000]
+0x8896	U+5A7E	# <cjk>	[2000]
+0x8897	U+5A84	# <cjk>	[2000]
+0x8898	U+5A9E	# <cjk>	[2000]
+0x8899	U+5AA7	# <cjk>	[2000]
+0x889A	U+5AC4	# <cjk>	[2000]
+0x889B	U+218BD	# <cjk>	[2000]	[Unicode3.1]
+0x889C	U+5B19	# <cjk>	[2000]
+0x889D	U+5B25	# <cjk>	[2000]
+0x889E	U+525D	# <cjk>	[2004]
+0x889F	U+4E9C	# <cjk>
+0x88A0	U+5516	# <cjk>
+0x88A1	U+5A03	# <cjk>
+0x88A2	U+963F	# <cjk>
+0x88A3	U+54C0	# <cjk>
+0x88A4	U+611B	# <cjk>
+0x88A5	U+6328	# <cjk>
+0x88A6	U+59F6	# <cjk>
+0x88A7	U+9022	# <cjk>
+0x88A8	U+8475	# <cjk>
+0x88A9	U+831C	# <cjk>
+0x88AA	U+7A50	# <cjk>
+0x88AB	U+60AA	# <cjk>
+0x88AC	U+63E1	# <cjk>
+0x88AD	U+6E25	# <cjk>
+0x88AE	U+65ED	# <cjk>
+0x88AF	U+8466	# <cjk>
+0x88B0	U+82A6	# <cjk>
+0x88B1	U+9BF5	# <cjk>
+0x88B2	U+6893	# <cjk>
+0x88B3	U+5727	# <cjk>
+0x88B4	U+65A1	# <cjk>
+0x88B5	U+6271	# <cjk>
+0x88B6	U+5B9B	# <cjk>
+0x88B7	U+59D0	# <cjk>
+0x88B8	U+867B	# <cjk>
+0x88B9	U+98F4	# <cjk>
+0x88BA	U+7D62	# <cjk>
+0x88BB	U+7DBE	# <cjk>
+0x88BC	U+9B8E	# <cjk>
+0x88BD	U+6216	# <cjk>
+0x88BE	U+7C9F	# <cjk>
+0x88BF	U+88B7	# <cjk>
+0x88C0	U+5B89	# <cjk>
+0x88C1	U+5EB5	# <cjk>
+0x88C2	U+6309	# <cjk>
+0x88C3	U+6697	# <cjk>
+0x88C4	U+6848	# <cjk>
+0x88C5	U+95C7	# <cjk>
+0x88C6	U+978D	# <cjk>
+0x88C7	U+674F	# <cjk>
+0x88C8	U+4EE5	# <cjk>
+0x88C9	U+4F0A	# <cjk>
+0x88CA	U+4F4D	# <cjk>
+0x88CB	U+4F9D	# <cjk>
+0x88CC	U+5049	# <cjk>
+0x88CD	U+56F2	# <cjk>
+0x88CE	U+5937	# <cjk>
+0x88CF	U+59D4	# <cjk>
+0x88D0	U+5A01	# <cjk>
+0x88D1	U+5C09	# <cjk>
+0x88D2	U+60DF	# <cjk>
+0x88D3	U+610F	# <cjk>
+0x88D4	U+6170	# <cjk>
+0x88D5	U+6613	# <cjk>
+0x88D6	U+6905	# <cjk>
+0x88D7	U+70BA	# <cjk>
+0x88D8	U+754F	# <cjk>
+0x88D9	U+7570	# <cjk>
+0x88DA	U+79FB	# <cjk>
+0x88DB	U+7DAD	# <cjk>
+0x88DC	U+7DEF	# <cjk>
+0x88DD	U+80C3	# <cjk>
+0x88DE	U+840E	# <cjk>
+0x88DF	U+8863	# <cjk>
+0x88E0	U+8B02	# <cjk>
+0x88E1	U+9055	# <cjk>
+0x88E2	U+907A	# <cjk>
+0x88E3	U+533B	# <cjk>
+0x88E4	U+4E95	# <cjk>
+0x88E5	U+4EA5	# <cjk>
+0x88E6	U+57DF	# <cjk>
+0x88E7	U+80B2	# <cjk>
+0x88E8	U+90C1	# <cjk>
+0x88E9	U+78EF	# <cjk>
+0x88EA	U+4E00	# <cjk>
+0x88EB	U+58F1	# <cjk>
+0x88EC	U+6EA2	# <cjk>
+0x88ED	U+9038	# <cjk>
+0x88EE	U+7A32	# <cjk>
+0x88EF	U+8328	# <cjk>
+0x88F0	U+828B	# <cjk>
+0x88F1	U+9C2F	# <cjk>
+0x88F2	U+5141	# <cjk>
+0x88F3	U+5370	# <cjk>
+0x88F4	U+54BD	# <cjk>
+0x88F5	U+54E1	# <cjk>
+0x88F6	U+56E0	# <cjk>
+0x88F7	U+59FB	# <cjk>
+0x88F8	U+5F15	# <cjk>
+0x88F9	U+98F2	# <cjk>
+0x88FA	U+6DEB	# <cjk>
+0x88FB	U+80E4	# <cjk>
+0x88FC	U+852D	# <cjk>
+0x8940	U+9662	# <cjk>
+0x8941	U+9670	# <cjk>
+0x8942	U+96A0	# <cjk>
+0x8943	U+97FB	# <cjk>
+0x8944	U+540B	# <cjk>
+0x8945	U+53F3	# <cjk>
+0x8946	U+5B87	# <cjk>
+0x8947	U+70CF	# <cjk>
+0x8948	U+7FBD	# <cjk>
+0x8949	U+8FC2	# <cjk>
+0x894A	U+96E8	# <cjk>
+0x894B	U+536F	# <cjk>
+0x894C	U+9D5C	# <cjk>
+0x894D	U+7ABA	# <cjk>
+0x894E	U+4E11	# <cjk>
+0x894F	U+7893	# <cjk>
+0x8950	U+81FC	# <cjk>
+0x8951	U+6E26	# <cjk>
+0x8952	U+5618	# <cjk>
+0x8953	U+5504	# <cjk>
+0x8954	U+6B1D	# <cjk>
+0x8955	U+851A	# <cjk>
+0x8956	U+9C3B	# <cjk>
+0x8957	U+59E5	# <cjk>
+0x8958	U+53A9	# <cjk>
+0x8959	U+6D66	# <cjk>
+0x895A	U+74DC	# <cjk>
+0x895B	U+958F	# <cjk>
+0x895C	U+5642	# <cjk>
+0x895D	U+4E91	# <cjk>
+0x895E	U+904B	# <cjk>
+0x895F	U+96F2	# <cjk>
+0x8960	U+834F	# <cjk>
+0x8961	U+990C	# <cjk>
+0x8962	U+53E1	# <cjk>
+0x8963	U+55B6	# <cjk>
+0x8964	U+5B30	# <cjk>
+0x8965	U+5F71	# <cjk>
+0x8966	U+6620	# <cjk>
+0x8967	U+66F3	# <cjk>
+0x8968	U+6804	# <cjk>
+0x8969	U+6C38	# <cjk>
+0x896A	U+6CF3	# <cjk>
+0x896B	U+6D29	# <cjk>
+0x896C	U+745B	# <cjk>
+0x896D	U+76C8	# <cjk>
+0x896E	U+7A4E	# <cjk>
+0x896F	U+9834	# <cjk>
+0x8970	U+82F1	# <cjk>
+0x8971	U+885B	# <cjk>
+0x8972	U+8A60	# <cjk>
+0x8973	U+92ED	# <cjk>
+0x8974	U+6DB2	# <cjk>
+0x8975	U+75AB	# <cjk>
+0x8976	U+76CA	# <cjk>
+0x8977	U+99C5	# <cjk>
+0x8978	U+60A6	# <cjk>
+0x8979	U+8B01	# <cjk>
+0x897A	U+8D8A	# <cjk>
+0x897B	U+95B2	# <cjk>
+0x897C	U+698E	# <cjk>
+0x897D	U+53AD	# <cjk>
+0x897E	U+5186	# <cjk>
+0x8980	U+5712	# <cjk>
+0x8981	U+5830	# <cjk>
+0x8982	U+5944	# <cjk>
+0x8983	U+5BB4	# <cjk>
+0x8984	U+5EF6	# <cjk>
+0x8985	U+6028	# <cjk>
+0x8986	U+63A9	# <cjk>
+0x8987	U+63F4	# <cjk>
+0x8988	U+6CBF	# <cjk>
+0x8989	U+6F14	# <cjk>
+0x898A	U+708E	# <cjk>
+0x898B	U+7114	# <cjk>
+0x898C	U+7159	# <cjk>
+0x898D	U+71D5	# <cjk>
+0x898E	U+733F	# <cjk>
+0x898F	U+7E01	# <cjk>
+0x8990	U+8276	# <cjk>
+0x8991	U+82D1	# <cjk>
+0x8992	U+8597	# <cjk>
+0x8993	U+9060	# <cjk>
+0x8994	U+925B	# <cjk>
+0x8995	U+9D1B	# <cjk>
+0x8996	U+5869	# <cjk>
+0x8997	U+65BC	# <cjk>
+0x8998	U+6C5A	# <cjk>
+0x8999	U+7525	# <cjk>
+0x899A	U+51F9	# <cjk>
+0x899B	U+592E	# <cjk>
+0x899C	U+5965	# <cjk>
+0x899D	U+5F80	# <cjk>
+0x899E	U+5FDC	# <cjk>
+0x899F	U+62BC	# <cjk>
+0x89A0	U+65FA	# <cjk>
+0x89A1	U+6A2A	# <cjk>
+0x89A2	U+6B27	# <cjk>
+0x89A3	U+6BB4	# <cjk>
+0x89A4	U+738B	# <cjk>
+0x89A5	U+7FC1	# <cjk>
+0x89A6	U+8956	# <cjk>
+0x89A7	U+9D2C	# <cjk>
+0x89A8	U+9D0E	# <cjk>
+0x89A9	U+9EC4	# <cjk>
+0x89AA	U+5CA1	# <cjk>
+0x89AB	U+6C96	# <cjk>
+0x89AC	U+837B	# <cjk>
+0x89AD	U+5104	# <cjk>
+0x89AE	U+5C4B	# <cjk>
+0x89AF	U+61B6	# <cjk>
+0x89B0	U+81C6	# <cjk>
+0x89B1	U+6876	# <cjk>
+0x89B2	U+7261	# <cjk>
+0x89B3	U+4E59	# <cjk>
+0x89B4	U+4FFA	# <cjk>
+0x89B5	U+5378	# <cjk>
+0x89B6	U+6069	# <cjk>
+0x89B7	U+6E29	# <cjk>
+0x89B8	U+7A4F	# <cjk>
+0x89B9	U+97F3	# <cjk>
+0x89BA	U+4E0B	# <cjk>
+0x89BB	U+5316	# <cjk>
+0x89BC	U+4EEE	# <cjk>
+0x89BD	U+4F55	# <cjk>
+0x89BE	U+4F3D	# <cjk>
+0x89BF	U+4FA1	# <cjk>
+0x89C0	U+4F73	# <cjk>
+0x89C1	U+52A0	# <cjk>
+0x89C2	U+53EF	# <cjk>
+0x89C3	U+5609	# <cjk>
+0x89C4	U+590F	# <cjk>
+0x89C5	U+5AC1	# <cjk>
+0x89C6	U+5BB6	# <cjk>
+0x89C7	U+5BE1	# <cjk>
+0x89C8	U+79D1	# <cjk>
+0x89C9	U+6687	# <cjk>
+0x89CA	U+679C	# <cjk>
+0x89CB	U+67B6	# <cjk>
+0x89CC	U+6B4C	# <cjk>
+0x89CD	U+6CB3	# <cjk>
+0x89CE	U+706B	# <cjk>
+0x89CF	U+73C2	# <cjk>
+0x89D0	U+798D	# <cjk>
+0x89D1	U+79BE	# <cjk>
+0x89D2	U+7A3C	# <cjk>
+0x89D3	U+7B87	# <cjk>
+0x89D4	U+82B1	# <cjk>
+0x89D5	U+82DB	# <cjk>
+0x89D6	U+8304	# <cjk>
+0x89D7	U+8377	# <cjk>
+0x89D8	U+83EF	# <cjk>
+0x89D9	U+83D3	# <cjk>
+0x89DA	U+8766	# <cjk>
+0x89DB	U+8AB2	# <cjk>
+0x89DC	U+5629	# <cjk>
+0x89DD	U+8CA8	# <cjk>
+0x89DE	U+8FE6	# <cjk>
+0x89DF	U+904E	# <cjk>
+0x89E0	U+971E	# <cjk>
+0x89E1	U+868A	# <cjk>
+0x89E2	U+4FC4	# <cjk>
+0x89E3	U+5CE8	# <cjk>
+0x89E4	U+6211	# <cjk>
+0x89E5	U+7259	# <cjk>
+0x89E6	U+753B	# <cjk>
+0x89E7	U+81E5	# <cjk>
+0x89E8	U+82BD	# <cjk>
+0x89E9	U+86FE	# <cjk>
+0x89EA	U+8CC0	# <cjk>
+0x89EB	U+96C5	# <cjk>
+0x89EC	U+9913	# <cjk>
+0x89ED	U+99D5	# <cjk>
+0x89EE	U+4ECB	# <cjk>
+0x89EF	U+4F1A	# <cjk>
+0x89F0	U+89E3	# <cjk>
+0x89F1	U+56DE	# <cjk>
+0x89F2	U+584A	# <cjk>
+0x89F3	U+58CA	# <cjk>
+0x89F4	U+5EFB	# <cjk>
+0x89F5	U+5FEB	# <cjk>
+0x89F6	U+602A	# <cjk>
+0x89F7	U+6094	# <cjk>
+0x89F8	U+6062	# <cjk>
+0x89F9	U+61D0	# <cjk>
+0x89FA	U+6212	# <cjk>
+0x89FB	U+62D0	# <cjk>
+0x89FC	U+6539	# <cjk>
+0x8A40	U+9B41	# <cjk>
+0x8A41	U+6666	# <cjk>
+0x8A42	U+68B0	# <cjk>
+0x8A43	U+6D77	# <cjk>
+0x8A44	U+7070	# <cjk>
+0x8A45	U+754C	# <cjk>
+0x8A46	U+7686	# <cjk>
+0x8A47	U+7D75	# <cjk>
+0x8A48	U+82A5	# <cjk>
+0x8A49	U+87F9	# <cjk>
+0x8A4A	U+958B	# <cjk>
+0x8A4B	U+968E	# <cjk>
+0x8A4C	U+8C9D	# <cjk>
+0x8A4D	U+51F1	# <cjk>
+0x8A4E	U+52BE	# <cjk>
+0x8A4F	U+5916	# <cjk>
+0x8A50	U+54B3	# <cjk>
+0x8A51	U+5BB3	# <cjk>
+0x8A52	U+5D16	# <cjk>
+0x8A53	U+6168	# <cjk>
+0x8A54	U+6982	# <cjk>
+0x8A55	U+6DAF	# <cjk>
+0x8A56	U+788D	# <cjk>
+0x8A57	U+84CB	# <cjk>
+0x8A58	U+8857	# <cjk>
+0x8A59	U+8A72	# <cjk>
+0x8A5A	U+93A7	# <cjk>
+0x8A5B	U+9AB8	# <cjk>
+0x8A5C	U+6D6C	# <cjk>
+0x8A5D	U+99A8	# <cjk>
+0x8A5E	U+86D9	# <cjk>
+0x8A5F	U+57A3	# <cjk>
+0x8A60	U+67FF	# <cjk>
+0x8A61	U+86CE	# <cjk>
+0x8A62	U+920E	# <cjk>
+0x8A63	U+5283	# <cjk>
+0x8A64	U+5687	# <cjk>
+0x8A65	U+5404	# <cjk>
+0x8A66	U+5ED3	# <cjk>
+0x8A67	U+62E1	# <cjk>
+0x8A68	U+64B9	# <cjk>
+0x8A69	U+683C	# <cjk>
+0x8A6A	U+6838	# <cjk>
+0x8A6B	U+6BBB	# <cjk>
+0x8A6C	U+7372	# <cjk>
+0x8A6D	U+78BA	# <cjk>
+0x8A6E	U+7A6B	# <cjk>
+0x8A6F	U+899A	# <cjk>
+0x8A70	U+89D2	# <cjk>
+0x8A71	U+8D6B	# <cjk>
+0x8A72	U+8F03	# <cjk>
+0x8A73	U+90ED	# <cjk>
+0x8A74	U+95A3	# <cjk>
+0x8A75	U+9694	# <cjk>
+0x8A76	U+9769	# <cjk>
+0x8A77	U+5B66	# <cjk>
+0x8A78	U+5CB3	# <cjk>
+0x8A79	U+697D	# <cjk>
+0x8A7A	U+984D	# <cjk>
+0x8A7B	U+984E	# <cjk>
+0x8A7C	U+639B	# <cjk>
+0x8A7D	U+7B20	# <cjk>
+0x8A7E	U+6A2B	# <cjk>
+0x8A80	U+6A7F	# <cjk>
+0x8A81	U+68B6	# <cjk>
+0x8A82	U+9C0D	# <cjk>
+0x8A83	U+6F5F	# <cjk>
+0x8A84	U+5272	# <cjk>
+0x8A85	U+559D	# <cjk>
+0x8A86	U+6070	# <cjk>
+0x8A87	U+62EC	# <cjk>
+0x8A88	U+6D3B	# <cjk>
+0x8A89	U+6E07	# <cjk>
+0x8A8A	U+6ED1	# <cjk>
+0x8A8B	U+845B	# <cjk>
+0x8A8C	U+8910	# <cjk>
+0x8A8D	U+8F44	# <cjk>
+0x8A8E	U+4E14	# <cjk>
+0x8A8F	U+9C39	# <cjk>
+0x8A90	U+53F6	# <cjk>
+0x8A91	U+691B	# <cjk>
+0x8A92	U+6A3A	# <cjk>
+0x8A93	U+9784	# <cjk>
+0x8A94	U+682A	# <cjk>
+0x8A95	U+515C	# <cjk>
+0x8A96	U+7AC3	# <cjk>
+0x8A97	U+84B2	# <cjk>
+0x8A98	U+91DC	# <cjk>
+0x8A99	U+938C	# <cjk>
+0x8A9A	U+565B	# <cjk>
+0x8A9B	U+9D28	# <cjk>
+0x8A9C	U+6822	# <cjk>
+0x8A9D	U+8305	# <cjk>
+0x8A9E	U+8431	# <cjk>
+0x8A9F	U+7CA5	# <cjk>
+0x8AA0	U+5208	# <cjk>
+0x8AA1	U+82C5	# <cjk>
+0x8AA2	U+74E6	# <cjk>
+0x8AA3	U+4E7E	# <cjk>
+0x8AA4	U+4F83	# <cjk>
+0x8AA5	U+51A0	# <cjk>
+0x8AA6	U+5BD2	# <cjk>
+0x8AA7	U+520A	# <cjk>
+0x8AA8	U+52D8	# <cjk>
+0x8AA9	U+52E7	# <cjk>
+0x8AAA	U+5DFB	# <cjk>
+0x8AAB	U+559A	# <cjk>
+0x8AAC	U+582A	# <cjk>
+0x8AAD	U+59E6	# <cjk>
+0x8AAE	U+5B8C	# <cjk>
+0x8AAF	U+5B98	# <cjk>
+0x8AB0	U+5BDB	# <cjk>
+0x8AB1	U+5E72	# <cjk>
+0x8AB2	U+5E79	# <cjk>
+0x8AB3	U+60A3	# <cjk>
+0x8AB4	U+611F	# <cjk>
+0x8AB5	U+6163	# <cjk>
+0x8AB6	U+61BE	# <cjk>
+0x8AB7	U+63DB	# <cjk>
+0x8AB8	U+6562	# <cjk>
+0x8AB9	U+67D1	# <cjk>
+0x8ABA	U+6853	# <cjk>
+0x8ABB	U+68FA	# <cjk>
+0x8ABC	U+6B3E	# <cjk>
+0x8ABD	U+6B53	# <cjk>
+0x8ABE	U+6C57	# <cjk>
+0x8ABF	U+6F22	# <cjk>
+0x8AC0	U+6F97	# <cjk>
+0x8AC1	U+6F45	# <cjk>
+0x8AC2	U+74B0	# <cjk>
+0x8AC3	U+7518	# <cjk>
+0x8AC4	U+76E3	# <cjk>
+0x8AC5	U+770B	# <cjk>
+0x8AC6	U+7AFF	# <cjk>
+0x8AC7	U+7BA1	# <cjk>
+0x8AC8	U+7C21	# <cjk>
+0x8AC9	U+7DE9	# <cjk>
+0x8ACA	U+7F36	# <cjk>
+0x8ACB	U+7FF0	# <cjk>
+0x8ACC	U+809D	# <cjk>
+0x8ACD	U+8266	# <cjk>
+0x8ACE	U+839E	# <cjk>
+0x8ACF	U+89B3	# <cjk>
+0x8AD0	U+8ACC	# <cjk>
+0x8AD1	U+8CAB	# <cjk>
+0x8AD2	U+9084	# <cjk>
+0x8AD3	U+9451	# <cjk>
+0x8AD4	U+9593	# <cjk>
+0x8AD5	U+9591	# <cjk>
+0x8AD6	U+95A2	# <cjk>
+0x8AD7	U+9665	# <cjk>
+0x8AD8	U+97D3	# <cjk>
+0x8AD9	U+9928	# <cjk>
+0x8ADA	U+8218	# <cjk>
+0x8ADB	U+4E38	# <cjk>
+0x8ADC	U+542B	# <cjk>
+0x8ADD	U+5CB8	# <cjk>
+0x8ADE	U+5DCC	# <cjk>
+0x8ADF	U+73A9	# <cjk>
+0x8AE0	U+764C	# <cjk>
+0x8AE1	U+773C	# <cjk>
+0x8AE2	U+5CA9	# <cjk>
+0x8AE3	U+7FEB	# <cjk>
+0x8AE4	U+8D0B	# <cjk>
+0x8AE5	U+96C1	# <cjk>
+0x8AE6	U+9811	# <cjk>
+0x8AE7	U+9854	# <cjk>
+0x8AE8	U+9858	# <cjk>
+0x8AE9	U+4F01	# <cjk>
+0x8AEA	U+4F0E	# <cjk>
+0x8AEB	U+5371	# <cjk>
+0x8AEC	U+559C	# <cjk>
+0x8AED	U+5668	# <cjk>
+0x8AEE	U+57FA	# <cjk>
+0x8AEF	U+5947	# <cjk>
+0x8AF0	U+5B09	# <cjk>
+0x8AF1	U+5BC4	# <cjk>
+0x8AF2	U+5C90	# <cjk>
+0x8AF3	U+5E0C	# <cjk>
+0x8AF4	U+5E7E	# <cjk>
+0x8AF5	U+5FCC	# <cjk>
+0x8AF6	U+63EE	# <cjk>
+0x8AF7	U+673A	# <cjk>
+0x8AF8	U+65D7	# <cjk>
+0x8AF9	U+65E2	# <cjk>
+0x8AFA	U+671F	# <cjk>
+0x8AFB	U+68CB	# <cjk>
+0x8AFC	U+68C4	# <cjk>
+0x8B40	U+6A5F	# <cjk>
+0x8B41	U+5E30	# <cjk>
+0x8B42	U+6BC5	# <cjk>
+0x8B43	U+6C17	# <cjk>
+0x8B44	U+6C7D	# <cjk>
+0x8B45	U+757F	# <cjk>
+0x8B46	U+7948	# <cjk>
+0x8B47	U+5B63	# <cjk>
+0x8B48	U+7A00	# <cjk>
+0x8B49	U+7D00	# <cjk>
+0x8B4A	U+5FBD	# <cjk>
+0x8B4B	U+898F	# <cjk>
+0x8B4C	U+8A18	# <cjk>
+0x8B4D	U+8CB4	# <cjk>
+0x8B4E	U+8D77	# <cjk>
+0x8B4F	U+8ECC	# <cjk>
+0x8B50	U+8F1D	# <cjk>
+0x8B51	U+98E2	# <cjk>
+0x8B52	U+9A0E	# <cjk>
+0x8B53	U+9B3C	# <cjk>
+0x8B54	U+4E80	# <cjk>
+0x8B55	U+507D	# <cjk>
+0x8B56	U+5100	# <cjk>
+0x8B57	U+5993	# <cjk>
+0x8B58	U+5B9C	# <cjk>
+0x8B59	U+622F	# <cjk>
+0x8B5A	U+6280	# <cjk>
+0x8B5B	U+64EC	# <cjk>
+0x8B5C	U+6B3A	# <cjk>
+0x8B5D	U+72A0	# <cjk>
+0x8B5E	U+7591	# <cjk>
+0x8B5F	U+7947	# <cjk>
+0x8B60	U+7FA9	# <cjk>
+0x8B61	U+87FB	# <cjk>
+0x8B62	U+8ABC	# <cjk>
+0x8B63	U+8B70	# <cjk>
+0x8B64	U+63AC	# <cjk>
+0x8B65	U+83CA	# <cjk>
+0x8B66	U+97A0	# <cjk>
+0x8B67	U+5409	# <cjk>
+0x8B68	U+5403	# <cjk>
+0x8B69	U+55AB	# <cjk>
+0x8B6A	U+6854	# <cjk>
+0x8B6B	U+6A58	# <cjk>
+0x8B6C	U+8A70	# <cjk>
+0x8B6D	U+7827	# <cjk>
+0x8B6E	U+6775	# <cjk>
+0x8B6F	U+9ECD	# <cjk>
+0x8B70	U+5374	# <cjk>
+0x8B71	U+5BA2	# <cjk>
+0x8B72	U+811A	# <cjk>
+0x8B73	U+8650	# <cjk>
+0x8B74	U+9006	# <cjk>
+0x8B75	U+4E18	# <cjk>
+0x8B76	U+4E45	# <cjk>
+0x8B77	U+4EC7	# <cjk>
+0x8B78	U+4F11	# <cjk>
+0x8B79	U+53CA	# <cjk>
+0x8B7A	U+5438	# <cjk>
+0x8B7B	U+5BAE	# <cjk>
+0x8B7C	U+5F13	# <cjk>
+0x8B7D	U+6025	# <cjk>
+0x8B7E	U+6551	# <cjk>
+0x8B80	U+673D	# <cjk>
+0x8B81	U+6C42	# <cjk>
+0x8B82	U+6C72	# <cjk>
+0x8B83	U+6CE3	# <cjk>
+0x8B84	U+7078	# <cjk>
+0x8B85	U+7403	# <cjk>
+0x8B86	U+7A76	# <cjk>
+0x8B87	U+7AAE	# <cjk>
+0x8B88	U+7B08	# <cjk>
+0x8B89	U+7D1A	# <cjk>
+0x8B8A	U+7CFE	# <cjk>
+0x8B8B	U+7D66	# <cjk>
+0x8B8C	U+65E7	# <cjk>
+0x8B8D	U+725B	# <cjk>
+0x8B8E	U+53BB	# <cjk>
+0x8B8F	U+5C45	# <cjk>
+0x8B90	U+5DE8	# <cjk>
+0x8B91	U+62D2	# <cjk>
+0x8B92	U+62E0	# <cjk>
+0x8B93	U+6319	# <cjk>
+0x8B94	U+6E20	# <cjk>
+0x8B95	U+865A	# <cjk>
+0x8B96	U+8A31	# <cjk>
+0x8B97	U+8DDD	# <cjk>
+0x8B98	U+92F8	# <cjk>
+0x8B99	U+6F01	# <cjk>
+0x8B9A	U+79A6	# <cjk>
+0x8B9B	U+9B5A	# <cjk>
+0x8B9C	U+4EA8	# <cjk>
+0x8B9D	U+4EAB	# <cjk>
+0x8B9E	U+4EAC	# <cjk>
+0x8B9F	U+4F9B	# <cjk>
+0x8BA0	U+4FA0	# <cjk>
+0x8BA1	U+50D1	# <cjk>
+0x8BA2	U+5147	# <cjk>
+0x8BA3	U+7AF6	# <cjk>
+0x8BA4	U+5171	# <cjk>
+0x8BA5	U+51F6	# <cjk>
+0x8BA6	U+5354	# <cjk>
+0x8BA7	U+5321	# <cjk>
+0x8BA8	U+537F	# <cjk>
+0x8BA9	U+53EB	# <cjk>
+0x8BAA	U+55AC	# <cjk>
+0x8BAB	U+5883	# <cjk>
+0x8BAC	U+5CE1	# <cjk>
+0x8BAD	U+5F37	# <cjk>
+0x8BAE	U+5F4A	# <cjk>
+0x8BAF	U+602F	# <cjk>
+0x8BB0	U+6050	# <cjk>
+0x8BB1	U+606D	# <cjk>
+0x8BB2	U+631F	# <cjk>
+0x8BB3	U+6559	# <cjk>
+0x8BB4	U+6A4B	# <cjk>
+0x8BB5	U+6CC1	# <cjk>
+0x8BB6	U+72C2	# <cjk>
+0x8BB7	U+72ED	# <cjk>
+0x8BB8	U+77EF	# <cjk>
+0x8BB9	U+80F8	# <cjk>
+0x8BBA	U+8105	# <cjk>
+0x8BBB	U+8208	# <cjk>
+0x8BBC	U+854E	# <cjk>
+0x8BBD	U+90F7	# <cjk>
+0x8BBE	U+93E1	# <cjk>
+0x8BBF	U+97FF	# <cjk>
+0x8BC0	U+9957	# <cjk>
+0x8BC1	U+9A5A	# <cjk>
+0x8BC2	U+4EF0	# <cjk>
+0x8BC3	U+51DD	# <cjk>
+0x8BC4	U+5C2D	# <cjk>
+0x8BC5	U+6681	# <cjk>
+0x8BC6	U+696D	# <cjk>
+0x8BC7	U+5C40	# <cjk>
+0x8BC8	U+66F2	# <cjk>
+0x8BC9	U+6975	# <cjk>
+0x8BCA	U+7389	# <cjk>
+0x8BCB	U+6850	# <cjk>
+0x8BCC	U+7C81	# <cjk>
+0x8BCD	U+50C5	# <cjk>
+0x8BCE	U+52E4	# <cjk>
+0x8BCF	U+5747	# <cjk>
+0x8BD0	U+5DFE	# <cjk>
+0x8BD1	U+9326	# <cjk>
+0x8BD2	U+65A4	# <cjk>
+0x8BD3	U+6B23	# <cjk>
+0x8BD4	U+6B3D	# <cjk>
+0x8BD5	U+7434	# <cjk>
+0x8BD6	U+7981	# <cjk>
+0x8BD7	U+79BD	# <cjk>
+0x8BD8	U+7B4B	# <cjk>
+0x8BD9	U+7DCA	# <cjk>
+0x8BDA	U+82B9	# <cjk>
+0x8BDB	U+83CC	# <cjk>
+0x8BDC	U+887F	# <cjk>
+0x8BDD	U+895F	# <cjk>
+0x8BDE	U+8B39	# <cjk>
+0x8BDF	U+8FD1	# <cjk>
+0x8BE0	U+91D1	# <cjk>
+0x8BE1	U+541F	# <cjk>
+0x8BE2	U+9280	# <cjk>
+0x8BE3	U+4E5D	# <cjk>
+0x8BE4	U+5036	# <cjk>
+0x8BE5	U+53E5	# <cjk>
+0x8BE6	U+533A	# <cjk>
+0x8BE7	U+72D7	# <cjk>
+0x8BE8	U+7396	# <cjk>
+0x8BE9	U+77E9	# <cjk>
+0x8BEA	U+82E6	# <cjk>
+0x8BEB	U+8EAF	# <cjk>
+0x8BEC	U+99C6	# <cjk>
+0x8BED	U+99C8	# <cjk>
+0x8BEE	U+99D2	# <cjk>
+0x8BEF	U+5177	# <cjk>
+0x8BF0	U+611A	# <cjk>
+0x8BF1	U+865E	# <cjk>
+0x8BF2	U+55B0	# <cjk>
+0x8BF3	U+7A7A	# <cjk>
+0x8BF4	U+5076	# <cjk>
+0x8BF5	U+5BD3	# <cjk>
+0x8BF6	U+9047	# <cjk>
+0x8BF7	U+9685	# <cjk>
+0x8BF8	U+4E32	# <cjk>
+0x8BF9	U+6ADB	# <cjk>
+0x8BFA	U+91E7	# <cjk>
+0x8BFB	U+5C51	# <cjk>
+0x8BFC	U+5C48	# <cjk>
+0x8C40	U+6398	# <cjk>
+0x8C41	U+7A9F	# <cjk>
+0x8C42	U+6C93	# <cjk>
+0x8C43	U+9774	# <cjk>
+0x8C44	U+8F61	# <cjk>
+0x8C45	U+7AAA	# <cjk>
+0x8C46	U+718A	# <cjk>
+0x8C47	U+9688	# <cjk>
+0x8C48	U+7C82	# <cjk>
+0x8C49	U+6817	# <cjk>
+0x8C4A	U+7E70	# <cjk>
+0x8C4B	U+6851	# <cjk>
+0x8C4C	U+936C	# <cjk>
+0x8C4D	U+52F2	# <cjk>
+0x8C4E	U+541B	# <cjk>
+0x8C4F	U+85AB	# <cjk>
+0x8C50	U+8A13	# <cjk>
+0x8C51	U+7FA4	# <cjk>
+0x8C52	U+8ECD	# <cjk>
+0x8C53	U+90E1	# <cjk>
+0x8C54	U+5366	# <cjk>
+0x8C55	U+8888	# <cjk>
+0x8C56	U+7941	# <cjk>
+0x8C57	U+4FC2	# <cjk>
+0x8C58	U+50BE	# <cjk>
+0x8C59	U+5211	# <cjk>
+0x8C5A	U+5144	# <cjk>
+0x8C5B	U+5553	# <cjk>
+0x8C5C	U+572D	# <cjk>
+0x8C5D	U+73EA	# <cjk>
+0x8C5E	U+578B	# <cjk>
+0x8C5F	U+5951	# <cjk>
+0x8C60	U+5F62	# <cjk>
+0x8C61	U+5F84	# <cjk>
+0x8C62	U+6075	# <cjk>
+0x8C63	U+6176	# <cjk>
+0x8C64	U+6167	# <cjk>
+0x8C65	U+61A9	# <cjk>
+0x8C66	U+63B2	# <cjk>
+0x8C67	U+643A	# <cjk>
+0x8C68	U+656C	# <cjk>
+0x8C69	U+666F	# <cjk>
+0x8C6A	U+6842	# <cjk>
+0x8C6B	U+6E13	# <cjk>
+0x8C6C	U+7566	# <cjk>
+0x8C6D	U+7A3D	# <cjk>
+0x8C6E	U+7CFB	# <cjk>
+0x8C6F	U+7D4C	# <cjk>
+0x8C70	U+7D99	# <cjk>
+0x8C71	U+7E4B	# <cjk>
+0x8C72	U+7F6B	# <cjk>
+0x8C73	U+830E	# <cjk>
+0x8C74	U+834A	# <cjk>
+0x8C75	U+86CD	# <cjk>
+0x8C76	U+8A08	# <cjk>
+0x8C77	U+8A63	# <cjk>
+0x8C78	U+8B66	# <cjk>
+0x8C79	U+8EFD	# <cjk>
+0x8C7A	U+981A	# <cjk>
+0x8C7B	U+9D8F	# <cjk>
+0x8C7C	U+82B8	# <cjk>
+0x8C7D	U+8FCE	# <cjk>
+0x8C7E	U+9BE8	# <cjk>
+0x8C80	U+5287	# <cjk>
+0x8C81	U+621F	# <cjk>
+0x8C82	U+6483	# <cjk>
+0x8C83	U+6FC0	# <cjk>
+0x8C84	U+9699	# <cjk>
+0x8C85	U+6841	# <cjk>
+0x8C86	U+5091	# <cjk>
+0x8C87	U+6B20	# <cjk>
+0x8C88	U+6C7A	# <cjk>
+0x8C89	U+6F54	# <cjk>
+0x8C8A	U+7A74	# <cjk>
+0x8C8B	U+7D50	# <cjk>
+0x8C8C	U+8840	# <cjk>
+0x8C8D	U+8A23	# <cjk>
+0x8C8E	U+6708	# <cjk>
+0x8C8F	U+4EF6	# <cjk>
+0x8C90	U+5039	# <cjk>
+0x8C91	U+5026	# <cjk>
+0x8C92	U+5065	# <cjk>
+0x8C93	U+517C	# <cjk>
+0x8C94	U+5238	# <cjk>
+0x8C95	U+5263	# <cjk>
+0x8C96	U+55A7	# <cjk>
+0x8C97	U+570F	# <cjk>
+0x8C98	U+5805	# <cjk>
+0x8C99	U+5ACC	# <cjk>
+0x8C9A	U+5EFA	# <cjk>
+0x8C9B	U+61B2	# <cjk>
+0x8C9C	U+61F8	# <cjk>
+0x8C9D	U+62F3	# <cjk>
+0x8C9E	U+6372	# <cjk>
+0x8C9F	U+691C	# <cjk>
+0x8CA0	U+6A29	# <cjk>
+0x8CA1	U+727D	# <cjk>
+0x8CA2	U+72AC	# <cjk>
+0x8CA3	U+732E	# <cjk>
+0x8CA4	U+7814	# <cjk>
+0x8CA5	U+786F	# <cjk>
+0x8CA6	U+7D79	# <cjk>
+0x8CA7	U+770C	# <cjk>
+0x8CA8	U+80A9	# <cjk>
+0x8CA9	U+898B	# <cjk>
+0x8CAA	U+8B19	# <cjk>
+0x8CAB	U+8CE2	# <cjk>
+0x8CAC	U+8ED2	# <cjk>
+0x8CAD	U+9063	# <cjk>
+0x8CAE	U+9375	# <cjk>
+0x8CAF	U+967A	# <cjk>
+0x8CB0	U+9855	# <cjk>
+0x8CB1	U+9A13	# <cjk>
+0x8CB2	U+9E78	# <cjk>
+0x8CB3	U+5143	# <cjk>
+0x8CB4	U+539F	# <cjk>
+0x8CB5	U+53B3	# <cjk>
+0x8CB6	U+5E7B	# <cjk>
+0x8CB7	U+5F26	# <cjk>
+0x8CB8	U+6E1B	# <cjk>
+0x8CB9	U+6E90	# <cjk>
+0x8CBA	U+7384	# <cjk>
+0x8CBB	U+73FE	# <cjk>
+0x8CBC	U+7D43	# <cjk>
+0x8CBD	U+8237	# <cjk>
+0x8CBE	U+8A00	# <cjk>
+0x8CBF	U+8AFA	# <cjk>
+0x8CC0	U+9650	# <cjk>
+0x8CC1	U+4E4E	# <cjk>
+0x8CC2	U+500B	# <cjk>
+0x8CC3	U+53E4	# <cjk>
+0x8CC4	U+547C	# <cjk>
+0x8CC5	U+56FA	# <cjk>
+0x8CC6	U+59D1	# <cjk>
+0x8CC7	U+5B64	# <cjk>
+0x8CC8	U+5DF1	# <cjk>
+0x8CC9	U+5EAB	# <cjk>
+0x8CCA	U+5F27	# <cjk>
+0x8CCB	U+6238	# <cjk>
+0x8CCC	U+6545	# <cjk>
+0x8CCD	U+67AF	# <cjk>
+0x8CCE	U+6E56	# <cjk>
+0x8CCF	U+72D0	# <cjk>
+0x8CD0	U+7CCA	# <cjk>
+0x8CD1	U+88B4	# <cjk>
+0x8CD2	U+80A1	# <cjk>
+0x8CD3	U+80E1	# <cjk>
+0x8CD4	U+83F0	# <cjk>
+0x8CD5	U+864E	# <cjk>
+0x8CD6	U+8A87	# <cjk>
+0x8CD7	U+8DE8	# <cjk>
+0x8CD8	U+9237	# <cjk>
+0x8CD9	U+96C7	# <cjk>
+0x8CDA	U+9867	# <cjk>
+0x8CDB	U+9F13	# <cjk>
+0x8CDC	U+4E94	# <cjk>
+0x8CDD	U+4E92	# <cjk>
+0x8CDE	U+4F0D	# <cjk>
+0x8CDF	U+5348	# <cjk>
+0x8CE0	U+5449	# <cjk>
+0x8CE1	U+543E	# <cjk>
+0x8CE2	U+5A2F	# <cjk>
+0x8CE3	U+5F8C	# <cjk>
+0x8CE4	U+5FA1	# <cjk>
+0x8CE5	U+609F	# <cjk>
+0x8CE6	U+68A7	# <cjk>
+0x8CE7	U+6A8E	# <cjk>
+0x8CE8	U+745A	# <cjk>
+0x8CE9	U+7881	# <cjk>
+0x8CEA	U+8A9E	# <cjk>
+0x8CEB	U+8AA4	# <cjk>
+0x8CEC	U+8B77	# <cjk>
+0x8CED	U+9190	# <cjk>
+0x8CEE	U+4E5E	# <cjk>
+0x8CEF	U+9BC9	# <cjk>
+0x8CF0	U+4EA4	# <cjk>
+0x8CF1	U+4F7C	# <cjk>
+0x8CF2	U+4FAF	# <cjk>
+0x8CF3	U+5019	# <cjk>
+0x8CF4	U+5016	# <cjk>
+0x8CF5	U+5149	# <cjk>
+0x8CF6	U+516C	# <cjk>
+0x8CF7	U+529F	# <cjk>
+0x8CF8	U+52B9	# <cjk>
+0x8CF9	U+52FE	# <cjk>
+0x8CFA	U+539A	# <cjk>
+0x8CFB	U+53E3	# <cjk>
+0x8CFC	U+5411	# <cjk>
+0x8D40	U+540E	# <cjk>
+0x8D41	U+5589	# <cjk>
+0x8D42	U+5751	# <cjk>
+0x8D43	U+57A2	# <cjk>
+0x8D44	U+597D	# <cjk>
+0x8D45	U+5B54	# <cjk>
+0x8D46	U+5B5D	# <cjk>
+0x8D47	U+5B8F	# <cjk>
+0x8D48	U+5DE5	# <cjk>
+0x8D49	U+5DE7	# <cjk>
+0x8D4A	U+5DF7	# <cjk>
+0x8D4B	U+5E78	# <cjk>
+0x8D4C	U+5E83	# <cjk>
+0x8D4D	U+5E9A	# <cjk>
+0x8D4E	U+5EB7	# <cjk>
+0x8D4F	U+5F18	# <cjk>
+0x8D50	U+6052	# <cjk>
+0x8D51	U+614C	# <cjk>
+0x8D52	U+6297	# <cjk>
+0x8D53	U+62D8	# <cjk>
+0x8D54	U+63A7	# <cjk>
+0x8D55	U+653B	# <cjk>
+0x8D56	U+6602	# <cjk>
+0x8D57	U+6643	# <cjk>
+0x8D58	U+66F4	# <cjk>
+0x8D59	U+676D	# <cjk>
+0x8D5A	U+6821	# <cjk>
+0x8D5B	U+6897	# <cjk>
+0x8D5C	U+69CB	# <cjk>
+0x8D5D	U+6C5F	# <cjk>
+0x8D5E	U+6D2A	# <cjk>
+0x8D5F	U+6D69	# <cjk>
+0x8D60	U+6E2F	# <cjk>
+0x8D61	U+6E9D	# <cjk>
+0x8D62	U+7532	# <cjk>
+0x8D63	U+7687	# <cjk>
+0x8D64	U+786C	# <cjk>
+0x8D65	U+7A3F	# <cjk>
+0x8D66	U+7CE0	# <cjk>
+0x8D67	U+7D05	# <cjk>
+0x8D68	U+7D18	# <cjk>
+0x8D69	U+7D5E	# <cjk>
+0x8D6A	U+7DB1	# <cjk>
+0x8D6B	U+8015	# <cjk>
+0x8D6C	U+8003	# <cjk>
+0x8D6D	U+80AF	# <cjk>
+0x8D6E	U+80B1	# <cjk>
+0x8D6F	U+8154	# <cjk>
+0x8D70	U+818F	# <cjk>
+0x8D71	U+822A	# <cjk>
+0x8D72	U+8352	# <cjk>
+0x8D73	U+884C	# <cjk>
+0x8D74	U+8861	# <cjk>
+0x8D75	U+8B1B	# <cjk>
+0x8D76	U+8CA2	# <cjk>
+0x8D77	U+8CFC	# <cjk>
+0x8D78	U+90CA	# <cjk>
+0x8D79	U+9175	# <cjk>
+0x8D7A	U+9271	# <cjk>
+0x8D7B	U+783F	# <cjk>
+0x8D7C	U+92FC	# <cjk>
+0x8D7D	U+95A4	# <cjk>
+0x8D7E	U+964D	# <cjk>
+0x8D80	U+9805	# <cjk>
+0x8D81	U+9999	# <cjk>
+0x8D82	U+9AD8	# <cjk>
+0x8D83	U+9D3B	# <cjk>
+0x8D84	U+525B	# <cjk>
+0x8D85	U+52AB	# <cjk>
+0x8D86	U+53F7	# <cjk>
+0x8D87	U+5408	# <cjk>
+0x8D88	U+58D5	# <cjk>
+0x8D89	U+62F7	# <cjk>
+0x8D8A	U+6FE0	# <cjk>
+0x8D8B	U+8C6A	# <cjk>
+0x8D8C	U+8F5F	# <cjk>
+0x8D8D	U+9EB9	# <cjk>
+0x8D8E	U+514B	# <cjk>
+0x8D8F	U+523B	# <cjk>
+0x8D90	U+544A	# <cjk>
+0x8D91	U+56FD	# <cjk>
+0x8D92	U+7A40	# <cjk>
+0x8D93	U+9177	# <cjk>
+0x8D94	U+9D60	# <cjk>
+0x8D95	U+9ED2	# <cjk>
+0x8D96	U+7344	# <cjk>
+0x8D97	U+6F09	# <cjk>
+0x8D98	U+8170	# <cjk>
+0x8D99	U+7511	# <cjk>
+0x8D9A	U+5FFD	# <cjk>
+0x8D9B	U+60DA	# <cjk>
+0x8D9C	U+9AA8	# <cjk>
+0x8D9D	U+72DB	# <cjk>
+0x8D9E	U+8FBC	# <cjk>
+0x8D9F	U+6B64	# <cjk>
+0x8DA0	U+9803	# <cjk>
+0x8DA1	U+4ECA	# <cjk>
+0x8DA2	U+56F0	# <cjk>
+0x8DA3	U+5764	# <cjk>
+0x8DA4	U+58BE	# <cjk>
+0x8DA5	U+5A5A	# <cjk>
+0x8DA6	U+6068	# <cjk>
+0x8DA7	U+61C7	# <cjk>
+0x8DA8	U+660F	# <cjk>
+0x8DA9	U+6606	# <cjk>
+0x8DAA	U+6839	# <cjk>
+0x8DAB	U+68B1	# <cjk>
+0x8DAC	U+6DF7	# <cjk>
+0x8DAD	U+75D5	# <cjk>
+0x8DAE	U+7D3A	# <cjk>
+0x8DAF	U+826E	# <cjk>
+0x8DB0	U+9B42	# <cjk>
+0x8DB1	U+4E9B	# <cjk>
+0x8DB2	U+4F50	# <cjk>
+0x8DB3	U+53C9	# <cjk>
+0x8DB4	U+5506	# <cjk>
+0x8DB5	U+5D6F	# <cjk>
+0x8DB6	U+5DE6	# <cjk>
+0x8DB7	U+5DEE	# <cjk>
+0x8DB8	U+67FB	# <cjk>
+0x8DB9	U+6C99	# <cjk>
+0x8DBA	U+7473	# <cjk>
+0x8DBB	U+7802	# <cjk>
+0x8DBC	U+8A50	# <cjk>
+0x8DBD	U+9396	# <cjk>
+0x8DBE	U+88DF	# <cjk>
+0x8DBF	U+5750	# <cjk>
+0x8DC0	U+5EA7	# <cjk>
+0x8DC1	U+632B	# <cjk>
+0x8DC2	U+50B5	# <cjk>
+0x8DC3	U+50AC	# <cjk>
+0x8DC4	U+518D	# <cjk>
+0x8DC5	U+6700	# <cjk>
+0x8DC6	U+54C9	# <cjk>
+0x8DC7	U+585E	# <cjk>
+0x8DC8	U+59BB	# <cjk>
+0x8DC9	U+5BB0	# <cjk>
+0x8DCA	U+5F69	# <cjk>
+0x8DCB	U+624D	# <cjk>
+0x8DCC	U+63A1	# <cjk>
+0x8DCD	U+683D	# <cjk>
+0x8DCE	U+6B73	# <cjk>
+0x8DCF	U+6E08	# <cjk>
+0x8DD0	U+707D	# <cjk>
+0x8DD1	U+91C7	# <cjk>
+0x8DD2	U+7280	# <cjk>
+0x8DD3	U+7815	# <cjk>
+0x8DD4	U+7826	# <cjk>
+0x8DD5	U+796D	# <cjk>
+0x8DD6	U+658E	# <cjk>
+0x8DD7	U+7D30	# <cjk>
+0x8DD8	U+83DC	# <cjk>
+0x8DD9	U+88C1	# <cjk>
+0x8DDA	U+8F09	# <cjk>
+0x8DDB	U+969B	# <cjk>
+0x8DDC	U+5264	# <cjk>
+0x8DDD	U+5728	# <cjk>
+0x8DDE	U+6750	# <cjk>
+0x8DDF	U+7F6A	# <cjk>
+0x8DE0	U+8CA1	# <cjk>
+0x8DE1	U+51B4	# <cjk>
+0x8DE2	U+5742	# <cjk>
+0x8DE3	U+962A	# <cjk>
+0x8DE4	U+583A	# <cjk>
+0x8DE5	U+698A	# <cjk>
+0x8DE6	U+80B4	# <cjk>
+0x8DE7	U+54B2	# <cjk>
+0x8DE8	U+5D0E	# <cjk>
+0x8DE9	U+57FC	# <cjk>
+0x8DEA	U+7895	# <cjk>
+0x8DEB	U+9DFA	# <cjk>
+0x8DEC	U+4F5C	# <cjk>
+0x8DED	U+524A	# <cjk>
+0x8DEE	U+548B	# <cjk>
+0x8DEF	U+643E	# <cjk>
+0x8DF0	U+6628	# <cjk>
+0x8DF1	U+6714	# <cjk>
+0x8DF2	U+67F5	# <cjk>
+0x8DF3	U+7A84	# <cjk>
+0x8DF4	U+7B56	# <cjk>
+0x8DF5	U+7D22	# <cjk>
+0x8DF6	U+932F	# <cjk>
+0x8DF7	U+685C	# <cjk>
+0x8DF8	U+9BAD	# <cjk>
+0x8DF9	U+7B39	# <cjk>
+0x8DFA	U+5319	# <cjk>
+0x8DFB	U+518A	# <cjk>
+0x8DFC	U+5237	# <cjk>
+0x8E40	U+5BDF	# <cjk>
+0x8E41	U+62F6	# <cjk>
+0x8E42	U+64AE	# <cjk>
+0x8E43	U+64E6	# <cjk>
+0x8E44	U+672D	# <cjk>
+0x8E45	U+6BBA	# <cjk>
+0x8E46	U+85A9	# <cjk>
+0x8E47	U+96D1	# <cjk>
+0x8E48	U+7690	# <cjk>
+0x8E49	U+9BD6	# <cjk>
+0x8E4A	U+634C	# <cjk>
+0x8E4B	U+9306	# <cjk>
+0x8E4C	U+9BAB	# <cjk>
+0x8E4D	U+76BF	# <cjk>
+0x8E4E	U+6652	# <cjk>
+0x8E4F	U+4E09	# <cjk>
+0x8E50	U+5098	# <cjk>
+0x8E51	U+53C2	# <cjk>
+0x8E52	U+5C71	# <cjk>
+0x8E53	U+60E8	# <cjk>
+0x8E54	U+6492	# <cjk>
+0x8E55	U+6563	# <cjk>
+0x8E56	U+685F	# <cjk>
+0x8E57	U+71E6	# <cjk>
+0x8E58	U+73CA	# <cjk>
+0x8E59	U+7523	# <cjk>
+0x8E5A	U+7B97	# <cjk>
+0x8E5B	U+7E82	# <cjk>
+0x8E5C	U+8695	# <cjk>
+0x8E5D	U+8B83	# <cjk>
+0x8E5E	U+8CDB	# <cjk>
+0x8E5F	U+9178	# <cjk>
+0x8E60	U+9910	# <cjk>
+0x8E61	U+65AC	# <cjk>
+0x8E62	U+66AB	# <cjk>
+0x8E63	U+6B8B	# <cjk>
+0x8E64	U+4ED5	# <cjk>
+0x8E65	U+4ED4	# <cjk>
+0x8E66	U+4F3A	# <cjk>
+0x8E67	U+4F7F	# <cjk>
+0x8E68	U+523A	# <cjk>
+0x8E69	U+53F8	# <cjk>
+0x8E6A	U+53F2	# <cjk>
+0x8E6B	U+55E3	# <cjk>
+0x8E6C	U+56DB	# <cjk>
+0x8E6D	U+58EB	# <cjk>
+0x8E6E	U+59CB	# <cjk>
+0x8E6F	U+59C9	# <cjk>
+0x8E70	U+59FF	# <cjk>
+0x8E71	U+5B50	# <cjk>
+0x8E72	U+5C4D	# <cjk>
+0x8E73	U+5E02	# <cjk>
+0x8E74	U+5E2B	# <cjk>
+0x8E75	U+5FD7	# <cjk>
+0x8E76	U+601D	# <cjk>
+0x8E77	U+6307	# <cjk>
+0x8E78	U+652F	# <cjk>
+0x8E79	U+5B5C	# <cjk>
+0x8E7A	U+65AF	# <cjk>
+0x8E7B	U+65BD	# <cjk>
+0x8E7C	U+65E8	# <cjk>
+0x8E7D	U+679D	# <cjk>
+0x8E7E	U+6B62	# <cjk>
+0x8E80	U+6B7B	# <cjk>
+0x8E81	U+6C0F	# <cjk>
+0x8E82	U+7345	# <cjk>
+0x8E83	U+7949	# <cjk>
+0x8E84	U+79C1	# <cjk>
+0x8E85	U+7CF8	# <cjk>
+0x8E86	U+7D19	# <cjk>
+0x8E87	U+7D2B	# <cjk>
+0x8E88	U+80A2	# <cjk>
+0x8E89	U+8102	# <cjk>
+0x8E8A	U+81F3	# <cjk>
+0x8E8B	U+8996	# <cjk>
+0x8E8C	U+8A5E	# <cjk>
+0x8E8D	U+8A69	# <cjk>
+0x8E8E	U+8A66	# <cjk>
+0x8E8F	U+8A8C	# <cjk>
+0x8E90	U+8AEE	# <cjk>
+0x8E91	U+8CC7	# <cjk>
+0x8E92	U+8CDC	# <cjk>
+0x8E93	U+96CC	# <cjk>
+0x8E94	U+98FC	# <cjk>
+0x8E95	U+6B6F	# <cjk>
+0x8E96	U+4E8B	# <cjk>
+0x8E97	U+4F3C	# <cjk>
+0x8E98	U+4F8D	# <cjk>
+0x8E99	U+5150	# <cjk>
+0x8E9A	U+5B57	# <cjk>
+0x8E9B	U+5BFA	# <cjk>
+0x8E9C	U+6148	# <cjk>
+0x8E9D	U+6301	# <cjk>
+0x8E9E	U+6642	# <cjk>
+0x8E9F	U+6B21	# <cjk>
+0x8EA0	U+6ECB	# <cjk>
+0x8EA1	U+6CBB	# <cjk>
+0x8EA2	U+723E	# <cjk>
+0x8EA3	U+74BD	# <cjk>
+0x8EA4	U+75D4	# <cjk>
+0x8EA5	U+78C1	# <cjk>
+0x8EA6	U+793A	# <cjk>
+0x8EA7	U+800C	# <cjk>
+0x8EA8	U+8033	# <cjk>
+0x8EA9	U+81EA	# <cjk>
+0x8EAA	U+8494	# <cjk>
+0x8EAB	U+8F9E	# <cjk>
+0x8EAC	U+6C50	# <cjk>
+0x8EAD	U+9E7F	# <cjk>
+0x8EAE	U+5F0F	# <cjk>
+0x8EAF	U+8B58	# <cjk>
+0x8EB0	U+9D2B	# <cjk>
+0x8EB1	U+7AFA	# <cjk>
+0x8EB2	U+8EF8	# <cjk>
+0x8EB3	U+5B8D	# <cjk>
+0x8EB4	U+96EB	# <cjk>
+0x8EB5	U+4E03	# <cjk>
+0x8EB6	U+53F1	# <cjk>
+0x8EB7	U+57F7	# <cjk>
+0x8EB8	U+5931	# <cjk>
+0x8EB9	U+5AC9	# <cjk>
+0x8EBA	U+5BA4	# <cjk>
+0x8EBB	U+6089	# <cjk>
+0x8EBC	U+6E7F	# <cjk>
+0x8EBD	U+6F06	# <cjk>
+0x8EBE	U+75BE	# <cjk>
+0x8EBF	U+8CEA	# <cjk>
+0x8EC0	U+5B9F	# <cjk>
+0x8EC1	U+8500	# <cjk>
+0x8EC2	U+7BE0	# <cjk>
+0x8EC3	U+5072	# <cjk>
+0x8EC4	U+67F4	# <cjk>
+0x8EC5	U+829D	# <cjk>
+0x8EC6	U+5C61	# <cjk>
+0x8EC7	U+854A	# <cjk>
+0x8EC8	U+7E1E	# <cjk>
+0x8EC9	U+820E	# <cjk>
+0x8ECA	U+5199	# <cjk>
+0x8ECB	U+5C04	# <cjk>
+0x8ECC	U+6368	# <cjk>
+0x8ECD	U+8D66	# <cjk>
+0x8ECE	U+659C	# <cjk>
+0x8ECF	U+716E	# <cjk>
+0x8ED0	U+793E	# <cjk>
+0x8ED1	U+7D17	# <cjk>
+0x8ED2	U+8005	# <cjk>
+0x8ED3	U+8B1D	# <cjk>
+0x8ED4	U+8ECA	# <cjk>
+0x8ED5	U+906E	# <cjk>
+0x8ED6	U+86C7	# <cjk>
+0x8ED7	U+90AA	# <cjk>
+0x8ED8	U+501F	# <cjk>
+0x8ED9	U+52FA	# <cjk>
+0x8EDA	U+5C3A	# <cjk>
+0x8EDB	U+6753	# <cjk>
+0x8EDC	U+707C	# <cjk>
+0x8EDD	U+7235	# <cjk>
+0x8EDE	U+914C	# <cjk>
+0x8EDF	U+91C8	# <cjk>
+0x8EE0	U+932B	# <cjk>
+0x8EE1	U+82E5	# <cjk>
+0x8EE2	U+5BC2	# <cjk>
+0x8EE3	U+5F31	# <cjk>
+0x8EE4	U+60F9	# <cjk>
+0x8EE5	U+4E3B	# <cjk>
+0x8EE6	U+53D6	# <cjk>
+0x8EE7	U+5B88	# <cjk>
+0x8EE8	U+624B	# <cjk>
+0x8EE9	U+6731	# <cjk>
+0x8EEA	U+6B8A	# <cjk>
+0x8EEB	U+72E9	# <cjk>
+0x8EEC	U+73E0	# <cjk>
+0x8EED	U+7A2E	# <cjk>
+0x8EEE	U+816B	# <cjk>
+0x8EEF	U+8DA3	# <cjk>
+0x8EF0	U+9152	# <cjk>
+0x8EF1	U+9996	# <cjk>
+0x8EF2	U+5112	# <cjk>
+0x8EF3	U+53D7	# <cjk>
+0x8EF4	U+546A	# <cjk>
+0x8EF5	U+5BFF	# <cjk>
+0x8EF6	U+6388	# <cjk>
+0x8EF7	U+6A39	# <cjk>
+0x8EF8	U+7DAC	# <cjk>
+0x8EF9	U+9700	# <cjk>
+0x8EFA	U+56DA	# <cjk>
+0x8EFB	U+53CE	# <cjk>
+0x8EFC	U+5468	# <cjk>
+0x8F40	U+5B97	# <cjk>
+0x8F41	U+5C31	# <cjk>
+0x8F42	U+5DDE	# <cjk>
+0x8F43	U+4FEE	# <cjk>
+0x8F44	U+6101	# <cjk>
+0x8F45	U+62FE	# <cjk>
+0x8F46	U+6D32	# <cjk>
+0x8F47	U+79C0	# <cjk>
+0x8F48	U+79CB	# <cjk>
+0x8F49	U+7D42	# <cjk>
+0x8F4A	U+7E4D	# <cjk>
+0x8F4B	U+7FD2	# <cjk>
+0x8F4C	U+81ED	# <cjk>
+0x8F4D	U+821F	# <cjk>
+0x8F4E	U+8490	# <cjk>
+0x8F4F	U+8846	# <cjk>
+0x8F50	U+8972	# <cjk>
+0x8F51	U+8B90	# <cjk>
+0x8F52	U+8E74	# <cjk>
+0x8F53	U+8F2F	# <cjk>
+0x8F54	U+9031	# <cjk>
+0x8F55	U+914B	# <cjk>
+0x8F56	U+916C	# <cjk>
+0x8F57	U+96C6	# <cjk>
+0x8F58	U+919C	# <cjk>
+0x8F59	U+4EC0	# <cjk>
+0x8F5A	U+4F4F	# <cjk>
+0x8F5B	U+5145	# <cjk>
+0x8F5C	U+5341	# <cjk>
+0x8F5D	U+5F93	# <cjk>
+0x8F5E	U+620E	# <cjk>
+0x8F5F	U+67D4	# <cjk>
+0x8F60	U+6C41	# <cjk>
+0x8F61	U+6E0B	# <cjk>
+0x8F62	U+7363	# <cjk>
+0x8F63	U+7E26	# <cjk>
+0x8F64	U+91CD	# <cjk>
+0x8F65	U+9283	# <cjk>
+0x8F66	U+53D4	# <cjk>
+0x8F67	U+5919	# <cjk>
+0x8F68	U+5BBF	# <cjk>
+0x8F69	U+6DD1	# <cjk>
+0x8F6A	U+795D	# <cjk>
+0x8F6B	U+7E2E	# <cjk>
+0x8F6C	U+7C9B	# <cjk>
+0x8F6D	U+587E	# <cjk>
+0x8F6E	U+719F	# <cjk>
+0x8F6F	U+51FA	# <cjk>
+0x8F70	U+8853	# <cjk>
+0x8F71	U+8FF0	# <cjk>
+0x8F72	U+4FCA	# <cjk>
+0x8F73	U+5CFB	# <cjk>
+0x8F74	U+6625	# <cjk>
+0x8F75	U+77AC	# <cjk>
+0x8F76	U+7AE3	# <cjk>
+0x8F77	U+821C	# <cjk>
+0x8F78	U+99FF	# <cjk>
+0x8F79	U+51C6	# <cjk>
+0x8F7A	U+5FAA	# <cjk>
+0x8F7B	U+65EC	# <cjk>
+0x8F7C	U+696F	# <cjk>
+0x8F7D	U+6B89	# <cjk>
+0x8F7E	U+6DF3	# <cjk>
+0x8F80	U+6E96	# <cjk>
+0x8F81	U+6F64	# <cjk>
+0x8F82	U+76FE	# <cjk>
+0x8F83	U+7D14	# <cjk>
+0x8F84	U+5DE1	# <cjk>
+0x8F85	U+9075	# <cjk>
+0x8F86	U+9187	# <cjk>
+0x8F87	U+9806	# <cjk>
+0x8F88	U+51E6	# <cjk>
+0x8F89	U+521D	# <cjk>
+0x8F8A	U+6240	# <cjk>
+0x8F8B	U+6691	# <cjk>
+0x8F8C	U+66D9	# <cjk>
+0x8F8D	U+6E1A	# <cjk>
+0x8F8E	U+5EB6	# <cjk>
+0x8F8F	U+7DD2	# <cjk>
+0x8F90	U+7F72	# <cjk>
+0x8F91	U+66F8	# <cjk>
+0x8F92	U+85AF	# <cjk>
+0x8F93	U+85F7	# <cjk>
+0x8F94	U+8AF8	# <cjk>
+0x8F95	U+52A9	# <cjk>
+0x8F96	U+53D9	# <cjk>
+0x8F97	U+5973	# <cjk>
+0x8F98	U+5E8F	# <cjk>
+0x8F99	U+5F90	# <cjk>
+0x8F9A	U+6055	# <cjk>
+0x8F9B	U+92E4	# <cjk>
+0x8F9C	U+9664	# <cjk>
+0x8F9D	U+50B7	# <cjk>
+0x8F9E	U+511F	# <cjk>
+0x8F9F	U+52DD	# <cjk>
+0x8FA0	U+5320	# <cjk>
+0x8FA1	U+5347	# <cjk>
+0x8FA2	U+53EC	# <cjk>
+0x8FA3	U+54E8	# <cjk>
+0x8FA4	U+5546	# <cjk>
+0x8FA5	U+5531	# <cjk>
+0x8FA6	U+5617	# <cjk>
+0x8FA7	U+5968	# <cjk>
+0x8FA8	U+59BE	# <cjk>
+0x8FA9	U+5A3C	# <cjk>
+0x8FAA	U+5BB5	# <cjk>
+0x8FAB	U+5C06	# <cjk>
+0x8FAC	U+5C0F	# <cjk>
+0x8FAD	U+5C11	# <cjk>
+0x8FAE	U+5C1A	# <cjk>
+0x8FAF	U+5E84	# <cjk>
+0x8FB0	U+5E8A	# <cjk>
+0x8FB1	U+5EE0	# <cjk>
+0x8FB2	U+5F70	# <cjk>
+0x8FB3	U+627F	# <cjk>
+0x8FB4	U+6284	# <cjk>
+0x8FB5	U+62DB	# <cjk>
+0x8FB6	U+638C	# <cjk>
+0x8FB7	U+6377	# <cjk>
+0x8FB8	U+6607	# <cjk>
+0x8FB9	U+660C	# <cjk>
+0x8FBA	U+662D	# <cjk>
+0x8FBB	U+6676	# <cjk>
+0x8FBC	U+677E	# <cjk>
+0x8FBD	U+68A2	# <cjk>
+0x8FBE	U+6A1F	# <cjk>
+0x8FBF	U+6A35	# <cjk>
+0x8FC0	U+6CBC	# <cjk>
+0x8FC1	U+6D88	# <cjk>
+0x8FC2	U+6E09	# <cjk>
+0x8FC3	U+6E58	# <cjk>
+0x8FC4	U+713C	# <cjk>
+0x8FC5	U+7126	# <cjk>
+0x8FC6	U+7167	# <cjk>
+0x8FC7	U+75C7	# <cjk>
+0x8FC8	U+7701	# <cjk>
+0x8FC9	U+785D	# <cjk>
+0x8FCA	U+7901	# <cjk>
+0x8FCB	U+7965	# <cjk>
+0x8FCC	U+79F0	# <cjk>
+0x8FCD	U+7AE0	# <cjk>
+0x8FCE	U+7B11	# <cjk>
+0x8FCF	U+7CA7	# <cjk>
+0x8FD0	U+7D39	# <cjk>
+0x8FD1	U+8096	# <cjk>
+0x8FD2	U+83D6	# <cjk>
+0x8FD3	U+848B	# <cjk>
+0x8FD4	U+8549	# <cjk>
+0x8FD5	U+885D	# <cjk>
+0x8FD6	U+88F3	# <cjk>
+0x8FD7	U+8A1F	# <cjk>
+0x8FD8	U+8A3C	# <cjk>
+0x8FD9	U+8A54	# <cjk>
+0x8FDA	U+8A73	# <cjk>
+0x8FDB	U+8C61	# <cjk>
+0x8FDC	U+8CDE	# <cjk>
+0x8FDD	U+91A4	# <cjk>
+0x8FDE	U+9266	# <cjk>
+0x8FDF	U+937E	# <cjk>
+0x8FE0	U+9418	# <cjk>
+0x8FE1	U+969C	# <cjk>
+0x8FE2	U+9798	# <cjk>
+0x8FE3	U+4E0A	# <cjk>
+0x8FE4	U+4E08	# <cjk>
+0x8FE5	U+4E1E	# <cjk>
+0x8FE6	U+4E57	# <cjk>
+0x8FE7	U+5197	# <cjk>
+0x8FE8	U+5270	# <cjk>
+0x8FE9	U+57CE	# <cjk>
+0x8FEA	U+5834	# <cjk>
+0x8FEB	U+58CC	# <cjk>
+0x8FEC	U+5B22	# <cjk>
+0x8FED	U+5E38	# <cjk>
+0x8FEE	U+60C5	# <cjk>
+0x8FEF	U+64FE	# <cjk>
+0x8FF0	U+6761	# <cjk>
+0x8FF1	U+6756	# <cjk>
+0x8FF2	U+6D44	# <cjk>
+0x8FF3	U+72B6	# <cjk>
+0x8FF4	U+7573	# <cjk>
+0x8FF5	U+7A63	# <cjk>
+0x8FF6	U+84B8	# <cjk>
+0x8FF7	U+8B72	# <cjk>
+0x8FF8	U+91B8	# <cjk>
+0x8FF9	U+9320	# <cjk>
+0x8FFA	U+5631	# <cjk>
+0x8FFB	U+57F4	# <cjk>
+0x8FFC	U+98FE	# <cjk>
+0x9040	U+62ED	# <cjk>
+0x9041	U+690D	# <cjk>
+0x9042	U+6B96	# <cjk>
+0x9043	U+71ED	# <cjk>
+0x9044	U+7E54	# <cjk>
+0x9045	U+8077	# <cjk>
+0x9046	U+8272	# <cjk>
+0x9047	U+89E6	# <cjk>
+0x9048	U+98DF	# <cjk>
+0x9049	U+8755	# <cjk>
+0x904A	U+8FB1	# <cjk>
+0x904B	U+5C3B	# <cjk>
+0x904C	U+4F38	# <cjk>
+0x904D	U+4FE1	# <cjk>
+0x904E	U+4FB5	# <cjk>
+0x904F	U+5507	# <cjk>
+0x9050	U+5A20	# <cjk>
+0x9051	U+5BDD	# <cjk>
+0x9052	U+5BE9	# <cjk>
+0x9053	U+5FC3	# <cjk>
+0x9054	U+614E	# <cjk>
+0x9055	U+632F	# <cjk>
+0x9056	U+65B0	# <cjk>
+0x9057	U+664B	# <cjk>
+0x9058	U+68EE	# <cjk>
+0x9059	U+699B	# <cjk>
+0x905A	U+6D78	# <cjk>
+0x905B	U+6DF1	# <cjk>
+0x905C	U+7533	# <cjk>
+0x905D	U+75B9	# <cjk>
+0x905E	U+771F	# <cjk>
+0x905F	U+795E	# <cjk>
+0x9060	U+79E6	# <cjk>
+0x9061	U+7D33	# <cjk>
+0x9062	U+81E3	# <cjk>
+0x9063	U+82AF	# <cjk>
+0x9064	U+85AA	# <cjk>
+0x9065	U+89AA	# <cjk>
+0x9066	U+8A3A	# <cjk>
+0x9067	U+8EAB	# <cjk>
+0x9068	U+8F9B	# <cjk>
+0x9069	U+9032	# <cjk>
+0x906A	U+91DD	# <cjk>
+0x906B	U+9707	# <cjk>
+0x906C	U+4EBA	# <cjk>
+0x906D	U+4EC1	# <cjk>
+0x906E	U+5203	# <cjk>
+0x906F	U+5875	# <cjk>
+0x9070	U+58EC	# <cjk>
+0x9071	U+5C0B	# <cjk>
+0x9072	U+751A	# <cjk>
+0x9073	U+5C3D	# <cjk>
+0x9074	U+814E	# <cjk>
+0x9075	U+8A0A	# <cjk>
+0x9076	U+8FC5	# <cjk>
+0x9077	U+9663	# <cjk>
+0x9078	U+976D	# <cjk>
+0x9079	U+7B25	# <cjk>
+0x907A	U+8ACF	# <cjk>
+0x907B	U+9808	# <cjk>
+0x907C	U+9162	# <cjk>
+0x907D	U+56F3	# <cjk>
+0x907E	U+53A8	# <cjk>
+0x9080	U+9017	# <cjk>
+0x9081	U+5439	# <cjk>
+0x9082	U+5782	# <cjk>
+0x9083	U+5E25	# <cjk>
+0x9084	U+63A8	# <cjk>
+0x9085	U+6C34	# <cjk>
+0x9086	U+708A	# <cjk>
+0x9087	U+7761	# <cjk>
+0x9088	U+7C8B	# <cjk>
+0x9089	U+7FE0	# <cjk>
+0x908A	U+8870	# <cjk>
+0x908B	U+9042	# <cjk>
+0x908C	U+9154	# <cjk>
+0x908D	U+9310	# <cjk>
+0x908E	U+9318	# <cjk>
+0x908F	U+968F	# <cjk>
+0x9090	U+745E	# <cjk>
+0x9091	U+9AC4	# <cjk>
+0x9092	U+5D07	# <cjk>
+0x9093	U+5D69	# <cjk>
+0x9094	U+6570	# <cjk>
+0x9095	U+67A2	# <cjk>
+0x9096	U+8DA8	# <cjk>
+0x9097	U+96DB	# <cjk>
+0x9098	U+636E	# <cjk>
+0x9099	U+6749	# <cjk>
+0x909A	U+6919	# <cjk>
+0x909B	U+83C5	# <cjk>
+0x909C	U+9817	# <cjk>
+0x909D	U+96C0	# <cjk>
+0x909E	U+88FE	# <cjk>
+0x909F	U+6F84	# <cjk>
+0x90A0	U+647A	# <cjk>
+0x90A1	U+5BF8	# <cjk>
+0x90A2	U+4E16	# <cjk>
+0x90A3	U+702C	# <cjk>
+0x90A4	U+755D	# <cjk>
+0x90A5	U+662F	# <cjk>
+0x90A6	U+51C4	# <cjk>
+0x90A7	U+5236	# <cjk>
+0x90A8	U+52E2	# <cjk>
+0x90A9	U+59D3	# <cjk>
+0x90AA	U+5F81	# <cjk>
+0x90AB	U+6027	# <cjk>
+0x90AC	U+6210	# <cjk>
+0x90AD	U+653F	# <cjk>
+0x90AE	U+6574	# <cjk>
+0x90AF	U+661F	# <cjk>
+0x90B0	U+6674	# <cjk>
+0x90B1	U+68F2	# <cjk>
+0x90B2	U+6816	# <cjk>
+0x90B3	U+6B63	# <cjk>
+0x90B4	U+6E05	# <cjk>
+0x90B5	U+7272	# <cjk>
+0x90B6	U+751F	# <cjk>
+0x90B7	U+76DB	# <cjk>
+0x90B8	U+7CBE	# <cjk>
+0x90B9	U+8056	# <cjk>
+0x90BA	U+58F0	# <cjk>
+0x90BB	U+88FD	# <cjk>
+0x90BC	U+897F	# <cjk>
+0x90BD	U+8AA0	# <cjk>
+0x90BE	U+8A93	# <cjk>
+0x90BF	U+8ACB	# <cjk>
+0x90C0	U+901D	# <cjk>
+0x90C1	U+9192	# <cjk>
+0x90C2	U+9752	# <cjk>
+0x90C3	U+9759	# <cjk>
+0x90C4	U+6589	# <cjk>
+0x90C5	U+7A0E	# <cjk>
+0x90C6	U+8106	# <cjk>
+0x90C7	U+96BB	# <cjk>
+0x90C8	U+5E2D	# <cjk>
+0x90C9	U+60DC	# <cjk>
+0x90CA	U+621A	# <cjk>
+0x90CB	U+65A5	# <cjk>
+0x90CC	U+6614	# <cjk>
+0x90CD	U+6790	# <cjk>
+0x90CE	U+77F3	# <cjk>
+0x90CF	U+7A4D	# <cjk>
+0x90D0	U+7C4D	# <cjk>
+0x90D1	U+7E3E	# <cjk>
+0x90D2	U+810A	# <cjk>
+0x90D3	U+8CAC	# <cjk>
+0x90D4	U+8D64	# <cjk>
+0x90D5	U+8DE1	# <cjk>
+0x90D6	U+8E5F	# <cjk>
+0x90D7	U+78A9	# <cjk>
+0x90D8	U+5207	# <cjk>
+0x90D9	U+62D9	# <cjk>
+0x90DA	U+63A5	# <cjk>
+0x90DB	U+6442	# <cjk>
+0x90DC	U+6298	# <cjk>
+0x90DD	U+8A2D	# <cjk>
+0x90DE	U+7A83	# <cjk>
+0x90DF	U+7BC0	# <cjk>
+0x90E0	U+8AAC	# <cjk>
+0x90E1	U+96EA	# <cjk>
+0x90E2	U+7D76	# <cjk>
+0x90E3	U+820C	# <cjk>
+0x90E4	U+8749	# <cjk>
+0x90E5	U+4ED9	# <cjk>
+0x90E6	U+5148	# <cjk>
+0x90E7	U+5343	# <cjk>
+0x90E8	U+5360	# <cjk>
+0x90E9	U+5BA3	# <cjk>
+0x90EA	U+5C02	# <cjk>
+0x90EB	U+5C16	# <cjk>
+0x90EC	U+5DDD	# <cjk>
+0x90ED	U+6226	# <cjk>
+0x90EE	U+6247	# <cjk>
+0x90EF	U+64B0	# <cjk>
+0x90F0	U+6813	# <cjk>
+0x90F1	U+6834	# <cjk>
+0x90F2	U+6CC9	# <cjk>
+0x90F3	U+6D45	# <cjk>
+0x90F4	U+6D17	# <cjk>
+0x90F5	U+67D3	# <cjk>
+0x90F6	U+6F5C	# <cjk>
+0x90F7	U+714E	# <cjk>
+0x90F8	U+717D	# <cjk>
+0x90F9	U+65CB	# <cjk>
+0x90FA	U+7A7F	# <cjk>
+0x90FB	U+7BAD	# <cjk>
+0x90FC	U+7DDA	# <cjk>
+0x9140	U+7E4A	# <cjk>
+0x9141	U+7FA8	# <cjk>
+0x9142	U+817A	# <cjk>
+0x9143	U+821B	# <cjk>
+0x9144	U+8239	# <cjk>
+0x9145	U+85A6	# <cjk>
+0x9146	U+8A6E	# <cjk>
+0x9147	U+8CCE	# <cjk>
+0x9148	U+8DF5	# <cjk>
+0x9149	U+9078	# <cjk>
+0x914A	U+9077	# <cjk>
+0x914B	U+92AD	# <cjk>
+0x914C	U+9291	# <cjk>
+0x914D	U+9583	# <cjk>
+0x914E	U+9BAE	# <cjk>
+0x914F	U+524D	# <cjk>
+0x9150	U+5584	# <cjk>
+0x9151	U+6F38	# <cjk>
+0x9152	U+7136	# <cjk>
+0x9153	U+5168	# <cjk>
+0x9154	U+7985	# <cjk>
+0x9155	U+7E55	# <cjk>
+0x9156	U+81B3	# <cjk>
+0x9157	U+7CCE	# <cjk>
+0x9158	U+564C	# <cjk>
+0x9159	U+5851	# <cjk>
+0x915A	U+5CA8	# <cjk>
+0x915B	U+63AA	# <cjk>
+0x915C	U+66FE	# <cjk>
+0x915D	U+66FD	# <cjk>
+0x915E	U+695A	# <cjk>
+0x915F	U+72D9	# <cjk>
+0x9160	U+758F	# <cjk>
+0x9161	U+758E	# <cjk>
+0x9162	U+790E	# <cjk>
+0x9163	U+7956	# <cjk>
+0x9164	U+79DF	# <cjk>
+0x9165	U+7C97	# <cjk>
+0x9166	U+7D20	# <cjk>
+0x9167	U+7D44	# <cjk>
+0x9168	U+8607	# <cjk>
+0x9169	U+8A34	# <cjk>
+0x916A	U+963B	# <cjk>
+0x916B	U+9061	# <cjk>
+0x916C	U+9F20	# <cjk>
+0x916D	U+50E7	# <cjk>
+0x916E	U+5275	# <cjk>
+0x916F	U+53CC	# <cjk>
+0x9170	U+53E2	# <cjk>
+0x9171	U+5009	# <cjk>
+0x9172	U+55AA	# <cjk>
+0x9173	U+58EE	# <cjk>
+0x9174	U+594F	# <cjk>
+0x9175	U+723D	# <cjk>
+0x9176	U+5B8B	# <cjk>
+0x9177	U+5C64	# <cjk>
+0x9178	U+531D	# <cjk>
+0x9179	U+60E3	# <cjk>
+0x917A	U+60F3	# <cjk>
+0x917B	U+635C	# <cjk>
+0x917C	U+6383	# <cjk>
+0x917D	U+633F	# <cjk>
+0x917E	U+63BB	# <cjk>
+0x9180	U+64CD	# <cjk>
+0x9181	U+65E9	# <cjk>
+0x9182	U+66F9	# <cjk>
+0x9183	U+5DE3	# <cjk>
+0x9184	U+69CD	# <cjk>
+0x9185	U+69FD	# <cjk>
+0x9186	U+6F15	# <cjk>
+0x9187	U+71E5	# <cjk>
+0x9188	U+4E89	# <cjk>
+0x9189	U+75E9	# <cjk>
+0x918A	U+76F8	# <cjk>
+0x918B	U+7A93	# <cjk>
+0x918C	U+7CDF	# <cjk>
+0x918D	U+7DCF	# <cjk>
+0x918E	U+7D9C	# <cjk>
+0x918F	U+8061	# <cjk>
+0x9190	U+8349	# <cjk>
+0x9191	U+8358	# <cjk>
+0x9192	U+846C	# <cjk>
+0x9193	U+84BC	# <cjk>
+0x9194	U+85FB	# <cjk>
+0x9195	U+88C5	# <cjk>
+0x9196	U+8D70	# <cjk>
+0x9197	U+9001	# <cjk>
+0x9198	U+906D	# <cjk>
+0x9199	U+9397	# <cjk>
+0x919A	U+971C	# <cjk>
+0x919B	U+9A12	# <cjk>
+0x919C	U+50CF	# <cjk>
+0x919D	U+5897	# <cjk>
+0x919E	U+618E	# <cjk>
+0x919F	U+81D3	# <cjk>
+0x91A0	U+8535	# <cjk>
+0x91A1	U+8D08	# <cjk>
+0x91A2	U+9020	# <cjk>
+0x91A3	U+4FC3	# <cjk>
+0x91A4	U+5074	# <cjk>
+0x91A5	U+5247	# <cjk>
+0x91A6	U+5373	# <cjk>
+0x91A7	U+606F	# <cjk>
+0x91A8	U+6349	# <cjk>
+0x91A9	U+675F	# <cjk>
+0x91AA	U+6E2C	# <cjk>
+0x91AB	U+8DB3	# <cjk>
+0x91AC	U+901F	# <cjk>
+0x91AD	U+4FD7	# <cjk>
+0x91AE	U+5C5E	# <cjk>
+0x91AF	U+8CCA	# <cjk>
+0x91B0	U+65CF	# <cjk>
+0x91B1	U+7D9A	# <cjk>
+0x91B2	U+5352	# <cjk>
+0x91B3	U+8896	# <cjk>
+0x91B4	U+5176	# <cjk>
+0x91B5	U+63C3	# <cjk>
+0x91B6	U+5B58	# <cjk>
+0x91B7	U+5B6B	# <cjk>
+0x91B8	U+5C0A	# <cjk>
+0x91B9	U+640D	# <cjk>
+0x91BA	U+6751	# <cjk>
+0x91BB	U+905C	# <cjk>
+0x91BC	U+4ED6	# <cjk>
+0x91BD	U+591A	# <cjk>
+0x91BE	U+592A	# <cjk>
+0x91BF	U+6C70	# <cjk>
+0x91C0	U+8A51	# <cjk>
+0x91C1	U+553E	# <cjk>
+0x91C2	U+5815	# <cjk>
+0x91C3	U+59A5	# <cjk>
+0x91C4	U+60F0	# <cjk>
+0x91C5	U+6253	# <cjk>
+0x91C6	U+67C1	# <cjk>
+0x91C7	U+8235	# <cjk>
+0x91C8	U+6955	# <cjk>
+0x91C9	U+9640	# <cjk>
+0x91CA	U+99C4	# <cjk>
+0x91CB	U+9A28	# <cjk>
+0x91CC	U+4F53	# <cjk>
+0x91CD	U+5806	# <cjk>
+0x91CE	U+5BFE	# <cjk>
+0x91CF	U+8010	# <cjk>
+0x91D0	U+5CB1	# <cjk>
+0x91D1	U+5E2F	# <cjk>
+0x91D2	U+5F85	# <cjk>
+0x91D3	U+6020	# <cjk>
+0x91D4	U+614B	# <cjk>
+0x91D5	U+6234	# <cjk>
+0x91D6	U+66FF	# <cjk>
+0x91D7	U+6CF0	# <cjk>
+0x91D8	U+6EDE	# <cjk>
+0x91D9	U+80CE	# <cjk>
+0x91DA	U+817F	# <cjk>
+0x91DB	U+82D4	# <cjk>
+0x91DC	U+888B	# <cjk>
+0x91DD	U+8CB8	# <cjk>
+0x91DE	U+9000	# <cjk>
+0x91DF	U+902E	# <cjk>
+0x91E0	U+968A	# <cjk>
+0x91E1	U+9EDB	# <cjk>
+0x91E2	U+9BDB	# <cjk>
+0x91E3	U+4EE3	# <cjk>
+0x91E4	U+53F0	# <cjk>
+0x91E5	U+5927	# <cjk>
+0x91E6	U+7B2C	# <cjk>
+0x91E7	U+918D	# <cjk>
+0x91E8	U+984C	# <cjk>
+0x91E9	U+9DF9	# <cjk>
+0x91EA	U+6EDD	# <cjk>
+0x91EB	U+7027	# <cjk>
+0x91EC	U+5353	# <cjk>
+0x91ED	U+5544	# <cjk>
+0x91EE	U+5B85	# <cjk>
+0x91EF	U+6258	# <cjk>
+0x91F0	U+629E	# <cjk>
+0x91F1	U+62D3	# <cjk>
+0x91F2	U+6CA2	# <cjk>
+0x91F3	U+6FEF	# <cjk>
+0x91F4	U+7422	# <cjk>
+0x91F5	U+8A17	# <cjk>
+0x91F6	U+9438	# <cjk>
+0x91F7	U+6FC1	# <cjk>
+0x91F8	U+8AFE	# <cjk>
+0x91F9	U+8338	# <cjk>
+0x91FA	U+51E7	# <cjk>
+0x91FB	U+86F8	# <cjk>
+0x91FC	U+53EA	# <cjk>
+0x9240	U+53E9	# <cjk>
+0x9241	U+4F46	# <cjk>
+0x9242	U+9054	# <cjk>
+0x9243	U+8FB0	# <cjk>
+0x9244	U+596A	# <cjk>
+0x9245	U+8131	# <cjk>
+0x9246	U+5DFD	# <cjk>
+0x9247	U+7AEA	# <cjk>
+0x9248	U+8FBF	# <cjk>
+0x9249	U+68DA	# <cjk>
+0x924A	U+8C37	# <cjk>
+0x924B	U+72F8	# <cjk>
+0x924C	U+9C48	# <cjk>
+0x924D	U+6A3D	# <cjk>
+0x924E	U+8AB0	# <cjk>
+0x924F	U+4E39	# <cjk>
+0x9250	U+5358	# <cjk>
+0x9251	U+5606	# <cjk>
+0x9252	U+5766	# <cjk>
+0x9253	U+62C5	# <cjk>
+0x9254	U+63A2	# <cjk>
+0x9255	U+65E6	# <cjk>
+0x9256	U+6B4E	# <cjk>
+0x9257	U+6DE1	# <cjk>
+0x9258	U+6E5B	# <cjk>
+0x9259	U+70AD	# <cjk>
+0x925A	U+77ED	# <cjk>
+0x925B	U+7AEF	# <cjk>
+0x925C	U+7BAA	# <cjk>
+0x925D	U+7DBB	# <cjk>
+0x925E	U+803D	# <cjk>
+0x925F	U+80C6	# <cjk>
+0x9260	U+86CB	# <cjk>
+0x9261	U+8A95	# <cjk>
+0x9262	U+935B	# <cjk>
+0x9263	U+56E3	# <cjk>
+0x9264	U+58C7	# <cjk>
+0x9265	U+5F3E	# <cjk>
+0x9266	U+65AD	# <cjk>
+0x9267	U+6696	# <cjk>
+0x9268	U+6A80	# <cjk>
+0x9269	U+6BB5	# <cjk>
+0x926A	U+7537	# <cjk>
+0x926B	U+8AC7	# <cjk>
+0x926C	U+5024	# <cjk>
+0x926D	U+77E5	# <cjk>
+0x926E	U+5730	# <cjk>
+0x926F	U+5F1B	# <cjk>
+0x9270	U+6065	# <cjk>
+0x9271	U+667A	# <cjk>
+0x9272	U+6C60	# <cjk>
+0x9273	U+75F4	# <cjk>
+0x9274	U+7A1A	# <cjk>
+0x9275	U+7F6E	# <cjk>
+0x9276	U+81F4	# <cjk>
+0x9277	U+8718	# <cjk>
+0x9278	U+9045	# <cjk>
+0x9279	U+99B3	# <cjk>
+0x927A	U+7BC9	# <cjk>
+0x927B	U+755C	# <cjk>
+0x927C	U+7AF9	# <cjk>
+0x927D	U+7B51	# <cjk>
+0x927E	U+84C4	# <cjk>
+0x9280	U+9010	# <cjk>
+0x9281	U+79E9	# <cjk>
+0x9282	U+7A92	# <cjk>
+0x9283	U+8336	# <cjk>
+0x9284	U+5AE1	# <cjk>
+0x9285	U+7740	# <cjk>
+0x9286	U+4E2D	# <cjk>
+0x9287	U+4EF2	# <cjk>
+0x9288	U+5B99	# <cjk>
+0x9289	U+5FE0	# <cjk>
+0x928A	U+62BD	# <cjk>
+0x928B	U+663C	# <cjk>
+0x928C	U+67F1	# <cjk>
+0x928D	U+6CE8	# <cjk>
+0x928E	U+866B	# <cjk>
+0x928F	U+8877	# <cjk>
+0x9290	U+8A3B	# <cjk>
+0x9291	U+914E	# <cjk>
+0x9292	U+92F3	# <cjk>
+0x9293	U+99D0	# <cjk>
+0x9294	U+6A17	# <cjk>
+0x9295	U+7026	# <cjk>
+0x9296	U+732A	# <cjk>
+0x9297	U+82E7	# <cjk>
+0x9298	U+8457	# <cjk>
+0x9299	U+8CAF	# <cjk>
+0x929A	U+4E01	# <cjk>
+0x929B	U+5146	# <cjk>
+0x929C	U+51CB	# <cjk>
+0x929D	U+558B	# <cjk>
+0x929E	U+5BF5	# <cjk>
+0x929F	U+5E16	# <cjk>
+0x92A0	U+5E33	# <cjk>
+0x92A1	U+5E81	# <cjk>
+0x92A2	U+5F14	# <cjk>
+0x92A3	U+5F35	# <cjk>
+0x92A4	U+5F6B	# <cjk>
+0x92A5	U+5FB4	# <cjk>
+0x92A6	U+61F2	# <cjk>
+0x92A7	U+6311	# <cjk>
+0x92A8	U+66A2	# <cjk>
+0x92A9	U+671D	# <cjk>
+0x92AA	U+6F6E	# <cjk>
+0x92AB	U+7252	# <cjk>
+0x92AC	U+753A	# <cjk>
+0x92AD	U+773A	# <cjk>
+0x92AE	U+8074	# <cjk>
+0x92AF	U+8139	# <cjk>
+0x92B0	U+8178	# <cjk>
+0x92B1	U+8776	# <cjk>
+0x92B2	U+8ABF	# <cjk>
+0x92B3	U+8ADC	# <cjk>
+0x92B4	U+8D85	# <cjk>
+0x92B5	U+8DF3	# <cjk>
+0x92B6	U+929A	# <cjk>
+0x92B7	U+9577	# <cjk>
+0x92B8	U+9802	# <cjk>
+0x92B9	U+9CE5	# <cjk>
+0x92BA	U+52C5	# <cjk>
+0x92BB	U+6357	# <cjk>
+0x92BC	U+76F4	# <cjk>
+0x92BD	U+6715	# <cjk>
+0x92BE	U+6C88	# <cjk>
+0x92BF	U+73CD	# <cjk>
+0x92C0	U+8CC3	# <cjk>
+0x92C1	U+93AE	# <cjk>
+0x92C2	U+9673	# <cjk>
+0x92C3	U+6D25	# <cjk>
+0x92C4	U+589C	# <cjk>
+0x92C5	U+690E	# <cjk>
+0x92C6	U+69CC	# <cjk>
+0x92C7	U+8FFD	# <cjk>
+0x92C8	U+939A	# <cjk>
+0x92C9	U+75DB	# <cjk>
+0x92CA	U+901A	# <cjk>
+0x92CB	U+585A	# <cjk>
+0x92CC	U+6802	# <cjk>
+0x92CD	U+63B4	# <cjk>
+0x92CE	U+69FB	# <cjk>
+0x92CF	U+4F43	# <cjk>
+0x92D0	U+6F2C	# <cjk>
+0x92D1	U+67D8	# <cjk>
+0x92D2	U+8FBB	# <cjk>
+0x92D3	U+8526	# <cjk>
+0x92D4	U+7DB4	# <cjk>
+0x92D5	U+9354	# <cjk>
+0x92D6	U+693F	# <cjk>
+0x92D7	U+6F70	# <cjk>
+0x92D8	U+576A	# <cjk>
+0x92D9	U+58F7	# <cjk>
+0x92DA	U+5B2C	# <cjk>
+0x92DB	U+7D2C	# <cjk>
+0x92DC	U+722A	# <cjk>
+0x92DD	U+540A	# <cjk>
+0x92DE	U+91E3	# <cjk>
+0x92DF	U+9DB4	# <cjk>
+0x92E0	U+4EAD	# <cjk>
+0x92E1	U+4F4E	# <cjk>
+0x92E2	U+505C	# <cjk>
+0x92E3	U+5075	# <cjk>
+0x92E4	U+5243	# <cjk>
+0x92E5	U+8C9E	# <cjk>
+0x92E6	U+5448	# <cjk>
+0x92E7	U+5824	# <cjk>
+0x92E8	U+5B9A	# <cjk>
+0x92E9	U+5E1D	# <cjk>
+0x92EA	U+5E95	# <cjk>
+0x92EB	U+5EAD	# <cjk>
+0x92EC	U+5EF7	# <cjk>
+0x92ED	U+5F1F	# <cjk>
+0x92EE	U+608C	# <cjk>
+0x92EF	U+62B5	# <cjk>
+0x92F0	U+633A	# <cjk>
+0x92F1	U+63D0	# <cjk>
+0x92F2	U+68AF	# <cjk>
+0x92F3	U+6C40	# <cjk>
+0x92F4	U+7887	# <cjk>
+0x92F5	U+798E	# <cjk>
+0x92F6	U+7A0B	# <cjk>
+0x92F7	U+7DE0	# <cjk>
+0x92F8	U+8247	# <cjk>
+0x92F9	U+8A02	# <cjk>
+0x92FA	U+8AE6	# <cjk>
+0x92FB	U+8E44	# <cjk>
+0x92FC	U+9013	# <cjk>
+0x9340	U+90B8	# <cjk>
+0x9341	U+912D	# <cjk>
+0x9342	U+91D8	# <cjk>
+0x9343	U+9F0E	# <cjk>
+0x9344	U+6CE5	# <cjk>
+0x9345	U+6458	# <cjk>
+0x9346	U+64E2	# <cjk>
+0x9347	U+6575	# <cjk>
+0x9348	U+6EF4	# <cjk>
+0x9349	U+7684	# <cjk>
+0x934A	U+7B1B	# <cjk>
+0x934B	U+9069	# <cjk>
+0x934C	U+93D1	# <cjk>
+0x934D	U+6EBA	# <cjk>
+0x934E	U+54F2	# <cjk>
+0x934F	U+5FB9	# <cjk>
+0x9350	U+64A4	# <cjk>
+0x9351	U+8F4D	# <cjk>
+0x9352	U+8FED	# <cjk>
+0x9353	U+9244	# <cjk>
+0x9354	U+5178	# <cjk>
+0x9355	U+586B	# <cjk>
+0x9356	U+5929	# <cjk>
+0x9357	U+5C55	# <cjk>
+0x9358	U+5E97	# <cjk>
+0x9359	U+6DFB	# <cjk>
+0x935A	U+7E8F	# <cjk>
+0x935B	U+751C	# <cjk>
+0x935C	U+8CBC	# <cjk>
+0x935D	U+8EE2	# <cjk>
+0x935E	U+985B	# <cjk>
+0x935F	U+70B9	# <cjk>
+0x9360	U+4F1D	# <cjk>
+0x9361	U+6BBF	# <cjk>
+0x9362	U+6FB1	# <cjk>
+0x9363	U+7530	# <cjk>
+0x9364	U+96FB	# <cjk>
+0x9365	U+514E	# <cjk>
+0x9366	U+5410	# <cjk>
+0x9367	U+5835	# <cjk>
+0x9368	U+5857	# <cjk>
+0x9369	U+59AC	# <cjk>
+0x936A	U+5C60	# <cjk>
+0x936B	U+5F92	# <cjk>
+0x936C	U+6597	# <cjk>
+0x936D	U+675C	# <cjk>
+0x936E	U+6E21	# <cjk>
+0x936F	U+767B	# <cjk>
+0x9370	U+83DF	# <cjk>
+0x9371	U+8CED	# <cjk>
+0x9372	U+9014	# <cjk>
+0x9373	U+90FD	# <cjk>
+0x9374	U+934D	# <cjk>
+0x9375	U+7825	# <cjk>
+0x9376	U+783A	# <cjk>
+0x9377	U+52AA	# <cjk>
+0x9378	U+5EA6	# <cjk>
+0x9379	U+571F	# <cjk>
+0x937A	U+5974	# <cjk>
+0x937B	U+6012	# <cjk>
+0x937C	U+5012	# <cjk>
+0x937D	U+515A	# <cjk>
+0x937E	U+51AC	# <cjk>
+0x9380	U+51CD	# <cjk>
+0x9381	U+5200	# <cjk>
+0x9382	U+5510	# <cjk>
+0x9383	U+5854	# <cjk>
+0x9384	U+5858	# <cjk>
+0x9385	U+5957	# <cjk>
+0x9386	U+5B95	# <cjk>
+0x9387	U+5CF6	# <cjk>
+0x9388	U+5D8B	# <cjk>
+0x9389	U+60BC	# <cjk>
+0x938A	U+6295	# <cjk>
+0x938B	U+642D	# <cjk>
+0x938C	U+6771	# <cjk>
+0x938D	U+6843	# <cjk>
+0x938E	U+68BC	# <cjk>
+0x938F	U+68DF	# <cjk>
+0x9390	U+76D7	# <cjk>
+0x9391	U+6DD8	# <cjk>
+0x9392	U+6E6F	# <cjk>
+0x9393	U+6D9B	# <cjk>
+0x9394	U+706F	# <cjk>
+0x9395	U+71C8	# <cjk>
+0x9396	U+5F53	# <cjk>
+0x9397	U+75D8	# <cjk>
+0x9398	U+7977	# <cjk>
+0x9399	U+7B49	# <cjk>
+0x939A	U+7B54	# <cjk>
+0x939B	U+7B52	# <cjk>
+0x939C	U+7CD6	# <cjk>
+0x939D	U+7D71	# <cjk>
+0x939E	U+5230	# <cjk>
+0x939F	U+8463	# <cjk>
+0x93A0	U+8569	# <cjk>
+0x93A1	U+85E4	# <cjk>
+0x93A2	U+8A0E	# <cjk>
+0x93A3	U+8B04	# <cjk>
+0x93A4	U+8C46	# <cjk>
+0x93A5	U+8E0F	# <cjk>
+0x93A6	U+9003	# <cjk>
+0x93A7	U+900F	# <cjk>
+0x93A8	U+9419	# <cjk>
+0x93A9	U+9676	# <cjk>
+0x93AA	U+982D	# <cjk>
+0x93AB	U+9A30	# <cjk>
+0x93AC	U+95D8	# <cjk>
+0x93AD	U+50CD	# <cjk>
+0x93AE	U+52D5	# <cjk>
+0x93AF	U+540C	# <cjk>
+0x93B0	U+5802	# <cjk>
+0x93B1	U+5C0E	# <cjk>
+0x93B2	U+61A7	# <cjk>
+0x93B3	U+649E	# <cjk>
+0x93B4	U+6D1E	# <cjk>
+0x93B5	U+77B3	# <cjk>
+0x93B6	U+7AE5	# <cjk>
+0x93B7	U+80F4	# <cjk>
+0x93B8	U+8404	# <cjk>
+0x93B9	U+9053	# <cjk>
+0x93BA	U+9285	# <cjk>
+0x93BB	U+5CE0	# <cjk>
+0x93BC	U+9D07	# <cjk>
+0x93BD	U+533F	# <cjk>
+0x93BE	U+5F97	# <cjk>
+0x93BF	U+5FB3	# <cjk>
+0x93C0	U+6D9C	# <cjk>
+0x93C1	U+7279	# <cjk>
+0x93C2	U+7763	# <cjk>
+0x93C3	U+79BF	# <cjk>
+0x93C4	U+7BE4	# <cjk>
+0x93C5	U+6BD2	# <cjk>
+0x93C6	U+72EC	# <cjk>
+0x93C7	U+8AAD	# <cjk>
+0x93C8	U+6803	# <cjk>
+0x93C9	U+6A61	# <cjk>
+0x93CA	U+51F8	# <cjk>
+0x93CB	U+7A81	# <cjk>
+0x93CC	U+6934	# <cjk>
+0x93CD	U+5C4A	# <cjk>
+0x93CE	U+9CF6	# <cjk>
+0x93CF	U+82EB	# <cjk>
+0x93D0	U+5BC5	# <cjk>
+0x93D1	U+9149	# <cjk>
+0x93D2	U+701E	# <cjk>
+0x93D3	U+5678	# <cjk>
+0x93D4	U+5C6F	# <cjk>
+0x93D5	U+60C7	# <cjk>
+0x93D6	U+6566	# <cjk>
+0x93D7	U+6C8C	# <cjk>
+0x93D8	U+8C5A	# <cjk>
+0x93D9	U+9041	# <cjk>
+0x93DA	U+9813	# <cjk>
+0x93DB	U+5451	# <cjk>
+0x93DC	U+66C7	# <cjk>
+0x93DD	U+920D	# <cjk>
+0x93DE	U+5948	# <cjk>
+0x93DF	U+90A3	# <cjk>
+0x93E0	U+5185	# <cjk>
+0x93E1	U+4E4D	# <cjk>
+0x93E2	U+51EA	# <cjk>
+0x93E3	U+8599	# <cjk>
+0x93E4	U+8B0E	# <cjk>
+0x93E5	U+7058	# <cjk>
+0x93E6	U+637A	# <cjk>
+0x93E7	U+934B	# <cjk>
+0x93E8	U+6962	# <cjk>
+0x93E9	U+99B4	# <cjk>
+0x93EA	U+7E04	# <cjk>
+0x93EB	U+7577	# <cjk>
+0x93EC	U+5357	# <cjk>
+0x93ED	U+6960	# <cjk>
+0x93EE	U+8EDF	# <cjk>
+0x93EF	U+96E3	# <cjk>
+0x93F0	U+6C5D	# <cjk>
+0x93F1	U+4E8C	# <cjk>
+0x93F2	U+5C3C	# <cjk>
+0x93F3	U+5F10	# <cjk>
+0x93F4	U+8FE9	# <cjk>
+0x93F5	U+5302	# <cjk>
+0x93F6	U+8CD1	# <cjk>
+0x93F7	U+8089	# <cjk>
+0x93F8	U+8679	# <cjk>
+0x93F9	U+5EFF	# <cjk>
+0x93FA	U+65E5	# <cjk>
+0x93FB	U+4E73	# <cjk>
+0x93FC	U+5165	# <cjk>
+0x9440	U+5982	# <cjk>
+0x9441	U+5C3F	# <cjk>
+0x9442	U+97EE	# <cjk>
+0x9443	U+4EFB	# <cjk>
+0x9444	U+598A	# <cjk>
+0x9445	U+5FCD	# <cjk>
+0x9446	U+8A8D	# <cjk>
+0x9447	U+6FE1	# <cjk>
+0x9448	U+79B0	# <cjk>
+0x9449	U+7962	# <cjk>
+0x944A	U+5BE7	# <cjk>
+0x944B	U+8471	# <cjk>
+0x944C	U+732B	# <cjk>
+0x944D	U+71B1	# <cjk>
+0x944E	U+5E74	# <cjk>
+0x944F	U+5FF5	# <cjk>
+0x9450	U+637B	# <cjk>
+0x9451	U+649A	# <cjk>
+0x9452	U+71C3	# <cjk>
+0x9453	U+7C98	# <cjk>
+0x9454	U+4E43	# <cjk>
+0x9455	U+5EFC	# <cjk>
+0x9456	U+4E4B	# <cjk>
+0x9457	U+57DC	# <cjk>
+0x9458	U+56A2	# <cjk>
+0x9459	U+60A9	# <cjk>
+0x945A	U+6FC3	# <cjk>
+0x945B	U+7D0D	# <cjk>
+0x945C	U+80FD	# <cjk>
+0x945D	U+8133	# <cjk>
+0x945E	U+81BF	# <cjk>
+0x945F	U+8FB2	# <cjk>
+0x9460	U+8997	# <cjk>
+0x9461	U+86A4	# <cjk>
+0x9462	U+5DF4	# <cjk>
+0x9463	U+628A	# <cjk>
+0x9464	U+64AD	# <cjk>
+0x9465	U+8987	# <cjk>
+0x9466	U+6777	# <cjk>
+0x9467	U+6CE2	# <cjk>
+0x9468	U+6D3E	# <cjk>
+0x9469	U+7436	# <cjk>
+0x946A	U+7834	# <cjk>
+0x946B	U+5A46	# <cjk>
+0x946C	U+7F75	# <cjk>
+0x946D	U+82AD	# <cjk>
+0x946E	U+99AC	# <cjk>
+0x946F	U+4FF3	# <cjk>
+0x9470	U+5EC3	# <cjk>
+0x9471	U+62DD	# <cjk>
+0x9472	U+6392	# <cjk>
+0x9473	U+6557	# <cjk>
+0x9474	U+676F	# <cjk>
+0x9475	U+76C3	# <cjk>
+0x9476	U+724C	# <cjk>
+0x9477	U+80CC	# <cjk>
+0x9478	U+80BA	# <cjk>
+0x9479	U+8F29	# <cjk>
+0x947A	U+914D	# <cjk>
+0x947B	U+500D	# <cjk>
+0x947C	U+57F9	# <cjk>
+0x947D	U+5A92	# <cjk>
+0x947E	U+6885	# <cjk>
+0x9480	U+6973	# <cjk>
+0x9481	U+7164	# <cjk>
+0x9482	U+72FD	# <cjk>
+0x9483	U+8CB7	# <cjk>
+0x9484	U+58F2	# <cjk>
+0x9485	U+8CE0	# <cjk>
+0x9486	U+966A	# <cjk>
+0x9487	U+9019	# <cjk>
+0x9488	U+877F	# <cjk>
+0x9489	U+79E4	# <cjk>
+0x948A	U+77E7	# <cjk>
+0x948B	U+8429	# <cjk>
+0x948C	U+4F2F	# <cjk>
+0x948D	U+5265	# <cjk>
+0x948E	U+535A	# <cjk>
+0x948F	U+62CD	# <cjk>
+0x9490	U+67CF	# <cjk>
+0x9491	U+6CCA	# <cjk>
+0x9492	U+767D	# <cjk>
+0x9493	U+7B94	# <cjk>
+0x9494	U+7C95	# <cjk>
+0x9495	U+8236	# <cjk>
+0x9496	U+8584	# <cjk>
+0x9497	U+8FEB	# <cjk>
+0x9498	U+66DD	# <cjk>
+0x9499	U+6F20	# <cjk>
+0x949A	U+7206	# <cjk>
+0x949B	U+7E1B	# <cjk>
+0x949C	U+83AB	# <cjk>
+0x949D	U+99C1	# <cjk>
+0x949E	U+9EA6	# <cjk>
+0x949F	U+51FD	# <cjk>
+0x94A0	U+7BB1	# <cjk>
+0x94A1	U+7872	# <cjk>
+0x94A2	U+7BB8	# <cjk>
+0x94A3	U+8087	# <cjk>
+0x94A4	U+7B48	# <cjk>
+0x94A5	U+6AE8	# <cjk>
+0x94A6	U+5E61	# <cjk>
+0x94A7	U+808C	# <cjk>
+0x94A8	U+7551	# <cjk>
+0x94A9	U+7560	# <cjk>
+0x94AA	U+516B	# <cjk>
+0x94AB	U+9262	# <cjk>
+0x94AC	U+6E8C	# <cjk>
+0x94AD	U+767A	# <cjk>
+0x94AE	U+9197	# <cjk>
+0x94AF	U+9AEA	# <cjk>
+0x94B0	U+4F10	# <cjk>
+0x94B1	U+7F70	# <cjk>
+0x94B2	U+629C	# <cjk>
+0x94B3	U+7B4F	# <cjk>
+0x94B4	U+95A5	# <cjk>
+0x94B5	U+9CE9	# <cjk>
+0x94B6	U+567A	# <cjk>
+0x94B7	U+5859	# <cjk>
+0x94B8	U+86E4	# <cjk>
+0x94B9	U+96BC	# <cjk>
+0x94BA	U+4F34	# <cjk>
+0x94BB	U+5224	# <cjk>
+0x94BC	U+534A	# <cjk>
+0x94BD	U+53CD	# <cjk>
+0x94BE	U+53DB	# <cjk>
+0x94BF	U+5E06	# <cjk>
+0x94C0	U+642C	# <cjk>
+0x94C1	U+6591	# <cjk>
+0x94C2	U+677F	# <cjk>
+0x94C3	U+6C3E	# <cjk>
+0x94C4	U+6C4E	# <cjk>
+0x94C5	U+7248	# <cjk>
+0x94C6	U+72AF	# <cjk>
+0x94C7	U+73ED	# <cjk>
+0x94C8	U+7554	# <cjk>
+0x94C9	U+7E41	# <cjk>
+0x94CA	U+822C	# <cjk>
+0x94CB	U+85E9	# <cjk>
+0x94CC	U+8CA9	# <cjk>
+0x94CD	U+7BC4	# <cjk>
+0x94CE	U+91C6	# <cjk>
+0x94CF	U+7169	# <cjk>
+0x94D0	U+9812	# <cjk>
+0x94D1	U+98EF	# <cjk>
+0x94D2	U+633D	# <cjk>
+0x94D3	U+6669	# <cjk>
+0x94D4	U+756A	# <cjk>
+0x94D5	U+76E4	# <cjk>
+0x94D6	U+78D0	# <cjk>
+0x94D7	U+8543	# <cjk>
+0x94D8	U+86EE	# <cjk>
+0x94D9	U+532A	# <cjk>
+0x94DA	U+5351	# <cjk>
+0x94DB	U+5426	# <cjk>
+0x94DC	U+5983	# <cjk>
+0x94DD	U+5E87	# <cjk>
+0x94DE	U+5F7C	# <cjk>
+0x94DF	U+60B2	# <cjk>
+0x94E0	U+6249	# <cjk>
+0x94E1	U+6279	# <cjk>
+0x94E2	U+62AB	# <cjk>
+0x94E3	U+6590	# <cjk>
+0x94E4	U+6BD4	# <cjk>
+0x94E5	U+6CCC	# <cjk>
+0x94E6	U+75B2	# <cjk>
+0x94E7	U+76AE	# <cjk>
+0x94E8	U+7891	# <cjk>
+0x94E9	U+79D8	# <cjk>
+0x94EA	U+7DCB	# <cjk>
+0x94EB	U+7F77	# <cjk>
+0x94EC	U+80A5	# <cjk>
+0x94ED	U+88AB	# <cjk>
+0x94EE	U+8AB9	# <cjk>
+0x94EF	U+8CBB	# <cjk>
+0x94F0	U+907F	# <cjk>
+0x94F1	U+975E	# <cjk>
+0x94F2	U+98DB	# <cjk>
+0x94F3	U+6A0B	# <cjk>
+0x94F4	U+7C38	# <cjk>
+0x94F5	U+5099	# <cjk>
+0x94F6	U+5C3E	# <cjk>
+0x94F7	U+5FAE	# <cjk>
+0x94F8	U+6787	# <cjk>
+0x94F9	U+6BD8	# <cjk>
+0x94FA	U+7435	# <cjk>
+0x94FB	U+7709	# <cjk>
+0x94FC	U+7F8E	# <cjk>
+0x9540	U+9F3B	# <cjk>
+0x9541	U+67CA	# <cjk>
+0x9542	U+7A17	# <cjk>
+0x9543	U+5339	# <cjk>
+0x9544	U+758B	# <cjk>
+0x9545	U+9AED	# <cjk>
+0x9546	U+5F66	# <cjk>
+0x9547	U+819D	# <cjk>
+0x9548	U+83F1	# <cjk>
+0x9549	U+8098	# <cjk>
+0x954A	U+5F3C	# <cjk>
+0x954B	U+5FC5	# <cjk>
+0x954C	U+7562	# <cjk>
+0x954D	U+7B46	# <cjk>
+0x954E	U+903C	# <cjk>
+0x954F	U+6867	# <cjk>
+0x9550	U+59EB	# <cjk>
+0x9551	U+5A9B	# <cjk>
+0x9552	U+7D10	# <cjk>
+0x9553	U+767E	# <cjk>
+0x9554	U+8B2C	# <cjk>
+0x9555	U+4FF5	# <cjk>
+0x9556	U+5F6A	# <cjk>
+0x9557	U+6A19	# <cjk>
+0x9558	U+6C37	# <cjk>
+0x9559	U+6F02	# <cjk>
+0x955A	U+74E2	# <cjk>
+0x955B	U+7968	# <cjk>
+0x955C	U+8868	# <cjk>
+0x955D	U+8A55	# <cjk>
+0x955E	U+8C79	# <cjk>
+0x955F	U+5EDF	# <cjk>
+0x9560	U+63CF	# <cjk>
+0x9561	U+75C5	# <cjk>
+0x9562	U+79D2	# <cjk>
+0x9563	U+82D7	# <cjk>
+0x9564	U+9328	# <cjk>
+0x9565	U+92F2	# <cjk>
+0x9566	U+849C	# <cjk>
+0x9567	U+86ED	# <cjk>
+0x9568	U+9C2D	# <cjk>
+0x9569	U+54C1	# <cjk>
+0x956A	U+5F6C	# <cjk>
+0x956B	U+658C	# <cjk>
+0x956C	U+6D5C	# <cjk>
+0x956D	U+7015	# <cjk>
+0x956E	U+8CA7	# <cjk>
+0x956F	U+8CD3	# <cjk>
+0x9570	U+983B	# <cjk>
+0x9571	U+654F	# <cjk>
+0x9572	U+74F6	# <cjk>
+0x9573	U+4E0D	# <cjk>
+0x9574	U+4ED8	# <cjk>
+0x9575	U+57E0	# <cjk>
+0x9576	U+592B	# <cjk>
+0x9577	U+5A66	# <cjk>
+0x9578	U+5BCC	# <cjk>
+0x9579	U+51A8	# <cjk>
+0x957A	U+5E03	# <cjk>
+0x957B	U+5E9C	# <cjk>
+0x957C	U+6016	# <cjk>
+0x957D	U+6276	# <cjk>
+0x957E	U+6577	# <cjk>
+0x9580	U+65A7	# <cjk>
+0x9581	U+666E	# <cjk>
+0x9582	U+6D6E	# <cjk>
+0x9583	U+7236	# <cjk>
+0x9584	U+7B26	# <cjk>
+0x9585	U+8150	# <cjk>
+0x9586	U+819A	# <cjk>
+0x9587	U+8299	# <cjk>
+0x9588	U+8B5C	# <cjk>
+0x9589	U+8CA0	# <cjk>
+0x958A	U+8CE6	# <cjk>
+0x958B	U+8D74	# <cjk>
+0x958C	U+961C	# <cjk>
+0x958D	U+9644	# <cjk>
+0x958E	U+4FAE	# <cjk>
+0x958F	U+64AB	# <cjk>
+0x9590	U+6B66	# <cjk>
+0x9591	U+821E	# <cjk>
+0x9592	U+8461	# <cjk>
+0x9593	U+856A	# <cjk>
+0x9594	U+90E8	# <cjk>
+0x9595	U+5C01	# <cjk>
+0x9596	U+6953	# <cjk>
+0x9597	U+98A8	# <cjk>
+0x9598	U+847A	# <cjk>
+0x9599	U+8557	# <cjk>
+0x959A	U+4F0F	# <cjk>
+0x959B	U+526F	# <cjk>
+0x959C	U+5FA9	# <cjk>
+0x959D	U+5E45	# <cjk>
+0x959E	U+670D	# <cjk>
+0x959F	U+798F	# <cjk>
+0x95A0	U+8179	# <cjk>
+0x95A1	U+8907	# <cjk>
+0x95A2	U+8986	# <cjk>
+0x95A3	U+6DF5	# <cjk>
+0x95A4	U+5F17	# <cjk>
+0x95A5	U+6255	# <cjk>
+0x95A6	U+6CB8	# <cjk>
+0x95A7	U+4ECF	# <cjk>
+0x95A8	U+7269	# <cjk>
+0x95A9	U+9B92	# <cjk>
+0x95AA	U+5206	# <cjk>
+0x95AB	U+543B	# <cjk>
+0x95AC	U+5674	# <cjk>
+0x95AD	U+58B3	# <cjk>
+0x95AE	U+61A4	# <cjk>
+0x95AF	U+626E	# <cjk>
+0x95B0	U+711A	# <cjk>
+0x95B1	U+596E	# <cjk>
+0x95B2	U+7C89	# <cjk>
+0x95B3	U+7CDE	# <cjk>
+0x95B4	U+7D1B	# <cjk>
+0x95B5	U+96F0	# <cjk>
+0x95B6	U+6587	# <cjk>
+0x95B7	U+805E	# <cjk>
+0x95B8	U+4E19	# <cjk>
+0x95B9	U+4F75	# <cjk>
+0x95BA	U+5175	# <cjk>
+0x95BB	U+5840	# <cjk>
+0x95BC	U+5E63	# <cjk>
+0x95BD	U+5E73	# <cjk>
+0x95BE	U+5F0A	# <cjk>
+0x95BF	U+67C4	# <cjk>
+0x95C0	U+4E26	# <cjk>
+0x95C1	U+853D	# <cjk>
+0x95C2	U+9589	# <cjk>
+0x95C3	U+965B	# <cjk>
+0x95C4	U+7C73	# <cjk>
+0x95C5	U+9801	# <cjk>
+0x95C6	U+50FB	# <cjk>
+0x95C7	U+58C1	# <cjk>
+0x95C8	U+7656	# <cjk>
+0x95C9	U+78A7	# <cjk>
+0x95CA	U+5225	# <cjk>
+0x95CB	U+77A5	# <cjk>
+0x95CC	U+8511	# <cjk>
+0x95CD	U+7B86	# <cjk>
+0x95CE	U+504F	# <cjk>
+0x95CF	U+5909	# <cjk>
+0x95D0	U+7247	# <cjk>
+0x95D1	U+7BC7	# <cjk>
+0x95D2	U+7DE8	# <cjk>
+0x95D3	U+8FBA	# <cjk>
+0x95D4	U+8FD4	# <cjk>
+0x95D5	U+904D	# <cjk>
+0x95D6	U+4FBF	# <cjk>
+0x95D7	U+52C9	# <cjk>
+0x95D8	U+5A29	# <cjk>
+0x95D9	U+5F01	# <cjk>
+0x95DA	U+97AD	# <cjk>
+0x95DB	U+4FDD	# <cjk>
+0x95DC	U+8217	# <cjk>
+0x95DD	U+92EA	# <cjk>
+0x95DE	U+5703	# <cjk>
+0x95DF	U+6355	# <cjk>
+0x95E0	U+6B69	# <cjk>
+0x95E1	U+752B	# <cjk>
+0x95E2	U+88DC	# <cjk>
+0x95E3	U+8F14	# <cjk>
+0x95E4	U+7A42	# <cjk>
+0x95E5	U+52DF	# <cjk>
+0x95E6	U+5893	# <cjk>
+0x95E7	U+6155	# <cjk>
+0x95E8	U+620A	# <cjk>
+0x95E9	U+66AE	# <cjk>
+0x95EA	U+6BCD	# <cjk>
+0x95EB	U+7C3F	# <cjk>
+0x95EC	U+83E9	# <cjk>
+0x95ED	U+5023	# <cjk>
+0x95EE	U+4FF8	# <cjk>
+0x95EF	U+5305	# <cjk>
+0x95F0	U+5446	# <cjk>
+0x95F1	U+5831	# <cjk>
+0x95F2	U+5949	# <cjk>
+0x95F3	U+5B9D	# <cjk>
+0x95F4	U+5CF0	# <cjk>
+0x95F5	U+5CEF	# <cjk>
+0x95F6	U+5D29	# <cjk>
+0x95F7	U+5E96	# <cjk>
+0x95F8	U+62B1	# <cjk>
+0x95F9	U+6367	# <cjk>
+0x95FA	U+653E	# <cjk>
+0x95FB	U+65B9	# <cjk>
+0x95FC	U+670B	# <cjk>
+0x9640	U+6CD5	# <cjk>
+0x9641	U+6CE1	# <cjk>
+0x9642	U+70F9	# <cjk>
+0x9643	U+7832	# <cjk>
+0x9644	U+7E2B	# <cjk>
+0x9645	U+80DE	# <cjk>
+0x9646	U+82B3	# <cjk>
+0x9647	U+840C	# <cjk>
+0x9648	U+84EC	# <cjk>
+0x9649	U+8702	# <cjk>
+0x964A	U+8912	# <cjk>
+0x964B	U+8A2A	# <cjk>
+0x964C	U+8C4A	# <cjk>
+0x964D	U+90A6	# <cjk>
+0x964E	U+92D2	# <cjk>
+0x964F	U+98FD	# <cjk>
+0x9650	U+9CF3	# <cjk>
+0x9651	U+9D6C	# <cjk>
+0x9652	U+4E4F	# <cjk>
+0x9653	U+4EA1	# <cjk>
+0x9654	U+508D	# <cjk>
+0x9655	U+5256	# <cjk>
+0x9656	U+574A	# <cjk>
+0x9657	U+59A8	# <cjk>
+0x9658	U+5E3D	# <cjk>
+0x9659	U+5FD8	# <cjk>
+0x965A	U+5FD9	# <cjk>
+0x965B	U+623F	# <cjk>
+0x965C	U+66B4	# <cjk>
+0x965D	U+671B	# <cjk>
+0x965E	U+67D0	# <cjk>
+0x965F	U+68D2	# <cjk>
+0x9660	U+5192	# <cjk>
+0x9661	U+7D21	# <cjk>
+0x9662	U+80AA	# <cjk>
+0x9663	U+81A8	# <cjk>
+0x9664	U+8B00	# <cjk>
+0x9665	U+8C8C	# <cjk>
+0x9666	U+8CBF	# <cjk>
+0x9667	U+927E	# <cjk>
+0x9668	U+9632	# <cjk>
+0x9669	U+5420	# <cjk>
+0x966A	U+982C	# <cjk>
+0x966B	U+5317	# <cjk>
+0x966C	U+50D5	# <cjk>
+0x966D	U+535C	# <cjk>
+0x966E	U+58A8	# <cjk>
+0x966F	U+64B2	# <cjk>
+0x9670	U+6734	# <cjk>
+0x9671	U+7267	# <cjk>
+0x9672	U+7766	# <cjk>
+0x9673	U+7A46	# <cjk>
+0x9674	U+91E6	# <cjk>
+0x9675	U+52C3	# <cjk>
+0x9676	U+6CA1	# <cjk>
+0x9677	U+6B86	# <cjk>
+0x9678	U+5800	# <cjk>
+0x9679	U+5E4C	# <cjk>
+0x967A	U+5954	# <cjk>
+0x967B	U+672C	# <cjk>
+0x967C	U+7FFB	# <cjk>
+0x967D	U+51E1	# <cjk>
+0x967E	U+76C6	# <cjk>
+0x9680	U+6469	# <cjk>
+0x9681	U+78E8	# <cjk>
+0x9682	U+9B54	# <cjk>
+0x9683	U+9EBB	# <cjk>
+0x9684	U+57CB	# <cjk>
+0x9685	U+59B9	# <cjk>
+0x9686	U+6627	# <cjk>
+0x9687	U+679A	# <cjk>
+0x9688	U+6BCE	# <cjk>
+0x9689	U+54E9	# <cjk>
+0x968A	U+69D9	# <cjk>
+0x968B	U+5E55	# <cjk>
+0x968C	U+819C	# <cjk>
+0x968D	U+6795	# <cjk>
+0x968E	U+9BAA	# <cjk>
+0x968F	U+67FE	# <cjk>
+0x9690	U+9C52	# <cjk>
+0x9691	U+685D	# <cjk>
+0x9692	U+4EA6	# <cjk>
+0x9693	U+4FE3	# <cjk>
+0x9694	U+53C8	# <cjk>
+0x9695	U+62B9	# <cjk>
+0x9696	U+672B	# <cjk>
+0x9697	U+6CAB	# <cjk>
+0x9698	U+8FC4	# <cjk>
+0x9699	U+4FAD	# <cjk>
+0x969A	U+7E6D	# <cjk>
+0x969B	U+9EBF	# <cjk>
+0x969C	U+4E07	# <cjk>
+0x969D	U+6162	# <cjk>
+0x969E	U+6E80	# <cjk>
+0x969F	U+6F2B	# <cjk>
+0x96A0	U+8513	# <cjk>
+0x96A1	U+5473	# <cjk>
+0x96A2	U+672A	# <cjk>
+0x96A3	U+9B45	# <cjk>
+0x96A4	U+5DF3	# <cjk>
+0x96A5	U+7B95	# <cjk>
+0x96A6	U+5CAC	# <cjk>
+0x96A7	U+5BC6	# <cjk>
+0x96A8	U+871C	# <cjk>
+0x96A9	U+6E4A	# <cjk>
+0x96AA	U+84D1	# <cjk>
+0x96AB	U+7A14	# <cjk>
+0x96AC	U+8108	# <cjk>
+0x96AD	U+5999	# <cjk>
+0x96AE	U+7C8D	# <cjk>
+0x96AF	U+6C11	# <cjk>
+0x96B0	U+7720	# <cjk>
+0x96B1	U+52D9	# <cjk>
+0x96B2	U+5922	# <cjk>
+0x96B3	U+7121	# <cjk>
+0x96B4	U+725F	# <cjk>
+0x96B5	U+77DB	# <cjk>
+0x96B6	U+9727	# <cjk>
+0x96B7	U+9D61	# <cjk>
+0x96B8	U+690B	# <cjk>
+0x96B9	U+5A7F	# <cjk>
+0x96BA	U+5A18	# <cjk>
+0x96BB	U+51A5	# <cjk>
+0x96BC	U+540D	# <cjk>
+0x96BD	U+547D	# <cjk>
+0x96BE	U+660E	# <cjk>
+0x96BF	U+76DF	# <cjk>
+0x96C0	U+8FF7	# <cjk>
+0x96C1	U+9298	# <cjk>
+0x96C2	U+9CF4	# <cjk>
+0x96C3	U+59EA	# <cjk>
+0x96C4	U+725D	# <cjk>
+0x96C5	U+6EC5	# <cjk>
+0x96C6	U+514D	# <cjk>
+0x96C7	U+68C9	# <cjk>
+0x96C8	U+7DBF	# <cjk>
+0x96C9	U+7DEC	# <cjk>
+0x96CA	U+9762	# <cjk>
+0x96CB	U+9EBA	# <cjk>
+0x96CC	U+6478	# <cjk>
+0x96CD	U+6A21	# <cjk>
+0x96CE	U+8302	# <cjk>
+0x96CF	U+5984	# <cjk>
+0x96D0	U+5B5F	# <cjk>
+0x96D1	U+6BDB	# <cjk>
+0x96D2	U+731B	# <cjk>
+0x96D3	U+76F2	# <cjk>
+0x96D4	U+7DB2	# <cjk>
+0x96D5	U+8017	# <cjk>
+0x96D6	U+8499	# <cjk>
+0x96D7	U+5132	# <cjk>
+0x96D8	U+6728	# <cjk>
+0x96D9	U+9ED9	# <cjk>
+0x96DA	U+76EE	# <cjk>
+0x96DB	U+6762	# <cjk>
+0x96DC	U+52FF	# <cjk>
+0x96DD	U+9905	# <cjk>
+0x96DE	U+5C24	# <cjk>
+0x96DF	U+623B	# <cjk>
+0x96E0	U+7C7E	# <cjk>
+0x96E1	U+8CB0	# <cjk>
+0x96E2	U+554F	# <cjk>
+0x96E3	U+60B6	# <cjk>
+0x96E4	U+7D0B	# <cjk>
+0x96E5	U+9580	# <cjk>
+0x96E6	U+5301	# <cjk>
+0x96E7	U+4E5F	# <cjk>
+0x96E8	U+51B6	# <cjk>
+0x96E9	U+591C	# <cjk>
+0x96EA	U+723A	# <cjk>
+0x96EB	U+8036	# <cjk>
+0x96EC	U+91CE	# <cjk>
+0x96ED	U+5F25	# <cjk>
+0x96EE	U+77E2	# <cjk>
+0x96EF	U+5384	# <cjk>
+0x96F0	U+5F79	# <cjk>
+0x96F1	U+7D04	# <cjk>
+0x96F2	U+85AC	# <cjk>
+0x96F3	U+8A33	# <cjk>
+0x96F4	U+8E8D	# <cjk>
+0x96F5	U+9756	# <cjk>
+0x96F6	U+67F3	# <cjk>
+0x96F7	U+85AE	# <cjk>
+0x96F8	U+9453	# <cjk>
+0x96F9	U+6109	# <cjk>
+0x96FA	U+6108	# <cjk>
+0x96FB	U+6CB9	# <cjk>
+0x96FC	U+7652	# <cjk>
+0x9740	U+8AED	# <cjk>
+0x9741	U+8F38	# <cjk>
+0x9742	U+552F	# <cjk>
+0x9743	U+4F51	# <cjk>
+0x9744	U+512A	# <cjk>
+0x9745	U+52C7	# <cjk>
+0x9746	U+53CB	# <cjk>
+0x9747	U+5BA5	# <cjk>
+0x9748	U+5E7D	# <cjk>
+0x9749	U+60A0	# <cjk>
+0x974A	U+6182	# <cjk>
+0x974B	U+63D6	# <cjk>
+0x974C	U+6709	# <cjk>
+0x974D	U+67DA	# <cjk>
+0x974E	U+6E67	# <cjk>
+0x974F	U+6D8C	# <cjk>
+0x9750	U+7336	# <cjk>
+0x9751	U+7337	# <cjk>
+0x9752	U+7531	# <cjk>
+0x9753	U+7950	# <cjk>
+0x9754	U+88D5	# <cjk>
+0x9755	U+8A98	# <cjk>
+0x9756	U+904A	# <cjk>
+0x9757	U+9091	# <cjk>
+0x9758	U+90F5	# <cjk>
+0x9759	U+96C4	# <cjk>
+0x975A	U+878D	# <cjk>
+0x975B	U+5915	# <cjk>
+0x975C	U+4E88	# <cjk>
+0x975D	U+4F59	# <cjk>
+0x975E	U+4E0E	# <cjk>
+0x975F	U+8A89	# <cjk>
+0x9760	U+8F3F	# <cjk>
+0x9761	U+9810	# <cjk>
+0x9762	U+50AD	# <cjk>
+0x9763	U+5E7C	# <cjk>
+0x9764	U+5996	# <cjk>
+0x9765	U+5BB9	# <cjk>
+0x9766	U+5EB8	# <cjk>
+0x9767	U+63DA	# <cjk>
+0x9768	U+63FA	# <cjk>
+0x9769	U+64C1	# <cjk>
+0x976A	U+66DC	# <cjk>
+0x976B	U+694A	# <cjk>
+0x976C	U+69D8	# <cjk>
+0x976D	U+6D0B	# <cjk>
+0x976E	U+6EB6	# <cjk>
+0x976F	U+7194	# <cjk>
+0x9770	U+7528	# <cjk>
+0x9771	U+7AAF	# <cjk>
+0x9772	U+7F8A	# <cjk>
+0x9773	U+8000	# <cjk>
+0x9774	U+8449	# <cjk>
+0x9775	U+84C9	# <cjk>
+0x9776	U+8981	# <cjk>
+0x9777	U+8B21	# <cjk>
+0x9778	U+8E0A	# <cjk>
+0x9779	U+9065	# <cjk>
+0x977A	U+967D	# <cjk>
+0x977B	U+990A	# <cjk>
+0x977C	U+617E	# <cjk>
+0x977D	U+6291	# <cjk>
+0x977E	U+6B32	# <cjk>
+0x9780	U+6C83	# <cjk>
+0x9781	U+6D74	# <cjk>
+0x9782	U+7FCC	# <cjk>
+0x9783	U+7FFC	# <cjk>
+0x9784	U+6DC0	# <cjk>
+0x9785	U+7F85	# <cjk>
+0x9786	U+87BA	# <cjk>
+0x9787	U+88F8	# <cjk>
+0x9788	U+6765	# <cjk>
+0x9789	U+83B1	# <cjk>
+0x978A	U+983C	# <cjk>
+0x978B	U+96F7	# <cjk>
+0x978C	U+6D1B	# <cjk>
+0x978D	U+7D61	# <cjk>
+0x978E	U+843D	# <cjk>
+0x978F	U+916A	# <cjk>
+0x9790	U+4E71	# <cjk>
+0x9791	U+5375	# <cjk>
+0x9792	U+5D50	# <cjk>
+0x9793	U+6B04	# <cjk>
+0x9794	U+6FEB	# <cjk>
+0x9795	U+85CD	# <cjk>
+0x9796	U+862D	# <cjk>
+0x9797	U+89A7	# <cjk>
+0x9798	U+5229	# <cjk>
+0x9799	U+540F	# <cjk>
+0x979A	U+5C65	# <cjk>
+0x979B	U+674E	# <cjk>
+0x979C	U+68A8	# <cjk>
+0x979D	U+7406	# <cjk>
+0x979E	U+7483	# <cjk>
+0x979F	U+75E2	# <cjk>
+0x97A0	U+88CF	# <cjk>
+0x97A1	U+88E1	# <cjk>
+0x97A2	U+91CC	# <cjk>
+0x97A3	U+96E2	# <cjk>
+0x97A4	U+9678	# <cjk>
+0x97A5	U+5F8B	# <cjk>
+0x97A6	U+7387	# <cjk>
+0x97A7	U+7ACB	# <cjk>
+0x97A8	U+844E	# <cjk>
+0x97A9	U+63A0	# <cjk>
+0x97AA	U+7565	# <cjk>
+0x97AB	U+5289	# <cjk>
+0x97AC	U+6D41	# <cjk>
+0x97AD	U+6E9C	# <cjk>
+0x97AE	U+7409	# <cjk>
+0x97AF	U+7559	# <cjk>
+0x97B0	U+786B	# <cjk>
+0x97B1	U+7C92	# <cjk>
+0x97B2	U+9686	# <cjk>
+0x97B3	U+7ADC	# <cjk>
+0x97B4	U+9F8D	# <cjk>
+0x97B5	U+4FB6	# <cjk>
+0x97B6	U+616E	# <cjk>
+0x97B7	U+65C5	# <cjk>
+0x97B8	U+865C	# <cjk>
+0x97B9	U+4E86	# <cjk>
+0x97BA	U+4EAE	# <cjk>
+0x97BB	U+50DA	# <cjk>
+0x97BC	U+4E21	# <cjk>
+0x97BD	U+51CC	# <cjk>
+0x97BE	U+5BEE	# <cjk>
+0x97BF	U+6599	# <cjk>
+0x97C0	U+6881	# <cjk>
+0x97C1	U+6DBC	# <cjk>
+0x97C2	U+731F	# <cjk>
+0x97C3	U+7642	# <cjk>
+0x97C4	U+77AD	# <cjk>
+0x97C5	U+7A1C	# <cjk>
+0x97C6	U+7CE7	# <cjk>
+0x97C7	U+826F	# <cjk>
+0x97C8	U+8AD2	# <cjk>
+0x97C9	U+907C	# <cjk>
+0x97CA	U+91CF	# <cjk>
+0x97CB	U+9675	# <cjk>
+0x97CC	U+9818	# <cjk>
+0x97CD	U+529B	# <cjk>
+0x97CE	U+7DD1	# <cjk>
+0x97CF	U+502B	# <cjk>
+0x97D0	U+5398	# <cjk>
+0x97D1	U+6797	# <cjk>
+0x97D2	U+6DCB	# <cjk>
+0x97D3	U+71D0	# <cjk>
+0x97D4	U+7433	# <cjk>
+0x97D5	U+81E8	# <cjk>
+0x97D6	U+8F2A	# <cjk>
+0x97D7	U+96A3	# <cjk>
+0x97D8	U+9C57	# <cjk>
+0x97D9	U+9E9F	# <cjk>
+0x97DA	U+7460	# <cjk>
+0x97DB	U+5841	# <cjk>
+0x97DC	U+6D99	# <cjk>
+0x97DD	U+7D2F	# <cjk>
+0x97DE	U+985E	# <cjk>
+0x97DF	U+4EE4	# <cjk>
+0x97E0	U+4F36	# <cjk>
+0x97E1	U+4F8B	# <cjk>
+0x97E2	U+51B7	# <cjk>
+0x97E3	U+52B1	# <cjk>
+0x97E4	U+5DBA	# <cjk>
+0x97E5	U+601C	# <cjk>
+0x97E6	U+73B2	# <cjk>
+0x97E7	U+793C	# <cjk>
+0x97E8	U+82D3	# <cjk>
+0x97E9	U+9234	# <cjk>
+0x97EA	U+96B7	# <cjk>
+0x97EB	U+96F6	# <cjk>
+0x97EC	U+970A	# <cjk>
+0x97ED	U+9E97	# <cjk>
+0x97EE	U+9F62	# <cjk>
+0x97EF	U+66A6	# <cjk>
+0x97F0	U+6B74	# <cjk>
+0x97F1	U+5217	# <cjk>
+0x97F2	U+52A3	# <cjk>
+0x97F3	U+70C8	# <cjk>
+0x97F4	U+88C2	# <cjk>
+0x97F5	U+5EC9	# <cjk>
+0x97F6	U+604B	# <cjk>
+0x97F7	U+6190	# <cjk>
+0x97F8	U+6F23	# <cjk>
+0x97F9	U+7149	# <cjk>
+0x97FA	U+7C3E	# <cjk>
+0x97FB	U+7DF4	# <cjk>
+0x97FC	U+806F	# <cjk>
+0x9840	U+84EE	# <cjk>
+0x9841	U+9023	# <cjk>
+0x9842	U+932C	# <cjk>
+0x9843	U+5442	# <cjk>
+0x9844	U+9B6F	# <cjk>
+0x9845	U+6AD3	# <cjk>
+0x9846	U+7089	# <cjk>
+0x9847	U+8CC2	# <cjk>
+0x9848	U+8DEF	# <cjk>
+0x9849	U+9732	# <cjk>
+0x984A	U+52B4	# <cjk>
+0x984B	U+5A41	# <cjk>
+0x984C	U+5ECA	# <cjk>
+0x984D	U+5F04	# <cjk>
+0x984E	U+6717	# <cjk>
+0x984F	U+697C	# <cjk>
+0x9850	U+6994	# <cjk>
+0x9851	U+6D6A	# <cjk>
+0x9852	U+6F0F	# <cjk>
+0x9853	U+7262	# <cjk>
+0x9854	U+72FC	# <cjk>
+0x9855	U+7BED	# <cjk>
+0x9856	U+8001	# <cjk>
+0x9857	U+807E	# <cjk>
+0x9858	U+874B	# <cjk>
+0x9859	U+90CE	# <cjk>
+0x985A	U+516D	# <cjk>
+0x985B	U+9E93	# <cjk>
+0x985C	U+7984	# <cjk>
+0x985D	U+808B	# <cjk>
+0x985E	U+9332	# <cjk>
+0x985F	U+8AD6	# <cjk>
+0x9860	U+502D	# <cjk>
+0x9861	U+548C	# <cjk>
+0x9862	U+8A71	# <cjk>
+0x9863	U+6B6A	# <cjk>
+0x9864	U+8CC4	# <cjk>
+0x9865	U+8107	# <cjk>
+0x9866	U+60D1	# <cjk>
+0x9867	U+67A0	# <cjk>
+0x9868	U+9DF2	# <cjk>
+0x9869	U+4E99	# <cjk>
+0x986A	U+4E98	# <cjk>
+0x986B	U+9C10	# <cjk>
+0x986C	U+8A6B	# <cjk>
+0x986D	U+85C1	# <cjk>
+0x986E	U+8568	# <cjk>
+0x986F	U+6900	# <cjk>
+0x9870	U+6E7E	# <cjk>
+0x9871	U+7897	# <cjk>
+0x9872	U+8155	# <cjk>
+0x9873	U+20B9F	# <cjk>	[2004]	[Unicode3.1]
+0x9874	U+5B41	# <cjk>	[2000]
+0x9875	U+5B56	# <cjk>	[2000]
+0x9876	U+5B7D	# <cjk>	[2000]
+0x9877	U+5B93	# <cjk>	[2000]
+0x9878	U+5BD8	# <cjk>	[2000]
+0x9879	U+5BEC	# <cjk>	[2000]
+0x987A	U+5C12	# <cjk>	[2000]
+0x987B	U+5C1E	# <cjk>	[2000]
+0x987C	U+5C23	# <cjk>	[2000]
+0x987D	U+5C2B	# <cjk>	[2000]
+0x987E	U+378D	# <cjk>	[2000]
+0x9880	U+5C62	# <cjk>	[2000]
+0x9881	U+FA3B	# CJK COMPATIBILITY IDEOGRAPH-FA3B	[2000]	[Unicode3.2]
+0x9882	U+FA3C	# CJK COMPATIBILITY IDEOGRAPH-FA3C	[2000]	[Unicode3.2]
+0x9883	U+216B4	# <cjk>	[2000]	[Unicode3.1]
+0x9884	U+5C7A	# <cjk>	[2000]
+0x9885	U+5C8F	# <cjk>	[2000]
+0x9886	U+5C9F	# <cjk>	[2000]
+0x9887	U+5CA3	# <cjk>	[2000]
+0x9888	U+5CAA	# <cjk>	[2000]
+0x9889	U+5CBA	# <cjk>	[2000]
+0x988A	U+5CCB	# <cjk>	[2000]
+0x988B	U+5CD0	# <cjk>	[2000]
+0x988C	U+5CD2	# <cjk>	[2000]
+0x988D	U+5CF4	# <cjk>	[2000]
+0x988E	U+21E34	# <cjk>	[2000]	[Unicode3.1]
+0x988F	U+37E2	# <cjk>	[2000]
+0x9890	U+5D0D	# <cjk>	[2000]
+0x9891	U+5D27	# <cjk>	[2000]
+0x9892	U+FA11	# CJK COMPATIBILITY IDEOGRAPH-FA11	[2000]
+0x9893	U+5D46	# <cjk>	[2000]
+0x9894	U+5D47	# <cjk>	[2000]
+0x9895	U+5D53	# <cjk>	[2000]
+0x9896	U+5D4A	# <cjk>	[2000]
+0x9897	U+5D6D	# <cjk>	[2000]
+0x9898	U+5D81	# <cjk>	[2000]
+0x9899	U+5DA0	# <cjk>	[2000]
+0x989A	U+5DA4	# <cjk>	[2000]
+0x989B	U+5DA7	# <cjk>	[2000]
+0x989C	U+5DB8	# <cjk>	[2000]
+0x989D	U+5DCB	# <cjk>	[2000]
+0x989E	U+541E	# <cjk>	[2004]
+0x989F	U+5F0C	# <cjk>
+0x98A0	U+4E10	# <cjk>
+0x98A1	U+4E15	# <cjk>
+0x98A2	U+4E2A	# <cjk>
+0x98A3	U+4E31	# <cjk>
+0x98A4	U+4E36	# <cjk>
+0x98A5	U+4E3C	# <cjk>
+0x98A6	U+4E3F	# <cjk>
+0x98A7	U+4E42	# <cjk>
+0x98A8	U+4E56	# <cjk>
+0x98A9	U+4E58	# <cjk>
+0x98AA	U+4E82	# <cjk>
+0x98AB	U+4E85	# <cjk>
+0x98AC	U+8C6B	# <cjk>
+0x98AD	U+4E8A	# <cjk>
+0x98AE	U+8212	# <cjk>
+0x98AF	U+5F0D	# <cjk>
+0x98B0	U+4E8E	# <cjk>
+0x98B1	U+4E9E	# <cjk>
+0x98B2	U+4E9F	# <cjk>
+0x98B3	U+4EA0	# <cjk>
+0x98B4	U+4EA2	# <cjk>
+0x98B5	U+4EB0	# <cjk>
+0x98B6	U+4EB3	# <cjk>
+0x98B7	U+4EB6	# <cjk>
+0x98B8	U+4ECE	# <cjk>
+0x98B9	U+4ECD	# <cjk>
+0x98BA	U+4EC4	# <cjk>
+0x98BB	U+4EC6	# <cjk>
+0x98BC	U+4EC2	# <cjk>
+0x98BD	U+4ED7	# <cjk>
+0x98BE	U+4EDE	# <cjk>
+0x98BF	U+4EED	# <cjk>
+0x98C0	U+4EDF	# <cjk>
+0x98C1	U+4EF7	# <cjk>
+0x98C2	U+4F09	# <cjk>
+0x98C3	U+4F5A	# <cjk>
+0x98C4	U+4F30	# <cjk>
+0x98C5	U+4F5B	# <cjk>
+0x98C6	U+4F5D	# <cjk>
+0x98C7	U+4F57	# <cjk>
+0x98C8	U+4F47	# <cjk>
+0x98C9	U+4F76	# <cjk>
+0x98CA	U+4F88	# <cjk>
+0x98CB	U+4F8F	# <cjk>
+0x98CC	U+4F98	# <cjk>
+0x98CD	U+4F7B	# <cjk>
+0x98CE	U+4F69	# <cjk>
+0x98CF	U+4F70	# <cjk>
+0x98D0	U+4F91	# <cjk>
+0x98D1	U+4F6F	# <cjk>
+0x98D2	U+4F86	# <cjk>
+0x98D3	U+4F96	# <cjk>
+0x98D4	U+5118	# <cjk>
+0x98D5	U+4FD4	# <cjk>
+0x98D6	U+4FDF	# <cjk>
+0x98D7	U+4FCE	# <cjk>
+0x98D8	U+4FD8	# <cjk>
+0x98D9	U+4FDB	# <cjk>
+0x98DA	U+4FD1	# <cjk>
+0x98DB	U+4FDA	# <cjk>
+0x98DC	U+4FD0	# <cjk>
+0x98DD	U+4FE4	# <cjk>
+0x98DE	U+4FE5	# <cjk>
+0x98DF	U+501A	# <cjk>
+0x98E0	U+5028	# <cjk>
+0x98E1	U+5014	# <cjk>
+0x98E2	U+502A	# <cjk>
+0x98E3	U+5025	# <cjk>
+0x98E4	U+5005	# <cjk>
+0x98E5	U+4F1C	# <cjk>
+0x98E6	U+4FF6	# <cjk>
+0x98E7	U+5021	# <cjk>
+0x98E8	U+5029	# <cjk>
+0x98E9	U+502C	# <cjk>
+0x98EA	U+4FFE	# <cjk>
+0x98EB	U+4FEF	# <cjk>
+0x98EC	U+5011	# <cjk>
+0x98ED	U+5006	# <cjk>
+0x98EE	U+5043	# <cjk>
+0x98EF	U+5047	# <cjk>
+0x98F0	U+6703	# <cjk>
+0x98F1	U+5055	# <cjk>
+0x98F2	U+5050	# <cjk>
+0x98F3	U+5048	# <cjk>
+0x98F4	U+505A	# <cjk>
+0x98F5	U+5056	# <cjk>
+0x98F6	U+506C	# <cjk>
+0x98F7	U+5078	# <cjk>
+0x98F8	U+5080	# <cjk>
+0x98F9	U+509A	# <cjk>
+0x98FA	U+5085	# <cjk>
+0x98FB	U+50B4	# <cjk>
+0x98FC	U+50B2	# <cjk>
+0x9940	U+50C9	# <cjk>
+0x9941	U+50CA	# <cjk>
+0x9942	U+50B3	# <cjk>
+0x9943	U+50C2	# <cjk>
+0x9944	U+50D6	# <cjk>
+0x9945	U+50DE	# <cjk>
+0x9946	U+50E5	# <cjk>
+0x9947	U+50ED	# <cjk>
+0x9948	U+50E3	# <cjk>
+0x9949	U+50EE	# <cjk>
+0x994A	U+50F9	# <cjk>
+0x994B	U+50F5	# <cjk>
+0x994C	U+5109	# <cjk>
+0x994D	U+5101	# <cjk>
+0x994E	U+5102	# <cjk>
+0x994F	U+5116	# <cjk>
+0x9950	U+5115	# <cjk>
+0x9951	U+5114	# <cjk>
+0x9952	U+511A	# <cjk>
+0x9953	U+5121	# <cjk>
+0x9954	U+513A	# <cjk>
+0x9955	U+5137	# <cjk>
+0x9956	U+513C	# <cjk>
+0x9957	U+513B	# <cjk>
+0x9958	U+513F	# <cjk>
+0x9959	U+5140	# <cjk>
+0x995A	U+5152	# <cjk>
+0x995B	U+514C	# <cjk>
+0x995C	U+5154	# <cjk>
+0x995D	U+5162	# <cjk>
+0x995E	U+7AF8	# <cjk>
+0x995F	U+5169	# <cjk>
+0x9960	U+516A	# <cjk>
+0x9961	U+516E	# <cjk>
+0x9962	U+5180	# <cjk>
+0x9963	U+5182	# <cjk>
+0x9964	U+56D8	# <cjk>
+0x9965	U+518C	# <cjk>
+0x9966	U+5189	# <cjk>
+0x9967	U+518F	# <cjk>
+0x9968	U+5191	# <cjk>
+0x9969	U+5193	# <cjk>
+0x996A	U+5195	# <cjk>
+0x996B	U+5196	# <cjk>
+0x996C	U+51A4	# <cjk>
+0x996D	U+51A6	# <cjk>
+0x996E	U+51A2	# <cjk>
+0x996F	U+51A9	# <cjk>
+0x9970	U+51AA	# <cjk>
+0x9971	U+51AB	# <cjk>
+0x9972	U+51B3	# <cjk>
+0x9973	U+51B1	# <cjk>
+0x9974	U+51B2	# <cjk>
+0x9975	U+51B0	# <cjk>
+0x9976	U+51B5	# <cjk>
+0x9977	U+51BD	# <cjk>
+0x9978	U+51C5	# <cjk>
+0x9979	U+51C9	# <cjk>
+0x997A	U+51DB	# <cjk>
+0x997B	U+51E0	# <cjk>
+0x997C	U+8655	# <cjk>
+0x997D	U+51E9	# <cjk>
+0x997E	U+51ED	# <cjk>
+0x9980	U+51F0	# <cjk>
+0x9981	U+51F5	# <cjk>
+0x9982	U+51FE	# <cjk>
+0x9983	U+5204	# <cjk>
+0x9984	U+520B	# <cjk>
+0x9985	U+5214	# <cjk>
+0x9986	U+520E	# <cjk>
+0x9987	U+5227	# <cjk>
+0x9988	U+522A	# <cjk>
+0x9989	U+522E	# <cjk>
+0x998A	U+5233	# <cjk>
+0x998B	U+5239	# <cjk>
+0x998C	U+524F	# <cjk>
+0x998D	U+5244	# <cjk>
+0x998E	U+524B	# <cjk>
+0x998F	U+524C	# <cjk>
+0x9990	U+525E	# <cjk>
+0x9991	U+5254	# <cjk>
+0x9992	U+526A	# <cjk>
+0x9993	U+5274	# <cjk>
+0x9994	U+5269	# <cjk>
+0x9995	U+5273	# <cjk>
+0x9996	U+527F	# <cjk>
+0x9997	U+527D	# <cjk>
+0x9998	U+528D	# <cjk>
+0x9999	U+5294	# <cjk>
+0x999A	U+5292	# <cjk>
+0x999B	U+5271	# <cjk>
+0x999C	U+5288	# <cjk>
+0x999D	U+5291	# <cjk>
+0x999E	U+8FA8	# <cjk>
+0x999F	U+8FA7	# <cjk>
+0x99A0	U+52AC	# <cjk>
+0x99A1	U+52AD	# <cjk>
+0x99A2	U+52BC	# <cjk>
+0x99A3	U+52B5	# <cjk>
+0x99A4	U+52C1	# <cjk>
+0x99A5	U+52CD	# <cjk>
+0x99A6	U+52D7	# <cjk>
+0x99A7	U+52DE	# <cjk>
+0x99A8	U+52E3	# <cjk>
+0x99A9	U+52E6	# <cjk>
+0x99AA	U+98ED	# <cjk>
+0x99AB	U+52E0	# <cjk>
+0x99AC	U+52F3	# <cjk>
+0x99AD	U+52F5	# <cjk>
+0x99AE	U+52F8	# <cjk>
+0x99AF	U+52F9	# <cjk>
+0x99B0	U+5306	# <cjk>
+0x99B1	U+5308	# <cjk>
+0x99B2	U+7538	# <cjk>
+0x99B3	U+530D	# <cjk>
+0x99B4	U+5310	# <cjk>
+0x99B5	U+530F	# <cjk>
+0x99B6	U+5315	# <cjk>
+0x99B7	U+531A	# <cjk>
+0x99B8	U+5323	# <cjk>
+0x99B9	U+532F	# <cjk>
+0x99BA	U+5331	# <cjk>
+0x99BB	U+5333	# <cjk>
+0x99BC	U+5338	# <cjk>
+0x99BD	U+5340	# <cjk>
+0x99BE	U+5346	# <cjk>
+0x99BF	U+5345	# <cjk>
+0x99C0	U+4E17	# <cjk>
+0x99C1	U+5349	# <cjk>
+0x99C2	U+534D	# <cjk>
+0x99C3	U+51D6	# <cjk>
+0x99C4	U+535E	# <cjk>
+0x99C5	U+5369	# <cjk>
+0x99C6	U+536E	# <cjk>
+0x99C7	U+5918	# <cjk>
+0x99C8	U+537B	# <cjk>
+0x99C9	U+5377	# <cjk>
+0x99CA	U+5382	# <cjk>
+0x99CB	U+5396	# <cjk>
+0x99CC	U+53A0	# <cjk>
+0x99CD	U+53A6	# <cjk>
+0x99CE	U+53A5	# <cjk>
+0x99CF	U+53AE	# <cjk>
+0x99D0	U+53B0	# <cjk>
+0x99D1	U+53B6	# <cjk>
+0x99D2	U+53C3	# <cjk>
+0x99D3	U+7C12	# <cjk>
+0x99D4	U+96D9	# <cjk>
+0x99D5	U+53DF	# <cjk>
+0x99D6	U+66FC	# <cjk>
+0x99D7	U+71EE	# <cjk>
+0x99D8	U+53EE	# <cjk>
+0x99D9	U+53E8	# <cjk>
+0x99DA	U+53ED	# <cjk>
+0x99DB	U+53FA	# <cjk>
+0x99DC	U+5401	# <cjk>
+0x99DD	U+543D	# <cjk>
+0x99DE	U+5440	# <cjk>
+0x99DF	U+542C	# <cjk>
+0x99E0	U+542D	# <cjk>
+0x99E1	U+543C	# <cjk>
+0x99E2	U+542E	# <cjk>
+0x99E3	U+5436	# <cjk>
+0x99E4	U+5429	# <cjk>
+0x99E5	U+541D	# <cjk>
+0x99E6	U+544E	# <cjk>
+0x99E7	U+548F	# <cjk>
+0x99E8	U+5475	# <cjk>
+0x99E9	U+548E	# <cjk>
+0x99EA	U+545F	# <cjk>
+0x99EB	U+5471	# <cjk>
+0x99EC	U+5477	# <cjk>
+0x99ED	U+5470	# <cjk>
+0x99EE	U+5492	# <cjk>
+0x99EF	U+547B	# <cjk>
+0x99F0	U+5480	# <cjk>
+0x99F1	U+5476	# <cjk>
+0x99F2	U+5484	# <cjk>
+0x99F3	U+5490	# <cjk>
+0x99F4	U+5486	# <cjk>
+0x99F5	U+54C7	# <cjk>
+0x99F6	U+54A2	# <cjk>
+0x99F7	U+54B8	# <cjk>
+0x99F8	U+54A5	# <cjk>
+0x99F9	U+54AC	# <cjk>
+0x99FA	U+54C4	# <cjk>
+0x99FB	U+54C8	# <cjk>
+0x99FC	U+54A8	# <cjk>
+0x9A40	U+54AB	# <cjk>
+0x9A41	U+54C2	# <cjk>
+0x9A42	U+54A4	# <cjk>
+0x9A43	U+54BE	# <cjk>
+0x9A44	U+54BC	# <cjk>
+0x9A45	U+54D8	# <cjk>
+0x9A46	U+54E5	# <cjk>
+0x9A47	U+54E6	# <cjk>
+0x9A48	U+550F	# <cjk>
+0x9A49	U+5514	# <cjk>
+0x9A4A	U+54FD	# <cjk>
+0x9A4B	U+54EE	# <cjk>
+0x9A4C	U+54ED	# <cjk>
+0x9A4D	U+54FA	# <cjk>
+0x9A4E	U+54E2	# <cjk>
+0x9A4F	U+5539	# <cjk>
+0x9A50	U+5540	# <cjk>
+0x9A51	U+5563	# <cjk>
+0x9A52	U+554C	# <cjk>
+0x9A53	U+552E	# <cjk>
+0x9A54	U+555C	# <cjk>
+0x9A55	U+5545	# <cjk>
+0x9A56	U+5556	# <cjk>
+0x9A57	U+5557	# <cjk>
+0x9A58	U+5538	# <cjk>
+0x9A59	U+5533	# <cjk>
+0x9A5A	U+555D	# <cjk>
+0x9A5B	U+5599	# <cjk>
+0x9A5C	U+5580	# <cjk>
+0x9A5D	U+54AF	# <cjk>
+0x9A5E	U+558A	# <cjk>
+0x9A5F	U+559F	# <cjk>
+0x9A60	U+557B	# <cjk>
+0x9A61	U+557E	# <cjk>
+0x9A62	U+5598	# <cjk>
+0x9A63	U+559E	# <cjk>
+0x9A64	U+55AE	# <cjk>
+0x9A65	U+557C	# <cjk>
+0x9A66	U+5583	# <cjk>
+0x9A67	U+55A9	# <cjk>
+0x9A68	U+5587	# <cjk>
+0x9A69	U+55A8	# <cjk>
+0x9A6A	U+55DA	# <cjk>
+0x9A6B	U+55C5	# <cjk>
+0x9A6C	U+55DF	# <cjk>
+0x9A6D	U+55C4	# <cjk>
+0x9A6E	U+55DC	# <cjk>
+0x9A6F	U+55E4	# <cjk>
+0x9A70	U+55D4	# <cjk>
+0x9A71	U+5614	# <cjk>
+0x9A72	U+55F7	# <cjk>
+0x9A73	U+5616	# <cjk>
+0x9A74	U+55FE	# <cjk>
+0x9A75	U+55FD	# <cjk>
+0x9A76	U+561B	# <cjk>
+0x9A77	U+55F9	# <cjk>
+0x9A78	U+564E	# <cjk>
+0x9A79	U+5650	# <cjk>
+0x9A7A	U+71DF	# <cjk>
+0x9A7B	U+5634	# <cjk>
+0x9A7C	U+5636	# <cjk>
+0x9A7D	U+5632	# <cjk>
+0x9A7E	U+5638	# <cjk>
+0x9A80	U+566B	# <cjk>
+0x9A81	U+5664	# <cjk>
+0x9A82	U+562F	# <cjk>
+0x9A83	U+566C	# <cjk>
+0x9A84	U+566A	# <cjk>
+0x9A85	U+5686	# <cjk>
+0x9A86	U+5680	# <cjk>
+0x9A87	U+568A	# <cjk>
+0x9A88	U+56A0	# <cjk>
+0x9A89	U+5694	# <cjk>
+0x9A8A	U+568F	# <cjk>
+0x9A8B	U+56A5	# <cjk>
+0x9A8C	U+56AE	# <cjk>
+0x9A8D	U+56B6	# <cjk>
+0x9A8E	U+56B4	# <cjk>
+0x9A8F	U+56C2	# <cjk>
+0x9A90	U+56BC	# <cjk>
+0x9A91	U+56C1	# <cjk>
+0x9A92	U+56C3	# <cjk>
+0x9A93	U+56C0	# <cjk>
+0x9A94	U+56C8	# <cjk>
+0x9A95	U+56CE	# <cjk>
+0x9A96	U+56D1	# <cjk>
+0x9A97	U+56D3	# <cjk>
+0x9A98	U+56D7	# <cjk>
+0x9A99	U+56EE	# <cjk>
+0x9A9A	U+56F9	# <cjk>
+0x9A9B	U+5700	# <cjk>
+0x9A9C	U+56FF	# <cjk>
+0x9A9D	U+5704	# <cjk>
+0x9A9E	U+5709	# <cjk>
+0x9A9F	U+5708	# <cjk>
+0x9AA0	U+570B	# <cjk>
+0x9AA1	U+570D	# <cjk>
+0x9AA2	U+5713	# <cjk>
+0x9AA3	U+5718	# <cjk>
+0x9AA4	U+5716	# <cjk>
+0x9AA5	U+55C7	# <cjk>
+0x9AA6	U+571C	# <cjk>
+0x9AA7	U+5726	# <cjk>
+0x9AA8	U+5737	# <cjk>
+0x9AA9	U+5738	# <cjk>
+0x9AAA	U+574E	# <cjk>
+0x9AAB	U+573B	# <cjk>
+0x9AAC	U+5740	# <cjk>
+0x9AAD	U+574F	# <cjk>
+0x9AAE	U+5769	# <cjk>
+0x9AAF	U+57C0	# <cjk>
+0x9AB0	U+5788	# <cjk>
+0x9AB1	U+5761	# <cjk>
+0x9AB2	U+577F	# <cjk>
+0x9AB3	U+5789	# <cjk>
+0x9AB4	U+5793	# <cjk>
+0x9AB5	U+57A0	# <cjk>
+0x9AB6	U+57B3	# <cjk>
+0x9AB7	U+57A4	# <cjk>
+0x9AB8	U+57AA	# <cjk>
+0x9AB9	U+57B0	# <cjk>
+0x9ABA	U+57C3	# <cjk>
+0x9ABB	U+57C6	# <cjk>
+0x9ABC	U+57D4	# <cjk>
+0x9ABD	U+57D2	# <cjk>
+0x9ABE	U+57D3	# <cjk>
+0x9ABF	U+580A	# <cjk>
+0x9AC0	U+57D6	# <cjk>
+0x9AC1	U+57E3	# <cjk>
+0x9AC2	U+580B	# <cjk>
+0x9AC3	U+5819	# <cjk>
+0x9AC4	U+581D	# <cjk>
+0x9AC5	U+5872	# <cjk>
+0x9AC6	U+5821	# <cjk>
+0x9AC7	U+5862	# <cjk>
+0x9AC8	U+584B	# <cjk>
+0x9AC9	U+5870	# <cjk>
+0x9ACA	U+6BC0	# <cjk>
+0x9ACB	U+5852	# <cjk>
+0x9ACC	U+583D	# <cjk>
+0x9ACD	U+5879	# <cjk>
+0x9ACE	U+5885	# <cjk>
+0x9ACF	U+58B9	# <cjk>
+0x9AD0	U+589F	# <cjk>
+0x9AD1	U+58AB	# <cjk>
+0x9AD2	U+58BA	# <cjk>
+0x9AD3	U+58DE	# <cjk>
+0x9AD4	U+58BB	# <cjk>
+0x9AD5	U+58B8	# <cjk>
+0x9AD6	U+58AE	# <cjk>
+0x9AD7	U+58C5	# <cjk>
+0x9AD8	U+58D3	# <cjk>
+0x9AD9	U+58D1	# <cjk>
+0x9ADA	U+58D7	# <cjk>
+0x9ADB	U+58D9	# <cjk>
+0x9ADC	U+58D8	# <cjk>
+0x9ADD	U+58E5	# <cjk>
+0x9ADE	U+58DC	# <cjk>
+0x9ADF	U+58E4	# <cjk>
+0x9AE0	U+58DF	# <cjk>
+0x9AE1	U+58EF	# <cjk>
+0x9AE2	U+58FA	# <cjk>
+0x9AE3	U+58F9	# <cjk>
+0x9AE4	U+58FB	# <cjk>
+0x9AE5	U+58FC	# <cjk>
+0x9AE6	U+58FD	# <cjk>
+0x9AE7	U+5902	# <cjk>
+0x9AE8	U+590A	# <cjk>
+0x9AE9	U+5910	# <cjk>
+0x9AEA	U+591B	# <cjk>
+0x9AEB	U+68A6	# <cjk>
+0x9AEC	U+5925	# <cjk>
+0x9AED	U+592C	# <cjk>
+0x9AEE	U+592D	# <cjk>
+0x9AEF	U+5932	# <cjk>
+0x9AF0	U+5938	# <cjk>
+0x9AF1	U+593E	# <cjk>
+0x9AF2	U+7AD2	# <cjk>
+0x9AF3	U+5955	# <cjk>
+0x9AF4	U+5950	# <cjk>
+0x9AF5	U+594E	# <cjk>
+0x9AF6	U+595A	# <cjk>
+0x9AF7	U+5958	# <cjk>
+0x9AF8	U+5962	# <cjk>
+0x9AF9	U+5960	# <cjk>
+0x9AFA	U+5967	# <cjk>
+0x9AFB	U+596C	# <cjk>
+0x9AFC	U+5969	# <cjk>
+0x9B40	U+5978	# <cjk>
+0x9B41	U+5981	# <cjk>
+0x9B42	U+599D	# <cjk>
+0x9B43	U+4F5E	# <cjk>
+0x9B44	U+4FAB	# <cjk>
+0x9B45	U+59A3	# <cjk>
+0x9B46	U+59B2	# <cjk>
+0x9B47	U+59C6	# <cjk>
+0x9B48	U+59E8	# <cjk>
+0x9B49	U+59DC	# <cjk>
+0x9B4A	U+598D	# <cjk>
+0x9B4B	U+59D9	# <cjk>
+0x9B4C	U+59DA	# <cjk>
+0x9B4D	U+5A25	# <cjk>
+0x9B4E	U+5A1F	# <cjk>
+0x9B4F	U+5A11	# <cjk>
+0x9B50	U+5A1C	# <cjk>
+0x9B51	U+5A09	# <cjk>
+0x9B52	U+5A1A	# <cjk>
+0x9B53	U+5A40	# <cjk>
+0x9B54	U+5A6C	# <cjk>
+0x9B55	U+5A49	# <cjk>
+0x9B56	U+5A35	# <cjk>
+0x9B57	U+5A36	# <cjk>
+0x9B58	U+5A62	# <cjk>
+0x9B59	U+5A6A	# <cjk>
+0x9B5A	U+5A9A	# <cjk>
+0x9B5B	U+5ABC	# <cjk>
+0x9B5C	U+5ABE	# <cjk>
+0x9B5D	U+5ACB	# <cjk>
+0x9B5E	U+5AC2	# <cjk>
+0x9B5F	U+5ABD	# <cjk>
+0x9B60	U+5AE3	# <cjk>
+0x9B61	U+5AD7	# <cjk>
+0x9B62	U+5AE6	# <cjk>
+0x9B63	U+5AE9	# <cjk>
+0x9B64	U+5AD6	# <cjk>
+0x9B65	U+5AFA	# <cjk>
+0x9B66	U+5AFB	# <cjk>
+0x9B67	U+5B0C	# <cjk>
+0x9B68	U+5B0B	# <cjk>
+0x9B69	U+5B16	# <cjk>
+0x9B6A	U+5B32	# <cjk>
+0x9B6B	U+5AD0	# <cjk>
+0x9B6C	U+5B2A	# <cjk>
+0x9B6D	U+5B36	# <cjk>
+0x9B6E	U+5B3E	# <cjk>
+0x9B6F	U+5B43	# <cjk>
+0x9B70	U+5B45	# <cjk>
+0x9B71	U+5B40	# <cjk>
+0x9B72	U+5B51	# <cjk>
+0x9B73	U+5B55	# <cjk>
+0x9B74	U+5B5A	# <cjk>
+0x9B75	U+5B5B	# <cjk>
+0x9B76	U+5B65	# <cjk>
+0x9B77	U+5B69	# <cjk>
+0x9B78	U+5B70	# <cjk>
+0x9B79	U+5B73	# <cjk>
+0x9B7A	U+5B75	# <cjk>
+0x9B7B	U+5B78	# <cjk>
+0x9B7C	U+6588	# <cjk>
+0x9B7D	U+5B7A	# <cjk>
+0x9B7E	U+5B80	# <cjk>
+0x9B80	U+5B83	# <cjk>
+0x9B81	U+5BA6	# <cjk>
+0x9B82	U+5BB8	# <cjk>
+0x9B83	U+5BC3	# <cjk>
+0x9B84	U+5BC7	# <cjk>
+0x9B85	U+5BC9	# <cjk>
+0x9B86	U+5BD4	# <cjk>
+0x9B87	U+5BD0	# <cjk>
+0x9B88	U+5BE4	# <cjk>
+0x9B89	U+5BE6	# <cjk>
+0x9B8A	U+5BE2	# <cjk>
+0x9B8B	U+5BDE	# <cjk>
+0x9B8C	U+5BE5	# <cjk>
+0x9B8D	U+5BEB	# <cjk>
+0x9B8E	U+5BF0	# <cjk>
+0x9B8F	U+5BF6	# <cjk>
+0x9B90	U+5BF3	# <cjk>
+0x9B91	U+5C05	# <cjk>
+0x9B92	U+5C07	# <cjk>
+0x9B93	U+5C08	# <cjk>
+0x9B94	U+5C0D	# <cjk>
+0x9B95	U+5C13	# <cjk>
+0x9B96	U+5C20	# <cjk>
+0x9B97	U+5C22	# <cjk>
+0x9B98	U+5C28	# <cjk>
+0x9B99	U+5C38	# <cjk>
+0x9B9A	U+5C39	# <cjk>
+0x9B9B	U+5C41	# <cjk>
+0x9B9C	U+5C46	# <cjk>
+0x9B9D	U+5C4E	# <cjk>
+0x9B9E	U+5C53	# <cjk>
+0x9B9F	U+5C50	# <cjk>
+0x9BA0	U+5C4F	# <cjk>
+0x9BA1	U+5B71	# <cjk>
+0x9BA2	U+5C6C	# <cjk>
+0x9BA3	U+5C6E	# <cjk>
+0x9BA4	U+4E62	# <cjk>
+0x9BA5	U+5C76	# <cjk>
+0x9BA6	U+5C79	# <cjk>
+0x9BA7	U+5C8C	# <cjk>
+0x9BA8	U+5C91	# <cjk>
+0x9BA9	U+5C94	# <cjk>
+0x9BAA	U+599B	# <cjk>
+0x9BAB	U+5CAB	# <cjk>
+0x9BAC	U+5CBB	# <cjk>
+0x9BAD	U+5CB6	# <cjk>
+0x9BAE	U+5CBC	# <cjk>
+0x9BAF	U+5CB7	# <cjk>
+0x9BB0	U+5CC5	# <cjk>
+0x9BB1	U+5CBE	# <cjk>
+0x9BB2	U+5CC7	# <cjk>
+0x9BB3	U+5CD9	# <cjk>
+0x9BB4	U+5CE9	# <cjk>
+0x9BB5	U+5CFD	# <cjk>
+0x9BB6	U+5CFA	# <cjk>
+0x9BB7	U+5CED	# <cjk>
+0x9BB8	U+5D8C	# <cjk>
+0x9BB9	U+5CEA	# <cjk>
+0x9BBA	U+5D0B	# <cjk>
+0x9BBB	U+5D15	# <cjk>
+0x9BBC	U+5D17	# <cjk>
+0x9BBD	U+5D5C	# <cjk>
+0x9BBE	U+5D1F	# <cjk>
+0x9BBF	U+5D1B	# <cjk>
+0x9BC0	U+5D11	# <cjk>
+0x9BC1	U+5D14	# <cjk>
+0x9BC2	U+5D22	# <cjk>
+0x9BC3	U+5D1A	# <cjk>
+0x9BC4	U+5D19	# <cjk>
+0x9BC5	U+5D18	# <cjk>
+0x9BC6	U+5D4C	# <cjk>
+0x9BC7	U+5D52	# <cjk>
+0x9BC8	U+5D4E	# <cjk>
+0x9BC9	U+5D4B	# <cjk>
+0x9BCA	U+5D6C	# <cjk>
+0x9BCB	U+5D73	# <cjk>
+0x9BCC	U+5D76	# <cjk>
+0x9BCD	U+5D87	# <cjk>
+0x9BCE	U+5D84	# <cjk>
+0x9BCF	U+5D82	# <cjk>
+0x9BD0	U+5DA2	# <cjk>
+0x9BD1	U+5D9D	# <cjk>
+0x9BD2	U+5DAC	# <cjk>
+0x9BD3	U+5DAE	# <cjk>
+0x9BD4	U+5DBD	# <cjk>
+0x9BD5	U+5D90	# <cjk>
+0x9BD6	U+5DB7	# <cjk>
+0x9BD7	U+5DBC	# <cjk>
+0x9BD8	U+5DC9	# <cjk>
+0x9BD9	U+5DCD	# <cjk>
+0x9BDA	U+5DD3	# <cjk>
+0x9BDB	U+5DD2	# <cjk>
+0x9BDC	U+5DD6	# <cjk>
+0x9BDD	U+5DDB	# <cjk>
+0x9BDE	U+5DEB	# <cjk>
+0x9BDF	U+5DF2	# <cjk>
+0x9BE0	U+5DF5	# <cjk>
+0x9BE1	U+5E0B	# <cjk>
+0x9BE2	U+5E1A	# <cjk>
+0x9BE3	U+5E19	# <cjk>
+0x9BE4	U+5E11	# <cjk>
+0x9BE5	U+5E1B	# <cjk>
+0x9BE6	U+5E36	# <cjk>
+0x9BE7	U+5E37	# <cjk>
+0x9BE8	U+5E44	# <cjk>
+0x9BE9	U+5E43	# <cjk>
+0x9BEA	U+5E40	# <cjk>
+0x9BEB	U+5E4E	# <cjk>
+0x9BEC	U+5E57	# <cjk>
+0x9BED	U+5E54	# <cjk>
+0x9BEE	U+5E5F	# <cjk>
+0x9BEF	U+5E62	# <cjk>
+0x9BF0	U+5E64	# <cjk>
+0x9BF1	U+5E47	# <cjk>
+0x9BF2	U+5E75	# <cjk>
+0x9BF3	U+5E76	# <cjk>
+0x9BF4	U+5E7A	# <cjk>
+0x9BF5	U+9EBC	# <cjk>
+0x9BF6	U+5E7F	# <cjk>
+0x9BF7	U+5EA0	# <cjk>
+0x9BF8	U+5EC1	# <cjk>
+0x9BF9	U+5EC2	# <cjk>
+0x9BFA	U+5EC8	# <cjk>
+0x9BFB	U+5ED0	# <cjk>
+0x9BFC	U+5ECF	# <cjk>
+0x9C40	U+5ED6	# <cjk>
+0x9C41	U+5EE3	# <cjk>
+0x9C42	U+5EDD	# <cjk>
+0x9C43	U+5EDA	# <cjk>
+0x9C44	U+5EDB	# <cjk>
+0x9C45	U+5EE2	# <cjk>
+0x9C46	U+5EE1	# <cjk>
+0x9C47	U+5EE8	# <cjk>
+0x9C48	U+5EE9	# <cjk>
+0x9C49	U+5EEC	# <cjk>
+0x9C4A	U+5EF1	# <cjk>
+0x9C4B	U+5EF3	# <cjk>
+0x9C4C	U+5EF0	# <cjk>
+0x9C4D	U+5EF4	# <cjk>
+0x9C4E	U+5EF8	# <cjk>
+0x9C4F	U+5EFE	# <cjk>
+0x9C50	U+5F03	# <cjk>
+0x9C51	U+5F09	# <cjk>
+0x9C52	U+5F5D	# <cjk>
+0x9C53	U+5F5C	# <cjk>
+0x9C54	U+5F0B	# <cjk>
+0x9C55	U+5F11	# <cjk>
+0x9C56	U+5F16	# <cjk>
+0x9C57	U+5F29	# <cjk>
+0x9C58	U+5F2D	# <cjk>
+0x9C59	U+5F38	# <cjk>
+0x9C5A	U+5F41	# <cjk>
+0x9C5B	U+5F48	# <cjk>
+0x9C5C	U+5F4C	# <cjk>
+0x9C5D	U+5F4E	# <cjk>
+0x9C5E	U+5F2F	# <cjk>
+0x9C5F	U+5F51	# <cjk>
+0x9C60	U+5F56	# <cjk>
+0x9C61	U+5F57	# <cjk>
+0x9C62	U+5F59	# <cjk>
+0x9C63	U+5F61	# <cjk>
+0x9C64	U+5F6D	# <cjk>
+0x9C65	U+5F73	# <cjk>
+0x9C66	U+5F77	# <cjk>
+0x9C67	U+5F83	# <cjk>
+0x9C68	U+5F82	# <cjk>
+0x9C69	U+5F7F	# <cjk>
+0x9C6A	U+5F8A	# <cjk>
+0x9C6B	U+5F88	# <cjk>
+0x9C6C	U+5F91	# <cjk>
+0x9C6D	U+5F87	# <cjk>
+0x9C6E	U+5F9E	# <cjk>
+0x9C6F	U+5F99	# <cjk>
+0x9C70	U+5F98	# <cjk>
+0x9C71	U+5FA0	# <cjk>
+0x9C72	U+5FA8	# <cjk>
+0x9C73	U+5FAD	# <cjk>
+0x9C74	U+5FBC	# <cjk>
+0x9C75	U+5FD6	# <cjk>
+0x9C76	U+5FFB	# <cjk>
+0x9C77	U+5FE4	# <cjk>
+0x9C78	U+5FF8	# <cjk>
+0x9C79	U+5FF1	# <cjk>
+0x9C7A	U+5FDD	# <cjk>
+0x9C7B	U+60B3	# <cjk>
+0x9C7C	U+5FFF	# <cjk>
+0x9C7D	U+6021	# <cjk>
+0x9C7E	U+6060	# <cjk>
+0x9C80	U+6019	# <cjk>
+0x9C81	U+6010	# <cjk>
+0x9C82	U+6029	# <cjk>
+0x9C83	U+600E	# <cjk>
+0x9C84	U+6031	# <cjk>
+0x9C85	U+601B	# <cjk>
+0x9C86	U+6015	# <cjk>
+0x9C87	U+602B	# <cjk>
+0x9C88	U+6026	# <cjk>
+0x9C89	U+600F	# <cjk>
+0x9C8A	U+603A	# <cjk>
+0x9C8B	U+605A	# <cjk>
+0x9C8C	U+6041	# <cjk>
+0x9C8D	U+606A	# <cjk>
+0x9C8E	U+6077	# <cjk>
+0x9C8F	U+605F	# <cjk>
+0x9C90	U+604A	# <cjk>
+0x9C91	U+6046	# <cjk>
+0x9C92	U+604D	# <cjk>
+0x9C93	U+6063	# <cjk>
+0x9C94	U+6043	# <cjk>
+0x9C95	U+6064	# <cjk>
+0x9C96	U+6042	# <cjk>
+0x9C97	U+606C	# <cjk>
+0x9C98	U+606B	# <cjk>
+0x9C99	U+6059	# <cjk>
+0x9C9A	U+6081	# <cjk>
+0x9C9B	U+608D	# <cjk>
+0x9C9C	U+60E7	# <cjk>
+0x9C9D	U+6083	# <cjk>
+0x9C9E	U+609A	# <cjk>
+0x9C9F	U+6084	# <cjk>
+0x9CA0	U+609B	# <cjk>
+0x9CA1	U+6096	# <cjk>
+0x9CA2	U+6097	# <cjk>
+0x9CA3	U+6092	# <cjk>
+0x9CA4	U+60A7	# <cjk>
+0x9CA5	U+608B	# <cjk>
+0x9CA6	U+60E1	# <cjk>
+0x9CA7	U+60B8	# <cjk>
+0x9CA8	U+60E0	# <cjk>
+0x9CA9	U+60D3	# <cjk>
+0x9CAA	U+60B4	# <cjk>
+0x9CAB	U+5FF0	# <cjk>
+0x9CAC	U+60BD	# <cjk>
+0x9CAD	U+60C6	# <cjk>
+0x9CAE	U+60B5	# <cjk>
+0x9CAF	U+60D8	# <cjk>
+0x9CB0	U+614D	# <cjk>
+0x9CB1	U+6115	# <cjk>
+0x9CB2	U+6106	# <cjk>
+0x9CB3	U+60F6	# <cjk>
+0x9CB4	U+60F7	# <cjk>
+0x9CB5	U+6100	# <cjk>
+0x9CB6	U+60F4	# <cjk>
+0x9CB7	U+60FA	# <cjk>
+0x9CB8	U+6103	# <cjk>
+0x9CB9	U+6121	# <cjk>
+0x9CBA	U+60FB	# <cjk>
+0x9CBB	U+60F1	# <cjk>
+0x9CBC	U+610D	# <cjk>
+0x9CBD	U+610E	# <cjk>
+0x9CBE	U+6147	# <cjk>
+0x9CBF	U+613E	# <cjk>
+0x9CC0	U+6128	# <cjk>
+0x9CC1	U+6127	# <cjk>
+0x9CC2	U+614A	# <cjk>
+0x9CC3	U+613F	# <cjk>
+0x9CC4	U+613C	# <cjk>
+0x9CC5	U+612C	# <cjk>
+0x9CC6	U+6134	# <cjk>
+0x9CC7	U+613D	# <cjk>
+0x9CC8	U+6142	# <cjk>
+0x9CC9	U+6144	# <cjk>
+0x9CCA	U+6173	# <cjk>
+0x9CCB	U+6177	# <cjk>
+0x9CCC	U+6158	# <cjk>
+0x9CCD	U+6159	# <cjk>
+0x9CCE	U+615A	# <cjk>
+0x9CCF	U+616B	# <cjk>
+0x9CD0	U+6174	# <cjk>
+0x9CD1	U+616F	# <cjk>
+0x9CD2	U+6165	# <cjk>
+0x9CD3	U+6171	# <cjk>
+0x9CD4	U+615F	# <cjk>
+0x9CD5	U+615D	# <cjk>
+0x9CD6	U+6153	# <cjk>
+0x9CD7	U+6175	# <cjk>
+0x9CD8	U+6199	# <cjk>
+0x9CD9	U+6196	# <cjk>
+0x9CDA	U+6187	# <cjk>
+0x9CDB	U+61AC	# <cjk>
+0x9CDC	U+6194	# <cjk>
+0x9CDD	U+619A	# <cjk>
+0x9CDE	U+618A	# <cjk>
+0x9CDF	U+6191	# <cjk>
+0x9CE0	U+61AB	# <cjk>
+0x9CE1	U+61AE	# <cjk>
+0x9CE2	U+61CC	# <cjk>
+0x9CE3	U+61CA	# <cjk>
+0x9CE4	U+61C9	# <cjk>
+0x9CE5	U+61F7	# <cjk>
+0x9CE6	U+61C8	# <cjk>
+0x9CE7	U+61C3	# <cjk>
+0x9CE8	U+61C6	# <cjk>
+0x9CE9	U+61BA	# <cjk>
+0x9CEA	U+61CB	# <cjk>
+0x9CEB	U+7F79	# <cjk>
+0x9CEC	U+61CD	# <cjk>
+0x9CED	U+61E6	# <cjk>
+0x9CEE	U+61E3	# <cjk>
+0x9CEF	U+61F6	# <cjk>
+0x9CF0	U+61FA	# <cjk>
+0x9CF1	U+61F4	# <cjk>
+0x9CF2	U+61FF	# <cjk>
+0x9CF3	U+61FD	# <cjk>
+0x9CF4	U+61FC	# <cjk>
+0x9CF5	U+61FE	# <cjk>
+0x9CF6	U+6200	# <cjk>
+0x9CF7	U+6208	# <cjk>
+0x9CF8	U+6209	# <cjk>
+0x9CF9	U+620D	# <cjk>
+0x9CFA	U+620C	# <cjk>
+0x9CFB	U+6214	# <cjk>
+0x9CFC	U+621B	# <cjk>
+0x9D40	U+621E	# <cjk>
+0x9D41	U+6221	# <cjk>
+0x9D42	U+622A	# <cjk>
+0x9D43	U+622E	# <cjk>
+0x9D44	U+6230	# <cjk>
+0x9D45	U+6232	# <cjk>
+0x9D46	U+6233	# <cjk>
+0x9D47	U+6241	# <cjk>
+0x9D48	U+624E	# <cjk>
+0x9D49	U+625E	# <cjk>
+0x9D4A	U+6263	# <cjk>
+0x9D4B	U+625B	# <cjk>
+0x9D4C	U+6260	# <cjk>
+0x9D4D	U+6268	# <cjk>
+0x9D4E	U+627C	# <cjk>
+0x9D4F	U+6282	# <cjk>
+0x9D50	U+6289	# <cjk>
+0x9D51	U+627E	# <cjk>
+0x9D52	U+6292	# <cjk>
+0x9D53	U+6293	# <cjk>
+0x9D54	U+6296	# <cjk>
+0x9D55	U+62D4	# <cjk>
+0x9D56	U+6283	# <cjk>
+0x9D57	U+6294	# <cjk>
+0x9D58	U+62D7	# <cjk>
+0x9D59	U+62D1	# <cjk>
+0x9D5A	U+62BB	# <cjk>
+0x9D5B	U+62CF	# <cjk>
+0x9D5C	U+62FF	# <cjk>
+0x9D5D	U+62C6	# <cjk>
+0x9D5E	U+64D4	# <cjk>
+0x9D5F	U+62C8	# <cjk>
+0x9D60	U+62DC	# <cjk>
+0x9D61	U+62CC	# <cjk>
+0x9D62	U+62CA	# <cjk>
+0x9D63	U+62C2	# <cjk>
+0x9D64	U+62C7	# <cjk>
+0x9D65	U+629B	# <cjk>
+0x9D66	U+62C9	# <cjk>
+0x9D67	U+630C	# <cjk>
+0x9D68	U+62EE	# <cjk>
+0x9D69	U+62F1	# <cjk>
+0x9D6A	U+6327	# <cjk>
+0x9D6B	U+6302	# <cjk>
+0x9D6C	U+6308	# <cjk>
+0x9D6D	U+62EF	# <cjk>
+0x9D6E	U+62F5	# <cjk>
+0x9D6F	U+6350	# <cjk>
+0x9D70	U+633E	# <cjk>
+0x9D71	U+634D	# <cjk>
+0x9D72	U+641C	# <cjk>
+0x9D73	U+634F	# <cjk>
+0x9D74	U+6396	# <cjk>
+0x9D75	U+638E	# <cjk>
+0x9D76	U+6380	# <cjk>
+0x9D77	U+63AB	# <cjk>
+0x9D78	U+6376	# <cjk>
+0x9D79	U+63A3	# <cjk>
+0x9D7A	U+638F	# <cjk>
+0x9D7B	U+6389	# <cjk>
+0x9D7C	U+639F	# <cjk>
+0x9D7D	U+63B5	# <cjk>
+0x9D7E	U+636B	# <cjk>
+0x9D80	U+6369	# <cjk>
+0x9D81	U+63BE	# <cjk>
+0x9D82	U+63E9	# <cjk>
+0x9D83	U+63C0	# <cjk>
+0x9D84	U+63C6	# <cjk>
+0x9D85	U+63E3	# <cjk>
+0x9D86	U+63C9	# <cjk>
+0x9D87	U+63D2	# <cjk>
+0x9D88	U+63F6	# <cjk>
+0x9D89	U+63C4	# <cjk>
+0x9D8A	U+6416	# <cjk>
+0x9D8B	U+6434	# <cjk>
+0x9D8C	U+6406	# <cjk>
+0x9D8D	U+6413	# <cjk>
+0x9D8E	U+6426	# <cjk>
+0x9D8F	U+6436	# <cjk>
+0x9D90	U+651D	# <cjk>
+0x9D91	U+6417	# <cjk>
+0x9D92	U+6428	# <cjk>
+0x9D93	U+640F	# <cjk>
+0x9D94	U+6467	# <cjk>
+0x9D95	U+646F	# <cjk>
+0x9D96	U+6476	# <cjk>
+0x9D97	U+644E	# <cjk>
+0x9D98	U+652A	# <cjk>
+0x9D99	U+6495	# <cjk>
+0x9D9A	U+6493	# <cjk>
+0x9D9B	U+64A5	# <cjk>
+0x9D9C	U+64A9	# <cjk>
+0x9D9D	U+6488	# <cjk>
+0x9D9E	U+64BC	# <cjk>
+0x9D9F	U+64DA	# <cjk>
+0x9DA0	U+64D2	# <cjk>
+0x9DA1	U+64C5	# <cjk>
+0x9DA2	U+64C7	# <cjk>
+0x9DA3	U+64BB	# <cjk>
+0x9DA4	U+64D8	# <cjk>
+0x9DA5	U+64C2	# <cjk>
+0x9DA6	U+64F1	# <cjk>
+0x9DA7	U+64E7	# <cjk>
+0x9DA8	U+8209	# <cjk>
+0x9DA9	U+64E0	# <cjk>
+0x9DAA	U+64E1	# <cjk>
+0x9DAB	U+62AC	# <cjk>
+0x9DAC	U+64E3	# <cjk>
+0x9DAD	U+64EF	# <cjk>
+0x9DAE	U+652C	# <cjk>
+0x9DAF	U+64F6	# <cjk>
+0x9DB0	U+64F4	# <cjk>
+0x9DB1	U+64F2	# <cjk>
+0x9DB2	U+64FA	# <cjk>
+0x9DB3	U+6500	# <cjk>
+0x9DB4	U+64FD	# <cjk>
+0x9DB5	U+6518	# <cjk>
+0x9DB6	U+651C	# <cjk>
+0x9DB7	U+6505	# <cjk>
+0x9DB8	U+6524	# <cjk>
+0x9DB9	U+6523	# <cjk>
+0x9DBA	U+652B	# <cjk>
+0x9DBB	U+6534	# <cjk>
+0x9DBC	U+6535	# <cjk>
+0x9DBD	U+6537	# <cjk>
+0x9DBE	U+6536	# <cjk>
+0x9DBF	U+6538	# <cjk>
+0x9DC0	U+754B	# <cjk>
+0x9DC1	U+6548	# <cjk>
+0x9DC2	U+6556	# <cjk>
+0x9DC3	U+6555	# <cjk>
+0x9DC4	U+654D	# <cjk>
+0x9DC5	U+6558	# <cjk>
+0x9DC6	U+655E	# <cjk>
+0x9DC7	U+655D	# <cjk>
+0x9DC8	U+6572	# <cjk>
+0x9DC9	U+6578	# <cjk>
+0x9DCA	U+6582	# <cjk>
+0x9DCB	U+6583	# <cjk>
+0x9DCC	U+8B8A	# <cjk>
+0x9DCD	U+659B	# <cjk>
+0x9DCE	U+659F	# <cjk>
+0x9DCF	U+65AB	# <cjk>
+0x9DD0	U+65B7	# <cjk>
+0x9DD1	U+65C3	# <cjk>
+0x9DD2	U+65C6	# <cjk>
+0x9DD3	U+65C1	# <cjk>
+0x9DD4	U+65C4	# <cjk>
+0x9DD5	U+65CC	# <cjk>
+0x9DD6	U+65D2	# <cjk>
+0x9DD7	U+65DB	# <cjk>
+0x9DD8	U+65D9	# <cjk>
+0x9DD9	U+65E0	# <cjk>
+0x9DDA	U+65E1	# <cjk>
+0x9DDB	U+65F1	# <cjk>
+0x9DDC	U+6772	# <cjk>
+0x9DDD	U+660A	# <cjk>
+0x9DDE	U+6603	# <cjk>
+0x9DDF	U+65FB	# <cjk>
+0x9DE0	U+6773	# <cjk>
+0x9DE1	U+6635	# <cjk>
+0x9DE2	U+6636	# <cjk>
+0x9DE3	U+6634	# <cjk>
+0x9DE4	U+661C	# <cjk>
+0x9DE5	U+664F	# <cjk>
+0x9DE6	U+6644	# <cjk>
+0x9DE7	U+6649	# <cjk>
+0x9DE8	U+6641	# <cjk>
+0x9DE9	U+665E	# <cjk>
+0x9DEA	U+665D	# <cjk>
+0x9DEB	U+6664	# <cjk>
+0x9DEC	U+6667	# <cjk>
+0x9DED	U+6668	# <cjk>
+0x9DEE	U+665F	# <cjk>
+0x9DEF	U+6662	# <cjk>
+0x9DF0	U+6670	# <cjk>
+0x9DF1	U+6683	# <cjk>
+0x9DF2	U+6688	# <cjk>
+0x9DF3	U+668E	# <cjk>
+0x9DF4	U+6689	# <cjk>
+0x9DF5	U+6684	# <cjk>
+0x9DF6	U+6698	# <cjk>
+0x9DF7	U+669D	# <cjk>
+0x9DF8	U+66C1	# <cjk>
+0x9DF9	U+66B9	# <cjk>
+0x9DFA	U+66C9	# <cjk>
+0x9DFB	U+66BE	# <cjk>
+0x9DFC	U+66BC	# <cjk>
+0x9E40	U+66C4	# <cjk>
+0x9E41	U+66B8	# <cjk>
+0x9E42	U+66D6	# <cjk>
+0x9E43	U+66DA	# <cjk>
+0x9E44	U+66E0	# <cjk>
+0x9E45	U+663F	# <cjk>
+0x9E46	U+66E6	# <cjk>
+0x9E47	U+66E9	# <cjk>
+0x9E48	U+66F0	# <cjk>
+0x9E49	U+66F5	# <cjk>
+0x9E4A	U+66F7	# <cjk>
+0x9E4B	U+670F	# <cjk>
+0x9E4C	U+6716	# <cjk>
+0x9E4D	U+671E	# <cjk>
+0x9E4E	U+6726	# <cjk>
+0x9E4F	U+6727	# <cjk>
+0x9E50	U+9738	# <cjk>
+0x9E51	U+672E	# <cjk>
+0x9E52	U+673F	# <cjk>
+0x9E53	U+6736	# <cjk>
+0x9E54	U+6741	# <cjk>
+0x9E55	U+6738	# <cjk>
+0x9E56	U+6737	# <cjk>
+0x9E57	U+6746	# <cjk>
+0x9E58	U+675E	# <cjk>
+0x9E59	U+6760	# <cjk>
+0x9E5A	U+6759	# <cjk>
+0x9E5B	U+6763	# <cjk>
+0x9E5C	U+6764	# <cjk>
+0x9E5D	U+6789	# <cjk>
+0x9E5E	U+6770	# <cjk>
+0x9E5F	U+67A9	# <cjk>
+0x9E60	U+677C	# <cjk>
+0x9E61	U+676A	# <cjk>
+0x9E62	U+678C	# <cjk>
+0x9E63	U+678B	# <cjk>
+0x9E64	U+67A6	# <cjk>
+0x9E65	U+67A1	# <cjk>
+0x9E66	U+6785	# <cjk>
+0x9E67	U+67B7	# <cjk>
+0x9E68	U+67EF	# <cjk>
+0x9E69	U+67B4	# <cjk>
+0x9E6A	U+67EC	# <cjk>
+0x9E6B	U+67B3	# <cjk>
+0x9E6C	U+67E9	# <cjk>
+0x9E6D	U+67B8	# <cjk>
+0x9E6E	U+67E4	# <cjk>
+0x9E6F	U+67DE	# <cjk>
+0x9E70	U+67DD	# <cjk>
+0x9E71	U+67E2	# <cjk>
+0x9E72	U+67EE	# <cjk>
+0x9E73	U+67B9	# <cjk>
+0x9E74	U+67CE	# <cjk>
+0x9E75	U+67C6	# <cjk>
+0x9E76	U+67E7	# <cjk>
+0x9E77	U+6A9C	# <cjk>
+0x9E78	U+681E	# <cjk>
+0x9E79	U+6846	# <cjk>
+0x9E7A	U+6829	# <cjk>
+0x9E7B	U+6840	# <cjk>
+0x9E7C	U+684D	# <cjk>
+0x9E7D	U+6832	# <cjk>
+0x9E7E	U+684E	# <cjk>
+0x9E80	U+68B3	# <cjk>
+0x9E81	U+682B	# <cjk>
+0x9E82	U+6859	# <cjk>
+0x9E83	U+6863	# <cjk>
+0x9E84	U+6877	# <cjk>
+0x9E85	U+687F	# <cjk>
+0x9E86	U+689F	# <cjk>
+0x9E87	U+688F	# <cjk>
+0x9E88	U+68AD	# <cjk>
+0x9E89	U+6894	# <cjk>
+0x9E8A	U+689D	# <cjk>
+0x9E8B	U+689B	# <cjk>
+0x9E8C	U+6883	# <cjk>
+0x9E8D	U+6AAE	# <cjk>
+0x9E8E	U+68B9	# <cjk>
+0x9E8F	U+6874	# <cjk>
+0x9E90	U+68B5	# <cjk>
+0x9E91	U+68A0	# <cjk>
+0x9E92	U+68BA	# <cjk>
+0x9E93	U+690F	# <cjk>
+0x9E94	U+688D	# <cjk>
+0x9E95	U+687E	# <cjk>
+0x9E96	U+6901	# <cjk>
+0x9E97	U+68CA	# <cjk>
+0x9E98	U+6908	# <cjk>
+0x9E99	U+68D8	# <cjk>
+0x9E9A	U+6922	# <cjk>
+0x9E9B	U+6926	# <cjk>
+0x9E9C	U+68E1	# <cjk>
+0x9E9D	U+690C	# <cjk>
+0x9E9E	U+68CD	# <cjk>
+0x9E9F	U+68D4	# <cjk>
+0x9EA0	U+68E7	# <cjk>
+0x9EA1	U+68D5	# <cjk>
+0x9EA2	U+6936	# <cjk>
+0x9EA3	U+6912	# <cjk>
+0x9EA4	U+6904	# <cjk>
+0x9EA5	U+68D7	# <cjk>
+0x9EA6	U+68E3	# <cjk>
+0x9EA7	U+6925	# <cjk>
+0x9EA8	U+68F9	# <cjk>
+0x9EA9	U+68E0	# <cjk>
+0x9EAA	U+68EF	# <cjk>
+0x9EAB	U+6928	# <cjk>
+0x9EAC	U+692A	# <cjk>
+0x9EAD	U+691A	# <cjk>
+0x9EAE	U+6923	# <cjk>
+0x9EAF	U+6921	# <cjk>
+0x9EB0	U+68C6	# <cjk>
+0x9EB1	U+6979	# <cjk>
+0x9EB2	U+6977	# <cjk>
+0x9EB3	U+695C	# <cjk>
+0x9EB4	U+6978	# <cjk>
+0x9EB5	U+696B	# <cjk>
+0x9EB6	U+6954	# <cjk>
+0x9EB7	U+697E	# <cjk>
+0x9EB8	U+696E	# <cjk>
+0x9EB9	U+6939	# <cjk>
+0x9EBA	U+6974	# <cjk>
+0x9EBB	U+693D	# <cjk>
+0x9EBC	U+6959	# <cjk>
+0x9EBD	U+6930	# <cjk>
+0x9EBE	U+6961	# <cjk>
+0x9EBF	U+695E	# <cjk>
+0x9EC0	U+695D	# <cjk>
+0x9EC1	U+6981	# <cjk>
+0x9EC2	U+696A	# <cjk>
+0x9EC3	U+69B2	# <cjk>
+0x9EC4	U+69AE	# <cjk>
+0x9EC5	U+69D0	# <cjk>
+0x9EC6	U+69BF	# <cjk>
+0x9EC7	U+69C1	# <cjk>
+0x9EC8	U+69D3	# <cjk>
+0x9EC9	U+69BE	# <cjk>
+0x9ECA	U+69CE	# <cjk>
+0x9ECB	U+5BE8	# <cjk>
+0x9ECC	U+69CA	# <cjk>
+0x9ECD	U+69DD	# <cjk>
+0x9ECE	U+69BB	# <cjk>
+0x9ECF	U+69C3	# <cjk>
+0x9ED0	U+69A7	# <cjk>
+0x9ED1	U+6A2E	# <cjk>
+0x9ED2	U+6991	# <cjk>
+0x9ED3	U+69A0	# <cjk>
+0x9ED4	U+699C	# <cjk>
+0x9ED5	U+6995	# <cjk>
+0x9ED6	U+69B4	# <cjk>
+0x9ED7	U+69DE	# <cjk>
+0x9ED8	U+69E8	# <cjk>
+0x9ED9	U+6A02	# <cjk>
+0x9EDA	U+6A1B	# <cjk>
+0x9EDB	U+69FF	# <cjk>
+0x9EDC	U+6B0A	# <cjk>
+0x9EDD	U+69F9	# <cjk>
+0x9EDE	U+69F2	# <cjk>
+0x9EDF	U+69E7	# <cjk>
+0x9EE0	U+6A05	# <cjk>
+0x9EE1	U+69B1	# <cjk>
+0x9EE2	U+6A1E	# <cjk>
+0x9EE3	U+69ED	# <cjk>
+0x9EE4	U+6A14	# <cjk>
+0x9EE5	U+69EB	# <cjk>
+0x9EE6	U+6A0A	# <cjk>
+0x9EE7	U+6A12	# <cjk>
+0x9EE8	U+6AC1	# <cjk>
+0x9EE9	U+6A23	# <cjk>
+0x9EEA	U+6A13	# <cjk>
+0x9EEB	U+6A44	# <cjk>
+0x9EEC	U+6A0C	# <cjk>
+0x9EED	U+6A72	# <cjk>
+0x9EEE	U+6A36	# <cjk>
+0x9EEF	U+6A78	# <cjk>
+0x9EF0	U+6A47	# <cjk>
+0x9EF1	U+6A62	# <cjk>
+0x9EF2	U+6A59	# <cjk>
+0x9EF3	U+6A66	# <cjk>
+0x9EF4	U+6A48	# <cjk>
+0x9EF5	U+6A38	# <cjk>
+0x9EF6	U+6A22	# <cjk>
+0x9EF7	U+6A90	# <cjk>
+0x9EF8	U+6A8D	# <cjk>
+0x9EF9	U+6AA0	# <cjk>
+0x9EFA	U+6A84	# <cjk>
+0x9EFB	U+6AA2	# <cjk>
+0x9EFC	U+6AA3	# <cjk>
+0x9F40	U+6A97	# <cjk>
+0x9F41	U+8617	# <cjk>
+0x9F42	U+6ABB	# <cjk>
+0x9F43	U+6AC3	# <cjk>
+0x9F44	U+6AC2	# <cjk>
+0x9F45	U+6AB8	# <cjk>
+0x9F46	U+6AB3	# <cjk>
+0x9F47	U+6AAC	# <cjk>
+0x9F48	U+6ADE	# <cjk>
+0x9F49	U+6AD1	# <cjk>
+0x9F4A	U+6ADF	# <cjk>
+0x9F4B	U+6AAA	# <cjk>
+0x9F4C	U+6ADA	# <cjk>
+0x9F4D	U+6AEA	# <cjk>
+0x9F4E	U+6AFB	# <cjk>
+0x9F4F	U+6B05	# <cjk>
+0x9F50	U+8616	# <cjk>
+0x9F51	U+6AFA	# <cjk>
+0x9F52	U+6B12	# <cjk>
+0x9F53	U+6B16	# <cjk>
+0x9F54	U+9B31	# <cjk>
+0x9F55	U+6B1F	# <cjk>
+0x9F56	U+6B38	# <cjk>
+0x9F57	U+6B37	# <cjk>
+0x9F58	U+76DC	# <cjk>
+0x9F59	U+6B39	# <cjk>
+0x9F5A	U+98EE	# <cjk>
+0x9F5B	U+6B47	# <cjk>
+0x9F5C	U+6B43	# <cjk>
+0x9F5D	U+6B49	# <cjk>
+0x9F5E	U+6B50	# <cjk>
+0x9F5F	U+6B59	# <cjk>
+0x9F60	U+6B54	# <cjk>
+0x9F61	U+6B5B	# <cjk>
+0x9F62	U+6B5F	# <cjk>
+0x9F63	U+6B61	# <cjk>
+0x9F64	U+6B78	# <cjk>
+0x9F65	U+6B79	# <cjk>
+0x9F66	U+6B7F	# <cjk>
+0x9F67	U+6B80	# <cjk>
+0x9F68	U+6B84	# <cjk>
+0x9F69	U+6B83	# <cjk>
+0x9F6A	U+6B8D	# <cjk>
+0x9F6B	U+6B98	# <cjk>
+0x9F6C	U+6B95	# <cjk>
+0x9F6D	U+6B9E	# <cjk>
+0x9F6E	U+6BA4	# <cjk>
+0x9F6F	U+6BAA	# <cjk>
+0x9F70	U+6BAB	# <cjk>
+0x9F71	U+6BAF	# <cjk>
+0x9F72	U+6BB2	# <cjk>
+0x9F73	U+6BB1	# <cjk>
+0x9F74	U+6BB3	# <cjk>
+0x9F75	U+6BB7	# <cjk>
+0x9F76	U+6BBC	# <cjk>
+0x9F77	U+6BC6	# <cjk>
+0x9F78	U+6BCB	# <cjk>
+0x9F79	U+6BD3	# <cjk>
+0x9F7A	U+6BDF	# <cjk>
+0x9F7B	U+6BEC	# <cjk>
+0x9F7C	U+6BEB	# <cjk>
+0x9F7D	U+6BF3	# <cjk>
+0x9F7E	U+6BEF	# <cjk>
+0x9F80	U+9EBE	# <cjk>
+0x9F81	U+6C08	# <cjk>
+0x9F82	U+6C13	# <cjk>
+0x9F83	U+6C14	# <cjk>
+0x9F84	U+6C1B	# <cjk>
+0x9F85	U+6C24	# <cjk>
+0x9F86	U+6C23	# <cjk>
+0x9F87	U+6C5E	# <cjk>
+0x9F88	U+6C55	# <cjk>
+0x9F89	U+6C62	# <cjk>
+0x9F8A	U+6C6A	# <cjk>
+0x9F8B	U+6C82	# <cjk>
+0x9F8C	U+6C8D	# <cjk>
+0x9F8D	U+6C9A	# <cjk>
+0x9F8E	U+6C81	# <cjk>
+0x9F8F	U+6C9B	# <cjk>
+0x9F90	U+6C7E	# <cjk>
+0x9F91	U+6C68	# <cjk>
+0x9F92	U+6C73	# <cjk>
+0x9F93	U+6C92	# <cjk>
+0x9F94	U+6C90	# <cjk>
+0x9F95	U+6CC4	# <cjk>
+0x9F96	U+6CF1	# <cjk>
+0x9F97	U+6CD3	# <cjk>
+0x9F98	U+6CBD	# <cjk>
+0x9F99	U+6CD7	# <cjk>
+0x9F9A	U+6CC5	# <cjk>
+0x9F9B	U+6CDD	# <cjk>
+0x9F9C	U+6CAE	# <cjk>
+0x9F9D	U+6CB1	# <cjk>
+0x9F9E	U+6CBE	# <cjk>
+0x9F9F	U+6CBA	# <cjk>
+0x9FA0	U+6CDB	# <cjk>
+0x9FA1	U+6CEF	# <cjk>
+0x9FA2	U+6CD9	# <cjk>
+0x9FA3	U+6CEA	# <cjk>
+0x9FA4	U+6D1F	# <cjk>
+0x9FA5	U+884D	# <cjk>
+0x9FA6	U+6D36	# <cjk>
+0x9FA7	U+6D2B	# <cjk>
+0x9FA8	U+6D3D	# <cjk>
+0x9FA9	U+6D38	# <cjk>
+0x9FAA	U+6D19	# <cjk>
+0x9FAB	U+6D35	# <cjk>
+0x9FAC	U+6D33	# <cjk>
+0x9FAD	U+6D12	# <cjk>
+0x9FAE	U+6D0C	# <cjk>
+0x9FAF	U+6D63	# <cjk>
+0x9FB0	U+6D93	# <cjk>
+0x9FB1	U+6D64	# <cjk>
+0x9FB2	U+6D5A	# <cjk>
+0x9FB3	U+6D79	# <cjk>
+0x9FB4	U+6D59	# <cjk>
+0x9FB5	U+6D8E	# <cjk>
+0x9FB6	U+6D95	# <cjk>
+0x9FB7	U+6FE4	# <cjk>
+0x9FB8	U+6D85	# <cjk>
+0x9FB9	U+6DF9	# <cjk>
+0x9FBA	U+6E15	# <cjk>
+0x9FBB	U+6E0A	# <cjk>
+0x9FBC	U+6DB5	# <cjk>
+0x9FBD	U+6DC7	# <cjk>
+0x9FBE	U+6DE6	# <cjk>
+0x9FBF	U+6DB8	# <cjk>
+0x9FC0	U+6DC6	# <cjk>
+0x9FC1	U+6DEC	# <cjk>
+0x9FC2	U+6DDE	# <cjk>
+0x9FC3	U+6DCC	# <cjk>
+0x9FC4	U+6DE8	# <cjk>
+0x9FC5	U+6DD2	# <cjk>
+0x9FC6	U+6DC5	# <cjk>
+0x9FC7	U+6DFA	# <cjk>
+0x9FC8	U+6DD9	# <cjk>
+0x9FC9	U+6DE4	# <cjk>
+0x9FCA	U+6DD5	# <cjk>
+0x9FCB	U+6DEA	# <cjk>
+0x9FCC	U+6DEE	# <cjk>
+0x9FCD	U+6E2D	# <cjk>
+0x9FCE	U+6E6E	# <cjk>
+0x9FCF	U+6E2E	# <cjk>
+0x9FD0	U+6E19	# <cjk>
+0x9FD1	U+6E72	# <cjk>
+0x9FD2	U+6E5F	# <cjk>
+0x9FD3	U+6E3E	# <cjk>
+0x9FD4	U+6E23	# <cjk>
+0x9FD5	U+6E6B	# <cjk>
+0x9FD6	U+6E2B	# <cjk>
+0x9FD7	U+6E76	# <cjk>
+0x9FD8	U+6E4D	# <cjk>
+0x9FD9	U+6E1F	# <cjk>
+0x9FDA	U+6E43	# <cjk>
+0x9FDB	U+6E3A	# <cjk>
+0x9FDC	U+6E4E	# <cjk>
+0x9FDD	U+6E24	# <cjk>
+0x9FDE	U+6EFF	# <cjk>
+0x9FDF	U+6E1D	# <cjk>
+0x9FE0	U+6E38	# <cjk>
+0x9FE1	U+6E82	# <cjk>
+0x9FE2	U+6EAA	# <cjk>
+0x9FE3	U+6E98	# <cjk>
+0x9FE4	U+6EC9	# <cjk>
+0x9FE5	U+6EB7	# <cjk>
+0x9FE6	U+6ED3	# <cjk>
+0x9FE7	U+6EBD	# <cjk>
+0x9FE8	U+6EAF	# <cjk>
+0x9FE9	U+6EC4	# <cjk>
+0x9FEA	U+6EB2	# <cjk>
+0x9FEB	U+6ED4	# <cjk>
+0x9FEC	U+6ED5	# <cjk>
+0x9FED	U+6E8F	# <cjk>
+0x9FEE	U+6EA5	# <cjk>
+0x9FEF	U+6EC2	# <cjk>
+0x9FF0	U+6E9F	# <cjk>
+0x9FF1	U+6F41	# <cjk>
+0x9FF2	U+6F11	# <cjk>
+0x9FF3	U+704C	# <cjk>
+0x9FF4	U+6EEC	# <cjk>
+0x9FF5	U+6EF8	# <cjk>
+0x9FF6	U+6EFE	# <cjk>
+0x9FF7	U+6F3F	# <cjk>
+0x9FF8	U+6EF2	# <cjk>
+0x9FF9	U+6F31	# <cjk>
+0x9FFA	U+6EEF	# <cjk>
+0x9FFB	U+6F32	# <cjk>
+0x9FFC	U+6ECC	# <cjk>
+0xE040	U+6F3E	# <cjk>
+0xE041	U+6F13	# <cjk>
+0xE042	U+6EF7	# <cjk>
+0xE043	U+6F86	# <cjk>
+0xE044	U+6F7A	# <cjk>
+0xE045	U+6F78	# <cjk>
+0xE046	U+6F81	# <cjk>
+0xE047	U+6F80	# <cjk>
+0xE048	U+6F6F	# <cjk>
+0xE049	U+6F5B	# <cjk>
+0xE04A	U+6FF3	# <cjk>
+0xE04B	U+6F6D	# <cjk>
+0xE04C	U+6F82	# <cjk>
+0xE04D	U+6F7C	# <cjk>
+0xE04E	U+6F58	# <cjk>
+0xE04F	U+6F8E	# <cjk>
+0xE050	U+6F91	# <cjk>
+0xE051	U+6FC2	# <cjk>
+0xE052	U+6F66	# <cjk>
+0xE053	U+6FB3	# <cjk>
+0xE054	U+6FA3	# <cjk>
+0xE055	U+6FA1	# <cjk>
+0xE056	U+6FA4	# <cjk>
+0xE057	U+6FB9	# <cjk>
+0xE058	U+6FC6	# <cjk>
+0xE059	U+6FAA	# <cjk>
+0xE05A	U+6FDF	# <cjk>
+0xE05B	U+6FD5	# <cjk>
+0xE05C	U+6FEC	# <cjk>
+0xE05D	U+6FD4	# <cjk>
+0xE05E	U+6FD8	# <cjk>
+0xE05F	U+6FF1	# <cjk>
+0xE060	U+6FEE	# <cjk>
+0xE061	U+6FDB	# <cjk>
+0xE062	U+7009	# <cjk>
+0xE063	U+700B	# <cjk>
+0xE064	U+6FFA	# <cjk>
+0xE065	U+7011	# <cjk>
+0xE066	U+7001	# <cjk>
+0xE067	U+700F	# <cjk>
+0xE068	U+6FFE	# <cjk>
+0xE069	U+701B	# <cjk>
+0xE06A	U+701A	# <cjk>
+0xE06B	U+6F74	# <cjk>
+0xE06C	U+701D	# <cjk>
+0xE06D	U+7018	# <cjk>
+0xE06E	U+701F	# <cjk>
+0xE06F	U+7030	# <cjk>
+0xE070	U+703E	# <cjk>
+0xE071	U+7032	# <cjk>
+0xE072	U+7051	# <cjk>
+0xE073	U+7063	# <cjk>
+0xE074	U+7099	# <cjk>
+0xE075	U+7092	# <cjk>
+0xE076	U+70AF	# <cjk>
+0xE077	U+70F1	# <cjk>
+0xE078	U+70AC	# <cjk>
+0xE079	U+70B8	# <cjk>
+0xE07A	U+70B3	# <cjk>
+0xE07B	U+70AE	# <cjk>
+0xE07C	U+70DF	# <cjk>
+0xE07D	U+70CB	# <cjk>
+0xE07E	U+70DD	# <cjk>
+0xE080	U+70D9	# <cjk>
+0xE081	U+7109	# <cjk>
+0xE082	U+70FD	# <cjk>
+0xE083	U+711C	# <cjk>
+0xE084	U+7119	# <cjk>
+0xE085	U+7165	# <cjk>
+0xE086	U+7155	# <cjk>
+0xE087	U+7188	# <cjk>
+0xE088	U+7166	# <cjk>
+0xE089	U+7162	# <cjk>
+0xE08A	U+714C	# <cjk>
+0xE08B	U+7156	# <cjk>
+0xE08C	U+716C	# <cjk>
+0xE08D	U+718F	# <cjk>
+0xE08E	U+71FB	# <cjk>
+0xE08F	U+7184	# <cjk>
+0xE090	U+7195	# <cjk>
+0xE091	U+71A8	# <cjk>
+0xE092	U+71AC	# <cjk>
+0xE093	U+71D7	# <cjk>
+0xE094	U+71B9	# <cjk>
+0xE095	U+71BE	# <cjk>
+0xE096	U+71D2	# <cjk>
+0xE097	U+71C9	# <cjk>
+0xE098	U+71D4	# <cjk>
+0xE099	U+71CE	# <cjk>
+0xE09A	U+71E0	# <cjk>
+0xE09B	U+71EC	# <cjk>
+0xE09C	U+71E7	# <cjk>
+0xE09D	U+71F5	# <cjk>
+0xE09E	U+71FC	# <cjk>
+0xE09F	U+71F9	# <cjk>
+0xE0A0	U+71FF	# <cjk>
+0xE0A1	U+720D	# <cjk>
+0xE0A2	U+7210	# <cjk>
+0xE0A3	U+721B	# <cjk>
+0xE0A4	U+7228	# <cjk>
+0xE0A5	U+722D	# <cjk>
+0xE0A6	U+722C	# <cjk>
+0xE0A7	U+7230	# <cjk>
+0xE0A8	U+7232	# <cjk>
+0xE0A9	U+723B	# <cjk>
+0xE0AA	U+723C	# <cjk>
+0xE0AB	U+723F	# <cjk>
+0xE0AC	U+7240	# <cjk>
+0xE0AD	U+7246	# <cjk>
+0xE0AE	U+724B	# <cjk>
+0xE0AF	U+7258	# <cjk>
+0xE0B0	U+7274	# <cjk>
+0xE0B1	U+727E	# <cjk>
+0xE0B2	U+7282	# <cjk>
+0xE0B3	U+7281	# <cjk>
+0xE0B4	U+7287	# <cjk>
+0xE0B5	U+7292	# <cjk>
+0xE0B6	U+7296	# <cjk>
+0xE0B7	U+72A2	# <cjk>
+0xE0B8	U+72A7	# <cjk>
+0xE0B9	U+72B9	# <cjk>
+0xE0BA	U+72B2	# <cjk>
+0xE0BB	U+72C3	# <cjk>
+0xE0BC	U+72C6	# <cjk>
+0xE0BD	U+72C4	# <cjk>
+0xE0BE	U+72CE	# <cjk>
+0xE0BF	U+72D2	# <cjk>
+0xE0C0	U+72E2	# <cjk>
+0xE0C1	U+72E0	# <cjk>
+0xE0C2	U+72E1	# <cjk>
+0xE0C3	U+72F9	# <cjk>
+0xE0C4	U+72F7	# <cjk>
+0xE0C5	U+500F	# <cjk>
+0xE0C6	U+7317	# <cjk>
+0xE0C7	U+730A	# <cjk>
+0xE0C8	U+731C	# <cjk>
+0xE0C9	U+7316	# <cjk>
+0xE0CA	U+731D	# <cjk>
+0xE0CB	U+7334	# <cjk>
+0xE0CC	U+732F	# <cjk>
+0xE0CD	U+7329	# <cjk>
+0xE0CE	U+7325	# <cjk>
+0xE0CF	U+733E	# <cjk>
+0xE0D0	U+734E	# <cjk>
+0xE0D1	U+734F	# <cjk>
+0xE0D2	U+9ED8	# <cjk>
+0xE0D3	U+7357	# <cjk>
+0xE0D4	U+736A	# <cjk>
+0xE0D5	U+7368	# <cjk>
+0xE0D6	U+7370	# <cjk>
+0xE0D7	U+7378	# <cjk>
+0xE0D8	U+7375	# <cjk>
+0xE0D9	U+737B	# <cjk>
+0xE0DA	U+737A	# <cjk>
+0xE0DB	U+73C8	# <cjk>
+0xE0DC	U+73B3	# <cjk>
+0xE0DD	U+73CE	# <cjk>
+0xE0DE	U+73BB	# <cjk>
+0xE0DF	U+73C0	# <cjk>
+0xE0E0	U+73E5	# <cjk>
+0xE0E1	U+73EE	# <cjk>
+0xE0E2	U+73DE	# <cjk>
+0xE0E3	U+74A2	# <cjk>
+0xE0E4	U+7405	# <cjk>
+0xE0E5	U+746F	# <cjk>
+0xE0E6	U+7425	# <cjk>
+0xE0E7	U+73F8	# <cjk>
+0xE0E8	U+7432	# <cjk>
+0xE0E9	U+743A	# <cjk>
+0xE0EA	U+7455	# <cjk>
+0xE0EB	U+743F	# <cjk>
+0xE0EC	U+745F	# <cjk>
+0xE0ED	U+7459	# <cjk>
+0xE0EE	U+7441	# <cjk>
+0xE0EF	U+745C	# <cjk>
+0xE0F0	U+7469	# <cjk>
+0xE0F1	U+7470	# <cjk>
+0xE0F2	U+7463	# <cjk>
+0xE0F3	U+746A	# <cjk>
+0xE0F4	U+7476	# <cjk>
+0xE0F5	U+747E	# <cjk>
+0xE0F6	U+748B	# <cjk>
+0xE0F7	U+749E	# <cjk>
+0xE0F8	U+74A7	# <cjk>
+0xE0F9	U+74CA	# <cjk>
+0xE0FA	U+74CF	# <cjk>
+0xE0FB	U+74D4	# <cjk>
+0xE0FC	U+73F1	# <cjk>
+0xE140	U+74E0	# <cjk>
+0xE141	U+74E3	# <cjk>
+0xE142	U+74E7	# <cjk>
+0xE143	U+74E9	# <cjk>
+0xE144	U+74EE	# <cjk>
+0xE145	U+74F2	# <cjk>
+0xE146	U+74F0	# <cjk>
+0xE147	U+74F1	# <cjk>
+0xE148	U+74F8	# <cjk>
+0xE149	U+74F7	# <cjk>
+0xE14A	U+7504	# <cjk>
+0xE14B	U+7503	# <cjk>
+0xE14C	U+7505	# <cjk>
+0xE14D	U+750C	# <cjk>
+0xE14E	U+750E	# <cjk>
+0xE14F	U+750D	# <cjk>
+0xE150	U+7515	# <cjk>
+0xE151	U+7513	# <cjk>
+0xE152	U+751E	# <cjk>
+0xE153	U+7526	# <cjk>
+0xE154	U+752C	# <cjk>
+0xE155	U+753C	# <cjk>
+0xE156	U+7544	# <cjk>
+0xE157	U+754D	# <cjk>
+0xE158	U+754A	# <cjk>
+0xE159	U+7549	# <cjk>
+0xE15A	U+755B	# <cjk>
+0xE15B	U+7546	# <cjk>
+0xE15C	U+755A	# <cjk>
+0xE15D	U+7569	# <cjk>
+0xE15E	U+7564	# <cjk>
+0xE15F	U+7567	# <cjk>
+0xE160	U+756B	# <cjk>
+0xE161	U+756D	# <cjk>
+0xE162	U+7578	# <cjk>
+0xE163	U+7576	# <cjk>
+0xE164	U+7586	# <cjk>
+0xE165	U+7587	# <cjk>
+0xE166	U+7574	# <cjk>
+0xE167	U+758A	# <cjk>
+0xE168	U+7589	# <cjk>
+0xE169	U+7582	# <cjk>
+0xE16A	U+7594	# <cjk>
+0xE16B	U+759A	# <cjk>
+0xE16C	U+759D	# <cjk>
+0xE16D	U+75A5	# <cjk>
+0xE16E	U+75A3	# <cjk>
+0xE16F	U+75C2	# <cjk>
+0xE170	U+75B3	# <cjk>
+0xE171	U+75C3	# <cjk>
+0xE172	U+75B5	# <cjk>
+0xE173	U+75BD	# <cjk>
+0xE174	U+75B8	# <cjk>
+0xE175	U+75BC	# <cjk>
+0xE176	U+75B1	# <cjk>
+0xE177	U+75CD	# <cjk>
+0xE178	U+75CA	# <cjk>
+0xE179	U+75D2	# <cjk>
+0xE17A	U+75D9	# <cjk>
+0xE17B	U+75E3	# <cjk>
+0xE17C	U+75DE	# <cjk>
+0xE17D	U+75FE	# <cjk>
+0xE17E	U+75FF	# <cjk>
+0xE180	U+75FC	# <cjk>
+0xE181	U+7601	# <cjk>
+0xE182	U+75F0	# <cjk>
+0xE183	U+75FA	# <cjk>
+0xE184	U+75F2	# <cjk>
+0xE185	U+75F3	# <cjk>
+0xE186	U+760B	# <cjk>
+0xE187	U+760D	# <cjk>
+0xE188	U+7609	# <cjk>
+0xE189	U+761F	# <cjk>
+0xE18A	U+7627	# <cjk>
+0xE18B	U+7620	# <cjk>
+0xE18C	U+7621	# <cjk>
+0xE18D	U+7622	# <cjk>
+0xE18E	U+7624	# <cjk>
+0xE18F	U+7634	# <cjk>
+0xE190	U+7630	# <cjk>
+0xE191	U+763B	# <cjk>
+0xE192	U+7647	# <cjk>
+0xE193	U+7648	# <cjk>
+0xE194	U+7646	# <cjk>
+0xE195	U+765C	# <cjk>
+0xE196	U+7658	# <cjk>
+0xE197	U+7661	# <cjk>
+0xE198	U+7662	# <cjk>
+0xE199	U+7668	# <cjk>
+0xE19A	U+7669	# <cjk>
+0xE19B	U+766A	# <cjk>
+0xE19C	U+7667	# <cjk>
+0xE19D	U+766C	# <cjk>
+0xE19E	U+7670	# <cjk>
+0xE19F	U+7672	# <cjk>
+0xE1A0	U+7676	# <cjk>
+0xE1A1	U+7678	# <cjk>
+0xE1A2	U+767C	# <cjk>
+0xE1A3	U+7680	# <cjk>
+0xE1A4	U+7683	# <cjk>
+0xE1A5	U+7688	# <cjk>
+0xE1A6	U+768B	# <cjk>
+0xE1A7	U+768E	# <cjk>
+0xE1A8	U+7696	# <cjk>
+0xE1A9	U+7693	# <cjk>
+0xE1AA	U+7699	# <cjk>
+0xE1AB	U+769A	# <cjk>
+0xE1AC	U+76B0	# <cjk>
+0xE1AD	U+76B4	# <cjk>
+0xE1AE	U+76B8	# <cjk>
+0xE1AF	U+76B9	# <cjk>
+0xE1B0	U+76BA	# <cjk>
+0xE1B1	U+76C2	# <cjk>
+0xE1B2	U+76CD	# <cjk>
+0xE1B3	U+76D6	# <cjk>
+0xE1B4	U+76D2	# <cjk>
+0xE1B5	U+76DE	# <cjk>
+0xE1B6	U+76E1	# <cjk>
+0xE1B7	U+76E5	# <cjk>
+0xE1B8	U+76E7	# <cjk>
+0xE1B9	U+76EA	# <cjk>
+0xE1BA	U+862F	# <cjk>
+0xE1BB	U+76FB	# <cjk>
+0xE1BC	U+7708	# <cjk>
+0xE1BD	U+7707	# <cjk>
+0xE1BE	U+7704	# <cjk>
+0xE1BF	U+7729	# <cjk>
+0xE1C0	U+7724	# <cjk>
+0xE1C1	U+771E	# <cjk>
+0xE1C2	U+7725	# <cjk>
+0xE1C3	U+7726	# <cjk>
+0xE1C4	U+771B	# <cjk>
+0xE1C5	U+7737	# <cjk>
+0xE1C6	U+7738	# <cjk>
+0xE1C7	U+7747	# <cjk>
+0xE1C8	U+775A	# <cjk>
+0xE1C9	U+7768	# <cjk>
+0xE1CA	U+776B	# <cjk>
+0xE1CB	U+775B	# <cjk>
+0xE1CC	U+7765	# <cjk>
+0xE1CD	U+777F	# <cjk>
+0xE1CE	U+777E	# <cjk>
+0xE1CF	U+7779	# <cjk>
+0xE1D0	U+778E	# <cjk>
+0xE1D1	U+778B	# <cjk>
+0xE1D2	U+7791	# <cjk>
+0xE1D3	U+77A0	# <cjk>
+0xE1D4	U+779E	# <cjk>
+0xE1D5	U+77B0	# <cjk>
+0xE1D6	U+77B6	# <cjk>
+0xE1D7	U+77B9	# <cjk>
+0xE1D8	U+77BF	# <cjk>
+0xE1D9	U+77BC	# <cjk>
+0xE1DA	U+77BD	# <cjk>
+0xE1DB	U+77BB	# <cjk>
+0xE1DC	U+77C7	# <cjk>
+0xE1DD	U+77CD	# <cjk>
+0xE1DE	U+77D7	# <cjk>
+0xE1DF	U+77DA	# <cjk>
+0xE1E0	U+77DC	# <cjk>
+0xE1E1	U+77E3	# <cjk>
+0xE1E2	U+77EE	# <cjk>
+0xE1E3	U+77FC	# <cjk>
+0xE1E4	U+780C	# <cjk>
+0xE1E5	U+7812	# <cjk>
+0xE1E6	U+7926	# <cjk>
+0xE1E7	U+7820	# <cjk>
+0xE1E8	U+792A	# <cjk>
+0xE1E9	U+7845	# <cjk>
+0xE1EA	U+788E	# <cjk>
+0xE1EB	U+7874	# <cjk>
+0xE1EC	U+7886	# <cjk>
+0xE1ED	U+787C	# <cjk>
+0xE1EE	U+789A	# <cjk>
+0xE1EF	U+788C	# <cjk>
+0xE1F0	U+78A3	# <cjk>
+0xE1F1	U+78B5	# <cjk>
+0xE1F2	U+78AA	# <cjk>
+0xE1F3	U+78AF	# <cjk>
+0xE1F4	U+78D1	# <cjk>
+0xE1F5	U+78C6	# <cjk>
+0xE1F6	U+78CB	# <cjk>
+0xE1F7	U+78D4	# <cjk>
+0xE1F8	U+78BE	# <cjk>
+0xE1F9	U+78BC	# <cjk>
+0xE1FA	U+78C5	# <cjk>
+0xE1FB	U+78CA	# <cjk>
+0xE1FC	U+78EC	# <cjk>
+0xE240	U+78E7	# <cjk>
+0xE241	U+78DA	# <cjk>
+0xE242	U+78FD	# <cjk>
+0xE243	U+78F4	# <cjk>
+0xE244	U+7907	# <cjk>
+0xE245	U+7912	# <cjk>
+0xE246	U+7911	# <cjk>
+0xE247	U+7919	# <cjk>
+0xE248	U+792C	# <cjk>
+0xE249	U+792B	# <cjk>
+0xE24A	U+7940	# <cjk>
+0xE24B	U+7960	# <cjk>
+0xE24C	U+7957	# <cjk>
+0xE24D	U+795F	# <cjk>
+0xE24E	U+795A	# <cjk>
+0xE24F	U+7955	# <cjk>
+0xE250	U+7953	# <cjk>
+0xE251	U+797A	# <cjk>
+0xE252	U+797F	# <cjk>
+0xE253	U+798A	# <cjk>
+0xE254	U+799D	# <cjk>
+0xE255	U+79A7	# <cjk>
+0xE256	U+9F4B	# <cjk>
+0xE257	U+79AA	# <cjk>
+0xE258	U+79AE	# <cjk>
+0xE259	U+79B3	# <cjk>
+0xE25A	U+79B9	# <cjk>
+0xE25B	U+79BA	# <cjk>
+0xE25C	U+79C9	# <cjk>
+0xE25D	U+79D5	# <cjk>
+0xE25E	U+79E7	# <cjk>
+0xE25F	U+79EC	# <cjk>
+0xE260	U+79E1	# <cjk>
+0xE261	U+79E3	# <cjk>
+0xE262	U+7A08	# <cjk>
+0xE263	U+7A0D	# <cjk>
+0xE264	U+7A18	# <cjk>
+0xE265	U+7A19	# <cjk>
+0xE266	U+7A20	# <cjk>
+0xE267	U+7A1F	# <cjk>
+0xE268	U+7980	# <cjk>
+0xE269	U+7A31	# <cjk>
+0xE26A	U+7A3B	# <cjk>
+0xE26B	U+7A3E	# <cjk>
+0xE26C	U+7A37	# <cjk>
+0xE26D	U+7A43	# <cjk>
+0xE26E	U+7A57	# <cjk>
+0xE26F	U+7A49	# <cjk>
+0xE270	U+7A61	# <cjk>
+0xE271	U+7A62	# <cjk>
+0xE272	U+7A69	# <cjk>
+0xE273	U+9F9D	# <cjk>
+0xE274	U+7A70	# <cjk>
+0xE275	U+7A79	# <cjk>
+0xE276	U+7A7D	# <cjk>
+0xE277	U+7A88	# <cjk>
+0xE278	U+7A97	# <cjk>
+0xE279	U+7A95	# <cjk>
+0xE27A	U+7A98	# <cjk>
+0xE27B	U+7A96	# <cjk>
+0xE27C	U+7AA9	# <cjk>
+0xE27D	U+7AC8	# <cjk>
+0xE27E	U+7AB0	# <cjk>
+0xE280	U+7AB6	# <cjk>
+0xE281	U+7AC5	# <cjk>
+0xE282	U+7AC4	# <cjk>
+0xE283	U+7ABF	# <cjk>
+0xE284	U+9083	# <cjk>
+0xE285	U+7AC7	# <cjk>
+0xE286	U+7ACA	# <cjk>
+0xE287	U+7ACD	# <cjk>
+0xE288	U+7ACF	# <cjk>
+0xE289	U+7AD5	# <cjk>
+0xE28A	U+7AD3	# <cjk>
+0xE28B	U+7AD9	# <cjk>
+0xE28C	U+7ADA	# <cjk>
+0xE28D	U+7ADD	# <cjk>
+0xE28E	U+7AE1	# <cjk>
+0xE28F	U+7AE2	# <cjk>
+0xE290	U+7AE6	# <cjk>
+0xE291	U+7AED	# <cjk>
+0xE292	U+7AF0	# <cjk>
+0xE293	U+7B02	# <cjk>
+0xE294	U+7B0F	# <cjk>
+0xE295	U+7B0A	# <cjk>
+0xE296	U+7B06	# <cjk>
+0xE297	U+7B33	# <cjk>
+0xE298	U+7B18	# <cjk>
+0xE299	U+7B19	# <cjk>
+0xE29A	U+7B1E	# <cjk>
+0xE29B	U+7B35	# <cjk>
+0xE29C	U+7B28	# <cjk>
+0xE29D	U+7B36	# <cjk>
+0xE29E	U+7B50	# <cjk>
+0xE29F	U+7B7A	# <cjk>
+0xE2A0	U+7B04	# <cjk>
+0xE2A1	U+7B4D	# <cjk>
+0xE2A2	U+7B0B	# <cjk>
+0xE2A3	U+7B4C	# <cjk>
+0xE2A4	U+7B45	# <cjk>
+0xE2A5	U+7B75	# <cjk>
+0xE2A6	U+7B65	# <cjk>
+0xE2A7	U+7B74	# <cjk>
+0xE2A8	U+7B67	# <cjk>
+0xE2A9	U+7B70	# <cjk>
+0xE2AA	U+7B71	# <cjk>
+0xE2AB	U+7B6C	# <cjk>
+0xE2AC	U+7B6E	# <cjk>
+0xE2AD	U+7B9D	# <cjk>
+0xE2AE	U+7B98	# <cjk>
+0xE2AF	U+7B9F	# <cjk>
+0xE2B0	U+7B8D	# <cjk>
+0xE2B1	U+7B9C	# <cjk>
+0xE2B2	U+7B9A	# <cjk>
+0xE2B3	U+7B8B	# <cjk>
+0xE2B4	U+7B92	# <cjk>
+0xE2B5	U+7B8F	# <cjk>
+0xE2B6	U+7B5D	# <cjk>
+0xE2B7	U+7B99	# <cjk>
+0xE2B8	U+7BCB	# <cjk>
+0xE2B9	U+7BC1	# <cjk>
+0xE2BA	U+7BCC	# <cjk>
+0xE2BB	U+7BCF	# <cjk>
+0xE2BC	U+7BB4	# <cjk>
+0xE2BD	U+7BC6	# <cjk>
+0xE2BE	U+7BDD	# <cjk>
+0xE2BF	U+7BE9	# <cjk>
+0xE2C0	U+7C11	# <cjk>
+0xE2C1	U+7C14	# <cjk>
+0xE2C2	U+7BE6	# <cjk>
+0xE2C3	U+7BE5	# <cjk>
+0xE2C4	U+7C60	# <cjk>
+0xE2C5	U+7C00	# <cjk>
+0xE2C6	U+7C07	# <cjk>
+0xE2C7	U+7C13	# <cjk>
+0xE2C8	U+7BF3	# <cjk>
+0xE2C9	U+7BF7	# <cjk>
+0xE2CA	U+7C17	# <cjk>
+0xE2CB	U+7C0D	# <cjk>
+0xE2CC	U+7BF6	# <cjk>
+0xE2CD	U+7C23	# <cjk>
+0xE2CE	U+7C27	# <cjk>
+0xE2CF	U+7C2A	# <cjk>
+0xE2D0	U+7C1F	# <cjk>
+0xE2D1	U+7C37	# <cjk>
+0xE2D2	U+7C2B	# <cjk>
+0xE2D3	U+7C3D	# <cjk>
+0xE2D4	U+7C4C	# <cjk>
+0xE2D5	U+7C43	# <cjk>
+0xE2D6	U+7C54	# <cjk>
+0xE2D7	U+7C4F	# <cjk>
+0xE2D8	U+7C40	# <cjk>
+0xE2D9	U+7C50	# <cjk>
+0xE2DA	U+7C58	# <cjk>
+0xE2DB	U+7C5F	# <cjk>
+0xE2DC	U+7C64	# <cjk>
+0xE2DD	U+7C56	# <cjk>
+0xE2DE	U+7C65	# <cjk>
+0xE2DF	U+7C6C	# <cjk>
+0xE2E0	U+7C75	# <cjk>
+0xE2E1	U+7C83	# <cjk>
+0xE2E2	U+7C90	# <cjk>
+0xE2E3	U+7CA4	# <cjk>
+0xE2E4	U+7CAD	# <cjk>
+0xE2E5	U+7CA2	# <cjk>
+0xE2E6	U+7CAB	# <cjk>
+0xE2E7	U+7CA1	# <cjk>
+0xE2E8	U+7CA8	# <cjk>
+0xE2E9	U+7CB3	# <cjk>
+0xE2EA	U+7CB2	# <cjk>
+0xE2EB	U+7CB1	# <cjk>
+0xE2EC	U+7CAE	# <cjk>
+0xE2ED	U+7CB9	# <cjk>
+0xE2EE	U+7CBD	# <cjk>
+0xE2EF	U+7CC0	# <cjk>
+0xE2F0	U+7CC5	# <cjk>
+0xE2F1	U+7CC2	# <cjk>
+0xE2F2	U+7CD8	# <cjk>
+0xE2F3	U+7CD2	# <cjk>
+0xE2F4	U+7CDC	# <cjk>
+0xE2F5	U+7CE2	# <cjk>
+0xE2F6	U+9B3B	# <cjk>
+0xE2F7	U+7CEF	# <cjk>
+0xE2F8	U+7CF2	# <cjk>
+0xE2F9	U+7CF4	# <cjk>
+0xE2FA	U+7CF6	# <cjk>
+0xE2FB	U+7CFA	# <cjk>
+0xE2FC	U+7D06	# <cjk>
+0xE340	U+7D02	# <cjk>
+0xE341	U+7D1C	# <cjk>
+0xE342	U+7D15	# <cjk>
+0xE343	U+7D0A	# <cjk>
+0xE344	U+7D45	# <cjk>
+0xE345	U+7D4B	# <cjk>
+0xE346	U+7D2E	# <cjk>
+0xE347	U+7D32	# <cjk>
+0xE348	U+7D3F	# <cjk>
+0xE349	U+7D35	# <cjk>
+0xE34A	U+7D46	# <cjk>
+0xE34B	U+7D73	# <cjk>
+0xE34C	U+7D56	# <cjk>
+0xE34D	U+7D4E	# <cjk>
+0xE34E	U+7D72	# <cjk>
+0xE34F	U+7D68	# <cjk>
+0xE350	U+7D6E	# <cjk>
+0xE351	U+7D4F	# <cjk>
+0xE352	U+7D63	# <cjk>
+0xE353	U+7D93	# <cjk>
+0xE354	U+7D89	# <cjk>
+0xE355	U+7D5B	# <cjk>
+0xE356	U+7D8F	# <cjk>
+0xE357	U+7D7D	# <cjk>
+0xE358	U+7D9B	# <cjk>
+0xE359	U+7DBA	# <cjk>
+0xE35A	U+7DAE	# <cjk>
+0xE35B	U+7DA3	# <cjk>
+0xE35C	U+7DB5	# <cjk>
+0xE35D	U+7DC7	# <cjk>
+0xE35E	U+7DBD	# <cjk>
+0xE35F	U+7DAB	# <cjk>
+0xE360	U+7E3D	# <cjk>
+0xE361	U+7DA2	# <cjk>
+0xE362	U+7DAF	# <cjk>
+0xE363	U+7DDC	# <cjk>
+0xE364	U+7DB8	# <cjk>
+0xE365	U+7D9F	# <cjk>
+0xE366	U+7DB0	# <cjk>
+0xE367	U+7DD8	# <cjk>
+0xE368	U+7DDD	# <cjk>
+0xE369	U+7DE4	# <cjk>
+0xE36A	U+7DDE	# <cjk>
+0xE36B	U+7DFB	# <cjk>
+0xE36C	U+7DF2	# <cjk>
+0xE36D	U+7DE1	# <cjk>
+0xE36E	U+7E05	# <cjk>
+0xE36F	U+7E0A	# <cjk>
+0xE370	U+7E23	# <cjk>
+0xE371	U+7E21	# <cjk>
+0xE372	U+7E12	# <cjk>
+0xE373	U+7E31	# <cjk>
+0xE374	U+7E1F	# <cjk>
+0xE375	U+7E09	# <cjk>
+0xE376	U+7E0B	# <cjk>
+0xE377	U+7E22	# <cjk>
+0xE378	U+7E46	# <cjk>
+0xE379	U+7E66	# <cjk>
+0xE37A	U+7E3B	# <cjk>
+0xE37B	U+7E35	# <cjk>
+0xE37C	U+7E39	# <cjk>
+0xE37D	U+7E43	# <cjk>
+0xE37E	U+7E37	# <cjk>
+0xE380	U+7E32	# <cjk>
+0xE381	U+7E3A	# <cjk>
+0xE382	U+7E67	# <cjk>
+0xE383	U+7E5D	# <cjk>
+0xE384	U+7E56	# <cjk>
+0xE385	U+7E5E	# <cjk>
+0xE386	U+7E59	# <cjk>
+0xE387	U+7E5A	# <cjk>
+0xE388	U+7E79	# <cjk>
+0xE389	U+7E6A	# <cjk>
+0xE38A	U+7E69	# <cjk>
+0xE38B	U+7E7C	# <cjk>
+0xE38C	U+7E7B	# <cjk>
+0xE38D	U+7E83	# <cjk>
+0xE38E	U+7DD5	# <cjk>
+0xE38F	U+7E7D	# <cjk>
+0xE390	U+8FAE	# <cjk>
+0xE391	U+7E7F	# <cjk>
+0xE392	U+7E88	# <cjk>
+0xE393	U+7E89	# <cjk>
+0xE394	U+7E8C	# <cjk>
+0xE395	U+7E92	# <cjk>
+0xE396	U+7E90	# <cjk>
+0xE397	U+7E93	# <cjk>
+0xE398	U+7E94	# <cjk>
+0xE399	U+7E96	# <cjk>
+0xE39A	U+7E8E	# <cjk>
+0xE39B	U+7E9B	# <cjk>
+0xE39C	U+7E9C	# <cjk>
+0xE39D	U+7F38	# <cjk>
+0xE39E	U+7F3A	# <cjk>
+0xE39F	U+7F45	# <cjk>
+0xE3A0	U+7F4C	# <cjk>
+0xE3A1	U+7F4D	# <cjk>
+0xE3A2	U+7F4E	# <cjk>
+0xE3A3	U+7F50	# <cjk>
+0xE3A4	U+7F51	# <cjk>
+0xE3A5	U+7F55	# <cjk>
+0xE3A6	U+7F54	# <cjk>
+0xE3A7	U+7F58	# <cjk>
+0xE3A8	U+7F5F	# <cjk>
+0xE3A9	U+7F60	# <cjk>
+0xE3AA	U+7F68	# <cjk>
+0xE3AB	U+7F69	# <cjk>
+0xE3AC	U+7F67	# <cjk>
+0xE3AD	U+7F78	# <cjk>
+0xE3AE	U+7F82	# <cjk>
+0xE3AF	U+7F86	# <cjk>
+0xE3B0	U+7F83	# <cjk>
+0xE3B1	U+7F88	# <cjk>
+0xE3B2	U+7F87	# <cjk>
+0xE3B3	U+7F8C	# <cjk>
+0xE3B4	U+7F94	# <cjk>
+0xE3B5	U+7F9E	# <cjk>
+0xE3B6	U+7F9D	# <cjk>
+0xE3B7	U+7F9A	# <cjk>
+0xE3B8	U+7FA3	# <cjk>
+0xE3B9	U+7FAF	# <cjk>
+0xE3BA	U+7FB2	# <cjk>
+0xE3BB	U+7FB9	# <cjk>
+0xE3BC	U+7FAE	# <cjk>
+0xE3BD	U+7FB6	# <cjk>
+0xE3BE	U+7FB8	# <cjk>
+0xE3BF	U+8B71	# <cjk>
+0xE3C0	U+7FC5	# <cjk>
+0xE3C1	U+7FC6	# <cjk>
+0xE3C2	U+7FCA	# <cjk>
+0xE3C3	U+7FD5	# <cjk>
+0xE3C4	U+7FD4	# <cjk>
+0xE3C5	U+7FE1	# <cjk>
+0xE3C6	U+7FE6	# <cjk>
+0xE3C7	U+7FE9	# <cjk>
+0xE3C8	U+7FF3	# <cjk>
+0xE3C9	U+7FF9	# <cjk>
+0xE3CA	U+98DC	# <cjk>
+0xE3CB	U+8006	# <cjk>
+0xE3CC	U+8004	# <cjk>
+0xE3CD	U+800B	# <cjk>
+0xE3CE	U+8012	# <cjk>
+0xE3CF	U+8018	# <cjk>
+0xE3D0	U+8019	# <cjk>
+0xE3D1	U+801C	# <cjk>
+0xE3D2	U+8021	# <cjk>
+0xE3D3	U+8028	# <cjk>
+0xE3D4	U+803F	# <cjk>
+0xE3D5	U+803B	# <cjk>
+0xE3D6	U+804A	# <cjk>
+0xE3D7	U+8046	# <cjk>
+0xE3D8	U+8052	# <cjk>
+0xE3D9	U+8058	# <cjk>
+0xE3DA	U+805A	# <cjk>
+0xE3DB	U+805F	# <cjk>
+0xE3DC	U+8062	# <cjk>
+0xE3DD	U+8068	# <cjk>
+0xE3DE	U+8073	# <cjk>
+0xE3DF	U+8072	# <cjk>
+0xE3E0	U+8070	# <cjk>
+0xE3E1	U+8076	# <cjk>
+0xE3E2	U+8079	# <cjk>
+0xE3E3	U+807D	# <cjk>
+0xE3E4	U+807F	# <cjk>
+0xE3E5	U+8084	# <cjk>
+0xE3E6	U+8086	# <cjk>
+0xE3E7	U+8085	# <cjk>
+0xE3E8	U+809B	# <cjk>
+0xE3E9	U+8093	# <cjk>
+0xE3EA	U+809A	# <cjk>
+0xE3EB	U+80AD	# <cjk>
+0xE3EC	U+5190	# <cjk>
+0xE3ED	U+80AC	# <cjk>
+0xE3EE	U+80DB	# <cjk>
+0xE3EF	U+80E5	# <cjk>
+0xE3F0	U+80D9	# <cjk>
+0xE3F1	U+80DD	# <cjk>
+0xE3F2	U+80C4	# <cjk>
+0xE3F3	U+80DA	# <cjk>
+0xE3F4	U+80D6	# <cjk>
+0xE3F5	U+8109	# <cjk>
+0xE3F6	U+80EF	# <cjk>
+0xE3F7	U+80F1	# <cjk>
+0xE3F8	U+811B	# <cjk>
+0xE3F9	U+8129	# <cjk>
+0xE3FA	U+8123	# <cjk>
+0xE3FB	U+812F	# <cjk>
+0xE3FC	U+814B	# <cjk>
+0xE440	U+968B	# <cjk>
+0xE441	U+8146	# <cjk>
+0xE442	U+813E	# <cjk>
+0xE443	U+8153	# <cjk>
+0xE444	U+8151	# <cjk>
+0xE445	U+80FC	# <cjk>
+0xE446	U+8171	# <cjk>
+0xE447	U+816E	# <cjk>
+0xE448	U+8165	# <cjk>
+0xE449	U+8166	# <cjk>
+0xE44A	U+8174	# <cjk>
+0xE44B	U+8183	# <cjk>
+0xE44C	U+8188	# <cjk>
+0xE44D	U+818A	# <cjk>
+0xE44E	U+8180	# <cjk>
+0xE44F	U+8182	# <cjk>
+0xE450	U+81A0	# <cjk>
+0xE451	U+8195	# <cjk>
+0xE452	U+81A4	# <cjk>
+0xE453	U+81A3	# <cjk>
+0xE454	U+815F	# <cjk>
+0xE455	U+8193	# <cjk>
+0xE456	U+81A9	# <cjk>
+0xE457	U+81B0	# <cjk>
+0xE458	U+81B5	# <cjk>
+0xE459	U+81BE	# <cjk>
+0xE45A	U+81B8	# <cjk>
+0xE45B	U+81BD	# <cjk>
+0xE45C	U+81C0	# <cjk>
+0xE45D	U+81C2	# <cjk>
+0xE45E	U+81BA	# <cjk>
+0xE45F	U+81C9	# <cjk>
+0xE460	U+81CD	# <cjk>
+0xE461	U+81D1	# <cjk>
+0xE462	U+81D9	# <cjk>
+0xE463	U+81D8	# <cjk>
+0xE464	U+81C8	# <cjk>
+0xE465	U+81DA	# <cjk>
+0xE466	U+81DF	# <cjk>
+0xE467	U+81E0	# <cjk>
+0xE468	U+81E7	# <cjk>
+0xE469	U+81FA	# <cjk>
+0xE46A	U+81FB	# <cjk>
+0xE46B	U+81FE	# <cjk>
+0xE46C	U+8201	# <cjk>
+0xE46D	U+8202	# <cjk>
+0xE46E	U+8205	# <cjk>
+0xE46F	U+8207	# <cjk>
+0xE470	U+820A	# <cjk>
+0xE471	U+820D	# <cjk>
+0xE472	U+8210	# <cjk>
+0xE473	U+8216	# <cjk>
+0xE474	U+8229	# <cjk>
+0xE475	U+822B	# <cjk>
+0xE476	U+8238	# <cjk>
+0xE477	U+8233	# <cjk>
+0xE478	U+8240	# <cjk>
+0xE479	U+8259	# <cjk>
+0xE47A	U+8258	# <cjk>
+0xE47B	U+825D	# <cjk>
+0xE47C	U+825A	# <cjk>
+0xE47D	U+825F	# <cjk>
+0xE47E	U+8264	# <cjk>
+0xE480	U+8262	# <cjk>
+0xE481	U+8268	# <cjk>
+0xE482	U+826A	# <cjk>
+0xE483	U+826B	# <cjk>
+0xE484	U+822E	# <cjk>
+0xE485	U+8271	# <cjk>
+0xE486	U+8277	# <cjk>
+0xE487	U+8278	# <cjk>
+0xE488	U+827E	# <cjk>
+0xE489	U+828D	# <cjk>
+0xE48A	U+8292	# <cjk>
+0xE48B	U+82AB	# <cjk>
+0xE48C	U+829F	# <cjk>
+0xE48D	U+82BB	# <cjk>
+0xE48E	U+82AC	# <cjk>
+0xE48F	U+82E1	# <cjk>
+0xE490	U+82E3	# <cjk>
+0xE491	U+82DF	# <cjk>
+0xE492	U+82D2	# <cjk>
+0xE493	U+82F4	# <cjk>
+0xE494	U+82F3	# <cjk>
+0xE495	U+82FA	# <cjk>
+0xE496	U+8393	# <cjk>
+0xE497	U+8303	# <cjk>
+0xE498	U+82FB	# <cjk>
+0xE499	U+82F9	# <cjk>
+0xE49A	U+82DE	# <cjk>
+0xE49B	U+8306	# <cjk>
+0xE49C	U+82DC	# <cjk>
+0xE49D	U+8309	# <cjk>
+0xE49E	U+82D9	# <cjk>
+0xE49F	U+8335	# <cjk>
+0xE4A0	U+8334	# <cjk>
+0xE4A1	U+8316	# <cjk>
+0xE4A2	U+8332	# <cjk>
+0xE4A3	U+8331	# <cjk>
+0xE4A4	U+8340	# <cjk>
+0xE4A5	U+8339	# <cjk>
+0xE4A6	U+8350	# <cjk>
+0xE4A7	U+8345	# <cjk>
+0xE4A8	U+832F	# <cjk>
+0xE4A9	U+832B	# <cjk>
+0xE4AA	U+8317	# <cjk>
+0xE4AB	U+8318	# <cjk>
+0xE4AC	U+8385	# <cjk>
+0xE4AD	U+839A	# <cjk>
+0xE4AE	U+83AA	# <cjk>
+0xE4AF	U+839F	# <cjk>
+0xE4B0	U+83A2	# <cjk>
+0xE4B1	U+8396	# <cjk>
+0xE4B2	U+8323	# <cjk>
+0xE4B3	U+838E	# <cjk>
+0xE4B4	U+8387	# <cjk>
+0xE4B5	U+838A	# <cjk>
+0xE4B6	U+837C	# <cjk>
+0xE4B7	U+83B5	# <cjk>
+0xE4B8	U+8373	# <cjk>
+0xE4B9	U+8375	# <cjk>
+0xE4BA	U+83A0	# <cjk>
+0xE4BB	U+8389	# <cjk>
+0xE4BC	U+83A8	# <cjk>
+0xE4BD	U+83F4	# <cjk>
+0xE4BE	U+8413	# <cjk>
+0xE4BF	U+83EB	# <cjk>
+0xE4C0	U+83CE	# <cjk>
+0xE4C1	U+83FD	# <cjk>
+0xE4C2	U+8403	# <cjk>
+0xE4C3	U+83D8	# <cjk>
+0xE4C4	U+840B	# <cjk>
+0xE4C5	U+83C1	# <cjk>
+0xE4C6	U+83F7	# <cjk>
+0xE4C7	U+8407	# <cjk>
+0xE4C8	U+83E0	# <cjk>
+0xE4C9	U+83F2	# <cjk>
+0xE4CA	U+840D	# <cjk>
+0xE4CB	U+8422	# <cjk>
+0xE4CC	U+8420	# <cjk>
+0xE4CD	U+83BD	# <cjk>
+0xE4CE	U+8438	# <cjk>
+0xE4CF	U+8506	# <cjk>
+0xE4D0	U+83FB	# <cjk>
+0xE4D1	U+846D	# <cjk>
+0xE4D2	U+842A	# <cjk>
+0xE4D3	U+843C	# <cjk>
+0xE4D4	U+855A	# <cjk>
+0xE4D5	U+8484	# <cjk>
+0xE4D6	U+8477	# <cjk>
+0xE4D7	U+846B	# <cjk>
+0xE4D8	U+84AD	# <cjk>
+0xE4D9	U+846E	# <cjk>
+0xE4DA	U+8482	# <cjk>
+0xE4DB	U+8469	# <cjk>
+0xE4DC	U+8446	# <cjk>
+0xE4DD	U+842C	# <cjk>
+0xE4DE	U+846F	# <cjk>
+0xE4DF	U+8479	# <cjk>
+0xE4E0	U+8435	# <cjk>
+0xE4E1	U+84CA	# <cjk>
+0xE4E2	U+8462	# <cjk>
+0xE4E3	U+84B9	# <cjk>
+0xE4E4	U+84BF	# <cjk>
+0xE4E5	U+849F	# <cjk>
+0xE4E6	U+84D9	# <cjk>
+0xE4E7	U+84CD	# <cjk>
+0xE4E8	U+84BB	# <cjk>
+0xE4E9	U+84DA	# <cjk>
+0xE4EA	U+84D0	# <cjk>
+0xE4EB	U+84C1	# <cjk>
+0xE4EC	U+84C6	# <cjk>
+0xE4ED	U+84D6	# <cjk>
+0xE4EE	U+84A1	# <cjk>
+0xE4EF	U+8521	# <cjk>
+0xE4F0	U+84FF	# <cjk>
+0xE4F1	U+84F4	# <cjk>
+0xE4F2	U+8517	# <cjk>
+0xE4F3	U+8518	# <cjk>
+0xE4F4	U+852C	# <cjk>
+0xE4F5	U+851F	# <cjk>
+0xE4F6	U+8515	# <cjk>
+0xE4F7	U+8514	# <cjk>
+0xE4F8	U+84FC	# <cjk>
+0xE4F9	U+8540	# <cjk>
+0xE4FA	U+8563	# <cjk>
+0xE4FB	U+8558	# <cjk>
+0xE4FC	U+8548	# <cjk>
+0xE540	U+8541	# <cjk>
+0xE541	U+8602	# <cjk>
+0xE542	U+854B	# <cjk>
+0xE543	U+8555	# <cjk>
+0xE544	U+8580	# <cjk>
+0xE545	U+85A4	# <cjk>
+0xE546	U+8588	# <cjk>
+0xE547	U+8591	# <cjk>
+0xE548	U+858A	# <cjk>
+0xE549	U+85A8	# <cjk>
+0xE54A	U+856D	# <cjk>
+0xE54B	U+8594	# <cjk>
+0xE54C	U+859B	# <cjk>
+0xE54D	U+85EA	# <cjk>
+0xE54E	U+8587	# <cjk>
+0xE54F	U+859C	# <cjk>
+0xE550	U+8577	# <cjk>
+0xE551	U+857E	# <cjk>
+0xE552	U+8590	# <cjk>
+0xE553	U+85C9	# <cjk>
+0xE554	U+85BA	# <cjk>
+0xE555	U+85CF	# <cjk>
+0xE556	U+85B9	# <cjk>
+0xE557	U+85D0	# <cjk>
+0xE558	U+85D5	# <cjk>
+0xE559	U+85DD	# <cjk>
+0xE55A	U+85E5	# <cjk>
+0xE55B	U+85DC	# <cjk>
+0xE55C	U+85F9	# <cjk>
+0xE55D	U+860A	# <cjk>
+0xE55E	U+8613	# <cjk>
+0xE55F	U+860B	# <cjk>
+0xE560	U+85FE	# <cjk>
+0xE561	U+85FA	# <cjk>
+0xE562	U+8606	# <cjk>
+0xE563	U+8622	# <cjk>
+0xE564	U+861A	# <cjk>
+0xE565	U+8630	# <cjk>
+0xE566	U+863F	# <cjk>
+0xE567	U+864D	# <cjk>
+0xE568	U+4E55	# <cjk>
+0xE569	U+8654	# <cjk>
+0xE56A	U+865F	# <cjk>
+0xE56B	U+8667	# <cjk>
+0xE56C	U+8671	# <cjk>
+0xE56D	U+8693	# <cjk>
+0xE56E	U+86A3	# <cjk>
+0xE56F	U+86A9	# <cjk>
+0xE570	U+86AA	# <cjk>
+0xE571	U+868B	# <cjk>
+0xE572	U+868C	# <cjk>
+0xE573	U+86B6	# <cjk>
+0xE574	U+86AF	# <cjk>
+0xE575	U+86C4	# <cjk>
+0xE576	U+86C6	# <cjk>
+0xE577	U+86B0	# <cjk>
+0xE578	U+86C9	# <cjk>
+0xE579	U+8823	# <cjk>
+0xE57A	U+86AB	# <cjk>
+0xE57B	U+86D4	# <cjk>
+0xE57C	U+86DE	# <cjk>
+0xE57D	U+86E9	# <cjk>
+0xE57E	U+86EC	# <cjk>
+0xE580	U+86DF	# <cjk>
+0xE581	U+86DB	# <cjk>
+0xE582	U+86EF	# <cjk>
+0xE583	U+8712	# <cjk>
+0xE584	U+8706	# <cjk>
+0xE585	U+8708	# <cjk>
+0xE586	U+8700	# <cjk>
+0xE587	U+8703	# <cjk>
+0xE588	U+86FB	# <cjk>
+0xE589	U+8711	# <cjk>
+0xE58A	U+8709	# <cjk>
+0xE58B	U+870D	# <cjk>
+0xE58C	U+86F9	# <cjk>
+0xE58D	U+870A	# <cjk>
+0xE58E	U+8734	# <cjk>
+0xE58F	U+873F	# <cjk>
+0xE590	U+8737	# <cjk>
+0xE591	U+873B	# <cjk>
+0xE592	U+8725	# <cjk>
+0xE593	U+8729	# <cjk>
+0xE594	U+871A	# <cjk>
+0xE595	U+8760	# <cjk>
+0xE596	U+875F	# <cjk>
+0xE597	U+8778	# <cjk>
+0xE598	U+874C	# <cjk>
+0xE599	U+874E	# <cjk>
+0xE59A	U+8774	# <cjk>
+0xE59B	U+8757	# <cjk>
+0xE59C	U+8768	# <cjk>
+0xE59D	U+876E	# <cjk>
+0xE59E	U+8759	# <cjk>
+0xE59F	U+8753	# <cjk>
+0xE5A0	U+8763	# <cjk>
+0xE5A1	U+876A	# <cjk>
+0xE5A2	U+8805	# <cjk>
+0xE5A3	U+87A2	# <cjk>
+0xE5A4	U+879F	# <cjk>
+0xE5A5	U+8782	# <cjk>
+0xE5A6	U+87AF	# <cjk>
+0xE5A7	U+87CB	# <cjk>
+0xE5A8	U+87BD	# <cjk>
+0xE5A9	U+87C0	# <cjk>
+0xE5AA	U+87D0	# <cjk>
+0xE5AB	U+96D6	# <cjk>
+0xE5AC	U+87AB	# <cjk>
+0xE5AD	U+87C4	# <cjk>
+0xE5AE	U+87B3	# <cjk>
+0xE5AF	U+87C7	# <cjk>
+0xE5B0	U+87C6	# <cjk>
+0xE5B1	U+87BB	# <cjk>
+0xE5B2	U+87EF	# <cjk>
+0xE5B3	U+87F2	# <cjk>
+0xE5B4	U+87E0	# <cjk>
+0xE5B5	U+880F	# <cjk>
+0xE5B6	U+880D	# <cjk>
+0xE5B7	U+87FE	# <cjk>
+0xE5B8	U+87F6	# <cjk>
+0xE5B9	U+87F7	# <cjk>
+0xE5BA	U+880E	# <cjk>
+0xE5BB	U+87D2	# <cjk>
+0xE5BC	U+8811	# <cjk>
+0xE5BD	U+8816	# <cjk>
+0xE5BE	U+8815	# <cjk>
+0xE5BF	U+8822	# <cjk>
+0xE5C0	U+8821	# <cjk>
+0xE5C1	U+8831	# <cjk>
+0xE5C2	U+8836	# <cjk>
+0xE5C3	U+8839	# <cjk>
+0xE5C4	U+8827	# <cjk>
+0xE5C5	U+883B	# <cjk>
+0xE5C6	U+8844	# <cjk>
+0xE5C7	U+8842	# <cjk>
+0xE5C8	U+8852	# <cjk>
+0xE5C9	U+8859	# <cjk>
+0xE5CA	U+885E	# <cjk>
+0xE5CB	U+8862	# <cjk>
+0xE5CC	U+886B	# <cjk>
+0xE5CD	U+8881	# <cjk>
+0xE5CE	U+887E	# <cjk>
+0xE5CF	U+889E	# <cjk>
+0xE5D0	U+8875	# <cjk>
+0xE5D1	U+887D	# <cjk>
+0xE5D2	U+88B5	# <cjk>
+0xE5D3	U+8872	# <cjk>
+0xE5D4	U+8882	# <cjk>
+0xE5D5	U+8897	# <cjk>
+0xE5D6	U+8892	# <cjk>
+0xE5D7	U+88AE	# <cjk>
+0xE5D8	U+8899	# <cjk>
+0xE5D9	U+88A2	# <cjk>
+0xE5DA	U+888D	# <cjk>
+0xE5DB	U+88A4	# <cjk>
+0xE5DC	U+88B0	# <cjk>
+0xE5DD	U+88BF	# <cjk>
+0xE5DE	U+88B1	# <cjk>
+0xE5DF	U+88C3	# <cjk>
+0xE5E0	U+88C4	# <cjk>
+0xE5E1	U+88D4	# <cjk>
+0xE5E2	U+88D8	# <cjk>
+0xE5E3	U+88D9	# <cjk>
+0xE5E4	U+88DD	# <cjk>
+0xE5E5	U+88F9	# <cjk>
+0xE5E6	U+8902	# <cjk>
+0xE5E7	U+88FC	# <cjk>
+0xE5E8	U+88F4	# <cjk>
+0xE5E9	U+88E8	# <cjk>
+0xE5EA	U+88F2	# <cjk>
+0xE5EB	U+8904	# <cjk>
+0xE5EC	U+890C	# <cjk>
+0xE5ED	U+890A	# <cjk>
+0xE5EE	U+8913	# <cjk>
+0xE5EF	U+8943	# <cjk>
+0xE5F0	U+891E	# <cjk>
+0xE5F1	U+8925	# <cjk>
+0xE5F2	U+892A	# <cjk>
+0xE5F3	U+892B	# <cjk>
+0xE5F4	U+8941	# <cjk>
+0xE5F5	U+8944	# <cjk>
+0xE5F6	U+893B	# <cjk>
+0xE5F7	U+8936	# <cjk>
+0xE5F8	U+8938	# <cjk>
+0xE5F9	U+894C	# <cjk>
+0xE5FA	U+891D	# <cjk>
+0xE5FB	U+8960	# <cjk>
+0xE5FC	U+895E	# <cjk>
+0xE640	U+8966	# <cjk>
+0xE641	U+8964	# <cjk>
+0xE642	U+896D	# <cjk>
+0xE643	U+896A	# <cjk>
+0xE644	U+896F	# <cjk>
+0xE645	U+8974	# <cjk>
+0xE646	U+8977	# <cjk>
+0xE647	U+897E	# <cjk>
+0xE648	U+8983	# <cjk>
+0xE649	U+8988	# <cjk>
+0xE64A	U+898A	# <cjk>
+0xE64B	U+8993	# <cjk>
+0xE64C	U+8998	# <cjk>
+0xE64D	U+89A1	# <cjk>
+0xE64E	U+89A9	# <cjk>
+0xE64F	U+89A6	# <cjk>
+0xE650	U+89AC	# <cjk>
+0xE651	U+89AF	# <cjk>
+0xE652	U+89B2	# <cjk>
+0xE653	U+89BA	# <cjk>
+0xE654	U+89BD	# <cjk>
+0xE655	U+89BF	# <cjk>
+0xE656	U+89C0	# <cjk>
+0xE657	U+89DA	# <cjk>
+0xE658	U+89DC	# <cjk>
+0xE659	U+89DD	# <cjk>
+0xE65A	U+89E7	# <cjk>
+0xE65B	U+89F4	# <cjk>
+0xE65C	U+89F8	# <cjk>
+0xE65D	U+8A03	# <cjk>
+0xE65E	U+8A16	# <cjk>
+0xE65F	U+8A10	# <cjk>
+0xE660	U+8A0C	# <cjk>
+0xE661	U+8A1B	# <cjk>
+0xE662	U+8A1D	# <cjk>
+0xE663	U+8A25	# <cjk>
+0xE664	U+8A36	# <cjk>
+0xE665	U+8A41	# <cjk>
+0xE666	U+8A5B	# <cjk>
+0xE667	U+8A52	# <cjk>
+0xE668	U+8A46	# <cjk>
+0xE669	U+8A48	# <cjk>
+0xE66A	U+8A7C	# <cjk>
+0xE66B	U+8A6D	# <cjk>
+0xE66C	U+8A6C	# <cjk>
+0xE66D	U+8A62	# <cjk>
+0xE66E	U+8A85	# <cjk>
+0xE66F	U+8A82	# <cjk>
+0xE670	U+8A84	# <cjk>
+0xE671	U+8AA8	# <cjk>
+0xE672	U+8AA1	# <cjk>
+0xE673	U+8A91	# <cjk>
+0xE674	U+8AA5	# <cjk>
+0xE675	U+8AA6	# <cjk>
+0xE676	U+8A9A	# <cjk>
+0xE677	U+8AA3	# <cjk>
+0xE678	U+8AC4	# <cjk>
+0xE679	U+8ACD	# <cjk>
+0xE67A	U+8AC2	# <cjk>
+0xE67B	U+8ADA	# <cjk>
+0xE67C	U+8AEB	# <cjk>
+0xE67D	U+8AF3	# <cjk>
+0xE67E	U+8AE7	# <cjk>
+0xE680	U+8AE4	# <cjk>
+0xE681	U+8AF1	# <cjk>
+0xE682	U+8B14	# <cjk>
+0xE683	U+8AE0	# <cjk>
+0xE684	U+8AE2	# <cjk>
+0xE685	U+8AF7	# <cjk>
+0xE686	U+8ADE	# <cjk>
+0xE687	U+8ADB	# <cjk>
+0xE688	U+8B0C	# <cjk>
+0xE689	U+8B07	# <cjk>
+0xE68A	U+8B1A	# <cjk>
+0xE68B	U+8AE1	# <cjk>
+0xE68C	U+8B16	# <cjk>
+0xE68D	U+8B10	# <cjk>
+0xE68E	U+8B17	# <cjk>
+0xE68F	U+8B20	# <cjk>
+0xE690	U+8B33	# <cjk>
+0xE691	U+97AB	# <cjk>
+0xE692	U+8B26	# <cjk>
+0xE693	U+8B2B	# <cjk>
+0xE694	U+8B3E	# <cjk>
+0xE695	U+8B28	# <cjk>
+0xE696	U+8B41	# <cjk>
+0xE697	U+8B4C	# <cjk>
+0xE698	U+8B4F	# <cjk>
+0xE699	U+8B4E	# <cjk>
+0xE69A	U+8B49	# <cjk>
+0xE69B	U+8B56	# <cjk>
+0xE69C	U+8B5B	# <cjk>
+0xE69D	U+8B5A	# <cjk>
+0xE69E	U+8B6B	# <cjk>
+0xE69F	U+8B5F	# <cjk>
+0xE6A0	U+8B6C	# <cjk>
+0xE6A1	U+8B6F	# <cjk>
+0xE6A2	U+8B74	# <cjk>
+0xE6A3	U+8B7D	# <cjk>
+0xE6A4	U+8B80	# <cjk>
+0xE6A5	U+8B8C	# <cjk>
+0xE6A6	U+8B8E	# <cjk>
+0xE6A7	U+8B92	# <cjk>
+0xE6A8	U+8B93	# <cjk>
+0xE6A9	U+8B96	# <cjk>
+0xE6AA	U+8B99	# <cjk>
+0xE6AB	U+8B9A	# <cjk>
+0xE6AC	U+8C3A	# <cjk>
+0xE6AD	U+8C41	# <cjk>
+0xE6AE	U+8C3F	# <cjk>
+0xE6AF	U+8C48	# <cjk>
+0xE6B0	U+8C4C	# <cjk>
+0xE6B1	U+8C4E	# <cjk>
+0xE6B2	U+8C50	# <cjk>
+0xE6B3	U+8C55	# <cjk>
+0xE6B4	U+8C62	# <cjk>
+0xE6B5	U+8C6C	# <cjk>
+0xE6B6	U+8C78	# <cjk>
+0xE6B7	U+8C7A	# <cjk>
+0xE6B8	U+8C82	# <cjk>
+0xE6B9	U+8C89	# <cjk>
+0xE6BA	U+8C85	# <cjk>
+0xE6BB	U+8C8A	# <cjk>
+0xE6BC	U+8C8D	# <cjk>
+0xE6BD	U+8C8E	# <cjk>
+0xE6BE	U+8C94	# <cjk>
+0xE6BF	U+8C7C	# <cjk>
+0xE6C0	U+8C98	# <cjk>
+0xE6C1	U+621D	# <cjk>
+0xE6C2	U+8CAD	# <cjk>
+0xE6C3	U+8CAA	# <cjk>
+0xE6C4	U+8CBD	# <cjk>
+0xE6C5	U+8CB2	# <cjk>
+0xE6C6	U+8CB3	# <cjk>
+0xE6C7	U+8CAE	# <cjk>
+0xE6C8	U+8CB6	# <cjk>
+0xE6C9	U+8CC8	# <cjk>
+0xE6CA	U+8CC1	# <cjk>
+0xE6CB	U+8CE4	# <cjk>
+0xE6CC	U+8CE3	# <cjk>
+0xE6CD	U+8CDA	# <cjk>
+0xE6CE	U+8CFD	# <cjk>
+0xE6CF	U+8CFA	# <cjk>
+0xE6D0	U+8CFB	# <cjk>
+0xE6D1	U+8D04	# <cjk>
+0xE6D2	U+8D05	# <cjk>
+0xE6D3	U+8D0A	# <cjk>
+0xE6D4	U+8D07	# <cjk>
+0xE6D5	U+8D0F	# <cjk>
+0xE6D6	U+8D0D	# <cjk>
+0xE6D7	U+8D10	# <cjk>
+0xE6D8	U+9F4E	# <cjk>
+0xE6D9	U+8D13	# <cjk>
+0xE6DA	U+8CCD	# <cjk>
+0xE6DB	U+8D14	# <cjk>
+0xE6DC	U+8D16	# <cjk>
+0xE6DD	U+8D67	# <cjk>
+0xE6DE	U+8D6D	# <cjk>
+0xE6DF	U+8D71	# <cjk>
+0xE6E0	U+8D73	# <cjk>
+0xE6E1	U+8D81	# <cjk>
+0xE6E2	U+8D99	# <cjk>
+0xE6E3	U+8DC2	# <cjk>
+0xE6E4	U+8DBE	# <cjk>
+0xE6E5	U+8DBA	# <cjk>
+0xE6E6	U+8DCF	# <cjk>
+0xE6E7	U+8DDA	# <cjk>
+0xE6E8	U+8DD6	# <cjk>
+0xE6E9	U+8DCC	# <cjk>
+0xE6EA	U+8DDB	# <cjk>
+0xE6EB	U+8DCB	# <cjk>
+0xE6EC	U+8DEA	# <cjk>
+0xE6ED	U+8DEB	# <cjk>
+0xE6EE	U+8DDF	# <cjk>
+0xE6EF	U+8DE3	# <cjk>
+0xE6F0	U+8DFC	# <cjk>
+0xE6F1	U+8E08	# <cjk>
+0xE6F2	U+8E09	# <cjk>
+0xE6F3	U+8DFF	# <cjk>
+0xE6F4	U+8E1D	# <cjk>
+0xE6F5	U+8E1E	# <cjk>
+0xE6F6	U+8E10	# <cjk>
+0xE6F7	U+8E1F	# <cjk>
+0xE6F8	U+8E42	# <cjk>
+0xE6F9	U+8E35	# <cjk>
+0xE6FA	U+8E30	# <cjk>
+0xE6FB	U+8E34	# <cjk>
+0xE6FC	U+8E4A	# <cjk>
+0xE740	U+8E47	# <cjk>
+0xE741	U+8E49	# <cjk>
+0xE742	U+8E4C	# <cjk>
+0xE743	U+8E50	# <cjk>
+0xE744	U+8E48	# <cjk>
+0xE745	U+8E59	# <cjk>
+0xE746	U+8E64	# <cjk>
+0xE747	U+8E60	# <cjk>
+0xE748	U+8E2A	# <cjk>
+0xE749	U+8E63	# <cjk>
+0xE74A	U+8E55	# <cjk>
+0xE74B	U+8E76	# <cjk>
+0xE74C	U+8E72	# <cjk>
+0xE74D	U+8E7C	# <cjk>
+0xE74E	U+8E81	# <cjk>
+0xE74F	U+8E87	# <cjk>
+0xE750	U+8E85	# <cjk>
+0xE751	U+8E84	# <cjk>
+0xE752	U+8E8B	# <cjk>
+0xE753	U+8E8A	# <cjk>
+0xE754	U+8E93	# <cjk>
+0xE755	U+8E91	# <cjk>
+0xE756	U+8E94	# <cjk>
+0xE757	U+8E99	# <cjk>
+0xE758	U+8EAA	# <cjk>
+0xE759	U+8EA1	# <cjk>
+0xE75A	U+8EAC	# <cjk>
+0xE75B	U+8EB0	# <cjk>
+0xE75C	U+8EC6	# <cjk>
+0xE75D	U+8EB1	# <cjk>
+0xE75E	U+8EBE	# <cjk>
+0xE75F	U+8EC5	# <cjk>
+0xE760	U+8EC8	# <cjk>
+0xE761	U+8ECB	# <cjk>
+0xE762	U+8EDB	# <cjk>
+0xE763	U+8EE3	# <cjk>
+0xE764	U+8EFC	# <cjk>
+0xE765	U+8EFB	# <cjk>
+0xE766	U+8EEB	# <cjk>
+0xE767	U+8EFE	# <cjk>
+0xE768	U+8F0A	# <cjk>
+0xE769	U+8F05	# <cjk>
+0xE76A	U+8F15	# <cjk>
+0xE76B	U+8F12	# <cjk>
+0xE76C	U+8F19	# <cjk>
+0xE76D	U+8F13	# <cjk>
+0xE76E	U+8F1C	# <cjk>
+0xE76F	U+8F1F	# <cjk>
+0xE770	U+8F1B	# <cjk>
+0xE771	U+8F0C	# <cjk>
+0xE772	U+8F26	# <cjk>
+0xE773	U+8F33	# <cjk>
+0xE774	U+8F3B	# <cjk>
+0xE775	U+8F39	# <cjk>
+0xE776	U+8F45	# <cjk>
+0xE777	U+8F42	# <cjk>
+0xE778	U+8F3E	# <cjk>
+0xE779	U+8F4C	# <cjk>
+0xE77A	U+8F49	# <cjk>
+0xE77B	U+8F46	# <cjk>
+0xE77C	U+8F4E	# <cjk>
+0xE77D	U+8F57	# <cjk>
+0xE77E	U+8F5C	# <cjk>
+0xE780	U+8F62	# <cjk>
+0xE781	U+8F63	# <cjk>
+0xE782	U+8F64	# <cjk>
+0xE783	U+8F9C	# <cjk>
+0xE784	U+8F9F	# <cjk>
+0xE785	U+8FA3	# <cjk>
+0xE786	U+8FAD	# <cjk>
+0xE787	U+8FAF	# <cjk>
+0xE788	U+8FB7	# <cjk>
+0xE789	U+8FDA	# <cjk>
+0xE78A	U+8FE5	# <cjk>
+0xE78B	U+8FE2	# <cjk>
+0xE78C	U+8FEA	# <cjk>
+0xE78D	U+8FEF	# <cjk>
+0xE78E	U+9087	# <cjk>
+0xE78F	U+8FF4	# <cjk>
+0xE790	U+9005	# <cjk>
+0xE791	U+8FF9	# <cjk>
+0xE792	U+8FFA	# <cjk>
+0xE793	U+9011	# <cjk>
+0xE794	U+9015	# <cjk>
+0xE795	U+9021	# <cjk>
+0xE796	U+900D	# <cjk>
+0xE797	U+901E	# <cjk>
+0xE798	U+9016	# <cjk>
+0xE799	U+900B	# <cjk>
+0xE79A	U+9027	# <cjk>
+0xE79B	U+9036	# <cjk>
+0xE79C	U+9035	# <cjk>
+0xE79D	U+9039	# <cjk>
+0xE79E	U+8FF8	# <cjk>
+0xE79F	U+904F	# <cjk>
+0xE7A0	U+9050	# <cjk>
+0xE7A1	U+9051	# <cjk>
+0xE7A2	U+9052	# <cjk>
+0xE7A3	U+900E	# <cjk>
+0xE7A4	U+9049	# <cjk>
+0xE7A5	U+903E	# <cjk>
+0xE7A6	U+9056	# <cjk>
+0xE7A7	U+9058	# <cjk>
+0xE7A8	U+905E	# <cjk>
+0xE7A9	U+9068	# <cjk>
+0xE7AA	U+906F	# <cjk>
+0xE7AB	U+9076	# <cjk>
+0xE7AC	U+96A8	# <cjk>
+0xE7AD	U+9072	# <cjk>
+0xE7AE	U+9082	# <cjk>
+0xE7AF	U+907D	# <cjk>
+0xE7B0	U+9081	# <cjk>
+0xE7B1	U+9080	# <cjk>
+0xE7B2	U+908A	# <cjk>
+0xE7B3	U+9089	# <cjk>
+0xE7B4	U+908F	# <cjk>
+0xE7B5	U+90A8	# <cjk>
+0xE7B6	U+90AF	# <cjk>
+0xE7B7	U+90B1	# <cjk>
+0xE7B8	U+90B5	# <cjk>
+0xE7B9	U+90E2	# <cjk>
+0xE7BA	U+90E4	# <cjk>
+0xE7BB	U+6248	# <cjk>
+0xE7BC	U+90DB	# <cjk>
+0xE7BD	U+9102	# <cjk>
+0xE7BE	U+9112	# <cjk>
+0xE7BF	U+9119	# <cjk>
+0xE7C0	U+9132	# <cjk>
+0xE7C1	U+9130	# <cjk>
+0xE7C2	U+914A	# <cjk>
+0xE7C3	U+9156	# <cjk>
+0xE7C4	U+9158	# <cjk>
+0xE7C5	U+9163	# <cjk>
+0xE7C6	U+9165	# <cjk>
+0xE7C7	U+9169	# <cjk>
+0xE7C8	U+9173	# <cjk>
+0xE7C9	U+9172	# <cjk>
+0xE7CA	U+918B	# <cjk>
+0xE7CB	U+9189	# <cjk>
+0xE7CC	U+9182	# <cjk>
+0xE7CD	U+91A2	# <cjk>
+0xE7CE	U+91AB	# <cjk>
+0xE7CF	U+91AF	# <cjk>
+0xE7D0	U+91AA	# <cjk>
+0xE7D1	U+91B5	# <cjk>
+0xE7D2	U+91B4	# <cjk>
+0xE7D3	U+91BA	# <cjk>
+0xE7D4	U+91C0	# <cjk>
+0xE7D5	U+91C1	# <cjk>
+0xE7D6	U+91C9	# <cjk>
+0xE7D7	U+91CB	# <cjk>
+0xE7D8	U+91D0	# <cjk>
+0xE7D9	U+91D6	# <cjk>
+0xE7DA	U+91DF	# <cjk>
+0xE7DB	U+91E1	# <cjk>
+0xE7DC	U+91DB	# <cjk>
+0xE7DD	U+91FC	# <cjk>
+0xE7DE	U+91F5	# <cjk>
+0xE7DF	U+91F6	# <cjk>
+0xE7E0	U+921E	# <cjk>
+0xE7E1	U+91FF	# <cjk>
+0xE7E2	U+9214	# <cjk>
+0xE7E3	U+922C	# <cjk>
+0xE7E4	U+9215	# <cjk>
+0xE7E5	U+9211	# <cjk>
+0xE7E6	U+925E	# <cjk>
+0xE7E7	U+9257	# <cjk>
+0xE7E8	U+9245	# <cjk>
+0xE7E9	U+9249	# <cjk>
+0xE7EA	U+9264	# <cjk>
+0xE7EB	U+9248	# <cjk>
+0xE7EC	U+9295	# <cjk>
+0xE7ED	U+923F	# <cjk>
+0xE7EE	U+924B	# <cjk>
+0xE7EF	U+9250	# <cjk>
+0xE7F0	U+929C	# <cjk>
+0xE7F1	U+9296	# <cjk>
+0xE7F2	U+9293	# <cjk>
+0xE7F3	U+929B	# <cjk>
+0xE7F4	U+925A	# <cjk>
+0xE7F5	U+92CF	# <cjk>
+0xE7F6	U+92B9	# <cjk>
+0xE7F7	U+92B7	# <cjk>
+0xE7F8	U+92E9	# <cjk>
+0xE7F9	U+930F	# <cjk>
+0xE7FA	U+92FA	# <cjk>
+0xE7FB	U+9344	# <cjk>
+0xE7FC	U+932E	# <cjk>
+0xE840	U+9319	# <cjk>
+0xE841	U+9322	# <cjk>
+0xE842	U+931A	# <cjk>
+0xE843	U+9323	# <cjk>
+0xE844	U+933A	# <cjk>
+0xE845	U+9335	# <cjk>
+0xE846	U+933B	# <cjk>
+0xE847	U+935C	# <cjk>
+0xE848	U+9360	# <cjk>
+0xE849	U+937C	# <cjk>
+0xE84A	U+936E	# <cjk>
+0xE84B	U+9356	# <cjk>
+0xE84C	U+93B0	# <cjk>
+0xE84D	U+93AC	# <cjk>
+0xE84E	U+93AD	# <cjk>
+0xE84F	U+9394	# <cjk>
+0xE850	U+93B9	# <cjk>
+0xE851	U+93D6	# <cjk>
+0xE852	U+93D7	# <cjk>
+0xE853	U+93E8	# <cjk>
+0xE854	U+93E5	# <cjk>
+0xE855	U+93D8	# <cjk>
+0xE856	U+93C3	# <cjk>
+0xE857	U+93DD	# <cjk>
+0xE858	U+93D0	# <cjk>
+0xE859	U+93C8	# <cjk>
+0xE85A	U+93E4	# <cjk>
+0xE85B	U+941A	# <cjk>
+0xE85C	U+9414	# <cjk>
+0xE85D	U+9413	# <cjk>
+0xE85E	U+9403	# <cjk>
+0xE85F	U+9407	# <cjk>
+0xE860	U+9410	# <cjk>
+0xE861	U+9436	# <cjk>
+0xE862	U+942B	# <cjk>
+0xE863	U+9435	# <cjk>
+0xE864	U+9421	# <cjk>
+0xE865	U+943A	# <cjk>
+0xE866	U+9441	# <cjk>
+0xE867	U+9452	# <cjk>
+0xE868	U+9444	# <cjk>
+0xE869	U+945B	# <cjk>
+0xE86A	U+9460	# <cjk>
+0xE86B	U+9462	# <cjk>
+0xE86C	U+945E	# <cjk>
+0xE86D	U+946A	# <cjk>
+0xE86E	U+9229	# <cjk>
+0xE86F	U+9470	# <cjk>
+0xE870	U+9475	# <cjk>
+0xE871	U+9477	# <cjk>
+0xE872	U+947D	# <cjk>
+0xE873	U+945A	# <cjk>
+0xE874	U+947C	# <cjk>
+0xE875	U+947E	# <cjk>
+0xE876	U+9481	# <cjk>
+0xE877	U+947F	# <cjk>
+0xE878	U+9582	# <cjk>
+0xE879	U+9587	# <cjk>
+0xE87A	U+958A	# <cjk>
+0xE87B	U+9594	# <cjk>
+0xE87C	U+9596	# <cjk>
+0xE87D	U+9598	# <cjk>
+0xE87E	U+9599	# <cjk>
+0xE880	U+95A0	# <cjk>
+0xE881	U+95A8	# <cjk>
+0xE882	U+95A7	# <cjk>
+0xE883	U+95AD	# <cjk>
+0xE884	U+95BC	# <cjk>
+0xE885	U+95BB	# <cjk>
+0xE886	U+95B9	# <cjk>
+0xE887	U+95BE	# <cjk>
+0xE888	U+95CA	# <cjk>
+0xE889	U+6FF6	# <cjk>
+0xE88A	U+95C3	# <cjk>
+0xE88B	U+95CD	# <cjk>
+0xE88C	U+95CC	# <cjk>
+0xE88D	U+95D5	# <cjk>
+0xE88E	U+95D4	# <cjk>
+0xE88F	U+95D6	# <cjk>
+0xE890	U+95DC	# <cjk>
+0xE891	U+95E1	# <cjk>
+0xE892	U+95E5	# <cjk>
+0xE893	U+95E2	# <cjk>
+0xE894	U+9621	# <cjk>
+0xE895	U+9628	# <cjk>
+0xE896	U+962E	# <cjk>
+0xE897	U+962F	# <cjk>
+0xE898	U+9642	# <cjk>
+0xE899	U+964C	# <cjk>
+0xE89A	U+964F	# <cjk>
+0xE89B	U+964B	# <cjk>
+0xE89C	U+9677	# <cjk>
+0xE89D	U+965C	# <cjk>
+0xE89E	U+965E	# <cjk>
+0xE89F	U+965D	# <cjk>
+0xE8A0	U+965F	# <cjk>
+0xE8A1	U+9666	# <cjk>
+0xE8A2	U+9672	# <cjk>
+0xE8A3	U+966C	# <cjk>
+0xE8A4	U+968D	# <cjk>
+0xE8A5	U+9698	# <cjk>
+0xE8A6	U+9695	# <cjk>
+0xE8A7	U+9697	# <cjk>
+0xE8A8	U+96AA	# <cjk>
+0xE8A9	U+96A7	# <cjk>
+0xE8AA	U+96B1	# <cjk>
+0xE8AB	U+96B2	# <cjk>
+0xE8AC	U+96B0	# <cjk>
+0xE8AD	U+96B4	# <cjk>
+0xE8AE	U+96B6	# <cjk>
+0xE8AF	U+96B8	# <cjk>
+0xE8B0	U+96B9	# <cjk>
+0xE8B1	U+96CE	# <cjk>
+0xE8B2	U+96CB	# <cjk>
+0xE8B3	U+96C9	# <cjk>
+0xE8B4	U+96CD	# <cjk>
+0xE8B5	U+894D	# <cjk>
+0xE8B6	U+96DC	# <cjk>
+0xE8B7	U+970D	# <cjk>
+0xE8B8	U+96D5	# <cjk>
+0xE8B9	U+96F9	# <cjk>
+0xE8BA	U+9704	# <cjk>
+0xE8BB	U+9706	# <cjk>
+0xE8BC	U+9708	# <cjk>
+0xE8BD	U+9713	# <cjk>
+0xE8BE	U+970E	# <cjk>
+0xE8BF	U+9711	# <cjk>
+0xE8C0	U+970F	# <cjk>
+0xE8C1	U+9716	# <cjk>
+0xE8C2	U+9719	# <cjk>
+0xE8C3	U+9724	# <cjk>
+0xE8C4	U+972A	# <cjk>
+0xE8C5	U+9730	# <cjk>
+0xE8C6	U+9739	# <cjk>
+0xE8C7	U+973D	# <cjk>
+0xE8C8	U+973E	# <cjk>
+0xE8C9	U+9744	# <cjk>
+0xE8CA	U+9746	# <cjk>
+0xE8CB	U+9748	# <cjk>
+0xE8CC	U+9742	# <cjk>
+0xE8CD	U+9749	# <cjk>
+0xE8CE	U+975C	# <cjk>
+0xE8CF	U+9760	# <cjk>
+0xE8D0	U+9764	# <cjk>
+0xE8D1	U+9766	# <cjk>
+0xE8D2	U+9768	# <cjk>
+0xE8D3	U+52D2	# <cjk>
+0xE8D4	U+976B	# <cjk>
+0xE8D5	U+9771	# <cjk>
+0xE8D6	U+9779	# <cjk>
+0xE8D7	U+9785	# <cjk>
+0xE8D8	U+977C	# <cjk>
+0xE8D9	U+9781	# <cjk>
+0xE8DA	U+977A	# <cjk>
+0xE8DB	U+9786	# <cjk>
+0xE8DC	U+978B	# <cjk>
+0xE8DD	U+978F	# <cjk>
+0xE8DE	U+9790	# <cjk>
+0xE8DF	U+979C	# <cjk>
+0xE8E0	U+97A8	# <cjk>
+0xE8E1	U+97A6	# <cjk>
+0xE8E2	U+97A3	# <cjk>
+0xE8E3	U+97B3	# <cjk>
+0xE8E4	U+97B4	# <cjk>
+0xE8E5	U+97C3	# <cjk>
+0xE8E6	U+97C6	# <cjk>
+0xE8E7	U+97C8	# <cjk>
+0xE8E8	U+97CB	# <cjk>
+0xE8E9	U+97DC	# <cjk>
+0xE8EA	U+97ED	# <cjk>
+0xE8EB	U+9F4F	# <cjk>
+0xE8EC	U+97F2	# <cjk>
+0xE8ED	U+7ADF	# <cjk>
+0xE8EE	U+97F6	# <cjk>
+0xE8EF	U+97F5	# <cjk>
+0xE8F0	U+980F	# <cjk>
+0xE8F1	U+980C	# <cjk>
+0xE8F2	U+9838	# <cjk>
+0xE8F3	U+9824	# <cjk>
+0xE8F4	U+9821	# <cjk>
+0xE8F5	U+9837	# <cjk>
+0xE8F6	U+983D	# <cjk>
+0xE8F7	U+9846	# <cjk>
+0xE8F8	U+984F	# <cjk>
+0xE8F9	U+984B	# <cjk>
+0xE8FA	U+986B	# <cjk>
+0xE8FB	U+986F	# <cjk>
+0xE8FC	U+9870	# <cjk>
+0xE940	U+9871	# <cjk>
+0xE941	U+9874	# <cjk>
+0xE942	U+9873	# <cjk>
+0xE943	U+98AA	# <cjk>
+0xE944	U+98AF	# <cjk>
+0xE945	U+98B1	# <cjk>
+0xE946	U+98B6	# <cjk>
+0xE947	U+98C4	# <cjk>
+0xE948	U+98C3	# <cjk>
+0xE949	U+98C6	# <cjk>
+0xE94A	U+98E9	# <cjk>
+0xE94B	U+98EB	# <cjk>
+0xE94C	U+9903	# <cjk>
+0xE94D	U+9909	# <cjk>
+0xE94E	U+9912	# <cjk>
+0xE94F	U+9914	# <cjk>
+0xE950	U+9918	# <cjk>
+0xE951	U+9921	# <cjk>
+0xE952	U+991D	# <cjk>
+0xE953	U+991E	# <cjk>
+0xE954	U+9924	# <cjk>
+0xE955	U+9920	# <cjk>
+0xE956	U+992C	# <cjk>
+0xE957	U+992E	# <cjk>
+0xE958	U+993D	# <cjk>
+0xE959	U+993E	# <cjk>
+0xE95A	U+9942	# <cjk>
+0xE95B	U+9949	# <cjk>
+0xE95C	U+9945	# <cjk>
+0xE95D	U+9950	# <cjk>
+0xE95E	U+994B	# <cjk>
+0xE95F	U+9951	# <cjk>
+0xE960	U+9952	# <cjk>
+0xE961	U+994C	# <cjk>
+0xE962	U+9955	# <cjk>
+0xE963	U+9997	# <cjk>
+0xE964	U+9998	# <cjk>
+0xE965	U+99A5	# <cjk>
+0xE966	U+99AD	# <cjk>
+0xE967	U+99AE	# <cjk>
+0xE968	U+99BC	# <cjk>
+0xE969	U+99DF	# <cjk>
+0xE96A	U+99DB	# <cjk>
+0xE96B	U+99DD	# <cjk>
+0xE96C	U+99D8	# <cjk>
+0xE96D	U+99D1	# <cjk>
+0xE96E	U+99ED	# <cjk>
+0xE96F	U+99EE	# <cjk>
+0xE970	U+99F1	# <cjk>
+0xE971	U+99F2	# <cjk>
+0xE972	U+99FB	# <cjk>
+0xE973	U+99F8	# <cjk>
+0xE974	U+9A01	# <cjk>
+0xE975	U+9A0F	# <cjk>
+0xE976	U+9A05	# <cjk>
+0xE977	U+99E2	# <cjk>
+0xE978	U+9A19	# <cjk>
+0xE979	U+9A2B	# <cjk>
+0xE97A	U+9A37	# <cjk>
+0xE97B	U+9A45	# <cjk>
+0xE97C	U+9A42	# <cjk>
+0xE97D	U+9A40	# <cjk>
+0xE97E	U+9A43	# <cjk>
+0xE980	U+9A3E	# <cjk>
+0xE981	U+9A55	# <cjk>
+0xE982	U+9A4D	# <cjk>
+0xE983	U+9A5B	# <cjk>
+0xE984	U+9A57	# <cjk>
+0xE985	U+9A5F	# <cjk>
+0xE986	U+9A62	# <cjk>
+0xE987	U+9A65	# <cjk>
+0xE988	U+9A64	# <cjk>
+0xE989	U+9A69	# <cjk>
+0xE98A	U+9A6B	# <cjk>
+0xE98B	U+9A6A	# <cjk>
+0xE98C	U+9AAD	# <cjk>
+0xE98D	U+9AB0	# <cjk>
+0xE98E	U+9ABC	# <cjk>
+0xE98F	U+9AC0	# <cjk>
+0xE990	U+9ACF	# <cjk>
+0xE991	U+9AD1	# <cjk>
+0xE992	U+9AD3	# <cjk>
+0xE993	U+9AD4	# <cjk>
+0xE994	U+9ADE	# <cjk>
+0xE995	U+9ADF	# <cjk>
+0xE996	U+9AE2	# <cjk>
+0xE997	U+9AE3	# <cjk>
+0xE998	U+9AE6	# <cjk>
+0xE999	U+9AEF	# <cjk>
+0xE99A	U+9AEB	# <cjk>
+0xE99B	U+9AEE	# <cjk>
+0xE99C	U+9AF4	# <cjk>
+0xE99D	U+9AF1	# <cjk>
+0xE99E	U+9AF7	# <cjk>
+0xE99F	U+9AFB	# <cjk>
+0xE9A0	U+9B06	# <cjk>
+0xE9A1	U+9B18	# <cjk>
+0xE9A2	U+9B1A	# <cjk>
+0xE9A3	U+9B1F	# <cjk>
+0xE9A4	U+9B22	# <cjk>
+0xE9A5	U+9B23	# <cjk>
+0xE9A6	U+9B25	# <cjk>
+0xE9A7	U+9B27	# <cjk>
+0xE9A8	U+9B28	# <cjk>
+0xE9A9	U+9B29	# <cjk>
+0xE9AA	U+9B2A	# <cjk>
+0xE9AB	U+9B2E	# <cjk>
+0xE9AC	U+9B2F	# <cjk>
+0xE9AD	U+9B32	# <cjk>
+0xE9AE	U+9B44	# <cjk>
+0xE9AF	U+9B43	# <cjk>
+0xE9B0	U+9B4F	# <cjk>
+0xE9B1	U+9B4D	# <cjk>
+0xE9B2	U+9B4E	# <cjk>
+0xE9B3	U+9B51	# <cjk>
+0xE9B4	U+9B58	# <cjk>
+0xE9B5	U+9B74	# <cjk>
+0xE9B6	U+9B93	# <cjk>
+0xE9B7	U+9B83	# <cjk>
+0xE9B8	U+9B91	# <cjk>
+0xE9B9	U+9B96	# <cjk>
+0xE9BA	U+9B97	# <cjk>
+0xE9BB	U+9B9F	# <cjk>
+0xE9BC	U+9BA0	# <cjk>
+0xE9BD	U+9BA8	# <cjk>
+0xE9BE	U+9BB4	# <cjk>
+0xE9BF	U+9BC0	# <cjk>
+0xE9C0	U+9BCA	# <cjk>
+0xE9C1	U+9BB9	# <cjk>
+0xE9C2	U+9BC6	# <cjk>
+0xE9C3	U+9BCF	# <cjk>
+0xE9C4	U+9BD1	# <cjk>
+0xE9C5	U+9BD2	# <cjk>
+0xE9C6	U+9BE3	# <cjk>
+0xE9C7	U+9BE2	# <cjk>
+0xE9C8	U+9BE4	# <cjk>
+0xE9C9	U+9BD4	# <cjk>
+0xE9CA	U+9BE1	# <cjk>
+0xE9CB	U+9C3A	# <cjk>
+0xE9CC	U+9BF2	# <cjk>
+0xE9CD	U+9BF1	# <cjk>
+0xE9CE	U+9BF0	# <cjk>
+0xE9CF	U+9C15	# <cjk>
+0xE9D0	U+9C14	# <cjk>
+0xE9D1	U+9C09	# <cjk>
+0xE9D2	U+9C13	# <cjk>
+0xE9D3	U+9C0C	# <cjk>
+0xE9D4	U+9C06	# <cjk>
+0xE9D5	U+9C08	# <cjk>
+0xE9D6	U+9C12	# <cjk>
+0xE9D7	U+9C0A	# <cjk>
+0xE9D8	U+9C04	# <cjk>
+0xE9D9	U+9C2E	# <cjk>
+0xE9DA	U+9C1B	# <cjk>
+0xE9DB	U+9C25	# <cjk>
+0xE9DC	U+9C24	# <cjk>
+0xE9DD	U+9C21	# <cjk>
+0xE9DE	U+9C30	# <cjk>
+0xE9DF	U+9C47	# <cjk>
+0xE9E0	U+9C32	# <cjk>
+0xE9E1	U+9C46	# <cjk>
+0xE9E2	U+9C3E	# <cjk>
+0xE9E3	U+9C5A	# <cjk>
+0xE9E4	U+9C60	# <cjk>
+0xE9E5	U+9C67	# <cjk>
+0xE9E6	U+9C76	# <cjk>
+0xE9E7	U+9C78	# <cjk>
+0xE9E8	U+9CE7	# <cjk>
+0xE9E9	U+9CEC	# <cjk>
+0xE9EA	U+9CF0	# <cjk>
+0xE9EB	U+9D09	# <cjk>
+0xE9EC	U+9D08	# <cjk>
+0xE9ED	U+9CEB	# <cjk>
+0xE9EE	U+9D03	# <cjk>
+0xE9EF	U+9D06	# <cjk>
+0xE9F0	U+9D2A	# <cjk>
+0xE9F1	U+9D26	# <cjk>
+0xE9F2	U+9DAF	# <cjk>
+0xE9F3	U+9D23	# <cjk>
+0xE9F4	U+9D1F	# <cjk>
+0xE9F5	U+9D44	# <cjk>
+0xE9F6	U+9D15	# <cjk>
+0xE9F7	U+9D12	# <cjk>
+0xE9F8	U+9D41	# <cjk>
+0xE9F9	U+9D3F	# <cjk>
+0xE9FA	U+9D3E	# <cjk>
+0xE9FB	U+9D46	# <cjk>
+0xE9FC	U+9D48	# <cjk>
+0xEA40	U+9D5D	# <cjk>
+0xEA41	U+9D5E	# <cjk>
+0xEA42	U+9D64	# <cjk>
+0xEA43	U+9D51	# <cjk>
+0xEA44	U+9D50	# <cjk>
+0xEA45	U+9D59	# <cjk>
+0xEA46	U+9D72	# <cjk>
+0xEA47	U+9D89	# <cjk>
+0xEA48	U+9D87	# <cjk>
+0xEA49	U+9DAB	# <cjk>
+0xEA4A	U+9D6F	# <cjk>
+0xEA4B	U+9D7A	# <cjk>
+0xEA4C	U+9D9A	# <cjk>
+0xEA4D	U+9DA4	# <cjk>
+0xEA4E	U+9DA9	# <cjk>
+0xEA4F	U+9DB2	# <cjk>
+0xEA50	U+9DC4	# <cjk>
+0xEA51	U+9DC1	# <cjk>
+0xEA52	U+9DBB	# <cjk>
+0xEA53	U+9DB8	# <cjk>
+0xEA54	U+9DBA	# <cjk>
+0xEA55	U+9DC6	# <cjk>
+0xEA56	U+9DCF	# <cjk>
+0xEA57	U+9DC2	# <cjk>
+0xEA58	U+9DD9	# <cjk>
+0xEA59	U+9DD3	# <cjk>
+0xEA5A	U+9DF8	# <cjk>
+0xEA5B	U+9DE6	# <cjk>
+0xEA5C	U+9DED	# <cjk>
+0xEA5D	U+9DEF	# <cjk>
+0xEA5E	U+9DFD	# <cjk>
+0xEA5F	U+9E1A	# <cjk>
+0xEA60	U+9E1B	# <cjk>
+0xEA61	U+9E1E	# <cjk>
+0xEA62	U+9E75	# <cjk>
+0xEA63	U+9E79	# <cjk>
+0xEA64	U+9E7D	# <cjk>
+0xEA65	U+9E81	# <cjk>
+0xEA66	U+9E88	# <cjk>
+0xEA67	U+9E8B	# <cjk>
+0xEA68	U+9E8C	# <cjk>
+0xEA69	U+9E92	# <cjk>
+0xEA6A	U+9E95	# <cjk>
+0xEA6B	U+9E91	# <cjk>
+0xEA6C	U+9E9D	# <cjk>
+0xEA6D	U+9EA5	# <cjk>
+0xEA6E	U+9EA9	# <cjk>
+0xEA6F	U+9EB8	# <cjk>
+0xEA70	U+9EAA	# <cjk>
+0xEA71	U+9EAD	# <cjk>
+0xEA72	U+9761	# <cjk>
+0xEA73	U+9ECC	# <cjk>
+0xEA74	U+9ECE	# <cjk>
+0xEA75	U+9ECF	# <cjk>
+0xEA76	U+9ED0	# <cjk>
+0xEA77	U+9ED4	# <cjk>
+0xEA78	U+9EDC	# <cjk>
+0xEA79	U+9EDE	# <cjk>
+0xEA7A	U+9EDD	# <cjk>
+0xEA7B	U+9EE0	# <cjk>
+0xEA7C	U+9EE5	# <cjk>
+0xEA7D	U+9EE8	# <cjk>
+0xEA7E	U+9EEF	# <cjk>
+0xEA80	U+9EF4	# <cjk>
+0xEA81	U+9EF6	# <cjk>
+0xEA82	U+9EF7	# <cjk>
+0xEA83	U+9EF9	# <cjk>
+0xEA84	U+9EFB	# <cjk>
+0xEA85	U+9EFC	# <cjk>
+0xEA86	U+9EFD	# <cjk>
+0xEA87	U+9F07	# <cjk>
+0xEA88	U+9F08	# <cjk>
+0xEA89	U+76B7	# <cjk>
+0xEA8A	U+9F15	# <cjk>
+0xEA8B	U+9F21	# <cjk>
+0xEA8C	U+9F2C	# <cjk>
+0xEA8D	U+9F3E	# <cjk>
+0xEA8E	U+9F4A	# <cjk>
+0xEA8F	U+9F52	# <cjk>
+0xEA90	U+9F54	# <cjk>
+0xEA91	U+9F63	# <cjk>
+0xEA92	U+9F5F	# <cjk>
+0xEA93	U+9F60	# <cjk>
+0xEA94	U+9F61	# <cjk>
+0xEA95	U+9F66	# <cjk>
+0xEA96	U+9F67	# <cjk>
+0xEA97	U+9F6C	# <cjk>
+0xEA98	U+9F6A	# <cjk>
+0xEA99	U+9F77	# <cjk>
+0xEA9A	U+9F72	# <cjk>
+0xEA9B	U+9F76	# <cjk>
+0xEA9C	U+9F95	# <cjk>
+0xEA9D	U+9F9C	# <cjk>
+0xEA9E	U+9FA0	# <cjk>
+0xEA9F	U+582F	# <cjk>	[1983]
+0xEAA0	U+69C7	# <cjk>	[1983]
+0xEAA1	U+9059	# <cjk>	[1983]
+0xEAA2	U+7464	# <cjk>	[1983]
+0xEAA3	U+51DC	# <cjk>	[1990]
+0xEAA4	U+7199	# <cjk>	[1990]
+0xEAA5	U+5653	# <cjk>	[2004]
+0xEAA6	U+5DE2	# <cjk>	[2000]
+0xEAA7	U+5E14	# <cjk>	[2000]
+0xEAA8	U+5E18	# <cjk>	[2000]
+0xEAA9	U+5E58	# <cjk>	[2000]
+0xEAAA	U+5E5E	# <cjk>	[2000]
+0xEAAB	U+5EBE	# <cjk>	[2000]
+0xEAAC	U+F928	# CJK COMPATIBILITY IDEOGRAPH-F928	[2000]
+0xEAAD	U+5ECB	# <cjk>	[2000]
+0xEAAE	U+5EF9	# <cjk>	[2000]
+0xEAAF	U+5F00	# <cjk>	[2000]
+0xEAB0	U+5F02	# <cjk>	[2000]
+0xEAB1	U+5F07	# <cjk>	[2000]
+0xEAB2	U+5F1D	# <cjk>	[2000]
+0xEAB3	U+5F23	# <cjk>	[2000]
+0xEAB4	U+5F34	# <cjk>	[2000]
+0xEAB5	U+5F36	# <cjk>	[2000]
+0xEAB6	U+5F3D	# <cjk>	[2000]
+0xEAB7	U+5F40	# <cjk>	[2000]
+0xEAB8	U+5F45	# <cjk>	[2000]
+0xEAB9	U+5F54	# <cjk>	[2000]
+0xEABA	U+5F58	# <cjk>	[2000]
+0xEABB	U+5F64	# <cjk>	[2000]
+0xEABC	U+5F67	# <cjk>	[2000]
+0xEABD	U+5F7D	# <cjk>	[2000]
+0xEABE	U+5F89	# <cjk>	[2000]
+0xEABF	U+5F9C	# <cjk>	[2000]
+0xEAC0	U+5FA7	# <cjk>	[2000]
+0xEAC1	U+5FAF	# <cjk>	[2000]
+0xEAC2	U+5FB5	# <cjk>	[2000]
+0xEAC3	U+5FB7	# <cjk>	[2000]
+0xEAC4	U+5FC9	# <cjk>	[2000]
+0xEAC5	U+5FDE	# <cjk>	[2000]
+0xEAC6	U+5FE1	# <cjk>	[2000]
+0xEAC7	U+5FE9	# <cjk>	[2000]
+0xEAC8	U+600D	# <cjk>	[2000]
+0xEAC9	U+6014	# <cjk>	[2000]
+0xEACA	U+6018	# <cjk>	[2000]
+0xEACB	U+6033	# <cjk>	[2000]
+0xEACC	U+6035	# <cjk>	[2000]
+0xEACD	U+6047	# <cjk>	[2000]
+0xEACE	U+FA3D	# CJK COMPATIBILITY IDEOGRAPH-FA3D	[2000]	[Unicode3.2]
+0xEACF	U+609D	# <cjk>	[2000]
+0xEAD0	U+609E	# <cjk>	[2000]
+0xEAD1	U+60CB	# <cjk>	[2000]
+0xEAD2	U+60D4	# <cjk>	[2000]
+0xEAD3	U+60D5	# <cjk>	[2000]
+0xEAD4	U+60DD	# <cjk>	[2000]
+0xEAD5	U+60F8	# <cjk>	[2000]
+0xEAD6	U+611C	# <cjk>	[2000]
+0xEAD7	U+612B	# <cjk>	[2000]
+0xEAD8	U+6130	# <cjk>	[2000]
+0xEAD9	U+6137	# <cjk>	[2000]
+0xEADA	U+FA3E	# CJK COMPATIBILITY IDEOGRAPH-FA3E	[2000]	[Unicode3.2]
+0xEADB	U+618D	# <cjk>	[2000]
+0xEADC	U+FA3F	# CJK COMPATIBILITY IDEOGRAPH-FA3F	[2000]	[Unicode3.2]
+0xEADD	U+61BC	# <cjk>	[2000]
+0xEADE	U+61B9	# <cjk>	[2000]
+0xEADF	U+FA40	# CJK COMPATIBILITY IDEOGRAPH-FA40	[2000]	[Unicode3.2]
+0xEAE0	U+6222	# <cjk>	[2000]
+0xEAE1	U+623E	# <cjk>	[2000]
+0xEAE2	U+6243	# <cjk>	[2000]
+0xEAE3	U+6256	# <cjk>	[2000]
+0xEAE4	U+625A	# <cjk>	[2000]
+0xEAE5	U+626F	# <cjk>	[2000]
+0xEAE6	U+6285	# <cjk>	[2000]
+0xEAE7	U+62C4	# <cjk>	[2000]
+0xEAE8	U+62D6	# <cjk>	[2000]
+0xEAE9	U+62FC	# <cjk>	[2000]
+0xEAEA	U+630A	# <cjk>	[2000]
+0xEAEB	U+6318	# <cjk>	[2000]
+0xEAEC	U+6339	# <cjk>	[2000]
+0xEAED	U+6343	# <cjk>	[2000]
+0xEAEE	U+6365	# <cjk>	[2000]
+0xEAEF	U+637C	# <cjk>	[2000]
+0xEAF0	U+63E5	# <cjk>	[2000]
+0xEAF1	U+63ED	# <cjk>	[2000]
+0xEAF2	U+63F5	# <cjk>	[2000]
+0xEAF3	U+6410	# <cjk>	[2000]
+0xEAF4	U+6414	# <cjk>	[2000]
+0xEAF5	U+6422	# <cjk>	[2000]
+0xEAF6	U+6479	# <cjk>	[2000]
+0xEAF7	U+6451	# <cjk>	[2000]
+0xEAF8	U+6460	# <cjk>	[2000]
+0xEAF9	U+646D	# <cjk>	[2000]
+0xEAFA	U+64CE	# <cjk>	[2000]
+0xEAFB	U+64BE	# <cjk>	[2000]
+0xEAFC	U+64BF	# <cjk>	[2000]
+0xEB40	U+64C4	# <cjk>	[2000]
+0xEB41	U+64CA	# <cjk>	[2000]
+0xEB42	U+64D0	# <cjk>	[2000]
+0xEB43	U+64F7	# <cjk>	[2000]
+0xEB44	U+64FB	# <cjk>	[2000]
+0xEB45	U+6522	# <cjk>	[2000]
+0xEB46	U+6529	# <cjk>	[2000]
+0xEB47	U+FA41	# CJK COMPATIBILITY IDEOGRAPH-FA41	[2000]	[Unicode3.2]
+0xEB48	U+6567	# <cjk>	[2000]
+0xEB49	U+659D	# <cjk>	[2000]
+0xEB4A	U+FA42	# CJK COMPATIBILITY IDEOGRAPH-FA42	[2000]	[Unicode3.2]
+0xEB4B	U+6600	# <cjk>	[2000]
+0xEB4C	U+6609	# <cjk>	[2000]
+0xEB4D	U+6615	# <cjk>	[2000]
+0xEB4E	U+661E	# <cjk>	[2000]
+0xEB4F	U+663A	# <cjk>	[2000]
+0xEB50	U+6622	# <cjk>	[2000]
+0xEB51	U+6624	# <cjk>	[2000]
+0xEB52	U+662B	# <cjk>	[2000]
+0xEB53	U+6630	# <cjk>	[2000]
+0xEB54	U+6631	# <cjk>	[2000]
+0xEB55	U+6633	# <cjk>	[2000]
+0xEB56	U+66FB	# <cjk>	[2000]
+0xEB57	U+6648	# <cjk>	[2000]
+0xEB58	U+664C	# <cjk>	[2000]
+0xEB59	U+231C4	# <cjk>	[2000]	[Unicode3.1]
+0xEB5A	U+6659	# <cjk>	[2000]
+0xEB5B	U+665A	# <cjk>	[2000]
+0xEB5C	U+6661	# <cjk>	[2000]
+0xEB5D	U+6665	# <cjk>	[2000]
+0xEB5E	U+6673	# <cjk>	[2000]
+0xEB5F	U+6677	# <cjk>	[2000]
+0xEB60	U+6678	# <cjk>	[2000]
+0xEB61	U+668D	# <cjk>	[2000]
+0xEB62	U+FA43	# CJK COMPATIBILITY IDEOGRAPH-FA43	[2000]	[Unicode3.2]
+0xEB63	U+66A0	# <cjk>	[2000]
+0xEB64	U+66B2	# <cjk>	[2000]
+0xEB65	U+66BB	# <cjk>	[2000]
+0xEB66	U+66C6	# <cjk>	[2000]
+0xEB67	U+66C8	# <cjk>	[2000]
+0xEB68	U+3B22	# <cjk>	[2000]
+0xEB69	U+66DB	# <cjk>	[2000]
+0xEB6A	U+66E8	# <cjk>	[2000]
+0xEB6B	U+66FA	# <cjk>	[2000]
+0xEB6C	U+6713	# <cjk>	[2000]
+0xEB6D	U+F929	# CJK COMPATIBILITY IDEOGRAPH-F929	[2000]
+0xEB6E	U+6733	# <cjk>	[2000]
+0xEB6F	U+6766	# <cjk>	[2000]
+0xEB70	U+6747	# <cjk>	[2000]
+0xEB71	U+6748	# <cjk>	[2000]
+0xEB72	U+677B	# <cjk>	[2000]
+0xEB73	U+6781	# <cjk>	[2000]
+0xEB74	U+6793	# <cjk>	[2000]
+0xEB75	U+6798	# <cjk>	[2000]
+0xEB76	U+679B	# <cjk>	[2000]
+0xEB77	U+67BB	# <cjk>	[2000]
+0xEB78	U+67F9	# <cjk>	[2000]
+0xEB79	U+67C0	# <cjk>	[2000]
+0xEB7A	U+67D7	# <cjk>	[2000]
+0xEB7B	U+67FC	# <cjk>	[2000]
+0xEB7C	U+6801	# <cjk>	[2000]
+0xEB7D	U+6852	# <cjk>	[2000]
+0xEB7E	U+681D	# <cjk>	[2000]
+0xEB80	U+682C	# <cjk>	[2000]
+0xEB81	U+6831	# <cjk>	[2000]
+0xEB82	U+685B	# <cjk>	[2000]
+0xEB83	U+6872	# <cjk>	[2000]
+0xEB84	U+6875	# <cjk>	[2000]
+0xEB85	U+FA44	# CJK COMPATIBILITY IDEOGRAPH-FA44	[2000]	[Unicode3.2]
+0xEB86	U+68A3	# <cjk>	[2000]
+0xEB87	U+68A5	# <cjk>	[2000]
+0xEB88	U+68B2	# <cjk>	[2000]
+0xEB89	U+68C8	# <cjk>	[2000]
+0xEB8A	U+68D0	# <cjk>	[2000]
+0xEB8B	U+68E8	# <cjk>	[2000]
+0xEB8C	U+68ED	# <cjk>	[2000]
+0xEB8D	U+68F0	# <cjk>	[2000]
+0xEB8E	U+68F1	# <cjk>	[2000]
+0xEB8F	U+68FC	# <cjk>	[2000]
+0xEB90	U+690A	# <cjk>	[2000]
+0xEB91	U+6949	# <cjk>	[2000]
+0xEB92	U+235C4	# <cjk>	[2000]	[Unicode3.1]
+0xEB93	U+6935	# <cjk>	[2000]
+0xEB94	U+6942	# <cjk>	[2000]
+0xEB95	U+6957	# <cjk>	[2000]
+0xEB96	U+6963	# <cjk>	[2000]
+0xEB97	U+6964	# <cjk>	[2000]
+0xEB98	U+6968	# <cjk>	[2000]
+0xEB99	U+6980	# <cjk>	[2000]
+0xEB9A	U+FA14	# CJK COMPATIBILITY IDEOGRAPH-FA14	[2000]
+0xEB9B	U+69A5	# <cjk>	[2000]
+0xEB9C	U+69AD	# <cjk>	[2000]
+0xEB9D	U+69CF	# <cjk>	[2000]
+0xEB9E	U+3BB6	# <cjk>	[2000]
+0xEB9F	U+3BC3	# <cjk>	[2000]
+0xEBA0	U+69E2	# <cjk>	[2000]
+0xEBA1	U+69E9	# <cjk>	[2000]
+0xEBA2	U+69EA	# <cjk>	[2000]
+0xEBA3	U+69F5	# <cjk>	[2000]
+0xEBA4	U+69F6	# <cjk>	[2000]
+0xEBA5	U+6A0F	# <cjk>	[2000]
+0xEBA6	U+6A15	# <cjk>	[2000]
+0xEBA7	U+2373F	# <cjk>	[2000]	[Unicode3.1]
+0xEBA8	U+6A3B	# <cjk>	[2000]
+0xEBA9	U+6A3E	# <cjk>	[2000]
+0xEBAA	U+6A45	# <cjk>	[2000]
+0xEBAB	U+6A50	# <cjk>	[2000]
+0xEBAC	U+6A56	# <cjk>	[2000]
+0xEBAD	U+6A5B	# <cjk>	[2000]
+0xEBAE	U+6A6B	# <cjk>	[2000]
+0xEBAF	U+6A73	# <cjk>	[2000]
+0xEBB0	U+23763	# <cjk>	[2000]	[Unicode3.1]
+0xEBB1	U+6A89	# <cjk>	[2000]
+0xEBB2	U+6A94	# <cjk>	[2000]
+0xEBB3	U+6A9D	# <cjk>	[2000]
+0xEBB4	U+6A9E	# <cjk>	[2000]
+0xEBB5	U+6AA5	# <cjk>	[2000]
+0xEBB6	U+6AE4	# <cjk>	[2000]
+0xEBB7	U+6AE7	# <cjk>	[2000]
+0xEBB8	U+3C0F	# <cjk>	[2000]
+0xEBB9	U+F91D	# CJK COMPATIBILITY IDEOGRAPH-F91D	[2000]
+0xEBBA	U+6B1B	# <cjk>	[2000]
+0xEBBB	U+6B1E	# <cjk>	[2000]
+0xEBBC	U+6B2C	# <cjk>	[2000]
+0xEBBD	U+6B35	# <cjk>	[2000]
+0xEBBE	U+6B46	# <cjk>	[2000]
+0xEBBF	U+6B56	# <cjk>	[2000]
+0xEBC0	U+6B60	# <cjk>	[2000]
+0xEBC1	U+6B65	# <cjk>	[2000]
+0xEBC2	U+6B67	# <cjk>	[2000]
+0xEBC3	U+6B77	# <cjk>	[2000]
+0xEBC4	U+6B82	# <cjk>	[2000]
+0xEBC5	U+6BA9	# <cjk>	[2000]
+0xEBC6	U+6BAD	# <cjk>	[2000]
+0xEBC7	U+F970	# CJK COMPATIBILITY IDEOGRAPH-F970	[2000]
+0xEBC8	U+6BCF	# <cjk>	[2000]
+0xEBC9	U+6BD6	# <cjk>	[2000]
+0xEBCA	U+6BD7	# <cjk>	[2000]
+0xEBCB	U+6BFF	# <cjk>	[2000]
+0xEBCC	U+6C05	# <cjk>	[2000]
+0xEBCD	U+6C10	# <cjk>	[2000]
+0xEBCE	U+6C33	# <cjk>	[2000]
+0xEBCF	U+6C59	# <cjk>	[2000]
+0xEBD0	U+6C5C	# <cjk>	[2000]
+0xEBD1	U+6CAA	# <cjk>	[2000]
+0xEBD2	U+6C74	# <cjk>	[2000]
+0xEBD3	U+6C76	# <cjk>	[2000]
+0xEBD4	U+6C85	# <cjk>	[2000]
+0xEBD5	U+6C86	# <cjk>	[2000]
+0xEBD6	U+6C98	# <cjk>	[2000]
+0xEBD7	U+6C9C	# <cjk>	[2000]
+0xEBD8	U+6CFB	# <cjk>	[2000]
+0xEBD9	U+6CC6	# <cjk>	[2000]
+0xEBDA	U+6CD4	# <cjk>	[2000]
+0xEBDB	U+6CE0	# <cjk>	[2000]
+0xEBDC	U+6CEB	# <cjk>	[2000]
+0xEBDD	U+6CEE	# <cjk>	[2000]
+0xEBDE	U+23CFE	# <cjk>	[2000]	[Unicode3.1]
+0xEBDF	U+6D04	# <cjk>	[2000]
+0xEBE0	U+6D0E	# <cjk>	[2000]
+0xEBE1	U+6D2E	# <cjk>	[2000]
+0xEBE2	U+6D31	# <cjk>	[2000]
+0xEBE3	U+6D39	# <cjk>	[2000]
+0xEBE4	U+6D3F	# <cjk>	[2000]
+0xEBE5	U+6D58	# <cjk>	[2000]
+0xEBE6	U+6D65	# <cjk>	[2000]
+0xEBE7	U+FA45	# CJK COMPATIBILITY IDEOGRAPH-FA45	[2000]	[Unicode3.2]
+0xEBE8	U+6D82	# <cjk>	[2000]
+0xEBE9	U+6D87	# <cjk>	[2000]
+0xEBEA	U+6D89	# <cjk>	[2000]
+0xEBEB	U+6D94	# <cjk>	[2000]
+0xEBEC	U+6DAA	# <cjk>	[2000]
+0xEBED	U+6DAC	# <cjk>	[2000]
+0xEBEE	U+6DBF	# <cjk>	[2000]
+0xEBEF	U+6DC4	# <cjk>	[2000]
+0xEBF0	U+6DD6	# <cjk>	[2000]
+0xEBF1	U+6DDA	# <cjk>	[2000]
+0xEBF2	U+6DDB	# <cjk>	[2000]
+0xEBF3	U+6DDD	# <cjk>	[2000]
+0xEBF4	U+6DFC	# <cjk>	[2000]
+0xEBF5	U+FA46	# CJK COMPATIBILITY IDEOGRAPH-FA46	[2000]	[Unicode3.2]
+0xEBF6	U+6E34	# <cjk>	[2000]
+0xEBF7	U+6E44	# <cjk>	[2000]
+0xEBF8	U+6E5C	# <cjk>	[2000]
+0xEBF9	U+6E5E	# <cjk>	[2000]
+0xEBFA	U+6EAB	# <cjk>	[2000]
+0xEBFB	U+6EB1	# <cjk>	[2000]
+0xEBFC	U+6EC1	# <cjk>	[2000]
+0xEC40	U+6EC7	# <cjk>	[2000]
+0xEC41	U+6ECE	# <cjk>	[2000]
+0xEC42	U+6F10	# <cjk>	[2000]
+0xEC43	U+6F1A	# <cjk>	[2000]
+0xEC44	U+FA47	# CJK COMPATIBILITY IDEOGRAPH-FA47	[2000]	[Unicode3.2]
+0xEC45	U+6F2A	# <cjk>	[2000]
+0xEC46	U+6F2F	# <cjk>	[2000]
+0xEC47	U+6F33	# <cjk>	[2000]
+0xEC48	U+6F51	# <cjk>	[2000]
+0xEC49	U+6F59	# <cjk>	[2000]
+0xEC4A	U+6F5E	# <cjk>	[2000]
+0xEC4B	U+6F61	# <cjk>	[2000]
+0xEC4C	U+6F62	# <cjk>	[2000]
+0xEC4D	U+6F7E	# <cjk>	[2000]
+0xEC4E	U+6F88	# <cjk>	[2000]
+0xEC4F	U+6F8C	# <cjk>	[2000]
+0xEC50	U+6F8D	# <cjk>	[2000]
+0xEC51	U+6F94	# <cjk>	[2000]
+0xEC52	U+6FA0	# <cjk>	[2000]
+0xEC53	U+6FA7	# <cjk>	[2000]
+0xEC54	U+6FB6	# <cjk>	[2000]
+0xEC55	U+6FBC	# <cjk>	[2000]
+0xEC56	U+6FC7	# <cjk>	[2000]
+0xEC57	U+6FCA	# <cjk>	[2000]
+0xEC58	U+6FF9	# <cjk>	[2000]
+0xEC59	U+6FF0	# <cjk>	[2000]
+0xEC5A	U+6FF5	# <cjk>	[2000]
+0xEC5B	U+7005	# <cjk>	[2000]
+0xEC5C	U+7006	# <cjk>	[2000]
+0xEC5D	U+7028	# <cjk>	[2000]
+0xEC5E	U+704A	# <cjk>	[2000]
+0xEC5F	U+705D	# <cjk>	[2000]
+0xEC60	U+705E	# <cjk>	[2000]
+0xEC61	U+704E	# <cjk>	[2000]
+0xEC62	U+7064	# <cjk>	[2000]
+0xEC63	U+7075	# <cjk>	[2000]
+0xEC64	U+7085	# <cjk>	[2000]
+0xEC65	U+70A4	# <cjk>	[2000]
+0xEC66	U+70AB	# <cjk>	[2000]
+0xEC67	U+70B7	# <cjk>	[2000]
+0xEC68	U+70D4	# <cjk>	[2000]
+0xEC69	U+70D8	# <cjk>	[2000]
+0xEC6A	U+70E4	# <cjk>	[2000]
+0xEC6B	U+710F	# <cjk>	[2000]
+0xEC6C	U+712B	# <cjk>	[2000]
+0xEC6D	U+711E	# <cjk>	[2000]
+0xEC6E	U+7120	# <cjk>	[2000]
+0xEC6F	U+712E	# <cjk>	[2000]
+0xEC70	U+7130	# <cjk>	[2000]
+0xEC71	U+7146	# <cjk>	[2000]
+0xEC72	U+7147	# <cjk>	[2000]
+0xEC73	U+7151	# <cjk>	[2000]
+0xEC74	U+FA48	# CJK COMPATIBILITY IDEOGRAPH-FA48	[2000]	[Unicode3.2]
+0xEC75	U+7152	# <cjk>	[2000]
+0xEC76	U+715C	# <cjk>	[2000]
+0xEC77	U+7160	# <cjk>	[2000]
+0xEC78	U+7168	# <cjk>	[2000]
+0xEC79	U+FA15	# CJK COMPATIBILITY IDEOGRAPH-FA15	[2000]
+0xEC7A	U+7185	# <cjk>	[2000]
+0xEC7B	U+7187	# <cjk>	[2000]
+0xEC7C	U+7192	# <cjk>	[2000]
+0xEC7D	U+71C1	# <cjk>	[2000]
+0xEC7E	U+71BA	# <cjk>	[2000]
+0xEC80	U+71C4	# <cjk>	[2000]
+0xEC81	U+71FE	# <cjk>	[2000]
+0xEC82	U+7200	# <cjk>	[2000]
+0xEC83	U+7215	# <cjk>	[2000]
+0xEC84	U+7255	# <cjk>	[2000]
+0xEC85	U+7256	# <cjk>	[2000]
+0xEC86	U+3E3F	# <cjk>	[2000]
+0xEC87	U+728D	# <cjk>	[2000]
+0xEC88	U+729B	# <cjk>	[2000]
+0xEC89	U+72BE	# <cjk>	[2000]
+0xEC8A	U+72C0	# <cjk>	[2000]
+0xEC8B	U+72FB	# <cjk>	[2000]
+0xEC8C	U+247F1	# <cjk>	[2000]	[Unicode3.1]
+0xEC8D	U+7327	# <cjk>	[2000]
+0xEC8E	U+7328	# <cjk>	[2000]
+0xEC8F	U+FA16	# CJK COMPATIBILITY IDEOGRAPH-FA16	[2000]
+0xEC90	U+7350	# <cjk>	[2000]
+0xEC91	U+7366	# <cjk>	[2000]
+0xEC92	U+737C	# <cjk>	[2000]
+0xEC93	U+7395	# <cjk>	[2000]
+0xEC94	U+739F	# <cjk>	[2000]
+0xEC95	U+73A0	# <cjk>	[2000]
+0xEC96	U+73A2	# <cjk>	[2000]
+0xEC97	U+73A6	# <cjk>	[2000]
+0xEC98	U+73AB	# <cjk>	[2000]
+0xEC99	U+73C9	# <cjk>	[2000]
+0xEC9A	U+73CF	# <cjk>	[2000]
+0xEC9B	U+73D6	# <cjk>	[2000]
+0xEC9C	U+73D9	# <cjk>	[2000]
+0xEC9D	U+73E3	# <cjk>	[2000]
+0xEC9E	U+73E9	# <cjk>	[2000]
+0xEC9F	U+7407	# <cjk>	[2000]
+0xECA0	U+740A	# <cjk>	[2000]
+0xECA1	U+741A	# <cjk>	[2000]
+0xECA2	U+741B	# <cjk>	[2000]
+0xECA3	U+FA4A	# CJK COMPATIBILITY IDEOGRAPH-FA4A	[2000]	[Unicode3.2]
+0xECA4	U+7426	# <cjk>	[2000]
+0xECA5	U+7428	# <cjk>	[2000]
+0xECA6	U+742A	# <cjk>	[2000]
+0xECA7	U+742B	# <cjk>	[2000]
+0xECA8	U+742C	# <cjk>	[2000]
+0xECA9	U+742E	# <cjk>	[2000]
+0xECAA	U+742F	# <cjk>	[2000]
+0xECAB	U+7430	# <cjk>	[2000]
+0xECAC	U+7444	# <cjk>	[2000]
+0xECAD	U+7446	# <cjk>	[2000]
+0xECAE	U+7447	# <cjk>	[2000]
+0xECAF	U+744B	# <cjk>	[2000]
+0xECB0	U+7457	# <cjk>	[2000]
+0xECB1	U+7462	# <cjk>	[2000]
+0xECB2	U+746B	# <cjk>	[2000]
+0xECB3	U+746D	# <cjk>	[2000]
+0xECB4	U+7486	# <cjk>	[2000]
+0xECB5	U+7487	# <cjk>	[2000]
+0xECB6	U+7489	# <cjk>	[2000]
+0xECB7	U+7498	# <cjk>	[2000]
+0xECB8	U+749C	# <cjk>	[2000]
+0xECB9	U+749F	# <cjk>	[2000]
+0xECBA	U+74A3	# <cjk>	[2000]
+0xECBB	U+7490	# <cjk>	[2000]
+0xECBC	U+74A6	# <cjk>	[2000]
+0xECBD	U+74A8	# <cjk>	[2000]
+0xECBE	U+74A9	# <cjk>	[2000]
+0xECBF	U+74B5	# <cjk>	[2000]
+0xECC0	U+74BF	# <cjk>	[2000]
+0xECC1	U+74C8	# <cjk>	[2000]
+0xECC2	U+74C9	# <cjk>	[2000]
+0xECC3	U+74DA	# <cjk>	[2000]
+0xECC4	U+74FF	# <cjk>	[2000]
+0xECC5	U+7501	# <cjk>	[2000]
+0xECC6	U+7517	# <cjk>	[2000]
+0xECC7	U+752F	# <cjk>	[2000]
+0xECC8	U+756F	# <cjk>	[2000]
+0xECC9	U+7579	# <cjk>	[2000]
+0xECCA	U+7592	# <cjk>	[2000]
+0xECCB	U+3F72	# <cjk>	[2000]
+0xECCC	U+75CE	# <cjk>	[2000]
+0xECCD	U+75E4	# <cjk>	[2000]
+0xECCE	U+7600	# <cjk>	[2000]
+0xECCF	U+7602	# <cjk>	[2000]
+0xECD0	U+7608	# <cjk>	[2000]
+0xECD1	U+7615	# <cjk>	[2000]
+0xECD2	U+7616	# <cjk>	[2000]
+0xECD3	U+7619	# <cjk>	[2000]
+0xECD4	U+761E	# <cjk>	[2000]
+0xECD5	U+762D	# <cjk>	[2000]
+0xECD6	U+7635	# <cjk>	[2000]
+0xECD7	U+7643	# <cjk>	[2000]
+0xECD8	U+764B	# <cjk>	[2000]
+0xECD9	U+7664	# <cjk>	[2000]
+0xECDA	U+7665	# <cjk>	[2000]
+0xECDB	U+766D	# <cjk>	[2000]
+0xECDC	U+766F	# <cjk>	[2000]
+0xECDD	U+7671	# <cjk>	[2000]
+0xECDE	U+7681	# <cjk>	[2000]
+0xECDF	U+769B	# <cjk>	[2000]
+0xECE0	U+769D	# <cjk>	[2000]
+0xECE1	U+769E	# <cjk>	[2000]
+0xECE2	U+76A6	# <cjk>	[2000]
+0xECE3	U+76AA	# <cjk>	[2000]
+0xECE4	U+76B6	# <cjk>	[2000]
+0xECE5	U+76C5	# <cjk>	[2000]
+0xECE6	U+76CC	# <cjk>	[2000]
+0xECE7	U+76CE	# <cjk>	[2000]
+0xECE8	U+76D4	# <cjk>	[2000]
+0xECE9	U+76E6	# <cjk>	[2000]
+0xECEA	U+76F1	# <cjk>	[2000]
+0xECEB	U+76FC	# <cjk>	[2000]
+0xECEC	U+770A	# <cjk>	[2000]
+0xECED	U+7719	# <cjk>	[2000]
+0xECEE	U+7734	# <cjk>	[2000]
+0xECEF	U+7736	# <cjk>	[2000]
+0xECF0	U+7746	# <cjk>	[2000]
+0xECF1	U+774D	# <cjk>	[2000]
+0xECF2	U+774E	# <cjk>	[2000]
+0xECF3	U+775C	# <cjk>	[2000]
+0xECF4	U+775F	# <cjk>	[2000]
+0xECF5	U+7762	# <cjk>	[2000]
+0xECF6	U+777A	# <cjk>	[2000]
+0xECF7	U+7780	# <cjk>	[2000]
+0xECF8	U+7794	# <cjk>	[2000]
+0xECF9	U+77AA	# <cjk>	[2000]
+0xECFA	U+77E0	# <cjk>	[2000]
+0xECFB	U+782D	# <cjk>	[2000]
+0xECFC	U+2548E	# <cjk>	[2000]	[Unicode3.1]
+0xED40	U+7843	# <cjk>	[2000]
+0xED41	U+784E	# <cjk>	[2000]
+0xED42	U+784F	# <cjk>	[2000]
+0xED43	U+7851	# <cjk>	[2000]
+0xED44	U+7868	# <cjk>	[2000]
+0xED45	U+786E	# <cjk>	[2000]
+0xED46	U+FA4B	# CJK COMPATIBILITY IDEOGRAPH-FA4B	[2000]	[Unicode3.2]
+0xED47	U+78B0	# <cjk>	[2000]
+0xED48	U+2550E	# <cjk>	[2000]	[Unicode3.1]
+0xED49	U+78AD	# <cjk>	[2000]
+0xED4A	U+78E4	# <cjk>	[2000]
+0xED4B	U+78F2	# <cjk>	[2000]
+0xED4C	U+7900	# <cjk>	[2000]
+0xED4D	U+78F7	# <cjk>	[2000]
+0xED4E	U+791C	# <cjk>	[2000]
+0xED4F	U+792E	# <cjk>	[2000]
+0xED50	U+7931	# <cjk>	[2000]
+0xED51	U+7934	# <cjk>	[2000]
+0xED52	U+FA4C	# CJK COMPATIBILITY IDEOGRAPH-FA4C	[2000]	[Unicode3.2]
+0xED53	U+FA4D	# CJK COMPATIBILITY IDEOGRAPH-FA4D	[2000]	[Unicode3.2]
+0xED54	U+7945	# <cjk>	[2000]
+0xED55	U+7946	# <cjk>	[2000]
+0xED56	U+FA4E	# CJK COMPATIBILITY IDEOGRAPH-FA4E	[2000]	[Unicode3.2]
+0xED57	U+FA4F	# CJK COMPATIBILITY IDEOGRAPH-FA4F	[2000]	[Unicode3.2]
+0xED58	U+FA50	# CJK COMPATIBILITY IDEOGRAPH-FA50	[2000]	[Unicode3.2]
+0xED59	U+795C	# <cjk>	[2000]
+0xED5A	U+FA51	# CJK COMPATIBILITY IDEOGRAPH-FA51	[2000]	[Unicode3.2]
+0xED5B	U+FA19	# CJK COMPATIBILITY IDEOGRAPH-FA19	[2000]
+0xED5C	U+FA1A	# CJK COMPATIBILITY IDEOGRAPH-FA1A	[2000]
+0xED5D	U+7979	# <cjk>	[2000]
+0xED5E	U+FA52	# CJK COMPATIBILITY IDEOGRAPH-FA52	[2000]	[Unicode3.2]
+0xED5F	U+FA53	# CJK COMPATIBILITY IDEOGRAPH-FA53	[2000]	[Unicode3.2]
+0xED60	U+FA1B	# CJK COMPATIBILITY IDEOGRAPH-FA1B	[2000]
+0xED61	U+7998	# <cjk>	[2000]
+0xED62	U+79B1	# <cjk>	[2000]
+0xED63	U+79B8	# <cjk>	[2000]
+0xED64	U+79C8	# <cjk>	[2000]
+0xED65	U+79CA	# <cjk>	[2000]
+0xED66	U+25771	# <cjk>	[2000]	[Unicode3.1]
+0xED67	U+79D4	# <cjk>	[2000]
+0xED68	U+79DE	# <cjk>	[2000]
+0xED69	U+79EB	# <cjk>	[2000]
+0xED6A	U+79ED	# <cjk>	[2000]
+0xED6B	U+7A03	# <cjk>	[2000]
+0xED6C	U+FA54	# CJK COMPATIBILITY IDEOGRAPH-FA54	[2000]	[Unicode3.2]
+0xED6D	U+7A39	# <cjk>	[2000]
+0xED6E	U+7A5D	# <cjk>	[2000]
+0xED6F	U+7A6D	# <cjk>	[2000]
+0xED70	U+FA55	# CJK COMPATIBILITY IDEOGRAPH-FA55	[2000]	[Unicode3.2]
+0xED71	U+7A85	# <cjk>	[2000]
+0xED72	U+7AA0	# <cjk>	[2000]
+0xED73	U+259C4	# <cjk>	[2000]	[Unicode3.1]
+0xED74	U+7AB3	# <cjk>	[2000]
+0xED75	U+7ABB	# <cjk>	[2000]
+0xED76	U+7ACE	# <cjk>	[2000]
+0xED77	U+7AEB	# <cjk>	[2000]
+0xED78	U+7AFD	# <cjk>	[2000]
+0xED79	U+7B12	# <cjk>	[2000]
+0xED7A	U+7B2D	# <cjk>	[2000]
+0xED7B	U+7B3B	# <cjk>	[2000]
+0xED7C	U+7B47	# <cjk>	[2000]
+0xED7D	U+7B4E	# <cjk>	[2000]
+0xED7E	U+7B60	# <cjk>	[2000]
+0xED80	U+7B6D	# <cjk>	[2000]
+0xED81	U+7B6F	# <cjk>	[2000]
+0xED82	U+7B72	# <cjk>	[2000]
+0xED83	U+7B9E	# <cjk>	[2000]
+0xED84	U+FA56	# CJK COMPATIBILITY IDEOGRAPH-FA56	[2000]	[Unicode3.2]
+0xED85	U+7BD7	# <cjk>	[2000]
+0xED86	U+7BD9	# <cjk>	[2000]
+0xED87	U+7C01	# <cjk>	[2000]
+0xED88	U+7C31	# <cjk>	[2000]
+0xED89	U+7C1E	# <cjk>	[2000]
+0xED8A	U+7C20	# <cjk>	[2000]
+0xED8B	U+7C33	# <cjk>	[2000]
+0xED8C	U+7C36	# <cjk>	[2000]
+0xED8D	U+4264	# <cjk>	[2000]
+0xED8E	U+25DA1	# <cjk>	[2000]	[Unicode3.1]
+0xED8F	U+7C59	# <cjk>	[2000]
+0xED90	U+7C6D	# <cjk>	[2000]
+0xED91	U+7C79	# <cjk>	[2000]
+0xED92	U+7C8F	# <cjk>	[2000]
+0xED93	U+7C94	# <cjk>	[2000]
+0xED94	U+7CA0	# <cjk>	[2000]
+0xED95	U+7CBC	# <cjk>	[2000]
+0xED96	U+7CD5	# <cjk>	[2000]
+0xED97	U+7CD9	# <cjk>	[2000]
+0xED98	U+7CDD	# <cjk>	[2000]
+0xED99	U+7D07	# <cjk>	[2000]
+0xED9A	U+7D08	# <cjk>	[2000]
+0xED9B	U+7D13	# <cjk>	[2000]
+0xED9C	U+7D1D	# <cjk>	[2000]
+0xED9D	U+7D23	# <cjk>	[2000]
+0xED9E	U+7D31	# <cjk>	[2000]
+0xED9F	U+7D41	# <cjk>	[2000]
+0xEDA0	U+7D48	# <cjk>	[2000]
+0xEDA1	U+7D53	# <cjk>	[2000]
+0xEDA2	U+7D5C	# <cjk>	[2000]
+0xEDA3	U+7D7A	# <cjk>	[2000]
+0xEDA4	U+7D83	# <cjk>	[2000]
+0xEDA5	U+7D8B	# <cjk>	[2000]
+0xEDA6	U+7DA0	# <cjk>	[2000]
+0xEDA7	U+7DA6	# <cjk>	[2000]
+0xEDA8	U+7DC2	# <cjk>	[2000]
+0xEDA9	U+7DCC	# <cjk>	[2000]
+0xEDAA	U+7DD6	# <cjk>	[2000]
+0xEDAB	U+7DE3	# <cjk>	[2000]
+0xEDAC	U+FA57	# CJK COMPATIBILITY IDEOGRAPH-FA57	[2000]	[Unicode3.2]
+0xEDAD	U+7E28	# <cjk>	[2000]
+0xEDAE	U+7E08	# <cjk>	[2000]
+0xEDAF	U+7E11	# <cjk>	[2000]
+0xEDB0	U+7E15	# <cjk>	[2000]
+0xEDB1	U+FA59	# CJK COMPATIBILITY IDEOGRAPH-FA59	[2000]	[Unicode3.2]
+0xEDB2	U+7E47	# <cjk>	[2000]
+0xEDB3	U+7E52	# <cjk>	[2000]
+0xEDB4	U+7E61	# <cjk>	[2000]
+0xEDB5	U+7E8A	# <cjk>	[2000]
+0xEDB6	U+7E8D	# <cjk>	[2000]
+0xEDB7	U+7F47	# <cjk>	[2000]
+0xEDB8	U+FA5A	# CJK COMPATIBILITY IDEOGRAPH-FA5A	[2000]	[Unicode3.2]
+0xEDB9	U+7F91	# <cjk>	[2000]
+0xEDBA	U+7F97	# <cjk>	[2000]
+0xEDBB	U+7FBF	# <cjk>	[2000]
+0xEDBC	U+7FCE	# <cjk>	[2000]
+0xEDBD	U+7FDB	# <cjk>	[2000]
+0xEDBE	U+7FDF	# <cjk>	[2000]
+0xEDBF	U+7FEC	# <cjk>	[2000]
+0xEDC0	U+7FEE	# <cjk>	[2000]
+0xEDC1	U+7FFA	# <cjk>	[2000]
+0xEDC2	U+FA5B	# CJK COMPATIBILITY IDEOGRAPH-FA5B	[2000]	[Unicode3.2]
+0xEDC3	U+8014	# <cjk>	[2000]
+0xEDC4	U+8026	# <cjk>	[2000]
+0xEDC5	U+8035	# <cjk>	[2000]
+0xEDC6	U+8037	# <cjk>	[2000]
+0xEDC7	U+803C	# <cjk>	[2000]
+0xEDC8	U+80CA	# <cjk>	[2000]
+0xEDC9	U+80D7	# <cjk>	[2000]
+0xEDCA	U+80E0	# <cjk>	[2000]
+0xEDCB	U+80F3	# <cjk>	[2000]
+0xEDCC	U+8118	# <cjk>	[2000]
+0xEDCD	U+814A	# <cjk>	[2000]
+0xEDCE	U+8160	# <cjk>	[2000]
+0xEDCF	U+8167	# <cjk>	[2000]
+0xEDD0	U+8168	# <cjk>	[2000]
+0xEDD1	U+816D	# <cjk>	[2000]
+0xEDD2	U+81BB	# <cjk>	[2000]
+0xEDD3	U+81CA	# <cjk>	[2000]
+0xEDD4	U+81CF	# <cjk>	[2000]
+0xEDD5	U+81D7	# <cjk>	[2000]
+0xEDD6	U+FA5C	# CJK COMPATIBILITY IDEOGRAPH-FA5C	[2000]	[Unicode3.2]
+0xEDD7	U+4453	# <cjk>	[2000]
+0xEDD8	U+445B	# <cjk>	[2000]
+0xEDD9	U+8260	# <cjk>	[2000]
+0xEDDA	U+8274	# <cjk>	[2000]
+0xEDDB	U+26AFF	# <cjk>	[2000]	[Unicode3.1]
+0xEDDC	U+828E	# <cjk>	[2000]
+0xEDDD	U+82A1	# <cjk>	[2000]
+0xEDDE	U+82A3	# <cjk>	[2000]
+0xEDDF	U+82A4	# <cjk>	[2000]
+0xEDE0	U+82A9	# <cjk>	[2000]
+0xEDE1	U+82AE	# <cjk>	[2000]
+0xEDE2	U+82B7	# <cjk>	[2000]
+0xEDE3	U+82BE	# <cjk>	[2000]
+0xEDE4	U+82BF	# <cjk>	[2000]
+0xEDE5	U+82C6	# <cjk>	[2000]
+0xEDE6	U+82D5	# <cjk>	[2000]
+0xEDE7	U+82FD	# <cjk>	[2000]
+0xEDE8	U+82FE	# <cjk>	[2000]
+0xEDE9	U+8300	# <cjk>	[2000]
+0xEDEA	U+8301	# <cjk>	[2000]
+0xEDEB	U+8362	# <cjk>	[2000]
+0xEDEC	U+8322	# <cjk>	[2000]
+0xEDED	U+832D	# <cjk>	[2000]
+0xEDEE	U+833A	# <cjk>	[2000]
+0xEDEF	U+8343	# <cjk>	[2000]
+0xEDF0	U+8347	# <cjk>	[2000]
+0xEDF1	U+8351	# <cjk>	[2000]
+0xEDF2	U+8355	# <cjk>	[2000]
+0xEDF3	U+837D	# <cjk>	[2000]
+0xEDF4	U+8386	# <cjk>	[2000]
+0xEDF5	U+8392	# <cjk>	[2000]
+0xEDF6	U+8398	# <cjk>	[2000]
+0xEDF7	U+83A7	# <cjk>	[2000]
+0xEDF8	U+83A9	# <cjk>	[2000]
+0xEDF9	U+83BF	# <cjk>	[2000]
+0xEDFA	U+83C0	# <cjk>	[2000]
+0xEDFB	U+83C7	# <cjk>	[2000]
+0xEDFC	U+83CF	# <cjk>	[2000]
+0xEE40	U+83D1	# <cjk>	[2000]
+0xEE41	U+83E1	# <cjk>	[2000]
+0xEE42	U+83EA	# <cjk>	[2000]
+0xEE43	U+8401	# <cjk>	[2000]
+0xEE44	U+8406	# <cjk>	[2000]
+0xEE45	U+840A	# <cjk>	[2000]
+0xEE46	U+FA5F	# CJK COMPATIBILITY IDEOGRAPH-FA5F	[2000]	[Unicode3.2]
+0xEE47	U+8448	# <cjk>	[2000]
+0xEE48	U+845F	# <cjk>	[2000]
+0xEE49	U+8470	# <cjk>	[2000]
+0xEE4A	U+8473	# <cjk>	[2000]
+0xEE4B	U+8485	# <cjk>	[2000]
+0xEE4C	U+849E	# <cjk>	[2000]
+0xEE4D	U+84AF	# <cjk>	[2000]
+0xEE4E	U+84B4	# <cjk>	[2000]
+0xEE4F	U+84BA	# <cjk>	[2000]
+0xEE50	U+84C0	# <cjk>	[2000]
+0xEE51	U+84C2	# <cjk>	[2000]
+0xEE52	U+26E40	# <cjk>	[2000]	[Unicode3.1]
+0xEE53	U+8532	# <cjk>	[2000]
+0xEE54	U+851E	# <cjk>	[2000]
+0xEE55	U+8523	# <cjk>	[2000]
+0xEE56	U+852F	# <cjk>	[2000]
+0xEE57	U+8559	# <cjk>	[2000]
+0xEE58	U+8564	# <cjk>	[2000]
+0xEE59	U+FA1F	# CJK COMPATIBILITY IDEOGRAPH-FA1F 	[2000]
+0xEE5A	U+85AD	# <cjk>	[2000]
+0xEE5B	U+857A	# <cjk>	[2000]
+0xEE5C	U+858C	# <cjk>	[2000]
+0xEE5D	U+858F	# <cjk>	[2000]
+0xEE5E	U+85A2	# <cjk>	[2000]
+0xEE5F	U+85B0	# <cjk>	[2000]
+0xEE60	U+85CB	# <cjk>	[2000]
+0xEE61	U+85CE	# <cjk>	[2000]
+0xEE62	U+85ED	# <cjk>	[2000]
+0xEE63	U+8612	# <cjk>	[2000]
+0xEE64	U+85FF	# <cjk>	[2000]
+0xEE65	U+8604	# <cjk>	[2000]
+0xEE66	U+8605	# <cjk>	[2000]
+0xEE67	U+8610	# <cjk>	[2000]
+0xEE68	U+270F4	# <cjk>	[2000]	[Unicode3.1]
+0xEE69	U+8618	# <cjk>	[2000]
+0xEE6A	U+8629	# <cjk>	[2000]
+0xEE6B	U+8638	# <cjk>	[2000]
+0xEE6C	U+8657	# <cjk>	[2000]
+0xEE6D	U+865B	# <cjk>	[2000]
+0xEE6E	U+F936	# CJK COMPATIBILITY IDEOGRAPH-F936	[2000]
+0xEE6F	U+8662	# <cjk>	[2000]
+0xEE70	U+459D	# <cjk>	[2000]
+0xEE71	U+866C	# <cjk>	[2000]
+0xEE72	U+8675	# <cjk>	[2000]
+0xEE73	U+8698	# <cjk>	[2000]
+0xEE74	U+86B8	# <cjk>	[2000]
+0xEE75	U+86FA	# <cjk>	[2000]
+0xEE76	U+86FC	# <cjk>	[2000]
+0xEE77	U+86FD	# <cjk>	[2000]
+0xEE78	U+870B	# <cjk>	[2000]
+0xEE79	U+8771	# <cjk>	[2000]
+0xEE7A	U+8787	# <cjk>	[2000]
+0xEE7B	U+8788	# <cjk>	[2000]
+0xEE7C	U+87AC	# <cjk>	[2000]
+0xEE7D	U+87AD	# <cjk>	[2000]
+0xEE7E	U+87B5	# <cjk>	[2000]
+0xEE80	U+45EA	# <cjk>	[2000]
+0xEE81	U+87D6	# <cjk>	[2000]
+0xEE82	U+87EC	# <cjk>	[2000]
+0xEE83	U+8806	# <cjk>	[2000]
+0xEE84	U+880A	# <cjk>	[2000]
+0xEE85	U+8810	# <cjk>	[2000]
+0xEE86	U+8814	# <cjk>	[2000]
+0xEE87	U+881F	# <cjk>	[2000]
+0xEE88	U+8898	# <cjk>	[2000]
+0xEE89	U+88AA	# <cjk>	[2000]
+0xEE8A	U+88CA	# <cjk>	[2000]
+0xEE8B	U+88CE	# <cjk>	[2000]
+0xEE8C	U+27684	# <cjk>	[2000]	[Unicode3.1]
+0xEE8D	U+88F5	# <cjk>	[2000]
+0xEE8E	U+891C	# <cjk>	[2000]
+0xEE8F	U+FA60	# CJK COMPATIBILITY IDEOGRAPH-FA60	[2000]	[Unicode3.2]
+0xEE90	U+8918	# <cjk>	[2000]
+0xEE91	U+8919	# <cjk>	[2000]
+0xEE92	U+891A	# <cjk>	[2000]
+0xEE93	U+8927	# <cjk>	[2000]
+0xEE94	U+8930	# <cjk>	[2000]
+0xEE95	U+8932	# <cjk>	[2000]
+0xEE96	U+8939	# <cjk>	[2000]
+0xEE97	U+8940	# <cjk>	[2000]
+0xEE98	U+8994	# <cjk>	[2000]
+0xEE99	U+FA61	# CJK COMPATIBILITY IDEOGRAPH-FA61	[2000]	[Unicode3.2]
+0xEE9A	U+89D4	# <cjk>	[2000]
+0xEE9B	U+89E5	# <cjk>	[2000]
+0xEE9C	U+89F6	# <cjk>	[2000]
+0xEE9D	U+8A12	# <cjk>	[2000]
+0xEE9E	U+8A15	# <cjk>	[2000]
+0xEE9F	U+8A22	# <cjk>	[2000]
+0xEEA0	U+8A37	# <cjk>	[2000]
+0xEEA1	U+8A47	# <cjk>	[2000]
+0xEEA2	U+8A4E	# <cjk>	[2000]
+0xEEA3	U+8A5D	# <cjk>	[2000]
+0xEEA4	U+8A61	# <cjk>	[2000]
+0xEEA5	U+8A75	# <cjk>	[2000]
+0xEEA6	U+8A79	# <cjk>	[2000]
+0xEEA7	U+8AA7	# <cjk>	[2000]
+0xEEA8	U+8AD0	# <cjk>	[2000]
+0xEEA9	U+8ADF	# <cjk>	[2000]
+0xEEAA	U+8AF4	# <cjk>	[2000]
+0xEEAB	U+8AF6	# <cjk>	[2000]
+0xEEAC	U+FA22	# CJK COMPATIBILITY IDEOGRAPH-FA22	[2000]
+0xEEAD	U+FA62	# CJK COMPATIBILITY IDEOGRAPH-FA62	[2000]	[Unicode3.2]
+0xEEAE	U+FA63	# CJK COMPATIBILITY IDEOGRAPH-FA63	[2000]	[Unicode3.2]
+0xEEAF	U+8B46	# <cjk>	[2000]
+0xEEB0	U+8B54	# <cjk>	[2000]
+0xEEB1	U+8B59	# <cjk>	[2000]
+0xEEB2	U+8B69	# <cjk>	[2000]
+0xEEB3	U+8B9D	# <cjk>	[2000]
+0xEEB4	U+8C49	# <cjk>	[2000]
+0xEEB5	U+8C68	# <cjk>	[2000]
+0xEEB6	U+FA64	# CJK COMPATIBILITY IDEOGRAPH-FA64	[2000]	[Unicode3.2]
+0xEEB7	U+8CE1	# <cjk>	[2000]
+0xEEB8	U+8CF4	# <cjk>	[2000]
+0xEEB9	U+8CF8	# <cjk>	[2000]
+0xEEBA	U+8CFE	# <cjk>	[2000]
+0xEEBB	U+FA65	# CJK COMPATIBILITY IDEOGRAPH-FA65	[2000]	[Unicode3.2]
+0xEEBC	U+8D12	# <cjk>	[2000]
+0xEEBD	U+8D1B	# <cjk>	[2000]
+0xEEBE	U+8DAF	# <cjk>	[2000]
+0xEEBF	U+8DCE	# <cjk>	[2000]
+0xEEC0	U+8DD1	# <cjk>	[2000]
+0xEEC1	U+8DD7	# <cjk>	[2000]
+0xEEC2	U+8E20	# <cjk>	[2000]
+0xEEC3	U+8E23	# <cjk>	[2000]
+0xEEC4	U+8E3D	# <cjk>	[2000]
+0xEEC5	U+8E70	# <cjk>	[2000]
+0xEEC6	U+8E7B	# <cjk>	[2000]
+0xEEC7	U+28277	# <cjk>	[2000]	[Unicode3.1]
+0xEEC8	U+8EC0	# <cjk>	[2000]
+0xEEC9	U+4844	# <cjk>	[2000]
+0xEECA	U+8EFA	# <cjk>	[2000]
+0xEECB	U+8F1E	# <cjk>	[2000]
+0xEECC	U+8F2D	# <cjk>	[2000]
+0xEECD	U+8F36	# <cjk>	[2000]
+0xEECE	U+8F54	# <cjk>	[2000]
+0xEECF	U+283CD	# <cjk>	[2000]	[Unicode3.1]
+0xEED0	U+8FA6	# <cjk>	[2000]
+0xEED1	U+8FB5	# <cjk>	[2000]
+0xEED2	U+8FE4	# <cjk>	[2000]
+0xEED3	U+8FE8	# <cjk>	[2000]
+0xEED4	U+8FEE	# <cjk>	[2000]
+0xEED5	U+9008	# <cjk>	[2000]
+0xEED6	U+902D	# <cjk>	[2000]
+0xEED7	U+FA67	# CJK COMPATIBILITY IDEOGRAPH-FA67	[2000]	[Unicode3.2]
+0xEED8	U+9088	# <cjk>	[2000]
+0xEED9	U+9095	# <cjk>	[2000]
+0xEEDA	U+9097	# <cjk>	[2000]
+0xEEDB	U+9099	# <cjk>	[2000]
+0xEEDC	U+909B	# <cjk>	[2000]
+0xEEDD	U+90A2	# <cjk>	[2000]
+0xEEDE	U+90B3	# <cjk>	[2000]
+0xEEDF	U+90BE	# <cjk>	[2000]
+0xEEE0	U+90C4	# <cjk>	[2000]
+0xEEE1	U+90C5	# <cjk>	[2000]
+0xEEE2	U+90C7	# <cjk>	[2000]
+0xEEE3	U+90D7	# <cjk>	[2000]
+0xEEE4	U+90DD	# <cjk>	[2000]
+0xEEE5	U+90DE	# <cjk>	[2000]
+0xEEE6	U+90EF	# <cjk>	[2000]
+0xEEE7	U+90F4	# <cjk>	[2000]
+0xEEE8	U+FA26	# CJK COMPATIBILITY IDEOGRAPH-FA26	[2000]
+0xEEE9	U+9114	# <cjk>	[2000]
+0xEEEA	U+9115	# <cjk>	[2000]
+0xEEEB	U+9116	# <cjk>	[2000]
+0xEEEC	U+9122	# <cjk>	[2000]
+0xEEED	U+9123	# <cjk>	[2000]
+0xEEEE	U+9127	# <cjk>	[2000]
+0xEEEF	U+912F	# <cjk>	[2000]
+0xEEF0	U+9131	# <cjk>	[2000]
+0xEEF1	U+9134	# <cjk>	[2000]
+0xEEF2	U+913D	# <cjk>	[2000]
+0xEEF3	U+9148	# <cjk>	[2000]
+0xEEF4	U+915B	# <cjk>	[2000]
+0xEEF5	U+9183	# <cjk>	[2000]
+0xEEF6	U+919E	# <cjk>	[2000]
+0xEEF7	U+91AC	# <cjk>	[2000]
+0xEEF8	U+91B1	# <cjk>	[2000]
+0xEEF9	U+91BC	# <cjk>	[2000]
+0xEEFA	U+91D7	# <cjk>	[2000]
+0xEEFB	U+91FB	# <cjk>	[2000]
+0xEEFC	U+91E4	# <cjk>	[2000]
+0xEF40	U+91E5	# <cjk>	[2000]
+0xEF41	U+91ED	# <cjk>	[2000]
+0xEF42	U+91F1	# <cjk>	[2000]
+0xEF43	U+9207	# <cjk>	[2000]
+0xEF44	U+9210	# <cjk>	[2000]
+0xEF45	U+9238	# <cjk>	[2000]
+0xEF46	U+9239	# <cjk>	[2000]
+0xEF47	U+923A	# <cjk>	[2000]
+0xEF48	U+923C	# <cjk>	[2000]
+0xEF49	U+9240	# <cjk>	[2000]
+0xEF4A	U+9243	# <cjk>	[2000]
+0xEF4B	U+924F	# <cjk>	[2000]
+0xEF4C	U+9278	# <cjk>	[2000]
+0xEF4D	U+9288	# <cjk>	[2000]
+0xEF4E	U+92C2	# <cjk>	[2000]
+0xEF4F	U+92CB	# <cjk>	[2000]
+0xEF50	U+92CC	# <cjk>	[2000]
+0xEF51	U+92D3	# <cjk>	[2000]
+0xEF52	U+92E0	# <cjk>	[2000]
+0xEF53	U+92FF	# <cjk>	[2000]
+0xEF54	U+9304	# <cjk>	[2000]
+0xEF55	U+931F	# <cjk>	[2000]
+0xEF56	U+9321	# <cjk>	[2000]
+0xEF57	U+9325	# <cjk>	[2000]
+0xEF58	U+9348	# <cjk>	[2000]
+0xEF59	U+9349	# <cjk>	[2000]
+0xEF5A	U+934A	# <cjk>	[2000]
+0xEF5B	U+9364	# <cjk>	[2000]
+0xEF5C	U+9365	# <cjk>	[2000]
+0xEF5D	U+936A	# <cjk>	[2000]
+0xEF5E	U+9370	# <cjk>	[2000]
+0xEF5F	U+939B	# <cjk>	[2000]
+0xEF60	U+93A3	# <cjk>	[2000]
+0xEF61	U+93BA	# <cjk>	[2000]
+0xEF62	U+93C6	# <cjk>	[2000]
+0xEF63	U+93DE	# <cjk>	[2000]
+0xEF64	U+93DF	# <cjk>	[2000]
+0xEF65	U+9404	# <cjk>	[2000]
+0xEF66	U+93FD	# <cjk>	[2000]
+0xEF67	U+9433	# <cjk>	[2000]
+0xEF68	U+944A	# <cjk>	[2000]
+0xEF69	U+9463	# <cjk>	[2000]
+0xEF6A	U+946B	# <cjk>	[2000]
+0xEF6B	U+9471	# <cjk>	[2000]
+0xEF6C	U+9472	# <cjk>	[2000]
+0xEF6D	U+958E	# <cjk>	[2000]
+0xEF6E	U+959F	# <cjk>	[2000]
+0xEF6F	U+95A6	# <cjk>	[2000]
+0xEF70	U+95A9	# <cjk>	[2000]
+0xEF71	U+95AC	# <cjk>	[2000]
+0xEF72	U+95B6	# <cjk>	[2000]
+0xEF73	U+95BD	# <cjk>	[2000]
+0xEF74	U+95CB	# <cjk>	[2000]
+0xEF75	U+95D0	# <cjk>	[2000]
+0xEF76	U+95D3	# <cjk>	[2000]
+0xEF77	U+49B0	# <cjk>	[2000]
+0xEF78	U+95DA	# <cjk>	[2000]
+0xEF79	U+95DE	# <cjk>	[2000]
+0xEF7A	U+9658	# <cjk>	[2000]
+0xEF7B	U+9684	# <cjk>	[2000]
+0xEF7C	U+F9DC	# CJK COMPATIBILITY IDEOGRAPH-F9DC	[2000]
+0xEF7D	U+969D	# <cjk>	[2000]
+0xEF7E	U+96A4	# <cjk>	[2000]
+0xEF80	U+96A5	# <cjk>	[2000]
+0xEF81	U+96D2	# <cjk>	[2000]
+0xEF82	U+96DE	# <cjk>	[2000]
+0xEF83	U+FA68	# CJK COMPATIBILITY IDEOGRAPH-FA68	[2000]	[Unicode3.2]
+0xEF84	U+96E9	# <cjk>	[2000]
+0xEF85	U+96EF	# <cjk>	[2000]
+0xEF86	U+9733	# <cjk>	[2000]
+0xEF87	U+973B	# <cjk>	[2000]
+0xEF88	U+974D	# <cjk>	[2000]
+0xEF89	U+974E	# <cjk>	[2000]
+0xEF8A	U+974F	# <cjk>	[2000]
+0xEF8B	U+975A	# <cjk>	[2000]
+0xEF8C	U+976E	# <cjk>	[2000]
+0xEF8D	U+9773	# <cjk>	[2000]
+0xEF8E	U+9795	# <cjk>	[2000]
+0xEF8F	U+97AE	# <cjk>	[2000]
+0xEF90	U+97BA	# <cjk>	[2000]
+0xEF91	U+97C1	# <cjk>	[2000]
+0xEF92	U+97C9	# <cjk>	[2000]
+0xEF93	U+97DE	# <cjk>	[2000]
+0xEF94	U+97DB	# <cjk>	[2000]
+0xEF95	U+97F4	# <cjk>	[2000]
+0xEF96	U+FA69	# CJK COMPATIBILITY IDEOGRAPH-FA69	[2000]	[Unicode3.2]
+0xEF97	U+980A	# <cjk>	[2000]
+0xEF98	U+981E	# <cjk>	[2000]
+0xEF99	U+982B	# <cjk>	[2000]
+0xEF9A	U+9830	# <cjk>	[2000]
+0xEF9B	U+FA6A	# CJK COMPATIBILITY IDEOGRAPH-FA6A	[2000]	[Unicode3.2]
+0xEF9C	U+9852	# <cjk>	[2000]
+0xEF9D	U+9853	# <cjk>	[2000]
+0xEF9E	U+9856	# <cjk>	[2000]
+0xEF9F	U+9857	# <cjk>	[2000]
+0xEFA0	U+9859	# <cjk>	[2000]
+0xEFA1	U+985A	# <cjk>	[2000]
+0xEFA2	U+F9D0	# CJK COMPATIBILITY IDEOGRAPH-F9D0	[2000]
+0xEFA3	U+9865	# <cjk>	[2000]
+0xEFA4	U+986C	# <cjk>	[2000]
+0xEFA5	U+98BA	# <cjk>	[2000]
+0xEFA6	U+98C8	# <cjk>	[2000]
+0xEFA7	U+98E7	# <cjk>	[2000]
+0xEFA8	U+9958	# <cjk>	[2000]
+0xEFA9	U+999E	# <cjk>	[2000]
+0xEFAA	U+9A02	# <cjk>	[2000]
+0xEFAB	U+9A03	# <cjk>	[2000]
+0xEFAC	U+9A24	# <cjk>	[2000]
+0xEFAD	U+9A2D	# <cjk>	[2000]
+0xEFAE	U+9A2E	# <cjk>	[2000]
+0xEFAF	U+9A38	# <cjk>	[2000]
+0xEFB0	U+9A4A	# <cjk>	[2000]
+0xEFB1	U+9A4E	# <cjk>	[2000]
+0xEFB2	U+9A52	# <cjk>	[2000]
+0xEFB3	U+9AB6	# <cjk>	[2000]
+0xEFB4	U+9AC1	# <cjk>	[2000]
+0xEFB5	U+9AC3	# <cjk>	[2000]
+0xEFB6	U+9ACE	# <cjk>	[2000]
+0xEFB7	U+9AD6	# <cjk>	[2000]
+0xEFB8	U+9AF9	# <cjk>	[2000]
+0xEFB9	U+9B02	# <cjk>	[2000]
+0xEFBA	U+9B08	# <cjk>	[2000]
+0xEFBB	U+9B20	# <cjk>	[2000]
+0xEFBC	U+4C17	# <cjk>	[2000]
+0xEFBD	U+9B2D	# <cjk>	[2000]
+0xEFBE	U+9B5E	# <cjk>	[2000]
+0xEFBF	U+9B79	# <cjk>	[2000]
+0xEFC0	U+9B66	# <cjk>	[2000]
+0xEFC1	U+9B72	# <cjk>	[2000]
+0xEFC2	U+9B75	# <cjk>	[2000]
+0xEFC3	U+9B84	# <cjk>	[2000]
+0xEFC4	U+9B8A	# <cjk>	[2000]
+0xEFC5	U+9B8F	# <cjk>	[2000]
+0xEFC6	U+9B9E	# <cjk>	[2000]
+0xEFC7	U+9BA7	# <cjk>	[2000]
+0xEFC8	U+9BC1	# <cjk>	[2000]
+0xEFC9	U+9BCE	# <cjk>	[2000]
+0xEFCA	U+9BE5	# <cjk>	[2000]
+0xEFCB	U+9BF8	# <cjk>	[2000]
+0xEFCC	U+9BFD	# <cjk>	[2000]
+0xEFCD	U+9C00	# <cjk>	[2000]
+0xEFCE	U+9C23	# <cjk>	[2000]
+0xEFCF	U+9C41	# <cjk>	[2000]
+0xEFD0	U+9C4F	# <cjk>	[2000]
+0xEFD1	U+9C50	# <cjk>	[2000]
+0xEFD2	U+9C53	# <cjk>	[2000]
+0xEFD3	U+9C63	# <cjk>	[2000]
+0xEFD4	U+9C65	# <cjk>	[2000]
+0xEFD5	U+9C77	# <cjk>	[2000]
+0xEFD6	U+9D1D	# <cjk>	[2000]
+0xEFD7	U+9D1E	# <cjk>	[2000]
+0xEFD8	U+9D43	# <cjk>	[2000]
+0xEFD9	U+9D47	# <cjk>	[2000]
+0xEFDA	U+9D52	# <cjk>	[2000]
+0xEFDB	U+9D63	# <cjk>	[2000]
+0xEFDC	U+9D70	# <cjk>	[2000]
+0xEFDD	U+9D7C	# <cjk>	[2000]
+0xEFDE	U+9D8A	# <cjk>	[2000]
+0xEFDF	U+9D96	# <cjk>	[2000]
+0xEFE0	U+9DC0	# <cjk>	[2000]
+0xEFE1	U+9DAC	# <cjk>	[2000]
+0xEFE2	U+9DBC	# <cjk>	[2000]
+0xEFE3	U+9DD7	# <cjk>	[2000]
+0xEFE4	U+2A190	# <cjk>	[2000]	[Unicode3.1]
+0xEFE5	U+9DE7	# <cjk>	[2000]
+0xEFE6	U+9E07	# <cjk>	[2000]
+0xEFE7	U+9E15	# <cjk>	[2000]
+0xEFE8	U+9E7C	# <cjk>	[2000]
+0xEFE9	U+9E9E	# <cjk>	[2000]
+0xEFEA	U+9EA4	# <cjk>	[2000]
+0xEFEB	U+9EAC	# <cjk>	[2000]
+0xEFEC	U+9EAF	# <cjk>	[2000]
+0xEFED	U+9EB4	# <cjk>	[2000]
+0xEFEE	U+9EB5	# <cjk>	[2000]
+0xEFEF	U+9EC3	# <cjk>	[2000]
+0xEFF0	U+9ED1	# <cjk>	[2000]
+0xEFF1	U+9F10	# <cjk>	[2000]
+0xEFF2	U+9F39	# <cjk>	[2000]
+0xEFF3	U+9F57	# <cjk>	[2000]
+0xEFF4	U+9F90	# <cjk>	[2000]
+0xEFF5	U+9F94	# <cjk>	[2000]
+0xEFF6	U+9F97	# <cjk>	[2000]
+0xEFF7	U+9FA2	# <cjk>	[2000]
+0xEFF8	U+59F8	# <cjk>	[2004]
+0xEFF9	U+5C5B	# <cjk>	[2004]
+0xEFFA	U+5E77	# <cjk>	[2004]
+0xEFFB	U+7626	# <cjk>	[2004]
+0xEFFC	U+7E6B	# <cjk>	[2004]
+0xF040	U+20089	# <cjk>	[2000]	[Unicode3.1]
+0xF041	U+4E02	# <cjk>	[2000]
+0xF042	U+4E0F	# <cjk>	[2000]
+0xF043	U+4E12	# <cjk>	[2000]
+0xF044	U+4E29	# <cjk>	[2000]
+0xF045	U+4E2B	# <cjk>	[2000]
+0xF046	U+4E2E	# <cjk>	[2000]
+0xF047	U+4E40	# <cjk>	[2000]
+0xF048	U+4E47	# <cjk>	[2000]
+0xF049	U+4E48	# <cjk>	[2000]
+0xF04A	U+200A2	# <cjk>	[2000]	[Unicode3.1]
+0xF04B	U+4E51	# <cjk>	[2000]
+0xF04C	U+3406	# <cjk>	[2000]
+0xF04D	U+200A4	# <cjk>	[2000]	[Unicode3.1]
+0xF04E	U+4E5A	# <cjk>	[2000]
+0xF04F	U+4E69	# <cjk>	[2000]
+0xF050	U+4E9D	# <cjk>	[2000]
+0xF051	U+342C	# <cjk>	[2000]
+0xF052	U+342E	# <cjk>	[2000]
+0xF053	U+4EB9	# <cjk>	[2000]
+0xF054	U+4EBB	# <cjk>	[2000]
+0xF055	U+201A2	# <cjk>	[2000]	[Unicode3.1]
+0xF056	U+4EBC	# <cjk>	[2000]
+0xF057	U+4EC3	# <cjk>	[2000]
+0xF058	U+4EC8	# <cjk>	[2000]
+0xF059	U+4ED0	# <cjk>	[2000]
+0xF05A	U+4EEB	# <cjk>	[2000]
+0xF05B	U+4EDA	# <cjk>	[2000]
+0xF05C	U+4EF1	# <cjk>	[2000]
+0xF05D	U+4EF5	# <cjk>	[2000]
+0xF05E	U+4F00	# <cjk>	[2000]
+0xF05F	U+4F16	# <cjk>	[2000]
+0xF060	U+4F64	# <cjk>	[2000]
+0xF061	U+4F37	# <cjk>	[2000]
+0xF062	U+4F3E	# <cjk>	[2000]
+0xF063	U+4F54	# <cjk>	[2000]
+0xF064	U+4F58	# <cjk>	[2000]
+0xF065	U+20213	# <cjk>	[2000]	[Unicode3.1]
+0xF066	U+4F77	# <cjk>	[2000]
+0xF067	U+4F78	# <cjk>	[2000]
+0xF068	U+4F7A	# <cjk>	[2000]
+0xF069	U+4F7D	# <cjk>	[2000]
+0xF06A	U+4F82	# <cjk>	[2000]
+0xF06B	U+4F85	# <cjk>	[2000]
+0xF06C	U+4F92	# <cjk>	[2000]
+0xF06D	U+4F9A	# <cjk>	[2000]
+0xF06E	U+4FE6	# <cjk>	[2000]
+0xF06F	U+4FB2	# <cjk>	[2000]
+0xF070	U+4FBE	# <cjk>	[2000]
+0xF071	U+4FC5	# <cjk>	[2000]
+0xF072	U+4FCB	# <cjk>	[2000]
+0xF073	U+4FCF	# <cjk>	[2000]
+0xF074	U+4FD2	# <cjk>	[2000]
+0xF075	U+346A	# <cjk>	[2000]
+0xF076	U+4FF2	# <cjk>	[2000]
+0xF077	U+5000	# <cjk>	[2000]
+0xF078	U+5010	# <cjk>	[2000]
+0xF079	U+5013	# <cjk>	[2000]
+0xF07A	U+501C	# <cjk>	[2000]
+0xF07B	U+501E	# <cjk>	[2000]
+0xF07C	U+5022	# <cjk>	[2000]
+0xF07D	U+3468	# <cjk>	[2000]
+0xF07E	U+5042	# <cjk>	[2000]
+0xF080	U+5046	# <cjk>	[2000]
+0xF081	U+504E	# <cjk>	[2000]
+0xF082	U+5053	# <cjk>	[2000]
+0xF083	U+5057	# <cjk>	[2000]
+0xF084	U+5063	# <cjk>	[2000]
+0xF085	U+5066	# <cjk>	[2000]
+0xF086	U+506A	# <cjk>	[2000]
+0xF087	U+5070	# <cjk>	[2000]
+0xF088	U+50A3	# <cjk>	[2000]
+0xF089	U+5088	# <cjk>	[2000]
+0xF08A	U+5092	# <cjk>	[2000]
+0xF08B	U+5093	# <cjk>	[2000]
+0xF08C	U+5095	# <cjk>	[2000]
+0xF08D	U+5096	# <cjk>	[2000]
+0xF08E	U+509C	# <cjk>	[2000]
+0xF08F	U+50AA	# <cjk>	[2000]
+0xF090	U+2032B	# <cjk>	[2000]	[Unicode3.1]
+0xF091	U+50B1	# <cjk>	[2000]
+0xF092	U+50BA	# <cjk>	[2000]
+0xF093	U+50BB	# <cjk>	[2000]
+0xF094	U+50C4	# <cjk>	[2000]
+0xF095	U+50C7	# <cjk>	[2000]
+0xF096	U+50F3	# <cjk>	[2000]
+0xF097	U+20381	# <cjk>	[2000]	[Unicode3.1]
+0xF098	U+50CE	# <cjk>	[2000]
+0xF099	U+20371	# <cjk>	[2000]	[Unicode3.1]
+0xF09A	U+50D4	# <cjk>	[2000]
+0xF09B	U+50D9	# <cjk>	[2000]
+0xF09C	U+50E1	# <cjk>	[2000]
+0xF09D	U+50E9	# <cjk>	[2000]
+0xF09E	U+3492	# <cjk>	[2000]
+0xF09F	U+5B96	# <cjk>	[2000]
+0xF0A0	U+5BAC	# <cjk>	[2000]
+0xF0A1	U+3761	# <cjk>	[2000]
+0xF0A2	U+5BC0	# <cjk>	[2000]
+0xF0A3	U+3762	# <cjk>	[2000]
+0xF0A4	U+5BCE	# <cjk>	[2000]
+0xF0A5	U+5BD6	# <cjk>	[2000]
+0xF0A6	U+376C	# <cjk>	[2000]
+0xF0A7	U+376B	# <cjk>	[2000]
+0xF0A8	U+5BF1	# <cjk>	[2000]
+0xF0A9	U+5BFD	# <cjk>	[2000]
+0xF0AA	U+3775	# <cjk>	[2000]
+0xF0AB	U+5C03	# <cjk>	[2000]
+0xF0AC	U+5C29	# <cjk>	[2000]
+0xF0AD	U+5C30	# <cjk>	[2000]
+0xF0AE	U+21C56	# <cjk>	[2000]	[Unicode3.1]
+0xF0AF	U+5C5F	# <cjk>	[2000]
+0xF0B0	U+5C63	# <cjk>	[2000]
+0xF0B1	U+5C67	# <cjk>	[2000]
+0xF0B2	U+5C68	# <cjk>	[2000]
+0xF0B3	U+5C69	# <cjk>	[2000]
+0xF0B4	U+5C70	# <cjk>	[2000]
+0xF0B5	U+21D2D	# <cjk>	[2000]	[Unicode3.1]
+0xF0B6	U+21D45	# <cjk>	[2000]	[Unicode3.1]
+0xF0B7	U+5C7C	# <cjk>	[2000]
+0xF0B8	U+21D78	# <cjk>	[2000]	[Unicode3.1]
+0xF0B9	U+21D62	# <cjk>	[2000]	[Unicode3.1]
+0xF0BA	U+5C88	# <cjk>	[2000]
+0xF0BB	U+5C8A	# <cjk>	[2000]
+0xF0BC	U+37C1	# <cjk>	[2000]
+0xF0BD	U+21DA1	# <cjk>	[2000]	[Unicode3.1]
+0xF0BE	U+21D9C	# <cjk>	[2000]	[Unicode3.1]
+0xF0BF	U+5CA0	# <cjk>	[2000]
+0xF0C0	U+5CA2	# <cjk>	[2000]
+0xF0C1	U+5CA6	# <cjk>	[2000]
+0xF0C2	U+5CA7	# <cjk>	[2000]
+0xF0C3	U+21D92	# <cjk>	[2000]	[Unicode3.1]
+0xF0C4	U+5CAD	# <cjk>	[2000]
+0xF0C5	U+5CB5	# <cjk>	[2000]
+0xF0C6	U+21DB7	# <cjk>	[2000]	[Unicode3.1]
+0xF0C7	U+5CC9	# <cjk>	[2000]
+0xF0C8	U+21DE0	# <cjk>	[2000]	[Unicode3.1]
+0xF0C9	U+21E33	# <cjk>	[2000]	[Unicode3.1]
+0xF0CA	U+5D06	# <cjk>	[2000]
+0xF0CB	U+5D10	# <cjk>	[2000]
+0xF0CC	U+5D2B	# <cjk>	[2000]
+0xF0CD	U+5D1D	# <cjk>	[2000]
+0xF0CE	U+5D20	# <cjk>	[2000]
+0xF0CF	U+5D24	# <cjk>	[2000]
+0xF0D0	U+5D26	# <cjk>	[2000]
+0xF0D1	U+5D31	# <cjk>	[2000]
+0xF0D2	U+5D39	# <cjk>	[2000]
+0xF0D3	U+5D42	# <cjk>	[2000]
+0xF0D4	U+37E8	# <cjk>	[2000]
+0xF0D5	U+5D61	# <cjk>	[2000]
+0xF0D6	U+5D6A	# <cjk>	[2000]
+0xF0D7	U+37F4	# <cjk>	[2000]
+0xF0D8	U+5D70	# <cjk>	[2000]
+0xF0D9	U+21F1E	# <cjk>	[2000]	[Unicode3.1]
+0xF0DA	U+37FD	# <cjk>	[2000]
+0xF0DB	U+5D88	# <cjk>	[2000]
+0xF0DC	U+3800	# <cjk>	[2000]
+0xF0DD	U+5D92	# <cjk>	[2000]
+0xF0DE	U+5D94	# <cjk>	[2000]
+0xF0DF	U+5D97	# <cjk>	[2000]
+0xF0E0	U+5D99	# <cjk>	[2000]
+0xF0E1	U+5DB0	# <cjk>	[2000]
+0xF0E2	U+5DB2	# <cjk>	[2000]
+0xF0E3	U+5DB4	# <cjk>	[2000]
+0xF0E4	U+21F76	# <cjk>	[2000]	[Unicode3.1]
+0xF0E5	U+5DB9	# <cjk>	[2000]
+0xF0E6	U+5DD1	# <cjk>	[2000]
+0xF0E7	U+5DD7	# <cjk>	[2000]
+0xF0E8	U+5DD8	# <cjk>	[2000]
+0xF0E9	U+5DE0	# <cjk>	[2000]
+0xF0EA	U+21FFA	# <cjk>	[2000]	[Unicode3.1]
+0xF0EB	U+5DE4	# <cjk>	[2000]
+0xF0EC	U+5DE9	# <cjk>	[2000]
+0xF0ED	U+382F	# <cjk>	[2000]
+0xF0EE	U+5E00	# <cjk>	[2000]
+0xF0EF	U+3836	# <cjk>	[2000]
+0xF0F0	U+5E12	# <cjk>	[2000]
+0xF0F1	U+5E15	# <cjk>	[2000]
+0xF0F2	U+3840	# <cjk>	[2000]
+0xF0F3	U+5E1F	# <cjk>	[2000]
+0xF0F4	U+5E2E	# <cjk>	[2000]
+0xF0F5	U+5E3E	# <cjk>	[2000]
+0xF0F6	U+5E49	# <cjk>	[2000]
+0xF0F7	U+385C	# <cjk>	[2000]
+0xF0F8	U+5E56	# <cjk>	[2000]
+0xF0F9	U+3861	# <cjk>	[2000]
+0xF0FA	U+5E6B	# <cjk>	[2000]
+0xF0FB	U+5E6C	# <cjk>	[2000]
+0xF0FC	U+5E6D	# <cjk>	[2000]
+0xF140	U+5108	# <cjk>	[2000]
+0xF141	U+203F9	# <cjk>	[2000]	[Unicode3.1]
+0xF142	U+5117	# <cjk>	[2000]
+0xF143	U+511B	# <cjk>	[2000]
+0xF144	U+2044A	# <cjk>	[2000]	[Unicode3.1]
+0xF145	U+5160	# <cjk>	[2000]
+0xF146	U+20509	# <cjk>	[2000]	[Unicode3.1]
+0xF147	U+5173	# <cjk>	[2000]
+0xF148	U+5183	# <cjk>	[2000]
+0xF149	U+518B	# <cjk>	[2000]
+0xF14A	U+34BC	# <cjk>	[2000]
+0xF14B	U+5198	# <cjk>	[2000]
+0xF14C	U+51A3	# <cjk>	[2000]
+0xF14D	U+51AD	# <cjk>	[2000]
+0xF14E	U+34C7	# <cjk>	[2000]
+0xF14F	U+51BC	# <cjk>	[2000]
+0xF150	U+205D6	# <cjk>	[2000]	[Unicode3.1]
+0xF151	U+20628	# <cjk>	[2000]	[Unicode3.1]
+0xF152	U+51F3	# <cjk>	[2000]
+0xF153	U+51F4	# <cjk>	[2000]
+0xF154	U+5202	# <cjk>	[2000]
+0xF155	U+5212	# <cjk>	[2000]
+0xF156	U+5216	# <cjk>	[2000]
+0xF157	U+2074F	# <cjk>	[2000]	[Unicode3.1]
+0xF158	U+5255	# <cjk>	[2000]
+0xF159	U+525C	# <cjk>	[2000]
+0xF15A	U+526C	# <cjk>	[2000]
+0xF15B	U+5277	# <cjk>	[2000]
+0xF15C	U+5284	# <cjk>	[2000]
+0xF15D	U+5282	# <cjk>	[2000]
+0xF15E	U+20807	# <cjk>	[2000]	[Unicode3.1]
+0xF15F	U+5298	# <cjk>	[2000]
+0xF160	U+2083A	# <cjk>	[2000]	[Unicode3.1]
+0xF161	U+52A4	# <cjk>	[2000]
+0xF162	U+52A6	# <cjk>	[2000]
+0xF163	U+52AF	# <cjk>	[2000]
+0xF164	U+52BA	# <cjk>	[2000]
+0xF165	U+52BB	# <cjk>	[2000]
+0xF166	U+52CA	# <cjk>	[2000]
+0xF167	U+351F	# <cjk>	[2000]
+0xF168	U+52D1	# <cjk>	[2000]
+0xF169	U+208B9	# <cjk>	[2000]	[Unicode3.1]
+0xF16A	U+52F7	# <cjk>	[2000]
+0xF16B	U+530A	# <cjk>	[2000]
+0xF16C	U+530B	# <cjk>	[2000]
+0xF16D	U+5324	# <cjk>	[2000]
+0xF16E	U+5335	# <cjk>	[2000]
+0xF16F	U+533E	# <cjk>	[2000]
+0xF170	U+5342	# <cjk>	[2000]
+0xF171	U+2097C	# <cjk>	[2000]	[Unicode3.1]
+0xF172	U+2099D	# <cjk>	[2000]	[Unicode3.1]
+0xF173	U+5367	# <cjk>	[2000]
+0xF174	U+536C	# <cjk>	[2000]
+0xF175	U+537A	# <cjk>	[2000]
+0xF176	U+53A4	# <cjk>	[2000]
+0xF177	U+53B4	# <cjk>	[2000]
+0xF178	U+20AD3	# <cjk>	[2000]	[Unicode3.1]
+0xF179	U+53B7	# <cjk>	[2000]
+0xF17A	U+53C0	# <cjk>	[2000]
+0xF17B	U+20B1D	# <cjk>	[2000]	[Unicode3.1]
+0xF17C	U+355D	# <cjk>	[2000]
+0xF17D	U+355E	# <cjk>	[2000]
+0xF17E	U+53D5	# <cjk>	[2000]
+0xF180	U+53DA	# <cjk>	[2000]
+0xF181	U+3563	# <cjk>	[2000]
+0xF182	U+53F4	# <cjk>	[2000]
+0xF183	U+53F5	# <cjk>	[2000]
+0xF184	U+5455	# <cjk>	[2000]
+0xF185	U+5424	# <cjk>	[2000]
+0xF186	U+5428	# <cjk>	[2000]
+0xF187	U+356E	# <cjk>	[2000]
+0xF188	U+5443	# <cjk>	[2000]
+0xF189	U+5462	# <cjk>	[2000]
+0xF18A	U+5466	# <cjk>	[2000]
+0xF18B	U+546C	# <cjk>	[2000]
+0xF18C	U+548A	# <cjk>	[2000]
+0xF18D	U+548D	# <cjk>	[2000]
+0xF18E	U+5495	# <cjk>	[2000]
+0xF18F	U+54A0	# <cjk>	[2000]
+0xF190	U+54A6	# <cjk>	[2000]
+0xF191	U+54AD	# <cjk>	[2000]
+0xF192	U+54AE	# <cjk>	[2000]
+0xF193	U+54B7	# <cjk>	[2000]
+0xF194	U+54BA	# <cjk>	[2000]
+0xF195	U+54BF	# <cjk>	[2000]
+0xF196	U+54C3	# <cjk>	[2000]
+0xF197	U+20D45	# <cjk>	[2000]	[Unicode3.1]
+0xF198	U+54EC	# <cjk>	[2000]
+0xF199	U+54EF	# <cjk>	[2000]
+0xF19A	U+54F1	# <cjk>	[2000]
+0xF19B	U+54F3	# <cjk>	[2000]
+0xF19C	U+5500	# <cjk>	[2000]
+0xF19D	U+5501	# <cjk>	[2000]
+0xF19E	U+5509	# <cjk>	[2000]
+0xF19F	U+553C	# <cjk>	[2000]
+0xF1A0	U+5541	# <cjk>	[2000]
+0xF1A1	U+35A6	# <cjk>	[2000]
+0xF1A2	U+5547	# <cjk>	[2000]
+0xF1A3	U+554A	# <cjk>	[2000]
+0xF1A4	U+35A8	# <cjk>	[2000]
+0xF1A5	U+5560	# <cjk>	[2000]
+0xF1A6	U+5561	# <cjk>	[2000]
+0xF1A7	U+5564	# <cjk>	[2000]
+0xF1A8	U+20DE1	# <cjk>	[2000]	[Unicode3.1]
+0xF1A9	U+557D	# <cjk>	[2000]
+0xF1AA	U+5582	# <cjk>	[2000]
+0xF1AB	U+5588	# <cjk>	[2000]
+0xF1AC	U+5591	# <cjk>	[2000]
+0xF1AD	U+35C5	# <cjk>	[2000]
+0xF1AE	U+55D2	# <cjk>	[2000]
+0xF1AF	U+20E95	# <cjk>	[2000]	[Unicode3.1]
+0xF1B0	U+20E6D	# <cjk>	[2000]	[Unicode3.1]
+0xF1B1	U+55BF	# <cjk>	[2000]
+0xF1B2	U+55C9	# <cjk>	[2000]
+0xF1B3	U+55CC	# <cjk>	[2000]
+0xF1B4	U+55D1	# <cjk>	[2000]
+0xF1B5	U+55DD	# <cjk>	[2000]
+0xF1B6	U+35DA	# <cjk>	[2000]
+0xF1B7	U+55E2	# <cjk>	[2000]
+0xF1B8	U+20E64	# <cjk>	[2000]	[Unicode3.1]
+0xF1B9	U+55E9	# <cjk>	[2000]
+0xF1BA	U+5628	# <cjk>	[2000]
+0xF1BB	U+20F5F	# <cjk>	[2000]	[Unicode3.1]
+0xF1BC	U+5607	# <cjk>	[2000]
+0xF1BD	U+5610	# <cjk>	[2000]
+0xF1BE	U+5630	# <cjk>	[2000]
+0xF1BF	U+5637	# <cjk>	[2000]
+0xF1C0	U+35F4	# <cjk>	[2000]
+0xF1C1	U+563D	# <cjk>	[2000]
+0xF1C2	U+563F	# <cjk>	[2000]
+0xF1C3	U+5640	# <cjk>	[2000]
+0xF1C4	U+5647	# <cjk>	[2000]
+0xF1C5	U+565E	# <cjk>	[2000]
+0xF1C6	U+5660	# <cjk>	[2000]
+0xF1C7	U+566D	# <cjk>	[2000]
+0xF1C8	U+3605	# <cjk>	[2000]
+0xF1C9	U+5688	# <cjk>	[2000]
+0xF1CA	U+568C	# <cjk>	[2000]
+0xF1CB	U+5695	# <cjk>	[2000]
+0xF1CC	U+569A	# <cjk>	[2000]
+0xF1CD	U+569D	# <cjk>	[2000]
+0xF1CE	U+56A8	# <cjk>	[2000]
+0xF1CF	U+56AD	# <cjk>	[2000]
+0xF1D0	U+56B2	# <cjk>	[2000]
+0xF1D1	U+56C5	# <cjk>	[2000]
+0xF1D2	U+56CD	# <cjk>	[2000]
+0xF1D3	U+56DF	# <cjk>	[2000]
+0xF1D4	U+56E8	# <cjk>	[2000]
+0xF1D5	U+56F6	# <cjk>	[2000]
+0xF1D6	U+56F7	# <cjk>	[2000]
+0xF1D7	U+21201	# <cjk>	[2000]	[Unicode3.1]
+0xF1D8	U+5715	# <cjk>	[2000]
+0xF1D9	U+5723	# <cjk>	[2000]
+0xF1DA	U+21255	# <cjk>	[2000]	[Unicode3.1]
+0xF1DB	U+5729	# <cjk>	[2000]
+0xF1DC	U+2127B	# <cjk>	[2000]	[Unicode3.1]
+0xF1DD	U+5745	# <cjk>	[2000]
+0xF1DE	U+5746	# <cjk>	[2000]
+0xF1DF	U+574C	# <cjk>	[2000]
+0xF1E0	U+574D	# <cjk>	[2000]
+0xF1E1	U+21274	# <cjk>	[2000]	[Unicode3.1]
+0xF1E2	U+5768	# <cjk>	[2000]
+0xF1E3	U+576F	# <cjk>	[2000]
+0xF1E4	U+5773	# <cjk>	[2000]
+0xF1E5	U+5774	# <cjk>	[2000]
+0xF1E6	U+5775	# <cjk>	[2000]
+0xF1E7	U+577B	# <cjk>	[2000]
+0xF1E8	U+212E4	# <cjk>	[2000]	[Unicode3.1]
+0xF1E9	U+212D7	# <cjk>	[2000]	[Unicode3.1]
+0xF1EA	U+57AC	# <cjk>	[2000]
+0xF1EB	U+579A	# <cjk>	[2000]
+0xF1EC	U+579D	# <cjk>	[2000]
+0xF1ED	U+579E	# <cjk>	[2000]
+0xF1EE	U+57A8	# <cjk>	[2000]
+0xF1EF	U+57D7	# <cjk>	[2000]
+0xF1F0	U+212FD	# <cjk>	[2000]	[Unicode3.1]
+0xF1F1	U+57CC	# <cjk>	[2000]
+0xF1F2	U+21336	# <cjk>	[2000]	[Unicode3.1]
+0xF1F3	U+21344	# <cjk>	[2000]	[Unicode3.1]
+0xF1F4	U+57DE	# <cjk>	[2000]
+0xF1F5	U+57E6	# <cjk>	[2000]
+0xF1F6	U+57F0	# <cjk>	[2000]
+0xF1F7	U+364A	# <cjk>	[2000]
+0xF1F8	U+57F8	# <cjk>	[2000]
+0xF1F9	U+57FB	# <cjk>	[2000]
+0xF1FA	U+57FD	# <cjk>	[2000]
+0xF1FB	U+5804	# <cjk>	[2000]
+0xF1FC	U+581E	# <cjk>	[2000]
+0xF240	U+5820	# <cjk>	[2000]
+0xF241	U+5827	# <cjk>	[2000]
+0xF242	U+5832	# <cjk>	[2000]
+0xF243	U+5839	# <cjk>	[2000]
+0xF244	U+213C4	# <cjk>	[2000]	[Unicode3.1]
+0xF245	U+5849	# <cjk>	[2000]
+0xF246	U+584C	# <cjk>	[2000]
+0xF247	U+5867	# <cjk>	[2000]
+0xF248	U+588A	# <cjk>	[2000]
+0xF249	U+588B	# <cjk>	[2000]
+0xF24A	U+588D	# <cjk>	[2000]
+0xF24B	U+588F	# <cjk>	[2000]
+0xF24C	U+5890	# <cjk>	[2000]
+0xF24D	U+5894	# <cjk>	[2000]
+0xF24E	U+589D	# <cjk>	[2000]
+0xF24F	U+58AA	# <cjk>	[2000]
+0xF250	U+58B1	# <cjk>	[2000]
+0xF251	U+2146D	# <cjk>	[2000]	[Unicode3.1]
+0xF252	U+58C3	# <cjk>	[2000]
+0xF253	U+58CD	# <cjk>	[2000]
+0xF254	U+58E2	# <cjk>	[2000]
+0xF255	U+58F3	# <cjk>	[2000]
+0xF256	U+58F4	# <cjk>	[2000]
+0xF257	U+5905	# <cjk>	[2000]
+0xF258	U+5906	# <cjk>	[2000]
+0xF259	U+590B	# <cjk>	[2000]
+0xF25A	U+590D	# <cjk>	[2000]
+0xF25B	U+5914	# <cjk>	[2000]
+0xF25C	U+5924	# <cjk>	[2000]
+0xF25D	U+215D7	# <cjk>	[2000]	[Unicode3.1]
+0xF25E	U+3691	# <cjk>	[2000]
+0xF25F	U+593D	# <cjk>	[2000]
+0xF260	U+3699	# <cjk>	[2000]
+0xF261	U+5946	# <cjk>	[2000]
+0xF262	U+3696	# <cjk>	[2000]
+0xF263	U+26C29	# <cjk>	[2000]	[Unicode3.1]
+0xF264	U+595B	# <cjk>	[2000]
+0xF265	U+595F	# <cjk>	[2000]
+0xF266	U+21647	# <cjk>	[2000]	[Unicode3.1]
+0xF267	U+5975	# <cjk>	[2000]
+0xF268	U+5976	# <cjk>	[2000]
+0xF269	U+597C	# <cjk>	[2000]
+0xF26A	U+599F	# <cjk>	[2000]
+0xF26B	U+59AE	# <cjk>	[2000]
+0xF26C	U+59BC	# <cjk>	[2000]
+0xF26D	U+59C8	# <cjk>	[2000]
+0xF26E	U+59CD	# <cjk>	[2000]
+0xF26F	U+59DE	# <cjk>	[2000]
+0xF270	U+59E3	# <cjk>	[2000]
+0xF271	U+59E4	# <cjk>	[2000]
+0xF272	U+59E7	# <cjk>	[2000]
+0xF273	U+59EE	# <cjk>	[2000]
+0xF274	U+21706	# <cjk>	[2000]	[Unicode3.1]
+0xF275	U+21742	# <cjk>	[2000]	[Unicode3.1]
+0xF276	U+36CF	# <cjk>	[2000]
+0xF277	U+5A0C	# <cjk>	[2000]
+0xF278	U+5A0D	# <cjk>	[2000]
+0xF279	U+5A17	# <cjk>	[2000]
+0xF27A	U+5A27	# <cjk>	[2000]
+0xF27B	U+5A2D	# <cjk>	[2000]
+0xF27C	U+5A55	# <cjk>	[2000]
+0xF27D	U+5A65	# <cjk>	[2000]
+0xF27E	U+5A7A	# <cjk>	[2000]
+0xF280	U+5A8B	# <cjk>	[2000]
+0xF281	U+5A9C	# <cjk>	[2000]
+0xF282	U+5A9F	# <cjk>	[2000]
+0xF283	U+5AA0	# <cjk>	[2000]
+0xF284	U+5AA2	# <cjk>	[2000]
+0xF285	U+5AB1	# <cjk>	[2000]
+0xF286	U+5AB3	# <cjk>	[2000]
+0xF287	U+5AB5	# <cjk>	[2000]
+0xF288	U+5ABA	# <cjk>	[2000]
+0xF289	U+5ABF	# <cjk>	[2000]
+0xF28A	U+5ADA	# <cjk>	[2000]
+0xF28B	U+5ADC	# <cjk>	[2000]
+0xF28C	U+5AE0	# <cjk>	[2000]
+0xF28D	U+5AE5	# <cjk>	[2000]
+0xF28E	U+5AF0	# <cjk>	[2000]
+0xF28F	U+5AEE	# <cjk>	[2000]
+0xF290	U+5AF5	# <cjk>	[2000]
+0xF291	U+5B00	# <cjk>	[2000]
+0xF292	U+5B08	# <cjk>	[2000]
+0xF293	U+5B17	# <cjk>	[2000]
+0xF294	U+5B34	# <cjk>	[2000]
+0xF295	U+5B2D	# <cjk>	[2000]
+0xF296	U+5B4C	# <cjk>	[2000]
+0xF297	U+5B52	# <cjk>	[2000]
+0xF298	U+5B68	# <cjk>	[2000]
+0xF299	U+5B6F	# <cjk>	[2000]
+0xF29A	U+5B7C	# <cjk>	[2000]
+0xF29B	U+5B7F	# <cjk>	[2000]
+0xF29C	U+5B81	# <cjk>	[2000]
+0xF29D	U+5B84	# <cjk>	[2000]
+0xF29E	U+219C3	# <cjk>	[2000]	[Unicode3.1]
+0xF29F	U+5E6E	# <cjk>	[2000]
+0xF2A0	U+2217B	# <cjk>	[2000]	[Unicode3.1]
+0xF2A1	U+5EA5	# <cjk>	[2000]
+0xF2A2	U+5EAA	# <cjk>	[2000]
+0xF2A3	U+5EAC	# <cjk>	[2000]
+0xF2A4	U+5EB9	# <cjk>	[2000]
+0xF2A5	U+5EBF	# <cjk>	[2000]
+0xF2A6	U+5EC6	# <cjk>	[2000]
+0xF2A7	U+5ED2	# <cjk>	[2000]
+0xF2A8	U+5ED9	# <cjk>	[2000]
+0xF2A9	U+2231E	# <cjk>	[2000]	[Unicode3.1]
+0xF2AA	U+5EFD	# <cjk>	[2000]
+0xF2AB	U+5F08	# <cjk>	[2000]
+0xF2AC	U+5F0E	# <cjk>	[2000]
+0xF2AD	U+5F1C	# <cjk>	[2000]
+0xF2AE	U+223AD	# <cjk>	[2000]	[Unicode3.1]
+0xF2AF	U+5F1E	# <cjk>	[2000]
+0xF2B0	U+5F47	# <cjk>	[2000]
+0xF2B1	U+5F63	# <cjk>	[2000]
+0xF2B2	U+5F72	# <cjk>	[2000]
+0xF2B3	U+5F7E	# <cjk>	[2000]
+0xF2B4	U+5F8F	# <cjk>	[2000]
+0xF2B5	U+5FA2	# <cjk>	[2000]
+0xF2B6	U+5FA4	# <cjk>	[2000]
+0xF2B7	U+5FB8	# <cjk>	[2000]
+0xF2B8	U+5FC4	# <cjk>	[2000]
+0xF2B9	U+38FA	# <cjk>	[2000]
+0xF2BA	U+5FC7	# <cjk>	[2000]
+0xF2BB	U+5FCB	# <cjk>	[2000]
+0xF2BC	U+5FD2	# <cjk>	[2000]
+0xF2BD	U+5FD3	# <cjk>	[2000]
+0xF2BE	U+5FD4	# <cjk>	[2000]
+0xF2BF	U+5FE2	# <cjk>	[2000]
+0xF2C0	U+5FEE	# <cjk>	[2000]
+0xF2C1	U+5FEF	# <cjk>	[2000]
+0xF2C2	U+5FF3	# <cjk>	[2000]
+0xF2C3	U+5FFC	# <cjk>	[2000]
+0xF2C4	U+3917	# <cjk>	[2000]
+0xF2C5	U+6017	# <cjk>	[2000]
+0xF2C6	U+6022	# <cjk>	[2000]
+0xF2C7	U+6024	# <cjk>	[2000]
+0xF2C8	U+391A	# <cjk>	[2000]
+0xF2C9	U+604C	# <cjk>	[2000]
+0xF2CA	U+607F	# <cjk>	[2000]
+0xF2CB	U+608A	# <cjk>	[2000]
+0xF2CC	U+6095	# <cjk>	[2000]
+0xF2CD	U+60A8	# <cjk>	[2000]
+0xF2CE	U+226F3	# <cjk>	[2000]	[Unicode3.1]
+0xF2CF	U+60B0	# <cjk>	[2000]
+0xF2D0	U+60B1	# <cjk>	[2000]
+0xF2D1	U+60BE	# <cjk>	[2000]
+0xF2D2	U+60C8	# <cjk>	[2000]
+0xF2D3	U+60D9	# <cjk>	[2000]
+0xF2D4	U+60DB	# <cjk>	[2000]
+0xF2D5	U+60EE	# <cjk>	[2000]
+0xF2D6	U+60F2	# <cjk>	[2000]
+0xF2D7	U+60F5	# <cjk>	[2000]
+0xF2D8	U+6110	# <cjk>	[2000]
+0xF2D9	U+6112	# <cjk>	[2000]
+0xF2DA	U+6113	# <cjk>	[2000]
+0xF2DB	U+6119	# <cjk>	[2000]
+0xF2DC	U+611E	# <cjk>	[2000]
+0xF2DD	U+613A	# <cjk>	[2000]
+0xF2DE	U+396F	# <cjk>	[2000]
+0xF2DF	U+6141	# <cjk>	[2000]
+0xF2E0	U+6146	# <cjk>	[2000]
+0xF2E1	U+6160	# <cjk>	[2000]
+0xF2E2	U+617C	# <cjk>	[2000]
+0xF2E3	U+2285B	# <cjk>	[2000]	[Unicode3.1]
+0xF2E4	U+6192	# <cjk>	[2000]
+0xF2E5	U+6193	# <cjk>	[2000]
+0xF2E6	U+6197	# <cjk>	[2000]
+0xF2E7	U+6198	# <cjk>	[2000]
+0xF2E8	U+61A5	# <cjk>	[2000]
+0xF2E9	U+61A8	# <cjk>	[2000]
+0xF2EA	U+61AD	# <cjk>	[2000]
+0xF2EB	U+228AB	# <cjk>	[2000]	[Unicode3.1]
+0xF2EC	U+61D5	# <cjk>	[2000]
+0xF2ED	U+61DD	# <cjk>	[2000]
+0xF2EE	U+61DF	# <cjk>	[2000]
+0xF2EF	U+61F5	# <cjk>	[2000]
+0xF2F0	U+2298F	# <cjk>	[2000]	[Unicode3.1]
+0xF2F1	U+6215	# <cjk>	[2000]
+0xF2F2	U+6223	# <cjk>	[2000]
+0xF2F3	U+6229	# <cjk>	[2000]
+0xF2F4	U+6246	# <cjk>	[2000]
+0xF2F5	U+624C	# <cjk>	[2000]
+0xF2F6	U+6251	# <cjk>	[2000]
+0xF2F7	U+6252	# <cjk>	[2000]
+0xF2F8	U+6261	# <cjk>	[2000]
+0xF2F9	U+6264	# <cjk>	[2000]
+0xF2FA	U+627B	# <cjk>	[2000]
+0xF2FB	U+626D	# <cjk>	[2000]
+0xF2FC	U+6273	# <cjk>	[2000]
+0xF340	U+6299	# <cjk>	[2000]
+0xF341	U+62A6	# <cjk>	[2000]
+0xF342	U+62D5	# <cjk>	[2000]
+0xF343	U+22AB8	# <cjk>	[2000]	[Unicode3.1]
+0xF344	U+62FD	# <cjk>	[2000]
+0xF345	U+6303	# <cjk>	[2000]
+0xF346	U+630D	# <cjk>	[2000]
+0xF347	U+6310	# <cjk>	[2000]
+0xF348	U+22B4F	# <cjk>	[2000]	[Unicode3.1]
+0xF349	U+22B50	# <cjk>	[2000]	[Unicode3.1]
+0xF34A	U+6332	# <cjk>	[2000]
+0xF34B	U+6335	# <cjk>	[2000]
+0xF34C	U+633B	# <cjk>	[2000]
+0xF34D	U+633C	# <cjk>	[2000]
+0xF34E	U+6341	# <cjk>	[2000]
+0xF34F	U+6344	# <cjk>	[2000]
+0xF350	U+634E	# <cjk>	[2000]
+0xF351	U+22B46	# <cjk>	[2000]	[Unicode3.1]
+0xF352	U+6359	# <cjk>	[2000]
+0xF353	U+22C1D	# <cjk>	[2000]	[Unicode3.1]
+0xF354	U+22BA6	# <cjk>	[2000]	[Unicode3.1]
+0xF355	U+636C	# <cjk>	[2000]
+0xF356	U+6384	# <cjk>	[2000]
+0xF357	U+6399	# <cjk>	[2000]
+0xF358	U+22C24	# <cjk>	[2000]	[Unicode3.1]
+0xF359	U+6394	# <cjk>	[2000]
+0xF35A	U+63BD	# <cjk>	[2000]
+0xF35B	U+63F7	# <cjk>	[2000]
+0xF35C	U+63D4	# <cjk>	[2000]
+0xF35D	U+63D5	# <cjk>	[2000]
+0xF35E	U+63DC	# <cjk>	[2000]
+0xF35F	U+63E0	# <cjk>	[2000]
+0xF360	U+63EB	# <cjk>	[2000]
+0xF361	U+63EC	# <cjk>	[2000]
+0xF362	U+63F2	# <cjk>	[2000]
+0xF363	U+6409	# <cjk>	[2000]
+0xF364	U+641E	# <cjk>	[2000]
+0xF365	U+6425	# <cjk>	[2000]
+0xF366	U+6429	# <cjk>	[2000]
+0xF367	U+642F	# <cjk>	[2000]
+0xF368	U+645A	# <cjk>	[2000]
+0xF369	U+645B	# <cjk>	[2000]
+0xF36A	U+645D	# <cjk>	[2000]
+0xF36B	U+6473	# <cjk>	[2000]
+0xF36C	U+647D	# <cjk>	[2000]
+0xF36D	U+6487	# <cjk>	[2000]
+0xF36E	U+6491	# <cjk>	[2000]
+0xF36F	U+649D	# <cjk>	[2000]
+0xF370	U+649F	# <cjk>	[2000]
+0xF371	U+64CB	# <cjk>	[2000]
+0xF372	U+64CC	# <cjk>	[2000]
+0xF373	U+64D5	# <cjk>	[2000]
+0xF374	U+64D7	# <cjk>	[2000]
+0xF375	U+22DE1	# <cjk>	[2000]	[Unicode3.1]
+0xF376	U+64E4	# <cjk>	[2000]
+0xF377	U+64E5	# <cjk>	[2000]
+0xF378	U+64FF	# <cjk>	[2000]
+0xF379	U+6504	# <cjk>	[2000]
+0xF37A	U+3A6E	# <cjk>	[2000]
+0xF37B	U+650F	# <cjk>	[2000]
+0xF37C	U+6514	# <cjk>	[2000]
+0xF37D	U+6516	# <cjk>	[2000]
+0xF37E	U+3A73	# <cjk>	[2000]
+0xF380	U+651E	# <cjk>	[2000]
+0xF381	U+6532	# <cjk>	[2000]
+0xF382	U+6544	# <cjk>	[2000]
+0xF383	U+6554	# <cjk>	[2000]
+0xF384	U+656B	# <cjk>	[2000]
+0xF385	U+657A	# <cjk>	[2000]
+0xF386	U+6581	# <cjk>	[2000]
+0xF387	U+6584	# <cjk>	[2000]
+0xF388	U+6585	# <cjk>	[2000]
+0xF389	U+658A	# <cjk>	[2000]
+0xF38A	U+65B2	# <cjk>	[2000]
+0xF38B	U+65B5	# <cjk>	[2000]
+0xF38C	U+65B8	# <cjk>	[2000]
+0xF38D	U+65BF	# <cjk>	[2000]
+0xF38E	U+65C2	# <cjk>	[2000]
+0xF38F	U+65C9	# <cjk>	[2000]
+0xF390	U+65D4	# <cjk>	[2000]
+0xF391	U+3AD6	# <cjk>	[2000]
+0xF392	U+65F2	# <cjk>	[2000]
+0xF393	U+65F9	# <cjk>	[2000]
+0xF394	U+65FC	# <cjk>	[2000]
+0xF395	U+6604	# <cjk>	[2000]
+0xF396	U+6608	# <cjk>	[2000]
+0xF397	U+6621	# <cjk>	[2000]
+0xF398	U+662A	# <cjk>	[2000]
+0xF399	U+6645	# <cjk>	[2000]
+0xF39A	U+6651	# <cjk>	[2000]
+0xF39B	U+664E	# <cjk>	[2000]
+0xF39C	U+3AEA	# <cjk>	[2000]
+0xF39D	U+231C3	# <cjk>	[2000]	[Unicode3.1]
+0xF39E	U+6657	# <cjk>	[2000]
+0xF39F	U+665B	# <cjk>	[2000]
+0xF3A0	U+6663	# <cjk>	[2000]
+0xF3A1	U+231F5	# <cjk>	[2000]	[Unicode3.1]
+0xF3A2	U+231B6	# <cjk>	[2000]	[Unicode3.1]
+0xF3A3	U+666A	# <cjk>	[2000]
+0xF3A4	U+666B	# <cjk>	[2000]
+0xF3A5	U+666C	# <cjk>	[2000]
+0xF3A6	U+666D	# <cjk>	[2000]
+0xF3A7	U+667B	# <cjk>	[2000]
+0xF3A8	U+6680	# <cjk>	[2000]
+0xF3A9	U+6690	# <cjk>	[2000]
+0xF3AA	U+6692	# <cjk>	[2000]
+0xF3AB	U+6699	# <cjk>	[2000]
+0xF3AC	U+3B0E	# <cjk>	[2000]
+0xF3AD	U+66AD	# <cjk>	[2000]
+0xF3AE	U+66B1	# <cjk>	[2000]
+0xF3AF	U+66B5	# <cjk>	[2000]
+0xF3B0	U+3B1A	# <cjk>	[2000]
+0xF3B1	U+66BF	# <cjk>	[2000]
+0xF3B2	U+3B1C	# <cjk>	[2000]
+0xF3B3	U+66EC	# <cjk>	[2000]
+0xF3B4	U+3AD7	# <cjk>	[2000]
+0xF3B5	U+6701	# <cjk>	[2000]
+0xF3B6	U+6705	# <cjk>	[2000]
+0xF3B7	U+6712	# <cjk>	[2000]
+0xF3B8	U+23372	# <cjk>	[2000]	[Unicode3.1]
+0xF3B9	U+6719	# <cjk>	[2000]
+0xF3BA	U+233D3	# <cjk>	[2000]	[Unicode3.1]
+0xF3BB	U+233D2	# <cjk>	[2000]	[Unicode3.1]
+0xF3BC	U+674C	# <cjk>	[2000]
+0xF3BD	U+674D	# <cjk>	[2000]
+0xF3BE	U+6754	# <cjk>	[2000]
+0xF3BF	U+675D	# <cjk>	[2000]
+0xF3C0	U+233D0	# <cjk>	[2000]	[Unicode3.1]
+0xF3C1	U+233E4	# <cjk>	[2000]	[Unicode3.1]
+0xF3C2	U+233D5	# <cjk>	[2000]	[Unicode3.1]
+0xF3C3	U+6774	# <cjk>	[2000]
+0xF3C4	U+6776	# <cjk>	[2000]
+0xF3C5	U+233DA	# <cjk>	[2000]	[Unicode3.1]
+0xF3C6	U+6792	# <cjk>	[2000]
+0xF3C7	U+233DF	# <cjk>	[2000]	[Unicode3.1]
+0xF3C8	U+8363	# <cjk>	[2000]
+0xF3C9	U+6810	# <cjk>	[2000]
+0xF3CA	U+67B0	# <cjk>	[2000]
+0xF3CB	U+67B2	# <cjk>	[2000]
+0xF3CC	U+67C3	# <cjk>	[2000]
+0xF3CD	U+67C8	# <cjk>	[2000]
+0xF3CE	U+67D2	# <cjk>	[2000]
+0xF3CF	U+67D9	# <cjk>	[2000]
+0xF3D0	U+67DB	# <cjk>	[2000]
+0xF3D1	U+67F0	# <cjk>	[2000]
+0xF3D2	U+67F7	# <cjk>	[2000]
+0xF3D3	U+2344A	# <cjk>	[2000]	[Unicode3.1]
+0xF3D4	U+23451	# <cjk>	[2000]	[Unicode3.1]
+0xF3D5	U+2344B	# <cjk>	[2000]	[Unicode3.1]
+0xF3D6	U+6818	# <cjk>	[2000]
+0xF3D7	U+681F	# <cjk>	[2000]
+0xF3D8	U+682D	# <cjk>	[2000]
+0xF3D9	U+23465	# <cjk>	[2000]	[Unicode3.1]
+0xF3DA	U+6833	# <cjk>	[2000]
+0xF3DB	U+683B	# <cjk>	[2000]
+0xF3DC	U+683E	# <cjk>	[2000]
+0xF3DD	U+6844	# <cjk>	[2000]
+0xF3DE	U+6845	# <cjk>	[2000]
+0xF3DF	U+6849	# <cjk>	[2000]
+0xF3E0	U+684C	# <cjk>	[2000]
+0xF3E1	U+6855	# <cjk>	[2000]
+0xF3E2	U+6857	# <cjk>	[2000]
+0xF3E3	U+3B77	# <cjk>	[2000]
+0xF3E4	U+686B	# <cjk>	[2000]
+0xF3E5	U+686E	# <cjk>	[2000]
+0xF3E6	U+687A	# <cjk>	[2000]
+0xF3E7	U+687C	# <cjk>	[2000]
+0xF3E8	U+6882	# <cjk>	[2000]
+0xF3E9	U+6890	# <cjk>	[2000]
+0xF3EA	U+6896	# <cjk>	[2000]
+0xF3EB	U+3B6D	# <cjk>	[2000]
+0xF3EC	U+6898	# <cjk>	[2000]
+0xF3ED	U+6899	# <cjk>	[2000]
+0xF3EE	U+689A	# <cjk>	[2000]
+0xF3EF	U+689C	# <cjk>	[2000]
+0xF3F0	U+68AA	# <cjk>	[2000]
+0xF3F1	U+68AB	# <cjk>	[2000]
+0xF3F2	U+68B4	# <cjk>	[2000]
+0xF3F3	U+68BB	# <cjk>	[2000]
+0xF3F4	U+68FB	# <cjk>	[2000]
+0xF3F5	U+234E4	# <cjk>	[2000]	[Unicode3.1]
+0xF3F6	U+2355A	# <cjk>	[2000]	[Unicode3.1]
+0xF3F7	U+FA13	# CJK COMPATIBILITY IDEOGRAPH-FA13	[2000]
+0xF3F8	U+68C3	# <cjk>	[2000]
+0xF3F9	U+68C5	# <cjk>	[2000]
+0xF3FA	U+68CC	# <cjk>	[2000]
+0xF3FB	U+68CF	# <cjk>	[2000]
+0xF3FC	U+68D6	# <cjk>	[2000]
+0xF440	U+68D9	# <cjk>	[2000]
+0xF441	U+68E4	# <cjk>	[2000]
+0xF442	U+68E5	# <cjk>	[2000]
+0xF443	U+68EC	# <cjk>	[2000]
+0xF444	U+68F7	# <cjk>	[2000]
+0xF445	U+6903	# <cjk>	[2000]
+0xF446	U+6907	# <cjk>	[2000]
+0xF447	U+3B87	# <cjk>	[2000]
+0xF448	U+3B88	# <cjk>	[2000]
+0xF449	U+23594	# <cjk>	[2000]	[Unicode3.1]
+0xF44A	U+693B	# <cjk>	[2000]
+0xF44B	U+3B8D	# <cjk>	[2000]
+0xF44C	U+6946	# <cjk>	[2000]
+0xF44D	U+6969	# <cjk>	[2000]
+0xF44E	U+696C	# <cjk>	[2000]
+0xF44F	U+6972	# <cjk>	[2000]
+0xF450	U+697A	# <cjk>	[2000]
+0xF451	U+697F	# <cjk>	[2000]
+0xF452	U+6992	# <cjk>	[2000]
+0xF453	U+3BA4	# <cjk>	[2000]
+0xF454	U+6996	# <cjk>	[2000]
+0xF455	U+6998	# <cjk>	[2000]
+0xF456	U+69A6	# <cjk>	[2000]
+0xF457	U+69B0	# <cjk>	[2000]
+0xF458	U+69B7	# <cjk>	[2000]
+0xF459	U+69BA	# <cjk>	[2000]
+0xF45A	U+69BC	# <cjk>	[2000]
+0xF45B	U+69C0	# <cjk>	[2000]
+0xF45C	U+69D1	# <cjk>	[2000]
+0xF45D	U+69D6	# <cjk>	[2000]
+0xF45E	U+23639	# <cjk>	[2000]	[Unicode3.1]
+0xF45F	U+23647	# <cjk>	[2000]	[Unicode3.1]
+0xF460	U+6A30	# <cjk>	[2000]
+0xF461	U+23638	# <cjk>	[2000]	[Unicode3.1]
+0xF462	U+2363A	# <cjk>	[2000]	[Unicode3.1]
+0xF463	U+69E3	# <cjk>	[2000]
+0xF464	U+69EE	# <cjk>	[2000]
+0xF465	U+69EF	# <cjk>	[2000]
+0xF466	U+69F3	# <cjk>	[2000]
+0xF467	U+3BCD	# <cjk>	[2000]
+0xF468	U+69F4	# <cjk>	[2000]
+0xF469	U+69FE	# <cjk>	[2000]
+0xF46A	U+6A11	# <cjk>	[2000]
+0xF46B	U+6A1A	# <cjk>	[2000]
+0xF46C	U+6A1D	# <cjk>	[2000]
+0xF46D	U+2371C	# <cjk>	[2000]	[Unicode3.1]
+0xF46E	U+6A32	# <cjk>	[2000]
+0xF46F	U+6A33	# <cjk>	[2000]
+0xF470	U+6A34	# <cjk>	[2000]
+0xF471	U+6A3F	# <cjk>	[2000]
+0xF472	U+6A46	# <cjk>	[2000]
+0xF473	U+6A49	# <cjk>	[2000]
+0xF474	U+6A7A	# <cjk>	[2000]
+0xF475	U+6A4E	# <cjk>	[2000]
+0xF476	U+6A52	# <cjk>	[2000]
+0xF477	U+6A64	# <cjk>	[2000]
+0xF478	U+2370C	# <cjk>	[2000]	[Unicode3.1]
+0xF479	U+6A7E	# <cjk>	[2000]
+0xF47A	U+6A83	# <cjk>	[2000]
+0xF47B	U+6A8B	# <cjk>	[2000]
+0xF47C	U+3BF0	# <cjk>	[2000]
+0xF47D	U+6A91	# <cjk>	[2000]
+0xF47E	U+6A9F	# <cjk>	[2000]
+0xF480	U+6AA1	# <cjk>	[2000]
+0xF481	U+23764	# <cjk>	[2000]	[Unicode3.1]
+0xF482	U+6AAB	# <cjk>	[2000]
+0xF483	U+6ABD	# <cjk>	[2000]
+0xF484	U+6AC6	# <cjk>	[2000]
+0xF485	U+6AD4	# <cjk>	[2000]
+0xF486	U+6AD0	# <cjk>	[2000]
+0xF487	U+6ADC	# <cjk>	[2000]
+0xF488	U+6ADD	# <cjk>	[2000]
+0xF489	U+237FF	# <cjk>	[2000]	[Unicode3.1]
+0xF48A	U+237E7	# <cjk>	[2000]	[Unicode3.1]
+0xF48B	U+6AEC	# <cjk>	[2000]
+0xF48C	U+6AF1	# <cjk>	[2000]
+0xF48D	U+6AF2	# <cjk>	[2000]
+0xF48E	U+6AF3	# <cjk>	[2000]
+0xF48F	U+6AFD	# <cjk>	[2000]
+0xF490	U+23824	# <cjk>	[2000]	[Unicode3.1]
+0xF491	U+6B0B	# <cjk>	[2000]
+0xF492	U+6B0F	# <cjk>	[2000]
+0xF493	U+6B10	# <cjk>	[2000]
+0xF494	U+6B11	# <cjk>	[2000]
+0xF495	U+2383D	# <cjk>	[2000]	[Unicode3.1]
+0xF496	U+6B17	# <cjk>	[2000]
+0xF497	U+3C26	# <cjk>	[2000]
+0xF498	U+6B2F	# <cjk>	[2000]
+0xF499	U+6B4A	# <cjk>	[2000]
+0xF49A	U+6B58	# <cjk>	[2000]
+0xF49B	U+6B6C	# <cjk>	[2000]
+0xF49C	U+6B75	# <cjk>	[2000]
+0xF49D	U+6B7A	# <cjk>	[2000]
+0xF49E	U+6B81	# <cjk>	[2000]
+0xF49F	U+6B9B	# <cjk>	[2000]
+0xF4A0	U+6BAE	# <cjk>	[2000]
+0xF4A1	U+23A98	# <cjk>	[2000]	[Unicode3.1]
+0xF4A2	U+6BBD	# <cjk>	[2000]
+0xF4A3	U+6BBE	# <cjk>	[2000]
+0xF4A4	U+6BC7	# <cjk>	[2000]
+0xF4A5	U+6BC8	# <cjk>	[2000]
+0xF4A6	U+6BC9	# <cjk>	[2000]
+0xF4A7	U+6BDA	# <cjk>	[2000]
+0xF4A8	U+6BE6	# <cjk>	[2000]
+0xF4A9	U+6BE7	# <cjk>	[2000]
+0xF4AA	U+6BEE	# <cjk>	[2000]
+0xF4AB	U+6BF1	# <cjk>	[2000]
+0xF4AC	U+6C02	# <cjk>	[2000]
+0xF4AD	U+6C0A	# <cjk>	[2000]
+0xF4AE	U+6C0E	# <cjk>	[2000]
+0xF4AF	U+6C35	# <cjk>	[2000]
+0xF4B0	U+6C36	# <cjk>	[2000]
+0xF4B1	U+6C3A	# <cjk>	[2000]
+0xF4B2	U+23C7F	# <cjk>	[2000]	[Unicode3.1]
+0xF4B3	U+6C3F	# <cjk>	[2000]
+0xF4B4	U+6C4D	# <cjk>	[2000]
+0xF4B5	U+6C5B	# <cjk>	[2000]
+0xF4B6	U+6C6D	# <cjk>	[2000]
+0xF4B7	U+6C84	# <cjk>	[2000]
+0xF4B8	U+6C89	# <cjk>	[2000]
+0xF4B9	U+3CC3	# <cjk>	[2000]
+0xF4BA	U+6C94	# <cjk>	[2000]
+0xF4BB	U+6C95	# <cjk>	[2000]
+0xF4BC	U+6C97	# <cjk>	[2000]
+0xF4BD	U+6CAD	# <cjk>	[2000]
+0xF4BE	U+6CC2	# <cjk>	[2000]
+0xF4BF	U+6CD0	# <cjk>	[2000]
+0xF4C0	U+3CD2	# <cjk>	[2000]
+0xF4C1	U+6CD6	# <cjk>	[2000]
+0xF4C2	U+6CDA	# <cjk>	[2000]
+0xF4C3	U+6CDC	# <cjk>	[2000]
+0xF4C4	U+6CE9	# <cjk>	[2000]
+0xF4C5	U+6CEC	# <cjk>	[2000]
+0xF4C6	U+6CED	# <cjk>	[2000]
+0xF4C7	U+23D00	# <cjk>	[2000]	[Unicode3.1]
+0xF4C8	U+6D00	# <cjk>	[2000]
+0xF4C9	U+6D0A	# <cjk>	[2000]
+0xF4CA	U+6D24	# <cjk>	[2000]
+0xF4CB	U+6D26	# <cjk>	[2000]
+0xF4CC	U+6D27	# <cjk>	[2000]
+0xF4CD	U+6C67	# <cjk>	[2000]
+0xF4CE	U+6D2F	# <cjk>	[2000]
+0xF4CF	U+6D3C	# <cjk>	[2000]
+0xF4D0	U+6D5B	# <cjk>	[2000]
+0xF4D1	U+6D5E	# <cjk>	[2000]
+0xF4D2	U+6D60	# <cjk>	[2000]
+0xF4D3	U+6D70	# <cjk>	[2000]
+0xF4D4	U+6D80	# <cjk>	[2000]
+0xF4D5	U+6D81	# <cjk>	[2000]
+0xF4D6	U+6D8A	# <cjk>	[2000]
+0xF4D7	U+6D8D	# <cjk>	[2000]
+0xF4D8	U+6D91	# <cjk>	[2000]
+0xF4D9	U+6D98	# <cjk>	[2000]
+0xF4DA	U+23D40	# <cjk>	[2000]	[Unicode3.1]
+0xF4DB	U+6E17	# <cjk>	[2000]
+0xF4DC	U+23DFA	# <cjk>	[2000]	[Unicode3.1]
+0xF4DD	U+23DF9	# <cjk>	[2000]	[Unicode3.1]
+0xF4DE	U+23DD3	# <cjk>	[2000]	[Unicode3.1]
+0xF4DF	U+6DAB	# <cjk>	[2000]
+0xF4E0	U+6DAE	# <cjk>	[2000]
+0xF4E1	U+6DB4	# <cjk>	[2000]
+0xF4E2	U+6DC2	# <cjk>	[2000]
+0xF4E3	U+6D34	# <cjk>	[2000]
+0xF4E4	U+6DC8	# <cjk>	[2000]
+0xF4E5	U+6DCE	# <cjk>	[2000]
+0xF4E6	U+6DCF	# <cjk>	[2000]
+0xF4E7	U+6DD0	# <cjk>	[2000]
+0xF4E8	U+6DDF	# <cjk>	[2000]
+0xF4E9	U+6DE9	# <cjk>	[2000]
+0xF4EA	U+6DF6	# <cjk>	[2000]
+0xF4EB	U+6E36	# <cjk>	[2000]
+0xF4EC	U+6E1E	# <cjk>	[2000]
+0xF4ED	U+6E22	# <cjk>	[2000]
+0xF4EE	U+6E27	# <cjk>	[2000]
+0xF4EF	U+3D11	# <cjk>	[2000]
+0xF4F0	U+6E32	# <cjk>	[2000]
+0xF4F1	U+6E3C	# <cjk>	[2000]
+0xF4F2	U+6E48	# <cjk>	[2000]
+0xF4F3	U+6E49	# <cjk>	[2000]
+0xF4F4	U+6E4B	# <cjk>	[2000]
+0xF4F5	U+6E4C	# <cjk>	[2000]
+0xF4F6	U+6E4F	# <cjk>	[2000]
+0xF4F7	U+6E51	# <cjk>	[2000]
+0xF4F8	U+6E53	# <cjk>	[2000]
+0xF4F9	U+6E54	# <cjk>	[2000]
+0xF4FA	U+6E57	# <cjk>	[2000]
+0xF4FB	U+6E63	# <cjk>	[2000]
+0xF4FC	U+3D1E	# <cjk>	[2000]
+0xF540	U+6E93	# <cjk>	[2000]
+0xF541	U+6EA7	# <cjk>	[2000]
+0xF542	U+6EB4	# <cjk>	[2000]
+0xF543	U+6EBF	# <cjk>	[2000]
+0xF544	U+6EC3	# <cjk>	[2000]
+0xF545	U+6ECA	# <cjk>	[2000]
+0xF546	U+6ED9	# <cjk>	[2000]
+0xF547	U+6F35	# <cjk>	[2000]
+0xF548	U+6EEB	# <cjk>	[2000]
+0xF549	U+6EF9	# <cjk>	[2000]
+0xF54A	U+6EFB	# <cjk>	[2000]
+0xF54B	U+6F0A	# <cjk>	[2000]
+0xF54C	U+6F0C	# <cjk>	[2000]
+0xF54D	U+6F18	# <cjk>	[2000]
+0xF54E	U+6F25	# <cjk>	[2000]
+0xF54F	U+6F36	# <cjk>	[2000]
+0xF550	U+6F3C	# <cjk>	[2000]
+0xF551	U+23F7E	# <cjk>	[2000]	[Unicode3.1]
+0xF552	U+6F52	# <cjk>	[2000]
+0xF553	U+6F57	# <cjk>	[2000]
+0xF554	U+6F5A	# <cjk>	[2000]
+0xF555	U+6F60	# <cjk>	[2000]
+0xF556	U+6F68	# <cjk>	[2000]
+0xF557	U+6F98	# <cjk>	[2000]
+0xF558	U+6F7D	# <cjk>	[2000]
+0xF559	U+6F90	# <cjk>	[2000]
+0xF55A	U+6F96	# <cjk>	[2000]
+0xF55B	U+6FBE	# <cjk>	[2000]
+0xF55C	U+6F9F	# <cjk>	[2000]
+0xF55D	U+6FA5	# <cjk>	[2000]
+0xF55E	U+6FAF	# <cjk>	[2000]
+0xF55F	U+3D64	# <cjk>	[2000]
+0xF560	U+6FB5	# <cjk>	[2000]
+0xF561	U+6FC8	# <cjk>	[2000]
+0xF562	U+6FC9	# <cjk>	[2000]
+0xF563	U+6FDA	# <cjk>	[2000]
+0xF564	U+6FDE	# <cjk>	[2000]
+0xF565	U+6FE9	# <cjk>	[2000]
+0xF566	U+24096	# <cjk>	[2000]	[Unicode3.1]
+0xF567	U+6FFC	# <cjk>	[2000]
+0xF568	U+7000	# <cjk>	[2000]
+0xF569	U+7007	# <cjk>	[2000]
+0xF56A	U+700A	# <cjk>	[2000]
+0xF56B	U+7023	# <cjk>	[2000]
+0xF56C	U+24103	# <cjk>	[2000]	[Unicode3.1]
+0xF56D	U+7039	# <cjk>	[2000]
+0xF56E	U+703A	# <cjk>	[2000]
+0xF56F	U+703C	# <cjk>	[2000]
+0xF570	U+7043	# <cjk>	[2000]
+0xF571	U+7047	# <cjk>	[2000]
+0xF572	U+704B	# <cjk>	[2000]
+0xF573	U+3D9A	# <cjk>	[2000]
+0xF574	U+7054	# <cjk>	[2000]
+0xF575	U+7065	# <cjk>	[2000]
+0xF576	U+7069	# <cjk>	[2000]
+0xF577	U+706C	# <cjk>	[2000]
+0xF578	U+706E	# <cjk>	[2000]
+0xF579	U+7076	# <cjk>	[2000]
+0xF57A	U+707E	# <cjk>	[2000]
+0xF57B	U+7081	# <cjk>	[2000]
+0xF57C	U+7086	# <cjk>	[2000]
+0xF57D	U+7095	# <cjk>	[2000]
+0xF57E	U+7097	# <cjk>	[2000]
+0xF580	U+70BB	# <cjk>	[2000]
+0xF581	U+241C6	# <cjk>	[2000]	[Unicode3.1]
+0xF582	U+709F	# <cjk>	[2000]
+0xF583	U+70B1	# <cjk>	[2000]
+0xF584	U+241FE	# <cjk>	[2000]	[Unicode3.1]
+0xF585	U+70EC	# <cjk>	[2000]
+0xF586	U+70CA	# <cjk>	[2000]
+0xF587	U+70D1	# <cjk>	[2000]
+0xF588	U+70D3	# <cjk>	[2000]
+0xF589	U+70DC	# <cjk>	[2000]
+0xF58A	U+7103	# <cjk>	[2000]
+0xF58B	U+7104	# <cjk>	[2000]
+0xF58C	U+7106	# <cjk>	[2000]
+0xF58D	U+7107	# <cjk>	[2000]
+0xF58E	U+7108	# <cjk>	[2000]
+0xF58F	U+710C	# <cjk>	[2000]
+0xF590	U+3DC0	# <cjk>	[2000]
+0xF591	U+712F	# <cjk>	[2000]
+0xF592	U+7131	# <cjk>	[2000]
+0xF593	U+7150	# <cjk>	[2000]
+0xF594	U+714A	# <cjk>	[2000]
+0xF595	U+7153	# <cjk>	[2000]
+0xF596	U+715E	# <cjk>	[2000]
+0xF597	U+3DD4	# <cjk>	[2000]
+0xF598	U+7196	# <cjk>	[2000]
+0xF599	U+7180	# <cjk>	[2000]
+0xF59A	U+719B	# <cjk>	[2000]
+0xF59B	U+71A0	# <cjk>	[2000]
+0xF59C	U+71A2	# <cjk>	[2000]
+0xF59D	U+71AE	# <cjk>	[2000]
+0xF59E	U+71AF	# <cjk>	[2000]
+0xF59F	U+71B3	# <cjk>	[2000]
+0xF5A0	U+243BC	# <cjk>	[2000]	[Unicode3.1]
+0xF5A1	U+71CB	# <cjk>	[2000]
+0xF5A2	U+71D3	# <cjk>	[2000]
+0xF5A3	U+71D9	# <cjk>	[2000]
+0xF5A4	U+71DC	# <cjk>	[2000]
+0xF5A5	U+7207	# <cjk>	[2000]
+0xF5A6	U+3E05	# <cjk>	[2000]
+0xF5A7	U+FA49	# CJK COMPATIBILITY IDEOGRAPH-FA49	[2000]	[Unicode3.2]
+0xF5A8	U+722B	# <cjk>	[2000]
+0xF5A9	U+7234	# <cjk>	[2000]
+0xF5AA	U+7238	# <cjk>	[2000]
+0xF5AB	U+7239	# <cjk>	[2000]
+0xF5AC	U+4E2C	# <cjk>	[2000]
+0xF5AD	U+7242	# <cjk>	[2000]
+0xF5AE	U+7253	# <cjk>	[2000]
+0xF5AF	U+7257	# <cjk>	[2000]
+0xF5B0	U+7263	# <cjk>	[2000]
+0xF5B1	U+24629	# <cjk>	[2000]	[Unicode3.1]
+0xF5B2	U+726E	# <cjk>	[2000]
+0xF5B3	U+726F	# <cjk>	[2000]
+0xF5B4	U+7278	# <cjk>	[2000]
+0xF5B5	U+727F	# <cjk>	[2000]
+0xF5B6	U+728E	# <cjk>	[2000]
+0xF5B7	U+246A5	# <cjk>	[2000]	[Unicode3.1]
+0xF5B8	U+72AD	# <cjk>	[2000]
+0xF5B9	U+72AE	# <cjk>	[2000]
+0xF5BA	U+72B0	# <cjk>	[2000]
+0xF5BB	U+72B1	# <cjk>	[2000]
+0xF5BC	U+72C1	# <cjk>	[2000]
+0xF5BD	U+3E60	# <cjk>	[2000]
+0xF5BE	U+72CC	# <cjk>	[2000]
+0xF5BF	U+3E66	# <cjk>	[2000]
+0xF5C0	U+3E68	# <cjk>	[2000]
+0xF5C1	U+72F3	# <cjk>	[2000]
+0xF5C2	U+72FA	# <cjk>	[2000]
+0xF5C3	U+7307	# <cjk>	[2000]
+0xF5C4	U+7312	# <cjk>	[2000]
+0xF5C5	U+7318	# <cjk>	[2000]
+0xF5C6	U+7319	# <cjk>	[2000]
+0xF5C7	U+3E83	# <cjk>	[2000]
+0xF5C8	U+7339	# <cjk>	[2000]
+0xF5C9	U+732C	# <cjk>	[2000]
+0xF5CA	U+7331	# <cjk>	[2000]
+0xF5CB	U+7333	# <cjk>	[2000]
+0xF5CC	U+733D	# <cjk>	[2000]
+0xF5CD	U+7352	# <cjk>	[2000]
+0xF5CE	U+3E94	# <cjk>	[2000]
+0xF5CF	U+736B	# <cjk>	[2000]
+0xF5D0	U+736C	# <cjk>	[2000]
+0xF5D1	U+24896	# <cjk>	[2000]	[Unicode3.1]
+0xF5D2	U+736E	# <cjk>	[2000]
+0xF5D3	U+736F	# <cjk>	[2000]
+0xF5D4	U+7371	# <cjk>	[2000]
+0xF5D5	U+7377	# <cjk>	[2000]
+0xF5D6	U+7381	# <cjk>	[2000]
+0xF5D7	U+7385	# <cjk>	[2000]
+0xF5D8	U+738A	# <cjk>	[2000]
+0xF5D9	U+7394	# <cjk>	[2000]
+0xF5DA	U+7398	# <cjk>	[2000]
+0xF5DB	U+739C	# <cjk>	[2000]
+0xF5DC	U+739E	# <cjk>	[2000]
+0xF5DD	U+73A5	# <cjk>	[2000]
+0xF5DE	U+73A8	# <cjk>	[2000]
+0xF5DF	U+73B5	# <cjk>	[2000]
+0xF5E0	U+73B7	# <cjk>	[2000]
+0xF5E1	U+73B9	# <cjk>	[2000]
+0xF5E2	U+73BC	# <cjk>	[2000]
+0xF5E3	U+73BF	# <cjk>	[2000]
+0xF5E4	U+73C5	# <cjk>	[2000]
+0xF5E5	U+73CB	# <cjk>	[2000]
+0xF5E6	U+73E1	# <cjk>	[2000]
+0xF5E7	U+73E7	# <cjk>	[2000]
+0xF5E8	U+73F9	# <cjk>	[2000]
+0xF5E9	U+7413	# <cjk>	[2000]
+0xF5EA	U+73FA	# <cjk>	[2000]
+0xF5EB	U+7401	# <cjk>	[2000]
+0xF5EC	U+7424	# <cjk>	[2000]
+0xF5ED	U+7431	# <cjk>	[2000]
+0xF5EE	U+7439	# <cjk>	[2000]
+0xF5EF	U+7453	# <cjk>	[2000]
+0xF5F0	U+7440	# <cjk>	[2000]
+0xF5F1	U+7443	# <cjk>	[2000]
+0xF5F2	U+744D	# <cjk>	[2000]
+0xF5F3	U+7452	# <cjk>	[2000]
+0xF5F4	U+745D	# <cjk>	[2000]
+0xF5F5	U+7471	# <cjk>	[2000]
+0xF5F6	U+7481	# <cjk>	[2000]
+0xF5F7	U+7485	# <cjk>	[2000]
+0xF5F8	U+7488	# <cjk>	[2000]
+0xF5F9	U+24A4D	# <cjk>	[2000]	[Unicode3.1]
+0xF5FA	U+7492	# <cjk>	[2000]
+0xF5FB	U+7497	# <cjk>	[2000]
+0xF5FC	U+7499	# <cjk>	[2000]
+0xF640	U+74A0	# <cjk>	[2000]
+0xF641	U+74A1	# <cjk>	[2000]
+0xF642	U+74A5	# <cjk>	[2000]
+0xF643	U+74AA	# <cjk>	[2000]
+0xF644	U+74AB	# <cjk>	[2000]
+0xF645	U+74B9	# <cjk>	[2000]
+0xF646	U+74BB	# <cjk>	[2000]
+0xF647	U+74BA	# <cjk>	[2000]
+0xF648	U+74D6	# <cjk>	[2000]
+0xF649	U+74D8	# <cjk>	[2000]
+0xF64A	U+74DE	# <cjk>	[2000]
+0xF64B	U+74EF	# <cjk>	[2000]
+0xF64C	U+74EB	# <cjk>	[2000]
+0xF64D	U+24B56	# <cjk>	[2000]	[Unicode3.1]
+0xF64E	U+74FA	# <cjk>	[2000]
+0xF64F	U+24B6F	# <cjk>	[2000]	[Unicode3.1]
+0xF650	U+7520	# <cjk>	[2000]
+0xF651	U+7524	# <cjk>	[2000]
+0xF652	U+752A	# <cjk>	[2000]
+0xF653	U+3F57	# <cjk>	[2000]
+0xF654	U+24C16	# <cjk>	[2000]	[Unicode3.1]
+0xF655	U+753D	# <cjk>	[2000]
+0xF656	U+753E	# <cjk>	[2000]
+0xF657	U+7540	# <cjk>	[2000]
+0xF658	U+7548	# <cjk>	[2000]
+0xF659	U+754E	# <cjk>	[2000]
+0xF65A	U+7550	# <cjk>	[2000]
+0xF65B	U+7552	# <cjk>	[2000]
+0xF65C	U+756C	# <cjk>	[2000]
+0xF65D	U+7572	# <cjk>	[2000]
+0xF65E	U+7571	# <cjk>	[2000]
+0xF65F	U+757A	# <cjk>	[2000]
+0xF660	U+757D	# <cjk>	[2000]
+0xF661	U+757E	# <cjk>	[2000]
+0xF662	U+7581	# <cjk>	[2000]
+0xF663	U+24D14	# <cjk>	[2000]	[Unicode3.1]
+0xF664	U+758C	# <cjk>	[2000]
+0xF665	U+3F75	# <cjk>	[2000]
+0xF666	U+75A2	# <cjk>	[2000]
+0xF667	U+3F77	# <cjk>	[2000]
+0xF668	U+75B0	# <cjk>	[2000]
+0xF669	U+75B7	# <cjk>	[2000]
+0xF66A	U+75BF	# <cjk>	[2000]
+0xF66B	U+75C0	# <cjk>	[2000]
+0xF66C	U+75C6	# <cjk>	[2000]
+0xF66D	U+75CF	# <cjk>	[2000]
+0xF66E	U+75D3	# <cjk>	[2000]
+0xF66F	U+75DD	# <cjk>	[2000]
+0xF670	U+75DF	# <cjk>	[2000]
+0xF671	U+75E0	# <cjk>	[2000]
+0xF672	U+75E7	# <cjk>	[2000]
+0xF673	U+75EC	# <cjk>	[2000]
+0xF674	U+75EE	# <cjk>	[2000]
+0xF675	U+75F1	# <cjk>	[2000]
+0xF676	U+75F9	# <cjk>	[2000]
+0xF677	U+7603	# <cjk>	[2000]
+0xF678	U+7618	# <cjk>	[2000]
+0xF679	U+7607	# <cjk>	[2000]
+0xF67A	U+760F	# <cjk>	[2000]
+0xF67B	U+3FAE	# <cjk>	[2000]
+0xF67C	U+24E0E	# <cjk>	[2000]	[Unicode3.1]
+0xF67D	U+7613	# <cjk>	[2000]
+0xF67E	U+761B	# <cjk>	[2000]
+0xF680	U+761C	# <cjk>	[2000]
+0xF681	U+24E37	# <cjk>	[2000]	[Unicode3.1]
+0xF682	U+7625	# <cjk>	[2000]
+0xF683	U+7628	# <cjk>	[2000]
+0xF684	U+763C	# <cjk>	[2000]
+0xF685	U+7633	# <cjk>	[2000]
+0xF686	U+24E6A	# <cjk>	[2000]	[Unicode3.1]
+0xF687	U+3FC9	# <cjk>	[2000]
+0xF688	U+7641	# <cjk>	[2000]
+0xF689	U+24E8B	# <cjk>	[2000]	[Unicode3.1]
+0xF68A	U+7649	# <cjk>	[2000]
+0xF68B	U+7655	# <cjk>	[2000]
+0xF68C	U+3FD7	# <cjk>	[2000]
+0xF68D	U+766E	# <cjk>	[2000]
+0xF68E	U+7695	# <cjk>	[2000]
+0xF68F	U+769C	# <cjk>	[2000]
+0xF690	U+76A1	# <cjk>	[2000]
+0xF691	U+76A0	# <cjk>	[2000]
+0xF692	U+76A7	# <cjk>	[2000]
+0xF693	U+76A8	# <cjk>	[2000]
+0xF694	U+76AF	# <cjk>	[2000]
+0xF695	U+2504A	# <cjk>	[2000]	[Unicode3.1]
+0xF696	U+76C9	# <cjk>	[2000]
+0xF697	U+25055	# <cjk>	[2000]	[Unicode3.1]
+0xF698	U+76E8	# <cjk>	[2000]
+0xF699	U+76EC	# <cjk>	[2000]
+0xF69A	U+25122	# <cjk>	[2000]	[Unicode3.1]
+0xF69B	U+7717	# <cjk>	[2000]
+0xF69C	U+771A	# <cjk>	[2000]
+0xF69D	U+772D	# <cjk>	[2000]
+0xF69E	U+7735	# <cjk>	[2000]
+0xF69F	U+251A9	# <cjk>	[2000]	[Unicode3.1]
+0xF6A0	U+4039	# <cjk>	[2000]
+0xF6A1	U+251E5	# <cjk>	[2000]	[Unicode3.1]
+0xF6A2	U+251CD	# <cjk>	[2000]	[Unicode3.1]
+0xF6A3	U+7758	# <cjk>	[2000]
+0xF6A4	U+7760	# <cjk>	[2000]
+0xF6A5	U+776A	# <cjk>	[2000]
+0xF6A6	U+2521E	# <cjk>	[2000]	[Unicode3.1]
+0xF6A7	U+7772	# <cjk>	[2000]
+0xF6A8	U+777C	# <cjk>	[2000]
+0xF6A9	U+777D	# <cjk>	[2000]
+0xF6AA	U+2524C	# <cjk>	[2000]	[Unicode3.1]
+0xF6AB	U+4058	# <cjk>	[2000]
+0xF6AC	U+779A	# <cjk>	[2000]
+0xF6AD	U+779F	# <cjk>	[2000]
+0xF6AE	U+77A2	# <cjk>	[2000]
+0xF6AF	U+77A4	# <cjk>	[2000]
+0xF6B0	U+77A9	# <cjk>	[2000]
+0xF6B1	U+77DE	# <cjk>	[2000]
+0xF6B2	U+77DF	# <cjk>	[2000]
+0xF6B3	U+77E4	# <cjk>	[2000]
+0xF6B4	U+77E6	# <cjk>	[2000]
+0xF6B5	U+77EA	# <cjk>	[2000]
+0xF6B6	U+77EC	# <cjk>	[2000]
+0xF6B7	U+4093	# <cjk>	[2000]
+0xF6B8	U+77F0	# <cjk>	[2000]
+0xF6B9	U+77F4	# <cjk>	[2000]
+0xF6BA	U+77FB	# <cjk>	[2000]
+0xF6BB	U+2542E	# <cjk>	[2000]	[Unicode3.1]
+0xF6BC	U+7805	# <cjk>	[2000]
+0xF6BD	U+7806	# <cjk>	[2000]
+0xF6BE	U+7809	# <cjk>	[2000]
+0xF6BF	U+780D	# <cjk>	[2000]
+0xF6C0	U+7819	# <cjk>	[2000]
+0xF6C1	U+7821	# <cjk>	[2000]
+0xF6C2	U+782C	# <cjk>	[2000]
+0xF6C3	U+7847	# <cjk>	[2000]
+0xF6C4	U+7864	# <cjk>	[2000]
+0xF6C5	U+786A	# <cjk>	[2000]
+0xF6C6	U+254D9	# <cjk>	[2000]	[Unicode3.1]
+0xF6C7	U+788A	# <cjk>	[2000]
+0xF6C8	U+7894	# <cjk>	[2000]
+0xF6C9	U+78A4	# <cjk>	[2000]
+0xF6CA	U+789D	# <cjk>	[2000]
+0xF6CB	U+789E	# <cjk>	[2000]
+0xF6CC	U+789F	# <cjk>	[2000]
+0xF6CD	U+78BB	# <cjk>	[2000]
+0xF6CE	U+78C8	# <cjk>	[2000]
+0xF6CF	U+78CC	# <cjk>	[2000]
+0xF6D0	U+78CE	# <cjk>	[2000]
+0xF6D1	U+78D5	# <cjk>	[2000]
+0xF6D2	U+78E0	# <cjk>	[2000]
+0xF6D3	U+78E1	# <cjk>	[2000]
+0xF6D4	U+78E6	# <cjk>	[2000]
+0xF6D5	U+78F9	# <cjk>	[2000]
+0xF6D6	U+78FA	# <cjk>	[2000]
+0xF6D7	U+78FB	# <cjk>	[2000]
+0xF6D8	U+78FE	# <cjk>	[2000]
+0xF6D9	U+255A7	# <cjk>	[2000]	[Unicode3.1]
+0xF6DA	U+7910	# <cjk>	[2000]
+0xF6DB	U+791B	# <cjk>	[2000]
+0xF6DC	U+7930	# <cjk>	[2000]
+0xF6DD	U+7925	# <cjk>	[2000]
+0xF6DE	U+793B	# <cjk>	[2000]
+0xF6DF	U+794A	# <cjk>	[2000]
+0xF6E0	U+7958	# <cjk>	[2000]
+0xF6E1	U+795B	# <cjk>	[2000]
+0xF6E2	U+4105	# <cjk>	[2000]
+0xF6E3	U+7967	# <cjk>	[2000]
+0xF6E4	U+7972	# <cjk>	[2000]
+0xF6E5	U+7994	# <cjk>	[2000]
+0xF6E6	U+7995	# <cjk>	[2000]
+0xF6E7	U+7996	# <cjk>	[2000]
+0xF6E8	U+799B	# <cjk>	[2000]
+0xF6E9	U+79A1	# <cjk>	[2000]
+0xF6EA	U+79A9	# <cjk>	[2000]
+0xF6EB	U+79B4	# <cjk>	[2000]
+0xF6EC	U+79BB	# <cjk>	[2000]
+0xF6ED	U+79C2	# <cjk>	[2000]
+0xF6EE	U+79C7	# <cjk>	[2000]
+0xF6EF	U+79CC	# <cjk>	[2000]
+0xF6F0	U+79CD	# <cjk>	[2000]
+0xF6F1	U+79D6	# <cjk>	[2000]
+0xF6F2	U+4148	# <cjk>	[2000]
+0xF6F3	U+257A9	# <cjk>	[2000]	[Unicode3.1]
+0xF6F4	U+257B4	# <cjk>	[2000]	[Unicode3.1]
+0xF6F5	U+414F	# <cjk>	[2000]
+0xF6F6	U+7A0A	# <cjk>	[2000]
+0xF6F7	U+7A11	# <cjk>	[2000]
+0xF6F8	U+7A15	# <cjk>	[2000]
+0xF6F9	U+7A1B	# <cjk>	[2000]
+0xF6FA	U+7A1E	# <cjk>	[2000]
+0xF6FB	U+4163	# <cjk>	[2000]
+0xF6FC	U+7A2D	# <cjk>	[2000]
+0xF740	U+7A38	# <cjk>	[2000]
+0xF741	U+7A47	# <cjk>	[2000]
+0xF742	U+7A4C	# <cjk>	[2000]
+0xF743	U+7A56	# <cjk>	[2000]
+0xF744	U+7A59	# <cjk>	[2000]
+0xF745	U+7A5C	# <cjk>	[2000]
+0xF746	U+7A5F	# <cjk>	[2000]
+0xF747	U+7A60	# <cjk>	[2000]
+0xF748	U+7A67	# <cjk>	[2000]
+0xF749	U+7A6A	# <cjk>	[2000]
+0xF74A	U+7A75	# <cjk>	[2000]
+0xF74B	U+7A78	# <cjk>	[2000]
+0xF74C	U+7A82	# <cjk>	[2000]
+0xF74D	U+7A8A	# <cjk>	[2000]
+0xF74E	U+7A90	# <cjk>	[2000]
+0xF74F	U+7AA3	# <cjk>	[2000]
+0xF750	U+7AAC	# <cjk>	[2000]
+0xF751	U+259D4	# <cjk>	[2000]	[Unicode3.1]
+0xF752	U+41B4	# <cjk>	[2000]
+0xF753	U+7AB9	# <cjk>	[2000]
+0xF754	U+7ABC	# <cjk>	[2000]
+0xF755	U+7ABE	# <cjk>	[2000]
+0xF756	U+41BF	# <cjk>	[2000]
+0xF757	U+7ACC	# <cjk>	[2000]
+0xF758	U+7AD1	# <cjk>	[2000]
+0xF759	U+7AE7	# <cjk>	[2000]
+0xF75A	U+7AE8	# <cjk>	[2000]
+0xF75B	U+7AF4	# <cjk>	[2000]
+0xF75C	U+25AE4	# <cjk>	[2000]	[Unicode3.1]
+0xF75D	U+25AE3	# <cjk>	[2000]	[Unicode3.1]
+0xF75E	U+7B07	# <cjk>	[2000]
+0xF75F	U+25AF1	# <cjk>	[2000]	[Unicode3.1]
+0xF760	U+7B3D	# <cjk>	[2000]
+0xF761	U+7B27	# <cjk>	[2000]
+0xF762	U+7B2A	# <cjk>	[2000]
+0xF763	U+7B2E	# <cjk>	[2000]
+0xF764	U+7B2F	# <cjk>	[2000]
+0xF765	U+7B31	# <cjk>	[2000]
+0xF766	U+41E6	# <cjk>	[2000]
+0xF767	U+41F3	# <cjk>	[2000]
+0xF768	U+7B7F	# <cjk>	[2000]
+0xF769	U+7B41	# <cjk>	[2000]
+0xF76A	U+41EE	# <cjk>	[2000]
+0xF76B	U+7B55	# <cjk>	[2000]
+0xF76C	U+7B79	# <cjk>	[2000]
+0xF76D	U+7B64	# <cjk>	[2000]
+0xF76E	U+7B66	# <cjk>	[2000]
+0xF76F	U+7B69	# <cjk>	[2000]
+0xF770	U+7B73	# <cjk>	[2000]
+0xF771	U+25BB2	# <cjk>	[2000]	[Unicode3.1]
+0xF772	U+4207	# <cjk>	[2000]
+0xF773	U+7B90	# <cjk>	[2000]
+0xF774	U+7B91	# <cjk>	[2000]
+0xF775	U+7B9B	# <cjk>	[2000]
+0xF776	U+420E	# <cjk>	[2000]
+0xF777	U+7BAF	# <cjk>	[2000]
+0xF778	U+7BB5	# <cjk>	[2000]
+0xF779	U+7BBC	# <cjk>	[2000]
+0xF77A	U+7BC5	# <cjk>	[2000]
+0xF77B	U+7BCA	# <cjk>	[2000]
+0xF77C	U+25C4B	# <cjk>	[2000]	[Unicode3.1]
+0xF77D	U+25C64	# <cjk>	[2000]	[Unicode3.1]
+0xF77E	U+7BD4	# <cjk>	[2000]
+0xF780	U+7BD6	# <cjk>	[2000]
+0xF781	U+7BDA	# <cjk>	[2000]
+0xF782	U+7BEA	# <cjk>	[2000]
+0xF783	U+7BF0	# <cjk>	[2000]
+0xF784	U+7C03	# <cjk>	[2000]
+0xF785	U+7C0B	# <cjk>	[2000]
+0xF786	U+7C0E	# <cjk>	[2000]
+0xF787	U+7C0F	# <cjk>	[2000]
+0xF788	U+7C26	# <cjk>	[2000]
+0xF789	U+7C45	# <cjk>	[2000]
+0xF78A	U+7C4A	# <cjk>	[2000]
+0xF78B	U+7C51	# <cjk>	[2000]
+0xF78C	U+7C57	# <cjk>	[2000]
+0xF78D	U+7C5E	# <cjk>	[2000]
+0xF78E	U+7C61	# <cjk>	[2000]
+0xF78F	U+7C69	# <cjk>	[2000]
+0xF790	U+7C6E	# <cjk>	[2000]
+0xF791	U+7C6F	# <cjk>	[2000]
+0xF792	U+7C70	# <cjk>	[2000]
+0xF793	U+25E2E	# <cjk>	[2000]	[Unicode3.1]
+0xF794	U+25E56	# <cjk>	[2000]	[Unicode3.1]
+0xF795	U+25E65	# <cjk>	[2000]	[Unicode3.1]
+0xF796	U+7CA6	# <cjk>	[2000]
+0xF797	U+25E62	# <cjk>	[2000]	[Unicode3.1]
+0xF798	U+7CB6	# <cjk>	[2000]
+0xF799	U+7CB7	# <cjk>	[2000]
+0xF79A	U+7CBF	# <cjk>	[2000]
+0xF79B	U+25ED8	# <cjk>	[2000]	[Unicode3.1]
+0xF79C	U+7CC4	# <cjk>	[2000]
+0xF79D	U+25EC2	# <cjk>	[2000]	[Unicode3.1]
+0xF79E	U+7CC8	# <cjk>	[2000]
+0xF79F	U+7CCD	# <cjk>	[2000]
+0xF7A0	U+25EE8	# <cjk>	[2000]	[Unicode3.1]
+0xF7A1	U+7CD7	# <cjk>	[2000]
+0xF7A2	U+25F23	# <cjk>	[2000]	[Unicode3.1]
+0xF7A3	U+7CE6	# <cjk>	[2000]
+0xF7A4	U+7CEB	# <cjk>	[2000]
+0xF7A5	U+25F5C	# <cjk>	[2000]	[Unicode3.1]
+0xF7A6	U+7CF5	# <cjk>	[2000]
+0xF7A7	U+7D03	# <cjk>	[2000]
+0xF7A8	U+7D09	# <cjk>	[2000]
+0xF7A9	U+42C6	# <cjk>	[2000]
+0xF7AA	U+7D12	# <cjk>	[2000]
+0xF7AB	U+7D1E	# <cjk>	[2000]
+0xF7AC	U+25FE0	# <cjk>	[2000]	[Unicode3.1]
+0xF7AD	U+25FD4	# <cjk>	[2000]	[Unicode3.1]
+0xF7AE	U+7D3D	# <cjk>	[2000]
+0xF7AF	U+7D3E	# <cjk>	[2000]
+0xF7B0	U+7D40	# <cjk>	[2000]
+0xF7B1	U+7D47	# <cjk>	[2000]
+0xF7B2	U+2600C	# <cjk>	[2000]	[Unicode3.1]
+0xF7B3	U+25FFB	# <cjk>	[2000]	[Unicode3.1]
+0xF7B4	U+42D6	# <cjk>	[2000]
+0xF7B5	U+7D59	# <cjk>	[2000]
+0xF7B6	U+7D5A	# <cjk>	[2000]
+0xF7B7	U+7D6A	# <cjk>	[2000]
+0xF7B8	U+7D70	# <cjk>	[2000]
+0xF7B9	U+42DD	# <cjk>	[2000]
+0xF7BA	U+7D7F	# <cjk>	[2000]
+0xF7BB	U+26017	# <cjk>	[2000]	[Unicode3.1]
+0xF7BC	U+7D86	# <cjk>	[2000]
+0xF7BD	U+7D88	# <cjk>	[2000]
+0xF7BE	U+7D8C	# <cjk>	[2000]
+0xF7BF	U+7D97	# <cjk>	[2000]
+0xF7C0	U+26060	# <cjk>	[2000]	[Unicode3.1]
+0xF7C1	U+7D9D	# <cjk>	[2000]
+0xF7C2	U+7DA7	# <cjk>	[2000]
+0xF7C3	U+7DAA	# <cjk>	[2000]
+0xF7C4	U+7DB6	# <cjk>	[2000]
+0xF7C5	U+7DB7	# <cjk>	[2000]
+0xF7C6	U+7DC0	# <cjk>	[2000]
+0xF7C7	U+7DD7	# <cjk>	[2000]
+0xF7C8	U+7DD9	# <cjk>	[2000]
+0xF7C9	U+7DE6	# <cjk>	[2000]
+0xF7CA	U+7DF1	# <cjk>	[2000]
+0xF7CB	U+7DF9	# <cjk>	[2000]
+0xF7CC	U+4302	# <cjk>	[2000]
+0xF7CD	U+260ED	# <cjk>	[2000]	[Unicode3.1]
+0xF7CE	U+FA58	# CJK COMPATIBILITY IDEOGRAPH-FA58	[2000]	[Unicode3.2]
+0xF7CF	U+7E10	# <cjk>	[2000]
+0xF7D0	U+7E17	# <cjk>	[2000]
+0xF7D1	U+7E1D	# <cjk>	[2000]
+0xF7D2	U+7E20	# <cjk>	[2000]
+0xF7D3	U+7E27	# <cjk>	[2000]
+0xF7D4	U+7E2C	# <cjk>	[2000]
+0xF7D5	U+7E45	# <cjk>	[2000]
+0xF7D6	U+7E73	# <cjk>	[2000]
+0xF7D7	U+7E75	# <cjk>	[2000]
+0xF7D8	U+7E7E	# <cjk>	[2000]
+0xF7D9	U+7E86	# <cjk>	[2000]
+0xF7DA	U+7E87	# <cjk>	[2000]
+0xF7DB	U+432B	# <cjk>	[2000]
+0xF7DC	U+7E91	# <cjk>	[2000]
+0xF7DD	U+7E98	# <cjk>	[2000]
+0xF7DE	U+7E9A	# <cjk>	[2000]
+0xF7DF	U+4343	# <cjk>	[2000]
+0xF7E0	U+7F3C	# <cjk>	[2000]
+0xF7E1	U+7F3B	# <cjk>	[2000]
+0xF7E2	U+7F3E	# <cjk>	[2000]
+0xF7E3	U+7F43	# <cjk>	[2000]
+0xF7E4	U+7F44	# <cjk>	[2000]
+0xF7E5	U+7F4F	# <cjk>	[2000]
+0xF7E6	U+34C1	# <cjk>	[2000]
+0xF7E7	U+26270	# <cjk>	[2000]	[Unicode3.1]
+0xF7E8	U+7F52	# <cjk>	[2000]
+0xF7E9	U+26286	# <cjk>	[2000]	[Unicode3.1]
+0xF7EA	U+7F61	# <cjk>	[2000]
+0xF7EB	U+7F63	# <cjk>	[2000]
+0xF7EC	U+7F64	# <cjk>	[2000]
+0xF7ED	U+7F6D	# <cjk>	[2000]
+0xF7EE	U+7F7D	# <cjk>	[2000]
+0xF7EF	U+7F7E	# <cjk>	[2000]
+0xF7F0	U+2634C	# <cjk>	[2000]	[Unicode3.1]
+0xF7F1	U+7F90	# <cjk>	[2000]
+0xF7F2	U+517B	# <cjk>	[2000]
+0xF7F3	U+23D0E	# <cjk>	[2000]	[Unicode3.1]
+0xF7F4	U+7F96	# <cjk>	[2000]
+0xF7F5	U+7F9C	# <cjk>	[2000]
+0xF7F6	U+7FAD	# <cjk>	[2000]
+0xF7F7	U+26402	# <cjk>	[2000]	[Unicode3.1]
+0xF7F8	U+7FC3	# <cjk>	[2000]
+0xF7F9	U+7FCF	# <cjk>	[2000]
+0xF7FA	U+7FE3	# <cjk>	[2000]
+0xF7FB	U+7FE5	# <cjk>	[2000]
+0xF7FC	U+7FEF	# <cjk>	[2000]
+0xF840	U+7FF2	# <cjk>	[2000]
+0xF841	U+8002	# <cjk>	[2000]
+0xF842	U+800A	# <cjk>	[2000]
+0xF843	U+8008	# <cjk>	[2000]
+0xF844	U+800E	# <cjk>	[2000]
+0xF845	U+8011	# <cjk>	[2000]
+0xF846	U+8016	# <cjk>	[2000]
+0xF847	U+8024	# <cjk>	[2000]
+0xF848	U+802C	# <cjk>	[2000]
+0xF849	U+8030	# <cjk>	[2000]
+0xF84A	U+8043	# <cjk>	[2000]
+0xF84B	U+8066	# <cjk>	[2000]
+0xF84C	U+8071	# <cjk>	[2000]
+0xF84D	U+8075	# <cjk>	[2000]
+0xF84E	U+807B	# <cjk>	[2000]
+0xF84F	U+8099	# <cjk>	[2000]
+0xF850	U+809C	# <cjk>	[2000]
+0xF851	U+80A4	# <cjk>	[2000]
+0xF852	U+80A7	# <cjk>	[2000]
+0xF853	U+80B8	# <cjk>	[2000]
+0xF854	U+2667E	# <cjk>	[2000]	[Unicode3.1]
+0xF855	U+80C5	# <cjk>	[2000]
+0xF856	U+80D5	# <cjk>	[2000]
+0xF857	U+80D8	# <cjk>	[2000]
+0xF858	U+80E6	# <cjk>	[2000]
+0xF859	U+266B0	# <cjk>	[2000]	[Unicode3.1]
+0xF85A	U+810D	# <cjk>	[2000]
+0xF85B	U+80F5	# <cjk>	[2000]
+0xF85C	U+80FB	# <cjk>	[2000]
+0xF85D	U+43EE	# <cjk>	[2000]
+0xF85E	U+8135	# <cjk>	[2000]
+0xF85F	U+8116	# <cjk>	[2000]
+0xF860	U+811E	# <cjk>	[2000]
+0xF861	U+43F0	# <cjk>	[2000]
+0xF862	U+8124	# <cjk>	[2000]
+0xF863	U+8127	# <cjk>	[2000]
+0xF864	U+812C	# <cjk>	[2000]
+0xF865	U+2671D	# <cjk>	[2000]	[Unicode3.1]
+0xF866	U+813D	# <cjk>	[2000]
+0xF867	U+4408	# <cjk>	[2000]
+0xF868	U+8169	# <cjk>	[2000]
+0xF869	U+4417	# <cjk>	[2000]
+0xF86A	U+8181	# <cjk>	[2000]
+0xF86B	U+441C	# <cjk>	[2000]
+0xF86C	U+8184	# <cjk>	[2000]
+0xF86D	U+8185	# <cjk>	[2000]
+0xF86E	U+4422	# <cjk>	[2000]
+0xF86F	U+8198	# <cjk>	[2000]
+0xF870	U+81B2	# <cjk>	[2000]
+0xF871	U+81C1	# <cjk>	[2000]
+0xF872	U+81C3	# <cjk>	[2000]
+0xF873	U+81D6	# <cjk>	[2000]
+0xF874	U+81DB	# <cjk>	[2000]
+0xF875	U+268DD	# <cjk>	[2000]	[Unicode3.1]
+0xF876	U+81E4	# <cjk>	[2000]
+0xF877	U+268EA	# <cjk>	[2000]	[Unicode3.1]
+0xF878	U+81EC	# <cjk>	[2000]
+0xF879	U+26951	# <cjk>	[2000]	[Unicode3.1]
+0xF87A	U+81FD	# <cjk>	[2000]
+0xF87B	U+81FF	# <cjk>	[2000]
+0xF87C	U+2696F	# <cjk>	[2000]	[Unicode3.1]
+0xF87D	U+8204	# <cjk>	[2000]
+0xF87E	U+269DD	# <cjk>	[2000]	[Unicode3.1]
+0xF880	U+8219	# <cjk>	[2000]
+0xF881	U+8221	# <cjk>	[2000]
+0xF882	U+8222	# <cjk>	[2000]
+0xF883	U+26A1E	# <cjk>	[2000]	[Unicode3.1]
+0xF884	U+8232	# <cjk>	[2000]
+0xF885	U+8234	# <cjk>	[2000]
+0xF886	U+823C	# <cjk>	[2000]
+0xF887	U+8246	# <cjk>	[2000]
+0xF888	U+8249	# <cjk>	[2000]
+0xF889	U+8245	# <cjk>	[2000]
+0xF88A	U+26A58	# <cjk>	[2000]	[Unicode3.1]
+0xF88B	U+824B	# <cjk>	[2000]
+0xF88C	U+4476	# <cjk>	[2000]
+0xF88D	U+824F	# <cjk>	[2000]
+0xF88E	U+447A	# <cjk>	[2000]
+0xF88F	U+8257	# <cjk>	[2000]
+0xF890	U+26A8C	# <cjk>	[2000]	[Unicode3.1]
+0xF891	U+825C	# <cjk>	[2000]
+0xF892	U+8263	# <cjk>	[2000]
+0xF893	U+26AB7	# <cjk>	[2000]	[Unicode3.1]
+0xF894	U+FA5D	# CJK COMPATIBILITY IDEOGRAPH-FA5D	[2000]	[Unicode3.2]
+0xF895	U+FA5E	# CJK COMPATIBILITY IDEOGRAPH-FA5E	[2000]	[Unicode3.2]
+0xF896	U+8279	# <cjk>	[2000]
+0xF897	U+4491	# <cjk>	[2000]
+0xF898	U+827D	# <cjk>	[2000]
+0xF899	U+827F	# <cjk>	[2000]
+0xF89A	U+8283	# <cjk>	[2000]
+0xF89B	U+828A	# <cjk>	[2000]
+0xF89C	U+8293	# <cjk>	[2000]
+0xF89D	U+82A7	# <cjk>	[2000]
+0xF89E	U+82A8	# <cjk>	[2000]
+0xF89F	U+82B2	# <cjk>	[2000]
+0xF8A0	U+82B4	# <cjk>	[2000]
+0xF8A1	U+82BA	# <cjk>	[2000]
+0xF8A2	U+82BC	# <cjk>	[2000]
+0xF8A3	U+82E2	# <cjk>	[2000]
+0xF8A4	U+82E8	# <cjk>	[2000]
+0xF8A5	U+82F7	# <cjk>	[2000]
+0xF8A6	U+8307	# <cjk>	[2000]
+0xF8A7	U+8308	# <cjk>	[2000]
+0xF8A8	U+830C	# <cjk>	[2000]
+0xF8A9	U+8354	# <cjk>	[2000]
+0xF8AA	U+831B	# <cjk>	[2000]
+0xF8AB	U+831D	# <cjk>	[2000]
+0xF8AC	U+8330	# <cjk>	[2000]
+0xF8AD	U+833C	# <cjk>	[2000]
+0xF8AE	U+8344	# <cjk>	[2000]
+0xF8AF	U+8357	# <cjk>	[2000]
+0xF8B0	U+44BE	# <cjk>	[2000]
+0xF8B1	U+837F	# <cjk>	[2000]
+0xF8B2	U+44D4	# <cjk>	[2000]
+0xF8B3	U+44B3	# <cjk>	[2000]
+0xF8B4	U+838D	# <cjk>	[2000]
+0xF8B5	U+8394	# <cjk>	[2000]
+0xF8B6	U+8395	# <cjk>	[2000]
+0xF8B7	U+839B	# <cjk>	[2000]
+0xF8B8	U+839D	# <cjk>	[2000]
+0xF8B9	U+83C9	# <cjk>	[2000]
+0xF8BA	U+83D0	# <cjk>	[2000]
+0xF8BB	U+83D4	# <cjk>	[2000]
+0xF8BC	U+83DD	# <cjk>	[2000]
+0xF8BD	U+83E5	# <cjk>	[2000]
+0xF8BE	U+83F9	# <cjk>	[2000]
+0xF8BF	U+840F	# <cjk>	[2000]
+0xF8C0	U+8411	# <cjk>	[2000]
+0xF8C1	U+8415	# <cjk>	[2000]
+0xF8C2	U+26C73	# <cjk>	[2000]	[Unicode3.1]
+0xF8C3	U+8417	# <cjk>	[2000]
+0xF8C4	U+8439	# <cjk>	[2000]
+0xF8C5	U+844A	# <cjk>	[2000]
+0xF8C6	U+844F	# <cjk>	[2000]
+0xF8C7	U+8451	# <cjk>	[2000]
+0xF8C8	U+8452	# <cjk>	[2000]
+0xF8C9	U+8459	# <cjk>	[2000]
+0xF8CA	U+845A	# <cjk>	[2000]
+0xF8CB	U+845C	# <cjk>	[2000]
+0xF8CC	U+26CDD	# <cjk>	[2000]	[Unicode3.1]
+0xF8CD	U+8465	# <cjk>	[2000]
+0xF8CE	U+8476	# <cjk>	[2000]
+0xF8CF	U+8478	# <cjk>	[2000]
+0xF8D0	U+847C	# <cjk>	[2000]
+0xF8D1	U+8481	# <cjk>	[2000]
+0xF8D2	U+450D	# <cjk>	[2000]
+0xF8D3	U+84DC	# <cjk>	[2000]
+0xF8D4	U+8497	# <cjk>	[2000]
+0xF8D5	U+84A6	# <cjk>	[2000]
+0xF8D6	U+84BE	# <cjk>	[2000]
+0xF8D7	U+4508	# <cjk>	[2000]
+0xF8D8	U+84CE	# <cjk>	[2000]
+0xF8D9	U+84CF	# <cjk>	[2000]
+0xF8DA	U+84D3	# <cjk>	[2000]
+0xF8DB	U+26E65	# <cjk>	[2000]	[Unicode3.1]
+0xF8DC	U+84E7	# <cjk>	[2000]
+0xF8DD	U+84EA	# <cjk>	[2000]
+0xF8DE	U+84EF	# <cjk>	[2000]
+0xF8DF	U+84F0	# <cjk>	[2000]
+0xF8E0	U+84F1	# <cjk>	[2000]
+0xF8E1	U+84FA	# <cjk>	[2000]
+0xF8E2	U+84FD	# <cjk>	[2000]
+0xF8E3	U+850C	# <cjk>	[2000]
+0xF8E4	U+851B	# <cjk>	[2000]
+0xF8E5	U+8524	# <cjk>	[2000]
+0xF8E6	U+8525	# <cjk>	[2000]
+0xF8E7	U+852B	# <cjk>	[2000]
+0xF8E8	U+8534	# <cjk>	[2000]
+0xF8E9	U+854F	# <cjk>	[2000]
+0xF8EA	U+856F	# <cjk>	[2000]
+0xF8EB	U+4525	# <cjk>	[2000]
+0xF8EC	U+4543	# <cjk>	[2000]
+0xF8ED	U+853E	# <cjk>	[2000]
+0xF8EE	U+8551	# <cjk>	[2000]
+0xF8EF	U+8553	# <cjk>	[2000]
+0xF8F0	U+855E	# <cjk>	[2000]
+0xF8F1	U+8561	# <cjk>	[2000]
+0xF8F2	U+8562	# <cjk>	[2000]
+0xF8F3	U+26F94	# <cjk>	[2000]	[Unicode3.1]
+0xF8F4	U+857B	# <cjk>	[2000]
+0xF8F5	U+857D	# <cjk>	[2000]
+0xF8F6	U+857F	# <cjk>	[2000]
+0xF8F7	U+8581	# <cjk>	[2000]
+0xF8F8	U+8586	# <cjk>	[2000]
+0xF8F9	U+8593	# <cjk>	[2000]
+0xF8FA	U+859D	# <cjk>	[2000]
+0xF8FB	U+859F	# <cjk>	[2000]
+0xF8FC	U+26FF8	# <cjk>	[2000]	[Unicode3.1]
+0xF940	U+26FF6	# <cjk>	[2000]	[Unicode3.1]
+0xF941	U+26FF7	# <cjk>	[2000]	[Unicode3.1]
+0xF942	U+85B7	# <cjk>	[2000]
+0xF943	U+85BC	# <cjk>	[2000]
+0xF944	U+85C7	# <cjk>	[2000]
+0xF945	U+85CA	# <cjk>	[2000]
+0xF946	U+85D8	# <cjk>	[2000]
+0xF947	U+85D9	# <cjk>	[2000]
+0xF948	U+85DF	# <cjk>	[2000]
+0xF949	U+85E1	# <cjk>	[2000]
+0xF94A	U+85E6	# <cjk>	[2000]
+0xF94B	U+85F6	# <cjk>	[2000]
+0xF94C	U+8600	# <cjk>	[2000]
+0xF94D	U+8611	# <cjk>	[2000]
+0xF94E	U+861E	# <cjk>	[2000]
+0xF94F	U+8621	# <cjk>	[2000]
+0xF950	U+8624	# <cjk>	[2000]
+0xF951	U+8627	# <cjk>	[2000]
+0xF952	U+2710D	# <cjk>	[2000]	[Unicode3.1]
+0xF953	U+8639	# <cjk>	[2000]
+0xF954	U+863C	# <cjk>	[2000]
+0xF955	U+27139	# <cjk>	[2000]	[Unicode3.1]
+0xF956	U+8640	# <cjk>	[2000]
+0xF957	U+FA20	# CJK COMPATIBILITY IDEOGRAPH-FA20	[2000]
+0xF958	U+8653	# <cjk>	[2000]
+0xF959	U+8656	# <cjk>	[2000]
+0xF95A	U+866F	# <cjk>	[2000]
+0xF95B	U+8677	# <cjk>	[2000]
+0xF95C	U+867A	# <cjk>	[2000]
+0xF95D	U+8687	# <cjk>	[2000]
+0xF95E	U+8689	# <cjk>	[2000]
+0xF95F	U+868D	# <cjk>	[2000]
+0xF960	U+8691	# <cjk>	[2000]
+0xF961	U+869C	# <cjk>	[2000]
+0xF962	U+869D	# <cjk>	[2000]
+0xF963	U+86A8	# <cjk>	[2000]
+0xF964	U+FA21	# CJK COMPATIBILITY IDEOGRAPH-FA21	[2000]
+0xF965	U+86B1	# <cjk>	[2000]
+0xF966	U+86B3	# <cjk>	[2000]
+0xF967	U+86C1	# <cjk>	[2000]
+0xF968	U+86C3	# <cjk>	[2000]
+0xF969	U+86D1	# <cjk>	[2000]
+0xF96A	U+86D5	# <cjk>	[2000]
+0xF96B	U+86D7	# <cjk>	[2000]
+0xF96C	U+86E3	# <cjk>	[2000]
+0xF96D	U+86E6	# <cjk>	[2000]
+0xF96E	U+45B8	# <cjk>	[2000]
+0xF96F	U+8705	# <cjk>	[2000]
+0xF970	U+8707	# <cjk>	[2000]
+0xF971	U+870E	# <cjk>	[2000]
+0xF972	U+8710	# <cjk>	[2000]
+0xF973	U+8713	# <cjk>	[2000]
+0xF974	U+8719	# <cjk>	[2000]
+0xF975	U+871F	# <cjk>	[2000]
+0xF976	U+8721	# <cjk>	[2000]
+0xF977	U+8723	# <cjk>	[2000]
+0xF978	U+8731	# <cjk>	[2000]
+0xF979	U+873A	# <cjk>	[2000]
+0xF97A	U+873E	# <cjk>	[2000]
+0xF97B	U+8740	# <cjk>	[2000]
+0xF97C	U+8743	# <cjk>	[2000]
+0xF97D	U+8751	# <cjk>	[2000]
+0xF97E	U+8758	# <cjk>	[2000]
+0xF980	U+8764	# <cjk>	[2000]
+0xF981	U+8765	# <cjk>	[2000]
+0xF982	U+8772	# <cjk>	[2000]
+0xF983	U+877C	# <cjk>	[2000]
+0xF984	U+273DB	# <cjk>	[2000]	[Unicode3.1]
+0xF985	U+273DA	# <cjk>	[2000]	[Unicode3.1]
+0xF986	U+87A7	# <cjk>	[2000]
+0xF987	U+8789	# <cjk>	[2000]
+0xF988	U+878B	# <cjk>	[2000]
+0xF989	U+8793	# <cjk>	[2000]
+0xF98A	U+87A0	# <cjk>	[2000]
+0xF98B	U+273FE	# <cjk>	[2000]	[Unicode3.1]
+0xF98C	U+45E5	# <cjk>	[2000]
+0xF98D	U+87BE	# <cjk>	[2000]
+0xF98E	U+27410	# <cjk>	[2000]	[Unicode3.1]
+0xF98F	U+87C1	# <cjk>	[2000]
+0xF990	U+87CE	# <cjk>	[2000]
+0xF991	U+87F5	# <cjk>	[2000]
+0xF992	U+87DF	# <cjk>	[2000]
+0xF993	U+27449	# <cjk>	[2000]	[Unicode3.1]
+0xF994	U+87E3	# <cjk>	[2000]
+0xF995	U+87E5	# <cjk>	[2000]
+0xF996	U+87E6	# <cjk>	[2000]
+0xF997	U+87EA	# <cjk>	[2000]
+0xF998	U+87EB	# <cjk>	[2000]
+0xF999	U+87ED	# <cjk>	[2000]
+0xF99A	U+8801	# <cjk>	[2000]
+0xF99B	U+8803	# <cjk>	[2000]
+0xF99C	U+880B	# <cjk>	[2000]
+0xF99D	U+8813	# <cjk>	[2000]
+0xF99E	U+8828	# <cjk>	[2000]
+0xF99F	U+882E	# <cjk>	[2000]
+0xF9A0	U+8832	# <cjk>	[2000]
+0xF9A1	U+883C	# <cjk>	[2000]
+0xF9A2	U+460F	# <cjk>	[2000]
+0xF9A3	U+884A	# <cjk>	[2000]
+0xF9A4	U+8858	# <cjk>	[2000]
+0xF9A5	U+885F	# <cjk>	[2000]
+0xF9A6	U+8864	# <cjk>	[2000]
+0xF9A7	U+27615	# <cjk>	[2000]	[Unicode3.1]
+0xF9A8	U+27614	# <cjk>	[2000]	[Unicode3.1]
+0xF9A9	U+8869	# <cjk>	[2000]
+0xF9AA	U+27631	# <cjk>	[2000]	[Unicode3.1]
+0xF9AB	U+886F	# <cjk>	[2000]
+0xF9AC	U+88A0	# <cjk>	[2000]
+0xF9AD	U+88BC	# <cjk>	[2000]
+0xF9AE	U+88BD	# <cjk>	[2000]
+0xF9AF	U+88BE	# <cjk>	[2000]
+0xF9B0	U+88C0	# <cjk>	[2000]
+0xF9B1	U+88D2	# <cjk>	[2000]
+0xF9B2	U+27693	# <cjk>	[2000]	[Unicode3.1]
+0xF9B3	U+88D1	# <cjk>	[2000]
+0xF9B4	U+88D3	# <cjk>	[2000]
+0xF9B5	U+88DB	# <cjk>	[2000]
+0xF9B6	U+88F0	# <cjk>	[2000]
+0xF9B7	U+88F1	# <cjk>	[2000]
+0xF9B8	U+4641	# <cjk>	[2000]
+0xF9B9	U+8901	# <cjk>	[2000]
+0xF9BA	U+2770E	# <cjk>	[2000]	[Unicode3.1]
+0xF9BB	U+8937	# <cjk>	[2000]
+0xF9BC	U+27723	# <cjk>	[2000]	[Unicode3.1]
+0xF9BD	U+8942	# <cjk>	[2000]
+0xF9BE	U+8945	# <cjk>	[2000]
+0xF9BF	U+8949	# <cjk>	[2000]
+0xF9C0	U+27752	# <cjk>	[2000]	[Unicode3.1]
+0xF9C1	U+4665	# <cjk>	[2000]
+0xF9C2	U+8962	# <cjk>	[2000]
+0xF9C3	U+8980	# <cjk>	[2000]
+0xF9C4	U+8989	# <cjk>	[2000]
+0xF9C5	U+8990	# <cjk>	[2000]
+0xF9C6	U+899F	# <cjk>	[2000]
+0xF9C7	U+89B0	# <cjk>	[2000]
+0xF9C8	U+89B7	# <cjk>	[2000]
+0xF9C9	U+89D6	# <cjk>	[2000]
+0xF9CA	U+89D8	# <cjk>	[2000]
+0xF9CB	U+89EB	# <cjk>	[2000]
+0xF9CC	U+46A1	# <cjk>	[2000]
+0xF9CD	U+89F1	# <cjk>	[2000]
+0xF9CE	U+89F3	# <cjk>	[2000]
+0xF9CF	U+89FD	# <cjk>	[2000]
+0xF9D0	U+89FF	# <cjk>	[2000]
+0xF9D1	U+46AF	# <cjk>	[2000]
+0xF9D2	U+8A11	# <cjk>	[2000]
+0xF9D3	U+8A14	# <cjk>	[2000]
+0xF9D4	U+27985	# <cjk>	[2000]	[Unicode3.1]
+0xF9D5	U+8A21	# <cjk>	[2000]
+0xF9D6	U+8A35	# <cjk>	[2000]
+0xF9D7	U+8A3E	# <cjk>	[2000]
+0xF9D8	U+8A45	# <cjk>	[2000]
+0xF9D9	U+8A4D	# <cjk>	[2000]
+0xF9DA	U+8A58	# <cjk>	[2000]
+0xF9DB	U+8AAE	# <cjk>	[2000]
+0xF9DC	U+8A90	# <cjk>	[2000]
+0xF9DD	U+8AB7	# <cjk>	[2000]
+0xF9DE	U+8ABE	# <cjk>	[2000]
+0xF9DF	U+8AD7	# <cjk>	[2000]
+0xF9E0	U+8AFC	# <cjk>	[2000]
+0xF9E1	U+27A84	# <cjk>	[2000]	[Unicode3.1]
+0xF9E2	U+8B0A	# <cjk>	[2000]
+0xF9E3	U+8B05	# <cjk>	[2000]
+0xF9E4	U+8B0D	# <cjk>	[2000]
+0xF9E5	U+8B1C	# <cjk>	[2000]
+0xF9E6	U+8B1F	# <cjk>	[2000]
+0xF9E7	U+8B2D	# <cjk>	[2000]
+0xF9E8	U+8B43	# <cjk>	[2000]
+0xF9E9	U+470C	# <cjk>	[2000]
+0xF9EA	U+8B51	# <cjk>	[2000]
+0xF9EB	U+8B5E	# <cjk>	[2000]
+0xF9EC	U+8B76	# <cjk>	[2000]
+0xF9ED	U+8B7F	# <cjk>	[2000]
+0xF9EE	U+8B81	# <cjk>	[2000]
+0xF9EF	U+8B8B	# <cjk>	[2000]
+0xF9F0	U+8B94	# <cjk>	[2000]
+0xF9F1	U+8B95	# <cjk>	[2000]
+0xF9F2	U+8B9C	# <cjk>	[2000]
+0xF9F3	U+8B9E	# <cjk>	[2000]
+0xF9F4	U+8C39	# <cjk>	[2000]
+0xF9F5	U+27BB3	# <cjk>	[2000]	[Unicode3.1]
+0xF9F6	U+8C3D	# <cjk>	[2000]
+0xF9F7	U+27BBE	# <cjk>	[2000]	[Unicode3.1]
+0xF9F8	U+27BC7	# <cjk>	[2000]	[Unicode3.1]
+0xF9F9	U+8C45	# <cjk>	[2000]
+0xF9FA	U+8C47	# <cjk>	[2000]
+0xF9FB	U+8C4F	# <cjk>	[2000]
+0xF9FC	U+8C54	# <cjk>	[2000]
+0xFA40	U+8C57	# <cjk>	[2000]
+0xFA41	U+8C69	# <cjk>	[2000]
+0xFA42	U+8C6D	# <cjk>	[2000]
+0xFA43	U+8C73	# <cjk>	[2000]
+0xFA44	U+27CB8	# <cjk>	[2000]	[Unicode3.1]
+0xFA45	U+8C93	# <cjk>	[2000]
+0xFA46	U+8C92	# <cjk>	[2000]
+0xFA47	U+8C99	# <cjk>	[2000]
+0xFA48	U+4764	# <cjk>	[2000]
+0xFA49	U+8C9B	# <cjk>	[2000]
+0xFA4A	U+8CA4	# <cjk>	[2000]
+0xFA4B	U+8CD6	# <cjk>	[2000]
+0xFA4C	U+8CD5	# <cjk>	[2000]
+0xFA4D	U+8CD9	# <cjk>	[2000]
+0xFA4E	U+27DA0	# <cjk>	[2000]	[Unicode3.1]
+0xFA4F	U+8CF0	# <cjk>	[2000]
+0xFA50	U+8CF1	# <cjk>	[2000]
+0xFA51	U+27E10	# <cjk>	[2000]	[Unicode3.1]
+0xFA52	U+8D09	# <cjk>	[2000]
+0xFA53	U+8D0E	# <cjk>	[2000]
+0xFA54	U+8D6C	# <cjk>	[2000]
+0xFA55	U+8D84	# <cjk>	[2000]
+0xFA56	U+8D95	# <cjk>	[2000]
+0xFA57	U+8DA6	# <cjk>	[2000]
+0xFA58	U+27FB7	# <cjk>	[2000]	[Unicode3.1]
+0xFA59	U+8DC6	# <cjk>	[2000]
+0xFA5A	U+8DC8	# <cjk>	[2000]
+0xFA5B	U+8DD9	# <cjk>	[2000]
+0xFA5C	U+8DEC	# <cjk>	[2000]
+0xFA5D	U+8E0C	# <cjk>	[2000]
+0xFA5E	U+47FD	# <cjk>	[2000]
+0xFA5F	U+8DFD	# <cjk>	[2000]
+0xFA60	U+8E06	# <cjk>	[2000]
+0xFA61	U+2808A	# <cjk>	[2000]	[Unicode3.1]
+0xFA62	U+8E14	# <cjk>	[2000]
+0xFA63	U+8E16	# <cjk>	[2000]
+0xFA64	U+8E21	# <cjk>	[2000]
+0xFA65	U+8E22	# <cjk>	[2000]
+0xFA66	U+8E27	# <cjk>	[2000]
+0xFA67	U+280BB	# <cjk>	[2000]	[Unicode3.1]
+0xFA68	U+4816	# <cjk>	[2000]
+0xFA69	U+8E36	# <cjk>	[2000]
+0xFA6A	U+8E39	# <cjk>	[2000]
+0xFA6B	U+8E4B	# <cjk>	[2000]
+0xFA6C	U+8E54	# <cjk>	[2000]
+0xFA6D	U+8E62	# <cjk>	[2000]
+0xFA6E	U+8E6C	# <cjk>	[2000]
+0xFA6F	U+8E6D	# <cjk>	[2000]
+0xFA70	U+8E6F	# <cjk>	[2000]
+0xFA71	U+8E98	# <cjk>	[2000]
+0xFA72	U+8E9E	# <cjk>	[2000]
+0xFA73	U+8EAE	# <cjk>	[2000]
+0xFA74	U+8EB3	# <cjk>	[2000]
+0xFA75	U+8EB5	# <cjk>	[2000]
+0xFA76	U+8EB6	# <cjk>	[2000]
+0xFA77	U+8EBB	# <cjk>	[2000]
+0xFA78	U+28282	# <cjk>	[2000]	[Unicode3.1]
+0xFA79	U+8ED1	# <cjk>	[2000]
+0xFA7A	U+8ED4	# <cjk>	[2000]
+0xFA7B	U+484E	# <cjk>	[2000]
+0xFA7C	U+8EF9	# <cjk>	[2000]
+0xFA7D	U+282F3	# <cjk>	[2000]	[Unicode3.1]
+0xFA7E	U+8F00	# <cjk>	[2000]
+0xFA80	U+8F08	# <cjk>	[2000]
+0xFA81	U+8F17	# <cjk>	[2000]
+0xFA82	U+8F2B	# <cjk>	[2000]
+0xFA83	U+8F40	# <cjk>	[2000]
+0xFA84	U+8F4A	# <cjk>	[2000]
+0xFA85	U+8F58	# <cjk>	[2000]
+0xFA86	U+2840C	# <cjk>	[2000]	[Unicode3.1]
+0xFA87	U+8FA4	# <cjk>	[2000]
+0xFA88	U+8FB4	# <cjk>	[2000]
+0xFA89	U+FA66	# CJK COMPATIBILITY IDEOGRAPH-FA66	[2000]	[Unicode3.2]
+0xFA8A	U+8FB6	# <cjk>	[2000]
+0xFA8B	U+28455	# <cjk>	[2000]	[Unicode3.1]
+0xFA8C	U+8FC1	# <cjk>	[2000]
+0xFA8D	U+8FC6	# <cjk>	[2000]
+0xFA8E	U+FA24	# CJK COMPATIBILITY IDEOGRAPH-FA24	[2000]
+0xFA8F	U+8FCA	# <cjk>	[2000]
+0xFA90	U+8FCD	# <cjk>	[2000]
+0xFA91	U+8FD3	# <cjk>	[2000]
+0xFA92	U+8FD5	# <cjk>	[2000]
+0xFA93	U+8FE0	# <cjk>	[2000]
+0xFA94	U+8FF1	# <cjk>	[2000]
+0xFA95	U+8FF5	# <cjk>	[2000]
+0xFA96	U+8FFB	# <cjk>	[2000]
+0xFA97	U+9002	# <cjk>	[2000]
+0xFA98	U+900C	# <cjk>	[2000]
+0xFA99	U+9037	# <cjk>	[2000]
+0xFA9A	U+2856B	# <cjk>	[2000]	[Unicode3.1]
+0xFA9B	U+9043	# <cjk>	[2000]
+0xFA9C	U+9044	# <cjk>	[2000]
+0xFA9D	U+905D	# <cjk>	[2000]
+0xFA9E	U+285C8	# <cjk>	[2000]	[Unicode3.1]
+0xFA9F	U+285C9	# <cjk>	[2000]	[Unicode3.1]
+0xFAA0	U+9085	# <cjk>	[2000]
+0xFAA1	U+908C	# <cjk>	[2000]
+0xFAA2	U+9090	# <cjk>	[2000]
+0xFAA3	U+961D	# <cjk>	[2000]
+0xFAA4	U+90A1	# <cjk>	[2000]
+0xFAA5	U+48B5	# <cjk>	[2000]
+0xFAA6	U+90B0	# <cjk>	[2000]
+0xFAA7	U+90B6	# <cjk>	[2000]
+0xFAA8	U+90C3	# <cjk>	[2000]
+0xFAA9	U+90C8	# <cjk>	[2000]
+0xFAAA	U+286D7	# <cjk>	[2000]	[Unicode3.1]
+0xFAAB	U+90DC	# <cjk>	[2000]
+0xFAAC	U+90DF	# <cjk>	[2000]
+0xFAAD	U+286FA	# <cjk>	[2000]	[Unicode3.1]
+0xFAAE	U+90F6	# <cjk>	[2000]
+0xFAAF	U+90F2	# <cjk>	[2000]
+0xFAB0	U+9100	# <cjk>	[2000]
+0xFAB1	U+90EB	# <cjk>	[2000]
+0xFAB2	U+90FE	# <cjk>	[2000]
+0xFAB3	U+90FF	# <cjk>	[2000]
+0xFAB4	U+9104	# <cjk>	[2000]
+0xFAB5	U+9106	# <cjk>	[2000]
+0xFAB6	U+9118	# <cjk>	[2000]
+0xFAB7	U+911C	# <cjk>	[2000]
+0xFAB8	U+911E	# <cjk>	[2000]
+0xFAB9	U+9137	# <cjk>	[2000]
+0xFABA	U+9139	# <cjk>	[2000]
+0xFABB	U+913A	# <cjk>	[2000]
+0xFABC	U+9146	# <cjk>	[2000]
+0xFABD	U+9147	# <cjk>	[2000]
+0xFABE	U+9157	# <cjk>	[2000]
+0xFABF	U+9159	# <cjk>	[2000]
+0xFAC0	U+9161	# <cjk>	[2000]
+0xFAC1	U+9164	# <cjk>	[2000]
+0xFAC2	U+9174	# <cjk>	[2000]
+0xFAC3	U+9179	# <cjk>	[2000]
+0xFAC4	U+9185	# <cjk>	[2000]
+0xFAC5	U+918E	# <cjk>	[2000]
+0xFAC6	U+91A8	# <cjk>	[2000]
+0xFAC7	U+91AE	# <cjk>	[2000]
+0xFAC8	U+91B3	# <cjk>	[2000]
+0xFAC9	U+91B6	# <cjk>	[2000]
+0xFACA	U+91C3	# <cjk>	[2000]
+0xFACB	U+91C4	# <cjk>	[2000]
+0xFACC	U+91DA	# <cjk>	[2000]
+0xFACD	U+28949	# <cjk>	[2000]	[Unicode3.1]
+0xFACE	U+28946	# <cjk>	[2000]	[Unicode3.1]
+0xFACF	U+91EC	# <cjk>	[2000]
+0xFAD0	U+91EE	# <cjk>	[2000]
+0xFAD1	U+9201	# <cjk>	[2000]
+0xFAD2	U+920A	# <cjk>	[2000]
+0xFAD3	U+9216	# <cjk>	[2000]
+0xFAD4	U+9217	# <cjk>	[2000]
+0xFAD5	U+2896B	# <cjk>	[2000]	[Unicode3.1]
+0xFAD6	U+9233	# <cjk>	[2000]
+0xFAD7	U+9242	# <cjk>	[2000]
+0xFAD8	U+9247	# <cjk>	[2000]
+0xFAD9	U+924A	# <cjk>	[2000]
+0xFADA	U+924E	# <cjk>	[2000]
+0xFADB	U+9251	# <cjk>	[2000]
+0xFADC	U+9256	# <cjk>	[2000]
+0xFADD	U+9259	# <cjk>	[2000]
+0xFADE	U+9260	# <cjk>	[2000]
+0xFADF	U+9261	# <cjk>	[2000]
+0xFAE0	U+9265	# <cjk>	[2000]
+0xFAE1	U+9267	# <cjk>	[2000]
+0xFAE2	U+9268	# <cjk>	[2000]
+0xFAE3	U+28987	# <cjk>	[2000]	[Unicode3.1]
+0xFAE4	U+28988	# <cjk>	[2000]	[Unicode3.1]
+0xFAE5	U+927C	# <cjk>	[2000]
+0xFAE6	U+927D	# <cjk>	[2000]
+0xFAE7	U+927F	# <cjk>	[2000]
+0xFAE8	U+9289	# <cjk>	[2000]
+0xFAE9	U+928D	# <cjk>	[2000]
+0xFAEA	U+9297	# <cjk>	[2000]
+0xFAEB	U+9299	# <cjk>	[2000]
+0xFAEC	U+929F	# <cjk>	[2000]
+0xFAED	U+92A7	# <cjk>	[2000]
+0xFAEE	U+92AB	# <cjk>	[2000]
+0xFAEF	U+289BA	# <cjk>	[2000]	[Unicode3.1]
+0xFAF0	U+289BB	# <cjk>	[2000]	[Unicode3.1]
+0xFAF1	U+92B2	# <cjk>	[2000]
+0xFAF2	U+92BF	# <cjk>	[2000]
+0xFAF3	U+92C0	# <cjk>	[2000]
+0xFAF4	U+92C6	# <cjk>	[2000]
+0xFAF5	U+92CE	# <cjk>	[2000]
+0xFAF6	U+92D0	# <cjk>	[2000]
+0xFAF7	U+92D7	# <cjk>	[2000]
+0xFAF8	U+92D9	# <cjk>	[2000]
+0xFAF9	U+92E5	# <cjk>	[2000]
+0xFAFA	U+92E7	# <cjk>	[2000]
+0xFAFB	U+9311	# <cjk>	[2000]
+0xFAFC	U+28A1E	# <cjk>	[2000]	[Unicode3.1]
+0xFB40	U+28A29	# <cjk>	[2000]	[Unicode3.1]
+0xFB41	U+92F7	# <cjk>	[2000]
+0xFB42	U+92F9	# <cjk>	[2000]
+0xFB43	U+92FB	# <cjk>	[2000]
+0xFB44	U+9302	# <cjk>	[2000]
+0xFB45	U+930D	# <cjk>	[2000]
+0xFB46	U+9315	# <cjk>	[2000]
+0xFB47	U+931D	# <cjk>	[2000]
+0xFB48	U+931E	# <cjk>	[2000]
+0xFB49	U+9327	# <cjk>	[2000]
+0xFB4A	U+9329	# <cjk>	[2000]
+0xFB4B	U+28A71	# <cjk>	[2000]	[Unicode3.1]
+0xFB4C	U+28A43	# <cjk>	[2000]	[Unicode3.1]
+0xFB4D	U+9347	# <cjk>	[2000]
+0xFB4E	U+9351	# <cjk>	[2000]
+0xFB4F	U+9357	# <cjk>	[2000]
+0xFB50	U+935A	# <cjk>	[2000]
+0xFB51	U+936B	# <cjk>	[2000]
+0xFB52	U+9371	# <cjk>	[2000]
+0xFB53	U+9373	# <cjk>	[2000]
+0xFB54	U+93A1	# <cjk>	[2000]
+0xFB55	U+28A99	# <cjk>	[2000]	[Unicode3.1]
+0xFB56	U+28ACD	# <cjk>	[2000]	[Unicode3.1]
+0xFB57	U+9388	# <cjk>	[2000]
+0xFB58	U+938B	# <cjk>	[2000]
+0xFB59	U+938F	# <cjk>	[2000]
+0xFB5A	U+939E	# <cjk>	[2000]
+0xFB5B	U+93F5	# <cjk>	[2000]
+0xFB5C	U+28AE4	# <cjk>	[2000]	[Unicode3.1]
+0xFB5D	U+28ADD	# <cjk>	[2000]	[Unicode3.1]
+0xFB5E	U+93F1	# <cjk>	[2000]
+0xFB5F	U+93C1	# <cjk>	[2000]
+0xFB60	U+93C7	# <cjk>	[2000]
+0xFB61	U+93DC	# <cjk>	[2000]
+0xFB62	U+93E2	# <cjk>	[2000]
+0xFB63	U+93E7	# <cjk>	[2000]
+0xFB64	U+9409	# <cjk>	[2000]
+0xFB65	U+940F	# <cjk>	[2000]
+0xFB66	U+9416	# <cjk>	[2000]
+0xFB67	U+9417	# <cjk>	[2000]
+0xFB68	U+93FB	# <cjk>	[2000]
+0xFB69	U+9432	# <cjk>	[2000]
+0xFB6A	U+9434	# <cjk>	[2000]
+0xFB6B	U+943B	# <cjk>	[2000]
+0xFB6C	U+9445	# <cjk>	[2000]
+0xFB6D	U+28BC1	# <cjk>	[2000]	[Unicode3.1]
+0xFB6E	U+28BEF	# <cjk>	[2000]	[Unicode3.1]
+0xFB6F	U+946D	# <cjk>	[2000]
+0xFB70	U+946F	# <cjk>	[2000]
+0xFB71	U+9578	# <cjk>	[2000]
+0xFB72	U+9579	# <cjk>	[2000]
+0xFB73	U+9586	# <cjk>	[2000]
+0xFB74	U+958C	# <cjk>	[2000]
+0xFB75	U+958D	# <cjk>	[2000]
+0xFB76	U+28D10	# <cjk>	[2000]	[Unicode3.1]
+0xFB77	U+95AB	# <cjk>	[2000]
+0xFB78	U+95B4	# <cjk>	[2000]
+0xFB79	U+28D71	# <cjk>	[2000]	[Unicode3.1]
+0xFB7A	U+95C8	# <cjk>	[2000]
+0xFB7B	U+28DFB	# <cjk>	[2000]	[Unicode3.1]
+0xFB7C	U+28E1F	# <cjk>	[2000]	[Unicode3.1]
+0xFB7D	U+962C	# <cjk>	[2000]
+0xFB7E	U+9633	# <cjk>	[2000]
+0xFB80	U+9634	# <cjk>	[2000]
+0xFB81	U+28E36	# <cjk>	[2000]	[Unicode3.1]
+0xFB82	U+963C	# <cjk>	[2000]
+0xFB83	U+9641	# <cjk>	[2000]
+0xFB84	U+9661	# <cjk>	[2000]
+0xFB85	U+28E89	# <cjk>	[2000]	[Unicode3.1]
+0xFB86	U+9682	# <cjk>	[2000]
+0xFB87	U+28EEB	# <cjk>	[2000]	[Unicode3.1]
+0xFB88	U+969A	# <cjk>	[2000]
+0xFB89	U+28F32	# <cjk>	[2000]	[Unicode3.1]
+0xFB8A	U+49E7	# <cjk>	[2000]
+0xFB8B	U+96A9	# <cjk>	[2000]
+0xFB8C	U+96AF	# <cjk>	[2000]
+0xFB8D	U+96B3	# <cjk>	[2000]
+0xFB8E	U+96BA	# <cjk>	[2000]
+0xFB8F	U+96BD	# <cjk>	[2000]
+0xFB90	U+49FA	# <cjk>	[2000]
+0xFB91	U+28FF8	# <cjk>	[2000]	[Unicode3.1]
+0xFB92	U+96D8	# <cjk>	[2000]
+0xFB93	U+96DA	# <cjk>	[2000]
+0xFB94	U+96DD	# <cjk>	[2000]
+0xFB95	U+4A04	# <cjk>	[2000]
+0xFB96	U+9714	# <cjk>	[2000]
+0xFB97	U+9723	# <cjk>	[2000]
+0xFB98	U+4A29	# <cjk>	[2000]
+0xFB99	U+9736	# <cjk>	[2000]
+0xFB9A	U+9741	# <cjk>	[2000]
+0xFB9B	U+9747	# <cjk>	[2000]
+0xFB9C	U+9755	# <cjk>	[2000]
+0xFB9D	U+9757	# <cjk>	[2000]
+0xFB9E	U+975B	# <cjk>	[2000]
+0xFB9F	U+976A	# <cjk>	[2000]
+0xFBA0	U+292A0	# <cjk>	[2000]	[Unicode3.1]
+0xFBA1	U+292B1	# <cjk>	[2000]	[Unicode3.1]
+0xFBA2	U+9796	# <cjk>	[2000]
+0xFBA3	U+979A	# <cjk>	[2000]
+0xFBA4	U+979E	# <cjk>	[2000]
+0xFBA5	U+97A2	# <cjk>	[2000]
+0xFBA6	U+97B1	# <cjk>	[2000]
+0xFBA7	U+97B2	# <cjk>	[2000]
+0xFBA8	U+97BE	# <cjk>	[2000]
+0xFBA9	U+97CC	# <cjk>	[2000]
+0xFBAA	U+97D1	# <cjk>	[2000]
+0xFBAB	U+97D4	# <cjk>	[2000]
+0xFBAC	U+97D8	# <cjk>	[2000]
+0xFBAD	U+97D9	# <cjk>	[2000]
+0xFBAE	U+97E1	# <cjk>	[2000]
+0xFBAF	U+97F1	# <cjk>	[2000]
+0xFBB0	U+9804	# <cjk>	[2000]
+0xFBB1	U+980D	# <cjk>	[2000]
+0xFBB2	U+980E	# <cjk>	[2000]
+0xFBB3	U+9814	# <cjk>	[2000]
+0xFBB4	U+9816	# <cjk>	[2000]
+0xFBB5	U+4ABC	# <cjk>	[2000]
+0xFBB6	U+29490	# <cjk>	[2000]	[Unicode3.1]
+0xFBB7	U+9823	# <cjk>	[2000]
+0xFBB8	U+9832	# <cjk>	[2000]
+0xFBB9	U+9833	# <cjk>	[2000]
+0xFBBA	U+9825	# <cjk>	[2000]
+0xFBBB	U+9847	# <cjk>	[2000]
+0xFBBC	U+9866	# <cjk>	[2000]
+0xFBBD	U+98AB	# <cjk>	[2000]
+0xFBBE	U+98AD	# <cjk>	[2000]
+0xFBBF	U+98B0	# <cjk>	[2000]
+0xFBC0	U+295CF	# <cjk>	[2000]	[Unicode3.1]
+0xFBC1	U+98B7	# <cjk>	[2000]
+0xFBC2	U+98B8	# <cjk>	[2000]
+0xFBC3	U+98BB	# <cjk>	[2000]
+0xFBC4	U+98BC	# <cjk>	[2000]
+0xFBC5	U+98BF	# <cjk>	[2000]
+0xFBC6	U+98C2	# <cjk>	[2000]
+0xFBC7	U+98C7	# <cjk>	[2000]
+0xFBC8	U+98CB	# <cjk>	[2000]
+0xFBC9	U+98E0	# <cjk>	[2000]
+0xFBCA	U+2967F	# <cjk>	[2000]	[Unicode3.1]
+0xFBCB	U+98E1	# <cjk>	[2000]
+0xFBCC	U+98E3	# <cjk>	[2000]
+0xFBCD	U+98E5	# <cjk>	[2000]
+0xFBCE	U+98EA	# <cjk>	[2000]
+0xFBCF	U+98F0	# <cjk>	[2000]
+0xFBD0	U+98F1	# <cjk>	[2000]
+0xFBD1	U+98F3	# <cjk>	[2000]
+0xFBD2	U+9908	# <cjk>	[2000]
+0xFBD3	U+4B3B	# <cjk>	[2000]
+0xFBD4	U+296F0	# <cjk>	[2000]	[Unicode3.1]
+0xFBD5	U+9916	# <cjk>	[2000]
+0xFBD6	U+9917	# <cjk>	[2000]
+0xFBD7	U+29719	# <cjk>	[2000]	[Unicode3.1]
+0xFBD8	U+991A	# <cjk>	[2000]
+0xFBD9	U+991B	# <cjk>	[2000]
+0xFBDA	U+991C	# <cjk>	[2000]
+0xFBDB	U+29750	# <cjk>	[2000]	[Unicode3.1]
+0xFBDC	U+9931	# <cjk>	[2000]
+0xFBDD	U+9932	# <cjk>	[2000]
+0xFBDE	U+9933	# <cjk>	[2000]
+0xFBDF	U+993A	# <cjk>	[2000]
+0xFBE0	U+993B	# <cjk>	[2000]
+0xFBE1	U+993C	# <cjk>	[2000]
+0xFBE2	U+9940	# <cjk>	[2000]
+0xFBE3	U+9941	# <cjk>	[2000]
+0xFBE4	U+9946	# <cjk>	[2000]
+0xFBE5	U+994D	# <cjk>	[2000]
+0xFBE6	U+994E	# <cjk>	[2000]
+0xFBE7	U+995C	# <cjk>	[2000]
+0xFBE8	U+995F	# <cjk>	[2000]
+0xFBE9	U+9960	# <cjk>	[2000]
+0xFBEA	U+99A3	# <cjk>	[2000]
+0xFBEB	U+99A6	# <cjk>	[2000]
+0xFBEC	U+99B9	# <cjk>	[2000]
+0xFBED	U+99BD	# <cjk>	[2000]
+0xFBEE	U+99BF	# <cjk>	[2000]
+0xFBEF	U+99C3	# <cjk>	[2000]
+0xFBF0	U+99C9	# <cjk>	[2000]
+0xFBF1	U+99D4	# <cjk>	[2000]
+0xFBF2	U+99D9	# <cjk>	[2000]
+0xFBF3	U+99DE	# <cjk>	[2000]
+0xFBF4	U+298C6	# <cjk>	[2000]	[Unicode3.1]
+0xFBF5	U+99F0	# <cjk>	[2000]
+0xFBF6	U+99F9	# <cjk>	[2000]
+0xFBF7	U+99FC	# <cjk>	[2000]
+0xFBF8	U+9A0A	# <cjk>	[2000]
+0xFBF9	U+9A11	# <cjk>	[2000]
+0xFBFA	U+9A16	# <cjk>	[2000]
+0xFBFB	U+9A1A	# <cjk>	[2000]
+0xFBFC	U+9A20	# <cjk>	[2000]
+0xFC40	U+9A31	# <cjk>	[2000]
+0xFC41	U+9A36	# <cjk>	[2000]
+0xFC42	U+9A44	# <cjk>	[2000]
+0xFC43	U+9A4C	# <cjk>	[2000]
+0xFC44	U+9A58	# <cjk>	[2000]
+0xFC45	U+4BC2	# <cjk>	[2000]
+0xFC46	U+9AAF	# <cjk>	[2000]
+0xFC47	U+4BCA	# <cjk>	[2000]
+0xFC48	U+9AB7	# <cjk>	[2000]
+0xFC49	U+4BD2	# <cjk>	[2000]
+0xFC4A	U+9AB9	# <cjk>	[2000]
+0xFC4B	U+29A72	# <cjk>	[2000]	[Unicode3.1]
+0xFC4C	U+9AC6	# <cjk>	[2000]
+0xFC4D	U+9AD0	# <cjk>	[2000]
+0xFC4E	U+9AD2	# <cjk>	[2000]
+0xFC4F	U+9AD5	# <cjk>	[2000]
+0xFC50	U+4BE8	# <cjk>	[2000]
+0xFC51	U+9ADC	# <cjk>	[2000]
+0xFC52	U+9AE0	# <cjk>	[2000]
+0xFC53	U+9AE5	# <cjk>	[2000]
+0xFC54	U+9AE9	# <cjk>	[2000]
+0xFC55	U+9B03	# <cjk>	[2000]
+0xFC56	U+9B0C	# <cjk>	[2000]
+0xFC57	U+9B10	# <cjk>	[2000]
+0xFC58	U+9B12	# <cjk>	[2000]
+0xFC59	U+9B16	# <cjk>	[2000]
+0xFC5A	U+9B1C	# <cjk>	[2000]
+0xFC5B	U+9B2B	# <cjk>	[2000]
+0xFC5C	U+9B33	# <cjk>	[2000]
+0xFC5D	U+9B3D	# <cjk>	[2000]
+0xFC5E	U+4C20	# <cjk>	[2000]
+0xFC5F	U+9B4B	# <cjk>	[2000]
+0xFC60	U+9B63	# <cjk>	[2000]
+0xFC61	U+9B65	# <cjk>	[2000]
+0xFC62	U+9B6B	# <cjk>	[2000]
+0xFC63	U+9B6C	# <cjk>	[2000]
+0xFC64	U+9B73	# <cjk>	[2000]
+0xFC65	U+9B76	# <cjk>	[2000]
+0xFC66	U+9B77	# <cjk>	[2000]
+0xFC67	U+9BA6	# <cjk>	[2000]
+0xFC68	U+9BAC	# <cjk>	[2000]
+0xFC69	U+9BB1	# <cjk>	[2000]
+0xFC6A	U+29DDB	# <cjk>	[2000]	[Unicode3.1]
+0xFC6B	U+29E3D	# <cjk>	[2000]	[Unicode3.1]
+0xFC6C	U+9BB2	# <cjk>	[2000]
+0xFC6D	U+9BB8	# <cjk>	[2000]
+0xFC6E	U+9BBE	# <cjk>	[2000]
+0xFC6F	U+9BC7	# <cjk>	[2000]
+0xFC70	U+9BF3	# <cjk>	[2000]
+0xFC71	U+9BD8	# <cjk>	[2000]
+0xFC72	U+9BDD	# <cjk>	[2000]
+0xFC73	U+9BE7	# <cjk>	[2000]
+0xFC74	U+9BEA	# <cjk>	[2000]
+0xFC75	U+9BEB	# <cjk>	[2000]
+0xFC76	U+9BEF	# <cjk>	[2000]
+0xFC77	U+9BEE	# <cjk>	[2000]
+0xFC78	U+29E15	# <cjk>	[2000]	[Unicode3.1]
+0xFC79	U+9BFA	# <cjk>	[2000]
+0xFC7A	U+29E8A	# <cjk>	[2000]	[Unicode3.1]
+0xFC7B	U+9BF7	# <cjk>	[2000]
+0xFC7C	U+29E49	# <cjk>	[2000]	[Unicode3.1]
+0xFC7D	U+9C16	# <cjk>	[2000]
+0xFC7E	U+9C18	# <cjk>	[2000]
+0xFC80	U+9C19	# <cjk>	[2000]
+0xFC81	U+9C1A	# <cjk>	[2000]
+0xFC82	U+9C1D	# <cjk>	[2000]
+0xFC83	U+9C22	# <cjk>	[2000]
+0xFC84	U+9C27	# <cjk>	[2000]
+0xFC85	U+9C29	# <cjk>	[2000]
+0xFC86	U+9C2A	# <cjk>	[2000]
+0xFC87	U+29EC4	# <cjk>	[2000]	[Unicode3.1]
+0xFC88	U+9C31	# <cjk>	[2000]
+0xFC89	U+9C36	# <cjk>	[2000]
+0xFC8A	U+9C37	# <cjk>	[2000]
+0xFC8B	U+9C45	# <cjk>	[2000]
+0xFC8C	U+9C5C	# <cjk>	[2000]
+0xFC8D	U+29EE9	# <cjk>	[2000]	[Unicode3.1]
+0xFC8E	U+9C49	# <cjk>	[2000]
+0xFC8F	U+9C4A	# <cjk>	[2000]
+0xFC90	U+29EDB	# <cjk>	[2000]	[Unicode3.1]
+0xFC91	U+9C54	# <cjk>	[2000]
+0xFC92	U+9C58	# <cjk>	[2000]
+0xFC93	U+9C5B	# <cjk>	[2000]
+0xFC94	U+9C5D	# <cjk>	[2000]
+0xFC95	U+9C5F	# <cjk>	[2000]
+0xFC96	U+9C69	# <cjk>	[2000]
+0xFC97	U+9C6A	# <cjk>	[2000]
+0xFC98	U+9C6B	# <cjk>	[2000]
+0xFC99	U+9C6D	# <cjk>	[2000]
+0xFC9A	U+9C6E	# <cjk>	[2000]
+0xFC9B	U+9C70	# <cjk>	[2000]
+0xFC9C	U+9C72	# <cjk>	[2000]
+0xFC9D	U+9C75	# <cjk>	[2000]
+0xFC9E	U+9C7A	# <cjk>	[2000]
+0xFC9F	U+9CE6	# <cjk>	[2000]
+0xFCA0	U+9CF2	# <cjk>	[2000]
+0xFCA1	U+9D0B	# <cjk>	[2000]
+0xFCA2	U+9D02	# <cjk>	[2000]
+0xFCA3	U+29FCE	# <cjk>	[2000]	[Unicode3.1]
+0xFCA4	U+9D11	# <cjk>	[2000]
+0xFCA5	U+9D17	# <cjk>	[2000]
+0xFCA6	U+9D18	# <cjk>	[2000]
+0xFCA7	U+2A02F	# <cjk>	[2000]	[Unicode3.1]
+0xFCA8	U+4CC4	# <cjk>	[2000]
+0xFCA9	U+2A01A	# <cjk>	[2000]	[Unicode3.1]
+0xFCAA	U+9D32	# <cjk>	[2000]
+0xFCAB	U+4CD1	# <cjk>	[2000]
+0xFCAC	U+9D42	# <cjk>	[2000]
+0xFCAD	U+9D4A	# <cjk>	[2000]
+0xFCAE	U+9D5F	# <cjk>	[2000]
+0xFCAF	U+9D62	# <cjk>	[2000]
+0xFCB0	U+2A0F9	# <cjk>	[2000]	[Unicode3.1]
+0xFCB1	U+9D69	# <cjk>	[2000]
+0xFCB2	U+9D6B	# <cjk>	[2000]
+0xFCB3	U+2A082	# <cjk>	[2000]	[Unicode3.1]
+0xFCB4	U+9D73	# <cjk>	[2000]
+0xFCB5	U+9D76	# <cjk>	[2000]
+0xFCB6	U+9D77	# <cjk>	[2000]
+0xFCB7	U+9D7E	# <cjk>	[2000]
+0xFCB8	U+9D84	# <cjk>	[2000]
+0xFCB9	U+9D8D	# <cjk>	[2000]
+0xFCBA	U+9D99	# <cjk>	[2000]
+0xFCBB	U+9DA1	# <cjk>	[2000]
+0xFCBC	U+9DBF	# <cjk>	[2000]
+0xFCBD	U+9DB5	# <cjk>	[2000]
+0xFCBE	U+9DB9	# <cjk>	[2000]
+0xFCBF	U+9DBD	# <cjk>	[2000]
+0xFCC0	U+9DC3	# <cjk>	[2000]
+0xFCC1	U+9DC7	# <cjk>	[2000]
+0xFCC2	U+9DC9	# <cjk>	[2000]
+0xFCC3	U+9DD6	# <cjk>	[2000]
+0xFCC4	U+9DDA	# <cjk>	[2000]
+0xFCC5	U+9DDF	# <cjk>	[2000]
+0xFCC6	U+9DE0	# <cjk>	[2000]
+0xFCC7	U+9DE3	# <cjk>	[2000]
+0xFCC8	U+9DF4	# <cjk>	[2000]
+0xFCC9	U+4D07	# <cjk>	[2000]
+0xFCCA	U+9E0A	# <cjk>	[2000]
+0xFCCB	U+9E02	# <cjk>	[2000]
+0xFCCC	U+9E0D	# <cjk>	[2000]
+0xFCCD	U+9E19	# <cjk>	[2000]
+0xFCCE	U+9E1C	# <cjk>	[2000]
+0xFCCF	U+9E1D	# <cjk>	[2000]
+0xFCD0	U+9E7B	# <cjk>	[2000]
+0xFCD1	U+22218	# <cjk>	[2000]	[Unicode3.1]
+0xFCD2	U+9E80	# <cjk>	[2000]
+0xFCD3	U+9E85	# <cjk>	[2000]
+0xFCD4	U+9E9B	# <cjk>	[2000]
+0xFCD5	U+9EA8	# <cjk>	[2000]
+0xFCD6	U+2A38C	# <cjk>	[2000]	[Unicode3.1]
+0xFCD7	U+9EBD	# <cjk>	[2000]
+0xFCD8	U+2A437	# <cjk>	[2000]	[Unicode3.1]
+0xFCD9	U+9EDF	# <cjk>	[2000]
+0xFCDA	U+9EE7	# <cjk>	[2000]
+0xFCDB	U+9EEE	# <cjk>	[2000]
+0xFCDC	U+9EFF	# <cjk>	[2000]
+0xFCDD	U+9F02	# <cjk>	[2000]
+0xFCDE	U+4D77	# <cjk>	[2000]
+0xFCDF	U+9F03	# <cjk>	[2000]
+0xFCE0	U+9F17	# <cjk>	[2000]
+0xFCE1	U+9F19	# <cjk>	[2000]
+0xFCE2	U+9F2F	# <cjk>	[2000]
+0xFCE3	U+9F37	# <cjk>	[2000]
+0xFCE4	U+9F3A	# <cjk>	[2000]
+0xFCE5	U+9F3D	# <cjk>	[2000]
+0xFCE6	U+9F41	# <cjk>	[2000]
+0xFCE7	U+9F45	# <cjk>	[2000]
+0xFCE8	U+9F46	# <cjk>	[2000]
+0xFCE9	U+9F53	# <cjk>	[2000]
+0xFCEA	U+9F55	# <cjk>	[2000]
+0xFCEB	U+9F58	# <cjk>	[2000]
+0xFCEC	U+2A5F1	# <cjk>	[2000]	[Unicode3.1]
+0xFCED	U+9F5D	# <cjk>	[2000]
+0xFCEE	U+2A602	# <cjk>	[2000]	[Unicode3.1]
+0xFCEF	U+9F69	# <cjk>	[2000]
+0xFCF0	U+2A61A	# <cjk>	[2000]	[Unicode3.1]
+0xFCF1	U+9F6D	# <cjk>	[2000]
+0xFCF2	U+9F70	# <cjk>	[2000]
+0xFCF3	U+9F75	# <cjk>	[2000]
+0xFCF4	U+2A6B2	# <cjk>	[2000]	[Unicode3.1]
--- a/make/tools/Makefile	Fri Apr 25 08:58:07 2008 -0400
+++ b/make/tools/Makefile	Fri Apr 25 09:03:20 2008 -0400
@@ -50,7 +50,8 @@
   jdwpgen                   \
   makeclasslist             \
   strip_properties          \
-  winver
+  winver                    \
+  CharsetMapping
 
 all build clean clobber::
 	$(SUBDIRS-loop)
--- a/make/tools/freetypecheck/freetypecheck.c	Fri Apr 25 08:58:07 2008 -0400
+++ b/make/tools/freetypecheck/freetypecheck.c	Fri Apr 25 09:03:20 2008 -0400
@@ -26,13 +26,16 @@
 /* Test program for freetype sanity check.
    Prints "Failed" messages to STDOUT if check fails. */
 
+#include <stdio.h>
+#include <string.h>
+
 #include "ft2build.h"
 #include FT_FREETYPE_H
 
 #define QUOTEMACRO(x) QUOTEME(x)
 #define QUOTEME(x) #x
 
-int main(char** argv, int argc) {
+int main(int argc, char** argv) {
    char v[50];
    FT_Int major, minor, patch;
    FT_Library library;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/src/build/tools/charsetmapping/CharsetMapping.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,271 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.charsetmapping;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.*;
+
+public class CharsetMapping {
+    public final static char UNMAPPABLE_DECODING = '\uFFFD';
+    public final static int  UNMAPPABLE_ENCODING = -1;
+
+    public static class Entry {
+        public int bs;   //byte sequence reps
+        public int cp;   //Unicode codepoint
+        public int cp2;  //CC of composite
+
+        public Entry () {}
+        public Entry (int bytes, int cp, int cp2) {
+            this.bs = bytes;
+            this.cp = cp;
+            this.cp2 = cp2;
+        }
+    }
+
+    static Comparator<Entry> comparatorCP =
+        new Comparator<Entry>() {
+            public int compare(Entry m1, Entry m2) {
+                return m1.cp - m2.cp;
+            }
+            public boolean equals(Object obj) {
+                return this == obj;
+            }
+    };
+
+    public static class Parser {
+        static final Pattern basic = Pattern.compile("(?:0x)?(\\p{XDigit}++)\\s++(?:0x)?(\\p{XDigit}++)?\\s*+.*");
+        static final int gBS = 1;
+        static final int gCP = 2;
+        static final int gCP2 = 3;
+
+        BufferedReader reader;
+        boolean closed;
+        Matcher matcher;
+        int gbs, gcp, gcp2;
+
+        public Parser (InputStream in, Pattern p, int gbs, int gcp, int gcp2)
+            throws IOException
+        {
+            this.reader = new BufferedReader(new InputStreamReader(in));
+            this.closed = false;
+            this.matcher = p.matcher("");
+            this.gbs = gbs;
+            this.gcp = gcp;
+            this.gcp2 = gcp2;
+        }
+
+        public Parser (InputStream in, Pattern p) throws IOException {
+            this(in, p, gBS, gCP, gCP2);
+        }
+
+        public Parser (InputStream in) throws IOException {
+            this(in, basic, gBS, gCP, gCP2);
+        }
+
+        protected boolean isDirective(String line) {
+            return line.startsWith("#");
+        }
+
+        protected Entry parse(Matcher matcher, Entry mapping) {
+            mapping.bs = Integer.parseInt(matcher.group(gbs), 16);
+            mapping.cp = Integer.parseInt(matcher.group(gcp), 16);
+            if (gcp2 <= matcher.groupCount() &&
+                matcher.group(gcp2) != null)
+                mapping.cp2 = Integer.parseInt(matcher.group(gcp2), 16);
+            else
+                mapping.cp2 = 0;
+            return mapping;
+        }
+
+        public Entry next() throws Exception {
+            return next(new Entry());
+        }
+
+        // returns null and closes the input stream if the eof has beenreached.
+        public Entry next(Entry mapping) throws Exception {
+            if (closed)
+                return null;
+            String line;
+            while ((line = reader.readLine()) != null) {
+                if (isDirective(line))
+                    continue;
+                matcher.reset(line);
+                if (!matcher.lookingAt()) {
+                    //System.out.println("Missed: " + line);
+                    continue;
+                }
+                return parse(matcher, mapping);
+            }
+            reader.close();
+            closed = true;
+            return null;
+        }
+    }
+
+    // tags of different charset mapping tables
+    private final static int MAP_SINGLEBYTE      = 0x1; // 0..256  : c
+    private final static int MAP_DOUBLEBYTE1     = 0x2; // min..max: c
+    private final static int MAP_DOUBLEBYTE2     = 0x3; // min..max: c [DB2]
+    private final static int MAP_SUPPLEMENT      = 0x5; //           db,c
+    private final static int MAP_SUPPLEMENT_C2B  = 0x6; //           c,db
+    private final static int MAP_COMPOSITE       = 0x7; //           db,base,cc
+    private final static int MAP_INDEXC2B        = 0x8; // index table of c->bb
+
+    private static final void writeShort(OutputStream out, int data)
+        throws IOException
+    {
+        out.write((data >>> 8) & 0xFF);
+        out.write((data      ) & 0xFF);
+    }
+
+    private static final void writeShortArray(OutputStream out,
+                                              int type,
+                                              int[] array,
+                                              int off,
+                                              int size)   // exclusive
+        throws IOException
+    {
+        writeShort(out, type);
+        writeShort(out, size);
+        for (int i = off; i < size; i++) {
+            writeShort(out, array[off+i]);
+        }
+    }
+
+    public static final void writeSIZE(OutputStream out, int data)
+        throws IOException
+    {
+        out.write((data >>> 24) & 0xFF);
+        out.write((data >>> 16) & 0xFF);
+        out.write((data >>>  8) & 0xFF);
+        out.write((data       ) & 0xFF);
+    }
+
+    public static void writeINDEXC2B(OutputStream out, int[] indexC2B)
+        throws IOException
+    {
+        writeShort(out, MAP_INDEXC2B);
+        writeShort(out, indexC2B.length);
+        int off = 0;
+        for (int i = 0; i < indexC2B.length; i++) {
+            if (indexC2B[i] != 0) {
+                writeShort(out, off);
+                off += 256;
+            } else {
+                writeShort(out, -1);
+            }
+        }
+    }
+
+    public static void writeSINGLEBYTE(OutputStream out, int[] sb)
+        throws IOException
+    {
+        writeShortArray(out, MAP_SINGLEBYTE, sb, 0, 256);
+    }
+
+    private static void writeDOUBLEBYTE(OutputStream out,
+                                        int type,
+                                        int[] db,
+                                        int b1Min, int b1Max,
+                                        int b2Min, int b2Max)
+        throws IOException
+    {
+        writeShort(out, type);
+        writeShort(out, b1Min);
+        writeShort(out, b1Max);
+        writeShort(out, b2Min);
+        writeShort(out, b2Max);
+        writeShort(out, (b1Max - b1Min + 1) * (b2Max - b2Min + 1));
+
+        for (int b1 = b1Min; b1 <= b1Max; b1++) {
+            for (int b2 = b2Min; b2 <= b2Max; b2++) {
+                writeShort(out, db[b1 * 256 + b2]);
+            }
+        }
+    }
+    public static void writeDOUBLEBYTE1(OutputStream out,
+                                        int[] db,
+                                        int b1Min, int b1Max,
+                                        int b2Min, int b2Max)
+        throws IOException
+    {
+        writeDOUBLEBYTE(out, MAP_DOUBLEBYTE1, db, b1Min, b1Max, b2Min, b2Max);
+    }
+
+    public static void writeDOUBLEBYTE2(OutputStream out,
+                                        int[] db,
+                                        int b1Min, int b1Max,
+                                        int b2Min, int b2Max)
+        throws IOException
+    {
+        writeDOUBLEBYTE(out, MAP_DOUBLEBYTE2, db, b1Min, b1Max, b2Min, b2Max);
+    }
+
+    // the c2b table is output as well
+    public static void writeSUPPLEMENT(OutputStream out, Entry[] supp, int size)
+        throws IOException
+    {
+        writeShort(out, MAP_SUPPLEMENT);
+        writeShort(out, size * 2);
+        // db at first half, cc at the low half
+        for (int i = 0; i < size; i++) {
+            writeShort(out, supp[i].bs);
+        }
+        for (int i = 0; i < size; i++) {
+            writeShort(out, supp[i].cp);
+        }
+
+        //c2b
+        writeShort(out, MAP_SUPPLEMENT_C2B);
+        writeShort(out, size*2);
+        Arrays.sort(supp, 0, size, comparatorCP);
+        for (int i = 0; i < size; i++) {
+            writeShort(out, supp[i].cp);
+        }
+        for (int i = 0; i < size; i++) {
+            writeShort(out, supp[i].bs);
+        }
+    }
+
+    public static void writeCOMPOSITE(OutputStream out, Entry[] comp, int size)
+        throws IOException
+    {
+        writeShort(out, MAP_COMPOSITE);
+        writeShort(out, size*3);
+        // comp is sorted already
+        for (int i = 0; i < size; i++) {
+            writeShort(out, (char)comp[i].bs);
+            writeShort(out, (char)comp[i].cp);
+            writeShort(out, (char)comp[i].cp2);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/tools/src/build/tools/charsetmapping/GenerateMapping.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package build.tools.charsetmapping;
+
+import java.io.*;
+import java.util.regex.*;
+import static build.tools.charsetmapping.CharsetMapping.*;
+
+public class GenerateMapping {
+    public static void main(String argv[]) throws IOException {
+        if (argv.length < 2) {
+            System.out.println("Usage: java GenCSData fMap fDat");
+            System.exit(1);
+        }
+        genDataJIS0213(new FileInputStream(argv[0]),
+                       new FileOutputStream(argv[1]));
+    }
+
+    // regex pattern to parse the "jis0213.map" file
+    static Pattern sjis0213 = Pattern.compile("0x(\\p{XDigit}++)\\s++U\\+(\\p{XDigit}++)(?:\\+(\\p{XDigit}++))?\\s++#.*");
+    private static void genDataJIS0213(InputStream in, OutputStream out)
+    {
+        int[] sb = new int[0x100];                         // singlebyte
+        int[] db = new int[0x10000];                       // doublebyte
+        int[] indexC2B = new int[256];
+        Entry[] supp = new Entry[0x10000];
+        Entry[] comp = new Entry[0x100];
+        int suppTotal = 0;
+        int compTotal = 0;
+
+        int b1Min1 = 0x81;
+        int b1Max1 = 0x9f;
+        int b1Min2 = 0xe0;
+        int b1Max2 = 0xfc;
+        int b2Min = 0x40;
+        int b2Max = 0xfe;
+
+        //init
+        for (int i = 0; i < 0x80; i++) sb[i] = i;
+        for (int i = 0x80; i < 0x100; i++) sb[i] = UNMAPPABLE_DECODING;
+        for (int i = 0; i < 0x10000; i++) db[i] = UNMAPPABLE_DECODING;
+        try {
+            Parser p = new Parser(in, sjis0213);
+            Entry  e = null;
+            while ((e = p.next()) != null) {
+                if (e.cp2 != 0) {
+                    comp[compTotal++] = e;
+                } else {
+                    if (e.cp <= 0xffff) {
+                        if (e.bs <= 0xff)
+                            sb[e.bs] = e.cp;
+                        else
+                            db[e.bs] = e.cp;
+                        indexC2B[e.cp>>8] = 1;
+                    } else {
+                        supp[suppTotal++] = e;
+                    }
+                }
+            }
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            // c2b Index Table, always the first one
+            writeINDEXC2B(baos, indexC2B);
+            writeSINGLEBYTE(baos, sb);
+            writeDOUBLEBYTE1(baos, db, b1Min1, b1Max1, b2Min, b2Max);
+            writeDOUBLEBYTE2(baos, db, b1Min2, b1Max2, b2Min, b2Max);
+            writeSUPPLEMENT(baos, supp, suppTotal);
+            writeCOMPOSITE(baos, comp, compTotal);
+            writeSIZE(out, baos.size());
+            baos.writeTo(out);
+            out.close();
+        } catch (Exception x) {
+            x.printStackTrace();
+        }
+    }
+}
--- a/src/share/bin/emessages.h	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/bin/emessages.h	Fri Apr 25 09:03:20 2008 -0400
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2005-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -50,7 +50,7 @@
 #define JAR_ERROR2      "Error: Unable to access jarfile %s"
 #define JAR_ERROR3      "Error: Invalid or corrupt jarfile %s"
 
-#define CLS_ERROR1      "Error: Could not find the main class.\n" JNI_ERROR
+#define CLS_ERROR1      "Error: Could not find the main class %s.\n" JNI_ERROR
 #define CLS_ERROR2      "Error: Failed to load Main Class: %s\n%s"
 #define CLS_ERROR3      "Error: No main method found in specified class.\n" GEN_ERROR
 #define CLS_ERROR4      "Error: Main method not public\n" GEN_ERROR
--- a/src/share/bin/java.c	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/bin/java.c	Fri Apr 25 09:03:20 2008 -0400
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -414,7 +414,7 @@
         mainClass = LoadClass(env, classname);
         if(mainClass == NULL) { /* exception occured */
             ReportExceptionDescription(env);
-            ReportErrorMessage(CLS_ERROR1);
+            ReportErrorMessage(CLS_ERROR1, classname);
             goto leave;
         }
         (*env)->ReleaseStringUTFChars(env, mainClassName, classname);
@@ -433,7 +433,7 @@
       mainClass = LoadClass(env, classname);
       if(mainClass == NULL) { /* exception occured */
         ReportExceptionDescription(env);
-        ReportErrorMessage(CLS_ERROR1);
+        ReportErrorMessage(CLS_ERROR1, classname);
         goto leave;
       }
       (*env)->ReleaseStringUTFChars(env, mainClassName, classname);
--- a/src/share/classes/com/sun/inputmethods/internal/indicim/resources/DisplayNames.properties	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/com/sun/inputmethods/internal/indicim/resources/DisplayNames.properties	Fri Apr 25 09:03:20 2008 -0400
@@ -1,5 +1,6 @@
-#
-# Default Input method display names for Indic input methods
-#
-
-DisplayName.Devanagari  = Devanagari Input Method
+#
+# Default Input method display names for Indic input methods
+#
+
+DisplayName.Devanagari  = Devanagari Input Method
+
--- a/src/share/classes/com/sun/inputmethods/internal/thaiim/resources/DisplayNames.properties	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/com/sun/inputmethods/internal/thaiim/resources/DisplayNames.properties	Fri Apr 25 09:03:20 2008 -0400
@@ -1,5 +1,6 @@
-#
-# Default Input method display names for Thai input methods
-#
-
-DisplayName.Thai     = Thai Input Method
+#
+# Default Input method display names for Thai input methods
+#
+
+DisplayName.Thai     = Thai Input Method
+
--- a/src/share/classes/com/sun/jmx/interceptor/DefaultMBeanServerInterceptor.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/com/sun/jmx/interceptor/DefaultMBeanServerInterceptor.java	Fri Apr 25 09:03:20 2008 -0400
@@ -34,8 +34,6 @@
 import java.util.HashSet;
 import java.util.WeakHashMap;
 import java.lang.ref.WeakReference;
-import java.io.PrintWriter;
-import java.io.StringWriter;
 import java.security.AccessControlContext;
 import java.security.Permission;
 import java.security.ProtectionDomain;
@@ -51,7 +49,6 @@
 import javax.management.InstanceNotFoundException;
 import javax.management.IntrospectionException;
 import javax.management.InvalidAttributeValueException;
-import javax.management.JMException;
 import javax.management.JMRuntimeException;
 import javax.management.ListenerNotFoundException;
 import javax.management.MalformedObjectNameException;
@@ -84,11 +81,10 @@
 import com.sun.jmx.mbeanserver.DynamicMBean2;
 import com.sun.jmx.mbeanserver.ModifiableClassLoaderRepository;
 import com.sun.jmx.mbeanserver.MBeanInstantiator;
-import com.sun.jmx.mbeanserver.MXBeanSupport;
 import com.sun.jmx.mbeanserver.Repository;
 import com.sun.jmx.mbeanserver.NamedObject;
-import com.sun.jmx.defaults.ServiceName;
 import com.sun.jmx.mbeanserver.Introspector;
+import com.sun.jmx.mbeanserver.Util;
 import com.sun.jmx.remote.util.EnvHelp;
 
 /**
@@ -623,18 +619,9 @@
             List<String> result = new ArrayList<String>(domains.length);
             for (int i = 0; i < domains.length; i++) {
                 try {
-                    ObjectName domain = new ObjectName(domains[i] + ":x=x");
+                    ObjectName domain = Util.newObjectName(domains[i] + ":x=x");
                     checkMBeanPermission((String) null, null, domain, "getDomains");
                     result.add(domains[i]);
-                } catch (MalformedObjectNameException e) {
-                    // Should never occur... But let's log it just in case.
-                    if (MBEANSERVER_LOGGER.isLoggable(Level.SEVERE)) {
-                        MBEANSERVER_LOGGER.logp(Level.SEVERE,
-                                DefaultMBeanServerInterceptor.class.getName(),
-                                "getDomains",
-                                "Failed to check permission for domain = " +
-                                domains[i], e);
-                    }
                 } catch (SecurityException e) {
                     // OK: Do not add this domain to the list
                 }
--- a/src/share/classes/com/sun/jmx/mbeanserver/MBeanAnalyzer.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/com/sun/jmx/mbeanserver/MBeanAnalyzer.java	Fri Apr 25 09:03:20 2008 -0400
@@ -107,10 +107,7 @@
     private MBeanAnalyzer(Class<?> mbeanInterface,
             MBeanIntrospector<M> introspector)
             throws NotCompliantMBeanException {
-        if (!mbeanInterface.isInterface()) {
-            throw new NotCompliantMBeanException("Not an interface: " +
-                    mbeanInterface.getName());
-        }
+        introspector.checkCompliance(mbeanInterface);
 
         try {
             initMaps(mbeanInterface, introspector);
@@ -121,11 +118,10 @@
 
     // Introspect the mbeanInterface and initialize this object's maps.
     //
-    private void initMaps(Class<?> mbeanInterface,
+    private void initMaps(Class<?> mbeanType,
             MBeanIntrospector<M> introspector) throws Exception {
-        final Method[] methodArray = mbeanInterface.getMethods();
-
-        final List<Method> methods = eliminateCovariantMethods(methodArray);
+        final List<Method> methods1 = introspector.getMethods(mbeanType);
+        final List<Method> methods = eliminateCovariantMethods(methods1);
 
         /* Run through the methods to detect inconsistencies and to enable
            us to give getter and setter together to visitAttribute. */
@@ -234,13 +230,13 @@
        but existing code may depend on it and users may be used to seeing
        operations or attributes appear in a particular order.  */
     static List<Method>
-            eliminateCovariantMethods(Method[] methodArray) {
+            eliminateCovariantMethods(List<Method> startMethods) {
         // We are assuming that you never have very many methods with the
         // same name, so it is OK to use algorithms that are quadratic
         // in the number of methods with the same name.
 
-        final int len = methodArray.length;
-        final Method[] sorted = methodArray.clone();
+        final int len = startMethods.size();
+        final Method[] sorted = startMethods.toArray(new Method[len]);
         Arrays.sort(sorted,MethodOrder.instance);
         final Set<Method> overridden = newSet();
         for (int i=1;i<len;i++) {
@@ -259,7 +255,7 @@
             }
         }
 
-        final List<Method> methods = newList(Arrays.asList(methodArray));
+        final List<Method> methods = newList(startMethods);
         methods.removeAll(overridden);
         return methods;
     }
--- a/src/share/classes/com/sun/jmx/mbeanserver/MBeanIntrospector.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/com/sun/jmx/mbeanserver/MBeanIntrospector.java	Fri Apr 25 09:03:20 2008 -0400
@@ -34,6 +34,7 @@
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.lang.reflect.Type;
+import java.util.Arrays;
 import java.util.List;
 import java.util.WeakHashMap;
 
@@ -169,6 +170,19 @@
      */
     abstract Descriptor getMBeanDescriptor(Class<?> resourceClass);
 
+    void checkCompliance(Class<?> mbeanType) throws NotCompliantMBeanException {
+        if (!mbeanType.isInterface()) {
+            throw new NotCompliantMBeanException("Not an interface: " +
+                    mbeanType.getName());
+        }
+    }
+
+    /**
+     * Get the methods to be analyzed to build the MBean interface.
+     */
+    List<Method> getMethods(final Class<?> mbeanType) throws Exception {
+        return Arrays.asList(mbeanType.getMethods());
+    }
 
     final PerInterface<M> getPerInterface(Class<?> mbeanInterface)
     throws NotCompliantMBeanException {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/jmx/mbeanserver/NotificationMBeanSupport.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package com.sun.jmx.mbeanserver;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+import javax.management.NotCompliantMBeanException;
+import javax.management.Notification;
+
+/**
+ * <p>A variant of {@code StandardMBeanSupport} where the only
+ * methods included are public getters.  This is used by
+ * {@code QueryNotificationFilter} to pretend that a Notification is
+ * an MBean so it can have a query evaluated on it.  Standard queries
+ * never set attributes or invoke methods but custom queries could and
+ * we don't want to allow that.  Also we don't want to fail if a
+ * Notification happens to have inconsistent types in a pair of getX and
+ * setX methods, and we want to include the Object.getClass() method.
+ */
+public class NotificationMBeanSupport extends StandardMBeanSupport {
+    public <T extends Notification> NotificationMBeanSupport(T n)
+            throws NotCompliantMBeanException {
+        super(n, Util.<Class<T>>cast(n.getClass()));
+    }
+
+    @Override
+    MBeanIntrospector<Method> getMBeanIntrospector() {
+        return introspector;
+    }
+
+    private static class Introspector extends StandardMBeanIntrospector {
+        @Override
+        void checkCompliance(Class<?> mbeanType) {}
+
+        @Override
+        List<Method> getMethods(final Class<?> mbeanType)
+                throws Exception {
+            List<Method> methods = new ArrayList<Method>();
+            for (Method m : mbeanType.getMethods()) {
+                String name = m.getName();
+                Class<?> ret = m.getReturnType();
+                if (m.getParameterTypes().length == 0) {
+                    if ((name.startsWith("is") && name.length() > 2 &&
+                            ret == boolean.class) ||
+                        (name.startsWith("get") && name.length() > 3 &&
+                            ret != void.class)) {
+                        methods.add(m);
+                    }
+                }
+            }
+            return methods;
+        }
+
+    }
+    private static final MBeanIntrospector<Method> introspector =
+            new Introspector();
+}
--- a/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java	Fri Apr 25 09:03:20 2008 -0400
@@ -438,7 +438,7 @@
                 c.getClassLoader() == null);
 
         final List<Method> methods =
-                MBeanAnalyzer.eliminateCovariantMethods(c.getMethods());
+                MBeanAnalyzer.eliminateCovariantMethods(Arrays.asList(c.getMethods()));
         final SortedMap<String,Method> getterMap = newSortedMap();
 
         /* Select public methods that look like "T getX()" or "boolean
--- a/src/share/classes/com/sun/jmx/mbeanserver/Repository.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/com/sun/jmx/mbeanserver/Repository.java	Fri Apr 25 09:03:20 2008 -0400
@@ -415,17 +415,8 @@
         boolean to_default_domain = false;
 
         // Set domain to default if domain is empty and not already set
-        if (dom.length() == 0) {
-             try {
-                name = new ObjectName(domain + name.toString());
-            } catch (MalformedObjectNameException e) {
-                if (MBEANSERVER_LOGGER.isLoggable(Level.FINEST)) {
-                    MBEANSERVER_LOGGER.logp(Level.FINEST,
-                            Repository.class.getName(), "addMBean",
-                            "Unexpected MalformedObjectNameException", e);
-                }
-            }
-        }
+        if (dom.length() == 0)
+            name = Util.newObjectName(domain + name.toString());
 
         // Do we have default domain ?
         if (dom == domain) {
--- a/src/share/classes/com/sun/jmx/mbeanserver/Util.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/com/sun/jmx/mbeanserver/Util.java	Fri Apr 25 09:03:20 2008 -0400
@@ -38,6 +38,8 @@
 import java.util.Set;
 import java.util.SortedMap;
 import java.util.TreeMap;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
 
 public class Util {
     static <K, V> Map<K, V> newMap() {
@@ -85,6 +87,14 @@
         return new ArrayList<E>(c);
     }
 
+    public static ObjectName newObjectName(String s) {
+        try {
+            return new ObjectName(s);
+        } catch (MalformedObjectNameException e) {
+            throw new IllegalArgumentException(e);
+        }
+    }
+
     /* This method can be used by code that is deliberately violating the
      * allowed checked casts.  Rather than marking the whole method containing
      * the code with @SuppressWarnings, you can use a call to this method for
--- a/src/share/classes/com/sun/management/HotSpotDiagnosticMXBean.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/com/sun/management/HotSpotDiagnosticMXBean.java	Fri Apr 25 09:03:20 2008 -0400
@@ -25,6 +25,8 @@
 
 package com.sun.management;
 
+import java.lang.management.PlatformManagedObject;
+
 /**
  * Diagnostic management interface for the HotSpot Virtual Machine.
  * The diagnostic MBean is registered to the platform MBeanServer
@@ -35,8 +37,13 @@
  * <blockquote>
  *    <tt>com.sun.management:type=HotSpotDiagnostic</tt>
  * </blockquote>
+.*
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
+ *
+ * @see ManagementFactory#getPlatformMXBeans(Class)
  */
-public interface HotSpotDiagnosticMXBean {
+public interface HotSpotDiagnosticMXBean extends PlatformManagedObject {
     /**
      * Dumps the heap to the <tt>outputFile</tt> file in the same
      * format as the hprof heap dump.
--- a/src/share/classes/com/sun/org/apache/xml/internal/security/resource/config.dtd	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/com/sun/org/apache/xml/internal/security/resource/config.dtd	Fri Apr 25 09:03:20 2008 -0400
@@ -1,73 +1,73 @@
-<?xml version='1.0' encoding='UTF-8' ?>
-
-<!ELEMENT Configuration (CanonicalizationMethods , TransformAlgorithms , JCEAlgorithmMappings , Log4J , ResourceBundles , UnitTests , ResourceResolvers , KeyResolvers)>
-
-<!ATTLIST Configuration  xmlns CDATA  #FIXED 'http://www.xmlsecurity.org/NS/#configuration' 
-target        CDATA  #IMPLIED>
-<!ELEMENT CanonicalizationMethods (CanonicalizationMethod+)>
-
-<!ATTLIST CanonicalizationMethods  JAVACLASS CDATA  #FIXED 'com.sun.org.apache.xml.internal.security.c14n.Canonicalizer' >
-<!ELEMENT CanonicalizationMethod EMPTY>
-
-<!ATTLIST CanonicalizationMethod  URI       CDATA  #REQUIRED
-                                    JAVACLASS CDATA  #REQUIRED >
-<!ELEMENT TransformAlgorithms (TransformAlgorithm+)>
-
-<!ATTLIST TransformAlgorithms  JAVACLASS CDATA  #FIXED 'com.sun.org.apache.xml.internal.security.transforms.Transform' >
-<!ELEMENT TransformAlgorithm EMPTY>
-
-<!ATTLIST TransformAlgorithm  URI       CDATA  #REQUIRED
-                                JAVACLASS CDATA  #REQUIRED >
-<!ELEMENT JCEAlgorithmMappings (Providers , Algorithms)>
-
-<!ELEMENT Providers (Provider+)>
-
-<!ELEMENT Provider EMPTY>
-
-<!ATTLIST Provider  Id          ID     #REQUIRED
-                      Class       CDATA  #REQUIRED
-                      Info        CDATA  #IMPLIED
-                      ProviderURL CDATA  #IMPLIED >
-<!ELEMENT Algorithms (Algorithm+)>
-
-<!ELEMENT Algorithm (ProviderAlgo+)>
-
-<!ATTLIST Algorithm  URI            CDATA  #REQUIRED
-                       Description    CDATA  #IMPLIED
-                       AlgorithmClass CDATA  #IMPLIED >
-<!ELEMENT ProviderAlgo EMPTY>
-
-<!ATTLIST ProviderAlgo  ProviderId IDREF  #REQUIRED
-                          JCEName    CDATA  #REQUIRED
-                          JCEAlias   CDATA  #IMPLIED >
-<!ELEMENT Log4J EMPTY>
-
-<!ATTLIST Log4J  configFile CDATA  'data/log4j.xml' >
-<!ELEMENT ResourceBundles (ResourceBundle+)>
-
-<!ATTLIST ResourceBundles  defaultLanguageCode CDATA  'de'
-                             defaultCountryCode  CDATA  'DE' >
-<!ELEMENT ResourceBundle EMPTY>
-
-<!ATTLIST ResourceBundle  LanguageCode CDATA  #REQUIRED
-                            CountryCode  CDATA  #REQUIRED
-                            LOCATION     CDATA  #REQUIRED >
-<!ELEMENT UnitTests (UnitTest+)>
-
-<!ATTLIST UnitTests  JAVACLASS CDATA  #FIXED 'com.sun.org.apache.xml.internal.security.test.AllTests' >
-<!ELEMENT ResourceResolvers (Resolver+)>
-
-<!ELEMENT Resolver EMPTY>
-
-<!ATTLIST Resolver  JAVACLASS   CDATA  #REQUIRED
-                      DESCRIPTION CDATA  #IMPLIED >
-<!ELEMENT KeyResolvers (KeyResolver+)>
-<!ATTLIST KeyResolvers  JAVACLASS CDATA  #FIXED 'com.sun.org.apache.xml.internal.security.keys.KeyResolver' >
-
-<!ELEMENT KeyResolver EMPTY>
-
-<!ATTLIST KeyResolver  URI       CDATA  #REQUIRED
-                         JAVACLASS CDATA  #REQUIRED >
-<!ELEMENT UnitTest (#PCDATA)>
-
-<!ATTLIST UnitTest  JAVACLASS CDATA  #REQUIRED >
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!ELEMENT Configuration (CanonicalizationMethods , TransformAlgorithms , JCEAlgorithmMappings , Log4J , ResourceBundles , UnitTests , ResourceResolvers , KeyResolvers)>
+
+<!ATTLIST Configuration  xmlns CDATA  #FIXED 'http://www.xmlsecurity.org/NS/#configuration' 
+target        CDATA  #IMPLIED>
+<!ELEMENT CanonicalizationMethods (CanonicalizationMethod+)>
+
+<!ATTLIST CanonicalizationMethods  JAVACLASS CDATA  #FIXED 'com.sun.org.apache.xml.internal.security.c14n.Canonicalizer' >
+<!ELEMENT CanonicalizationMethod EMPTY>
+
+<!ATTLIST CanonicalizationMethod  URI       CDATA  #REQUIRED
+                                    JAVACLASS CDATA  #REQUIRED >
+<!ELEMENT TransformAlgorithms (TransformAlgorithm+)>
+
+<!ATTLIST TransformAlgorithms  JAVACLASS CDATA  #FIXED 'com.sun.org.apache.xml.internal.security.transforms.Transform' >
+<!ELEMENT TransformAlgorithm EMPTY>
+
+<!ATTLIST TransformAlgorithm  URI       CDATA  #REQUIRED
+                                JAVACLASS CDATA  #REQUIRED >
+<!ELEMENT JCEAlgorithmMappings (Providers , Algorithms)>
+
+<!ELEMENT Providers (Provider+)>
+
+<!ELEMENT Provider EMPTY>
+
+<!ATTLIST Provider  Id          ID     #REQUIRED
+                      Class       CDATA  #REQUIRED
+                      Info        CDATA  #IMPLIED
+                      ProviderURL CDATA  #IMPLIED >
+<!ELEMENT Algorithms (Algorithm+)>
+
+<!ELEMENT Algorithm (ProviderAlgo+)>
+
+<!ATTLIST Algorithm  URI            CDATA  #REQUIRED
+                       Description    CDATA  #IMPLIED
+                       AlgorithmClass CDATA  #IMPLIED >
+<!ELEMENT ProviderAlgo EMPTY>
+
+<!ATTLIST ProviderAlgo  ProviderId IDREF  #REQUIRED
+                          JCEName    CDATA  #REQUIRED
+                          JCEAlias   CDATA  #IMPLIED >
+<!ELEMENT Log4J EMPTY>
+
+<!ATTLIST Log4J  configFile CDATA  'data/log4j.xml' >
+<!ELEMENT ResourceBundles (ResourceBundle+)>
+
+<!ATTLIST ResourceBundles  defaultLanguageCode CDATA  'de'
+                             defaultCountryCode  CDATA  'DE' >
+<!ELEMENT ResourceBundle EMPTY>
+
+<!ATTLIST ResourceBundle  LanguageCode CDATA  #REQUIRED
+                            CountryCode  CDATA  #REQUIRED
+                            LOCATION     CDATA  #REQUIRED >
+<!ELEMENT UnitTests (UnitTest+)>
+
+<!ATTLIST UnitTests  JAVACLASS CDATA  #FIXED 'com.sun.org.apache.xml.internal.security.test.AllTests' >
+<!ELEMENT ResourceResolvers (Resolver+)>
+
+<!ELEMENT Resolver EMPTY>
+
+<!ATTLIST Resolver  JAVACLASS   CDATA  #REQUIRED
+                      DESCRIPTION CDATA  #IMPLIED >
+<!ELEMENT KeyResolvers (KeyResolver+)>
+<!ATTLIST KeyResolvers  JAVACLASS CDATA  #FIXED 'com.sun.org.apache.xml.internal.security.keys.KeyResolver' >
+
+<!ELEMENT KeyResolver EMPTY>
+
+<!ATTLIST KeyResolver  URI       CDATA  #REQUIRED
+                         JAVACLASS CDATA  #REQUIRED >
+<!ELEMENT UnitTest (#PCDATA)>
+
+<!ATTLIST UnitTest  JAVACLASS CDATA  #REQUIRED >
--- a/src/share/classes/com/sun/org/apache/xml/internal/security/resource/config.xml	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/com/sun/org/apache/xml/internal/security/resource/config.xml	Fri Apr 25 09:03:20 2008 -0400
@@ -1,380 +1,380 @@
-<?xml version="1.0"?>
-<!--
-<!DOCTYPE Configuration SYSTEM "config.dtd">
--->
-<!-- This configuration file is used for configuration of the com.sun.org.apache.xml.internal.security package -->
-<Configuration target="com.sun.org.apache.xml.internal.security" xmlns="http://www.xmlsecurity.org/NS/#configuration">
-   <CanonicalizationMethods>
-      <CanonicalizationMethod URI="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"
-                              JAVACLASS="com.sun.org.apache.xml.internal.security.c14n.implementations.Canonicalizer20010315OmitComments" />
-      <CanonicalizationMethod URI="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"
-                              JAVACLASS="com.sun.org.apache.xml.internal.security.c14n.implementations.Canonicalizer20010315WithComments" />
-
-      <CanonicalizationMethod URI="http://www.w3.org/2001/10/xml-exc-c14n#"
-                              JAVACLASS="com.sun.org.apache.xml.internal.security.c14n.implementations.Canonicalizer20010315ExclOmitComments"/>
-      <CanonicalizationMethod URI="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"
-                              JAVACLASS="com.sun.org.apache.xml.internal.security.c14n.implementations.Canonicalizer20010315ExclWithComments"/>
-   </CanonicalizationMethods>
-   <TransformAlgorithms>
-      <!-- Base64 -->
-      <TransformAlgorithm URI="http://www.w3.org/2000/09/xmldsig#base64"
-                          JAVACLASS="com.sun.org.apache.xml.internal.security.transforms.implementations.TransformBase64Decode" />
-      <!-- c14n omitting comments -->
-      <TransformAlgorithm URI="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"
-                          JAVACLASS="com.sun.org.apache.xml.internal.security.transforms.implementations.TransformC14N" />
-      <!-- c14n with comments -->
-      <TransformAlgorithm URI="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"
-                          JAVACLASS="com.sun.org.apache.xml.internal.security.transforms.implementations.TransformC14NWithComments" />
-      <!-- exclusive c14n omitting comments -->
-      <TransformAlgorithm URI="http://www.w3.org/2001/10/xml-exc-c14n#"
-                          JAVACLASS="com.sun.org.apache.xml.internal.security.transforms.implementations.TransformC14NExclusive" />
-      <!-- exclusive c14n with comments -->
-      <TransformAlgorithm URI="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"
-                          JAVACLASS="com.sun.org.apache.xml.internal.security.transforms.implementations.TransformC14NExclusiveWithComments" />
-
-      <!-- XPath transform -->
-      <TransformAlgorithm URI="http://www.w3.org/TR/1999/REC-xpath-19991116"
-                          JAVACLASS="com.sun.org.apache.xml.internal.security.transforms.implementations.TransformXPath" />
-      <!-- enveloped signature -->
-      <TransformAlgorithm URI="http://www.w3.org/2000/09/xmldsig#enveloped-signature"
-                          JAVACLASS="com.sun.org.apache.xml.internal.security.transforms.implementations.TransformEnvelopedSignature" />
-      <!-- XSLT -->
-      <TransformAlgorithm URI="http://www.w3.org/TR/1999/REC-xslt-19991116"
-                          JAVACLASS="com.sun.org.apache.xml.internal.security.transforms.implementations.TransformXSLT" />
-      <!-- XPath version 2 -->
-      <TransformAlgorithm URI="http://www.w3.org/2002/04/xmldsig-filter2"
-                          JAVACLASS="com.sun.org.apache.xml.internal.security.transforms.implementations.TransformXPath2Filter" />
-      <!-- XPath version 2b -->
-      <TransformAlgorithm URI="http://www.w3.org/2002/06/xmldsig-filter2"
-                          JAVACLASS="com.sun.org.apache.xml.internal.security.transforms.implementations.TransformXPath2Filter" />
-   </TransformAlgorithms>
-   <SignatureAlgorithms>
-      <SignatureAlgorithm URI="http://www.w3.org/2000/09/xmldsig#dsa-sha1"
-                          JAVACLASS="com.sun.org.apache.xml.internal.security.algorithms.implementations.SignatureDSA" />
-      <SignatureAlgorithm URI="http://www.w3.org/2000/09/xmldsig#rsa-sha1"
-                          JAVACLASS="com.sun.org.apache.xml.internal.security.algorithms.implementations.SignatureBaseRSA$SignatureRSASHA1" />
-      <SignatureAlgorithm URI="http://www.w3.org/2000/09/xmldsig#hmac-sha1"
-                          JAVACLASS="com.sun.org.apache.xml.internal.security.algorithms.implementations.IntegrityHmac$IntegrityHmacSHA1" />
-
-      <SignatureAlgorithm URI="http://www.w3.org/2001/04/xmldsig-more#rsa-md5"
-                          JAVACLASS="com.sun.org.apache.xml.internal.security.algorithms.implementations.SignatureBaseRSA$SignatureRSAMD5" />
-      <SignatureAlgorithm URI="http://www.w3.org/2001/04/xmldsig-more#rsa-ripemd160"
-                          JAVACLASS="com.sun.org.apache.xml.internal.security.algorithms.implementations.SignatureBaseRSA$SignatureRSARIPEMD160" />
-      <SignatureAlgorithm URI="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"
-                          JAVACLASS="com.sun.org.apache.xml.internal.security.algorithms.implementations.SignatureBaseRSA$SignatureRSASHA256" />
-      <SignatureAlgorithm URI="http://www.w3.org/2001/04/xmldsig-more#rsa-sha384"
-                          JAVACLASS="com.sun.org.apache.xml.internal.security.algorithms.implementations.SignatureBaseRSA$SignatureRSASHA384" />
-      <SignatureAlgorithm URI="http://www.w3.org/2001/04/xmldsig-more#rsa-sha512"
-                          JAVACLASS="com.sun.org.apache.xml.internal.security.algorithms.implementations.SignatureBaseRSA$SignatureRSASHA512" />
-
-      <SignatureAlgorithm URI="http://www.w3.org/2001/04/xmldsig-more#hmac-md5"
-                          JAVACLASS="com.sun.org.apache.xml.internal.security.algorithms.implementations.IntegrityHmac$IntegrityHmacMD5" />
-      <SignatureAlgorithm URI="http://www.w3.org/2001/04/xmldsig-more#hmac-ripemd160"
-                          JAVACLASS="com.sun.org.apache.xml.internal.security.algorithms.implementations.IntegrityHmac$IntegrityHmacRIPEMD160" />
-      <SignatureAlgorithm URI="http://www.w3.org/2001/04/xmldsig-more#hmac-sha256"
-                          JAVACLASS="com.sun.org.apache.xml.internal.security.algorithms.implementations.IntegrityHmac$IntegrityHmacSHA256" />
-      <SignatureAlgorithm URI="http://www.w3.org/2001/04/xmldsig-more#hmac-sha384"
-                          JAVACLASS="com.sun.org.apache.xml.internal.security.algorithms.implementations.IntegrityHmac$IntegrityHmacSHA384" />
-      <SignatureAlgorithm URI="http://www.w3.org/2001/04/xmldsig-more#hmac-sha512"
-                          JAVACLASS="com.sun.org.apache.xml.internal.security.algorithms.implementations.IntegrityHmac$IntegrityHmacSHA512" />
-   </SignatureAlgorithms>
-   <JCEAlgorithmMappings>
-      <Algorithms>
-         <!-- MessageDigest Algorithms -->
-         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#md5"
-                    Description="MD5 message digest from RFC 1321"
-                    AlgorithmClass="MessageDigest"
-                    RequirementLevel="NOT RECOMMENDED"
-                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"
-                    JCEName="MD5"/>
-
-         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#ripemd160"
-                    Description="RIPEMD-160 message digest"
-                    AlgorithmClass="MessageDigest"
-                    RequirementLevel="OPTIONAL"
-                    JCEName="RIPEMD160"/>
-
-         <Algorithm URI="http://www.w3.org/2000/09/xmldsig#sha1"
-                    Description="SHA-1 message digest"
-                    AlgorithmClass="MessageDigest"
-                    RequirementLevel="REQUIRED"
-                    JCEName="SHA-1"/>
-
-         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#sha256"
-                    Description="SHA-1 message digest with 256 bit"
-                    AlgorithmClass="MessageDigest"
-                    RequirementLevel="RECOMMENDED"
-                    JCEName="SHA-256"/>
-
-         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#sha384"
-                    Description="SHA message digest with 384 bit"
-                    AlgorithmClass="MessageDigest"
-                    RequirementLevel="OPTIONAL"
-                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"
-                    JCEName="SHA-384"/>
-
-         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#sha512"
-                    Description="SHA-1 message digest with 512 bit"
-                    AlgorithmClass="MessageDigest"
-                    RequirementLevel="OPTIONAL"
-                    JCEName="SHA-512"/>
-
-         <!-- Signature Algorithms -->
-         <Algorithm URI="http://www.w3.org/2000/09/xmldsig#dsa-sha1"
-                    Description="Digital Signature Algorithm with SHA-1 message digest"
-                    AlgorithmClass="Signature"
-                    RequirementLevel="REQUIRED"
-                    JCEName="SHA1withDSA"/>
-
-         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#rsa-md5"
-                    Description="RSA Signature with MD5 message digest"
-                    AlgorithmClass="Signature"
-                    RequirementLevel="NOT RECOMMENDED"
-                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"
-                    JCEName="MD5withRSA"/>
-
-         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#rsa-ripemd160"
-                    Description="RSA Signature with RIPEMD-160 message digest"
-                    AlgorithmClass="Signature"
-                    RequirementLevel="OPTIONAL"
-                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"
-                    JCEName="RIPEMD160withRSA"/>
-
-         <Algorithm URI="http://www.w3.org/2000/09/xmldsig#rsa-sha1"
-                    Description="RSA Signature with SHA-1 message digest"
-                    AlgorithmClass="Signature"
-                    RequirementLevel="RECOMMENDED"
-                    JCEName="SHA1withRSA"/>
-
-         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"
-                    Description="RSA Signature with SHA-256 message digest"
-                    AlgorithmClass="Signature"
-                    RequirementLevel="OPTIONAL"
-                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"
-                    JCEName="SHA256withRSA"/>
-
-         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#rsa-sha384"
-                    Description="RSA Signature with SHA-384 message digest"
-                    AlgorithmClass="Signature"
-                    RequirementLevel="OPTIONAL"
-                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"
-                    JCEName="SHA384withRSA"/>
-
-         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#rsa-sha512"
-                    Description="RSA Signature with SHA-512 message digest"
-                    AlgorithmClass="Signature"
-                    RequirementLevel="OPTIONAL"
-                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"
-                    JCEName="SHA512withRSA"/>
-
-         <!-- MAC Algorithms -->
-         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#hmac-md5"
-                    Description="Message Authentication code using MD5"
-                    AlgorithmClass="Mac"
-                    RequirementLevel="NOT RECOMMENDED"
-                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"
-                    JCEName="HmacMD5"/>
-
-         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#hmac-ripemd160"
-                    Description="Message Authentication code using RIPEMD-160"
-                    AlgorithmClass="Mac"
-                    RequirementLevel="OPTIONAL"
-                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"
-                    JCEName="HMACRIPEMD160"/>
-
-         <Algorithm URI="http://www.w3.org/2000/09/xmldsig#hmac-sha1"
-                    Description="Message Authentication code using SHA1"
-                    AlgorithmClass="Mac"
-                    RequirementLevel="REQUIRED"
-                    JCEName="HmacSHA1"/>
-
-         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#hmac-sha256"
-                    Description="Message Authentication code using SHA-256"
-                    AlgorithmClass="Mac"
-                    RequirementLevel="OPTIONAL"
-                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"
-                    JCEName="HmacSHA256"/>
-
-         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#hmac-sha384"
-                    Description="Message Authentication code using SHA-384"
-                    AlgorithmClass="Mac"
-                    RequirementLevel="OPTIONAL"
-                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"
-                    JCEName="HmacSHA384"/>
-
-         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#hmac-sha512"
-                    Description="Message Authentication code using SHA-512"
-                    AlgorithmClass="Mac"
-                    RequirementLevel="OPTIONAL"
-                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"
-                    JCEName="HmacSHA512"/>
-
-         <!-- Block encryption Algorithms -->
-         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"
-                    Description="Block encryption using Triple-DES"
-                    AlgorithmClass="BlockEncryption"
-                    RequirementLevel="REQUIRED"
-                    KeyLength="192"
-                    RequiredKey="DESede"
-                    JCEName="DESede/CBC/ISO10126Padding"/>
-
-         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#aes128-cbc"
-                    Description="Block encryption using AES with a key length of 128 bit"
-                    AlgorithmClass="BlockEncryption"
-                    RequirementLevel="REQUIRED"
-                    KeyLength="128"
-                    RequiredKey="AES"
-                    JCEName="AES/CBC/ISO10126Padding"/>
-
-         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#aes192-cbc"
-                    Description="Block encryption using AES with a key length of 192 bit"
-                    AlgorithmClass="BlockEncryption"
-                    RequirementLevel="OPTIONAL"
-                    KeyLength="192"
-                    RequiredKey="AES"
-                    JCEName="AES/CBC/ISO10126Padding"/>
-
-         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#aes256-cbc"
-                    Description="Block encryption using AES with a key length of 256 bit"
-                    AlgorithmClass="BlockEncryption"
-                    RequirementLevel="REQUIRED"
-                    KeyLength="256"
-                    RequiredKey="AES"
-                    JCEName="AES/CBC/ISO10126Padding"/>
-
-         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#rsa-1_5"
-                    Description="Key Transport RSA-v1.5"
-                    AlgorithmClass="KeyTransport"
-                    RequirementLevel="REQUIRED"
-                    RequiredKey="RSA"
-                    JCEName="RSA/ECB/PKCS1Padding"/>
-
-         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"
-                    Description="Key Transport RSA-OAEP"
-                    AlgorithmClass="KeyTransport"
-                    RequirementLevel="REQUIRED"
-                    RequiredKey="RSA"
-                    JCEName="RSA/ECB/OAEPWithSHA1AndMGF1Padding"/>
-
-         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#dh"
-                    Description="Key Agreement Diffie-Hellman"
-                    AlgorithmClass="KeyAgreement"
-                    RequirementLevel="OPTIONAL"/>
-
-         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#kw-tripledes"
-                    Description="Symmetric Key Wrap using Triple DES"
-                    AlgorithmClass="SymmetricKeyWrap"
-                    RequirementLevel="REQUIRED"
-                    KeyLength="192"
-                    RequiredKey="DESede"
-                    JCEName="DESedeWrap"/>
-
-         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#kw-aes128"
-                    Description="Symmetric Key Wrap using AES with a key length of 128 bit"
-                    AlgorithmClass="SymmetricKeyWrap"
-                    RequirementLevel="REQUIRED"
-                    KeyLength="128"
-                    RequiredKey="AES"
-                    JCEName="AESWrap"/>
-
-         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#kw-aes192"
-                    Description="Symmetric Key Wrap using AES with a key length of 192 bit"
-                    AlgorithmClass="SymmetricKeyWrap"
-                    RequirementLevel="OPTIONAL"
-                    KeyLength="192"
-                    RequiredKey="AES"
-                    JCEName="AESWrap"/>
-
-         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#kw-aes256"
-                    Description="Symmetric Key Wrap using AES with a key length of 256 bit"
-                    AlgorithmClass="SymmetricKeyWrap"
-                    RequirementLevel="REQUIRED"
-                    KeyLength="256"
-                    RequiredKey="AES"
-                    JCEName="AESWrap"/>
-
-      </Algorithms>
-   </JCEAlgorithmMappings>
-   <ResourceBundles defaultLanguageCode="en" defaultCountryCode="US">
-      <ResourceBundle LanguageCode="en"
-                      CountryCode="US"
-                      LOCATION="com.sun.org.apache.xml.internal.security/resource/xmlsecurity_en.properties" />
-      <ResourceBundle LanguageCode="de"
-                      CountryCode="DE"
-                      LOCATION="com.sun.org.apache.xml.internal.security/resource/xmlsecurity_de.properties" />
-   </ResourceBundles>
-   <ResourceResolvers>
-      <Resolver JAVACLASS="com.sun.org.apache.xml.internal.security.utils.resolver.implementations.ResolverDirectHTTP"
-                DESCRIPTION="A simple resolver for requests to HTTP space" />
-      <Resolver JAVACLASS="com.sun.org.apache.xml.internal.security.utils.resolver.implementations.ResolverLocalFilesystem"
-                DESCRIPTION="A simple resolver for requests to the local file system" />
-      <Resolver JAVACLASS="com.sun.org.apache.xml.internal.security.utils.resolver.implementations.ResolverFragment"
-                DESCRIPTION="A simple resolver for requests of same-document URIs" />
-      <Resolver JAVACLASS="com.sun.org.apache.xml.internal.security.utils.resolver.implementations.ResolverXPointer"
-                DESCRIPTION="A simple resolver for requests of XPointer fragents" />
-   </ResourceResolvers>
-   <!-- <defaultLocale languageCode="en" countryCode="US" /> -->
-   <KeyInfo>
-      <ContentHandler LOCALNAME="KeyName"
-                      NAMESPACE="http://www.w3.org/2000/09/xmldsig#"
-                      JAVACLASS="com.sun.org.apache.xml.internal.security.keys.content.KeyName" />
-      <ContentHandler LOCALNAME="KeyValue"
-                      NAMESPACE="http://www.w3.org/2000/09/xmldsig#"
-                      JAVACLASS="com.sun.org.apache.xml.internal.security.keys.content.KeyValue" />
-      <ContentHandler LOCALNAME="RetrievalMethod"
-                      NAMESPACE="http://www.w3.org/2000/09/xmldsig#"
-                      JAVACLASS="com.sun.org.apache.xml.internal.security.keys.content.RetrievalMethod" />
-      <ContentHandler LOCALNAME="X509Data"
-                      NAMESPACE="http://www.w3.org/2000/09/xmldsig#"
-                      JAVACLASS="com.sun.org.apache.xml.internal.security.keys.content.X509Data" />
-      <ContentHandler LOCALNAME="PGPData"
-                      NAMESPACE="http://www.w3.org/2000/09/xmldsig#"
-                      JAVACLASS="com.sun.org.apache.xml.internal.security.keys.content.PGPData" />
-      <ContentHandler LOCALNAME="SPKIData"
-                      NAMESPACE="http://www.w3.org/2000/09/xmldsig#"
-                      JAVACLASS="com.sun.org.apache.xml.internal.security.keys.content.SPKIData" />
-      <ContentHandler LOCALNAME="MgmtData"
-                      NAMESPACE="http://www.w3.org/2000/09/xmldsig#"
-                      JAVACLASS="com.sun.org.apache.xml.internal.security.keys.content.MgmtData" />
-   </KeyInfo>
-   <KeyResolver>
-      <!-- This section contains a list of KeyResolvers that are available in
-           every KeyInfo object -->
-      <Resolver JAVACLASS="com.sun.org.apache.xml.internal.security.keys.keyresolver.implementations.RSAKeyValueResolver"
-                DESCRIPTION="Can extract RSA public keys" />
-      <Resolver JAVACLASS="com.sun.org.apache.xml.internal.security.keys.keyresolver.implementations.DSAKeyValueResolver"
-                DESCRIPTION="Can extract DSA public keys" />
-      <Resolver JAVACLASS="com.sun.org.apache.xml.internal.security.keys.keyresolver.implementations.X509CertificateResolver"
-                DESCRIPTION="Can extract public keys from X509 certificates" />
-      <Resolver JAVACLASS="com.sun.org.apache.xml.internal.security.keys.keyresolver.implementations.X509SKIResolver"
-                DESCRIPTION="Uses an X509v3 SubjectKeyIdentifier extension to retrieve a certificate from the storages" />
-      <Resolver JAVACLASS="com.sun.org.apache.xml.internal.security.keys.keyresolver.implementations.RetrievalMethodResolver"
-                DESCRIPTION="Resolves keys and certificates using ResourceResolvers" />
-      <Resolver JAVACLASS="com.sun.org.apache.xml.internal.security.keys.keyresolver.implementations.X509SubjectNameResolver"
-                DESCRIPTION="Uses an X509 SubjectName to retrieve a certificate from the storages" />
-      <Resolver JAVACLASS="com.sun.org.apache.xml.internal.security.keys.keyresolver.implementations.X509IssuerSerialResolver"
-                DESCRIPTION="Uses an X509 IssuerName and IssuerSerial to retrieve a certificate from the storages" />
-   </KeyResolver>
- 
-   <PrefixMappings>
-      <!-- Many classes create Elements which are in a specific namespace;
-           here, the prefixes for these namespaces are defined. But this
-           can also be overwritten using the ElementProxy#setDefaultPrefix()
-           method. You can even set all prefixes to "" so that the corresponding
-           elements are created using the default namespace -->
-      <PrefixMapping namespace="http://www.w3.org/2000/09/xmldsig#"
-                     prefix="ds" />
-      <PrefixMapping namespace="http://www.w3.org/2001/04/xmlenc#"
-                     prefix="xenc" />
-      <PrefixMapping namespace="http://www.xmlsecurity.org/experimental#"
-                     prefix="experimental" />
-      <PrefixMapping namespace="http://www.w3.org/2002/04/xmldsig-filter2"
-                     prefix="dsig-xpath-old" />
-      <PrefixMapping namespace="http://www.w3.org/2002/06/xmldsig-filter2"
-                     prefix="dsig-xpath" />
-      <PrefixMapping namespace="http://www.w3.org/2001/10/xml-exc-c14n#"
-                     prefix="ec" />
-      <PrefixMapping namespace="http://www.nue.et-inf.uni-siegen.de/~geuer-pollmann/#xpathFilter"
-                     prefix="xx" />
-   </PrefixMappings>
-</Configuration>
+<?xml version="1.0"?>
+<!--
+<!DOCTYPE Configuration SYSTEM "config.dtd">
+-->
+<!-- This configuration file is used for configuration of the com.sun.org.apache.xml.internal.security package -->
+<Configuration target="com.sun.org.apache.xml.internal.security" xmlns="http://www.xmlsecurity.org/NS/#configuration">
+   <CanonicalizationMethods>
+      <CanonicalizationMethod URI="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"
+                              JAVACLASS="com.sun.org.apache.xml.internal.security.c14n.implementations.Canonicalizer20010315OmitComments" />
+      <CanonicalizationMethod URI="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"
+                              JAVACLASS="com.sun.org.apache.xml.internal.security.c14n.implementations.Canonicalizer20010315WithComments" />
+
+      <CanonicalizationMethod URI="http://www.w3.org/2001/10/xml-exc-c14n#"
+                              JAVACLASS="com.sun.org.apache.xml.internal.security.c14n.implementations.Canonicalizer20010315ExclOmitComments"/>
+      <CanonicalizationMethod URI="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"
+                              JAVACLASS="com.sun.org.apache.xml.internal.security.c14n.implementations.Canonicalizer20010315ExclWithComments"/>
+   </CanonicalizationMethods>
+   <TransformAlgorithms>
+      <!-- Base64 -->
+      <TransformAlgorithm URI="http://www.w3.org/2000/09/xmldsig#base64"
+                          JAVACLASS="com.sun.org.apache.xml.internal.security.transforms.implementations.TransformBase64Decode" />
+      <!-- c14n omitting comments -->
+      <TransformAlgorithm URI="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"
+                          JAVACLASS="com.sun.org.apache.xml.internal.security.transforms.implementations.TransformC14N" />
+      <!-- c14n with comments -->
+      <TransformAlgorithm URI="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"
+                          JAVACLASS="com.sun.org.apache.xml.internal.security.transforms.implementations.TransformC14NWithComments" />
+      <!-- exclusive c14n omitting comments -->
+      <TransformAlgorithm URI="http://www.w3.org/2001/10/xml-exc-c14n#"
+                          JAVACLASS="com.sun.org.apache.xml.internal.security.transforms.implementations.TransformC14NExclusive" />
+      <!-- exclusive c14n with comments -->
+      <TransformAlgorithm URI="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"
+                          JAVACLASS="com.sun.org.apache.xml.internal.security.transforms.implementations.TransformC14NExclusiveWithComments" />
+
+      <!-- XPath transform -->
+      <TransformAlgorithm URI="http://www.w3.org/TR/1999/REC-xpath-19991116"
+                          JAVACLASS="com.sun.org.apache.xml.internal.security.transforms.implementations.TransformXPath" />
+      <!-- enveloped signature -->
+      <TransformAlgorithm URI="http://www.w3.org/2000/09/xmldsig#enveloped-signature"
+                          JAVACLASS="com.sun.org.apache.xml.internal.security.transforms.implementations.TransformEnvelopedSignature" />
+      <!-- XSLT -->
+      <TransformAlgorithm URI="http://www.w3.org/TR/1999/REC-xslt-19991116"
+                          JAVACLASS="com.sun.org.apache.xml.internal.security.transforms.implementations.TransformXSLT" />
+      <!-- XPath version 2 -->
+      <TransformAlgorithm URI="http://www.w3.org/2002/04/xmldsig-filter2"
+                          JAVACLASS="com.sun.org.apache.xml.internal.security.transforms.implementations.TransformXPath2Filter" />
+      <!-- XPath version 2b -->
+      <TransformAlgorithm URI="http://www.w3.org/2002/06/xmldsig-filter2"
+                          JAVACLASS="com.sun.org.apache.xml.internal.security.transforms.implementations.TransformXPath2Filter" />
+   </TransformAlgorithms>
+   <SignatureAlgorithms>
+      <SignatureAlgorithm URI="http://www.w3.org/2000/09/xmldsig#dsa-sha1"
+                          JAVACLASS="com.sun.org.apache.xml.internal.security.algorithms.implementations.SignatureDSA" />
+      <SignatureAlgorithm URI="http://www.w3.org/2000/09/xmldsig#rsa-sha1"
+                          JAVACLASS="com.sun.org.apache.xml.internal.security.algorithms.implementations.SignatureBaseRSA$SignatureRSASHA1" />
+      <SignatureAlgorithm URI="http://www.w3.org/2000/09/xmldsig#hmac-sha1"
+                          JAVACLASS="com.sun.org.apache.xml.internal.security.algorithms.implementations.IntegrityHmac$IntegrityHmacSHA1" />
+
+      <SignatureAlgorithm URI="http://www.w3.org/2001/04/xmldsig-more#rsa-md5"
+                          JAVACLASS="com.sun.org.apache.xml.internal.security.algorithms.implementations.SignatureBaseRSA$SignatureRSAMD5" />
+      <SignatureAlgorithm URI="http://www.w3.org/2001/04/xmldsig-more#rsa-ripemd160"
+                          JAVACLASS="com.sun.org.apache.xml.internal.security.algorithms.implementations.SignatureBaseRSA$SignatureRSARIPEMD160" />
+      <SignatureAlgorithm URI="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"
+                          JAVACLASS="com.sun.org.apache.xml.internal.security.algorithms.implementations.SignatureBaseRSA$SignatureRSASHA256" />
+      <SignatureAlgorithm URI="http://www.w3.org/2001/04/xmldsig-more#rsa-sha384"
+                          JAVACLASS="com.sun.org.apache.xml.internal.security.algorithms.implementations.SignatureBaseRSA$SignatureRSASHA384" />
+      <SignatureAlgorithm URI="http://www.w3.org/2001/04/xmldsig-more#rsa-sha512"
+                          JAVACLASS="com.sun.org.apache.xml.internal.security.algorithms.implementations.SignatureBaseRSA$SignatureRSASHA512" />
+
+      <SignatureAlgorithm URI="http://www.w3.org/2001/04/xmldsig-more#hmac-md5"
+                          JAVACLASS="com.sun.org.apache.xml.internal.security.algorithms.implementations.IntegrityHmac$IntegrityHmacMD5" />
+      <SignatureAlgorithm URI="http://www.w3.org/2001/04/xmldsig-more#hmac-ripemd160"
+                          JAVACLASS="com.sun.org.apache.xml.internal.security.algorithms.implementations.IntegrityHmac$IntegrityHmacRIPEMD160" />
+      <SignatureAlgorithm URI="http://www.w3.org/2001/04/xmldsig-more#hmac-sha256"
+                          JAVACLASS="com.sun.org.apache.xml.internal.security.algorithms.implementations.IntegrityHmac$IntegrityHmacSHA256" />
+      <SignatureAlgorithm URI="http://www.w3.org/2001/04/xmldsig-more#hmac-sha384"
+                          JAVACLASS="com.sun.org.apache.xml.internal.security.algorithms.implementations.IntegrityHmac$IntegrityHmacSHA384" />
+      <SignatureAlgorithm URI="http://www.w3.org/2001/04/xmldsig-more#hmac-sha512"
+                          JAVACLASS="com.sun.org.apache.xml.internal.security.algorithms.implementations.IntegrityHmac$IntegrityHmacSHA512" />
+   </SignatureAlgorithms>
+   <JCEAlgorithmMappings>
+      <Algorithms>
+         <!-- MessageDigest Algorithms -->
+         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#md5"
+                    Description="MD5 message digest from RFC 1321"
+                    AlgorithmClass="MessageDigest"
+                    RequirementLevel="NOT RECOMMENDED"
+                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"
+                    JCEName="MD5"/>
+
+         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#ripemd160"
+                    Description="RIPEMD-160 message digest"
+                    AlgorithmClass="MessageDigest"
+                    RequirementLevel="OPTIONAL"
+                    JCEName="RIPEMD160"/>
+
+         <Algorithm URI="http://www.w3.org/2000/09/xmldsig#sha1"
+                    Description="SHA-1 message digest"
+                    AlgorithmClass="MessageDigest"
+                    RequirementLevel="REQUIRED"
+                    JCEName="SHA-1"/>
+
+         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#sha256"
+                    Description="SHA-1 message digest with 256 bit"
+                    AlgorithmClass="MessageDigest"
+                    RequirementLevel="RECOMMENDED"
+                    JCEName="SHA-256"/>
+
+         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#sha384"
+                    Description="SHA message digest with 384 bit"
+                    AlgorithmClass="MessageDigest"
+                    RequirementLevel="OPTIONAL"
+                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"
+                    JCEName="SHA-384"/>
+
+         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#sha512"
+                    Description="SHA-1 message digest with 512 bit"
+                    AlgorithmClass="MessageDigest"
+                    RequirementLevel="OPTIONAL"
+                    JCEName="SHA-512"/>
+
+         <!-- Signature Algorithms -->
+         <Algorithm URI="http://www.w3.org/2000/09/xmldsig#dsa-sha1"
+                    Description="Digital Signature Algorithm with SHA-1 message digest"
+                    AlgorithmClass="Signature"
+                    RequirementLevel="REQUIRED"
+                    JCEName="SHA1withDSA"/>
+
+         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#rsa-md5"
+                    Description="RSA Signature with MD5 message digest"
+                    AlgorithmClass="Signature"
+                    RequirementLevel="NOT RECOMMENDED"
+                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"
+                    JCEName="MD5withRSA"/>
+
+         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#rsa-ripemd160"
+                    Description="RSA Signature with RIPEMD-160 message digest"
+                    AlgorithmClass="Signature"
+                    RequirementLevel="OPTIONAL"
+                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"
+                    JCEName="RIPEMD160withRSA"/>
+
+         <Algorithm URI="http://www.w3.org/2000/09/xmldsig#rsa-sha1"
+                    Description="RSA Signature with SHA-1 message digest"
+                    AlgorithmClass="Signature"
+                    RequirementLevel="RECOMMENDED"
+                    JCEName="SHA1withRSA"/>
+
+         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"
+                    Description="RSA Signature with SHA-256 message digest"
+                    AlgorithmClass="Signature"
+                    RequirementLevel="OPTIONAL"
+                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"
+                    JCEName="SHA256withRSA"/>
+
+         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#rsa-sha384"
+                    Description="RSA Signature with SHA-384 message digest"
+                    AlgorithmClass="Signature"
+                    RequirementLevel="OPTIONAL"
+                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"
+                    JCEName="SHA384withRSA"/>
+
+         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#rsa-sha512"
+                    Description="RSA Signature with SHA-512 message digest"
+                    AlgorithmClass="Signature"
+                    RequirementLevel="OPTIONAL"
+                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"
+                    JCEName="SHA512withRSA"/>
+
+         <!-- MAC Algorithms -->
+         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#hmac-md5"
+                    Description="Message Authentication code using MD5"
+                    AlgorithmClass="Mac"
+                    RequirementLevel="NOT RECOMMENDED"
+                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"
+                    JCEName="HmacMD5"/>
+
+         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#hmac-ripemd160"
+                    Description="Message Authentication code using RIPEMD-160"
+                    AlgorithmClass="Mac"
+                    RequirementLevel="OPTIONAL"
+                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"
+                    JCEName="HMACRIPEMD160"/>
+
+         <Algorithm URI="http://www.w3.org/2000/09/xmldsig#hmac-sha1"
+                    Description="Message Authentication code using SHA1"
+                    AlgorithmClass="Mac"
+                    RequirementLevel="REQUIRED"
+                    JCEName="HmacSHA1"/>
+
+         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#hmac-sha256"
+                    Description="Message Authentication code using SHA-256"
+                    AlgorithmClass="Mac"
+                    RequirementLevel="OPTIONAL"
+                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"
+                    JCEName="HmacSHA256"/>
+
+         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#hmac-sha384"
+                    Description="Message Authentication code using SHA-384"
+                    AlgorithmClass="Mac"
+                    RequirementLevel="OPTIONAL"
+                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"
+                    JCEName="HmacSHA384"/>
+
+         <Algorithm URI="http://www.w3.org/2001/04/xmldsig-more#hmac-sha512"
+                    Description="Message Authentication code using SHA-512"
+                    AlgorithmClass="Mac"
+                    RequirementLevel="OPTIONAL"
+                    SpecificationURL="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"
+                    JCEName="HmacSHA512"/>
+
+         <!-- Block encryption Algorithms -->
+         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"
+                    Description="Block encryption using Triple-DES"
+                    AlgorithmClass="BlockEncryption"
+                    RequirementLevel="REQUIRED"
+                    KeyLength="192"
+                    RequiredKey="DESede"
+                    JCEName="DESede/CBC/ISO10126Padding"/>
+
+         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#aes128-cbc"
+                    Description="Block encryption using AES with a key length of 128 bit"
+                    AlgorithmClass="BlockEncryption"
+                    RequirementLevel="REQUIRED"
+                    KeyLength="128"
+                    RequiredKey="AES"
+                    JCEName="AES/CBC/ISO10126Padding"/>
+
+         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#aes192-cbc"
+                    Description="Block encryption using AES with a key length of 192 bit"
+                    AlgorithmClass="BlockEncryption"
+                    RequirementLevel="OPTIONAL"
+                    KeyLength="192"
+                    RequiredKey="AES"
+                    JCEName="AES/CBC/ISO10126Padding"/>
+
+         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#aes256-cbc"
+                    Description="Block encryption using AES with a key length of 256 bit"
+                    AlgorithmClass="BlockEncryption"
+                    RequirementLevel="REQUIRED"
+                    KeyLength="256"
+                    RequiredKey="AES"
+                    JCEName="AES/CBC/ISO10126Padding"/>
+
+         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#rsa-1_5"
+                    Description="Key Transport RSA-v1.5"
+                    AlgorithmClass="KeyTransport"
+                    RequirementLevel="REQUIRED"
+                    RequiredKey="RSA"
+                    JCEName="RSA/ECB/PKCS1Padding"/>
+
+         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"
+                    Description="Key Transport RSA-OAEP"
+                    AlgorithmClass="KeyTransport"
+                    RequirementLevel="REQUIRED"
+                    RequiredKey="RSA"
+                    JCEName="RSA/ECB/OAEPWithSHA1AndMGF1Padding"/>
+
+         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#dh"
+                    Description="Key Agreement Diffie-Hellman"
+                    AlgorithmClass="KeyAgreement"
+                    RequirementLevel="OPTIONAL"/>
+
+         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#kw-tripledes"
+                    Description="Symmetric Key Wrap using Triple DES"
+                    AlgorithmClass="SymmetricKeyWrap"
+                    RequirementLevel="REQUIRED"
+                    KeyLength="192"
+                    RequiredKey="DESede"
+                    JCEName="DESedeWrap"/>
+
+         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#kw-aes128"
+                    Description="Symmetric Key Wrap using AES with a key length of 128 bit"
+                    AlgorithmClass="SymmetricKeyWrap"
+                    RequirementLevel="REQUIRED"
+                    KeyLength="128"
+                    RequiredKey="AES"
+                    JCEName="AESWrap"/>
+
+         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#kw-aes192"
+                    Description="Symmetric Key Wrap using AES with a key length of 192 bit"
+                    AlgorithmClass="SymmetricKeyWrap"
+                    RequirementLevel="OPTIONAL"
+                    KeyLength="192"
+                    RequiredKey="AES"
+                    JCEName="AESWrap"/>
+
+         <Algorithm URI="http://www.w3.org/2001/04/xmlenc#kw-aes256"
+                    Description="Symmetric Key Wrap using AES with a key length of 256 bit"
+                    AlgorithmClass="SymmetricKeyWrap"
+                    RequirementLevel="REQUIRED"
+                    KeyLength="256"
+                    RequiredKey="AES"
+                    JCEName="AESWrap"/>
+
+      </Algorithms>
+   </JCEAlgorithmMappings>
+   <ResourceBundles defaultLanguageCode="en" defaultCountryCode="US">
+      <ResourceBundle LanguageCode="en"
+                      CountryCode="US"
+                      LOCATION="com.sun.org.apache.xml.internal.security/resource/xmlsecurity_en.properties" />
+      <ResourceBundle LanguageCode="de"
+                      CountryCode="DE"
+                      LOCATION="com.sun.org.apache.xml.internal.security/resource/xmlsecurity_de.properties" />
+   </ResourceBundles>
+   <ResourceResolvers>
+      <Resolver JAVACLASS="com.sun.org.apache.xml.internal.security.utils.resolver.implementations.ResolverDirectHTTP"
+                DESCRIPTION="A simple resolver for requests to HTTP space" />
+      <Resolver JAVACLASS="com.sun.org.apache.xml.internal.security.utils.resolver.implementations.ResolverLocalFilesystem"
+                DESCRIPTION="A simple resolver for requests to the local file system" />
+      <Resolver JAVACLASS="com.sun.org.apache.xml.internal.security.utils.resolver.implementations.ResolverFragment"
+                DESCRIPTION="A simple resolver for requests of same-document URIs" />
+      <Resolver JAVACLASS="com.sun.org.apache.xml.internal.security.utils.resolver.implementations.ResolverXPointer"
+                DESCRIPTION="A simple resolver for requests of XPointer fragents" />
+   </ResourceResolvers>
+   <!-- <defaultLocale languageCode="en" countryCode="US" /> -->
+   <KeyInfo>
+      <ContentHandler LOCALNAME="KeyName"
+                      NAMESPACE="http://www.w3.org/2000/09/xmldsig#"
+                      JAVACLASS="com.sun.org.apache.xml.internal.security.keys.content.KeyName" />
+      <ContentHandler LOCALNAME="KeyValue"
+                      NAMESPACE="http://www.w3.org/2000/09/xmldsig#"
+                      JAVACLASS="com.sun.org.apache.xml.internal.security.keys.content.KeyValue" />
+      <ContentHandler LOCALNAME="RetrievalMethod"
+                      NAMESPACE="http://www.w3.org/2000/09/xmldsig#"
+                      JAVACLASS="com.sun.org.apache.xml.internal.security.keys.content.RetrievalMethod" />
+      <ContentHandler LOCALNAME="X509Data"
+                      NAMESPACE="http://www.w3.org/2000/09/xmldsig#"
+                      JAVACLASS="com.sun.org.apache.xml.internal.security.keys.content.X509Data" />
+      <ContentHandler LOCALNAME="PGPData"
+                      NAMESPACE="http://www.w3.org/2000/09/xmldsig#"
+                      JAVACLASS="com.sun.org.apache.xml.internal.security.keys.content.PGPData" />
+      <ContentHandler LOCALNAME="SPKIData"
+                      NAMESPACE="http://www.w3.org/2000/09/xmldsig#"
+                      JAVACLASS="com.sun.org.apache.xml.internal.security.keys.content.SPKIData" />
+      <ContentHandler LOCALNAME="MgmtData"
+                      NAMESPACE="http://www.w3.org/2000/09/xmldsig#"
+                      JAVACLASS="com.sun.org.apache.xml.internal.security.keys.content.MgmtData" />
+   </KeyInfo>
+   <KeyResolver>
+      <!-- This section contains a list of KeyResolvers that are available in
+           every KeyInfo object -->
+      <Resolver JAVACLASS="com.sun.org.apache.xml.internal.security.keys.keyresolver.implementations.RSAKeyValueResolver"
+                DESCRIPTION="Can extract RSA public keys" />
+      <Resolver JAVACLASS="com.sun.org.apache.xml.internal.security.keys.keyresolver.implementations.DSAKeyValueResolver"
+                DESCRIPTION="Can extract DSA public keys" />
+      <Resolver JAVACLASS="com.sun.org.apache.xml.internal.security.keys.keyresolver.implementations.X509CertificateResolver"
+                DESCRIPTION="Can extract public keys from X509 certificates" />
+      <Resolver JAVACLASS="com.sun.org.apache.xml.internal.security.keys.keyresolver.implementations.X509SKIResolver"
+                DESCRIPTION="Uses an X509v3 SubjectKeyIdentifier extension to retrieve a certificate from the storages" />
+      <Resolver JAVACLASS="com.sun.org.apache.xml.internal.security.keys.keyresolver.implementations.RetrievalMethodResolver"
+                DESCRIPTION="Resolves keys and certificates using ResourceResolvers" />
+      <Resolver JAVACLASS="com.sun.org.apache.xml.internal.security.keys.keyresolver.implementations.X509SubjectNameResolver"
+                DESCRIPTION="Uses an X509 SubjectName to retrieve a certificate from the storages" />
+      <Resolver JAVACLASS="com.sun.org.apache.xml.internal.security.keys.keyresolver.implementations.X509IssuerSerialResolver"
+                DESCRIPTION="Uses an X509 IssuerName and IssuerSerial to retrieve a certificate from the storages" />
+   </KeyResolver>
+ 
+   <PrefixMappings>
+      <!-- Many classes create Elements which are in a specific namespace;
+           here, the prefixes for these namespaces are defined. But this
+           can also be overwritten using the ElementProxy#setDefaultPrefix()
+           method. You can even set all prefixes to "" so that the corresponding
+           elements are created using the default namespace -->
+      <PrefixMapping namespace="http://www.w3.org/2000/09/xmldsig#"
+                     prefix="ds" />
+      <PrefixMapping namespace="http://www.w3.org/2001/04/xmlenc#"
+                     prefix="xenc" />
+      <PrefixMapping namespace="http://www.xmlsecurity.org/experimental#"
+                     prefix="experimental" />
+      <PrefixMapping namespace="http://www.w3.org/2002/04/xmldsig-filter2"
+                     prefix="dsig-xpath-old" />
+      <PrefixMapping namespace="http://www.w3.org/2002/06/xmldsig-filter2"
+                     prefix="dsig-xpath" />
+      <PrefixMapping namespace="http://www.w3.org/2001/10/xml-exc-c14n#"
+                     prefix="ec" />
+      <PrefixMapping namespace="http://www.nue.et-inf.uni-siegen.de/~geuer-pollmann/#xpathFilter"
+                     prefix="xx" />
+   </PrefixMappings>
+</Configuration>
--- a/src/share/classes/com/sun/org/apache/xml/internal/security/resource/schema/etsi.xsd	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/com/sun/org/apache/xml/internal/security/resource/schema/etsi.xsd	Fri Apr 25 09:03:20 2008 -0400
@@ -1,347 +1,347 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- edited with XML Spy v4.3 U (http://www.xmlspy.com) by XMLSpy v4 (Altova) -->
-<xsd:schema targetNamespace="http://uri.etsi.org/01903/v1.1.1#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://uri.etsi.org/01903/v1.1.1#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" elementFormDefault="qualified" xsi:schemaLocation="http://www.w3.org/2000/09/xmldsig# xmldsig-core-schema.xsd">
-	<xsd:element name="Any" type="AnyType"/>
-	<xsd:complexType name="AnyType" mixed="true">
-		<xsd:sequence>
-			<xsd:any namespace="##any"/>
-		</xsd:sequence>
-		<xsd:anyAttribute namespace="##any"/>
-	</xsd:complexType>
-	<xsd:element name="ObjectIdentifier" type="ObjectIdentifierType"/>
-	<xsd:complexType name="ObjectIdentifierType">
-		<xsd:sequence>
-			<xsd:element name="Identifier" type="IdentifierType"/>
-			<xsd:element name="Description" type="xsd:string" minOccurs="0"/>
-			<xsd:element name="DocumentationReferences" type="DocumentationReferencesType" minOccurs="0"/>
-		</xsd:sequence>
-	</xsd:complexType>
-	<xsd:complexType name="IdentifierType">
-		<xsd:simpleContent>
-			<xsd:extension base="xsd:anyURI">
-				<xsd:attribute name="Qualifier" type="QualifierType" use="optional"/>
-			</xsd:extension>
-		</xsd:simpleContent>
-	</xsd:complexType>
-	<xsd:simpleType name="QualifierType">
-		<xsd:restriction base="xsd:string">
-			<xsd:enumeration value="OIDAsURI"/>
-			<xsd:enumeration value="OIDAsURN"/>
-		</xsd:restriction>
-	</xsd:simpleType>
-	<xsd:complexType name="DocumentationReferencesType">
-		<xsd:sequence maxOccurs="unbounded">
-			<xsd:element name="DocumentationReference" type="xsd:anyURI"/>
-		</xsd:sequence>
-	</xsd:complexType>
-	<xsd:element name="EncapsulatedPKIData" type="EncapsulatedPKIDataType"/>
-	<xsd:complexType name="EncapsulatedPKIDataType">
-		<xsd:simpleContent>
-			<xsd:extension base="xsd:base64Binary">
-				<xsd:attribute name="Id" type="xsd:ID" use="optional"/>
-			</xsd:extension>
-		</xsd:simpleContent>
-	</xsd:complexType>
-	<xsd:element name="TimeStamp" type="TimeStampType"/>
-	<xsd:complexType name="TimeStampType">
-		<xsd:sequence>
-			<xsd:element name="HashDataInfo" type="HashDataInfoType" maxOccurs="unbounded"/>
-			<xsd:choice>
-				<xsd:element name="EncapsulatedTimeStamp" type="EncapsulatedPKIDataType"/>
-				<xsd:element name="XMLTimeStamp" type="AnyType"/>
-			</xsd:choice>
-		</xsd:sequence>
-	</xsd:complexType>
-	<xsd:complexType name="HashDataInfoType">
-		<xsd:sequence>
-			<xsd:element name="Transforms" type="ds:TransformsType" minOccurs="0"/>
-		</xsd:sequence>
-		<xsd:attribute name="uri" type="xsd:anyURI" use="required"/>
-	</xsd:complexType>
-	<xsd:element name="QualifyingProperties" type="QualifyingPropertiesType"/>
-	<xsd:complexType name="QualifyingPropertiesType">
-		<xsd:sequence>
-			<xsd:element name="SignedProperties" type="SignedPropertiesType" minOccurs="0"/>
-			<xsd:element name="UnsignedProperties" type="UnsignedPropertiesType" minOccurs="0"/>
-		</xsd:sequence>
-		<xsd:attribute name="Target" type="xsd:anyURI" use="required"/>
-		<xsd:attribute name="Id" type="xsd:ID" use="optional"/>
-	</xsd:complexType>
-	<xsd:element name="SignedProperties" type="SignedPropertiesType"/>
-	<xsd:complexType name="SignedPropertiesType">
-		<xsd:sequence>
-			<xsd:element name="SignedSignatureProperties" type="SignedSignaturePropertiesType"/>
-			<xsd:element name="SignedDataObjectProperties" type="SignedDataObjectPropertiesType" minOccurs="0"/>
-		</xsd:sequence>
-		<xsd:attribute name="Id" type="xsd:ID" use="optional"/>
-	</xsd:complexType>
-	<xsd:element name="UnsignedProperties" type="UnsignedPropertiesType"/>
-	<xsd:complexType name="UnsignedPropertiesType">
-		<xsd:sequence>
-			<xsd:element name="UnsignedSignatureProperties" type="UnsignedSignaturePropertiesType" minOccurs="0"/>
-			<xsd:element name="UnsignedDataObjectProperties" type="UnsignedDataObjectPropertiesType" minOccurs="0"/>
-		</xsd:sequence>
-		<xsd:attribute name="Id" type="xsd:ID" use="optional"/>
-	</xsd:complexType>
-	<xsd:element name="SignedSignatureProperties" type="SignedSignaturePropertiesType"/>
-	<xsd:complexType name="SignedSignaturePropertiesType">
-		<xsd:sequence>
-			<xsd:element name="SigningTime" type="xsd:dateTime"/>
-			<xsd:element name="SigningCertificate" type="CertIDListType"/>
-			<xsd:element name="SignaturePolicyIdentifier" type="SignaturePolicyIdentifierType"/>
-			<xsd:element name="SignatureProductionPlace" type="SignatureProductionPlaceType" minOccurs="0"/>
-			<xsd:element name="SignerRole" type="SignerRoleType" minOccurs="0"/>
-		</xsd:sequence>
-	</xsd:complexType>
-	<xsd:element name="SignedDataObjectProperties" type="SignedDataObjectPropertiesType"/>
-	<xsd:complexType name="SignedDataObjectPropertiesType">
-		<xsd:sequence>
-			<xsd:element name="DataObjectFormat" type="DataObjectFormatType" minOccurs="0" maxOccurs="unbounded"/>
-			<xsd:element name="CommitmentTypeIndication" type="CommitmentTypeIndicationType" minOccurs="0" maxOccurs="unbounded"/>
-			<xsd:element name="AllDataObjectsTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>
-			<xsd:element name="IndividualDataObjectsTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>
-		</xsd:sequence>
-	</xsd:complexType>
-	<xsd:element name="UnsignedSignatureProperties" type="UnsignedSignaturePropertiesType"/>
-	<xsd:complexType name="UnsignedSignaturePropertiesType">
-		<xsd:sequence>
-			<xsd:element name="CounterSignature" type="CounterSignatureType" minOccurs="0" maxOccurs="unbounded"/>
-			<xsd:element name="SignatureTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>
-			<xsd:element name="CompleteCertificateRefs" type="CompleteCertificateRefsType" minOccurs="0"/>
-			<xsd:element name="CompleteRevocationRefs" type="CompleteRevocationRefsType" minOccurs="0"/>
-			<xsd:choice>
-				<xsd:element name="SigAndRefsTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>
-				<xsd:element name="RefsOnlyTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>
-			</xsd:choice>
-			<xsd:element name="CertificateValues" type="CertificateValuesType" minOccurs="0"/>
-			<xsd:element name="RevocationValues" type="RevocationValuesType" minOccurs="0"/>
-			<xsd:element name="ArchiveTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>
-		</xsd:sequence>
-	</xsd:complexType>
-	<xsd:element name="UnsignedDataObjectProperties" type="UnsignedDataObjectPropertiesType"/>
-	<xsd:complexType name="UnsignedDataObjectPropertiesType">
-		<xsd:sequence>
-			<xsd:element name="UnsignedDataObjectProperty" type="AnyType" minOccurs="0" maxOccurs="unbounded"/>
-		</xsd:sequence>
-	</xsd:complexType>
-	<xsd:element name="QualifyingPropertiesReference" type="QualifyingPropertiesReferenceType"/>
-	<xsd:complexType name="QualifyingPropertiesReferenceType">
-		<xsd:sequence>
-			<xsd:element name="Transforms" type="ds:TransformsType" minOccurs="0"/>
-		</xsd:sequence>
-		<xsd:attribute name="URI" type="xsd:anyURI" use="required"/>
-		<xsd:attribute name="Id" type="xsd:ID" use="optional"/>
-	</xsd:complexType>
-	<xsd:element name="SigningTime" type="xsd:dateTime"/>
-	<xsd:element name="SigningCertificate" type="CertIDListType"/>
-	<xsd:complexType name="CertIDListType">
-		<xsd:sequence>
-			<xsd:element name="Cert" type="CertIDType" maxOccurs="unbounded"/>
-		</xsd:sequence>
-	</xsd:complexType>
-	<xsd:complexType name="CertIDType">
-		<xsd:sequence>
-			<xsd:element name="CertDigest" type="DigestAlgAndValueType"/>
-			<xsd:element name="IssuerSerial" type="ds:X509IssuerSerialType"/>
-		</xsd:sequence>
-	</xsd:complexType>
-	<xsd:complexType name="DigestAlgAndValueType">
-		<xsd:sequence>
-			<xsd:element name="DigestMethod" type="ds:DigestMethodType"/>
-			<xsd:element name="DigestValue" type="ds:DigestValueType"/>
-		</xsd:sequence>
-	</xsd:complexType>
-	<xsd:element name="SignaturePolicyIdentifier" type="SignaturePolicyIdentifierType"/>
-	<xsd:complexType name="SignaturePolicyIdentifierType">
-		<xsd:choice>
-			<xsd:element name="SignaturePolicyId" type="SignaturePolicyIdType"/>
-			<xsd:element name="SignaturePolicyImplied"/>
-		</xsd:choice>
-	</xsd:complexType>
-	<xsd:complexType name="SignaturePolicyIdType">
-		<xsd:sequence>
-			<xsd:element name="SigPolicyId" type="ObjectIdentifierType"/>
-			<xsd:element ref="ds:Transforms" minOccurs="0"/>
-			<xsd:element name="SigPolicyHash" type="DigestAlgAndValueType"/>
-			<xsd:element name="SigPolicyQualifiers" type="SigPolicyQualifiersListType" minOccurs="0"/>
-		</xsd:sequence>
-	</xsd:complexType>
-	<xsd:complexType name="SigPolicyQualifiersListType">
-		<xsd:sequence>
-			<xsd:element name="SigPolicyQualifier" type="AnyType" maxOccurs="unbounded"/>
-		</xsd:sequence>
-	</xsd:complexType>
-	<xsd:element name="SPURI" type="xsd:anyURI"/>
-	<xsd:element name="SPUserNotice" type="SPUserNoticeType"/>
-	<xsd:complexType name="SPUserNoticeType">
-		<xsd:sequence>
-			<xsd:element name="NoticeRef" type="NoticeReferenceType" minOccurs="0"/>
-			<xsd:element name="ExplicitText" type="xsd:string" minOccurs="0"/>
-		</xsd:sequence>
-	</xsd:complexType>
-	<xsd:complexType name="NoticeReferenceType">
-		<xsd:sequence>
-			<xsd:element name="Organization" type="xsd:string"/>
-			<xsd:element name="NoticeNumbers" type="IntegerListType"/>
-		</xsd:sequence>
-	</xsd:complexType>
-	<xsd:complexType name="IntegerListType">
-		<xsd:sequence>
-			<xsd:element name="int" type="xsd:integer" minOccurs="0" maxOccurs="unbounded"/>
-		</xsd:sequence>
-	</xsd:complexType>
-	<xsd:element name="CounterSignature" type="CounterSignatureType"/>
-	<xsd:complexType name="CounterSignatureType">
-		<xsd:sequence>
-			<xsd:element ref="ds:Signature"/>
-		</xsd:sequence>
-	</xsd:complexType>
-	<xsd:element name="DataObjectFormat" type="DataObjectFormatType"/>
-	<xsd:complexType name="DataObjectFormatType">
-		<xsd:sequence>
-			<xsd:element name="Description" type="xsd:string" minOccurs="0"/>
-			<xsd:element name="ObjectIdentifier" type="ObjectIdentifierType" minOccurs="0"/>
-			<xsd:element name="MimeType" type="xsd:string" minOccurs="0"/>
-			<xsd:element name="Encoding" type="xsd:anyURI" minOccurs="0"/>
-		</xsd:sequence>
-		<xsd:attribute name="ObjectReference" type="xsd:anyURI" use="required"/>
-	</xsd:complexType>
-	<xsd:element name="CommitmentTypeIndication" type="CommitmentTypeIndicationType"/>
-	<xsd:complexType name="CommitmentTypeIndicationType">
-		<xsd:sequence>
-			<xsd:element name="CommitmentTypeId" type="ObjectIdentifierType"/>
-			<xsd:choice>
-				<xsd:element name="ObjectReference" type="xsd:anyURI" minOccurs="0" maxOccurs="unbounded"/>
-				<xsd:element name="AllSignedDataObjects"/>
-			</xsd:choice>
-			<xsd:element name="CommitmentTypeQualifiers" type="CommitmentTypeQualifiersListType" minOccurs="0"/>
-		</xsd:sequence>
-	</xsd:complexType>
-	<xsd:complexType name="CommitmentTypeQualifiersListType">
-		<xsd:sequence>
-			<xsd:element name="CommitmentTypeQualifier" type="AnyType" minOccurs="0" maxOccurs="unbounded"/>
-		</xsd:sequence>
-	</xsd:complexType>
-	<xsd:element name="SignatureProductionPlace" type="SignatureProductionPlaceType"/>
-	<xsd:complexType name="SignatureProductionPlaceType">
-		<xsd:sequence>
-			<xsd:element name="City" type="xsd:string" minOccurs="0"/>
-			<xsd:element name="StateOrProvince" type="xsd:string" minOccurs="0"/>
-			<xsd:element name="PostalCode" type="xsd:string" minOccurs="0"/>
-			<xsd:element name="CountryName" type="xsd:string" minOccurs="0"/>
-		</xsd:sequence>
-	</xsd:complexType>
-	<xsd:element name="SignerRole" type="SignerRoleType"/>
-	<xsd:complexType name="SignerRoleType">
-		<xsd:sequence>
-			<xsd:element name="ClaimedRoles" type="ClaimedRolesListType" minOccurs="0"/>
-			<xsd:element name="CertifiedRoles" type="CertifiedRolesListType" minOccurs="0"/>
-		</xsd:sequence>
-	</xsd:complexType>
-	<xsd:complexType name="ClaimedRolesListType">
-		<xsd:sequence>
-			<xsd:element name="ClaimedRole" type="AnyType" maxOccurs="unbounded"/>
-		</xsd:sequence>
-	</xsd:complexType>
-	<xsd:complexType name="CertifiedRolesListType">
-		<xsd:sequence>
-			<xsd:element name="CertifiedRole" type="EncapsulatedPKIDataType" maxOccurs="unbounded"/>
-		</xsd:sequence>
-	</xsd:complexType>
-	<xsd:element name="AllDataObjectsTimeStamp" type="TimeStampType"/>
-	<xsd:element name="IndividualDataObjectsTimeStamp" type="TimeStampType"/>
-	<xsd:element name="SignatureTimeStamp" type="TimeStampType"/>
-	<xsd:element name="CompleteCertificateRefs" type="CompleteCertificateRefsType"/>
-	<xsd:complexType name="CompleteCertificateRefsType">
-		<xsd:sequence>
-			<xsd:element name="CertRefs" type="CertIDListType"/>
-		</xsd:sequence>
-		<xsd:attribute name="Id" type="xsd:ID" use="optional"/>
-	</xsd:complexType>
-	<xsd:element name="CompleteRevocationRefs" type="CompleteRevocationRefsType"/>
-	<xsd:complexType name="CompleteRevocationRefsType">
-		<xsd:sequence>
-			<xsd:element name="CRLRefs" type="CRLRefsType" minOccurs="0"/>
-			<xsd:element name="OCSPRefs" type="OCSPRefsType" minOccurs="0"/>
-			<xsd:element name="OtherRefs" type="OtherCertStatusRefsType" minOccurs="0"/>
-		</xsd:sequence>
-		<xsd:attribute name="Id" type="xsd:ID" use="optional"/>
-	</xsd:complexType>
-	<xsd:complexType name="CRLRefsType">
-		<xsd:sequence>
-			<xsd:element name="CRLRef" type="CRLRefType" maxOccurs="unbounded"/>
-		</xsd:sequence>
-	</xsd:complexType>
-	<xsd:complexType name="CRLRefType">
-		<xsd:sequence>
-			<xsd:element name="DigestAlgAndValue" type="DigestAlgAndValueType"/>
-			<xsd:element name="CRLIdentifier" type="CRLIdentifierType" minOccurs="0"/>
-		</xsd:sequence>
-	</xsd:complexType>
-	<xsd:complexType name="CRLIdentifierType">
-		<xsd:sequence>
-			<xsd:element name="Issuer" type="xsd:string"/>
-			<xsd:element name="IssueTime" type="xsd:dateTime"/>
-			<xsd:element name="Number" type="xsd:integer" minOccurs="0"/>
-		</xsd:sequence>
-		<xsd:attribute name="URI" type="xsd:anyURI" use="optional"/>
-	</xsd:complexType>
-	<xsd:complexType name="OCSPRefsType">
-		<xsd:sequence>
-			<xsd:element name="OCSPRef" type="OCSPRefType" maxOccurs="unbounded"/>
-		</xsd:sequence>
-	</xsd:complexType>
-	<xsd:complexType name="OCSPRefType">
-		<xsd:sequence>
-			<xsd:element name="OCSPIdentifier" type="OCSPIdentifierType"/>
-			<xsd:element name="DigestAlgAndValue" type="DigestAlgAndValueType" minOccurs="0"/>
-		</xsd:sequence>
-	</xsd:complexType>
-	<xsd:complexType name="OCSPIdentifierType">
-		<xsd:sequence>
-			<xsd:element name="ResponderID" type="xsd:string"/>
-			<xsd:element name="ProducedAt" type="xsd:dateTime"/>
-		</xsd:sequence>
-		<xsd:attribute name="URI" type="xsd:anyURI" use="optional"/>
-	</xsd:complexType>
-	<xsd:complexType name="OtherCertStatusRefsType">
-		<xsd:sequence>
-			<xsd:element name="OtherRef" type="AnyType" maxOccurs="unbounded"/>
-		</xsd:sequence>
-	</xsd:complexType>
-	<xsd:element name="SigAndRefsTimeStamp" type="TimeStampType"/>
-	<xsd:element name="RefsOnlyTimeStamp" type="TimeStampType"/>
-	<xsd:element name="CertificateValues" type="CertificateValuesType"/>
-	<xsd:complexType name="CertificateValuesType">
-		<xsd:choice minOccurs="0" maxOccurs="unbounded">
-			<xsd:element name="EncapsulatedX509Certificate" type="EncapsulatedPKIDataType"/>
-			<xsd:element name="OtherCertificate" type="AnyType"/>
-		</xsd:choice>
-		<xsd:attribute name="Id" type="xsd:ID" use="optional"/>
-	</xsd:complexType>
-	<xsd:element name="RevocationValues" type="RevocationValuesType"/>
-	<xsd:complexType name="RevocationValuesType">
-		<xsd:sequence>
-			<xsd:element name="CRLValues" type="CRLValuesType" minOccurs="0"/>
-			<xsd:element name="OCSPValues" type="OCSPValuesType" minOccurs="0"/>
-			<xsd:element name="OtherValues" type="OtherCertStatusValuesType" minOccurs="0"/>
-		</xsd:sequence>
-		<xsd:attribute name="Id" type="xsd:ID" use="optional"/>
-	</xsd:complexType>
-	<xsd:complexType name="CRLValuesType">
-		<xsd:sequence>
-			<xsd:element name="EncapsulatedCRLValue" type="EncapsulatedPKIDataType" maxOccurs="unbounded"/>
-		</xsd:sequence>
-	</xsd:complexType>
-	<xsd:complexType name="OCSPValuesType">
-		<xsd:sequence>
-			<xsd:element name="EncapsulatedOCSPValue" type="EncapsulatedPKIDataType" maxOccurs="unbounded"/>
-		</xsd:sequence>
-	</xsd:complexType>
-	<xsd:complexType name="OtherCertStatusValuesType">
-		<xsd:sequence>
-			<xsd:element name="OtherValue" type="AnyType" maxOccurs="unbounded"/>
-		</xsd:sequence>
-	</xsd:complexType>
-	<xsd:element name="ArchiveTimeStamp" type="TimeStampType"/>
-</xsd:schema>
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XML Spy v4.3 U (http://www.xmlspy.com) by XMLSpy v4 (Altova) -->
+<xsd:schema targetNamespace="http://uri.etsi.org/01903/v1.1.1#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://uri.etsi.org/01903/v1.1.1#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" elementFormDefault="qualified" xsi:schemaLocation="http://www.w3.org/2000/09/xmldsig# xmldsig-core-schema.xsd">
+	<xsd:element name="Any" type="AnyType"/>
+	<xsd:complexType name="AnyType" mixed="true">
+		<xsd:sequence>
+			<xsd:any namespace="##any"/>
+		</xsd:sequence>
+		<xsd:anyAttribute namespace="##any"/>
+	</xsd:complexType>
+	<xsd:element name="ObjectIdentifier" type="ObjectIdentifierType"/>
+	<xsd:complexType name="ObjectIdentifierType">
+		<xsd:sequence>
+			<xsd:element name="Identifier" type="IdentifierType"/>
+			<xsd:element name="Description" type="xsd:string" minOccurs="0"/>
+			<xsd:element name="DocumentationReferences" type="DocumentationReferencesType" minOccurs="0"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="IdentifierType">
+		<xsd:simpleContent>
+			<xsd:extension base="xsd:anyURI">
+				<xsd:attribute name="Qualifier" type="QualifierType" use="optional"/>
+			</xsd:extension>
+		</xsd:simpleContent>
+	</xsd:complexType>
+	<xsd:simpleType name="QualifierType">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="OIDAsURI"/>
+			<xsd:enumeration value="OIDAsURN"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+	<xsd:complexType name="DocumentationReferencesType">
+		<xsd:sequence maxOccurs="unbounded">
+			<xsd:element name="DocumentationReference" type="xsd:anyURI"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:element name="EncapsulatedPKIData" type="EncapsulatedPKIDataType"/>
+	<xsd:complexType name="EncapsulatedPKIDataType">
+		<xsd:simpleContent>
+			<xsd:extension base="xsd:base64Binary">
+				<xsd:attribute name="Id" type="xsd:ID" use="optional"/>
+			</xsd:extension>
+		</xsd:simpleContent>
+	</xsd:complexType>
+	<xsd:element name="TimeStamp" type="TimeStampType"/>
+	<xsd:complexType name="TimeStampType">
+		<xsd:sequence>
+			<xsd:element name="HashDataInfo" type="HashDataInfoType" maxOccurs="unbounded"/>
+			<xsd:choice>
+				<xsd:element name="EncapsulatedTimeStamp" type="EncapsulatedPKIDataType"/>
+				<xsd:element name="XMLTimeStamp" type="AnyType"/>
+			</xsd:choice>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="HashDataInfoType">
+		<xsd:sequence>
+			<xsd:element name="Transforms" type="ds:TransformsType" minOccurs="0"/>
+		</xsd:sequence>
+		<xsd:attribute name="uri" type="xsd:anyURI" use="required"/>
+	</xsd:complexType>
+	<xsd:element name="QualifyingProperties" type="QualifyingPropertiesType"/>
+	<xsd:complexType name="QualifyingPropertiesType">
+		<xsd:sequence>
+			<xsd:element name="SignedProperties" type="SignedPropertiesType" minOccurs="0"/>
+			<xsd:element name="UnsignedProperties" type="UnsignedPropertiesType" minOccurs="0"/>
+		</xsd:sequence>
+		<xsd:attribute name="Target" type="xsd:anyURI" use="required"/>
+		<xsd:attribute name="Id" type="xsd:ID" use="optional"/>
+	</xsd:complexType>
+	<xsd:element name="SignedProperties" type="SignedPropertiesType"/>
+	<xsd:complexType name="SignedPropertiesType">
+		<xsd:sequence>
+			<xsd:element name="SignedSignatureProperties" type="SignedSignaturePropertiesType"/>
+			<xsd:element name="SignedDataObjectProperties" type="SignedDataObjectPropertiesType" minOccurs="0"/>
+		</xsd:sequence>
+		<xsd:attribute name="Id" type="xsd:ID" use="optional"/>
+	</xsd:complexType>
+	<xsd:element name="UnsignedProperties" type="UnsignedPropertiesType"/>
+	<xsd:complexType name="UnsignedPropertiesType">
+		<xsd:sequence>
+			<xsd:element name="UnsignedSignatureProperties" type="UnsignedSignaturePropertiesType" minOccurs="0"/>
+			<xsd:element name="UnsignedDataObjectProperties" type="UnsignedDataObjectPropertiesType" minOccurs="0"/>
+		</xsd:sequence>
+		<xsd:attribute name="Id" type="xsd:ID" use="optional"/>
+	</xsd:complexType>
+	<xsd:element name="SignedSignatureProperties" type="SignedSignaturePropertiesType"/>
+	<xsd:complexType name="SignedSignaturePropertiesType">
+		<xsd:sequence>
+			<xsd:element name="SigningTime" type="xsd:dateTime"/>
+			<xsd:element name="SigningCertificate" type="CertIDListType"/>
+			<xsd:element name="SignaturePolicyIdentifier" type="SignaturePolicyIdentifierType"/>
+			<xsd:element name="SignatureProductionPlace" type="SignatureProductionPlaceType" minOccurs="0"/>
+			<xsd:element name="SignerRole" type="SignerRoleType" minOccurs="0"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:element name="SignedDataObjectProperties" type="SignedDataObjectPropertiesType"/>
+	<xsd:complexType name="SignedDataObjectPropertiesType">
+		<xsd:sequence>
+			<xsd:element name="DataObjectFormat" type="DataObjectFormatType" minOccurs="0" maxOccurs="unbounded"/>
+			<xsd:element name="CommitmentTypeIndication" type="CommitmentTypeIndicationType" minOccurs="0" maxOccurs="unbounded"/>
+			<xsd:element name="AllDataObjectsTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>
+			<xsd:element name="IndividualDataObjectsTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:element name="UnsignedSignatureProperties" type="UnsignedSignaturePropertiesType"/>
+	<xsd:complexType name="UnsignedSignaturePropertiesType">
+		<xsd:sequence>
+			<xsd:element name="CounterSignature" type="CounterSignatureType" minOccurs="0" maxOccurs="unbounded"/>
+			<xsd:element name="SignatureTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>
+			<xsd:element name="CompleteCertificateRefs" type="CompleteCertificateRefsType" minOccurs="0"/>
+			<xsd:element name="CompleteRevocationRefs" type="CompleteRevocationRefsType" minOccurs="0"/>
+			<xsd:choice>
+				<xsd:element name="SigAndRefsTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>
+				<xsd:element name="RefsOnlyTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>
+			</xsd:choice>
+			<xsd:element name="CertificateValues" type="CertificateValuesType" minOccurs="0"/>
+			<xsd:element name="RevocationValues" type="RevocationValuesType" minOccurs="0"/>
+			<xsd:element name="ArchiveTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:element name="UnsignedDataObjectProperties" type="UnsignedDataObjectPropertiesType"/>
+	<xsd:complexType name="UnsignedDataObjectPropertiesType">
+		<xsd:sequence>
+			<xsd:element name="UnsignedDataObjectProperty" type="AnyType" minOccurs="0" maxOccurs="unbounded"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:element name="QualifyingPropertiesReference" type="QualifyingPropertiesReferenceType"/>
+	<xsd:complexType name="QualifyingPropertiesReferenceType">
+		<xsd:sequence>
+			<xsd:element name="Transforms" type="ds:TransformsType" minOccurs="0"/>
+		</xsd:sequence>
+		<xsd:attribute name="URI" type="xsd:anyURI" use="required"/>
+		<xsd:attribute name="Id" type="xsd:ID" use="optional"/>
+	</xsd:complexType>
+	<xsd:element name="SigningTime" type="xsd:dateTime"/>
+	<xsd:element name="SigningCertificate" type="CertIDListType"/>
+	<xsd:complexType name="CertIDListType">
+		<xsd:sequence>
+			<xsd:element name="Cert" type="CertIDType" maxOccurs="unbounded"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="CertIDType">
+		<xsd:sequence>
+			<xsd:element name="CertDigest" type="DigestAlgAndValueType"/>
+			<xsd:element name="IssuerSerial" type="ds:X509IssuerSerialType"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="DigestAlgAndValueType">
+		<xsd:sequence>
+			<xsd:element name="DigestMethod" type="ds:DigestMethodType"/>
+			<xsd:element name="DigestValue" type="ds:DigestValueType"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:element name="SignaturePolicyIdentifier" type="SignaturePolicyIdentifierType"/>
+	<xsd:complexType name="SignaturePolicyIdentifierType">
+		<xsd:choice>
+			<xsd:element name="SignaturePolicyId" type="SignaturePolicyIdType"/>
+			<xsd:element name="SignaturePolicyImplied"/>
+		</xsd:choice>
+	</xsd:complexType>
+	<xsd:complexType name="SignaturePolicyIdType">
+		<xsd:sequence>
+			<xsd:element name="SigPolicyId" type="ObjectIdentifierType"/>
+			<xsd:element ref="ds:Transforms" minOccurs="0"/>
+			<xsd:element name="SigPolicyHash" type="DigestAlgAndValueType"/>
+			<xsd:element name="SigPolicyQualifiers" type="SigPolicyQualifiersListType" minOccurs="0"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="SigPolicyQualifiersListType">
+		<xsd:sequence>
+			<xsd:element name="SigPolicyQualifier" type="AnyType" maxOccurs="unbounded"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:element name="SPURI" type="xsd:anyURI"/>
+	<xsd:element name="SPUserNotice" type="SPUserNoticeType"/>
+	<xsd:complexType name="SPUserNoticeType">
+		<xsd:sequence>
+			<xsd:element name="NoticeRef" type="NoticeReferenceType" minOccurs="0"/>
+			<xsd:element name="ExplicitText" type="xsd:string" minOccurs="0"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="NoticeReferenceType">
+		<xsd:sequence>
+			<xsd:element name="Organization" type="xsd:string"/>
+			<xsd:element name="NoticeNumbers" type="IntegerListType"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="IntegerListType">
+		<xsd:sequence>
+			<xsd:element name="int" type="xsd:integer" minOccurs="0" maxOccurs="unbounded"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:element name="CounterSignature" type="CounterSignatureType"/>
+	<xsd:complexType name="CounterSignatureType">
+		<xsd:sequence>
+			<xsd:element ref="ds:Signature"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:element name="DataObjectFormat" type="DataObjectFormatType"/>
+	<xsd:complexType name="DataObjectFormatType">
+		<xsd:sequence>
+			<xsd:element name="Description" type="xsd:string" minOccurs="0"/>
+			<xsd:element name="ObjectIdentifier" type="ObjectIdentifierType" minOccurs="0"/>
+			<xsd:element name="MimeType" type="xsd:string" minOccurs="0"/>
+			<xsd:element name="Encoding" type="xsd:anyURI" minOccurs="0"/>
+		</xsd:sequence>
+		<xsd:attribute name="ObjectReference" type="xsd:anyURI" use="required"/>
+	</xsd:complexType>
+	<xsd:element name="CommitmentTypeIndication" type="CommitmentTypeIndicationType"/>
+	<xsd:complexType name="CommitmentTypeIndicationType">
+		<xsd:sequence>
+			<xsd:element name="CommitmentTypeId" type="ObjectIdentifierType"/>
+			<xsd:choice>
+				<xsd:element name="ObjectReference" type="xsd:anyURI" minOccurs="0" maxOccurs="unbounded"/>
+				<xsd:element name="AllSignedDataObjects"/>
+			</xsd:choice>
+			<xsd:element name="CommitmentTypeQualifiers" type="CommitmentTypeQualifiersListType" minOccurs="0"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="CommitmentTypeQualifiersListType">
+		<xsd:sequence>
+			<xsd:element name="CommitmentTypeQualifier" type="AnyType" minOccurs="0" maxOccurs="unbounded"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:element name="SignatureProductionPlace" type="SignatureProductionPlaceType"/>
+	<xsd:complexType name="SignatureProductionPlaceType">
+		<xsd:sequence>
+			<xsd:element name="City" type="xsd:string" minOccurs="0"/>
+			<xsd:element name="StateOrProvince" type="xsd:string" minOccurs="0"/>
+			<xsd:element name="PostalCode" type="xsd:string" minOccurs="0"/>
+			<xsd:element name="CountryName" type="xsd:string" minOccurs="0"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:element name="SignerRole" type="SignerRoleType"/>
+	<xsd:complexType name="SignerRoleType">
+		<xsd:sequence>
+			<xsd:element name="ClaimedRoles" type="ClaimedRolesListType" minOccurs="0"/>
+			<xsd:element name="CertifiedRoles" type="CertifiedRolesListType" minOccurs="0"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="ClaimedRolesListType">
+		<xsd:sequence>
+			<xsd:element name="ClaimedRole" type="AnyType" maxOccurs="unbounded"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="CertifiedRolesListType">
+		<xsd:sequence>
+			<xsd:element name="CertifiedRole" type="EncapsulatedPKIDataType" maxOccurs="unbounded"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:element name="AllDataObjectsTimeStamp" type="TimeStampType"/>
+	<xsd:element name="IndividualDataObjectsTimeStamp" type="TimeStampType"/>
+	<xsd:element name="SignatureTimeStamp" type="TimeStampType"/>
+	<xsd:element name="CompleteCertificateRefs" type="CompleteCertificateRefsType"/>
+	<xsd:complexType name="CompleteCertificateRefsType">
+		<xsd:sequence>
+			<xsd:element name="CertRefs" type="CertIDListType"/>
+		</xsd:sequence>
+		<xsd:attribute name="Id" type="xsd:ID" use="optional"/>
+	</xsd:complexType>
+	<xsd:element name="CompleteRevocationRefs" type="CompleteRevocationRefsType"/>
+	<xsd:complexType name="CompleteRevocationRefsType">
+		<xsd:sequence>
+			<xsd:element name="CRLRefs" type="CRLRefsType" minOccurs="0"/>
+			<xsd:element name="OCSPRefs" type="OCSPRefsType" minOccurs="0"/>
+			<xsd:element name="OtherRefs" type="OtherCertStatusRefsType" minOccurs="0"/>
+		</xsd:sequence>
+		<xsd:attribute name="Id" type="xsd:ID" use="optional"/>
+	</xsd:complexType>
+	<xsd:complexType name="CRLRefsType">
+		<xsd:sequence>
+			<xsd:element name="CRLRef" type="CRLRefType" maxOccurs="unbounded"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="CRLRefType">
+		<xsd:sequence>
+			<xsd:element name="DigestAlgAndValue" type="DigestAlgAndValueType"/>
+			<xsd:element name="CRLIdentifier" type="CRLIdentifierType" minOccurs="0"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="CRLIdentifierType">
+		<xsd:sequence>
+			<xsd:element name="Issuer" type="xsd:string"/>
+			<xsd:element name="IssueTime" type="xsd:dateTime"/>
+			<xsd:element name="Number" type="xsd:integer" minOccurs="0"/>
+		</xsd:sequence>
+		<xsd:attribute name="URI" type="xsd:anyURI" use="optional"/>
+	</xsd:complexType>
+	<xsd:complexType name="OCSPRefsType">
+		<xsd:sequence>
+			<xsd:element name="OCSPRef" type="OCSPRefType" maxOccurs="unbounded"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="OCSPRefType">
+		<xsd:sequence>
+			<xsd:element name="OCSPIdentifier" type="OCSPIdentifierType"/>
+			<xsd:element name="DigestAlgAndValue" type="DigestAlgAndValueType" minOccurs="0"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="OCSPIdentifierType">
+		<xsd:sequence>
+			<xsd:element name="ResponderID" type="xsd:string"/>
+			<xsd:element name="ProducedAt" type="xsd:dateTime"/>
+		</xsd:sequence>
+		<xsd:attribute name="URI" type="xsd:anyURI" use="optional"/>
+	</xsd:complexType>
+	<xsd:complexType name="OtherCertStatusRefsType">
+		<xsd:sequence>
+			<xsd:element name="OtherRef" type="AnyType" maxOccurs="unbounded"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:element name="SigAndRefsTimeStamp" type="TimeStampType"/>
+	<xsd:element name="RefsOnlyTimeStamp" type="TimeStampType"/>
+	<xsd:element name="CertificateValues" type="CertificateValuesType"/>
+	<xsd:complexType name="CertificateValuesType">
+		<xsd:choice minOccurs="0" maxOccurs="unbounded">
+			<xsd:element name="EncapsulatedX509Certificate" type="EncapsulatedPKIDataType"/>
+			<xsd:element name="OtherCertificate" type="AnyType"/>
+		</xsd:choice>
+		<xsd:attribute name="Id" type="xsd:ID" use="optional"/>
+	</xsd:complexType>
+	<xsd:element name="RevocationValues" type="RevocationValuesType"/>
+	<xsd:complexType name="RevocationValuesType">
+		<xsd:sequence>
+			<xsd:element name="CRLValues" type="CRLValuesType" minOccurs="0"/>
+			<xsd:element name="OCSPValues" type="OCSPValuesType" minOccurs="0"/>
+			<xsd:element name="OtherValues" type="OtherCertStatusValuesType" minOccurs="0"/>
+		</xsd:sequence>
+		<xsd:attribute name="Id" type="xsd:ID" use="optional"/>
+	</xsd:complexType>
+	<xsd:complexType name="CRLValuesType">
+		<xsd:sequence>
+			<xsd:element name="EncapsulatedCRLValue" type="EncapsulatedPKIDataType" maxOccurs="unbounded"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="OCSPValuesType">
+		<xsd:sequence>
+			<xsd:element name="EncapsulatedOCSPValue" type="EncapsulatedPKIDataType" maxOccurs="unbounded"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:complexType name="OtherCertStatusValuesType">
+		<xsd:sequence>
+			<xsd:element name="OtherValue" type="AnyType" maxOccurs="unbounded"/>
+		</xsd:sequence>
+	</xsd:complexType>
+	<xsd:element name="ArchiveTimeStamp" type="TimeStampType"/>
+</xsd:schema>
--- a/src/share/classes/com/sun/org/apache/xml/internal/security/resource/xmlsecurity_en.properties	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/com/sun/org/apache/xml/internal/security/resource/xmlsecurity_en.properties	Fri Apr 25 09:03:20 2008 -0400
@@ -1,123 +1,123 @@
-algorithm.alreadyRegistered = URI {0} already assigned to class {1}
-algorithm.classDoesNotExist = Cannot register URI {0} to class {1} because this class does not exist in CLASSPATH
-algorithm.ClassDoesNotExist = Class {0} does not exist
-algorithm.extendsWrongClass = Cannot register URI {0} to class {1} because it does not extend {2}
-algorithms.CannotUseAlgorithmParameterSpecOnDSA = Sorry, but you cannot use a AlgorithmParameterSpec object for creating DSA signatures.
-algorithms.CannotUseAlgorithmParameterSpecOnRSA = Sorry, but you cannot use a AlgorithmParameterSpec object for creating RSA signatures.
-algorithms.CannotUseSecureRandomOnMAC = Sorry, but you cannot use a SecureRandom object for creating MACs.
-algorithms.HMACOutputLengthOnlyForHMAC = A HMACOutputLength can only be specified for HMAC integrity algorithms
-algorithms.NoSuchAlgorithm = The requested algorithm {0} does not exist. Original Message was: {1}
-algorithms.NoSuchMap = The algorithm URI "{0}" could not be mapped to a JCE algorithm
-algorithms.NoSuchProvider = The specified Provider {0} does not exist. Original Message was: {1}
-algorithms.operationOnlyVerification = A public key can only used for verification of a signature.
-algorithms.WrongKeyForThisOperation = Sorry, you supplied the wrong key type for this operation! You supplied a {0} but a {1} is needed.
-attributeValueIllegal = The attribute {0} has value {1} but must be {2}
-c14n.Canonicalizer.Exception = Exception during Canonicalization:  Original Message was {0}
-c14n.Canonicalizer.IllegalNode = Illegal node type {0}, node name was {1}
-c14n.Canonicalizer.NoSuchCanonicalizer = No canonicalizer found with URI {0}
-c14n.Canonicalizer.ParserConfigurationException = ParserConfigurationException during Canonicalization:  Original Message was {0}
-c14n.Canonicalizer.RelativeNamespace = Element {0} has a relative namespace: {1}="{2}"
-c14n.Canonicalizer.SAXException = SAXException during Canonicalization:  Original Message was {0}
-c14n.Canonicalizer.TraversalNotSupported = This DOM document does not support Traversal {0}
-c14n.Canonicalizer.UnsupportedEncoding = Unsupported encoding {0}
-c14n.Canonicalizer.UnsupportedOperation = This canonicalizer does not support this operation
-c14n.XMLUtils.circumventBug2650forgotten = The tree has not been prepared for canonicalization using XMLUtils#circumventBug2650(Document)
-certificate.noSki.lowVersion = Certificate cannot contain a SubjectKeyIdentifier because it is only X509v{0}
-certificate.noSki.notOctetString = Certificates SubjectKeyIdentifier is not a OctetString
-certificate.noSki.null = Certificate does not contain a SubjectKeyIdentifier
-defaultNamespaceCannotBeSetHere = Default namespace cannot be set here
-ElementProxy.nullElement = Cannot create an ElementProxy from a null argument
-empty = {0}
-encryption.algorithmCannotBeUsedForEncryptedData = encryption.algorithmCannotBeUsedForEncryptedData {0}
-encryption.algorithmCannotEatInitParams = encryption.algorithmCannotEatInitParams
-encryption.algorithmCannotEncryptDecrypt = encryption.algorithmCannotEncryptDecrypt
-encryption.algorithmCannotWrapUnWrap = encryption.algorithmCannotWrapUnWrap
-encryption.ExplicitKeySizeMismatch = The xenc:KeySize element requests a key size of {0} bit but the algorithm implements {1} bit
-encryption.nonceLongerThanDecryptedPlaintext = The given nonce is longer than the available plaintext. I Cannot strip away this.
-encryption.RSAOAEP.dataHashWrong = data hash wrong
-encryption.RSAOAEP.dataStartWrong = data wrong start {0}
-encryption.RSAOAEP.dataTooShort = data too short
-encryption.RSAPKCS15.blockTruncated = block truncated
-encryption.RSAPKCS15.noDataInBlock = no data in block
-encryption.RSAPKCS15.unknownBlockType = unknown block type
-encryption.nokey = No Key Encryption Key loaded and cannot determine using key resolvers
-endorsed.jdk1.4.0 = Since it seems that nobody reads our installation notes, we must do it in the exception messages. Hope you read them. You did NOT use the endorsed mechanism from JDK 1.4 properly; look at <http://xml.apache.org/security/Java/installation.html> how to solve this problem.
-errorMessages.InvalidDigestValueException = INVALID signature -- check reference resolution.
-errorMessages.InvalidSignatureValueException = INVALID signature -- core validation failed.
-errorMessages.IOException = Other file I/O and similar exceptions.
-errorMessages.MissingKeyFailureException = Cannot verify because of missing public key. Provide it via addResource and try again.
-errorMessages.MissingResourceFailureException = Cannot verify because of unresolved references. Provide it via addResource and try again.
-errorMessages.NoSuchAlgorithmException = Unknown Algorithm {0}
-errorMessages.NotYetImplementedException = Functionality not yet there.
-errorMessages.XMLSignatureException = Verification failed for some other reason.
-decoding.divisible.four = It should be divisible by four
-decoding.general = Error while decoding
-FileKeyStorageImpl.addToDefaultFromRemoteNotImplemented = Method addToDefaultFromRemote() not yet implemented.
-FileKeyStorageImpl.NoCert.Context = Not found such a X509Certificate including context {0}
-FileKeyStorageImpl.NoCert.IssNameSerNo = Not found such a X509Certificate with IssuerName {0} and serial number {1}
-FileKeyStorageImpl.NoCert.SubjName = Not found such a X509Certificate including SubjectName {0}
-generic.dontHaveConstructionElement = I do not have a construction Element
-generic.EmptyMessage = {0}
-generic.NotYetImplemented = {0} Not YET implemented ;-((
-java.security.InvalidKeyException = Invalid key
-java.security.NoSuchProviderException = Unknown or unsupported provider
-java.security.UnknownKeyType = Unknown or unsupported key type {0}
-KeyInfo.needKeyResolver = More than one keyResovler have to be registered
-KeyInfo.nokey = Cannot get key from {0}
-KeyInfo.noKey = Cannot get the public key
-KeyInfo.wrongNumberOfObject = Need {0} keyObjects
-KeyInfo.wrongUse = This object was made for getting {0}
-keyResolver.alreadyRegistered = {1} class has already been registered for {0}
-KeyResolver.needStorageResolver = Need a StorageResolver to retrieve a Certificate from a {0}
-KeyResoverSpiImpl.cannotGetCert = Cannot get the Certificate that include or in {1} in implement class {0}
-KeyResoverSpiImpl.elementGeneration = Cannot make {1} element in implement class {0}
-KeyResoverSpiImpl.getPoublicKey = Cannot get the public key from implement class {0}
-KeyResoverSpiImpl.InvalidElement = Cannot set (2) Element in implement class {0}
-KeyResoverSpiImpl.keyStore = KeyStorage error in implement class {0}
-KeyResoverSpiImpl.need.Element = {1} type of Element is needed in implement class {0}
-KeyResoverSpiImpl.wrongCRLElement = Cannot make CRL from {1} in implement class {0}
-KeyResoverSpiImpl.wrongKeyObject =  Need {1} type of KeyObject for generation Element in implement class{0}
-KeyResoverSpiImpl.wrongNumberOfObject = Need {1} keyObject in implement class {0}
-KeyStore.alreadyRegistered = {0} Class has already been registered for {1}
-KeyStore.register = {1} type class register error  in class {0}
-KeyStore.registerStore.register = Registeration error for type {0}
-KeyValue.IllegalArgument = Cannot create a {0} from {1}
-namespacePrefixAlreadyUsedByOtherURI = Namespace prefix {0} already used by other URI {1}
-notYetInitialized = The module {0} is not yet initialized
-prefix.AlreadyAssigned = You want to assign {0} as prefix for namespace {1} but it is already assigned for {2}
-signature.Canonicalizer.UnknownCanonicalizer = Unknown canonicalizer. No handler installed for URI {0}
-signature.DSA.invalidFormat = Invalid ASN.1 encoding of the DSA signature
-signature.Generation.signBeforeGetValue = You have to XMLSignature.sign(java.security.PrivateKey) first
-signature.signaturePropertyHasNoTarget = The Target attribute of the SignatureProperty must be set
-signature.Transform.ErrorDuringTransform = A {1} was thrown during the {0} transform
-signature.Transform.NotYetImplemented = Transform {0} not yet implemented
-signature.Transform.NullPointerTransform = Null pointer as URI. Programming bug?
-signature.Transform.UnknownTransform = Unknown transformation. No handler installed for URI {0}
-signature.Transform.node = Current Node: {0}
-signature.Transform.nodeAndType = Current Node: {0}, type: {1} 
-signature.Util.BignumNonPositive = bigInteger.signum() must be positive
-signature.Util.NonTextNode = Not a text node
-signature.Util.TooManyChilds = Too many childs of Type {0} in {1}
-signature.Verification.certificateError = Certificate error
-signature.Verification.IndexOutOfBounds = Index {0} illegal. We only have {1} References
-signature.Verification.internalError = Internal error
-signature.Verification.InvalidDigestOrReference = Invalid digest of reference {0}
-signature.Verification.keyStore = KeyStore error
-signature.Verification.MissingID = Cannot resolve element with ID {0}
-signature.Verification.MissingResources = Cannot resolve external resource {0}
-signature.Verification.NoSignatureElement = Input document contains no {0} Element in namespace {1}
-signature.Verification.Reference.NoInput = The Reference for URI {0} has no XMLSignatureInput
-signature.Verification.SignatureError = Signature error
-signature.XMLSignatureInput.MissingConstuctor = Cannot construct a XMLSignatureInput from class {0}
-signature.XMLSignatureInput.SerializeDOM = Input initialized with DOM Element. Use Canonicalization to serialize it
-signature.XMLSignatureInput.nodesetReference = Unable to convert to nodeset the reference
-transform.Init.IllegalContextArgument = Invalid context argument of class {0}. Must be String, org.w3c.dom.NodeList or java.io.InputStream.
-transform.init.NotInitialized =
-transform.init.wrongURI = Initialized with wrong URI. How could this happen? We implement {0} but {1} was used during initialization
-utils.Base64.IllegalBitlength = Illegal byte length; Data to be decoded must be a multiple of 4
-Base64Decoding = Error while decoding
-utils.resolver.noClass = Could not find a resolver for URI {0} and Base {1}
-xml.WrongContent = Cannot find {0} in {1}
-xml.WrongElement = Cannot create a {0} from a {1} element
-xpath.funcHere.documentsDiffer = The XPath is not in the same document as the context node
-xpath.funcHere.noXPathContext = Try to evaluate an XPath which uses the here() function but XPath is not inside an ds:XPath Element. XPath was : {0}
+algorithm.alreadyRegistered = URI {0} already assigned to class {1}
+algorithm.classDoesNotExist = Cannot register URI {0} to class {1} because this class does not exist in CLASSPATH
+algorithm.ClassDoesNotExist = Class {0} does not exist
+algorithm.extendsWrongClass = Cannot register URI {0} to class {1} because it does not extend {2}
+algorithms.CannotUseAlgorithmParameterSpecOnDSA = Sorry, but you cannot use a AlgorithmParameterSpec object for creating DSA signatures.
+algorithms.CannotUseAlgorithmParameterSpecOnRSA = Sorry, but you cannot use a AlgorithmParameterSpec object for creating RSA signatures.
+algorithms.CannotUseSecureRandomOnMAC = Sorry, but you cannot use a SecureRandom object for creating MACs.
+algorithms.HMACOutputLengthOnlyForHMAC = A HMACOutputLength can only be specified for HMAC integrity algorithms
+algorithms.NoSuchAlgorithm = The requested algorithm {0} does not exist. Original Message was: {1}
+algorithms.NoSuchMap = The algorithm URI "{0}" could not be mapped to a JCE algorithm
+algorithms.NoSuchProvider = The specified Provider {0} does not exist. Original Message was: {1}
+algorithms.operationOnlyVerification = A public key can only used for verification of a signature.
+algorithms.WrongKeyForThisOperation = Sorry, you supplied the wrong key type for this operation! You supplied a {0} but a {1} is needed.
+attributeValueIllegal = The attribute {0} has value {1} but must be {2}
+c14n.Canonicalizer.Exception = Exception during Canonicalization:  Original Message was {0}
+c14n.Canonicalizer.IllegalNode = Illegal node type {0}, node name was {1}
+c14n.Canonicalizer.NoSuchCanonicalizer = No canonicalizer found with URI {0}
+c14n.Canonicalizer.ParserConfigurationException = ParserConfigurationException during Canonicalization:  Original Message was {0}
+c14n.Canonicalizer.RelativeNamespace = Element {0} has a relative namespace: {1}="{2}"
+c14n.Canonicalizer.SAXException = SAXException during Canonicalization:  Original Message was {0}
+c14n.Canonicalizer.TraversalNotSupported = This DOM document does not support Traversal {0}
+c14n.Canonicalizer.UnsupportedEncoding = Unsupported encoding {0}
+c14n.Canonicalizer.UnsupportedOperation = This canonicalizer does not support this operation
+c14n.XMLUtils.circumventBug2650forgotten = The tree has not been prepared for canonicalization using XMLUtils#circumventBug2650(Document)
+certificate.noSki.lowVersion = Certificate cannot contain a SubjectKeyIdentifier because it is only X509v{0}
+certificate.noSki.notOctetString = Certificates SubjectKeyIdentifier is not a OctetString
+certificate.noSki.null = Certificate does not contain a SubjectKeyIdentifier
+defaultNamespaceCannotBeSetHere = Default namespace cannot be set here
+ElementProxy.nullElement = Cannot create an ElementProxy from a null argument
+empty = {0}
+encryption.algorithmCannotBeUsedForEncryptedData = encryption.algorithmCannotBeUsedForEncryptedData {0}
+encryption.algorithmCannotEatInitParams = encryption.algorithmCannotEatInitParams
+encryption.algorithmCannotEncryptDecrypt = encryption.algorithmCannotEncryptDecrypt
+encryption.algorithmCannotWrapUnWrap = encryption.algorithmCannotWrapUnWrap
+encryption.ExplicitKeySizeMismatch = The xenc:KeySize element requests a key size of {0} bit but the algorithm implements {1} bit
+encryption.nonceLongerThanDecryptedPlaintext = The given nonce is longer than the available plaintext. I Cannot strip away this.
+encryption.RSAOAEP.dataHashWrong = data hash wrong
+encryption.RSAOAEP.dataStartWrong = data wrong start {0}
+encryption.RSAOAEP.dataTooShort = data too short
+encryption.RSAPKCS15.blockTruncated = block truncated
+encryption.RSAPKCS15.noDataInBlock = no data in block
+encryption.RSAPKCS15.unknownBlockType = unknown block type
+encryption.nokey = No Key Encryption Key loaded and cannot determine using key resolvers
+endorsed.jdk1.4.0 = Since it seems that nobody reads our installation notes, we must do it in the exception messages. Hope you read them. You did NOT use the endorsed mechanism from JDK 1.4 properly; look at <http://xml.apache.org/security/Java/installation.html> how to solve this problem.
+errorMessages.InvalidDigestValueException = INVALID signature -- check reference resolution.
+errorMessages.InvalidSignatureValueException = INVALID signature -- core validation failed.
+errorMessages.IOException = Other file I/O and similar exceptions.
+errorMessages.MissingKeyFailureException = Cannot verify because of missing public key. Provide it via addResource and try again.
+errorMessages.MissingResourceFailureException = Cannot verify because of unresolved references. Provide it via addResource and try again.
+errorMessages.NoSuchAlgorithmException = Unknown Algorithm {0}
+errorMessages.NotYetImplementedException = Functionality not yet there.
+errorMessages.XMLSignatureException = Verification failed for some other reason.
+decoding.divisible.four = It should be divisible by four
+decoding.general = Error while decoding
+FileKeyStorageImpl.addToDefaultFromRemoteNotImplemented = Method addToDefaultFromRemote() not yet implemented.
+FileKeyStorageImpl.NoCert.Context = Not found such a X509Certificate including context {0}
+FileKeyStorageImpl.NoCert.IssNameSerNo = Not found such a X509Certificate with IssuerName {0} and serial number {1}
+FileKeyStorageImpl.NoCert.SubjName = Not found such a X509Certificate including SubjectName {0}
+generic.dontHaveConstructionElement = I do not have a construction Element
+generic.EmptyMessage = {0}
+generic.NotYetImplemented = {0} Not YET implemented ;-((
+java.security.InvalidKeyException = Invalid key
+java.security.NoSuchProviderException = Unknown or unsupported provider
+java.security.UnknownKeyType = Unknown or unsupported key type {0}
+KeyInfo.needKeyResolver = More than one keyResovler have to be registered
+KeyInfo.nokey = Cannot get key from {0}
+KeyInfo.noKey = Cannot get the public key
+KeyInfo.wrongNumberOfObject = Need {0} keyObjects
+KeyInfo.wrongUse = This object was made for getting {0}
+keyResolver.alreadyRegistered = {1} class has already been registered for {0}
+KeyResolver.needStorageResolver = Need a StorageResolver to retrieve a Certificate from a {0}
+KeyResoverSpiImpl.cannotGetCert = Cannot get the Certificate that include or in {1} in implement class {0}
+KeyResoverSpiImpl.elementGeneration = Cannot make {1} element in implement class {0}
+KeyResoverSpiImpl.getPoublicKey = Cannot get the public key from implement class {0}
+KeyResoverSpiImpl.InvalidElement = Cannot set (2) Element in implement class {0}
+KeyResoverSpiImpl.keyStore = KeyStorage error in implement class {0}
+KeyResoverSpiImpl.need.Element = {1} type of Element is needed in implement class {0}
+KeyResoverSpiImpl.wrongCRLElement = Cannot make CRL from {1} in implement class {0}
+KeyResoverSpiImpl.wrongKeyObject =  Need {1} type of KeyObject for generation Element in implement class{0}
+KeyResoverSpiImpl.wrongNumberOfObject = Need {1} keyObject in implement class {0}
+KeyStore.alreadyRegistered = {0} Class has already been registered for {1}
+KeyStore.register = {1} type class register error  in class {0}
+KeyStore.registerStore.register = Registeration error for type {0}
+KeyValue.IllegalArgument = Cannot create a {0} from {1}
+namespacePrefixAlreadyUsedByOtherURI = Namespace prefix {0} already used by other URI {1}
+notYetInitialized = The module {0} is not yet initialized
+prefix.AlreadyAssigned = You want to assign {0} as prefix for namespace {1} but it is already assigned for {2}
+signature.Canonicalizer.UnknownCanonicalizer = Unknown canonicalizer. No handler installed for URI {0}
+signature.DSA.invalidFormat = Invalid ASN.1 encoding of the DSA signature
+signature.Generation.signBeforeGetValue = You have to XMLSignature.sign(java.security.PrivateKey) first
+signature.signaturePropertyHasNoTarget = The Target attribute of the SignatureProperty must be set
+signature.Transform.ErrorDuringTransform = A {1} was thrown during the {0} transform
+signature.Transform.NotYetImplemented = Transform {0} not yet implemented
+signature.Transform.NullPointerTransform = Null pointer as URI. Programming bug?
+signature.Transform.UnknownTransform = Unknown transformation. No handler installed for URI {0}
+signature.Transform.node = Current Node: {0}
+signature.Transform.nodeAndType = Current Node: {0}, type: {1} 
+signature.Util.BignumNonPositive = bigInteger.signum() must be positive
+signature.Util.NonTextNode = Not a text node
+signature.Util.TooManyChilds = Too many childs of Type {0} in {1}
+signature.Verification.certificateError = Certificate error
+signature.Verification.IndexOutOfBounds = Index {0} illegal. We only have {1} References
+signature.Verification.internalError = Internal error
+signature.Verification.InvalidDigestOrReference = Invalid digest of reference {0}
+signature.Verification.keyStore = KeyStore error
+signature.Verification.MissingID = Cannot resolve element with ID {0}
+signature.Verification.MissingResources = Cannot resolve external resource {0}
+signature.Verification.NoSignatureElement = Input document contains no {0} Element in namespace {1}
+signature.Verification.Reference.NoInput = The Reference for URI {0} has no XMLSignatureInput
+signature.Verification.SignatureError = Signature error
+signature.XMLSignatureInput.MissingConstuctor = Cannot construct a XMLSignatureInput from class {0}
+signature.XMLSignatureInput.SerializeDOM = Input initialized with DOM Element. Use Canonicalization to serialize it
+signature.XMLSignatureInput.nodesetReference = Unable to convert to nodeset the reference
+transform.Init.IllegalContextArgument = Invalid context argument of class {0}. Must be String, org.w3c.dom.NodeList or java.io.InputStream.
+transform.init.NotInitialized =
+transform.init.wrongURI = Initialized with wrong URI. How could this happen? We implement {0} but {1} was used during initialization
+utils.Base64.IllegalBitlength = Illegal byte length; Data to be decoded must be a multiple of 4
+Base64Decoding = Error while decoding
+utils.resolver.noClass = Could not find a resolver for URI {0} and Base {1}
+xml.WrongContent = Cannot find {0} in {1}
+xml.WrongElement = Cannot create a {0} from a {1} element
+xpath.funcHere.documentsDiffer = The XPath is not in the same document as the context node
+xpath.funcHere.noXPathContext = Try to evaluate an XPath which uses the here() function but XPath is not inside an ds:XPath Element. XPath was : {0}
--- a/src/share/classes/com/sun/security/auth/login/ConfigFile.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/com/sun/security/auth/login/ConfigFile.java	Fri Apr 25 09:03:20 2008 -0400
@@ -620,14 +620,34 @@
      * start up time noticeably for the new launcher. -- DAC
      */
     private InputStream getInputStream(URL url) throws IOException {
-        if ("file".equals(url.getProtocol())) {
+        if ("file".equalsIgnoreCase(url.getProtocol())) {
+            // Compatibility notes:
+            //
+            // Code changed from
+            //   String path = url.getFile().replace('/', File.separatorChar);
+            //   return new FileInputStream(path);
+            //
+            // The original implementation would search for "/tmp/a%20b"
+            // when url is "file:///tmp/a%20b". This is incorrect. The
+            // current codes fix this bug and searches for "/tmp/a b".
+            // For compatibility reasons, when the file "/tmp/a b" does
+            // not exist, the file named "/tmp/a%20b" will be tried.
+            //
+            // This also means that if both file exists, the behavior of
+            // this method is changed, and the current codes choose the
+            // correct one.
             try {
-                File path = new File(url.toURI());
-                return new FileInputStream(path);
-            } catch (IOException ioe) {
-                throw ioe;
-            } catch (Exception ex) {
-                throw new IOException(ex.getMessage(), ex);
+                return url.openStream();
+            } catch (Exception e) {
+                String file = url.getPath();
+                if (url.getHost().length() > 0) {  // For Windows UNC
+                    file = "//" + url.getHost() + file;
+                }
+                if (debugConfig != null) {
+                    debugConfig.println("cannot read " + url +
+                            ", try " + file);
+                }
+                return new FileInputStream(file);
             }
         } else {
             return url.openStream();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/Probe.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package com.sun.tracing;
+
+/**
+ * The {@code Probe} interface represents a tracepoint.
+ *
+ * A {@code Probe} instance is obtained by calling the
+ * {@code Provider.getProbe()} method of a provider instance created by
+ * {@code ProviderFactory.createProvider()}.  A {@code Probe} can be used to
+ * trigger a probe manually (provided the correct arguments are passed to
+ * it), or to check a probe to see if anything is currently tracing it.
+ * <p>
+ * A tracing check can be used to avoid lengthy work that might be
+ * needed to set up the probe's arguments.  However, checking
+ * whether the probe is enabled generally takes the same amount of time
+ * as actually triggering the probe. So, you should only check a probe's status
+ * without triggering it if setting up the arguments is very expensive.
+ * <p>
+ * Users do not need to implement this interface: instances are
+ * created automatically by the system when a {@code Provider)} instance is
+ * created.
+ * <p>
+ * @since 1.7
+ */
+
+public interface Probe {
+    /**
+     * Checks whether there is an active trace of this probe.
+     *
+     * @return true if an active trace is detected.
+     */
+    boolean isEnabled();
+
+    /**
+     * Determines whether a tracepoint is enabled.
+     *
+     * Typically, users do not need to use this method. It is called
+     * automatically when a Provider's instance method is called. Calls to
+     * this method expect the arguments to match the declared parameters for
+     * the method associated with the probe.
+     *
+     * @param args the parameters to pass to the method.
+     * @throws IllegalArgumentException if the provided parameters do not
+     * match the method declaration for this probe.
+     */
+    void trigger(Object ... args);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/ProbeName.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package com.sun.tracing;
+
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.ElementType;
+
+/**
+ * An annotation used to override the name of a probe.
+ * <p>
+ * This annotation can be added to a method in a user-defined {@code Provider}
+ * interface, to set the name that will be used for the generated probe
+ * associated with that method.  Without this annotation, the name will be the
+ * name of the method.
+ * <p>
+ * @since 1.7
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+public @interface ProbeName {
+    String value();
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/Provider.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package com.sun.tracing;
+
+/**
+ * {@code Provider} is a superinterface for user-defined tracing providers.
+ * <p>
+ * To define tracepoints, users must extend this interface
+ * and then use a {@code ProviderFactory} to create an instance of the
+ * newly-defined interface.  Each method in the defined interface represents a
+ * tracepoint (or probe), which can be triggered by calling the associated
+ * method on the returned instance.
+ * <p>
+ * This interface also contains a {@code getProbe()} method, which can be
+ * used to get direct handles to the {@code Probe} objects themselves.
+ * {@code Probe} objects can be triggered manually, or they can be queried to
+ * check their state.
+ * <p>
+ * When an application has finished triggering probes, it should call
+ * {@code dispose()} to free up any system resources associated with the
+ * Provider.
+ * <p>
+ * All methods declared in a subclass of this interface should have a
+ * {@code void} return type. Methods can have parameters, and when called the
+ * values of the arguments will be passed to the tracing implementation.
+ * If any methods do not have a {@code void} return type, an
+ * {@code java.lang.IllegalArgumentException} will be thrown when the
+ * provider is registered.
+ * @since 1.7
+ */
+
+public interface Provider {
+    /**
+     * Retrieves a reference to a Probe object, which is used to check status
+     * or to trigger the probe manually.
+     *
+     * If the provided method parameter is not a method of the provider
+     * interface,  or if the provider interface has been disposed, then
+     * this returns null
+     *
+     * @param method a method declared in the provider.
+     * @return the specified probe represented by that method, or null.
+     */
+    Probe getProbe(java.lang.reflect.Method method);
+
+    /**
+     * Disposes system resources associated with this provider.
+     *
+     * After calling this method, triggering the probes will have no effect.
+     * Additional calls to this method after the first call are ignored.
+     */
+    void dispose();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/ProviderFactory.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,110 @@
+
+package com.sun.tracing;
+
+import java.util.HashSet;
+import java.io.PrintStream;
+import java.lang.reflect.Field;
+import java.util.logging.Logger;
+
+import sun.tracing.NullProviderFactory;
+import sun.tracing.PrintStreamProviderFactory;
+import sun.tracing.MultiplexProviderFactory;
+import sun.tracing.dtrace.DTraceProviderFactory;
+
+/**
+ * {@code ProviderFactory} is a factory class used to create instances of
+ * providers.
+ *
+ * To enable tracing in an application, this class must be used to create
+ * instances of the provider interfaces defined by users.
+ * The system-defined factory is obtained by using the
+ * {@code getDefaultFactory()} static method.  The resulting instance can be
+ * used to create any number of providers.
+ *
+ * @since 1.7
+ */
+public abstract class ProviderFactory {
+
+    protected ProviderFactory() {}
+
+    /**
+     * Creates an implementation of a Provider interface.
+     *
+     * @param cls the provider interface to be defined.
+     * @return an implementation of {@code cls}, whose methods, when called,
+     * will trigger tracepoints in the application.
+     * @throws NullPointerException if cls is null
+     * @throws IllegalArgumentException if the class definition contains
+     * non-void methods
+     */
+    public abstract <T extends Provider> T createProvider(Class<T> cls);
+
+    /**
+     * Returns an implementation of a {@code ProviderFactory} which
+     * creates instances of Providers.
+     *
+     * The created Provider instances will be linked to all appropriate
+     * and enabled system-defined tracing mechanisms in the JDK.
+     *
+     * @return a {@code ProviderFactory} that is used to create Providers.
+     */
+    public static ProviderFactory getDefaultFactory() {
+        HashSet<ProviderFactory> factories = new HashSet<ProviderFactory>();
+
+        // Try to instantiate a DTraceProviderFactory
+        String prop = null;
+        try { prop = System.getProperty("com.sun.tracing.dtrace"); }
+        catch (java.security.AccessControlException e) {
+            Logger.getAnonymousLogger().fine(
+                "Cannot access property com.sun.tracing.dtrace");
+        }
+        if ( (prop == null || !prop.equals("disable")) &&
+             DTraceProviderFactory.isSupported() ) {
+            factories.add(new DTraceProviderFactory());
+        }
+
+        // Try to instantiate an output stream factory
+        try { prop = System.getProperty("sun.tracing.stream"); }
+        catch (java.security.AccessControlException e) {
+            Logger.getAnonymousLogger().fine(
+                "Cannot access property sun.tracing.stream");
+        }
+        if (prop != null) {
+            for (String spec : prop.split(",")) {
+                PrintStream ps = getPrintStreamFromSpec(spec);
+                if (ps != null) {
+                    factories.add(new PrintStreamProviderFactory(ps));
+                }
+            }
+        }
+
+        // See how many factories we instantiated, and return an appropriate
+        // factory that encapsulates that.
+        if (factories.size() == 0) {
+            return new NullProviderFactory();
+        } else if (factories.size() == 1) {
+            return factories.toArray(new ProviderFactory[1])[0];
+        } else {
+            return new MultiplexProviderFactory(factories);
+        }
+    }
+
+    private static PrintStream getPrintStreamFromSpec(String spec) {
+        try {
+            // spec is in the form of <class>.<field>, where <class> is
+            // a fully specified class name, and <field> is a static member
+            // in that class.  The <field> must be a 'PrintStream' or subtype
+            // in order to be used.
+            int fieldpos = spec.lastIndexOf('.');
+            Class<?> cls = Class.forName(spec.substring(0, fieldpos));
+            Field f = cls.getField(spec.substring(fieldpos + 1));
+            Class<?> fieldType = f.getType();
+            return (PrintStream)f.get(null);
+        } catch (Exception e) {
+            Logger.getAnonymousLogger().warning(
+                "Could not parse sun.tracing.stream property: " + e);
+        }
+        return null;
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/ProviderName.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package com.sun.tracing;
+
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.ElementType;
+
+/**
+ * An annotation used to specify the name of a provider.
+ * <p>
+ * This annotation can be added to a user-defined {@code Provider}
+ * interface, to set the name that will be used
+ * for the provider in the generated probes.  Without this annotation,
+ * the simple class name of the provider interface is used.
+ * <p>
+ * @since 1.7
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface ProviderName {
+    String value();
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/dtrace/ArgsAttributes.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package com.sun.tracing.dtrace;
+
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.ElementType;
+
+
+/**
+ * This annotation describes the interface attributes of the probe arguments in
+ * a single provider.
+ *
+ * This annotation can be added to a user-defined {@code Provider} specification
+ * interface to set the stability attributes of the probe arguments, for
+ * all the probes specified in that provider.
+ * <p>
+ * If this annotation is not present, the interface attributes for the
+ * arguments are Private/Private/Unknown.
+ * <p>
+ * @see <a href="http://docs.sun.com/app/docs/doc/817-6223/6mlkidlnp?a=view">Solaris Dynamic Tracing Guide, Chapter 39: Stability</a>
+ * @since 1.7
+ */
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ ElementType.TYPE })
+public @interface ArgsAttributes {
+  Attributes value();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/dtrace/Attributes.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package com.sun.tracing.dtrace;
+
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.ElementType;
+
+
+/**
+ * This annotation describes the interface's field attributes
+ * for the probes in a provider.
+ *
+ * This annotation provides the contents of field-specific annotations
+ * that specify the stability attributes and dependency class of a
+ * particular field, for the probes in a provider.
+ * <p>
+ * The default interface attributes for unspecified fields is
+ * Private/Private/Unknown.
+ * <p>
+ * @see <a href="http://docs.sun.com/app/docs/doc/817-6223/6mlkidlnp?a=view">Solaris Dynamic Tracing Guide, Chapter 39: Stability</a>
+ * @since 1.7
+ */
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target({})
+public @interface Attributes {
+  /**
+   * The stability level of the name.
+   */
+  StabilityLevel name() default StabilityLevel.PRIVATE;
+
+  /**
+   * The stability level of the data.
+   */
+  StabilityLevel data() default StabilityLevel.PRIVATE;
+
+  /**
+   * The interface attribute's dependency class.
+   */
+  DependencyClass dependency()  default DependencyClass.UNKNOWN;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/dtrace/DependencyClass.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package com.sun.tracing.dtrace;
+
+/**
+ * Enumeration for the DTrace dependency classes.
+ *
+ * @see <a href="http://docs.sun.com/app/docs/doc/817-6223/6mlkidlnp?a=view">Solaris Dynamic Tracing Guide for details, Chapter 39: Stability</a>
+ * @since 1.7
+ */
+public enum DependencyClass {
+    /**
+     * The interface has an unknown set of architectural dependencies.
+     */
+    UNKNOWN  (0),
+    /**
+     * The interface is specific to the CPU model of the current system.
+     */
+    CPU      (1),
+    /**
+     * The interface is specific to the hardware platform of the current
+     * system.
+     */
+    PLATFORM (2),
+    /**
+     * The interface is specific to the hardware platform group of the
+     * current system.
+     */
+    GROUP    (3),
+    /**
+     * The interface is specific to the instruction set architecture (ISA)
+     * supported by the microprocessors on this system.
+     */
+    ISA      (4),
+    /**
+     * The interface is common to all Solaris systems regardless of the
+     * underlying hardware.
+     */
+    COMMON   (5);
+
+    public String toDisplayString() {
+        return toString().substring(0,1) +
+               toString().substring(1).toLowerCase();
+    }
+
+    public int getEncoding() { return encoding; }
+
+    private int encoding;
+
+    private DependencyClass(int encoding) {
+        this.encoding = encoding;
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/dtrace/FunctionAttributes.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package com.sun.tracing.dtrace;
+
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.ElementType;
+
+/**
+ * This annotation describes the interface attributes of the
+ * {@code function} field for a single provider.
+ *
+ * This annotation can be added to a user-defined {@code Provider} specification
+ * interface to set the stability attributes of the {@code function} field for
+ * all probes specified in that provider.
+ * <p>
+ * If this annotation is not present, the interface attributes for the
+ * {@code function} field are Private/Private/Unknown.
+ * <p>
+ * @see <a href="http://docs.sun.com/app/docs/doc/817-6223/6mlkidlnp?a=view">Solaris Dynamic Tracing Guide, Chapter 39: Stability</a>
+ * @since 1.7
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ ElementType.TYPE })
+public @interface FunctionAttributes {
+    Attributes value();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/dtrace/FunctionName.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package com.sun.tracing.dtrace;
+
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.ElementType;
+
+/**
+ * An annotation used to specify the {@code function} field for a DTrace probe.
+ *
+ * This annotation can be added to a method in a user-defined Provider
+ * specification interface to set the {@code function} field that is used
+ * for the generated DTrace probe associated with that method.
+ * <p>
+ * @since 1.7
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+public @interface FunctionName {
+    String value();
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/dtrace/ModuleAttributes.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package com.sun.tracing.dtrace;
+
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.ElementType;
+
+/**
+ * This annotation is used to describe the interface attributes of the
+ * {@code module} field for a single provider.
+ *
+ * This annotation can be added to a user-defined Provider specification
+ * interface to set the stability attributes of the {@code module} field for
+ * all probes specified in that provider.
+ * <p>
+ * If this annotation is not present, the interface attributes for the
+ * {@code module} field is Private/Private/Unknown.
+ * <p>
+ * @see <a href="http://docs.sun.com/app/docs/doc/817-6223/6mlkidlnp?a=view">Solaris Dynamic Tracing Guide, Chapter 39: Stability</a>
+ * @since 1.7
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ ElementType.TYPE })
+public @interface ModuleAttributes {
+    Attributes value();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/dtrace/ModuleName.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package com.sun.tracing.dtrace;
+
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.ElementType;
+
+/**
+ * An annotation used to specify the {@code module} field for a DTrace probe.
+ *
+ * This annotation can be added to a method in a user-defined Provider
+ * specification interface to set the {@code module} field that will be used
+ * for the generated DTrace probe associated with that method.
+ * <p>
+ * @since 1.7
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface ModuleName {
+    String value();
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/dtrace/NameAttributes.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package com.sun.tracing.dtrace;
+
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.ElementType;
+
+/**
+ * This annotation describes the interface attributes of the
+ * {@code name} field for a single provider.
+ *
+ * This annotation can be added to a user-defined Provider specification
+ * interface to set the stability attributes of the {@code name} field for
+ * all probes specified in that provider.
+ * <p>
+ * If this annotation is not present, the interface attributes for the
+ * {@code name} field will be Private/Private/Unknown.
+ * <p>
+ * @see <a href="http://docs.sun.com/app/docs/doc/817-6223/6mlkidlnp?a=view">Solaris Dynamic Tracing Guide, Chapter 39: Stability</a>
+ * @since 1.7
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ ElementType.TYPE })
+public @interface NameAttributes {
+    Attributes value();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/dtrace/ProviderAttributes.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package com.sun.tracing.dtrace;
+
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.ElementType;
+
+/**
+ * This annotation is used to describe the interface attributes of the
+ * {@code provider} field for a single provider.
+ *
+ * This annotation can be added to a user-defined Provider specification
+ * interface to set the stability attributes of the {@code provider} field for
+ * all probes specified in that provider.
+ * <p>
+ * If this annotation is not present, the interface attributes for the
+ * {@code provider} field will be Private/Private/Unknown.
+ * <p>
+ * @see <a href="http://docs.sun.com/app/docs/doc/817-6223/6mlkidlnp?a=view">Solaris Dynamic Tracing Guide, Chapter 39: Stability</a>
+ * @since 1.7
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ ElementType.TYPE })
+public @interface ProviderAttributes {
+    Attributes value();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/dtrace/StabilityLevel.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package com.sun.tracing.dtrace;
+
+/**
+ * Enumeration for the DTrace stability levels.
+ *
+ * @see <a href="http://docs.sun.com/app/docs/doc/817-6223/6mlkidlnp?a=view">Solaris Dynamic Tracing Guide, Chapter 39: Stability</a>
+ * @since 1.7
+ */
+public enum StabilityLevel {
+    /**
+     * The interface is private to DTrace and represents an implementation
+     * detail of DTrace.
+     */
+    INTERNAL  (0),
+    /**
+     * The interface is private to Sun for use by other Sun products. It is
+     * not yet publicly documented for use by customers and ISVs.
+     */
+    PRIVATE  (1),
+    /**
+     * The interface is supported in the current release but is scheduled
+     * to be removed, most likely in a future minor release.
+     */
+    OBSOLETE (2),
+    /**
+     * The interface is controlled by an entity other than Sun.
+     */
+    EXTERNAL (3),
+    /**
+     * The interface gives developers early access to new or
+     * rapidly changing technology or to an implementation artifact that is
+     * essential for observing or debugging system behavior. A more
+     * stable solution is anticipated in the future.
+     */
+    UNSTABLE (4),
+    /**
+     * The interface might eventually become Standard or Stable but is
+     * still in transition.
+     */
+    EVOLVING (5),
+    /**
+     * The interface is a mature interface under Sun's control.
+     */
+    STABLE   (6),
+    /**
+     * The interface complies with an industry standard.
+     */
+    STANDARD (7);
+
+    String toDisplayString() {
+        return toString().substring(0,1) +
+               toString().substring(1).toLowerCase();
+    }
+
+    public int getEncoding() { return encoding; }
+
+    private int encoding;
+
+    private StabilityLevel(int encoding) {
+        this.encoding = encoding;
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/dtrace/package-info.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+/**
+ * This package contains annotations and enumerations that are used to
+ * add DTrace-specific information to a tracing provider.
+ * <p>
+ * The DTrace-specific annotations modify the attributes of a DTrace provider
+ * implementation when it is used by the tracing subsystem.  The annotations are
+ * added to a {@code com.sun.tracing} provider specification to control
+ * specific attributes of the provider as it relates to DTrace.
+ * <p>
+ * Any other tracing subsystems supported by the system will ignore these
+ * annotations.
+ * <p>
+ * DTrace probes have additional fields and stability attributes that are
+ * not accounted for in the generic tracing package.  If unspecified, the
+ * default values are used for the stability and dependency attributes of
+ * probes, as well as for the module and field names of the generated probes.
+ * The values can be specified by adding the appropriate annotations to the
+ * provider specification.
+ * <p>
+ * The {@code FunctionName} annotation is used to annotate the tracepoint
+ * methods defined in the provider specification.  The value of this annotation
+ * is used as the {@code function} field in the generated DTrace probes. It
+ * is typically set to the name of the enclosing function where the
+ * tracepoint is triggered.
+ * <p>
+ * The {@code ModuleName} annotation is used to annotate the provider
+ * specification itself and applies to all the probes in the provider.  It
+ * sets the value of the {@code module} field in the generated DTrace probes.
+ * <p>
+ * The remaining annotations, are also applied to the provider itself, and
+ * are used to set the stability and dependency attributes of all probes in
+ * that provider.  Each probe field and the probe arguments can be
+ * independently assigned interface attributes to control the stability
+ * ratings of the probes.
+ * <p>
+ * Here is an example of how to declare a provider, specifying additional DTrace
+ * data:
+<PRE>
+    &#064;ProviderName("my_app_provider")
+    &#064;ModuleName("app.jar")
+    &#064;ProviderAttributes(&#064;Attributes={
+        name=StabilityLevel.STABLE,data=StabilityLevel.STABLE,
+        dependency=DependencyClass.COMMON})
+    &#064;ProbeAttributes(&#064;Attributes={
+        name=StabilityLevel.STABLE,data=StabilityLevel.STABLE,
+        dependency=DependencyClass.COMMON})
+    &#064;ModuleAttributes(&#064;Attributes={name=StabilityLevel.UNSTABLE})
+    public class MyProvider {
+        &#064;FunctionName("main") void startProbe();
+    }
+</PRE>
+ * <p>
+ * @see <a href="http://docs.sun.com/app/docs/doc/817-6223/6mlkidlms?a=view">Solaris Dynamic Tracing Guide, Chapter 34: Statically Defined Tracing for User Applications</a>
+ * @see <a href="http://docs.sun.com/app/docs/doc/817-6223/6mlkidlnp?a=view">Solaris Dynamic Tracing Guide, Chapter 39: Stability</a>
+ */
+
+package com.sun.tracing.dtrace;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/com/sun/tracing/package-info.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,163 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+/**
+ * This package provides a mechanism for defining and
+ * inserting tracepoints into Java-technology based applications, which
+ * can then be monitored by the tracing tools available on the system.
+ * <p>
+ * To add tracepoints to a program, you must first decide where to place the
+ * tracepoints, what the logical names are for these points, what information
+ * will be available to the tracing mechanisms at each point, and decide upon
+ * any logical grouping.
+ * <p>
+ * You add instrumentation to a program in three steps:
+ * <ul>
+ * <li>First, declare tracepoints by creating interfaces to define
+ * them, and include these interfaces in the program definition.
+ * The declared interfaces are standard Java technology-based
+ * interfaces and are compiled with the program.</li>
+ * <li>Second, add code in the application to create an instance of the
+ * interface at some point during the initialization of the application,
+ * using a factory class provided by the system. The reference to the
+ * instance can be stored as a global static, or passed as context to all
+ * the places where it is needed.</li>
+ * <li>Finally, add the actual tracepoints to the desired locations in the
+ * application by inserting a call to one of the methods defined in the
+ * interface, via the factory-created reference.</li>
+ * </ul>
+ * <p>
+ * The method calls representing the tracepoints have no logical
+ * impact on the program.  The side effect of the call is that any
+ * activated tracing mechanisms will be notified that the tracepoint has
+ * been hit, and will take whatever actions are appropriate (for example,
+ * logging  the tracepoint, or triggering a DTrace probe, etc.).  In most
+ * cases, the impact on performance of adding tracepoints to the application
+ * will be minimal.
+ * <p>
+ * Each logical grouping of tracepoints should be defined in a common
+ * interface, called a <i>provider</i>.  An application can have one or many
+ * providers.  Each provider is independent and can be created whenever
+ * it is appropriate for that provider, for example, when a subsytem is
+ * initialized.  Providers should be disposed of when they are no longer
+ * needed, to free up any associated system resources.  Each tracepoint
+ * in a provider is represented by a method in that interface.  These methods
+ * are referred to as <i>probes</i>.  The method signature determines the probe
+ * parameters.  A call to the method with the specified parameters triggers
+ * the probe and makes its parameter values visible to any associated tracing
+ * mechanism.
+ * <p>
+ * User-defined interfaces which represent providers must extend the
+ * {@code Provider} interface.  To activate the system-defined
+ * tracing mechanisms, you must obtain an instance of the
+ * {@code ProviderFactory} class, and pass the class of the provider to
+ * the {@code createProvider()} method.  The returned instance is then used to
+ * trigger the probes later in the application.
+ * <p>
+ * In addition to triggering the probes, the provider instance can be used
+ * to obtain direct references to the {@code Probe} objects, which can be used
+ * directly for triggering, or can be queried to determine whether the probe is
+ * currently being traced.  The {@code Provider} interface also defines a
+ * {@code Provider.dispose()} method which is used to free up any resources
+ * that might be associated with that provider.
+ * <p>
+ * When a probe is triggered, any activated tracing system will be given
+ * the provider name, the probe name, and the values of the probe arguments.
+ * The tracing system is free to consume this data is whatever way is
+ * appropriate.
+ * By default, the provider name is the same as the class name of the interface
+ * that defines the provider. Similarly, the probe name is
+ * the name of the method that defines the probe. These default values
+ * can be over-ridden by annotations.  The provider definition can be
+ * annotated with the {@code @ProviderName} annotation, whose value will
+ * indicate the provider name that the tracing system will use.  Similarly,
+ * the {@code @ProbeName} annotation annotates a declared method and
+ * indicates the probe name that should be used in the place of the
+ * method name.  These annotations can be used to define providers and
+ * probes with the same name, in cases where the semantics of the Java language
+ * may prevent this.
+ * <p>
+ * Here is a very small and simple usage example:
+ * <p>
+ *
+<PRE>
+   import com.sun.tracing.Provider;
+   import com.sun.tracing.ProviderFactory;
+
+   interface MyProvider extends Provider {
+       void startProbe();
+       void finishProbe(int value);
+   }
+
+   public class MyApplication {
+       public static void main(String argv[]) {
+           ProviderFactory factory = ProviderFactory.getDefaultFactory();
+           MyProvider trace = factory.createProvider(MyProvider.class);
+
+           trace.startProbe();
+           int result = foo();
+           trace.finishProbe(result);
+
+           trace.dispose();
+       }
+   }
+</PRE>
+ * <p>
+ * The Java Development Kit (JDK) currently only includes one system-defined
+ * tracing framework: DTrace. DTrace is enabled automatically whenever an
+ * application is run on a system and a JDK release that supports it. When
+ * DTrace is enabled, probes are made available for listing and matching by
+ * DTrace scripts as soon as the provider is created. At the tracepoint, an
+ * associated DTrace script is informed of the creation of the provider, and
+ * it takes whatever action it is designed to take. Tracepoints in the
+ * program have the following DTrace probe names:<br>
+ *   {@code <provider><pid>:<module>:<function>:<probe>}
+ * Where:
+ * <ul>
+ * <li>{@code <provider>} the provider name as specified by the application</li>
+ * <li>{@code <pid>} the operating system process ID</li>
+ * <li>{@code <module>} undefined, unless specified by the application</li>
+ * <li>{@code <function>} undefined, unless specified by the application</li>
+ * <li>{@code <probe>} the probe name as specified by the application</li>
+ * </ul>
+ * <p>
+ * The {@code com.sun.tracing.dtrace} package contains additional
+ * annotations that can be used to control the names used for the
+ * <code>module</code> and <code>function</code> fields, as well as annotations
+ * that can be added to the provider to control probe stability and dependency
+ * attributes.
+ * <p>
+ * Integer, float and string probe parameters are made available to DTrace
+ * using
+ * the built-in argument variables, {@code arg0 ... arg_n}.  Integer-types
+ * are passed by value (boxed values are unboxed), floating-point types are
+ * passed as encoded integer
+ * arguments, and {@code java.lang.String} objects are converted
+ * to UTF8 strings, so they can be read into the DTrace script using the
+ * {@code copyinstr()} intrinsic.  Non-string and non-boxed primitive
+ * reference arguments are only
+ * placeholders and have no value.
+ * <p>
+ * Using the example above, with a theoretical process ID of 123, these are
+ * the probes that can be traced from DTrace:
+<PRE>
+    MyProvider123:::startProbe
+    MyProvider123:::finishProbe
+</PRE>
+ * When {@code finishProbe} executes, {@code arg0} will contain the
+ * value of {@code result}.
+ * <p>
+ * The DTrace tracing mechanism is enabled for all providers, apart from in the
+ * following circumstances:
+ * <ul>
+ * <li>DTrace is not supported on the underlying system.</li>
+ * <li>The property {@code com.sun.tracing.dtrace} is set to "disable".</li>
+ * <li>The RuntimePermission {@code com.sun.tracing.dtrace.createProvider}
+ * is denied to the process.</li>
+ * </ul>
+ * <p>
+ */
+
+package com.sun.tracing;
--- a/src/share/classes/java/lang/management/ClassLoadingMXBean.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/java/lang/management/ClassLoadingMXBean.java	Fri Apr 25 09:03:20 2008 -0400
@@ -35,7 +35,7 @@
  * that can be obtained by calling
  * the {@link ManagementFactory#getClassLoadingMXBean} method or
  * from the {@link ManagementFactory#getPlatformMBeanServer
- * platform <tt>MBeanServer</tt>} method.
+ * platform <tt>MBeanServer</tt>}.
  *
  * <p>The <tt>ObjectName</tt> for uniquely identifying the MXBean for
  * the class loading system within an <tt>MBeanServer</tt> is:
@@ -44,6 +44,10 @@
  *        <tt>java.lang:type=ClassLoading</tt>}
  * </blockquote>
  *
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
+ *
+ * @see ManagementFactory#getPlatformMXBeans(Class)
  * @see <a href="../../../javax/management/package-summary.html">
  *      JMX Specification.</a>
  * @see <a href="package-summary.html#examples">
@@ -52,7 +56,7 @@
  * @author  Mandy Chung
  * @since   1.5
  */
-public interface ClassLoadingMXBean {
+public interface ClassLoadingMXBean extends PlatformManagedObject {
 
     /**
      * Returns the total number of classes that have been loaded since
--- a/src/share/classes/java/lang/management/CompilationMXBean.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/java/lang/management/CompilationMXBean.java	Fri Apr 25 09:03:20 2008 -0400
@@ -44,6 +44,10 @@
  *         <tt>java.lang:type=Compilation</tt>}
  * </blockquote>
  *
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
+ *
+ * @see ManagementFactory#getPlatformMXBeans(Class)
  * @see <a href="../../../javax/management/package-summary.html">
  *      JMX Specification.</a>
  * @see <a href="package-summary.html#examples">
@@ -52,7 +56,7 @@
  * @author  Mandy Chung
  * @since   1.5
  */
-public interface CompilationMXBean {
+public interface CompilationMXBean extends PlatformManagedObject {
     /**
      * Returns the name of the Just-in-time (JIT) compiler.
      *
--- a/src/share/classes/java/lang/management/GarbageCollectorMXBean.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/java/lang/management/GarbageCollectorMXBean.java	Fri Apr 25 09:03:20 2008 -0400
@@ -48,9 +48,13 @@
  *    <tt>java.lang:type=GarbageCollector</tt>}<tt>,name=</tt><i>collector's name</i>
  * </blockquote>
  *
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
+ *
  * A platform usually includes additional platform-dependent information
  * specific to a garbage collection algorithm for monitoring.
  *
+ * @see ManagementFactory#getPlatformMXBeans(Class)
  * @see MemoryMXBean
  *
  * @see <a href="../../../javax/management/package-summary.html">
--- a/src/share/classes/java/lang/management/ManagementFactory.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/java/lang/management/ManagementFactory.java	Fri Apr 25 09:03:20 2008 -0400
@@ -24,17 +24,31 @@
  */
 
 package java.lang.management;
+import javax.management.DynamicMBean;
 import javax.management.MBeanServer;
 import javax.management.MBeanServerConnection;
+import javax.management.MBeanServerFactory;
 import javax.management.MBeanServerPermission;
+import javax.management.NotificationEmitter;
+import javax.management.ObjectInstance;
 import javax.management.ObjectName;
+import javax.management.InstanceAlreadyExistsException;
 import javax.management.InstanceNotFoundException;
 import javax.management.MalformedObjectNameException;
+import javax.management.MBeanRegistrationException;
+import javax.management.NotCompliantMBeanException;
+import javax.management.StandardEmitterMBean;
+import javax.management.StandardMBean;
+import java.util.Collections;
+import java.util.ArrayList;
 import java.util.List;
 import java.security.AccessController;
 import java.security.Permission;
 import java.security.PrivilegedAction;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
 import javax.management.JMX;
+import sun.management.ManagementFactoryHelper;
 
 /**
  * The <tt>ManagementFactory</tt> class is a factory class for getting
@@ -49,13 +63,16 @@
  * <ul>
  * <li><i>Direct access to an MXBean interface</i>
  *     <ol type="a">
- *     <li>Get the MXBean instance through the static factory method
+ *     <li>Get the MXBean instance through the static factory method,
+ *         or the {@link #getPlatformMXBeans(Class)} method
  *         and access the MXBean locally of the running
  *         virtual machine.
  *         </li>
  *     <li>Construct an MXBean proxy instance that forwards the
  *         method calls to a given {@link MBeanServer MBeanServer} by calling
- *         {@link #newPlatformMXBeanProxy newPlatfromMXBeanProxy}.
+ *         the {@link #newPlatformMXBeanProxy newPlatformMXBeanProxy} method
+ *         or the {@link #getPlatformMXBeans(MBeanServerConnection, Class)}
+ *         method.
  *         A proxy is typically constructed to remotely access
  *         an MXBean of another running virtual machine.
  *         </li>
@@ -83,6 +100,10 @@
  * a set of basic data types described below.
  * See <a href="../../../javax/management/MXBean.html#MXBean-spec">
  * the specification of MXBeans</a> for details.
+ * All platform MXBean interfaces extend {@link PlatformManagedObject}s
+ * and new methods may be added in these interfaces
+ * in future Java SE releases.
+ * <p>
  * A JMX management application and the platform <tt>MBeanServer</tt>
  * can interoperate without requiring classes for MXBean specific
  * data types.
@@ -191,7 +212,10 @@
  * <h4><a name="MXBeanNames">MXBean Names</a></h4>
  * Each platform MXBean for a Java virtual machine has a unique
  * {@link javax.management.ObjectName ObjectName} for
- * registration in the platform <tt>MBeanServer</tt>.
+ * registration in the platform <tt>MBeanServer</tt> that can
+ * be obtained by calling the {@link PlatformManagedObject#getObjectName}
+ * method.
+ *
  * A Java virtual machine has a single instance of the following management
  * interfaces:
  *
@@ -275,7 +299,7 @@
  * </blockquote>
  *
  * @see <a href="../../../javax/management/package-summary.html">
- *      JMX Specification.</a>
+ *      JMX Specification</a>
  * @see <a href="package-summary.html#examples">
  *      Ways to Access Management Metrics</a>
  * @see java.util.logging.LoggingMXBean
@@ -368,7 +392,7 @@
      * the Java virtual machine.
      */
     public static ClassLoadingMXBean getClassLoadingMXBean() {
-        return sun.management.ManagementFactory.getClassLoadingMXBean();
+        return ManagementFactoryHelper.getClassLoadingMXBean();
     }
 
     /**
@@ -378,7 +402,7 @@
      * @return a {@link MemoryMXBean} object for the Java virtual machine.
      */
     public static MemoryMXBean getMemoryMXBean() {
-        return sun.management.ManagementFactory.getMemoryMXBean();
+        return ManagementFactoryHelper.getMemoryMXBean();
     }
 
     /**
@@ -388,7 +412,7 @@
      * @return a {@link ThreadMXBean} object for the Java virtual machine.
      */
     public static ThreadMXBean getThreadMXBean() {
-        return sun.management.ManagementFactory.getThreadMXBean();
+        return ManagementFactoryHelper.getThreadMXBean();
     }
 
     /**
@@ -399,7 +423,7 @@
 
      */
     public static RuntimeMXBean getRuntimeMXBean() {
-        return sun.management.ManagementFactory.getRuntimeMXBean();
+        return ManagementFactoryHelper.getRuntimeMXBean();
     }
 
     /**
@@ -412,7 +436,7 @@
      *   no compilation system.
      */
     public static CompilationMXBean getCompilationMXBean() {
-        return sun.management.ManagementFactory.getCompilationMXBean();
+        return ManagementFactoryHelper.getCompilationMXBean();
     }
 
     /**
@@ -423,7 +447,7 @@
      * the Java virtual machine.
      */
     public static OperatingSystemMXBean getOperatingSystemMXBean() {
-        return sun.management.ManagementFactory.getOperatingSystemMXBean();
+        return ManagementFactoryHelper.getOperatingSystemMXBean();
     }
 
     /**
@@ -436,7 +460,7 @@
      *
      */
     public static List<MemoryPoolMXBean> getMemoryPoolMXBeans() {
-        return sun.management.ManagementFactory.getMemoryPoolMXBeans();
+        return ManagementFactoryHelper.getMemoryPoolMXBeans();
     }
 
     /**
@@ -449,7 +473,7 @@
      *
      */
     public static List<MemoryManagerMXBean> getMemoryManagerMXBeans() {
-        return sun.management.ManagementFactory.getMemoryManagerMXBeans();
+        return ManagementFactoryHelper.getMemoryManagerMXBeans();
     }
 
 
@@ -465,7 +489,7 @@
      *
      */
     public static List<GarbageCollectorMXBean> getGarbageCollectorMXBeans() {
-        return sun.management.ManagementFactory.getGarbageCollectorMXBeans();
+        return ManagementFactoryHelper.getGarbageCollectorMXBeans();
     }
 
     private static MBeanServer platformMBeanServer;
@@ -518,8 +542,25 @@
         }
 
         if (platformMBeanServer == null) {
-            platformMBeanServer =
-                sun.management.ManagementFactory.createPlatformMBeanServer();
+            platformMBeanServer = MBeanServerFactory.createMBeanServer();
+            for (PlatformComponent pc : PlatformComponent.values()) {
+                List<? extends PlatformManagedObject> list =
+                    pc.getMXBeans(pc.getMXBeanInterface());
+                for (PlatformManagedObject o : list) {
+                    // Each PlatformComponent represents one management
+                    // interface. Some MXBean may extend another one.
+                    // The MXBean instances for one platform component
+                    // (returned by pc.getMXBeans()) might be also
+                    // the MXBean instances for another platform component.
+                    // e.g. com.sun.management.GarbageCollectorMXBean
+                    //
+                    // So need to check if an MXBean instance is registered
+                    // before registering into the platform MBeanServer
+                    if (!platformMBeanServer.isRegistered(o.getObjectName())) {
+                        addMXBean(platformMBeanServer, o);
+                    }
+                }
+            }
         }
         return platformMBeanServer;
     }
@@ -657,6 +698,136 @@
         }
     }
 
+    /**
+     * Returns the list of platform MXBeans that implement
+     * the given {@code mxbeanInterface} in the running Java
+     * virtual machine.
+     * The returned list may contain zero, one, or more instances.
+     * The number of instances in the returned list is defined
+     * in the specification of the given management interface.
+     *
+     * @param mxbeanInterface a management interface for a platform
+     *                        MXBean
+     *
+     * @return the list of platform MXBeans that implements
+     * {@code mxbeanInterface}.
+     *
+     * @throws IllegalArgumentException if {@code mxbeanInterface}
+     * is not a management interface for the platform.
+     *
+     * @since 1.7
+     */
+    public static <T extends PlatformManagedObject> List<T>
+            getPlatformMXBeans(Class<T> mxbeanInterface) {
+        String className = mxbeanInterface.getName();
+        for (PlatformComponent component: PlatformComponent.values()) {
+            // comparing the class name first instead of the Class instance
+            // to avoid causing unnecessary class loading of
+            // the other MXBean interfaces
+            if (className.equals(component.getMXBeanInterfaceName())) {
+                if (component.getMXBeanInterface() == mxbeanInterface) {
+                    return component.getMXBeans(mxbeanInterface);
+                }
+            }
+        }
+        throw new IllegalArgumentException(mxbeanInterface.getName() +
+            " is not implemented by any of the platform MXBeans.");
+    }
+
+    /**
+     * Returns the list of the platform MXBean proxies for
+     * forwarding the method calls of the {@code mxbeanInterface}
+     * through the given {@code MBeanServerConnection}.
+     * The returned list may contain zero, one, or more instances.
+     * The number of instances in the returned list is defined
+     * in the specification of the given management interface.
+     *
+     * @param connection the {@code MBeanServerConnection} to forward to.
+     * @param mxbeanInterface a management interface for a platform
+     *                        MXBean
+     *
+     * @return the list of platform MXBean proxies for
+     * forwarding the method calls of the {@code mxbeanInterface}
+     * through the given {@code MBeanServerConnection}.
+     *
+     * @throws IllegalArgumentException if {@code mxbeanInterface}
+     * is not a management interface for the platform.
+     *
+     * @throws java.io.IOException if a communication problem
+     * occurred when accessing the {@code MBeanServerConnection}.
+     *
+     * @since 1.7
+     */
+    public static <T extends PlatformManagedObject>
+        List<T> getPlatformMXBeans(MBeanServerConnection connection,
+                                   Class<T> mxbeanInterface)
+        throws java.io.IOException
+    {
+        String className = mxbeanInterface.getName();
+        for (PlatformComponent component: PlatformComponent.values()) {
+            // comparing the class name first instead of the Class instance
+            // to avoid causing unnecessary class loading of
+            // the other MXBean interfaces
+            if (className.equals(component.getMXBeanInterfaceName())) {
+                if (component.getMXBeanInterface() == mxbeanInterface) {
+                    return component.getMXBeans(connection,
+                                                mxbeanInterface);
+                }
+            }
+        }
+        throw new IllegalArgumentException(mxbeanInterface.getName() +
+            " is not implemented by any of the platform MXBeans.");
+    }
+
+    /**
+     * Returns a list of {@code Class} objects, subinterface of
+     * {@link PlatformManagedObject}, representing
+     * all management interfaces for
+     * monitoring and managing the Java platform.
+     *
+     * @return a list of {@code Class} objects, subinterface of
+     * {@link PlatformManagedObject} representing
+     * the management interfaces for
+     * monitoring and managing the Java platform.
+     *
+     * @since 1.7
+     */
+    public static List<Class<? extends PlatformManagedObject>> getAllPlatformMXBeanInterfaces() {
+        List<Class<? extends PlatformManagedObject>> result =
+            new ArrayList<Class<? extends PlatformManagedObject>>();
+        for (PlatformComponent component: PlatformComponent.values()) {
+            result.add(component.getMXBeanInterface());
+        }
+        return result;
+    }
+
     private static final String NOTIF_EMITTER =
         "javax.management.NotificationEmitter";
+
+    /**
+     * Registers an MXBean.
+     */
+    private static void addMXBean(final MBeanServer mbs, final PlatformManagedObject pmo) {
+        // Make DynamicMBean out of MXBean by wrapping it with a StandardMBean
+        final DynamicMBean dmbean;
+        if (pmo instanceof NotificationEmitter) {
+            dmbean = new StandardEmitterMBean(pmo, null, true, (NotificationEmitter) pmo);
+        } else {
+            dmbean = new StandardMBean(pmo, null, true);
+        }
+
+        try {
+            AccessController.doPrivileged(new PrivilegedExceptionAction<Void>() {
+                public Void run() throws InstanceAlreadyExistsException,
+                                         MBeanRegistrationException,
+                                         NotCompliantMBeanException {
+                    mbs.registerMBean(dmbean, pmo.getObjectName());
+                    return null;
+                }
+            });
+        } catch (PrivilegedActionException e) {
+            throw new RuntimeException(e.getException());
+        }
+    }
+
 }
--- a/src/share/classes/java/lang/management/MemoryMXBean.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/java/lang/management/MemoryMXBean.java	Fri Apr 25 09:03:20 2008 -0400
@@ -46,6 +46,9 @@
  *           <tt>java.lang:type=Memory</tt>}
  * </blockquote>
  *
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
+ *
  * <h4> Memory </h4>
  * The memory system of the Java virtual machine manages
  * the following kinds of memory:
@@ -190,6 +193,7 @@
  * emitter.addNotificationListener(listener, null, null);
  * </pre></blockquote>
  *
+ * @see ManagementFactory#getPlatformMXBeans(Class)
  * @see <a href="../../../javax/management/package-summary.html">
  *      JMX Specification.</a>
  * @see <a href="package-summary.html#examples">
@@ -198,7 +202,7 @@
  * @author  Mandy Chung
  * @since   1.5
  */
-public interface MemoryMXBean {
+public interface MemoryMXBean extends PlatformManagedObject {
     /**
      * Returns the approximate number of objects for which
      * finalization is pending.
--- a/src/share/classes/java/lang/management/MemoryManagerMXBean.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/java/lang/management/MemoryManagerMXBean.java	Fri Apr 25 09:03:20 2008 -0400
@@ -45,6 +45,10 @@
  *    <tt>java.lang:type=MemoryManager</tt>}<tt>,name=</tt><i>manager's name</i>
  * </blockquote>
  *
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
+ *
+ * @see ManagementFactory#getPlatformMXBeans(Class)
  * @see MemoryMXBean
  *
  * @see <a href="../../../javax/management/package-summary.html">
@@ -55,7 +59,7 @@
  * @author  Mandy Chung
  * @since   1.5
  */
-public interface MemoryManagerMXBean {
+public interface MemoryManagerMXBean extends PlatformManagedObject {
     /**
      * Returns the name representing this memory manager.
      *
--- a/src/share/classes/java/lang/management/MemoryPoolMXBean.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/java/lang/management/MemoryPoolMXBean.java	Fri Apr 25 09:03:20 2008 -0400
@@ -46,6 +46,9 @@
  *    <tt>java.lang:type=MemoryPool</tt>}<tt>,name=</tt><i>pool's name</i>
  * </blockquote>
  *
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
+ *
  * <h4>Memory Type</h4>
  * <p>The Java virtual machine has a heap for object allocation and also
  * maintains non-heap memory for the method area and the Java virtual
@@ -349,6 +352,7 @@
  * described above for the <a href="#UsageThreshold">usage threshold</a>
  * in a similar fashion.
  *
+ * @see ManagementFactory#getPlatformMXBeans(Class)
  * @see <a href="../../../javax/management/package-summary.html">
  *      JMX Specification.</a>
  * @see <a href="package-summary.html#examples">
@@ -357,7 +361,7 @@
  * @author  Mandy Chung
  * @since   1.5
  */
-public interface MemoryPoolMXBean {
+public interface MemoryPoolMXBean extends PlatformManagedObject {
     /**
      * Returns the name representing this memory pool.
      *
--- a/src/share/classes/java/lang/management/OperatingSystemMXBean.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/java/lang/management/OperatingSystemMXBean.java	Fri Apr 25 09:03:20 2008 -0400
@@ -44,10 +44,14 @@
  *      <tt>java.lang:type=OperatingSystem</tt>}
  * </blockquote>
  *
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
+ *
  * <p> This interface defines several convenient methods for accessing
  * system properties about the operating system on which the Java
  * virtual machine is running.
  *
+ * @see ManagementFactory#getPlatformMXBeans(Class)
  * @see <a href="../../../javax/management/package-summary.html">
  *      JMX Specification.</a>
  * @see <a href="package-summary.html#examples">
@@ -56,7 +60,7 @@
  * @author  Mandy Chung
  * @since   1.5
  */
-public interface OperatingSystemMXBean {
+public interface OperatingSystemMXBean extends PlatformManagedObject {
     /**
      * Returns the operating system name.
      * This method is equivalent to <tt>System.getProperty("os.name")</tt>.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/java/lang/management/PlatformComponent.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,382 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package java.lang.management;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.logging.LoggingMXBean;
+import java.util.logging.LogManager;
+import javax.management.MBeanServerConnection;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+
+import com.sun.management.HotSpotDiagnosticMXBean;
+import com.sun.management.UnixOperatingSystemMXBean;
+
+import sun.management.ManagementFactoryHelper;
+
+/**
+ * This enum class defines the list of platform components
+ * that provides monitoring and management support.
+ * Each enum represents one MXBean interface. A MXBean
+ * instance could implement one or more MXBean interfaces.
+ *
+ * For example, com.sun.management.GarbageCollectorMXBean
+ * extends java.lang.management.GarbageCollectorMXBean
+ * and there is one set of garbage collection MXBean instances,
+ * each of which implements both c.s.m. and j.l.m. interfaces.
+ * There are two separate enums GARBAGE_COLLECTOR
+ * and SUN_GARBAGE_COLLECTOR so that ManagementFactory.getPlatformMXBeans(Class)
+ * will return the list of MXBeans of the specified type.
+ *
+ * To add a new MXBean interface for the Java platform,
+ * add a new enum constant and implement the MXBeanFetcher.
+ */
+enum PlatformComponent {
+
+    /**
+     * Class loading system of the Java virtual machine.
+     */
+    CLASS_LOADING(
+        "java.lang.management.ClassLoadingMXBean",
+        "java.lang", "ClassLoading", defaultKeyProperties(),
+        new MXBeanFetcher<ClassLoadingMXBean>() {
+            public List<ClassLoadingMXBean> getMXBeans() {
+                return Collections.singletonList(ManagementFactoryHelper.getClassLoadingMXBean());
+            }
+        }),
+
+    /**
+     * Compilation system of the Java virtual machine.
+     */
+    COMPILATION(
+        "java.lang.management.CompilationMXBean",
+        "java.lang", "Compilation", defaultKeyProperties(),
+        new MXBeanFetcher<CompilationMXBean>() {
+            public List<CompilationMXBean> getMXBeans() {
+                CompilationMXBean m = ManagementFactoryHelper.getCompilationMXBean();
+                if (m == null) {
+                   return Collections.emptyList();
+                } else {
+                   return Collections.singletonList(m);
+                }
+            }
+        }),
+
+    /**
+     * Memory system of the Java virtual machine.
+     */
+    MEMORY(
+        "java.lang.management.MemoryMXBean",
+        "java.lang", "Memory", defaultKeyProperties(),
+        new MXBeanFetcher<MemoryMXBean>() {
+            public List<MemoryMXBean> getMXBeans() {
+                return Collections.singletonList(ManagementFactoryHelper.getMemoryMXBean());
+            }
+        }),
+
+    /**
+     * Garbage Collector in the Java virtual machine.
+     */
+    GARBAGE_COLLECTOR(
+        "java.lang.management.GarbageCollectorMXBean",
+        "java.lang", "GarbageCollector", keyProperties("name"),
+        new MXBeanFetcher<GarbageCollectorMXBean>() {
+            public List<GarbageCollectorMXBean> getMXBeans() {
+                return ManagementFactoryHelper.
+                           getGarbageCollectorMXBeans();
+            }
+        }),
+
+    /**
+     * Memory manager in the Java virtual machine.
+     */
+    MEMORY_MANAGER(
+        "java.lang.management.MemoryManagerMXBean",
+        "java.lang", "MemoryManager", keyProperties("name"),
+        new MXBeanFetcher<MemoryManagerMXBean>() {
+            public List<MemoryManagerMXBean> getMXBeans() {
+                return ManagementFactoryHelper.getMemoryManagerMXBeans();
+            }
+        },
+        GARBAGE_COLLECTOR),
+
+    /**
+     * Memory pool in the Java virtual machine.
+     */
+    MEMORY_POOL(
+        "java.lang.management.MemoryPoolMXBean",
+        "java.lang", "MemoryPool", keyProperties("name"),
+        new MXBeanFetcher<MemoryPoolMXBean>() {
+            public List<MemoryPoolMXBean> getMXBeans() {
+                return ManagementFactoryHelper.getMemoryPoolMXBeans();
+            }
+        }),
+
+    /**
+     * Operating system on which the Java virtual machine is running
+     */
+    OPERATING_SYSTEM(
+        "java.lang.management.OperatingSystemMXBean",
+        "java.lang", "OperatingSystem", defaultKeyProperties(),
+        new MXBeanFetcher<OperatingSystemMXBean>() {
+            public List<OperatingSystemMXBean> getMXBeans() {
+                return Collections.singletonList(ManagementFactoryHelper.getOperatingSystemMXBean());
+            }
+        }),
+
+    /**
+     * Runtime system of the Java virtual machine.
+     */
+    RUNTIME(
+        "java.lang.management.RuntimeMXBean",
+        "java.lang", "Runtime", defaultKeyProperties(),
+        new MXBeanFetcher<RuntimeMXBean>() {
+            public List<RuntimeMXBean> getMXBeans() {
+                return Collections.singletonList(ManagementFactoryHelper.getRuntimeMXBean());
+            }
+        }),
+
+    /**
+     * Threading system of the Java virtual machine.
+     */
+    THREADING(
+        "java.lang.management.ThreadMXBean",
+        "java.lang", "Threading", defaultKeyProperties(),
+        new MXBeanFetcher<ThreadMXBean>() {
+            public List<ThreadMXBean> getMXBeans() {
+                return Collections.singletonList(ManagementFactoryHelper.getThreadMXBean());
+            }
+        }),
+
+
+    /**
+     * Logging facility.
+     */
+    LOGGING(
+        "java.util.logging.LoggingMXBean",
+        "java.util.logging", "Logging", defaultKeyProperties(),
+        new MXBeanFetcher<LoggingMXBean>() {
+            public List<LoggingMXBean> getMXBeans() {
+                return Collections.singletonList(LogManager.getLoggingMXBean());
+            }
+        }),
+
+    // Sun Platform Extension
+
+    /**
+     * Sun extension garbage collector that performs collections in cycles.
+     */
+    SUN_GARBAGE_COLLECTOR(
+        "com.sun.management.GarbageCollectorMXBean",
+        "java.lang", "GarbageCollector", keyProperties("name"),
+        new MXBeanFetcher<com.sun.management.GarbageCollectorMXBean>() {
+            public List<com.sun.management.GarbageCollectorMXBean> getMXBeans() {
+                return getGcMXBeanList(com.sun.management.GarbageCollectorMXBean.class);
+            }
+        }),
+
+    /**
+     * Sun extension operating system on which the Java virtual machine
+     * is running.
+     */
+    SUN_OPERATING_SYSTEM(
+        "com.sun.management.OperatingSystemMXBean",
+        "java.lang", "OperatingSystem", defaultKeyProperties(),
+        new MXBeanFetcher<com.sun.management.OperatingSystemMXBean>() {
+            public List<com.sun.management.OperatingSystemMXBean> getMXBeans() {
+                return getOSMXBeanList(com.sun.management.OperatingSystemMXBean.class);
+            }
+        }),
+
+    /**
+     * Unix operating system.
+     */
+    SUN_UNIX_OPERATING_SYSTEM(
+        "com.sun.management.UnixOperatingSystemMXBean",
+        "java.lang", "OperatingSystem", defaultKeyProperties(),
+        new MXBeanFetcher<UnixOperatingSystemMXBean>() {
+            public List<UnixOperatingSystemMXBean> getMXBeans() {
+                return getOSMXBeanList(com.sun.management.UnixOperatingSystemMXBean.class);
+            }
+        }),
+
+    /**
+     * Diagnostic support for the HotSpot Virtual Machine.
+     */
+    HOTSPOT_DIAGNOSTIC(
+        "com.sun.management.HotSpotDiagnosticMXBean",
+        "com.sun.management", "HotSpotDiagnostic", defaultKeyProperties(),
+        new MXBeanFetcher<HotSpotDiagnosticMXBean>() {
+            public List<HotSpotDiagnosticMXBean> getMXBeans() {
+                return Collections.singletonList(ManagementFactoryHelper.getDiagnosticMXBean());
+            }
+        });
+
+
+    /**
+     * A task that returns the MXBeans for a component.
+     */
+    interface MXBeanFetcher<T extends PlatformManagedObject> {
+        public List<T> getMXBeans();
+    }
+
+    /*
+     * Returns a list of the GC MXBeans of the given type.
+     */
+    private static <T extends GarbageCollectorMXBean>
+            List<T> getGcMXBeanList(Class<T> gcMXBeanIntf) {
+        List<GarbageCollectorMXBean> list =
+            ManagementFactoryHelper.getGarbageCollectorMXBeans();
+        List<T> result = new ArrayList<T>(list.size());
+        for (GarbageCollectorMXBean m : list) {
+            if (gcMXBeanIntf.isInstance(m)) {
+                result.add(gcMXBeanIntf.cast(m));
+            }
+        }
+        return result;
+    }
+
+    /*
+     * Returns the OS mxbean instance of the given type.
+     */
+    private static <T extends OperatingSystemMXBean>
+            List<T> getOSMXBeanList(Class<T> osMXBeanIntf) {
+        OperatingSystemMXBean m =
+            ManagementFactoryHelper.getOperatingSystemMXBean();
+        if (osMXBeanIntf.isInstance(m)) {
+            return Collections.singletonList(osMXBeanIntf.cast(m));
+        } else {
+            return Collections.emptyList();
+        }
+    }
+
+    private final String mxbeanInterfaceName;
+    private final String domain;
+    private final String type;
+    private final Set<String> keyProperties;
+    private final MXBeanFetcher fetcher;
+    private final PlatformComponent[] subComponents;
+
+    private PlatformComponent(String intfName,
+                              String domain, String type,
+                              Set<String> keyProperties,
+                              MXBeanFetcher fetcher) {
+        this.mxbeanInterfaceName = intfName;
+        this.domain = domain;
+        this.type = type;
+        this.keyProperties = keyProperties;
+        this.fetcher = fetcher;
+        this.subComponents = new PlatformComponent[0];
+    }
+    private PlatformComponent(String intfName,
+                              String domain, String type,
+                              Set<String> keyProperties,
+                              MXBeanFetcher fetcher,
+                              PlatformComponent... subComponents) {
+        this.mxbeanInterfaceName = intfName;
+        this.domain = domain;
+        this.type = type;
+        this.keyProperties = keyProperties;
+        this.fetcher = fetcher;
+        this.subComponents = subComponents;
+    }
+
+    private static Set<String> defaultKeyProps;
+    private static Set<String> defaultKeyProperties() {
+        if (defaultKeyProps == null) {
+            defaultKeyProps = Collections.singleton("type");
+        }
+        return defaultKeyProps;
+    }
+
+    private static Set<String> keyProperties(String... keyNames) {
+        Set<String> set = new HashSet<String>();
+        set.add("type");
+        for (String s : keyNames) {
+            set.add(s);
+        }
+        return set;
+    }
+
+    String getMXBeanInterfaceName() {
+        return mxbeanInterfaceName;
+    }
+
+    @SuppressWarnings("unchecked")
+    Class<? extends PlatformManagedObject> getMXBeanInterface() {
+        try {
+            // Lazy loading the MXBean interface only when it is needed
+            return (Class<? extends PlatformManagedObject>)
+                       Class.forName(mxbeanInterfaceName, false, null);
+        } catch (ClassNotFoundException x) {
+            throw new AssertionError(x);
+        }
+    }
+
+    @SuppressWarnings("unchecked")
+    <T extends PlatformManagedObject>
+        List<T> getMXBeans(Class<T> mxbeanInterface)
+    {
+        return fetcher.getMXBeans();
+    }
+
+    <T extends PlatformManagedObject>
+        List<T> getMXBeans(MBeanServerConnection mbs, Class<T> mxbeanInterface)
+        throws java.io.IOException
+    {
+        List<T> result = new ArrayList<T>();
+        for (ObjectName on : getObjectNames(mbs)) {
+            result.add(ManagementFactory.
+                newPlatformMXBeanProxy(mbs,
+                                       on.getCanonicalName(),
+                                       mxbeanInterface)
+            );
+        }
+        return result;
+    }
+
+    private Set<ObjectName> getObjectNames(MBeanServerConnection mbs)
+        throws java.io.IOException
+    {
+        String domainAndType = domain + ":type=" + type;
+        if (keyProperties.size() > 1) {
+            // if there are more than 1 key properties (i.e. other than "type")
+            domainAndType += ",*";
+        }
+        ObjectName on = com.sun.jmx.mbeanserver.Util.newObjectName(domainAndType);
+        Set<ObjectName> set =  mbs.queryNames(on, null);
+        for (PlatformComponent pc : subComponents) {
+            set.addAll(pc.getObjectNames(mbs));
+        }
+        return set;
+    }
+
+    private static final long serialVersionUID = 6992337162326171013L;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/java/lang/management/PlatformManagedObject.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package java.lang.management;
+
+import javax.management.ObjectName;
+
+/**
+ * A platform managed object is a {@linkplain javax.management.MXBean JMX MXBean}
+ * for monitoring and managing a component in the Java platform.
+ * Each platform managed object has a unique
+ * <a href="ManagementFactory.html#MXBean">object name</a>
+ * for the {@linkplain ManagementFactory.getPlatformMBeanServer
+ * platform MBeanServer} access.
+ * All platform MXBeans will implement this interface.
+ *
+ * <p>
+ * Note:
+ * The platform MXBean interfaces (i.e. all subinterfaces
+ * of {@code PlatformManagedObject}) are implemented
+ * by the Java platform only.  New methods may be added in these interfaces
+ * in future Java SE releases.
+ * In addition, this {@code PlatformManagedObject} interface is only
+ * intended for the management interfaces for the platform to extend but
+ * not for applications.
+ *
+ * @see <a href="ManagementFactory.html#MXBean">Platform MXBeans</a>
+ * @since 1.7
+ */
+public interface PlatformManagedObject {
+    /**
+     * Returns an {@link ObjectName ObjectName} instance representing
+     * the object name of this platform managed object.
+     *
+     * @return an {@link ObjectName ObjectName} instance representing
+     * the object name of this platform managed object.
+     */
+    public ObjectName getObjectName();
+}
--- a/src/share/classes/java/lang/management/RuntimeMXBean.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/java/lang/management/RuntimeMXBean.java	Fri Apr 25 09:03:20 2008 -0400
@@ -44,9 +44,13 @@
  *           <tt>java.lang:type=Runtime</tt>}
  * </blockquote>
  *
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
+ *
  * <p> This interface defines several convenient methods for accessing
  * system properties about the Java virtual machine.
  *
+ * @see ManagementFactory#getPlatformMXBeans(Class)
  * @see <a href="../../../javax/management/package-summary.html">
  *      JMX Specification.</a>
  * @see <a href="package-summary.html#examples">
@@ -55,7 +59,7 @@
  * @author  Mandy Chung
  * @since   1.5
  */
-public interface RuntimeMXBean {
+public interface RuntimeMXBean extends PlatformManagedObject {
     /**
      * Returns the name representing the running Java virtual machine.
      * The returned name string can be any arbitrary string and
--- a/src/share/classes/java/lang/management/ThreadInfo.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/java/lang/management/ThreadInfo.java	Fri Apr 25 09:03:20 2008 -0400
@@ -26,6 +26,7 @@
 package java.lang.management;
 
 import javax.management.openmbean.CompositeData;
+import sun.management.ManagementFactoryHelper;
 import sun.management.ThreadInfoCompositeData;
 import static java.lang.Thread.State.*;
 
@@ -220,12 +221,9 @@
                             LockInfo[] lockedSynchronizers) {
         this.threadId = t.getId();
         this.threadName = t.getName();
-        this.threadState =
-            sun.management.ManagementFactory.toThreadState(state);
-        this.suspended =
-            sun.management.ManagementFactory.isThreadSuspended(state);
-        this.inNative =
-            sun.management.ManagementFactory.isThreadRunningNative(state);
+        this.threadState = ManagementFactoryHelper.toThreadState(state);
+        this.suspended = ManagementFactoryHelper.isThreadSuspended(state);
+        this.inNative = ManagementFactoryHelper.isThreadRunningNative(state);
         this.blockedCount = blockedCount;
         this.blockedTime = blockedTime;
         this.waitedCount = waitedCount;
--- a/src/share/classes/java/lang/management/ThreadMXBean.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/java/lang/management/ThreadMXBean.java	Fri Apr 25 09:03:20 2008 -0400
@@ -46,6 +46,9 @@
  *           <tt>java.lang:type=Threading</tt>}
  * </blockquote>
  *
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
+ *
  * <h4>Thread ID</h4>
  * Thread ID is a positive long value returned by calling the
  * {@link java.lang.Thread#getId} method for a thread.
@@ -108,6 +111,7 @@
  * {@link #findDeadlockedThreads} methods to find deadlocks in
  * the running application.
  *
+ * @see ManagementFactory#getPlatformMXBeans(Class)
  * @see <a href="../../../javax/management/package-summary.html">
  *      JMX Specification.</a>
  * @see <a href="package-summary.html#examples">
@@ -117,7 +121,7 @@
  * @since   1.5
  */
 
-public interface ThreadMXBean {
+public interface ThreadMXBean extends PlatformManagedObject {
     /**
      * Returns the current number of live threads including both
      * daemon and non-daemon threads.
--- a/src/share/classes/java/net/CookieManager.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/java/net/CookieManager.java	Fri Apr 25 09:03:20 2008 -0400
@@ -205,11 +205,31 @@
         if (cookieJar == null)
             return Collections.unmodifiableMap(cookieMap);
 
+        boolean secureLink = "https".equalsIgnoreCase(uri.getScheme());
         List<HttpCookie> cookies = new java.util.ArrayList<HttpCookie>();
+        String path = uri.getPath();
+        if (path == null || path.isEmpty()) {
+            path = "/";
+        }
         for (HttpCookie cookie : cookieJar.get(uri)) {
             // apply path-matches rule (RFC 2965 sec. 3.3.4)
-            if (pathMatches(uri.getPath(), cookie.getPath())) {
-                cookies.add(cookie);
+            // and check for the possible "secure" tag (i.e. don't send
+            // 'secure' cookies over unsecure links)
+            if (pathMatches(path, cookie.getPath()) &&
+                    (secureLink || !cookie.getSecure())) {
+                // Let's check the authorize port list if it exists
+                String ports = cookie.getPortlist();
+                if (ports != null && !ports.isEmpty()) {
+                    int port = uri.getPort();
+                    if (port == -1) {
+                        port = "https".equals(uri.getScheme()) ? 443 : 80;
+                    }
+                    if (isInPortList(ports, port)) {
+                        cookies.add(cookie);
+                    }
+                } else {
+                    cookies.add(cookie);
+                }
             }
         }
 
@@ -251,8 +271,46 @@
                 try {
                     List<HttpCookie> cookies = HttpCookie.parse(headerValue);
                     for (HttpCookie cookie : cookies) {
-                        if (shouldAcceptInternal(uri, cookie)) {
-                            cookieJar.add(uri, cookie);
+                        if (cookie.getPath() == null) {
+                            // If no path is specified, then by default
+                            // the path is the directory of the page/doc
+                            String path = uri.getPath();
+                            if (!path.endsWith("/")) {
+                                int i = path.lastIndexOf("/");
+                                if (i > 0) {
+                                    path = path.substring(0, i + 1);
+                                } else {
+                                    path = "/";
+                                }
+                            }
+                            cookie.setPath(path);
+                        }
+                        String ports = cookie.getPortlist();
+                        if (ports != null) {
+                            int port = uri.getPort();
+                            if (port == -1) {
+                                port = "https".equals(uri.getScheme()) ? 443 : 80;
+                            }
+                            if (ports.isEmpty()) {
+                                // Empty port list means this should be restricted
+                                // to the incoming URI port
+                                cookie.setPortlist("" + port );
+                                if (shouldAcceptInternal(uri, cookie)) {
+                                    cookieJar.add(uri, cookie);
+                                }
+                            } else {
+                                // Only store cookies with a port list
+                                // IF the URI port is in that list, as per
+                                // RFC 2965 section 3.3.2
+                                if (isInPortList(ports, port) &&
+                                        shouldAcceptInternal(uri, cookie)) {
+                                    cookieJar.add(uri, cookie);
+                                }
+                            }
+                        } else {
+                            if (shouldAcceptInternal(uri, cookie)) {
+                                cookieJar.add(uri, cookie);
+                            }
                         }
                     }
                 } catch (IllegalArgumentException e) {
@@ -276,6 +334,32 @@
     }
 
 
+    static private boolean isInPortList(String lst, int port) {
+        int i = lst.indexOf(",");
+        int val = -1;
+        while (i > 0) {
+            try {
+                val = Integer.parseInt(lst.substring(0, i));
+                if (val == port) {
+                    return true;
+                }
+            } catch (NumberFormatException numberFormatException) {
+            }
+            lst = lst.substring(i+1);
+            i = lst.indexOf(",");
+        }
+        if (!lst.isEmpty()) {
+            try {
+                val = Integer.parseInt(lst);
+                if (val == port) {
+                    return true;
+                }
+            } catch (NumberFormatException numberFormatException) {
+            }
+        }
+        return false;
+    }
+
     /*
      * path-matches algorithm, as defined by RFC 2965
      */
--- a/src/share/classes/java/net/HttpCookie.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/java/net/HttpCookie.java	Fri Apr 25 09:03:20 2008 -0400
@@ -92,9 +92,14 @@
 
 
     //
-    // date format used by Netscape's cookie draft
+    // date formats used by Netscape's cookie draft
+    // as well as formats seen on various sites
     //
-    private final static String NETSCAPE_COOKIE_DATE_FORMAT = "EEE',' dd-MMM-yyyy HH:mm:ss 'GMT'";
+    private final static String[] COOKIE_DATE_FORMATS = {
+        "EEE',' dd-MMM-yyyy HH:mm:ss 'GMT'",
+        "EEE',' dd MMM yyyy HH:mm:ss 'GMT'",
+        "EEE MMM dd yyyy HH:mm:ss 'GMT'Z"
+    };
 
     //
     // constant strings represent set-cookie header token
@@ -148,6 +153,7 @@
         secure = false;
 
         whenCreated = System.currentTimeMillis();
+        portlist = null;
     }
 
 
@@ -505,14 +511,14 @@
 
 
     /**
-     * Indicates to the browser whether the cookie should only be sent
-     * using a secure protocol, such as HTTPS or SSL.
+     * Indicates whether the cookie should only be sent using a secure protocol,
+     * such as HTTPS or SSL.
      *
      * <p>The default value is <code>false</code>.
      *
-     * @param flag      if <code>true</code>, sends the cookie from the browser
-     *                  to the server using only when using a secure protocol;
-     *                  if <code>false</code>, sent on any protocol
+     * @param flag      If <code>true</code>, the cookie can only be sent over
+     *                  a secure protocol like https.
+     *                  If <code>false</code>, it can be sent over any protocol.
      *
      * @see #getSecure
      *
@@ -526,12 +532,12 @@
 
 
     /**
-     * Returns <code>true</code> if the browser is sending cookies
-     * only over a secure protocol, or <code>false</code> if the
-     * browser can send cookies using any protocol.
+     * Returns <code>true</code> if sending this cookie should be
+     * restricted to a secure protocol, or <code>false</code> if the
+     * it can be sent using any protocol.
      *
-     * @return          <code>true</code> if the browser can use
-     *                  any standard protocol; otherwise, <code>false</code>
+     * @return          <code>false</code> if the cookie can be sent over
+     *                  any standard protocol; otherwise, <code>true</code>
      *
      * @see #setSecure
      *
@@ -748,6 +754,7 @@
      *
      * @return  a string form of the cookie. The string has the defined format
      */
+    @Override
     public String toString() {
         if (getVersion() > 0) {
             return toRFC2965HeaderString();
@@ -768,6 +775,7 @@
      * @return          <tt>true</tt> if 2 http cookies equal to each other;
      *                  otherwise, <tt>false</tt>
      */
+    @Override
     public boolean equals(Object obj) {
         if (obj == this)
             return true;
@@ -798,6 +806,7 @@
      *
      * @return          this http cookie's hash code
      */
+    @Override
     public int hashCode() {
         int h1 = name.toLowerCase().hashCode();
         int h2 = (domain!=null) ? domain.toLowerCase().hashCode() : 0;
@@ -811,6 +820,7 @@
      *
      * @return          a clone of this http cookie
      */
+    @Override
     public Object clone() {
         try {
             return super.clone();
@@ -978,7 +988,7 @@
             });
         assignors.put("port", new CookieAttributeAssignor(){
                 public void assign(HttpCookie cookie, String attrName, String attrValue) {
-                    if (cookie.getPortlist() == null) cookie.setPortlist(attrValue);
+                    if (cookie.getPortlist() == null) cookie.setPortlist(attrValue == null ? "" : attrValue);
                 }
             });
         assignors.put("secure", new CookieAttributeAssignor(){
@@ -1050,24 +1060,31 @@
         return sb.toString();
     }
 
+    private static SimpleDateFormat[] cDateFormats = null;
+    static {
+            cDateFormats = new SimpleDateFormat[COOKIE_DATE_FORMATS.length];
+            for (int i = 0; i < COOKIE_DATE_FORMATS.length; i++) {
+                cDateFormats[i] = new SimpleDateFormat(COOKIE_DATE_FORMATS[i]);
+                cDateFormats[i].setTimeZone(TimeZone.getTimeZone("GMT"));
+            }
+    }
     /*
-     * @param dateString        a date string in format of
-     *                          "EEE',' dd-MMM-yyyy HH:mm:ss 'GMT'",
-     *                          which defined in Netscape cookie spec
+     * @param dateString        a date string in one of the formats
+     *                          defined in Netscape cookie spec
      *
      * @return                  delta seconds between this cookie's creation
      *                          time and the time specified by dateString
      */
     private long expiryDate2DeltaSeconds(String dateString) {
-        SimpleDateFormat df = new SimpleDateFormat(NETSCAPE_COOKIE_DATE_FORMAT);
-        df.setTimeZone(TimeZone.getTimeZone("GMT"));
+        for (SimpleDateFormat df : cDateFormats) {
+            try {
+                Date date = df.parse(dateString);
+                return (date.getTime() - whenCreated) / 1000;
+            } catch (Exception e) {
 
-        try {
-            Date date = df.parse(dateString);
-            return (date.getTime() - whenCreated) / 1000;
-        } catch (Exception e) {
-            return 0;
+            }
         }
+        return 0;
     }
 
 
--- a/src/share/classes/java/util/logging/Logging.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/java/util/logging/Logging.java	Fri Apr 25 09:03:20 2008 -0400
@@ -29,6 +29,8 @@
 import java.util.List;
 import java.util.ArrayList;
 
+import javax.management.ObjectName;
+
 /**
  * Logging is the implementation class of LoggingMXBean.
  *
@@ -115,4 +117,7 @@
         }
     }
 
+    public ObjectName getObjectName() {
+        return com.sun.jmx.mbeanserver.Util.newObjectName(LogManager.LOGGING_MXBEAN_NAME);
+    }
 }
--- a/src/share/classes/java/util/logging/LoggingMXBean.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/java/util/logging/LoggingMXBean.java	Fri Apr 25 09:03:20 2008 -0400
@@ -25,6 +25,8 @@
 
 package java.util.logging;
 
+import java.lang.management.PlatformManagedObject;
+
 /**
  * The management interface for the logging facility.
  *
@@ -43,14 +45,17 @@
  *           <tt>java.util.logging:type=Logging</tt>}
  * </blockquote>
  *
- * @see java.lang.management.ManagementFactory
+ * It can be obtained by calling the
+ * {@link PlatformManagedObject#getObjectName} method.
+ *
+ * @see java.lang.management.ManagementFactory#getPlatformMXBeans(Class)
  *
  * @author  Ron Mann
  * @author  Mandy Chung
  * @since   1.5
  *
  */
-public interface LoggingMXBean {
+public interface LoggingMXBean extends PlatformManagedObject {
 
     /**
      * Returns the list of currently registered loggers. This method
--- a/src/share/classes/java/util/regex/Pattern.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/java/util/regex/Pattern.java	Fri Apr 25 09:03:20 2008 -0400
@@ -2844,7 +2844,15 @@
     /**
      *  Utility method for parsing unicode escape sequences.
      */
-    private int u() {
+    private int cursor() {
+        return cursor;
+    }
+
+    private void setcursor(int pos) {
+        cursor = pos;
+    }
+
+    private int uxxxx() {
         int n = 0;
         for (int i = 0; i < 4; i++) {
             int ch = read();
@@ -2856,6 +2864,20 @@
         return n;
     }
 
+    private int u() {
+        int n = uxxxx();
+        if (Character.isHighSurrogate((char)n)) {
+            int cur = cursor();
+            if (read() == '\\' && read() == 'u') {
+                int n2 = uxxxx();
+                if (Character.isLowSurrogate((char)n2))
+                    return Character.toCodePoint((char)n, (char)n2);
+            }
+            setcursor(cur);
+        }
+        return n;
+    }
+
     //
     // Utility methods for code point support
     //
--- a/src/share/classes/javax/management/AndQueryExp.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/javax/management/AndQueryExp.java	Fri Apr 25 09:03:20 2008 -0400
@@ -100,12 +100,13 @@
    /**
     * Returns a string representation of this AndQueryExp
     */
-   public String toString() {
-     return "(" + exp1 + ") and (" + exp2 + ")";
-   }
+    @Override
+    public String toString() {
+        return "(" + exp1 + ") and (" + exp2 + ")";
+    }
 
-   @Override
-   String toQueryString() {
+    @Override
+    String toQueryString() {
         // Parentheses are only added if needed to disambiguate.
         return parens(exp1) + " and " + parens(exp2);
    }
--- a/src/share/classes/javax/management/BetweenQueryExp.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/javax/management/BetweenQueryExp.java	Fri Apr 25 09:03:20 2008 -0400
@@ -135,6 +135,7 @@
     /**
      * Returns the string representing the object.
      */
+    @Override
     public String toString()  {
         return "(" + exp1 + ") between (" + exp2 + ") and (" + exp3 + ")";
     }
--- a/src/share/classes/javax/management/BinaryRelQueryExp.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/javax/management/BinaryRelQueryExp.java	Fri Apr 25 09:03:20 2008 -0400
@@ -187,11 +187,11 @@
     /**
      * Returns the string representing the object.
      */
+    @Override
     public String toString()  {
         return "(" + exp1 + ") " + relOpString() + " (" + exp2 + ")";
     }
 
-    @Override
     String toQueryString() {
         return exp1 + " " + relOpString() + " " + exp2;
     }
--- a/src/share/classes/javax/management/NotQueryExp.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/javax/management/NotQueryExp.java	Fri Apr 25 09:03:20 2008 -0400
@@ -91,7 +91,6 @@
         return "not (" + exp + ")";
     }
 
-    @Override
     String toQueryString() {
         return "not (" + Query.toString(exp) + ")";
     }
--- a/src/share/classes/javax/management/ObjectName.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/javax/management/ObjectName.java	Fri Apr 25 09:03:20 2008 -0400
@@ -26,6 +26,7 @@
 package javax.management;
 
 import com.sun.jmx.mbeanserver.GetPropertyAction;
+import com.sun.jmx.mbeanserver.Util;
 import java.io.IOException;
 import java.io.InvalidObjectException;
 import java.io.ObjectInputStream;
@@ -222,8 +223,7 @@
  * @since 1.5
  */
 @SuppressWarnings("serial") // don't complain serialVersionUID not constant
-public class ObjectName extends ToQueryString
-        implements Comparable<ObjectName>, QueryExp {
+public class ObjectName implements Comparable<ObjectName>, QueryExp {
 
     /**
      * A structure recording property structure and
@@ -1386,12 +1386,7 @@
             throws NullPointerException {
         if (name.getClass().equals(ObjectName.class))
             return name;
-        try {
-            return new ObjectName(name.getSerializedNameString());
-        } catch (MalformedObjectNameException e) {
-            throw new IllegalArgumentException("Unexpected: " + e);
-            // can't happen
-        }
+        return Util.newObjectName(name.getSerializedNameString());
     }
 
     /**
@@ -1785,7 +1780,6 @@
         return getSerializedNameString();
     }
 
-    @Override
     String toQueryString() {
         return "LIKE " + Query.value(toString());
     }
@@ -1950,14 +1944,7 @@
      *
      * @since 1.6
      */
-    public static final ObjectName WILDCARD;
-    static {
-        try {
-            WILDCARD = new ObjectName("*:*");
-        } catch (MalformedObjectNameException e) {
-            throw new Error("Can't initialize wildcard name", e);
-        }
-    }
+    public static final ObjectName WILDCARD = Util.newObjectName("*:*");
 
     // Category : Utilities <===================================
 
--- a/src/share/classes/javax/management/OrQueryExp.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/javax/management/OrQueryExp.java	Fri Apr 25 09:03:20 2008 -0400
@@ -100,6 +100,7 @@
     /**
      * Returns a string representation of this OrQueryExp
      */
+    @Override
     public String toString() {
         return "(" + exp1 + ") or (" + exp2 + ")";
     }
--- a/src/share/classes/javax/management/Query.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/javax/management/Query.java	Fri Apr 25 09:03:20 2008 -0400
@@ -979,8 +979,18 @@
          if (query == null)
              return null;
 
-         if (query instanceof ToQueryString)
-             return ((ToQueryString) query).toQueryString();
+         // This is ugly. At one stage we had a non-public class called
+         // ToQueryString with the toQueryString() method, and every class
+         // mentioned here inherited from that class. But that interfered
+         // with serialization of custom subclasses of e.g. QueryEval. Even
+         // though we could make it work by adding a public constructor to this
+         // non-public class, that seemed fragile because according to the
+         // serialization spec it shouldn't work. If only non-public interfaces
+         // could have non-public methods.
+         if (query instanceof ObjectName)
+             return ((ObjectName) query).toQueryString();
+         if (query instanceof QueryEval)
+             return ((QueryEval) query).toQueryString();
 
          return query.toString();
      }
--- a/src/share/classes/javax/management/QueryEval.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/javax/management/QueryEval.java	Fri Apr 25 09:03:20 2008 -0400
@@ -25,20 +25,15 @@
 
 package javax.management;
 
-
 // java import
 import java.io.Serializable;
 
-// RI import
-import javax.management.MBeanServer;
-
-
 /**
  * Allows a query to be performed in the context of a specific MBean server.
  *
  * @since 1.5
  */
-public abstract class QueryEval extends ToQueryString implements Serializable {
+public abstract class QueryEval implements Serializable {
 
     /* Serial version */
     private static final long serialVersionUID = 2675899265640874796L;
@@ -80,4 +75,10 @@
     public static MBeanServer getMBeanServer() {
         return server.get();
     }
+
+    // Subclasses in this package can override this method to return a different
+    // string.
+    String toQueryString() {
+        return toString();
+    }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/javax/management/QueryNotificationFilter.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,417 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package javax.management;
+
+import com.sun.jmx.mbeanserver.NotificationMBeanSupport;
+import com.sun.jmx.mbeanserver.Util;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.util.Collections;
+import java.util.Set;
+
+/**
+ * <p>General-purpose notification filter.  This filter can be used to
+ * filter notifications from a possibly-remote MBean.  Most filtering
+ * decisions can be coded using this filter, which avoids having to
+ * write a custom implementation of the {@link NotificationFilter}
+ * class.  Writing a custom implementation requires you to deploy it
+ * on both the client and the server in the remote case, so using this class
+ * instead is recommended where possible.</p>
+ *
+ * <!-- <p>Because this class was introduced in version 2.0 of the JMX API,
+ * it may not be present on a remote JMX agent that is running an earlier
+ * version.  The method {@link JMX#addListenerWithFilter JMX.addListenerWithFilter}
+ * can be used when you cannot be sure whether this class is present in the
+ * agent you are connecting to.</p> -->
+ *
+ * <p>This class uses the {@linkplain Query Query API} to specify the
+ * filtering logic.  For example, to select only notifications where the
+ * {@linkplain Notification#getType() type} is {@code "com.example.mytype"},
+ * you could use</p>
+ *
+ * <pre>
+ * NotificationFilter filter =
+ *     new QueryNotificationFilter("Type = 'com.example.mytype'");
+ * </pre>
+ *
+ * <p>or equivalently</p>
+ *
+ * <pre>
+ * NotificationFilter filter =
+ *     new QueryNotificationFilter(
+ *             Query.eq(Query.attr("Type"), Query.value("com.example.mytype")));
+ * </pre>
+ *
+ * <p>(This particular example could also use
+ * {@link NotificationFilterSupport}.)</p>
+ *
+ * <p>Here are some other examples of filters you can specify with this class.</p>
+ *
+ * <dl>
+ *
+ * <dt>{@code QueryNotificationFilter("Type = 'com.example.type1' or
+ * Type = 'com.example.type2'")}
+ * <dd>Notifications where the type is either of the given strings.
+ *
+ * <dt>{@code QueryNotificationFilter("Type in ('com.example.type1',
+ * 'com.example.type2')")}
+ * <dd>Another way to write the previous example.
+ *
+ * <dt>{@code QueryNotificationFilter("SequenceNumber > 1000")}
+ * <dd>Notifications where the {@linkplain Notification#getSequenceNumber()
+ * sequence number} is greater than 1000.
+ *
+ * <dt>{@code QueryNotificationFilter(AttributeChangeNotification.class, null)}
+ * <dd>Notifications where the notification class is
+ * {@link AttributeChangeNotification} or a subclass of it.
+ *
+ * <dt>{@code QueryNotificationFilter(AttributeChangeNotification.class,
+ * "AttributeName = 'Size'")}
+ * <dd>Notifications where the notification class is
+ * {@link AttributeChangeNotification} or a subclass, and where the
+ * {@linkplain AttributeChangeNotification#getAttributeName() name of the
+ * changed attribute} is {@code Size}.
+ *
+ * <dt>{@code QueryNotificationFilter(AttributeChangeNotification.class,
+ * "AttributeName = 'Size' and NewValue - OldValue > 100")}
+ * <dd>As above, but the difference between the
+ * {@linkplain AttributeChangeNotification#getNewValue() new value} and the
+ * {@linkplain AttributeChangeNotification#getOldValue() old value} must be
+ * greater than 100.
+ *
+ * <dt>{@code QueryNotificationFilter("like 'com.example.mydomain:*'")}
+ * <dd>Notifications where the {@linkplain Notification#getSource() source}
+ * is an ObjectName that matches the pattern.
+ *
+ * <dt>{@code QueryNotificationFilter("Source.canonicalName like
+ * 'com.example.mydomain:%'")}
+ * <dd>Another way to write the previous example.
+ *
+ * <dt>{@code QueryNotificationFilter(MBeanServerNotification.class,
+ * "Type = 'JMX.mbean.registered' and MBeanName.canonicalName like
+ * 'com.example.mydomain:%'")}
+ * <dd>Notifications of class {@link MBeanServerNotification} representing
+ * an object registered in the domain {@code com.example.mydomain}.
+ *
+ * </dl>
+ *
+ * <h4>How it works</h4>
+ *
+ * <p>Although the examples above are clear, looking closely at the
+ * Query API reveals a subtlety.  A {@link QueryExp} is evaluated on
+ * an {@link ObjectName}, not a {@code Notification}.</p>
+ *
+ * <p>Every time a {@code Notification} is to be filtered by a
+ * {@code QueryNotificationFilter}, a special {@link MBeanServer} is created.
+ * This {@code MBeanServer} contains exactly one MBean, which represents the
+ * {@code Notification}.  If the {@linkplain Notification#getSource()
+ * source} of the notification is an {@code ObjectName}, which is
+ * recommended practice, then the name of the MBean representing the
+ * {@code Notification} will be this {@code ObjectName}.  Otherwise the
+ * name is unspecified.</p>
+ *
+ * <p>The query specified in the {@code QueryNotificationFilter} constructor
+ * is evaluated against this {@code MBeanServer} and {@code ObjectName},
+ * and the filter returns true if and only if the query does.  If the
+ * query throws an exception, then the filter will return false.</p>
+ *
+ * <p>The MBean representing the {@code Notification} has one attribute for
+ * every property of the {@code Notification}. Specifically, for every public
+ * method {@code T getX()} in the {@code NotificationClass}, the MBean will
+ * have an attribute called {@code X} of type {@code T}. For example, if the
+ * {@code Notification} is an {@code AttributeChangeNotification}, then the
+ * MBean will have an attribute called {@code AttributeName} of type
+ * {@code "java.lang.String"}, corresponding to the method {@link
+ * AttributeChangeNotification#getAttributeName}.</p>
+ *
+ * <p>Query evaluation usually involves calls to the methods of {@code
+ * MBeanServer}.  The methods have the following behavior:</p>
+ *
+ * <ul>
+ * <li>The {@link MBeanServer#getAttribute getAttribute} method returns the
+ * value of the corresponding property.
+ * <li>The {@link MBeanServer#getObjectInstance getObjectInstance}
+ * method returns an {@link ObjectInstance} where the {@link
+ * ObjectInstance#getObjectName ObjectName} is the name of the MBean and the
+ * {@link ObjectInstance#getClassName ClassName} is the class name of the
+ * {@code Notification}.
+ * <li>The {@link MBeanServer#isInstanceOf isInstanceOf} method returns true
+ * if and only if the {@code Notification}'s {@code ClassLoader} can load the
+ * named class, and the {@code Notification} is an {@linkplain Class#isInstance
+ * instance} of that class.
+ * </ul>
+ *
+ * <p>These are the only {@code MBeanServer} methods that are needed to
+ * evaluate standard queries. The behavior of the other {@code MBeanServer}
+ * methods is unspecified.</p>
+ *
+ * @since 1.7
+ */
+public class QueryNotificationFilter implements NotificationFilter {
+    private static final long serialVersionUID = -8408613922660635231L;
+
+    private static final ObjectName DEFAULT_NAME =
+            Util.newObjectName(":type=Notification");
+    private static final QueryExp trueQuery;
+    static {
+        ValueExp zero = Query.value(0);
+        trueQuery = Query.eq(zero, zero);
+    }
+
+    private final QueryExp query;
+
+    /**
+     * Construct a {@code QueryNotificationFilter} that evaluates the given
+     * {@code QueryExp} to determine whether to accept a notification.
+     *
+     * @param query the {@code QueryExp} to evaluate.  Can be null,
+     * in which case all notifications are accepted.
+     */
+    public QueryNotificationFilter(QueryExp query) {
+        if (query == null)
+            this.query = trueQuery;
+        else
+            this.query = query;
+    }
+
+    /**
+     * Construct a {@code QueryNotificationFilter} that evaluates the query
+     * in the given string to determine whether to accept a notification.
+     * The string is converted into a {@code QueryExp} using
+     * {@link Query#fromString Query.fromString}.
+     *
+     * @param query the string specifying the query to evaluate.  Can be null,
+     * in which case all notifications are accepted.
+     *
+      * @throws IllegalArgumentException if the string is not a valid
+      * query string.
+     */
+    public QueryNotificationFilter(String query) {
+        this(Query.fromString(query));
+    }
+
+    /**
+     * <p>Construct a {@code QueryNotificationFilter} that evaluates the query
+     * in the given string to determine whether to accept a notification,
+     * and where the notification must also be an instance of the given class.
+     * The string is converted into a {@code QueryExp} using
+     * {@link Query#fromString Query.fromString}.</p>
+     *
+     * @param notifClass the class that the notification must be an instance of.
+     * Cannot be null.
+     *
+     * @param query the string specifying the query to evaluate.  Can be null,
+     * in which case all notifications are accepted.
+     *
+     * @throws IllegalArgumentException if the string is not a valid
+     * query string, or if {@code notifClass} is null.
+     */
+    public QueryNotificationFilter(
+            Class<? extends Notification> notifClass, String query) {
+        this(Query.and(Query.isInstanceOf(Query.value(notNull(notifClass).getName())),
+                       Query.fromString(query)));
+    }
+
+    private static <T> T notNull(T x) {
+        if (x == null)
+            throw new IllegalArgumentException("Null argument");
+        return x;
+    }
+
+    /**
+     * Retrieve the query that this notification filter will evaluate for
+     * each notification.
+     *
+     * @return the query.
+     */
+    public QueryExp getQuery() {
+        return query;
+    }
+
+    public boolean isNotificationEnabled(Notification notification) {
+        ObjectName name;
+
+        Object source = notification.getSource();
+        if (source instanceof ObjectName)
+            name = (ObjectName) source;
+        else
+            name = DEFAULT_NAME;
+
+        MBS mbsImpl = new MBS(notification, name);
+        MBeanServer mbs = (MBeanServer) Proxy.newProxyInstance(
+                MBeanServer.class.getClassLoader(),
+                new Class<?>[] {MBeanServer.class},
+                new ForwardIH(mbsImpl));
+        return evalQuery(query, mbs, name);
+    }
+
+    private static boolean evalQuery(
+            QueryExp query, MBeanServer mbs, ObjectName name) {
+        MBeanServer oldMBS = QueryEval.getMBeanServer();
+        try {
+            if (mbs != null)
+                query.setMBeanServer(mbs);
+            return query.apply(name);
+        } catch (Exception e) {
+            return false;
+        } finally {
+            query.setMBeanServer(oldMBS);
+        }
+    }
+
+    private static class ForwardIH implements InvocationHandler {
+        private final MBS mbs;
+
+        ForwardIH(MBS mbs) {
+            this.mbs = mbs;
+        }
+
+        public Object invoke(Object proxy, Method method, Object[] args)
+                throws Throwable {
+            Method forward;
+            try {
+                forward = MBS.class.getMethod(
+                        method.getName(), method.getParameterTypes());
+            } catch (NoSuchMethodException e) {
+                throw new UnsupportedOperationException(method.getName());
+            }
+            try {
+                return forward.invoke(mbs, args);
+            } catch (InvocationTargetException e) {
+                throw e.getCause();
+            }
+        }
+    }
+
+    private static class MBS {
+        private final Notification notification;
+        private final ObjectName objectName;
+        private final ObjectInstance objectInstance;
+        private volatile DynamicMBean mbean;
+
+        MBS(Notification n, ObjectName name) {
+            this.notification = n;
+            this.objectName = name;
+            this.objectInstance = new ObjectInstance(name, n.getClass().getName());
+        }
+
+        private void checkName(ObjectName name) throws InstanceNotFoundException {
+            if (!objectName.equals(name))
+                throw new InstanceNotFoundException(String.valueOf(name));
+        }
+
+        private DynamicMBean mbean(ObjectName name)
+                throws InstanceNotFoundException, ReflectionException {
+            if (mbean == null) {
+                try {
+                    mbean = new NotificationMBeanSupport(notification);
+                } catch (NotCompliantMBeanException e) {
+                    throw new ReflectionException(e);
+                }
+            }
+            return mbean;
+        }
+
+        public ObjectInstance getObjectInstance(ObjectName name)
+                throws InstanceNotFoundException {
+            checkName(name);
+            return objectInstance;
+        }
+
+        public Set<ObjectInstance> queryMBeans(ObjectName name, QueryExp query) {
+            Set<ObjectName> names = queryNames(name, query);
+            switch (names.size()) {
+            case 0:
+                return Collections.emptySet();
+            case 1:
+                return Collections.singleton(objectInstance);
+            default:
+                throw new UnsupportedOperationException("Internal error");
+            }
+        }
+
+        public Set<ObjectName> queryNames(ObjectName name, QueryExp query) {
+            if ((name != null && !name.apply(objectName)) ||
+                    (query != null && !evalQuery(query, null, name)))
+                return Collections.emptySet();
+            return Collections.singleton(objectName);
+        }
+
+        public boolean isRegistered(ObjectName name) {
+            return objectName.equals(name);
+        }
+
+        public Integer getMBeanCount() {
+            return 1;
+        }
+
+        public Object getAttribute(ObjectName name, String attribute)
+                throws MBeanException, AttributeNotFoundException,
+                       InstanceNotFoundException, ReflectionException {
+            return mbean(name).getAttribute(attribute);
+        }
+
+        public AttributeList getAttributes(ObjectName name, String[] attributes)
+                throws InstanceNotFoundException, ReflectionException {
+            return mbean(name).getAttributes(attributes);
+        }
+
+        public String getDefaultDomain() {
+            return objectName.getDomain();
+        }
+
+        public String[] getDomains() {
+            return new String[] {objectName.getDomain()};
+        }
+
+        public MBeanInfo getMBeanInfo(ObjectName name)
+                throws InstanceNotFoundException, ReflectionException {
+            return mbean(name).getMBeanInfo();
+        }
+
+        public boolean isInstanceOf(ObjectName name, String className)
+                throws InstanceNotFoundException {
+            try {
+                mbean(name);
+                ClassLoader loader = notification.getClass().getClassLoader();
+                Class<?> c = Class.forName(className, false, loader);
+                return c.isInstance(notification);
+            } catch (ReflectionException e) {
+                return false;
+            } catch (ClassNotFoundException e) {
+                return false;
+            }
+        }
+
+        public ClassLoader getClassLoaderFor(ObjectName mbeanName)
+                throws InstanceNotFoundException {
+            checkName(mbeanName);
+            return notification.getClass().getClassLoader();
+        }
+    }
+}
--- a/src/share/classes/javax/swing/plaf/synth/doc-files/synth.dtd	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/javax/swing/plaf/synth/doc-files/synth.dtd	Fri Apr 25 09:03:20 2008 -0400
@@ -73,7 +73,7 @@
           type        (idref|boolean|dimension|insets|integer|string) "idref"
           value       CDATA                                           #REQUIRED
 >
-
+
 <!ELEMENT defaultsProperty EMPTY>
 <!ATTLIST defaultsProperty
           key         CDATA                                           #REQUIRED
--- a/src/share/classes/javax/swing/plaf/synth/package.html	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/javax/swing/plaf/synth/package.html	Fri Apr 25 09:03:20 2008 -0400
@@ -1,6 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
 <!--
 Copyright 2003-2004 Sun Microsystems, Inc.  All Rights Reserved.
 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -27,151 +27,151 @@
 
 
 -->
-</head>
-<body bgcolor="white">
-    <p>
-      Synth is a skinnable look and feel in which all painting is
-      delegated. Synth does not provide a default look. In
-      order to use Synth you need to specify a
-      <a href="doc-files/synthFileFormat.html">file</a>, or 
-      provide a {@link
-      javax.swing.plaf.synth.SynthStyleFactory}. Both 
-      configuration options require an 
-      understanding of the synth architecture, which is described
-      below, as well as an understanding of Swing's architecture.
-    </p>
-    <p>
-      Unless otherwise specified null is not a legal value to any of
-      the methods defined in the synth package and if passed in will
-      result in a <code>NullPointerException</code>.
-      
-
-    <h2>Synth</h2>
-    <p>
-      Each {@link javax.swing.plaf.ComponentUI} implementation in Synth associates
-      itself with one {@link
-      javax.swing.plaf.synth.SynthStyle} per {@link
-      javax.swing.plaf.synth.Region}, most
-      <code>Components</code> only have one <code>Region</code> and
-      therefor only one <code>SynthStyle</code>.
-      <code>SynthStyle</code>
-      is used to access all style related properties: fonts, colors
-      and other <code>Component</code> properties. In addition
-      <code>SynthStyle</code>s are used to obtain 
-      {@link javax.swing.plaf.synth.SynthPainter}s for painting the background, border,
-      focus and other portions of a <code>Component</code>. The <code>ComponentUI</code>s obtain
-      <code>SynthStyle</code>s from a
-      {@link javax.swing.plaf.synth.SynthStyleFactory}.
-      A <code>SynthStyleFactory</code>
-      can be provided directly by way of 
-      {@link javax.swing.plaf.synth.SynthLookAndFeel#setStyleFactory(javax.swing.plaf.synth.SynthStyleFactory)},
-      or indirectly by way of
-      {@link javax.swing.plaf.synth.SynthLookAndFeel#load}. The
-      following example uses the <code>SynthLookAndFeel.load()</code>
-      method to configure a <code>SynthLookAndFeel</code> and sets it
-      as the current look and feel:
-    </p>
-    <div class="example">
-      <pre>
-  SynthLookAndFeel laf = new SynthLookAndFeel();
+</head>
+<body bgcolor="white">
+    <p>
+      Synth is a skinnable look and feel in which all painting is
+      delegated. Synth does not provide a default look. In
+      order to use Synth you need to specify a
+      <a href="doc-files/synthFileFormat.html">file</a>, or 
+      provide a {@link
+      javax.swing.plaf.synth.SynthStyleFactory}. Both 
+      configuration options require an 
+      understanding of the synth architecture, which is described
+      below, as well as an understanding of Swing's architecture.
+    </p>
+    <p>
+      Unless otherwise specified null is not a legal value to any of
+      the methods defined in the synth package and if passed in will
+      result in a <code>NullPointerException</code>.
+      
+
+    <h2>Synth</h2>
+    <p>
+      Each {@link javax.swing.plaf.ComponentUI} implementation in Synth associates
+      itself with one {@link
+      javax.swing.plaf.synth.SynthStyle} per {@link
+      javax.swing.plaf.synth.Region}, most
+      <code>Components</code> only have one <code>Region</code> and
+      therefor only one <code>SynthStyle</code>.
+      <code>SynthStyle</code>
+      is used to access all style related properties: fonts, colors
+      and other <code>Component</code> properties. In addition
+      <code>SynthStyle</code>s are used to obtain 
+      {@link javax.swing.plaf.synth.SynthPainter}s for painting the background, border,
+      focus and other portions of a <code>Component</code>. The <code>ComponentUI</code>s obtain
+      <code>SynthStyle</code>s from a
+      {@link javax.swing.plaf.synth.SynthStyleFactory}.
+      A <code>SynthStyleFactory</code>
+      can be provided directly by way of 
+      {@link javax.swing.plaf.synth.SynthLookAndFeel#setStyleFactory(javax.swing.plaf.synth.SynthStyleFactory)},
+      or indirectly by way of
+      {@link javax.swing.plaf.synth.SynthLookAndFeel#load}. The
+      following example uses the <code>SynthLookAndFeel.load()</code>
+      method to configure a <code>SynthLookAndFeel</code> and sets it
+      as the current look and feel:
+    </p>
+    <div class="example">
+      <pre>
+  SynthLookAndFeel laf = new SynthLookAndFeel();
   laf.load(MyClass.class.getResourceAsStream("laf.xml"), MyClass.class);
-  UIManager.setLookAndFeel(laf);
-      </pre>
-    </div>
-    <p>
-      Many <code>JComponent</code>s are broken down into smaller
-      pieces and identified by the type safe enumeration in
-      {@link javax.swing.plaf.synth.Region}. For example, a <code>JTabbedPane</code>
-      consists of a <code>Region</code> for the
-      <code>JTabbedPane</code> ({@link
-      javax.swing.plaf.synth.Region#TABBED_PANE}), the content
-      area ({@link
-      javax.swing.plaf.synth.Region#TABBED_PANE_CONTENT}), the
-      area behind the tabs ({@link
-      javax.swing.plaf.synth.Region#TABBED_PANE_TAB_AREA}), and the
-      tabs ({@link
-      javax.swing.plaf.synth.Region#TABBED_PANE_TAB}). Each
-      <code>Region</code> of each
-      <code>JComponent</code> will have a
-      <code>SynthStyle</code>. This allows 
-      you to customize individual pieces of each region of each
-      <code>JComponent</code>.
-    <p>
-      Many of the Synth methods take a {@link javax.swing.plaf.synth.SynthContext}. This 
-      is used to provide information about the current
-      <code>Component</code> and includes: the
-      {@link javax.swing.plaf.synth.SynthStyle} associated with the current
-      {@link javax.swing.plaf.synth.Region}, the state of the <code>Component</code>
-      as a bitmask (refer to {@link
-      javax.swing.plaf.synth.SynthConstants} for the valid
-      states), and a {@link javax.swing.plaf.synth.Region} identifying the portion of 
-      the <code>Component</code> being painted.
-    <p>
-      All text rendering by non-<code>JTextComponent</code>s is
-      delegated to a {@link
-      javax.swing.plaf.synth.SynthGraphicsUtils}, which is
-      obtained using the {@link javax.swing.plaf.synth.SynthStyle} method
-      {@link javax.swing.plaf.synth.SynthStyle#getGraphicsUtils}. You can
-      customize text rendering 
-      by supplying your own {@link javax.swing.plaf.synth.SynthGraphicsUtils}.
-
-    </p>
-
-    <h2>Notes on specific components</h2>
-
-    <h3>JTree</h3>
-    <p>
-      Synth provides a region for the cells of a tree:
-      <code>Region.TREE_CELL</code>.  To specify the colors of the
-      renderer you'll want to provide a style for the
-      <code>TREE_CELL</code> region.  The following illustrates this:
-<pre>
-  &lt;style id="treeCellStyle">
-    &lt;opaque value="TRUE"/>
-    &lt;state>
-      &lt;color value="WHITE" type="TEXT_FOREGROUND"/>
-      &lt;color value="RED" type="TEXT_BACKGROUND"/>
-    &lt;/state>
-    &lt;state value="SELECTED">
-      &lt;color value="RED" type="TEXT_FOREGROUND"/>
-      &lt;color value="WHITE" type="BACKGROUND"/>
-    &lt;/state>
-  &lt;/style>
-  &lt;bind style="treeCellStyle" type="region" key="TreeCell"/>
-</pre>
-    <p>
-      This specifies a color combination of red on white, when
-      selected, and white on red when not selected.  To see the
-      background you need to specify that labels are not opaque.  The
-      following XML fragment does that:
-<pre>
-  &lt;style id="labelStyle">
-    &lt;opaque value="FALSE"/>
-  &lt;/style>
-  &lt;bind style="labelStyle" type="region" key="Label"/>
-</pre>
-      
-    <h3>JList and JTable</h3>
-    <p>
-      The colors that the renderers for JList and JTable use are
-      specified by way of the list and table Regions.  The following
-      XML fragment illustrates how to specify red on white, when
-      selected, and white on red when not selected:
-<pre>
-  &lt;style id="style">
-    &lt;opaque value="TRUE"/>
-    &lt;state>
-      &lt;color value="WHITE" type="TEXT_FOREGROUND"/>
-      &lt;color value="RED" type="TEXT_BACKGROUND"/>
-      &lt;color value="RED" type="BACKGROUND"/>
-    &lt;/state>
-    &lt;state value="SELECTED">
-      &lt;color value="RED" type="TEXT_FOREGROUND"/>
-      &lt;color value="WHITE" type="TEXT_BACKGROUND"/>
-    &lt;/state>
-  &lt;/style>
-  &lt;bind style="style" type="region" key="Table"/>
-  &lt;bind style="style" type="region" key="List"/>
-</pre>
-  </body>
-</html>
+  UIManager.setLookAndFeel(laf);
+      </pre>
+    </div>
+    <p>
+      Many <code>JComponent</code>s are broken down into smaller
+      pieces and identified by the type safe enumeration in
+      {@link javax.swing.plaf.synth.Region}. For example, a <code>JTabbedPane</code>
+      consists of a <code>Region</code> for the
+      <code>JTabbedPane</code> ({@link
+      javax.swing.plaf.synth.Region#TABBED_PANE}), the content
+      area ({@link
+      javax.swing.plaf.synth.Region#TABBED_PANE_CONTENT}), the
+      area behind the tabs ({@link
+      javax.swing.plaf.synth.Region#TABBED_PANE_TAB_AREA}), and the
+      tabs ({@link
+      javax.swing.plaf.synth.Region#TABBED_PANE_TAB}). Each
+      <code>Region</code> of each
+      <code>JComponent</code> will have a
+      <code>SynthStyle</code>. This allows 
+      you to customize individual pieces of each region of each
+      <code>JComponent</code>.
+    <p>
+      Many of the Synth methods take a {@link javax.swing.plaf.synth.SynthContext}. This 
+      is used to provide information about the current
+      <code>Component</code> and includes: the
+      {@link javax.swing.plaf.synth.SynthStyle} associated with the current
+      {@link javax.swing.plaf.synth.Region}, the state of the <code>Component</code>
+      as a bitmask (refer to {@link
+      javax.swing.plaf.synth.SynthConstants} for the valid
+      states), and a {@link javax.swing.plaf.synth.Region} identifying the portion of 
+      the <code>Component</code> being painted.
+    <p>
+      All text rendering by non-<code>JTextComponent</code>s is
+      delegated to a {@link
+      javax.swing.plaf.synth.SynthGraphicsUtils}, which is
+      obtained using the {@link javax.swing.plaf.synth.SynthStyle} method
+      {@link javax.swing.plaf.synth.SynthStyle#getGraphicsUtils}. You can
+      customize text rendering 
+      by supplying your own {@link javax.swing.plaf.synth.SynthGraphicsUtils}.
+
+    </p>
+
+    <h2>Notes on specific components</h2>
+
+    <h3>JTree</h3>
+    <p>
+      Synth provides a region for the cells of a tree:
+      <code>Region.TREE_CELL</code>.  To specify the colors of the
+      renderer you'll want to provide a style for the
+      <code>TREE_CELL</code> region.  The following illustrates this:
+<pre>
+  &lt;style id="treeCellStyle">
+    &lt;opaque value="TRUE"/>
+    &lt;state>
+      &lt;color value="WHITE" type="TEXT_FOREGROUND"/>
+      &lt;color value="RED" type="TEXT_BACKGROUND"/>
+    &lt;/state>
+    &lt;state value="SELECTED">
+      &lt;color value="RED" type="TEXT_FOREGROUND"/>
+      &lt;color value="WHITE" type="BACKGROUND"/>
+    &lt;/state>
+  &lt;/style>
+  &lt;bind style="treeCellStyle" type="region" key="TreeCell"/>
+</pre>
+    <p>
+      This specifies a color combination of red on white, when
+      selected, and white on red when not selected.  To see the
+      background you need to specify that labels are not opaque.  The
+      following XML fragment does that:
+<pre>
+  &lt;style id="labelStyle">
+    &lt;opaque value="FALSE"/>
+  &lt;/style>
+  &lt;bind style="labelStyle" type="region" key="Label"/>
+</pre>
+      
+    <h3>JList and JTable</h3>
+    <p>
+      The colors that the renderers for JList and JTable use are
+      specified by way of the list and table Regions.  The following
+      XML fragment illustrates how to specify red on white, when
+      selected, and white on red when not selected:
+<pre>
+  &lt;style id="style">
+    &lt;opaque value="TRUE"/>
+    &lt;state>
+      &lt;color value="WHITE" type="TEXT_FOREGROUND"/>
+      &lt;color value="RED" type="TEXT_BACKGROUND"/>
+      &lt;color value="RED" type="BACKGROUND"/>
+    &lt;/state>
+    &lt;state value="SELECTED">
+      &lt;color value="RED" type="TEXT_FOREGROUND"/>
+      &lt;color value="WHITE" type="TEXT_BACKGROUND"/>
+    &lt;/state>
+  &lt;/style>
+  &lt;bind style="style" type="region" key="Table"/>
+  &lt;bind style="style" type="region" key="List"/>
+</pre>
+  </body>
+</html>
--- a/src/share/classes/sun/management/ClassLoadingImpl.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/sun/management/ClassLoadingImpl.java	Fri Apr 25 09:03:20 2008 -0400
@@ -26,6 +26,8 @@
 package sun.management;
 
 import java.lang.management.ClassLoadingMXBean;
+import java.lang.management.ManagementFactory;
+import javax.management.ObjectName;
 
 /**
  * Implementation class for the class loading subsystem.
@@ -62,9 +64,13 @@
     }
 
     public void setVerbose(boolean value) {
-        ManagementFactory.checkControlAccess();
+        Util.checkControlAccess();
 
         setVerboseClass(value);
     }
     native static void setVerboseClass(boolean value);
+
+    public ObjectName getObjectName() {
+        return Util.newObjectName(ManagementFactory.CLASS_LOADING_MXBEAN_NAME);
+    }
 }
--- a/src/share/classes/sun/management/CompilationImpl.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/sun/management/CompilationImpl.java	Fri Apr 25 09:03:20 2008 -0400
@@ -26,6 +26,8 @@
 package sun.management;
 
 import java.lang.management.CompilationMXBean;
+import java.lang.management.ManagementFactory;
+import javax.management.ObjectName;
 
 /**
  * Implementation class for the compilation subsystem.
@@ -46,7 +48,7 @@
         this.jvm = vm;
         this.name = jvm.getCompilerName();
         if (name == null) {
-            throw new InternalError("Null compiler name");
+            throw new AssertionError("Null compiler name");
         }
     }
 
@@ -67,4 +69,9 @@
         return jvm.getTotalCompileTime();
     }
 
+    public ObjectName getObjectName() {
+        return Util.newObjectName(ManagementFactory.COMPILATION_MXBEAN_NAME);
+    }
+
+
 }
--- a/src/share/classes/sun/management/GarbageCollectorImpl.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/sun/management/GarbageCollectorImpl.java	Fri Apr 25 09:03:20 2008 -0400
@@ -34,6 +34,7 @@
 import javax.management.openmbean.CompositeData;
 import javax.management.MBeanInfo;
 import javax.management.MBeanAttributeInfo;
+import javax.management.ObjectName;
 
 import java.util.List;
 import java.util.ListIterator;
@@ -88,4 +89,8 @@
         return info;
     }
 
+    public ObjectName getObjectName() {
+        return Util.newObjectName(ManagementFactory.GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE, getName());
+    }
+
 }
--- a/src/share/classes/sun/management/GcInfoBuilder.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/sun/management/GcInfoBuilder.java	Fri Apr 25 09:03:20 2008 -0400
@@ -145,7 +145,7 @@
                         allItemTypes[i] = SimpleType.DOUBLE;
                         break;
                     default:
-                        throw new InternalError(
+                        throw new AssertionError(
                             "Unsupported type [" + gcExtItemTypes[i] + "]");
                 }
             }
--- a/src/share/classes/sun/management/GcInfoCompositeData.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/sun/management/GcInfoCompositeData.java	Fri Apr 25 09:03:20 2008 -0400
@@ -80,19 +80,19 @@
             };
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newAssertionError(e);
+            throw new AssertionError(e);
         }
 
         // Get the item values for the extension attributes
         final int gcExtItemCount = builder.getGcExtItemCount();
         if (gcExtItemCount == 0 &&
             gcExtItemValues != null && gcExtItemValues.length != 0) {
-            throw new InternalError("Unexpected Gc Extension Item Values");
+            throw new AssertionError("Unexpected Gc Extension Item Values");
         }
 
         if (gcExtItemCount > 0 && (gcExtItemValues == null ||
              gcExtItemCount != gcExtItemValues.length)) {
-            throw new InternalError("Unmatched Gc Extension Item Values");
+            throw new AssertionError("Unmatched Gc Extension Item Values");
         }
 
         Object[] values = new Object[baseGcInfoItemValues.length +
@@ -111,7 +111,7 @@
                                             values);
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
     }
 
@@ -141,10 +141,10 @@
                 MappedMXBeanType.getMappedType(m.getGenericReturnType());
         } catch (NoSuchMethodException e) {
             // Should never reach here
-            throw Util.newAssertionError(e);
+            throw new AssertionError(e);
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newAssertionError(e);
+            throw new AssertionError(e);
         }
     }
 
@@ -186,10 +186,10 @@
             return cast(memoryUsageMapType.toJavaTypeData(td));
         } catch (InvalidObjectException e) {
             // Should never reach here
-            throw Util.newAssertionError(e);
+            throw new AssertionError(e);
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newAssertionError(e);
+            throw new AssertionError(e);
         }
     }
 
@@ -205,10 +205,10 @@
             return cast(memoryUsageMapType.toJavaTypeData(td));
         } catch (InvalidObjectException e) {
             // Should never reach here
-            throw Util.newAssertionError(e);
+            throw new AssertionError(e);
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newAssertionError(e);
+            throw new AssertionError(e);
         }
     }
 
--- a/src/share/classes/sun/management/HotSpotDiagnostic.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/sun/management/HotSpotDiagnostic.java	Fri Apr 25 09:03:20 2008 -0400
@@ -28,6 +28,8 @@
 import java.util.*;
 import java.io.IOException;
 import java.lang.reflect.Method;
+import javax.management.ObjectName;
+
 import com.sun.management.HotSpotDiagnosticMXBean;
 import com.sun.management.VMOption;
 
@@ -72,7 +74,7 @@
             throw new NullPointerException("value cannot be null");
         }
 
-        ManagementFactory.checkControlAccess();
+        Util.checkControlAccess();
         Flag flag = Flag.getFlag(name);
         if (flag == null) {
             throw new IllegalArgumentException("VM option \"" +
@@ -113,4 +115,8 @@
                 v.getClass().getName());
         }
     }
+
+    public ObjectName getObjectName() {
+        return Util.newObjectName("com.sun.management:type=HotSpotDiagnostic");
+    }
 }
--- a/src/share/classes/sun/management/HotspotCompilation.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/sun/management/HotspotCompilation.java	Fri Apr 25 09:03:20 2008 -0400
@@ -131,7 +131,7 @@
         }
 
         // FIXME: should tolerate if counter doesn't exist
-        throw new InternalError("Counter " + name + " does not exist");
+        throw new AssertionError("Counter " + name + " does not exist");
     }
 
     private void initCompilerCounters() {
--- a/src/share/classes/sun/management/HotspotInternal.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/sun/management/HotspotInternal.java	Fri Apr 25 09:03:20 2008 -0400
@@ -39,6 +39,9 @@
 public class HotspotInternal
     implements HotspotInternalMBean, MBeanRegistration {
 
+    private final static String HOTSPOT_INTERNAL_MBEAN_NAME =
+        "sun.management:type=HotspotInternal";
+    private static ObjectName objName = Util.newObjectName(HOTSPOT_INTERNAL_MBEAN_NAME);
     private MBeanServer server = null;
 
     /**
@@ -52,16 +55,16 @@
                                   ObjectName name) throws java.lang.Exception {
         // register all internal MBeans when this MBean is instantiated
         // and to be registered in a MBeanServer.
-        ManagementFactory.registerInternalMBeans(server);
+        ManagementFactoryHelper.registerInternalMBeans(server);
         this.server = server;
-        return ManagementFactory.getHotspotInternalObjectName();
+        return objName;
     }
 
     public void postRegister(Boolean registrationDone) {};
 
     public void preDeregister() throws java.lang.Exception {
         // unregister all internal MBeans when this MBean is unregistered.
-        ManagementFactory.unregisterInternalMBeans(server);
+        ManagementFactoryHelper.unregisterInternalMBeans(server);
     }
 
     public void postDeregister() {};
--- a/src/share/classes/sun/management/LockDataConverter.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/sun/management/LockDataConverter.java	Fri Apr 25 09:03:20 2008 -0400
@@ -73,7 +73,7 @@
         try {
             return (CompositeData) getAttribute("LockInfo");
         } catch (Exception e) {
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
     }
 
@@ -81,7 +81,7 @@
         try {
             return (CompositeData[]) getAttribute("LockedSynchronizers");
         } catch (Exception e) {
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
     }
 
@@ -89,7 +89,7 @@
         try {
             setAttribute(new Attribute("LockInfo", cd));
         } catch (Exception e) {
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
         return getLockInfo();
     }
@@ -98,7 +98,7 @@
         try {
             setAttribute(new Attribute("LockedSynchronizers", cd));
         } catch (Exception e) {
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
         return getLockedSynchronizers();
     }
--- a/src/share/classes/sun/management/ManagementFactory.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/sun/management/ManagementFactory.java	Fri Apr 25 09:03:20 2008 -0400
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,445 +25,17 @@
 
 package sun.management;
 
-import java.lang.management.*;
-import java.util.logging.LogManager;
-
-import javax.management.DynamicMBean;
-import javax.management.MBeanServer;
-import javax.management.MBeanServerFactory;
-import javax.management.MBeanInfo;
-import javax.management.NotificationEmitter;
-import javax.management.ObjectName;
-import javax.management.ObjectInstance;
-import javax.management.InstanceAlreadyExistsException;
-import javax.management.InstanceNotFoundException;
-import javax.management.MBeanRegistrationException;
-import javax.management.NotCompliantMBeanException;
-import javax.management.MalformedObjectNameException;
-import javax.management.RuntimeOperationsException;
-import javax.management.StandardEmitterMBean;
-import javax.management.StandardMBean;
-import java.security.AccessController;
-import java.security.Permission;
-import java.security.PrivilegedActionException;
-import java.security.PrivilegedExceptionAction;
-import sun.security.action.LoadLibraryAction;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-import java.util.Iterator;
-import java.util.ListIterator;
-import com.sun.management.OSMBeanFactory;
-import com.sun.management.HotSpotDiagnosticMXBean;
-
-import static java.lang.management.ManagementFactory.*;
+import java.lang.management.MemoryManagerMXBean;
+import java.lang.management.MemoryPoolMXBean;
+import java.lang.management.GarbageCollectorMXBean;
 
 /**
- * ManagementFactory provides static factory methods to create
- * instances of the management interface.
+ * ManagementFactory class provides the methods that the HotSpot VM
+ * will invoke. So the class and method names cannot be renamed.
  */
-public class ManagementFactory {
+class ManagementFactory {
     private ManagementFactory() {};
 
-    private static VMManagement jvm;
-
-    private static boolean mbeansCreated = false;
-    private static ClassLoadingImpl    classMBean = null;
-    private static MemoryImpl          memoryMBean = null;
-    private static ThreadImpl          threadMBean = null;
-    private static RuntimeImpl         runtimeMBean = null;
-    private static CompilationImpl     compileMBean = null;
-    private static OperatingSystemImpl osMBean = null;
-
-    public static synchronized ClassLoadingMXBean getClassLoadingMXBean() {
-        if (classMBean == null) {
-            classMBean = new ClassLoadingImpl(jvm);
-        }
-        return classMBean;
-    }
-
-    public static synchronized MemoryMXBean getMemoryMXBean() {
-        if (memoryMBean == null) {
-            memoryMBean = new MemoryImpl(jvm);
-        }
-        return memoryMBean;
-    }
-
-    public static synchronized ThreadMXBean getThreadMXBean() {
-        if (threadMBean == null) {
-            threadMBean = new ThreadImpl(jvm);
-        }
-        return threadMBean;
-    }
-
-    public static synchronized RuntimeMXBean getRuntimeMXBean() {
-        if (runtimeMBean == null) {
-            runtimeMBean = new RuntimeImpl(jvm);
-        }
-        return runtimeMBean;
-    }
-
-    public static synchronized CompilationMXBean getCompilationMXBean() {
-        if (compileMBean == null && jvm.getCompilerName() != null) {
-            compileMBean = new CompilationImpl(jvm);
-        }
-        return compileMBean;
-    }
-
-    public static synchronized OperatingSystemMXBean getOperatingSystemMXBean() {
-        if (osMBean == null) {
-            osMBean = (OperatingSystemImpl)
-                          OSMBeanFactory.getOperatingSystemMXBean(jvm);
-        }
-        return osMBean;
-    }
-
-    public static List<MemoryPoolMXBean> getMemoryPoolMXBeans() {
-        MemoryPoolMXBean[] pools = MemoryImpl.getMemoryPools();
-        List<MemoryPoolMXBean> list = new ArrayList<MemoryPoolMXBean>(pools.length);
-        for (int i = 0; i < pools.length; i++) {
-            MemoryPoolMXBean p = pools[i];
-            list.add(p);
-        }
-        return list;
-    }
-
-    public static List<MemoryManagerMXBean> getMemoryManagerMXBeans() {
-        MemoryManagerMXBean[]  mgrs = MemoryImpl.getMemoryManagers();
-        List<MemoryManagerMXBean> result = new ArrayList<MemoryManagerMXBean>(mgrs.length);
-        for (int i = 0; i < mgrs.length; i++) {
-            MemoryManagerMXBean m = mgrs[i];
-            result.add(m);
-        }
-        return result;
-    }
-
-    public static List<GarbageCollectorMXBean> getGarbageCollectorMXBeans() {
-        MemoryManagerMXBean[]  mgrs = MemoryImpl.getMemoryManagers();
-        List<GarbageCollectorMXBean> result = new ArrayList<GarbageCollectorMXBean>(mgrs.length);
-        for (int i = 0; i < mgrs.length; i++) {
-            if (mgrs[i] instanceof GarbageCollectorMXBean) {
-                GarbageCollectorMXBean gc = (GarbageCollectorMXBean) mgrs[i];
-                result.add(gc);
-            }
-        }
-        return result;
-    }
-
-    private static HotSpotDiagnostic hsDiagMBean = null;
-    private static HotspotRuntime hsRuntimeMBean = null;
-    private static HotspotClassLoading hsClassMBean = null;
-    private static HotspotThread hsThreadMBean = null;
-    private static HotspotCompilation hsCompileMBean = null;
-    private static HotspotMemory hsMemoryMBean = null;
-
-    public static synchronized HotSpotDiagnosticMXBean getDiagnosticMXBean() {
-        if (hsDiagMBean == null) {
-            hsDiagMBean = new HotSpotDiagnostic();
-        }
-        return hsDiagMBean;
-    }
-
-    /**
-
-    /**
-     * This method is for testing only.
-     */
-    public static synchronized HotspotRuntimeMBean getHotspotRuntimeMBean() {
-        if (hsRuntimeMBean == null) {
-            hsRuntimeMBean = new HotspotRuntime(jvm);
-        }
-        return hsRuntimeMBean;
-    }
-
-    /**
-     * This method is for testing only.
-     */
-    public static synchronized HotspotClassLoadingMBean getHotspotClassLoadingMBean() {
-        if (hsClassMBean == null) {
-            hsClassMBean = new HotspotClassLoading(jvm);
-        }
-        return hsClassMBean;
-    }
-
-    /**
-     * This method is for testing only.
-     */
-    public static synchronized HotspotThreadMBean getHotspotThreadMBean() {
-        if (hsThreadMBean == null) {
-            hsThreadMBean = new HotspotThread(jvm);
-        }
-        return hsThreadMBean;
-    }
-
-    /**
-     * This method is for testing only.
-     */
-    public static synchronized HotspotMemoryMBean getHotspotMemoryMBean() {
-        if (hsMemoryMBean == null) {
-            hsMemoryMBean = new HotspotMemory(jvm);
-        }
-        return hsMemoryMBean;
-    }
-
-    /**
-     * This method is for testing only.
-     */
-    public static synchronized HotspotCompilationMBean getHotspotCompilationMBean() {
-        if (hsCompileMBean == null) {
-            hsCompileMBean = new HotspotCompilation(jvm);
-        }
-        return hsCompileMBean;
-    }
-
-    private static Permission monitorPermission =
-        new ManagementPermission("monitor");
-    private static Permission controlPermission =
-        new ManagementPermission("control");
-
-    /**
-     * Check that the current context is trusted to perform monitoring
-     * or management.
-     * <p>
-     * If the check fails we throw a SecurityException, otherwise
-     * we return normally.
-     *
-     * @exception  SecurityException  if a security manager exists and if
-     *             the caller does not have ManagementPermission("control").
-     */
-    static void checkAccess(Permission p)
-         throws SecurityException {
-        SecurityManager sm = System.getSecurityManager();
-        if (sm != null) {
-            sm.checkPermission(p);
-        }
-    }
-
-    static void checkMonitorAccess() throws SecurityException {
-        checkAccess(monitorPermission);
-    }
-    static void checkControlAccess() throws SecurityException {
-        checkAccess(controlPermission);
-    }
-
-    /**
-     * Registers an MXBean and throws exception if an instance with the same
-     * name exists.
-     *
-     * This method makes a DynamicMBean out of an MXBean by wrapping it with a
-     * StandardMBean (StandardEmitterMBean if the supplied emitter is not null),
-     * so it can be registered in an MBeanServer which does not have support for
-     * MXBeans.
-     */
-    private static void addMXBean(MBeanServer mbs, Object mbean,
-                                  String mbeanName, NotificationEmitter emitter) {
-        // Make DynamicMBean out of MXBean by wrapping it with a StandardMBean
-        //
-        final DynamicMBean dmbean;
-        if (emitter == null) {
-            dmbean = new StandardMBean(mbean, null, true);
-        } else {
-            dmbean = new StandardEmitterMBean(mbean, null, true, emitter);
-        }
-        addMBean(mbs, dmbean, mbeanName, false);
-    }
-
-    /**
-     * Registers a Standard MBean or a Dynamic MBean and throws
-     * exception if an instance with the same name exists.
-     */
-    private static void addMBean(MBeanServer mbs, Object mbean, String mbeanName) {
-        addMBean(mbs, mbean, mbeanName, false);
-    }
-
-    private static void addMBean(MBeanServer mbs, Object mbean,
-                                 String mbeanName, boolean ignoreConflicts) {
-        try {
-            final ObjectName objName = new ObjectName(mbeanName);
-
-            // inner class requires these fields to be final
-            final MBeanServer mbs0 = mbs;
-            final Object mbean0 = mbean;
-            final boolean ignore = ignoreConflicts;
-            AccessController.doPrivileged(new PrivilegedExceptionAction<Object>() {
-                public Object run() throws InstanceAlreadyExistsException,
-                                           MBeanRegistrationException,
-                                           NotCompliantMBeanException {
-                    try {
-                        ObjectInstance o = mbs0.registerMBean(mbean0,
-                                                              objName);
-                        return null;
-                    } catch (InstanceAlreadyExistsException e) {
-                        // if an instance with the object name exists in
-                        // the MBeanServer ignore the exception
-                        // if ignoreConflicts is true;
-                        // otherwise, throws exception.
-                        if (!ignore) {
-                             throw e;
-                        }
-                    }
-                    return null;
-                }
-            });
-        } catch (PrivilegedActionException e) {
-            throw Util.newException(e.getException());
-        } catch (MalformedObjectNameException e) {
-            // should not reach here
-            throw Util.newException(e);
-        }
-    }
-
-    public static MBeanServer createPlatformMBeanServer() {
-        MBeanServer mbs = MBeanServerFactory.createMBeanServer();
-        // Register all the platform MBeans to this MBeanServer
-        addMXBean(mbs, getClassLoadingMXBean(),
-                  CLASS_LOADING_MXBEAN_NAME, null);
-        addMXBean(mbs, getMemoryMXBean(),
-                  MEMORY_MXBEAN_NAME, (NotificationEmitter) getMemoryMXBean());
-        addMXBean(mbs, getOperatingSystemMXBean(),
-                  OPERATING_SYSTEM_MXBEAN_NAME, null);
-        addMXBean(mbs, getRuntimeMXBean(),
-                  RUNTIME_MXBEAN_NAME, null);
-        addMXBean(mbs, getThreadMXBean(),
-                  THREAD_MXBEAN_NAME, null);
-        addMXBean(mbs, getDiagnosticMXBean(),
-                  HOTSPOT_DIAGNOSTIC_MXBEAN_NAME, null);
-
-        // CompilationMBean may not exist
-        if (getCompilationMXBean() != null) {
-            addMXBean(mbs, getCompilationMXBean(),
-                      COMPILATION_MXBEAN_NAME, null);
-        }
-
-        // Register MBeans for memory pools and memory managers
-        addMemoryManagers(mbs);
-        addMemoryPools(mbs);
-
-        // Register platform extension
-        addMXBean(mbs, LogManager.getLoggingMXBean(),
-                  LogManager.LOGGING_MXBEAN_NAME, null);
-
-        return mbs;
-    }
-
-    private final static String HOTSPOT_DIAGNOSTIC_MXBEAN_NAME =
-        "com.sun.management:type=HotSpotDiagnostic";
-
-    private final static String HOTSPOT_CLASS_LOADING_MBEAN_NAME =
-        "sun.management:type=HotspotClassLoading";
-
-    private final static String HOTSPOT_COMPILATION_MBEAN_NAME =
-        "sun.management:type=HotspotCompilation";
-
-    private final static String HOTSPOT_MEMORY_MBEAN_NAME =
-        "sun.management:type=HotspotMemory";
-
-    private static final String HOTSPOT_RUNTIME_MBEAN_NAME =
-        "sun.management:type=HotspotRuntime";
-
-    private final static String HOTSPOT_THREAD_MBEAN_NAME =
-        "sun.management:type=HotspotThreading";
-
-    private final static String HOTSPOT_INTERNAL_MBEAN_NAME =
-        "sun.management:type=HotspotInternal";
-
-    private static ObjectName hsInternalObjName = null;
-    static synchronized ObjectName getHotspotInternalObjectName() {
-        if (hsInternalObjName == null) {
-            try {
-                hsInternalObjName = new ObjectName(HOTSPOT_INTERNAL_MBEAN_NAME);
-            } catch (MalformedObjectNameException e) {
-                // should not reach here
-                throw Util.newException(e);
-            }
-        }
-        return hsInternalObjName;
-    }
-
-    static void registerInternalMBeans(MBeanServer mbs) {
-        // register all internal MBeans if not registered
-        // No exception is thrown if a MBean with that object name
-        // already registered (i.e. ignore if name conflicts).
-        addMBean(mbs, getHotspotClassLoadingMBean(),
-            HOTSPOT_CLASS_LOADING_MBEAN_NAME, true);
-        addMBean(mbs, getHotspotMemoryMBean(),
-            HOTSPOT_MEMORY_MBEAN_NAME, true);
-        addMBean(mbs, getHotspotRuntimeMBean(),
-            HOTSPOT_RUNTIME_MBEAN_NAME, true);
-        addMBean(mbs, getHotspotThreadMBean(),
-            HOTSPOT_THREAD_MBEAN_NAME, true);
-
-        // CompilationMBean may not exist
-        if (getCompilationMXBean() != null) {
-            addMBean(mbs, getHotspotCompilationMBean(),
-                HOTSPOT_COMPILATION_MBEAN_NAME, true);
-        }
-    }
-
-    private static void unregisterMBean(MBeanServer mbs, String mbeanName) {
-        try {
-            final ObjectName objName = new ObjectName(mbeanName);
-
-            // inner class requires these fields to be final
-            final MBeanServer mbs0 = mbs;
-            AccessController.doPrivileged(new PrivilegedExceptionAction<Object>() {
-                public Object run() throws MBeanRegistrationException,
-                                           RuntimeOperationsException  {
-                    try {
-                        mbs0.unregisterMBean(objName);
-                    } catch (InstanceNotFoundException e) {
-                        // ignore exception if not found
-                    }
-                    return null;
-                }
-            });
-        } catch (PrivilegedActionException e) {
-            throw Util.newException(e.getException());
-        } catch (MalformedObjectNameException e) {
-            // should not reach here
-            throw Util.newException(e);
-        }
-    }
-
-    static void unregisterInternalMBeans(MBeanServer mbs) {
-        // unregister all internal MBeans
-        unregisterMBean(mbs, HOTSPOT_CLASS_LOADING_MBEAN_NAME);
-        unregisterMBean(mbs, HOTSPOT_MEMORY_MBEAN_NAME);
-        unregisterMBean(mbs, HOTSPOT_RUNTIME_MBEAN_NAME);
-        unregisterMBean(mbs, HOTSPOT_THREAD_MBEAN_NAME);
-
-        // CompilationMBean may not exist
-        if (getCompilationMXBean() != null) {
-            unregisterMBean(mbs, HOTSPOT_COMPILATION_MBEAN_NAME);
-        }
-    }
-
-    private static synchronized void addMemoryPools(MBeanServer mbs) {
-
-        // Get a list of memory pools
-        MemoryPoolMXBean[] newPools = MemoryImpl.getMemoryPools();
-
-        for (int i = 0; i < newPools.length; i++) {
-            String poolObjNameString = Util.getMBeanObjectName(newPools[i]);
-            addMXBean(mbs, newPools[i], poolObjNameString, null);
-        }
-    }
-
-    // Register all memory managers with the MBeanServer;
-    private static synchronized void addMemoryManagers(MBeanServer mbs) {
-
-        // Get a list of memory managers
-        MemoryManagerMXBean[] newMgrs = MemoryImpl.getMemoryManagers();
-
-        for (int i = 0; i < newMgrs.length; i++) {
-            String mgrObjNameString = Util.getMBeanObjectName(newMgrs[i]);
-            addMXBean(mbs, newMgrs[i], mgrObjNameString, null);
-        }
-    }
-
     // Invoked by the VM
     private static MemoryPoolMXBean createMemoryPool
         (String name, boolean isHeap, long uThreshold, long gcThreshold) {
@@ -480,29 +52,4 @@
         // ignore type parameter which is for future extension
         return new GarbageCollectorImpl(name);
     }
-
-    static {
-        AccessController.doPrivileged(new LoadLibraryAction("management"));
-        jvm = new VMManagementImpl();
-    }
-
-    public static boolean isThreadSuspended(int state) {
-        return ((state & JMM_THREAD_STATE_FLAG_SUSPENDED) != 0);
-    }
-
-    public static boolean isThreadRunningNative(int state) {
-        return ((state & JMM_THREAD_STATE_FLAG_NATIVE) != 0);
-    }
-
-    public static Thread.State toThreadState(int state) {
-        // suspended and native bits may be set in state
-        int threadStatus = state & ~JMM_THREAD_STATE_FLAG_MASK;
-        return sun.misc.VM.toThreadState(threadStatus);
-    }
-
-    // These values are defined in jmm.h
-    private static final int JMM_THREAD_STATE_FLAG_MASK = 0xFFF00000;
-    private static final int JMM_THREAD_STATE_FLAG_SUSPENDED = 0x00100000;
-    private static final int JMM_THREAD_STATE_FLAG_NATIVE = 0x00400000;
-
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/management/ManagementFactoryHelper.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,340 @@
+/*
+ * Copyright 2003-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package sun.management;
+
+import java.lang.management.*;
+import java.util.logging.LogManager;
+
+import javax.management.DynamicMBean;
+import javax.management.MBeanServer;
+import javax.management.MBeanServerFactory;
+import javax.management.MBeanInfo;
+import javax.management.NotificationEmitter;
+import javax.management.ObjectName;
+import javax.management.ObjectInstance;
+import javax.management.InstanceAlreadyExistsException;
+import javax.management.InstanceNotFoundException;
+import javax.management.MBeanRegistrationException;
+import javax.management.NotCompliantMBeanException;
+import javax.management.RuntimeOperationsException;
+import javax.management.StandardEmitterMBean;
+import javax.management.StandardMBean;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
+import sun.security.action.LoadLibraryAction;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.Iterator;
+import java.util.ListIterator;
+import com.sun.management.OSMBeanFactory;
+import com.sun.management.HotSpotDiagnosticMXBean;
+
+import static java.lang.management.ManagementFactory.*;
+
+/**
+ * ManagementFactoryHelper provides static factory methods to create
+ * instances of the management interface.
+ */
+public class ManagementFactoryHelper {
+    private ManagementFactoryHelper() {};
+
+    private static VMManagement jvm;
+
+    private static boolean mbeansCreated = false;
+    private static ClassLoadingImpl    classMBean = null;
+    private static MemoryImpl          memoryMBean = null;
+    private static ThreadImpl          threadMBean = null;
+    private static RuntimeImpl         runtimeMBean = null;
+    private static CompilationImpl     compileMBean = null;
+    private static OperatingSystemImpl osMBean = null;
+
+    public static synchronized ClassLoadingMXBean getClassLoadingMXBean() {
+        if (classMBean == null) {
+            classMBean = new ClassLoadingImpl(jvm);
+        }
+        return classMBean;
+    }
+
+    public static synchronized MemoryMXBean getMemoryMXBean() {
+        if (memoryMBean == null) {
+            memoryMBean = new MemoryImpl(jvm);
+        }
+        return memoryMBean;
+    }
+
+    public static synchronized ThreadMXBean getThreadMXBean() {
+        if (threadMBean == null) {
+            threadMBean = new ThreadImpl(jvm);
+        }
+        return threadMBean;
+    }
+
+    public static synchronized RuntimeMXBean getRuntimeMXBean() {
+        if (runtimeMBean == null) {
+            runtimeMBean = new RuntimeImpl(jvm);
+        }
+        return runtimeMBean;
+    }
+
+    public static synchronized CompilationMXBean getCompilationMXBean() {
+        if (compileMBean == null && jvm.getCompilerName() != null) {
+            compileMBean = new CompilationImpl(jvm);
+        }
+        return compileMBean;
+    }
+
+    public static synchronized OperatingSystemMXBean getOperatingSystemMXBean() {
+        if (osMBean == null) {
+            osMBean = (OperatingSystemImpl)
+                          OSMBeanFactory.getOperatingSystemMXBean(jvm);
+        }
+        return osMBean;
+    }
+
+    public static List<MemoryPoolMXBean> getMemoryPoolMXBeans() {
+        MemoryPoolMXBean[] pools = MemoryImpl.getMemoryPools();
+        List<MemoryPoolMXBean> list = new ArrayList<MemoryPoolMXBean>(pools.length);
+        for (MemoryPoolMXBean p : pools) {
+            list.add(p);
+        }
+        return list;
+    }
+
+    public static List<MemoryManagerMXBean> getMemoryManagerMXBeans() {
+        MemoryManagerMXBean[]  mgrs = MemoryImpl.getMemoryManagers();
+        List<MemoryManagerMXBean> result = new ArrayList<MemoryManagerMXBean>(mgrs.length);
+        for (MemoryManagerMXBean m : mgrs) {
+            result.add(m);
+        }
+        return result;
+    }
+
+    public static List<GarbageCollectorMXBean> getGarbageCollectorMXBeans() {
+        MemoryManagerMXBean[]  mgrs = MemoryImpl.getMemoryManagers();
+        List<GarbageCollectorMXBean> result = new ArrayList<GarbageCollectorMXBean>(mgrs.length);
+        for (MemoryManagerMXBean m : mgrs) {
+            if (GarbageCollectorMXBean.class.isInstance(m)) {
+                 result.add(GarbageCollectorMXBean.class.cast(m));
+            }
+        }
+        return result;
+    }
+
+    private static HotSpotDiagnostic hsDiagMBean = null;
+    private static HotspotRuntime hsRuntimeMBean = null;
+    private static HotspotClassLoading hsClassMBean = null;
+    private static HotspotThread hsThreadMBean = null;
+    private static HotspotCompilation hsCompileMBean = null;
+    private static HotspotMemory hsMemoryMBean = null;
+
+    public static synchronized HotSpotDiagnosticMXBean getDiagnosticMXBean() {
+        if (hsDiagMBean == null) {
+            hsDiagMBean = new HotSpotDiagnostic();
+        }
+        return hsDiagMBean;
+    }
+
+    /**
+
+    /**
+     * This method is for testing only.
+     */
+    public static synchronized HotspotRuntimeMBean getHotspotRuntimeMBean() {
+        if (hsRuntimeMBean == null) {
+            hsRuntimeMBean = new HotspotRuntime(jvm);
+        }
+        return hsRuntimeMBean;
+    }
+
+    /**
+     * This method is for testing only.
+     */
+    public static synchronized HotspotClassLoadingMBean getHotspotClassLoadingMBean() {
+        if (hsClassMBean == null) {
+            hsClassMBean = new HotspotClassLoading(jvm);
+        }
+        return hsClassMBean;
+    }
+
+    /**
+     * This method is for testing only.
+     */
+    public static synchronized HotspotThreadMBean getHotspotThreadMBean() {
+        if (hsThreadMBean == null) {
+            hsThreadMBean = new HotspotThread(jvm);
+        }
+        return hsThreadMBean;
+    }
+
+    /**
+     * This method is for testing only.
+     */
+    public static synchronized HotspotMemoryMBean getHotspotMemoryMBean() {
+        if (hsMemoryMBean == null) {
+            hsMemoryMBean = new HotspotMemory(jvm);
+        }
+        return hsMemoryMBean;
+    }
+
+    /**
+     * This method is for testing only.
+     */
+    public static synchronized HotspotCompilationMBean getHotspotCompilationMBean() {
+        if (hsCompileMBean == null) {
+            hsCompileMBean = new HotspotCompilation(jvm);
+        }
+        return hsCompileMBean;
+    }
+
+    /**
+     * Registers a given MBean if not registered in the MBeanServer;
+     * otherwise, just return.
+     */
+    private static void addMBean(MBeanServer mbs, Object mbean, String mbeanName) {
+        try {
+            final ObjectName objName = Util.newObjectName(mbeanName);
+
+            // inner class requires these fields to be final
+            final MBeanServer mbs0 = mbs;
+            final Object mbean0 = mbean;
+            AccessController.doPrivileged(new PrivilegedExceptionAction<Void>() {
+                public Void run() throws MBeanRegistrationException,
+                                         NotCompliantMBeanException {
+                    try {
+                        mbs0.registerMBean(mbean0, objName);
+                        return null;
+                    } catch (InstanceAlreadyExistsException e) {
+                        // if an instance with the object name exists in
+                        // the MBeanServer ignore the exception
+                    }
+                    return null;
+                }
+            });
+        } catch (PrivilegedActionException e) {
+            throw Util.newException(e.getException());
+        }
+    }
+
+    private final static String HOTSPOT_CLASS_LOADING_MBEAN_NAME =
+        "sun.management:type=HotspotClassLoading";
+
+    private final static String HOTSPOT_COMPILATION_MBEAN_NAME =
+        "sun.management:type=HotspotCompilation";
+
+    private final static String HOTSPOT_MEMORY_MBEAN_NAME =
+        "sun.management:type=HotspotMemory";
+
+    private static final String HOTSPOT_RUNTIME_MBEAN_NAME =
+        "sun.management:type=HotspotRuntime";
+
+    private final static String HOTSPOT_THREAD_MBEAN_NAME =
+        "sun.management:type=HotspotThreading";
+
+    static void registerInternalMBeans(MBeanServer mbs) {
+        // register all internal MBeans if not registered
+        // No exception is thrown if a MBean with that object name
+        // already registered
+        addMBean(mbs, getHotspotClassLoadingMBean(),
+            HOTSPOT_CLASS_LOADING_MBEAN_NAME);
+        addMBean(mbs, getHotspotMemoryMBean(),
+            HOTSPOT_MEMORY_MBEAN_NAME);
+        addMBean(mbs, getHotspotRuntimeMBean(),
+            HOTSPOT_RUNTIME_MBEAN_NAME);
+        addMBean(mbs, getHotspotThreadMBean(),
+            HOTSPOT_THREAD_MBEAN_NAME);
+
+        // CompilationMBean may not exist
+        if (getCompilationMXBean() != null) {
+            addMBean(mbs, getHotspotCompilationMBean(),
+                HOTSPOT_COMPILATION_MBEAN_NAME);
+        }
+    }
+
+    private static void unregisterMBean(MBeanServer mbs, String mbeanName) {
+        try {
+            final ObjectName objName = Util.newObjectName(mbeanName);
+
+            // inner class requires these fields to be final
+            final MBeanServer mbs0 = mbs;
+            AccessController.doPrivileged(new PrivilegedExceptionAction<Void>() {
+                public Void run() throws MBeanRegistrationException,
+                                           RuntimeOperationsException  {
+                    try {
+                        mbs0.unregisterMBean(objName);
+                    } catch (InstanceNotFoundException e) {
+                        // ignore exception if not found
+                    }
+                    return null;
+                }
+            });
+        } catch (PrivilegedActionException e) {
+            throw Util.newException(e.getException());
+        }
+    }
+
+    static void unregisterInternalMBeans(MBeanServer mbs) {
+        // unregister all internal MBeans
+        unregisterMBean(mbs, HOTSPOT_CLASS_LOADING_MBEAN_NAME);
+        unregisterMBean(mbs, HOTSPOT_MEMORY_MBEAN_NAME);
+        unregisterMBean(mbs, HOTSPOT_RUNTIME_MBEAN_NAME);
+        unregisterMBean(mbs, HOTSPOT_THREAD_MBEAN_NAME);
+
+        // CompilationMBean may not exist
+        if (getCompilationMXBean() != null) {
+            unregisterMBean(mbs, HOTSPOT_COMPILATION_MBEAN_NAME);
+        }
+    }
+
+    static {
+        AccessController.doPrivileged(new LoadLibraryAction("management"));
+        jvm = new VMManagementImpl();
+    }
+
+    public static boolean isThreadSuspended(int state) {
+        return ((state & JMM_THREAD_STATE_FLAG_SUSPENDED) != 0);
+    }
+
+    public static boolean isThreadRunningNative(int state) {
+        return ((state & JMM_THREAD_STATE_FLAG_NATIVE) != 0);
+    }
+
+    public static Thread.State toThreadState(int state) {
+        // suspended and native bits may be set in state
+        int threadStatus = state & ~JMM_THREAD_STATE_FLAG_MASK;
+        return sun.misc.VM.toThreadState(threadStatus);
+    }
+
+    // These values are defined in jmm.h
+    private static final int JMM_THREAD_STATE_FLAG_MASK = 0xFFF00000;
+    private static final int JMM_THREAD_STATE_FLAG_SUSPENDED = 0x00100000;
+    private static final int JMM_THREAD_STATE_FLAG_NATIVE = 0x00400000;
+
+}
--- a/src/share/classes/sun/management/MappedMXBeanType.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/sun/management/MappedMXBeanType.java	Fri Apr 25 09:03:20 2008 -0400
@@ -735,14 +735,14 @@
             throws OpenDataException, InvalidObjectException {
 
             if (fromMethod == null) {
-                throw new InternalError("Does not support data conversion");
+                throw new AssertionError("Does not support data conversion");
             }
 
             try {
                 return fromMethod.invoke(null, data);
             } catch (IllegalAccessException e) {
                 // should never reach here
-                throw Util.newAssertionError(e);
+                throw new AssertionError(e);
             } catch (InvocationTargetException e) {
                 final OpenDataException ode =
                     new OpenDataException("Failed to invoke " +
@@ -785,7 +785,7 @@
             t = new InProgress();
         } catch (OpenDataException e) {
             // Should not reach here
-            throw Util.newAssertionError(e);
+            throw new AssertionError(e);
         }
         inProgress = t;
     }
@@ -807,9 +807,9 @@
                 } catch (ClassNotFoundException e) {
                     // the classes that these predefined types declare
                     // must exist!
-                    throw Util.newAssertionError(e);
+                    throw new AssertionError(e);
                 } catch (OpenDataException e) {
-                    throw Util.newAssertionError(e);
+                    throw new AssertionError(e);
                 }
 
                 if (c.getName().startsWith("java.lang.")) {
@@ -821,12 +821,12 @@
                         // OK: must not be a primitive wrapper
                     } catch (IllegalAccessException e) {
                         // Should not reach here
-                       throw Util.newAssertionError(e);
+                       throw new AssertionError(e);
                     }
                 }
             }
         } catch (OpenDataException e) {
-            throw Util.newAssertionError(e);
+            throw new AssertionError(e);
         }
     }
 
--- a/src/share/classes/sun/management/MemoryImpl.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/sun/management/MemoryImpl.java	Fri Apr 25 09:03:20 2008 -0400
@@ -25,13 +25,13 @@
 
 package sun.management;
 
+import java.lang.management.ManagementFactory;
 import java.lang.management.MemoryMXBean;
 import java.lang.management.MemoryUsage;
 import java.lang.management.MemoryNotificationInfo;
 import java.lang.management.MemoryManagerMXBean;
 import java.lang.management.MemoryPoolMXBean;
 import javax.management.ObjectName;
-import javax.management.MalformedObjectNameException;
 import javax.management.MBeanNotificationInfo;
 import javax.management.Notification;
 import javax.management.NotificationEmitter;
@@ -88,7 +88,7 @@
     }
 
     public void setVerbose(boolean value) {
-        ManagementFactory.checkControlAccess();
+        Util.checkControlAccess();
 
         setVerboseGC(value);
     }
@@ -150,19 +150,6 @@
         return ++seqNumber;
     }
 
-    private static ObjectName objname = null;
-    private static synchronized ObjectName getObjectName() {
-        if (objname != null) return objname;
-
-        try {
-            objname = new ObjectName(java.lang.management.ManagementFactory.MEMORY_MXBEAN_NAME);
-        } catch (MalformedObjectNameException e) {
-            // should never reach here
-            throw Util.newInternalError(e);
-        }
-        return objname;
-    }
-
     static void createNotification(String notifType,
                                    String poolName,
                                    MemoryUsage usage,
@@ -175,7 +162,7 @@
         long timestamp = System.currentTimeMillis();
         String msg = getNotifMsg(notifType);
         Notification notif = new Notification(notifType,
-                                              getObjectName(),
+                                              mbean.getObjectName(),
                                               getNextSeqNumber(),
                                               timestamp,
                                               msg);
@@ -189,4 +176,8 @@
         mbean.sendNotification(notif);
     }
 
+    public ObjectName getObjectName() {
+        return Util.newObjectName(ManagementFactory.MEMORY_MXBEAN_NAME);
+    }
+
 }
--- a/src/share/classes/sun/management/MemoryManagerImpl.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/sun/management/MemoryManagerImpl.java	Fri Apr 25 09:03:20 2008 -0400
@@ -25,9 +25,12 @@
 
 package sun.management;
 
+import java.lang.management.ManagementFactory;
 import java.lang.management.MemoryManagerMXBean;
 import java.lang.management.MemoryPoolMXBean;
 
+import javax.management.ObjectName;
+
 /**
  * Implementation class for a memory manager.
  * Standard and committed hotspot-specific metrics if any.
@@ -73,4 +76,8 @@
     }
     private native MemoryPoolMXBean[] getMemoryPools0();
 
+    public ObjectName getObjectName() {
+        return Util.newObjectName(ManagementFactory.MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE, getName());
+    }
+
 }
--- a/src/share/classes/sun/management/MemoryNotifInfoCompositeData.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/sun/management/MemoryNotifInfoCompositeData.java	Fri Apr 25 09:03:20 2008 -0400
@@ -69,7 +69,7 @@
                                             memoryNotifInfoItemValues);
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
     }
 
@@ -80,7 +80,7 @@
                 MappedMXBeanType.toOpenType(MemoryNotificationInfo.class);
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
     }
 
--- a/src/share/classes/sun/management/MemoryPoolImpl.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/sun/management/MemoryPoolImpl.java	Fri Apr 25 09:03:20 2008 -0400
@@ -25,12 +25,13 @@
 
 package sun.management;
 
+import java.lang.management.ManagementFactory;
 import java.lang.management.MemoryPoolMXBean;
-
 import java.lang.management.MemoryUsage;
 import java.lang.management.MemoryType;
 import java.lang.management.MemoryManagerMXBean;
 import javax.management.openmbean.CompositeData;
+import javax.management.ObjectName;
 
 import static java.lang.management.MemoryNotificationInfo.*;
 
@@ -114,7 +115,7 @@
                 "Usage threshold is not supported");
         }
 
-        ManagementFactory.checkControlAccess();
+        Util.checkControlAccess();
 
         MemoryUsage usage = getUsage0();
         if (newThreshold < 0) {
@@ -159,7 +160,7 @@
     }
 
     public void resetPeakUsage() {
-        ManagementFactory.checkControlAccess();
+        Util.checkControlAccess();
 
         synchronized (this) {
             // synchronized since getPeakUsage may be called concurrently
@@ -211,7 +212,7 @@
                 "CollectionUsage threshold is not supported");
         }
 
-        ManagementFactory.checkControlAccess();
+        Util.checkControlAccess();
 
         MemoryUsage usage = getUsage0();
         if (newThreshold < 0) {
@@ -304,7 +305,7 @@
         }
         void triggerAction() {
             // Should not reach here
-            throw new InternalError();
+            throw new AssertionError("Should not reach here");
         }
         void clearAction() {
             // do nothing
@@ -332,10 +333,15 @@
         }
         void triggerAction() {
             // Should not reach here
-            throw new InternalError();
+            throw new AssertionError("Should not reach here");
         }
         void clearAction() {
             // do nothing
         }
     }
+
+    public ObjectName getObjectName() {
+        return Util.newObjectName(ManagementFactory.MEMORY_POOL_MXBEAN_DOMAIN_TYPE, getName());
+    }
+
 }
--- a/src/share/classes/sun/management/MemoryUsageCompositeData.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/sun/management/MemoryUsageCompositeData.java	Fri Apr 25 09:03:20 2008 -0400
@@ -68,7 +68,7 @@
                                             memoryUsageItemValues);
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
     }
 
@@ -79,7 +79,7 @@
                 MappedMXBeanType.toOpenType(MemoryUsage.class);
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
     }
 
--- a/src/share/classes/sun/management/MonitorInfoCompositeData.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/sun/management/MonitorInfoCompositeData.java	Fri Apr 25 09:03:20 2008 -0400
@@ -81,7 +81,7 @@
                                             values);
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
     }
 
@@ -95,7 +95,7 @@
             monitorInfoItemNames = (String[]) s.toArray(new String[0]);
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
     }
 
--- a/src/share/classes/sun/management/NotificationEmitterSupport.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/sun/management/NotificationEmitterSupport.java	Fri Apr 25 09:03:20 2008 -0400
@@ -156,7 +156,7 @@
                     li.listener.handleNotification(notification, li.handback);
                 } catch (Exception e) {
                     e.printStackTrace();
-                    throw new InternalError("Error in invoking listener");
+                    throw new AssertionError("Error in invoking listener");
                 }
             }
         }
--- a/src/share/classes/sun/management/OperatingSystemImpl.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/sun/management/OperatingSystemImpl.java	Fri Apr 25 09:03:20 2008 -0400
@@ -26,6 +26,8 @@
 package sun.management;
 
 import java.lang.management.OperatingSystemMXBean;
+import java.lang.management.ManagementFactory;
+import javax.management.ObjectName;
 import sun.misc.Unsafe;
 
 /**
@@ -71,4 +73,9 @@
              return -1.0;
         }
     }
+    public ObjectName getObjectName() {
+        return Util.newObjectName(ManagementFactory.OPERATING_SYSTEM_MXBEAN_NAME);
+    }
+
 }
+
--- a/src/share/classes/sun/management/RuntimeImpl.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/sun/management/RuntimeImpl.java	Fri Apr 25 09:03:20 2008 -0400
@@ -26,6 +26,7 @@
 package sun.management;
 
 import java.lang.management.RuntimeMXBean;
+import java.lang.management.ManagementFactory;
 
 import java.util.List;
 import java.util.HashMap;
@@ -38,6 +39,7 @@
 import javax.management.openmbean.OpenType;
 import javax.management.openmbean.SimpleType;
 import javax.management.openmbean.OpenDataException;
+import javax.management.ObjectName;
 
 /**
  * Implementation class for the runtime subsystem.
@@ -104,12 +106,12 @@
             throw new UnsupportedOperationException(
                 "Boot class path mechanism is not supported");
         }
-        ManagementFactory.checkMonitorAccess();
+        Util.checkMonitorAccess();
         return jvm.getBootClassPath();
     }
 
     public List<String> getInputArguments() {
-        ManagementFactory.checkMonitorAccess();
+        Util.checkMonitorAccess();
         return jvm.getVmArguments();
     }
 
@@ -145,4 +147,9 @@
 
         return map;
     }
+
+    public ObjectName getObjectName() {
+        return Util.newObjectName(ManagementFactory.RUNTIME_MXBEAN_NAME);
+    }
+
 }
--- a/src/share/classes/sun/management/StackTraceElementCompositeData.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/sun/management/StackTraceElementCompositeData.java	Fri Apr 25 09:03:20 2008 -0400
@@ -76,7 +76,7 @@
                                             stackTraceElementItemValues);
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
     }
 
@@ -87,7 +87,7 @@
                 MappedMXBeanType.toOpenType(StackTraceElement.class);
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
     }
 
--- a/src/share/classes/sun/management/ThreadImpl.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/sun/management/ThreadImpl.java	Fri Apr 25 09:03:20 2008 -0400
@@ -26,6 +26,7 @@
 package sun.management;
 
 import java.lang.management.ThreadMXBean;
+import java.lang.management.ManagementFactory;
 
 import java.lang.management.ThreadInfo;
 import java.lang.management.LockInfo;
@@ -33,6 +34,8 @@
 import java.util.Map;
 import java.util.HashMap;
 
+import javax.management.ObjectName;
+
 /**
  * Implementation class for the thread subsystem.
  * Standard and committed hotspot-specific metrics if any.
@@ -102,7 +105,7 @@
     }
 
     public long[] getAllThreadIds() {
-        ManagementFactory.checkMonitorAccess();
+        Util.checkMonitorAccess();
 
         Thread[] threads = getThreads();
         int length = threads.length;
@@ -156,7 +159,7 @@
                 "Invalid maxDepth parameter: " + maxDepth);
         }
 
-        ManagementFactory.checkMonitorAccess();
+        Util.checkMonitorAccess();
 
         ThreadInfo[] infos = new ThreadInfo[ids.length];
         if (maxDepth == Integer.MAX_VALUE) {
@@ -175,7 +178,7 @@
                 "Thread contention monitoring is not supported");
         }
 
-        ManagementFactory.checkControlAccess();
+        Util.checkControlAccess();
 
         synchronized (this) {
             if (contentionMonitoringEnabled != enable) {
@@ -297,7 +300,7 @@
                 "Thread CPU time measurement is not supported");
         }
 
-        ManagementFactory.checkControlAccess();
+        Util.checkControlAccess();
         synchronized (this) {
             if (cpuTimeEnabled != enable) {
                 // update VM of the state change
@@ -308,7 +311,7 @@
     }
 
     public long[] findMonitorDeadlockedThreads() {
-        ManagementFactory.checkMonitorAccess();
+        Util.checkMonitorAccess();
 
         Thread[] threads = findMonitorDeadlockedThreads0();
         if (threads == null) {
@@ -329,7 +332,7 @@
                 "Monitoring of Synchronizer Usage is not supported.");
         }
 
-        ManagementFactory.checkMonitorAccess();
+        Util.checkMonitorAccess();
 
         Thread[] threads = findDeadlockedThreads0();
         if (threads == null) {
@@ -345,7 +348,7 @@
     }
 
     public void resetPeakThreadCount() {
-        ManagementFactory.checkControlAccess();
+        Util.checkControlAccess();
         resetPeakThreadCount0();
     }
 
@@ -373,7 +376,7 @@
                 "Monitoring of Synchronizer Usage is not supported.");
         }
 
-        ManagementFactory.checkMonitorAccess();
+        Util.checkMonitorAccess();
         return dumpThreads0(ids, lockedMonitors, lockedSynchronizers);
     }
 
@@ -388,7 +391,7 @@
                 "Monitoring of Synchronizer Usage is not supported.");
         }
 
-        ManagementFactory.checkMonitorAccess();
+        Util.checkMonitorAccess();
         return dumpThreads0(null, lockedMonitors, lockedSynchronizers);
     }
 
@@ -410,4 +413,10 @@
 
     // tid == 0 to reset contention times for all threads
     private static native void resetContentionTimes0(long tid);
+
+    public ObjectName getObjectName() {
+        return Util.newObjectName(ManagementFactory.THREAD_MXBEAN_NAME);
+    }
+
 }
+
--- a/src/share/classes/sun/management/ThreadInfoCompositeData.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/sun/management/ThreadInfoCompositeData.java	Fri Apr 25 09:03:20 2008 -0400
@@ -126,7 +126,7 @@
                                             threadInfoItemValues);
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
     }
 
@@ -209,7 +209,7 @@
                                   v5ItemTypes);
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
 
         // Each CompositeData object has its CompositeType associated
--- a/src/share/classes/sun/management/Util.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/sun/management/Util.java	Fri Apr 25 09:03:20 2008 -0400
@@ -26,48 +26,58 @@
 package sun.management;
 
 import java.lang.management.*;
+import java.util.List;
+import java.security.Permission;
+import javax.management.ObjectName;
+import javax.management.MalformedObjectNameException;
+
 import static java.lang.management.ManagementFactory.*;
-import java.util.List;
 
 class Util {
-    static String getMBeanObjectName(MemoryPoolMXBean pool) {
-        return MEMORY_POOL_MXBEAN_DOMAIN_TYPE +
-            ",name=" + pool.getName();
+    static RuntimeException newException(Exception e) {
+        throw new RuntimeException(e);
+    }
+
+    private static final String[] EMPTY_STRING_ARRAY = new String[0];
+    static String[] toStringArray(List<String> list) {
+        return (String[]) list.toArray(EMPTY_STRING_ARRAY);
+    }
+
+    static ObjectName newObjectName(String name) {
+        return com.sun.jmx.mbeanserver.Util.newObjectName(name);
+    }
+
+    public static ObjectName newObjectName(String domainAndType, String name) {
+        return newObjectName(domainAndType + ",name=" + name);
     }
 
-    static String getMBeanObjectName(MemoryManagerMXBean mgr) {
-        if (mgr instanceof GarbageCollectorMXBean) {
-            return getMBeanObjectName((GarbageCollectorMXBean) mgr);
-        } else {
-            return MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE +
-                ",name=" + mgr.getName();
+    private static ManagementPermission monitorPermission =
+        new ManagementPermission("monitor");
+    private static ManagementPermission controlPermission =
+        new ManagementPermission("control");
+
+    /**
+     * Check that the current context is trusted to perform monitoring
+     * or management.
+     * <p>
+     * If the check fails we throw a SecurityException, otherwise
+     * we return normally.
+     *
+     * @exception  SecurityException  if a security manager exists and if
+     *             the caller does not have ManagementPermission("control").
+     */
+    static void checkAccess(ManagementPermission p)
+         throws SecurityException {
+        SecurityManager sm = System.getSecurityManager();
+        if (sm != null) {
+            sm.checkPermission(p);
         }
     }
 
-    static String getMBeanObjectName(GarbageCollectorMXBean gc) {
-        return GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE +
-            ",name=" + gc.getName();
-    }
-
-    static RuntimeException newException(Exception e) {
-        RuntimeException e1 = new RuntimeException(e.getMessage());
-        e1.initCause(e);
-        return e1;
+    static void checkMonitorAccess() throws SecurityException {
+        checkAccess(monitorPermission);
     }
-
-    static InternalError newInternalError(Exception e) {
-        InternalError e1 = new InternalError(e.getMessage());
-        e1.initCause(e);
-        return e1;
-    }
-    static AssertionError newAssertionError(Exception e) {
-        AssertionError e1 = new AssertionError(e.getMessage());
-        e1.initCause(e);
-        return e1;
-    }
-
-    private static String[] EMPTY_STRING_ARRAY = new String[0];
-    static String[] toStringArray(List<String> list) {
-        return (String[]) list.toArray(EMPTY_STRING_ARRAY);
+    static void checkControlAccess() throws SecurityException {
+        checkAccess(controlPermission);
     }
 }
--- a/src/share/classes/sun/management/VMManagementImpl.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/sun/management/VMManagementImpl.java	Fri Apr 25 09:03:20 2008 -0400
@@ -59,7 +59,7 @@
     static {
         version = getVersion0();
         if (version == null) {
-            throw new InternalError("Invalid Management Version");
+            throw new AssertionError("Invalid Management Version");
         }
         initOptionalSupportFields();
     }
@@ -244,7 +244,7 @@
             // was set
             noPerfData = true;
         } catch (IOException e) {
-            throw new InternalError(e.getMessage());
+            throw new AssertionError(e);
         }
         return perfInstr;
     }
--- a/src/share/classes/sun/management/VMOptionCompositeData.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/sun/management/VMOptionCompositeData.java	Fri Apr 25 09:03:20 2008 -0400
@@ -69,7 +69,7 @@
                                             vmOptionItemValues);
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
     }
 
@@ -80,7 +80,7 @@
                 MappedMXBeanType.toOpenType(VMOption.class);
         } catch (OpenDataException e) {
             // Should never reach here
-            throw Util.newInternalError(e);
+            throw new AssertionError(e);
         }
     }
 
--- a/src/share/classes/sun/net/www/protocol/http/DigestAuthentication.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/sun/net/www/protocol/http/DigestAuthentication.java	Fri Apr 25 09:03:20 2008 -0400
@@ -36,6 +36,7 @@
 import sun.net.www.HeaderParser;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
+import static sun.net.www.protocol.http.HttpURLConnection.HTTP_CONNECT;
 
 
 /**
@@ -210,10 +211,38 @@
 
     /**
      * Reclaculates the request-digest and returns it.
+     *
+     * <P> Used in the common case where the requestURI is simply the
+     * abs_path.
+     *
+     * @param  url
+     *         the URL
+     *
+     * @param  method
+     *         the HTTP method
+     *
      * @return the value of the HTTP header this authentication wants set
      */
     String getHeaderValue(URL url, String method) {
-        return getHeaderValueImpl (url.getFile(), method);
+        return getHeaderValueImpl(url.getFile(), method);
+    }
+
+    /**
+     * Reclaculates the request-digest and returns it.
+     *
+     * <P> Used when the requestURI is not the abs_path. The exact
+     * requestURI can be passed as a String.
+     *
+     * @param  requestURI
+     *         the Request-URI from the HTTP request line
+     *
+     * @param  method
+     *         the HTTP method
+     *
+     * @return the value of the HTTP header this authentication wants set
+     */
+    String getHeaderValue(String requestURI, String method) {
+        return getHeaderValueImpl(requestURI, method);
     }
 
     /**
@@ -249,7 +278,16 @@
         params.setOpaque (p.findValue("opaque"));
         params.setQop (p.findValue("qop"));
 
-        String uri = conn.getURL().getFile();
+        String uri;
+        String method;
+        if (type == PROXY_AUTHENTICATION &&
+                conn.tunnelState() == HttpURLConnection.TunnelState.SETUP) {
+            uri = HttpURLConnection.connectRequestURI(conn.getURL());
+            method = HTTP_CONNECT;
+        } else {
+            uri = conn.getURL().getFile();
+            method = conn.getMethod();
+        }
 
         if (params.nonce == null || authMethod == null || pw == null || realm == null) {
             return false;
@@ -275,7 +313,7 @@
             params.setNewCnonce();
         }
 
-        String value = getHeaderValueImpl (uri, conn.getMethod());
+        String value = getHeaderValueImpl (uri, method);
         if (value != null) {
             conn.setAuthenticationProperty(getHeaderName(), value);
             return true;
--- a/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java	Fri Apr 25 09:03:20 2008 -0400
@@ -75,6 +75,8 @@
 
     private static Logger logger = Logger.getLogger("sun.net.www.protocol.http.HttpURLConnection");
 
+    static String HTTP_CONNECT = "CONNECT";
+
     static final String version;
     public static final String userAgent;
 
@@ -266,6 +268,20 @@
     /* If we decide we want to reuse a client, we put it here */
     private HttpClient reuseClient = null;
 
+    /* Tunnel states */
+    enum TunnelState {
+        /* No tunnel */
+        NONE,
+
+        /* Setting up a tunnel */
+        SETUP,
+
+        /* Tunnel has been successfully setup */
+        TUNNELING
+    }
+
+    private TunnelState tunnelState = TunnelState.NONE;
+
     /* Redefine timeouts from java.net.URLConnection as we nee -1 to mean
      * not set. This is to ensure backward compatibility.
      */
@@ -338,7 +354,7 @@
          * others that have been set
          */
         // send any pre-emptive authentication
-        if (http.usingProxy) {
+        if (http.usingProxy && tunnelState() != TunnelState.TUNNELING) {
             setPreemptiveProxyAuthentication(requests);
         }
         if (!setRequests) {
@@ -1404,11 +1420,17 @@
             String raw = auth.raw();
             if (proxyAuthentication.isAuthorizationStale (raw)) {
                 /* we can retry with the current credentials */
-                requests.set (proxyAuthentication.getHeaderName(),
-                              proxyAuthentication.getHeaderValue(
-                                                     url, method));
+                String value;
+                if (tunnelState() == TunnelState.SETUP &&
+                      proxyAuthentication instanceof DigestAuthentication) {
+                    value = ((DigestAuthentication)proxyAuthentication)
+                            .getHeaderValue(connectRequestURI(url), HTTP_CONNECT);
+                } else {
+                    value = proxyAuthentication.getHeaderValue(url, method);
+                }
+                requests.set(proxyAuthentication.getHeaderName(), value);
                 currentProxyCredentials = proxyAuthentication;
-                return  proxyAuthentication;
+                return proxyAuthentication;
             } else {
                 proxyAuthentication.removeFromCache();
             }
@@ -1419,6 +1441,24 @@
     }
 
     /**
+     * Returns the tunnel state.
+     *
+     * @return  the state
+     */
+    TunnelState tunnelState() {
+        return tunnelState;
+    }
+
+    /**
+     * Set the tunneling status.
+     *
+     * @param  the state
+     */
+    void setTunnelState(TunnelState tunnelState) {
+        this.tunnelState = tunnelState;
+    }
+
+    /**
      * establish a tunnel through proxy server
      */
     public synchronized void doTunneling() throws IOException {
@@ -1437,6 +1477,9 @@
         boolean inNegotiateProxy = false;
 
         try {
+            /* Actively setting up a tunnel */
+            setTunnelState(TunnelState.SETUP);
+
             do {
                 if (!checkReuseConnection()) {
                     proxiedConnect(url, proxyHost, proxyPort, false);
@@ -1512,11 +1555,13 @@
                 }
 
                 if (respCode == HTTP_OK) {
+                    setTunnelState(TunnelState.TUNNELING);
                     break;
                 }
                 // we don't know how to deal with other response code
                 // so disconnect and report error
                 disconnectInternal();
+                setTunnelState(TunnelState.NONE);
                 break;
             } while (retryTunnel < maxRedirects);
 
@@ -1538,6 +1583,14 @@
         responses.reset();
     }
 
+    static String connectRequestURI(URL url) {
+        String host = url.getHost();
+        int port = url.getPort();
+        port = port != -1 ? port : url.getDefaultPort();
+
+        return host + ":" + port;
+    }
+
     /**
      * send a CONNECT request for establishing a tunnel to proxy server
      */
@@ -1551,8 +1604,7 @@
         // otherwise, there may have 2 http methods in headers
         if (setRequests) requests.set(0, null, null);
 
-        requests.prepend("CONNECT " + url.getHost() + ":"
-                         + (port != -1 ? port : url.getDefaultPort())
+        requests.prepend(HTTP_CONNECT + " " + connectRequestURI(url)
                          + " " + httpVersion, null);
         requests.setIfNotSet("User-Agent", userAgent);
 
@@ -1583,9 +1635,17 @@
             = AuthenticationInfo.getProxyAuth(http.getProxyHostUsed(),
                                               http.getProxyPortUsed());
         if (pauth != null && pauth.supportsPreemptiveAuthorization()) {
+            String value;
+            if (tunnelState() == TunnelState.SETUP &&
+                    pauth instanceof DigestAuthentication) {
+                value = ((DigestAuthentication)pauth)
+                        .getHeaderValue(connectRequestURI(url), HTTP_CONNECT);
+            } else {
+                value = pauth.getHeaderValue(url, method);
+            }
+
             // Sets "Proxy-authorization"
-            requests.set(pauth.getHeaderName(),
-                                 pauth.getHeaderValue(url,method));
+            requests.set(pauth.getHeaderName(), value);
             currentProxyCredentials = pauth;
         }
     }
--- a/src/share/classes/sun/net/www/protocol/http/InMemoryCookieStore.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/sun/net/www/protocol/http/InMemoryCookieStore.java	Fri Apr 25 09:03:20 2008 -0400
@@ -35,7 +35,6 @@
 import java.util.HashMap;
 import java.util.Collections;
 import java.util.Iterator;
-import java.util.Comparator;
 import java.util.concurrent.locks.ReentrantLock;
 
 /**
@@ -89,7 +88,9 @@
             if (cookie.getMaxAge() != 0) {
                 cookieJar.add(cookie);
                 // and add it to domain index
-                addIndex(domainIndex, cookie.getDomain(), cookie);
+                if (cookie.getDomain() != null) {
+                    addIndex(domainIndex, cookie.getDomain(), cookie);
+                }
                 // add it to uri index, too
                 addIndex(uriIndex, getEffectiveURI(uri), cookie);
             }
@@ -113,12 +114,13 @@
         }
 
         List<HttpCookie> cookies = new ArrayList<HttpCookie>();
+        boolean secureLink = "https".equalsIgnoreCase(uri.getScheme());
         lock.lock();
         try {
             // check domainIndex first
-            getInternal(cookies, domainIndex, new DomainComparator(uri.getHost()));
+            getInternal1(cookies, domainIndex, uri.getHost(), secureLink);
             // check uriIndex then
-            getInternal(cookies, uriIndex, getEffectiveURI(uri));
+            getInternal2(cookies, uriIndex, getEffectiveURI(uri), secureLink);
         } finally {
             lock.unlock();
         }
@@ -217,19 +219,96 @@
     /* ---------------- Private operations -------------- */
 
 
-    static class DomainComparator implements Comparable<String> {
-        String host = null;
+    /*
+     * This is almost the same as HttpCookie.domainMatches except for
+     * one difference: It won't reject cookies when the 'H' part of the
+     * domain contains a dot ('.').
+     * I.E.: RFC 2965 section 3.3.2 says that if host is x.y.domain.com
+     * and the cookie domain is .domain.com, then it should be rejected.
+     * However that's not how the real world works. Browsers don't reject and
+     * some sites, like yahoo.com do actually expect these cookies to be
+     * passed along.
+     * And should be used for 'old' style cookies (aka Netscape type of cookies)
+     */
+    private boolean netscapeDomainMatches(String domain, String host)
+    {
+        if (domain == null || host == null) {
+            return false;
+        }
 
-        public DomainComparator(String host) {
-            this.host = host;
+        // if there's no embedded dot in domain and domain is not .local
+        boolean isLocalDomain = ".local".equalsIgnoreCase(domain);
+        int embeddedDotInDomain = domain.indexOf('.');
+        if (embeddedDotInDomain == 0) {
+            embeddedDotInDomain = domain.indexOf('.', 1);
+        }
+        if (!isLocalDomain && (embeddedDotInDomain == -1 || embeddedDotInDomain == domain.length() - 1)) {
+            return false;
+        }
+
+        // if the host name contains no dot and the domain name is .local
+        int firstDotInHost = host.indexOf('.');
+        if (firstDotInHost == -1 && isLocalDomain) {
+            return true;
         }
 
-        public int compareTo(String domain) {
-            if (HttpCookie.domainMatches(domain, host)) {
-                return 0;
-            } else {
-                return -1;
+        int domainLength = domain.length();
+        int lengthDiff = host.length() - domainLength;
+        if (lengthDiff == 0) {
+            // if the host name and the domain name are just string-compare euqal
+            return host.equalsIgnoreCase(domain);
+        } else if (lengthDiff > 0) {
+            // need to check H & D component
+            String H = host.substring(0, lengthDiff);
+            String D = host.substring(lengthDiff);
+
+            return (D.equalsIgnoreCase(domain));
+        } else if (lengthDiff == -1) {
+            // if domain is actually .host
+            return (domain.charAt(0) == '.' &&
+                    host.equalsIgnoreCase(domain.substring(1)));
+        }
+
+        return false;
+    }
+
+    private void getInternal1(List<HttpCookie> cookies, Map<String, List<HttpCookie>> cookieIndex,
+            String host, boolean secureLink) {
+        // Use a separate list to handle cookies that need to be removed so
+        // that there is no conflict with iterators.
+        ArrayList<HttpCookie> toRemove = new ArrayList<HttpCookie>();
+        for (Map.Entry<String, List<HttpCookie>> entry : cookieIndex.entrySet()) {
+            String domain = entry.getKey();
+            List<HttpCookie> lst = entry.getValue();
+            for (HttpCookie c : lst) {
+                if ((c.getVersion() == 0 && netscapeDomainMatches(domain, host)) ||
+                        (c.getVersion() == 1 && HttpCookie.domainMatches(domain, host))) {
+                    if ((cookieJar.indexOf(c) != -1)) {
+                        // the cookie still in main cookie store
+                        if (!c.hasExpired()) {
+                            // don't add twice and make sure it's the proper
+                            // security level
+                            if ((secureLink || !c.getSecure()) &&
+                                    !cookies.contains(c)) {
+                                cookies.add(c);
+                            }
+                        } else {
+                            toRemove.add(c);
+                        }
+                    } else {
+                        // the cookie has beed removed from main store,
+                        // so also remove it from domain indexed store
+                        toRemove.add(c);
+                    }
+                }
             }
+            // Clear up the cookies that need to be removed
+            for (HttpCookie c : toRemove) {
+                lst.remove(c);
+                cookieJar.remove(c);
+
+            }
+            toRemove.clear();
         }
     }
 
@@ -237,9 +316,9 @@
     // @param cookieIndex       the index
     // @param comparator        the prediction to decide whether or not
     //                          a cookie in index should be returned
-    private <T> void getInternal(List<HttpCookie> cookies,
+    private <T> void getInternal2(List<HttpCookie> cookies,
                                 Map<T, List<HttpCookie>> cookieIndex,
-                                Comparable<T> comparator)
+                                Comparable<T> comparator, boolean secureLink)
     {
         for (T index : cookieIndex.keySet()) {
             if (comparator.compareTo(index) == 0) {
@@ -253,7 +332,8 @@
                             // the cookie still in main cookie store
                             if (!ck.hasExpired()) {
                                 // don't add twice
-                                if (!cookies.contains(ck))
+                                if ((secureLink || !ck.getSecure()) &&
+                                        !cookies.contains(ck))
                                     cookies.add(ck);
                             } else {
                                 it.remove();
@@ -292,14 +372,14 @@
 
 
     //
-    // for cookie purpose, the effective uri should only be scheme://authority
+    // for cookie purpose, the effective uri should only be http://host
     // the path will be taken into account when path-match algorithm applied
     //
     private URI getEffectiveURI(URI uri) {
         URI effectiveURI = null;
         try {
-            effectiveURI = new URI(uri.getScheme(),
-                                   uri.getAuthority(),
+            effectiveURI = new URI("http",
+                                   uri.getHost(),
                                    null,  // path component
                                    null,  // query component
                                    null   // fragment component
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/nio/cs/CharsetMapping.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,351 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package sun.nio.cs;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.*;
+import java.security.*;
+
+public class CharsetMapping {
+    public final static char UNMAPPABLE_DECODING = '\uFFFD';
+    public final static int  UNMAPPABLE_ENCODING = -1;
+
+    char[] b2cSB;                //singlebyte b->c
+    char[] b2cDB1;               //dobulebyte b->c /db1
+    char[] b2cDB2;               //dobulebyte b->c /db2
+
+    int    b2Min, b2Max;         //min/max(start/end) value of 2nd byte
+    int    b1MinDB1, b1MaxDB1;   //min/Max(start/end) value of 1st byte/db1
+    int    b1MinDB2, b1MaxDB2;   //min/Max(start/end) value of 1st byte/db2
+    int    dbSegSize;
+
+    char[] c2b;
+    char[] c2bIndex;
+
+    // Supplementary
+    char[] b2cSupp;
+    char[] c2bSupp;
+
+    // Composite
+    Entry[] b2cComp;
+    Entry[] c2bComp;
+
+    public char decodeSingle(int b) {
+        return b2cSB[b];
+    }
+
+    public char decodeDouble(int b1, int b2) {
+        if (b2 >= b2Min && b2 < b2Max) {
+            b2 -= b2Min;
+            if (b1 >= b1MinDB1 && b1 <= b1MaxDB1) {
+                b1 -= b1MinDB1;
+                return b2cDB1[b1 * dbSegSize + b2];
+            }
+            if (b1 >= b1MinDB2 && b1 <= b1MaxDB2) {
+                b1 -= b1MinDB2;
+                return b2cDB2[b1 * dbSegSize + b2];
+            }
+        }
+        return UNMAPPABLE_DECODING;
+    }
+
+    // for jis0213 all supplementary characters are in 0x2xxxx range,
+    // so only the xxxx part is now stored, should actually store the
+    // codepoint value instead.
+    public char[] decodeSurrogate(int db, char[] cc) {
+        int end = b2cSupp.length / 2;
+        int i = Arrays.binarySearch(b2cSupp, 0, end, (char)db);
+        if (i >= 0) {
+            Character.toChars(b2cSupp[end + i] + 0x20000, cc, 0);
+            return cc;
+        }
+        return null;
+    }
+
+    public char[] decodeComposite(Entry comp, char[] cc) {
+        int i = findBytes(b2cComp, comp);
+        if (i >= 0) {
+            cc[0] = (char)b2cComp[i].cp;
+            cc[1] = (char)b2cComp[i].cp2;
+            return cc;
+        }
+        return null;
+    }
+
+    public int encodeChar(char ch) {
+        int index = c2bIndex[ch >> 8];
+        if (index == 0xffff)
+            return UNMAPPABLE_ENCODING;
+        return c2b[index + (ch & 0xff)];
+    }
+
+    public int encodeSurrogate(char hi, char lo) {
+        char c = (char)Character.toCodePoint(hi, lo);
+        int end = c2bSupp.length / 2;
+        int i = Arrays.binarySearch(c2bSupp, 0, end, c);
+        if (i >= 0)
+            return c2bSupp[end + i];
+        return UNMAPPABLE_ENCODING;
+    }
+
+    public boolean isCompositeBase(Entry comp) {
+        if (comp.cp <= 0x31f7 && comp.cp >= 0xe6) {
+            return (findCP(c2bComp, comp) >= 0);
+        }
+        return false;
+    }
+
+    public int encodeComposite(Entry comp) {
+        int i = findComp(c2bComp, comp);
+        if (i >= 0)
+            return c2bComp[i].bs;
+        return UNMAPPABLE_ENCODING;
+    }
+
+    // init the CharsetMapping object from the .dat binary file
+    public static CharsetMapping get(final InputStream is) {
+        return AccessController.doPrivileged(new PrivilegedAction<CharsetMapping>() {
+            public CharsetMapping run() {
+                return new CharsetMapping().load(is);
+            }
+        });
+    }
+
+    public static class Entry {
+        public int bs;   //byte sequence reps
+        public int cp;   //Unicode codepoint
+        public int cp2;  //CC of composite
+    }
+
+    static Comparator<Entry> comparatorBytes =
+        new Comparator<Entry>() {
+            public int compare(Entry m1, Entry m2) {
+                return m1.bs - m2.bs;
+            }
+            public boolean equals(Object obj) {
+                return this == obj;
+            }
+    };
+
+    static Comparator<Entry> comparatorCP =
+        new Comparator<Entry>() {
+            public int compare(Entry m1, Entry m2) {
+                return m1.cp - m2.cp;
+            }
+            public boolean equals(Object obj) {
+                return this == obj;
+            }
+    };
+
+    static Comparator<Entry> comparatorComp =
+        new Comparator<Entry>() {
+            public int compare(Entry m1, Entry m2) {
+                 int v = m1.cp - m2.cp;
+                 if (v == 0)
+                   v = m1.cp2 - m2.cp2;
+                 return v;
+            }
+            public boolean equals(Object obj) {
+                return this == obj;
+            }
+    };
+
+    static int findBytes(Entry[] a, Entry k) {
+        return Arrays.binarySearch(a, 0, a.length, k, comparatorBytes);
+    }
+
+    static int findCP(Entry[] a, Entry k) {
+        return Arrays.binarySearch(a, 0, a.length, k, comparatorCP);
+    }
+
+    static int findComp(Entry[] a, Entry k) {
+        return Arrays.binarySearch(a, 0, a.length, k, comparatorComp);
+    }
+
+    /*****************************************************************************/
+    // tags of different charset mapping tables
+    private final static int MAP_SINGLEBYTE      = 0x1; // 0..256  : c
+    private final static int MAP_DOUBLEBYTE1     = 0x2; // min..max: c
+    private final static int MAP_DOUBLEBYTE2     = 0x3; // min..max: c [DB2]
+    private final static int MAP_SUPPLEMENT      = 0x5; //           db,c
+    private final static int MAP_SUPPLEMENT_C2B  = 0x6; //           c,db
+    private final static int MAP_COMPOSITE       = 0x7; //           db,base,cc
+    private final static int MAP_INDEXC2B        = 0x8; // index table of c->bb
+
+    private static final boolean readNBytes(InputStream in, byte[] bb, int N)
+        throws IOException
+    {
+        int off = 0;
+        while (N > 0) {
+            int n = in.read(bb, off, N);
+            if (n == -1)
+                return false;
+            N = N - n;
+            off += n;
+        }
+        return true;
+    }
+
+    int off = 0;
+    byte[] bb;
+    private char[] readCharArray() {
+        // first 2 bytes are the number of "chars" stored in this table
+        int size  = ((bb[off++]&0xff)<<8) | (bb[off++]&0xff);
+        char [] cc = new char[size];
+        for (int i = 0; i < size; i++) {
+            cc[i] = (char)(((bb[off++]&0xff)<<8) | (bb[off++]&0xff));
+        }
+        return cc;
+    }
+
+    void readSINGLEBYTE() {
+        char[] map = readCharArray();
+        for (int i = 0; i < map.length; i++) {
+            char c = map[i];
+            if (c != UNMAPPABLE_DECODING) {
+                c2b[c2bIndex[c >> 8] + (c&0xff)] = (char)i;
+            }
+        }
+        b2cSB = map;
+    }
+
+    void readINDEXC2B() {
+        char[] map = readCharArray();
+        for (int i = map.length - 1; i >= 0; i--) {
+            if (c2b == null && map[i] != -1) {
+                c2b = new char[map[i] + 256];
+                Arrays.fill(c2b, (char)UNMAPPABLE_ENCODING);
+                break;
+            }
+        }
+        c2bIndex = map;
+    }
+
+    char[] readDB(int b1Min, int b2Min, int segSize) {
+        char[] map = readCharArray();
+        for (int i = 0; i < map.length; i++) {
+            char c = map[i];
+            if (c != UNMAPPABLE_DECODING) {
+                int b1 = i / segSize;
+                int b2 = i % segSize;
+                int b = (b1 + b1Min)* 256 + (b2 + b2Min);
+                //System.out.printf("    DB %x\t%x%n", b, c & 0xffff);
+                c2b[c2bIndex[c >> 8] + (c&0xff)] = (char)(b);
+            }
+        }
+        return map;
+    }
+
+    void readDOUBLEBYTE1() {
+        b1MinDB1 = ((bb[off++]&0xff)<<8) | (bb[off++]&0xff);
+        b1MaxDB1 = ((bb[off++]&0xff)<<8) | (bb[off++]&0xff);
+        b2Min =    ((bb[off++]&0xff)<<8) | (bb[off++]&0xff);
+        b2Max =    ((bb[off++]&0xff)<<8) | (bb[off++]&0xff);
+        dbSegSize = b2Max - b2Min + 1;
+        b2cDB1 = readDB(b1MinDB1, b2Min, dbSegSize);
+    }
+
+    void readDOUBLEBYTE2() {
+        b1MinDB2 = ((bb[off++]&0xff)<<8) | (bb[off++]&0xff);
+        b1MaxDB2 = ((bb[off++]&0xff)<<8) | (bb[off++]&0xff);
+        b2Min =    ((bb[off++]&0xff)<<8) | (bb[off++]&0xff);
+        b2Max =    ((bb[off++]&0xff)<<8) | (bb[off++]&0xff);
+        dbSegSize = b2Max - b2Min + 1;
+        b2cDB2 = readDB(b1MinDB2, b2Min, dbSegSize);
+    }
+
+    void readCOMPOSITE() {
+        char[] map = readCharArray();
+        int mLen = map.length/3;
+        b2cComp = new Entry[mLen];
+        c2bComp = new Entry[mLen];
+        for (int i = 0, j= 0; i < mLen; i++) {
+            Entry m = new Entry();
+            m.bs = map[j++];
+            m.cp = map[j++];
+            m.cp2 = map[j++];
+            b2cComp[i] = m;
+            c2bComp[i] = m;
+        }
+        Arrays.sort(c2bComp, 0, c2bComp.length, comparatorComp);
+    }
+
+    CharsetMapping load(InputStream in) {
+        try {
+            // The first 4 bytes are the size of the total data followed in
+            // this .dat file.
+            int len = ((in.read()&0xff) << 24) | ((in.read()&0xff) << 16) |
+                      ((in.read()&0xff) << 8) | (in.read()&0xff);
+            bb = new byte[len];
+            off = 0;
+            //System.out.printf("In : Total=%d%n", len);
+            // Read in all bytes
+            if (!readNBytes(in, bb, len))
+                throw new RuntimeException("Corrupted data file");
+            in.close();
+
+            while (off < len) {
+                int type = ((bb[off++]&0xff)<<8) | (bb[off++]&0xff);
+                switch(type) {
+                case MAP_INDEXC2B:
+                    readINDEXC2B();
+                    break;
+                case MAP_SINGLEBYTE:
+                    readSINGLEBYTE();
+                    break;
+                case MAP_DOUBLEBYTE1:
+                    readDOUBLEBYTE1();
+                    break;
+                case MAP_DOUBLEBYTE2:
+                    readDOUBLEBYTE2();
+                    break;
+                case MAP_SUPPLEMENT:
+                    b2cSupp = readCharArray();
+                    break;
+                case MAP_SUPPLEMENT_C2B:
+                    c2bSupp = readCharArray();
+                    break;
+                case MAP_COMPOSITE:
+                    readCOMPOSITE();
+                    break;
+                default:
+                    throw new RuntimeException("Corrupted data file");
+                }
+            }
+            bb = null;
+            return this;
+        } catch (IOException x) {
+            x.printStackTrace();
+            return null;
+        }
+    }
+}
--- a/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java	Fri Apr 25 09:03:20 2008 -0400
@@ -23,9 +23,6 @@
  * have any questions.
  */
 
-/*
- */
-
 package sun.nio.cs.ext;
 
 import java.lang.ref.SoftReference;
@@ -183,6 +180,25 @@
                     "csISO159JISX02121990"
                 });
 
+        charset("x-SJIS_0213", "SJIS_0213",
+                new String[] {
+                    "sjis-0213",
+                    "sjis_0213",
+                    "sjis:2004",
+                    "sjis_0213:2004",
+                    "shift_jis_0213:2004",
+                    "shift_jis:2004"
+                });
+
+        charset("x-MS932_0213", "MS932_0213",
+                new String[] {
+                    "MS932-0213",
+                    "MS932_0213",
+                    "MS932:2004",
+                    "windows-932-0213",
+                    "windows-932:2004"
+                });
+
         charset("EUC-JP", "EUC_JP",
                 new String[] {
                     "euc_jp", // JDK historical
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/nio/cs/ext/MS932_0213.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package sun.nio.cs.ext;
+
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CharsetDecoder;
+
+public class MS932_0213 extends Charset {
+    public MS932_0213() {
+        super("x-MS932_0213", ExtendedCharsets.aliasesFor("MS932_0213"));
+    }
+
+    public boolean contains(Charset cs) {
+        return ((cs.name().equals("US-ASCII"))
+                || (cs instanceof MS932)
+                || (cs instanceof MS932_0213));
+    }
+
+    public CharsetDecoder newDecoder() {
+        return new Decoder(this);
+    }
+
+    public CharsetEncoder newEncoder() {
+        return new Encoder(this);
+    }
+
+    protected static class Decoder extends SJIS_0213.Decoder {
+        MS932DB.Decoder decMS932;
+        protected Decoder(Charset cs) {
+            super(cs);
+            decMS932 = new MS932DB.Decoder(cs);
+        }
+
+        protected char decodeDouble(int b1, int b2) {
+            char c = decMS932.decodeDouble(b1, b2);
+            if (c == DoubleByteDecoder.REPLACE_CHAR)
+                return super.decodeDouble(b1, b2);
+            return c;
+        }
+    }
+
+    protected static class Encoder extends SJIS_0213.Encoder {
+        MS932DB.Encoder encMS932;
+        protected Encoder(Charset cs) {
+            super(cs);
+            encMS932 = new MS932DB.Encoder(cs);
+        }
+
+        protected int encodeChar(char ch) {
+            int db = encMS932.encodeDouble(ch);
+            if (db == 0)
+                return super.encodeChar(ch);
+            return db;
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/nio/cs/ext/SJIS_0213.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,398 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package sun.nio.cs.ext;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CoderResult;
+import java.util.Arrays;
+import sun.nio.cs.CharsetMapping;
+
+/*
+ *  5 types of entry in SJIS_X_0213/Unicode mapping table
+ *
+ *  (1)Single-Byte
+ *     JIS_X_0213 does not define single-byte character itself, the
+ *     JIS_X_0201 entries are added in for sjis implementation.
+ *
+ *  (2)Double-Byte SJIS <-> BMP Unicode
+ *     ex: 0x8140 U+3000    # IDEOGRAPHIC SPACE
+ *
+ *  (3)Double-Byte SJIS <-> Supplementary
+ *     ex: 0xFCF0 U+2A61A   # <cjk> [2000] [Unicode3.1]
+ *
+ *  (4)Double-Byte SJIS <-> Composite
+ *   ex: 0x83F6 U+31F7+309A # [2000]
+ *
+ *  (5)"Windows-only" special mapping entries
+ *     are handled by MS932_0213.
+ */
+
+public class SJIS_0213 extends Charset {
+    public SJIS_0213() {
+        super("x-SJIS_0213", ExtendedCharsets.aliasesFor("SJIS_0213"));
+    }
+
+    public boolean contains(Charset cs) {
+        return ((cs.name().equals("US-ASCII"))
+                || (cs instanceof SJIS)
+                || (cs instanceof SJIS_0213));
+    }
+
+    public CharsetDecoder newDecoder() {
+        return new Decoder(this);
+    }
+
+    public CharsetEncoder newEncoder() {
+        return new Encoder(this);
+    }
+
+    static CharsetMapping mapping =
+        CharsetMapping.get(SJIS_0213.class.getResourceAsStream("sjis0213.dat"));
+
+    protected static class Decoder extends CharsetDecoder {
+        protected static final char UNMAPPABLE = CharsetMapping.UNMAPPABLE_DECODING;
+
+        protected Decoder(Charset cs) {
+            super(cs, 0.5f, 1.0f);
+        }
+
+        private CoderResult decodeArrayLoop(ByteBuffer src, CharBuffer dst) {
+            byte[] sa = src.array();
+            int sp = src.arrayOffset() + src.position();
+            int sl = src.arrayOffset() + src.limit();
+
+            char[] da = dst.array();
+            int dp = dst.arrayOffset() + dst.position();
+            int dl = dst.arrayOffset() + dst.limit();
+
+            try {
+                while (sp < sl) {
+                    int b1 = sa[sp] & 0xff;
+                    char c = decodeSingle(b1);
+                    int inSize = 1, outSize = 1;
+                    char[] cc = null;
+                    if (c == UNMAPPABLE) {
+                        if (sl - sp < 2)
+                            return CoderResult.UNDERFLOW;
+                        int b2 = sa[sp + 1] & 0xff;
+                        c = decodeDouble(b1, b2);
+                        inSize++;
+                        if (c == UNMAPPABLE) {
+                            cc = decodeDoubleEx(b1, b2);
+                            if (cc == null) {
+                                if (decodeSingle(b2) == UNMAPPABLE)
+                                    return CoderResult.unmappableForLength(2);
+                                else
+                                    return CoderResult.unmappableForLength(1);
+                            }
+                            outSize++;
+                        }
+                    }
+                    if (dl - dp < outSize)
+                        return CoderResult.OVERFLOW;
+                    if (outSize == 2) {
+                        da[dp++] = cc[0];
+                        da[dp++] = cc[1];
+                    } else {
+                        da[dp++] = c;
+                    }
+                    sp += inSize;
+                }
+                return CoderResult.UNDERFLOW;
+            } finally {
+                src.position(sp - src.arrayOffset());
+                dst.position(dp - dst.arrayOffset());
+            }
+        }
+
+        private CoderResult decodeBufferLoop(ByteBuffer src, CharBuffer dst) {
+            int mark = src.position();
+            try {
+                while (src.hasRemaining()) {
+                    char[] cc = null;
+                    int b1 = src.get() & 0xff;
+                    char c = decodeSingle(b1);
+                    int inSize = 1, outSize = 1;
+                    if (c == UNMAPPABLE) {
+                        if (src.remaining() < 1)
+                            return CoderResult.UNDERFLOW;
+                        int b2 = src.get() & 0xff;
+                        inSize++;
+                        c = decodeDouble(b1, b2);
+                        if (c == UNMAPPABLE) {
+                            cc = decodeDoubleEx(b1, b2);
+                            if (cc == null) {
+                                if (decodeSingle(b2) == UNMAPPABLE)
+                                    return CoderResult.unmappableForLength(2);
+                                else
+                                    return CoderResult.unmappableForLength(1);
+                            }
+                            outSize++;
+                        }
+                    }
+                    if (dst.remaining() < outSize)
+                        return CoderResult.OVERFLOW;
+                    if (outSize == 2) {
+                        dst.put(cc[0]);
+                        dst.put(cc[1]);
+                    } else {
+                        dst.put(c);
+                    }
+                    mark += inSize;
+                }
+                return CoderResult.UNDERFLOW;
+            } finally {
+                src.position(mark);
+            }
+        }
+
+        protected CoderResult decodeLoop(ByteBuffer src, CharBuffer dst) {
+            if (src.hasArray() && dst.hasArray())
+                return decodeArrayLoop(src, dst);
+            else
+                return decodeBufferLoop(src, dst);
+        }
+
+        protected char decodeSingle(int b) {
+            return mapping.decodeSingle(b);
+        }
+
+        protected char decodeDouble(int b1, int b2) {
+            return mapping.decodeDouble(b1, b2);
+        }
+
+        private char[] cc = new char[2];
+        private CharsetMapping.Entry comp = new CharsetMapping.Entry();
+        protected char[] decodeDoubleEx(int b1, int b2) {
+            int db = (b1 << 8) | b2;
+            if (mapping.decodeSurrogate(db, cc) != null)
+                return cc;
+            comp.bs = db;
+            if (mapping.decodeComposite(comp, cc) != null)
+                return cc;
+            return null;
+        }
+    }
+
+    protected static class Encoder extends CharsetEncoder {
+        protected static final int UNMAPPABLE = CharsetMapping.UNMAPPABLE_ENCODING;
+        protected static final int MAX_SINGLEBYTE = 0xff;
+
+        protected Encoder(Charset cs) {
+            super(cs, 2.0f, 2.0f);
+        }
+
+        public boolean canEncode(char c) {
+            return (encodeChar(c) != UNMAPPABLE);
+        }
+
+        protected int encodeChar(char ch) {
+            return mapping.encodeChar(ch);
+        }
+
+        protected int encodeSurrogate(char hi, char lo) {
+            return mapping.encodeSurrogate(hi, lo);
+        }
+
+        private CharsetMapping.Entry comp = new CharsetMapping.Entry();
+        protected int encodeComposite(char base, char cc) {
+            comp.cp = base;
+            comp.cp2 = cc;
+            return mapping.encodeComposite(comp);
+        }
+
+        protected boolean isCompositeBase(char ch) {
+            comp.cp = ch;
+            return mapping.isCompositeBase(comp);
+        }
+
+        // Unlike surrogate pair, the base character of a base+cc composite
+        // itself is a legal codepoint in 0213, if we simply return UNDERFLOW
+        // when a base candidate is the last input char in the CharBuffer, like
+        // what we do for the surrogte pair, encoding will fail if this base
+        // character is indeed the last character of the input char sequence.
+        // Keep this base candidate in "leftoverBase" so we can flush it out
+        // at the end of the encoding circle.
+        char leftoverBase = 0;
+        protected CoderResult encodeArrayLoop(CharBuffer src, ByteBuffer dst) {
+            char[] sa = src.array();
+            int sp = src.arrayOffset() + src.position();
+            int sl = src.arrayOffset() + src.limit();
+            byte[] da = dst.array();
+            int dp = dst.arrayOffset() + dst.position();
+            int dl = dst.arrayOffset() + dst.limit();
+
+            try {
+                while (sp < sl) {
+                    int db;
+                    char c = sa[sp];
+                    if (leftoverBase != 0) {
+                        boolean isComp = false;
+                        db = encodeComposite(leftoverBase, c);
+                        if (db == UNMAPPABLE)
+                            db = encodeChar(leftoverBase);
+                        else
+                            isComp = true;
+                        if (dl - dp < 2)
+                            return CoderResult.OVERFLOW;
+                        da[dp++] = (byte)(db >> 8);
+                        da[dp++] = (byte)db;
+                        leftoverBase = 0;
+                        if (isComp) {
+                            sp++;
+                            continue;
+                        }
+                    }
+                    if (isCompositeBase(c)) {
+                        leftoverBase = c;
+                    } else {
+                        db = encodeChar(c);
+                        if (db > MAX_SINGLEBYTE) {      // DoubleByte
+                            if (dl - dp < 2)
+                                return CoderResult.OVERFLOW;
+                            da[dp++] = (byte)(db >> 8);
+                            da[dp++] = (byte)db;
+                        } else if (db != UNMAPPABLE) {  // SingleByte
+                            if (dl <= dp)
+                                return CoderResult.OVERFLOW;
+                            da[dp++] = (byte)db;
+                        } else if (Character.isHighSurrogate(c)) {
+                            if ((sp + 1) == sl)
+                                return CoderResult.UNDERFLOW;
+                            char c2 = sa[sp + 1];
+                            if (!Character.isLowSurrogate(c2))
+                                return CoderResult.malformedForLength(1);
+                            db = encodeSurrogate(c, c2);
+                            if (db == UNMAPPABLE)
+                                return CoderResult.unmappableForLength(2);
+                            if (dl - dp < 2)
+                                return CoderResult.OVERFLOW;
+                            da[dp++] = (byte)(db >> 8);
+                            da[dp++] = (byte)db;
+                            sp++;
+                        } else {
+                            return CoderResult.unmappableForLength(1);
+                        }
+                    }
+                    sp++;
+                }
+                return CoderResult.UNDERFLOW;
+            } finally {
+                src.position(sp - src.arrayOffset());
+                dst.position(dp - dst.arrayOffset());
+            }
+        }
+
+        protected CoderResult encodeBufferLoop(CharBuffer src, ByteBuffer dst) {
+            int mark = src.position();
+            try {
+                while (src.hasRemaining()) {
+                    int db;
+                    char c = src.get();
+                    if (leftoverBase != 0) {
+                        boolean isComp = false;
+                        db = encodeComposite(leftoverBase, c);
+                        if (db == UNMAPPABLE)
+                            db = encodeChar(leftoverBase);
+                        else
+                            isComp = true;
+                        if (dst.remaining() < 2)
+                            return CoderResult.OVERFLOW;
+                        dst.put((byte)(db >> 8));
+                        dst.put((byte)(db));
+                        leftoverBase = 0;
+                        if (isComp) {
+                            mark++;
+                            continue;
+                        }
+                    }
+                    if (isCompositeBase(c)) {
+                        leftoverBase = c;
+                    } else {
+                        db = encodeChar(c);
+                        if (db > MAX_SINGLEBYTE) {        // DoubleByte
+                            if (dst.remaining() < 2)
+                                return CoderResult.OVERFLOW;
+                            dst.put((byte)(db >> 8));
+                            dst.put((byte)(db));
+                        } else if (db != UNMAPPABLE) {    // Single-byte
+                            if (dst.remaining() < 1)
+                                return CoderResult.OVERFLOW;
+                            dst.put((byte)db);
+                        } else if (Character.isHighSurrogate(c)) {
+                            if (!src.hasRemaining())     // Surrogates
+                                return CoderResult.UNDERFLOW;
+                            char c2 = src.get();
+                            if (!Character.isLowSurrogate(c2))
+                                return CoderResult.malformedForLength(1);
+                            db = encodeSurrogate(c, c2);
+                            if (db == UNMAPPABLE)
+                                return CoderResult.unmappableForLength(2);
+                            if (dst.remaining() < 2)
+                                return CoderResult.OVERFLOW;
+                            dst.put((byte)(db >> 8));
+                            dst.put((byte)(db));
+                            mark++;
+                        } else {
+                            return CoderResult.unmappableForLength(1);
+                        }
+                    }
+                    mark++;
+                }
+                return CoderResult.UNDERFLOW;
+            } finally {
+                src.position(mark);
+            }
+        }
+
+        protected CoderResult encodeLoop(CharBuffer src, ByteBuffer dst) {
+            if (src.hasArray() && dst.hasArray())
+                return encodeArrayLoop(src, dst);
+            else
+                return encodeBufferLoop(src, dst);
+        }
+
+        protected CoderResult implFlush(ByteBuffer dst) {
+            if (leftoverBase > 0) {
+                if (dst.remaining() < 2)
+                    return CoderResult.OVERFLOW;
+                int db = encodeChar(leftoverBase);
+                dst.put((byte)(db >> 8));
+                dst.put((byte)(db));
+                leftoverBase = 0;
+            }
+            return CoderResult.UNDERFLOW;
+        }
+
+        protected void implReset() {
+            leftoverBase = 0;
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/tracing/MultiplexProviderFactory.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,124 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package sun.tracing;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.InvocationTargetException;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.logging.Logger;
+
+import com.sun.tracing.ProviderFactory;
+import com.sun.tracing.Provider;
+import com.sun.tracing.Probe;
+
+/**
+ * Factory class to create tracing Providers.
+ *
+ * This factory creates a "multiplex provider", which is a provider that
+ * encapsulates a list of providers and whose probes trigger a corresponding
+ * trigger in each of the encapsulated providers' probes.
+ *
+ * This is used when there are multiple tracing frameworks activated at once.
+ * A user-defined provider gets implementation for each of the activated
+ * frameworks and this multiplex framework is what is ultimately passed
+ * back to the user.  All probe triggers are multiplexed to each
+ * active framework.
+ *
+ * @since 1.7
+ */
+public class MultiplexProviderFactory extends ProviderFactory {
+
+    private Set<ProviderFactory> factories;
+
+    public MultiplexProviderFactory(Set<ProviderFactory> factories) {
+        this.factories = factories;
+    }
+
+    public <T extends Provider> T createProvider(Class<T> cls) {
+        HashSet<Provider> providers = new HashSet<Provider>();
+        for (ProviderFactory factory : factories) {
+            providers.add(factory.createProvider(cls));
+        }
+        MultiplexProvider provider = new MultiplexProvider(cls, providers);
+        try {
+            provider.init();
+        } catch (Exception e) {
+            // Probably a permission problem (can't get declared members)
+            Logger.getAnonymousLogger().warning(
+                "Could not initialize tracing provider: " + e.getMessage());
+        }
+        return provider.newProxyInstance();
+    }
+}
+
+class MultiplexProvider extends ProviderSkeleton {
+
+    private Set<Provider> providers;
+
+    protected ProbeSkeleton createProbe(Method m) {
+        return new MultiplexProbe(m, providers);
+    }
+
+    MultiplexProvider(Class<? extends Provider> type, Set<Provider> providers) {
+        super(type);
+        this.providers = providers;
+    }
+
+    public void dispose() {
+        for (Provider p : providers) {
+            p.dispose();
+        }
+        super.dispose();
+    }
+}
+
+class MultiplexProbe extends ProbeSkeleton {
+
+    private Set<Probe> probes;
+
+    MultiplexProbe(Method m, Set<Provider> providers) {
+        super(m.getParameterTypes());
+        probes = new HashSet<Probe>();
+        for (Provider p : providers) {
+            Probe probe = p.getProbe(m);
+            if (probe != null) {
+                probes.add(probe);
+            }
+        }
+    }
+
+    public boolean isEnabled() {
+        for (Probe p : probes) {
+            if (p.isEnabled()) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    public void uncheckedTrigger(Object[] args) {
+        for (Probe p : probes) {
+            try {
+                // try the fast path
+                ProbeSkeleton ps = (ProbeSkeleton)p;
+                ps.uncheckedTrigger(args);
+            } catch (ClassCastException e) {
+                // Probe.trigger takes an "Object ..." varargs parameter,
+                // so we can't call it directly.
+                try {
+                    Method m = Probe.class.getMethod(
+                        "trigger", Class.forName("[java.lang.Object"));
+                    m.invoke(p, args);
+                } catch (Exception e1) {
+                    assert false; // This shouldn't happen
+                }
+            }
+        }
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/tracing/NullProviderFactory.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package sun.tracing;
+
+import java.lang.reflect.Method;
+import java.util.logging.Logger;
+
+import com.sun.tracing.ProviderFactory;
+import com.sun.tracing.Provider;
+
+/**
+ * Factory class to create tracing Providers.
+ *
+ * This factory will create tracing instances that do nothing.
+ * It is used when no tracing is desired, but Provider instances still
+ * must be generated so that tracing calls in the application continue to
+ * run.
+ *
+ * @since 1.7
+ */
+public class NullProviderFactory extends ProviderFactory {
+
+    /**
+     * Creates and returns a Null provider.
+     *
+     * See comments at {@code ProviderSkeleton.createProvider()} for more
+     * details.
+     *
+     * @return a provider whose probe trigger are no-ops.
+     */
+    public <T extends Provider> T createProvider(Class<T> cls) {
+        NullProvider provider = new NullProvider(cls);
+        try {
+            provider.init();
+        } catch (Exception e) {
+            // Probably a permission problem (can't get declared members)
+            Logger.getAnonymousLogger().warning(
+                "Could not initialize tracing provider: " + e.getMessage());
+        }
+        return provider.newProxyInstance();
+    }
+}
+
+class NullProvider extends ProviderSkeleton {
+
+    NullProvider(Class<? extends Provider> type) {
+        super(type);
+    }
+
+    protected ProbeSkeleton createProbe(Method m) {
+        return new NullProbe(m.getParameterTypes());
+    }
+}
+
+class NullProbe extends ProbeSkeleton {
+
+    public NullProbe(Class<?>[] parameters) {
+        super(parameters);
+    }
+
+    public boolean isEnabled() {
+        return false;
+    }
+
+    public void uncheckedTrigger(Object[] args) {
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/tracing/PrintStreamProviderFactory.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,107 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package sun.tracing;
+
+import java.lang.reflect.Method;
+import java.io.PrintStream;
+import java.util.HashMap;
+import java.util.logging.Logger;
+
+import com.sun.tracing.ProviderFactory;
+import com.sun.tracing.Provider;
+import com.sun.tracing.ProviderName;
+import com.sun.tracing.Probe;
+import com.sun.tracing.ProbeName;
+
+/**
+ * Factory class to create tracing Providers.
+ *
+ * This factory will create tracing instances that print to a PrintStream
+ * when activated.
+ *
+ * @since 1.7
+ */
+public class PrintStreamProviderFactory extends ProviderFactory {
+
+    private PrintStream stream;
+
+    public PrintStreamProviderFactory(PrintStream stream) {
+        this.stream = stream;
+    }
+
+    public <T extends Provider> T createProvider(Class<T> cls) {
+        PrintStreamProvider provider = new PrintStreamProvider(cls, stream);
+        try {
+            provider.init();
+        } catch (Exception e) {
+            // Probably a permission problem (can't get declared members)
+            Logger.getAnonymousLogger().warning(
+                "Could not initialize tracing provider: " + e.getMessage());
+        }
+        return provider.newProxyInstance();
+    }
+}
+
+class PrintStreamProvider extends ProviderSkeleton {
+
+    private PrintStream stream;
+    private String providerName;
+
+    protected ProbeSkeleton createProbe(Method m) {
+        String probeName = getAnnotationString(m, ProbeName.class, m.getName());
+        return new PrintStreamProbe(this, probeName, m.getParameterTypes());
+    }
+
+    PrintStreamProvider(Class<? extends Provider> type, PrintStream stream) {
+        super(type);
+        this.stream = stream;
+        this.providerName = getProviderName();
+    }
+
+    PrintStream getStream() {
+        return stream;
+    }
+
+    String getName() {
+        return providerName;
+    }
+}
+
+class PrintStreamProbe extends ProbeSkeleton {
+
+    private PrintStreamProvider provider;
+    private String name;
+
+    PrintStreamProbe(PrintStreamProvider p, String name, Class<?>[] params) {
+        super(params);
+        this.provider = p;
+        this.name = name;
+    }
+
+    public boolean isEnabled() {
+        return true;
+    }
+
+    public void uncheckedTrigger(Object[] args) {
+        StringBuffer sb = new StringBuffer();
+        sb.append(provider.getName());
+        sb.append(".");
+        sb.append(name);
+        sb.append("(");
+        boolean first = true;
+        for (Object o : args) {
+            if (first == false) {
+                sb.append(",");
+            } else {
+                first = false;
+            }
+            sb.append(o.toString());
+        }
+        sb.append(")");
+        provider.getStream().println(sb.toString());
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/tracing/ProbeSkeleton.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package sun.tracing;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.Field;
+import com.sun.tracing.Probe;
+
+/**
+ * Provides common code for implementation of {@code Probe} classes.
+ *
+ * @since 1.7
+ */
+public abstract class ProbeSkeleton implements Probe {
+
+    protected Class<?>[] parameters;
+
+    protected ProbeSkeleton(Class<?>[] parameters) {
+        this.parameters = parameters;
+    }
+
+    public abstract boolean isEnabled();  // framework-dependent
+
+    /**
+     * Triggers the probe with verified arguments.
+     *
+     * The caller of this method must have already determined that the
+     * arity and types of the arguments match what the probe was
+     * declared with.
+     */
+    public abstract void uncheckedTrigger(Object[] args); // framework-dependent
+
+    private static boolean isAssignable(Object o, Class<?> formal) {
+        if (o != null) {
+            if ( !formal.isInstance(o) ) {
+                if ( formal.isPrimitive() ) { // o might be a boxed primitive
+                    try {
+                        // Yuck.  There must be a better way of doing this
+                        Field f = o.getClass().getField("TYPE");
+                        return formal.isAssignableFrom((Class<?>)f.get(null));
+                    } catch (Exception e) {
+                        /* fall-through. */
+                    }
+                }
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * Performs a type-check of the parameters before triggering the probe.
+     */
+    public void trigger(Object ... args) {
+        if (args.length != parameters.length) {
+            throw new IllegalArgumentException("Wrong number of arguments");
+        } else {
+            for (int i = 0; i < parameters.length; ++i) {
+                if ( !isAssignable(args[i], parameters[i]) ) {
+                    throw new IllegalArgumentException(
+                            "Wrong type of argument at position " + i);
+                }
+            }
+            uncheckedTrigger(args);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/tracing/ProviderSkeleton.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,223 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package sun.tracing;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.AnnotatedElement;
+import java.lang.annotation.Annotation;
+import java.util.HashMap;
+
+import com.sun.tracing.Provider;
+import com.sun.tracing.Probe;
+import com.sun.tracing.ProviderName;
+
+/**
+ * Provides a common code for implementation of {@code Provider} classes.
+ *
+ * Each tracing subsystem needs to provide three classes, a factory
+ * (derived from {@code ProviderFactory}, a provider (a subclass of
+ * {@code Provider}, and a probe type (subclass of {@code ProbeSkeleton}).
+ *
+ * The factory object takes a user-defined interface and provides an
+ * implementation of it whose method calls will trigger probes in the
+ * tracing framework.
+ *
+ * The framework's provider class, and its instances, are not seen by the
+ * user at all -- they usually sit in the background and receive and dispatch
+ * the calls to the user's provider interface.  The {@code ProviderSkeleton}
+ * class provides almost all of the implementation needed by a framework
+ * provider.  Framework providers must only provide a constructor and
+ * disposal method, and implement the {@code createProbe} method to create
+ * an appropriate {@code ProbeSkeleton} subclass.
+ *
+ * The framework's probe class provides the implementation of the two
+ * probe methods, {@code isEnabled()} and {@code uncheckedTrigger()}.  Both are
+ * framework-dependent implementations.
+ *
+ * @since 1.7
+ */
+
+public abstract class ProviderSkeleton implements InvocationHandler, Provider {
+
+    protected boolean active; // set to false after dispose() is called
+    protected Class<? extends Provider> providerType; // user's interface
+    protected HashMap<Method, ProbeSkeleton> probes; // methods to probes
+
+
+    /**
+     * Creates a framework-specific probe subtype.
+     *
+     * This method is implemented by the framework's provider and returns
+     * framework-specific probes for a method.
+     *
+     * @param method A method in the user's interface
+     * @return a subclass of ProbeSkeleton for the particular framework.
+     */
+    protected abstract ProbeSkeleton createProbe(Method method);
+
+    /**
+     * Initializes the provider.
+     *
+     * @param type the user's interface
+     */
+    protected ProviderSkeleton(Class<? extends Provider> type) {
+        this.active = false; // in case of some error during initialization
+        this.providerType = type;
+        this.probes = new HashMap<Method,ProbeSkeleton>();
+    }
+
+    /**
+     * Post-constructor initialization routine.
+     *
+     * Subclass instances must be initialized before they can create probes.
+     * It is up to the factory implementations to call this after construction.
+     */
+    public void init() {
+        for (Method m : providerType.getDeclaredMethods()) {
+            if ( m.getReturnType() != Void.TYPE ) {
+                throw new IllegalArgumentException(
+                   "Return value of method is not void");
+            } else {
+                probes.put(m, createProbe(m));
+            }
+        }
+        this.active = true;
+    }
+
+    /**
+     * Magic routine which creates an implementation of the user's interface.
+     *
+     * This method creates the instance of the user's interface which is
+     * passed back to the user.  Every call upon that interface will be
+     * redirected to the {@code invoke()} method of this class (until
+     * overridden by the VM).
+     *
+     * @return an implementation of the user's interface
+     */
+    @SuppressWarnings("unchecked")
+    public <T extends Provider> T newProxyInstance() {
+        return (T)Proxy.newProxyInstance(providerType.getClassLoader(),
+               new Class<?>[] { providerType }, this);
+    }
+
+    /**
+     * Triggers a framework probe when a user interface method is called.
+     *
+     * This method dispatches a user interface method call to the appropriate
+     * probe associated with this framework.
+     *
+     * If the invoked method is not a user-defined member of the interface,
+     * then it is a member of {@code Provider} or {@code Object} and we
+     * invoke the method directly.
+     *
+     * @param proxy the instance whose method was invoked
+     * @param method the method that was called
+     * @param args the arguments passed in the call.
+     * @return always null, if the method is a user-defined probe
+     */
+    public Object invoke(Object proxy, Method method, Object[] args) {
+        if (method.getDeclaringClass() != providerType) {
+            try {
+                return method.invoke(this, args);
+            } catch (IllegalAccessException e) {
+                assert false;
+            } catch (InvocationTargetException e) {
+                assert false;
+            }
+        } else if (active) {
+            ProbeSkeleton p = probes.get(method);
+            if (p != null) {
+                // Skips argument check -- already done by javac
+                p.uncheckedTrigger(args);
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Direct accessor for {@code Probe} objects.
+     *
+     * @param m the method corresponding to a probe
+     * @return the method associated probe object, or null
+     */
+    public Probe getProbe(Method m) {
+        return active ? probes.get(m) : null;
+    }
+
+    /**
+     * Default provider disposal method.
+     *
+     * This is overridden in subclasses as needed.
+     */
+    public void dispose() {
+        active = false;
+        probes.clear();
+    }
+
+    /**
+     * Gets the user-specified provider name for the user's interface.
+     *
+     * If the user's interface has a {@ProviderName} annotation, that value
+     * is used.  Otherwise we use the simple name of the user interface's class.
+     * @return the provider name
+     */
+    protected String getProviderName() {
+        return getAnnotationString(
+                providerType, ProviderName.class, providerType.getSimpleName());
+    }
+
+    /**
+     * Utility method for getting a string value from an annotation.
+     *
+     * Used for getting a string value from an annotation with a 'value' method.
+     *
+     * @param element the element that was annotated, either a class or method
+     * @param annotation the class of the annotation we're interested in
+     * @param defaultValue the value to return if the annotation doesn't
+     * exist, doesn't have a "value", or the value is empty.
+     */
+    protected static String getAnnotationString(
+            AnnotatedElement element, Class<? extends Annotation> annotation,
+            String defaultValue) {
+        String ret = (String)getAnnotationValue(
+                element, annotation, "value", defaultValue);
+        return ret.isEmpty() ? defaultValue : ret;
+    }
+
+    /**
+     * Utility method for calling an arbitrary method in an annotation.
+     *
+     * @param element the element that was annotated, either a class or method
+     * @param annotation the class of the annotation we're interested in
+     * @param methodName the name of the method in the annotation we wish
+     * to call.
+     * @param defaultValue the value to return if the annotation doesn't
+     * exist, or we couldn't invoke the method for some reason.
+     * @return the result of calling the annotation method, or the default.
+     */
+    protected static Object getAnnotationValue(
+            AnnotatedElement element, Class<? extends Annotation> annotation,
+            String methodName, Object defaultValue) {
+        Object ret = defaultValue;
+        try {
+            Method m = annotation.getMethod(methodName);
+            Annotation a = element.getAnnotation(annotation);
+            ret = m.invoke(a);
+        } catch (NoSuchMethodException e) {
+            assert false;
+        } catch (IllegalAccessException e) {
+            assert false;
+        } catch (InvocationTargetException e) {
+            assert false;
+        } catch (NullPointerException e) {
+            assert false;
+        }
+        return ret;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/tracing/dtrace/Activation.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package sun.tracing.dtrace;
+
+import java.lang.ref.WeakReference;
+import java.lang.ref.ReferenceQueue;
+import java.security.Permission;
+import java.util.HashSet;
+
+class Activation {
+    private SystemResource resource;
+    private int referenceCount;
+
+    Activation(String moduleName, DTraceProvider[] providers) {
+        SecurityManager security = System.getSecurityManager();
+        if (security != null) {
+            Permission perm =
+                new RuntimePermission("com.sun.tracing.dtrace.createProvider");
+            security.checkPermission(perm);
+        }
+        referenceCount = providers.length;
+        for (DTraceProvider p : providers) {
+            p.setActivation(this);
+        }
+        resource = new SystemResource(
+            this, JVM.activate(moduleName, providers));
+    }
+
+    void disposeProvider(DTraceProvider p) {
+        if (--referenceCount == 0) {
+            resource.dispose();
+        }
+    }
+}
+
+/**
+ * The native resource part of an Activation.
+ *
+ * This holds the native handle.
+ *
+ * If the user loses a reference to a set of Providers without disposing them,
+ * and GC determines the Activation is unreachable, then the next
+ * activation or flush call will automatically dispose the unreachable objects
+ *
+ * The SystemResource instances are creating during activation, and
+ * unattached during disposal.  When created, they always have a
+ * strong reference to them via the {@code resources} static member.  Explicit
+ * {@code dispose} calls will unregister the native resource and remove
+ * references to the SystemResource object.  Absent an explicit dispose,
+ * when their associated Activation object becomes garbage, the SystemResource
+ * object will be enqueued on the reference queue and disposed at the
+ * next call to {@code flush}.
+ */
+class SystemResource extends WeakReference<Activation> {
+
+    private long handle;
+
+    private static ReferenceQueue<Activation> referenceQueue =
+        referenceQueue = new ReferenceQueue<Activation>();
+    static HashSet<SystemResource> resources = new HashSet<SystemResource>();
+
+    SystemResource(Activation activation, long handle) {
+        super(activation, referenceQueue);
+        this.handle = handle;
+        flush();
+        resources.add(this);
+    }
+
+    void dispose() {
+        JVM.dispose(handle);
+        resources.remove(this);
+        handle = 0;
+    }
+
+    static void flush() {
+        SystemResource resource = null;
+        while ((resource = (SystemResource)referenceQueue.poll()) != null) {
+            if (resource.handle != 0) {
+                resource.dispose();
+            }
+        }
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/tracing/dtrace/DTraceProbe.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package sun.tracing.dtrace;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.InvocationTargetException;
+
+import sun.tracing.ProbeSkeleton;
+
+class DTraceProbe extends ProbeSkeleton {
+    private Object proxy;
+    private Method declared_method;
+    private Method implementing_method;
+
+    DTraceProbe(Object proxy, Method m) {
+        super(m.getParameterTypes());
+        this.proxy = proxy;
+        this.declared_method = m;
+        try {
+            // The JVM will override the proxy method's implementation with
+            // a version that will invoke the probe.
+            this.implementing_method =  proxy.getClass().getMethod(
+                m.getName(), m.getParameterTypes());
+        } catch (NoSuchMethodException e) {
+            throw new RuntimeException("Internal error, wrong proxy class");
+        }
+    }
+
+    public boolean isEnabled() {
+        return JVM.isEnabled(implementing_method);
+    }
+
+    public void uncheckedTrigger(Object[] args) {
+        try {
+            implementing_method.invoke(proxy, args);
+        } catch (IllegalAccessException e) {
+            assert false;
+        } catch (InvocationTargetException e) {
+            assert false;
+        }
+    }
+
+    String getProbeName() {
+        return DTraceProvider.getProbeName(declared_method);
+    }
+
+    String getFunctionName() {
+        return DTraceProvider.getFunctionName(declared_method);
+    }
+
+    Method getMethod() {
+        return implementing_method;
+    }
+
+    Class<?>[] getParameterTypes() {
+        return this.parameters;
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/tracing/dtrace/DTraceProvider.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,210 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package sun.tracing.dtrace;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Modifier;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.annotation.Annotation;
+import java.util.HashMap;
+
+import sun.tracing.ProviderSkeleton;
+import sun.tracing.ProbeSkeleton;
+import com.sun.tracing.Provider;
+import com.sun.tracing.ProviderName;
+import com.sun.tracing.ProbeName;
+import com.sun.tracing.dtrace.Attributes;
+import com.sun.tracing.dtrace.ModuleName;
+import com.sun.tracing.dtrace.FunctionName;
+import com.sun.tracing.dtrace.StabilityLevel;
+import com.sun.tracing.dtrace.DependencyClass;
+
+import sun.misc.ProxyGenerator;
+
+class DTraceProvider extends ProviderSkeleton {
+
+    private Activation activation;
+    private Object proxy;
+
+    // For proxy generation
+    private final static Class[] constructorParams = { InvocationHandler.class };
+    private final String proxyClassNamePrefix = "$DTraceTracingProxy";
+
+    static final String DEFAULT_MODULE = "java_tracing";
+    static final String DEFAULT_FUNCTION = "unspecified";
+
+    private static long nextUniqueNumber = 0;
+    private static synchronized long getUniqueNumber() {
+        return nextUniqueNumber++;
+    }
+
+    protected ProbeSkeleton createProbe(Method m) {
+        return new DTraceProbe(proxy, m);
+    }
+
+    DTraceProvider(Class<? extends Provider> type) {
+        super(type);
+    }
+
+    void setProxy(Object p) {
+        proxy = p;
+    }
+
+    void setActivation(Activation a) {
+        this.activation = a;
+    }
+
+    public void dispose() {
+        if (activation != null) {
+            activation.disposeProvider(this);
+            activation = null;
+        }
+        super.dispose();
+    }
+
+    /**
+     * Magic routine which creates an implementation of the user's interface.
+     *
+     * This method uses the ProxyGenerator directly to bypass the
+     * java.lang.reflect.proxy cache so that we get a unique class each
+     * time it's called and can't accidently reuse a $Proxy class.
+     *
+     * @return an implementation of the user's interface
+     */
+    @SuppressWarnings("unchecked")
+    public <T extends Provider> T newProxyInstance() {
+        /*
+         * Choose a name for the proxy class to generate.
+         */
+        long num = getUniqueNumber();
+
+        String proxyPkg = "";
+        if (!Modifier.isPublic(providerType.getModifiers())) {
+            String name = providerType.getName();
+            int n = name.lastIndexOf('.');
+            proxyPkg = ((n == -1) ? "" : name.substring(0, n + 1));
+        }
+
+        String proxyName = proxyPkg + proxyClassNamePrefix + num;
+
+        /*
+         * Generate the specified proxy class.
+         */
+        Class<?> proxyClass = null;
+        byte[] proxyClassFile = ProxyGenerator.generateProxyClass(
+                proxyName, new Class<?>[] { providerType });
+        try {
+            proxyClass = JVM.defineClass(
+                providerType.getClassLoader(), proxyName,
+                proxyClassFile, 0, proxyClassFile.length);
+        } catch (ClassFormatError e) {
+            /*
+             * A ClassFormatError here means that (barring bugs in the
+             * proxy class generation code) there was some other
+             * invalid aspect of the arguments supplied to the proxy
+             * class creation (such as virtual machine limitations
+             * exceeded).
+             */
+            throw new IllegalArgumentException(e.toString());
+        }
+
+        /*
+         * Invoke its constructor with the designated invocation handler.
+         */
+        try {
+            Constructor cons = proxyClass.getConstructor(constructorParams);
+            return (T)cons.newInstance(new Object[] { this });
+        } catch (NoSuchMethodException e) {
+            throw new InternalError(e.toString());
+        } catch (IllegalAccessException e) {
+            throw new InternalError(e.toString());
+        } catch (InstantiationException e) {
+            throw new InternalError(e.toString());
+        } catch (InvocationTargetException e) {
+            throw new InternalError(e.toString());
+        }
+    }
+
+    // In the normal case, the proxy object's method implementations will call
+    // this method (it usually calls the ProviderSkeleton's version).  That
+    // method uses the passed 'method' object to lookup the associated
+    // 'ProbeSkeleton' and calls uncheckedTrigger() on that probe to cause the
+    // probe to fire.  DTrace probes are different in that the proxy class's
+    // methods are immediately overridden with native code to fire the probe
+    // directly.  So this method should never get invoked.  We also wire up the
+    // DTraceProbe.uncheckedTrigger() method to call the proxy method instead
+    // of doing the work itself.
+    public Object invoke(Object proxy, Method method, Object[] args) {
+        if (method.getDeclaringClass() != providerType) {
+            try {
+                return method.invoke(this, args);
+            } catch (IllegalAccessException e) {
+                assert false;
+            } catch (InvocationTargetException e) {
+                assert false;
+            }
+        } else if (active) {
+            assert false : "This method should have been overridden by the JVM";
+        }
+        return null;
+    }
+
+    public String getProviderName() {
+        return super.getProviderName();
+    }
+
+    String getModuleName() {
+        return getAnnotationString(
+            providerType, ModuleName.class, DEFAULT_MODULE);
+    }
+
+    static String getProbeName(Method method) {
+        return getAnnotationString(
+            method, ProbeName.class, method.getName());
+    }
+
+    static String getFunctionName(Method method) {
+        return getAnnotationString(
+            method, FunctionName.class, DEFAULT_FUNCTION);
+    }
+
+    DTraceProbe[] getProbes() {
+        return probes.values().toArray(new DTraceProbe[0]);
+    }
+
+    StabilityLevel getNameStabilityFor(Class<? extends Annotation> type) {
+        Attributes attrs = (Attributes)getAnnotationValue(
+            providerType, type, "value", null);
+        if (attrs == null) {
+            return StabilityLevel.PRIVATE;
+        } else {
+            return attrs.name();
+        }
+    }
+
+    StabilityLevel getDataStabilityFor(Class<? extends Annotation> type) {
+        Attributes attrs = (Attributes)getAnnotationValue(
+            providerType, type, "value", null);
+        if (attrs == null) {
+            return StabilityLevel.PRIVATE;
+        } else {
+            return attrs.data();
+        }
+    }
+
+    DependencyClass getDependencyClassFor(Class<? extends Annotation> type) {
+        Attributes attrs = (Attributes)getAnnotationValue(
+            providerType, type, "value", null);
+        if (attrs == null) {
+            return DependencyClass.UNKNOWN;
+        } else {
+            return attrs.dependency();
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/tracing/dtrace/DTraceProviderFactory.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,144 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package sun.tracing.dtrace;
+
+import java.util.Map;
+import java.util.Set;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.logging.Logger;
+import java.security.Permission;
+
+import com.sun.tracing.ProviderFactory;
+import com.sun.tracing.Provider;
+
+/**
+ * Factory class to create JSDT Providers.
+ *
+ * This class contains methods to create an instance of a Provider
+ * interface which can be used to place tracepoints in an application.
+ * Method calls upon that instance trigger DTrace probes that
+ * are visible from DTrace scripts.   Such calls have no other
+ * side effects in the application.
+ * <p>
+ * The DTrace script mechanisms for listing and matching probes will not see
+ * nor match any probes until the provider they reside in is created by a
+ * call to {@code createProvider()} (or {@code createProviders()}).
+ * <p>
+ * Providers that are created should be disposed of when they are no longer
+ * needed to free up system resources, at which point the associated
+ * DTrace probes will no longer be available to DTrace.  One disposes a
+ * provider by calling
+ * {@link com.sun.tracing.Provider#dispose Provider.dispose()} on a
+ * created provider instance.
+ *
+ * @since 1.7
+ */
+public final class DTraceProviderFactory extends ProviderFactory {
+    /**
+     * Creates an instance of a provider which can then be used to trigger
+     * DTrace probes.
+     *
+     * The provider specification, provided as an argument, should only
+     * contain methods which have a 'void' return type and String or
+     * integer-based typed arguments (long, int, short, char, byte, or boolean).
+     *
+     * @param cls A user-defined interface which extends {@code Provider}.
+     * @return An instance of the interface which is used to trigger
+     * the DTrace probes.
+     * @throws java.lang.SecurityException if a security manager has been
+     * installed and it denies
+     * RuntimePermission("com.sun.dtrace.jsdt.createProvider")
+     * @throws java.lang.IllegalArgumentException if the interface contains
+     * methods that do not return null, or that contain arguments that are
+     * not String or integer types.
+     */
+    public <T extends Provider> T createProvider(Class<T> cls) {
+        DTraceProvider jsdt = new DTraceProvider(cls);
+        T proxy = jsdt.newProxyInstance();
+        jsdt.setProxy(proxy);
+        try {
+            jsdt.init();
+            new Activation(jsdt.getModuleName(), new DTraceProvider[] { jsdt });
+        } catch (Exception e) {
+            // Probably a permission problem (can't get declared members)
+            Logger.getAnonymousLogger().warning(
+                "Could not initialize tracing provider: " + e.getMessage());
+            jsdt.dispose();
+        }
+        return proxy;
+    }
+
+    /**
+     * Creates multiple providers at once.
+     *
+     * This method batches together a number of provider instantiations.
+     * It works similarly
+     * to {@code createProvider}, but operates on a set of providers instead
+     * of one at a time.  This method is in place since some DTrace
+     * implementations limit the number of times that providers can be
+     * created.  When numerous providers can be created at once with this
+     * method, it will count only as a single creation point to DTrace, thus
+     * it uses less system resources.
+     * <p>
+     * All of the probes in the providers will be visible to DTrace after
+     * this call and all will remain visible until all of the providers
+     * are disposed.
+     * <p>
+     * The {@code moduleName} parameter will override any {@code ModuleName}
+     * annotation associated with any of the providers in the set.
+     * All of the probes created by this call will share the same
+     * module name.
+     * <p>
+     * @param providers a set of provider specification interfaces
+     * @param moduleName the module name to associate with all probes
+     * @return A map which maps the provider interface specification to an
+     * implementing instance.
+     * @throws java.lang.SecurityException if a security manager has been
+     * installed and it denies
+     * RuntimePermission("com.sun.dtrace.jsdt.createProvider")
+     * @throws java.lang.IllegalArgumentException if any of the interface
+     * contains methods that do not return null, or that contain arguments
+     * that are not String or integer types.
+     */
+    public Map<Class<? extends Provider>,Provider> createProviders(
+            Set<Class<? extends Provider>> providers, String moduleName) {
+        HashMap<Class<? extends Provider>,Provider> map =
+            new HashMap<Class<? extends Provider>,Provider>();
+        HashSet<DTraceProvider> jsdts = new HashSet<DTraceProvider>();
+        for (Class<? extends Provider> cls : providers) {
+            DTraceProvider jsdt = new DTraceProvider(cls);
+            jsdts.add(jsdt);
+            map.put(cls, jsdt.newProxyInstance());
+        }
+        new Activation(moduleName, jsdts.toArray(new DTraceProvider[0]));
+        return map;
+    }
+
+    /**
+     * Used to check the status of DTrace support in the underlying JVM and
+     * operating system.
+     *
+     * This is an informative method only - the Java-level effects of
+     * creating providers and triggering probes will not change whether or
+     * not DTrace is supported by the underlying systems.
+     *
+     * @return true if DTrace is supported
+     */
+    public static boolean isSupported() {
+        try {
+            SecurityManager security = System.getSecurityManager();
+            if (security != null) {
+                Permission perm = new RuntimePermission(
+                        "com.sun.tracing.dtrace.createProvider");
+                security.checkPermission(perm);
+            }
+            return JVM.isSupported();
+        } catch (SecurityException e) {
+            return false;
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/tracing/dtrace/JVM.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package sun.tracing.dtrace;
+
+import java.lang.reflect.Method;
+
+/**
+ * Container class for JVM interface native methods
+ *
+ * @since 1.7
+ */
+class JVM {
+
+    static {
+      java.security.AccessController.doPrivileged(
+              new sun.security.action.LoadLibraryAction("jsdt"));
+    }
+
+    static long activate(String moduleName, DTraceProvider[] providers) {
+        return activate0(moduleName, providers);
+    }
+
+    static void dispose(long handle) {
+        dispose0(handle);
+    }
+
+    static boolean isEnabled(Method m) {
+        return isEnabled0(m);
+    }
+
+    static boolean isSupported() {
+        return isSupported0();
+    }
+
+    static Class<?> defineClass(
+            ClassLoader loader, String name, byte[] b, int off, int len) {
+        return defineClass0(loader, name, b, off, len);
+    }
+
+    private static native long activate0(
+        String moduleName, DTraceProvider[] providers);
+    private static native void dispose0(long activation_handle);
+    private static native boolean isEnabled0(Method m);
+    private static native boolean isSupported0();
+    private static native Class<?> defineClass0(
+        ClassLoader loader, String name, byte[] b, int off, int len);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/sun/tracing/package-info.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+/**
+ * This package contains internal common code for implementing tracing
+ * frameworks, and defined a number of existing frameworks.
+ * <p>
+ * There are four tracing frameworks currently defined.  The "Null" and
+ * "Multiplex" frameworks are used internally as part of the implementation.
+ * The "DTrace" framework is the prime consumer framework at the moment,
+ * while the "PrintStream" framework is a functional, but hidden, framework
+ * which can be used to track probe firings.  All but the "DTrace" framework
+ * are defined in this package.  The "DTrace" framework is implemented in the
+ * {@code sun.tracing.dtrace} package.
+ * <p>
+ * This package also contains the {@code ProviderSkeleton} class, which
+ * holds most of the common code needed for implementing frameworks.
+ * <p>
+ * The "Null" framework is used when there are no other active frameworks.
+ * It accomplishes absolutely nothing and is merely a placeholder so that
+ * the application can call the tracing routines without error.
+ * <p>
+ * The "Multiplex" framework is used when there are multiple active frameworks.
+ * It is initialized with the framework factories and create providers and
+ * probes that dispatch to each active framework in turn.
+ * <p>
+ * The "PrintStream" framework is currently a debugging framework which
+ * dispatches trace calls to a user-defined PrintStream class, defined by
+ * a property.  It may some day be opened up to general use.
+ * <p>
+ * See the {@code sun.tracing.dtrace} and {@code com.sun.tracing.dtrace}
+ * packages for information on the "DTrace" framework.
+ */
+
+package sun.tracing;
--- a/src/share/demo/jfc/Notepad/resources/Notepad.properties	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/demo/jfc/Notepad/resources/Notepad.properties	Fri Apr 25 09:03:20 2008 -0400
@@ -1,76 +1,76 @@
-#
-# Resource strings for Notepad example
-
-Title=Notepad
-ElementTreeFrameTitle=Elements
-ViewportBackingStore=false
-
-# menubar definition
-#
-# Each of the strings that follow form a key to be 
-# used to the actual menu definition.
-menubar=file edit debug
-
-# file Menu definition
-#
-# Each of the strings that follow form a key to be
-# used as the basis of a menu item definition.
-#
-# open ->  Notepad.openAction
-# new  ->  Notepad.newAction
-# save ->  Notepad.saveAction
-# exit ->  Notepad.exitAction
-file=new open save - exit
-fileLabel=File
-openLabel=Open
-openImage=resources/open.gif
-newLabel=New
-newImage=resources/new.gif
-saveLabel=Save
-saveImage=resources/save.gif
-exitLabel=Exit
-
-#
-# edit Menu definition
-#
-# cut   -> JTextComponent.cutAction
-# copy  -> JTextComponent.copyAction
-# paste -> JTextComponent.pasteAction
-edit=cut copy paste - undo redo
-editLabel=Edit
-cutLabel=Cut
-cutAction=cut-to-clipboard
-cutImage=resources/cut.gif
-copyLabel=Copy
-copyAction=copy-to-clipboard
-copyImage=resources/copy.gif
-pasteLabel=Paste
-pasteAction=paste-from-clipboard
-pasteImage=resources/paste.gif
-undoLabel=Undo
-undoAction=Undo
-redoLabel=Redo
-redoAction=Redo
-
-#
-# debug Menu definition
-#
-debug=dump showElementTree
-debugLabel=Debug
-dumpLabel=Dump model to System.err
-dumpAction=dump-model
-showElementTreeLabel=Show Elements
-
-# toolbar definition
-#
-# Each of the strings that follow form a key to be
-# used as the basis of the tool definition.  Actions
-# are of course sharable, and in this case are shared
-# with the menu items.
-toolbar=new open save - cut copy paste
-newTooltip=Create a new file
-openTooltip=Open a file
-saveTooltip=Save to a file
-cutTooltip=Move selection to clipboard
-copyTooltip=Copy selection to clipboard
-pasteTooltip=Paste clipboard to selection
+#
+# Resource strings for Notepad example
+
+Title=Notepad
+ElementTreeFrameTitle=Elements
+ViewportBackingStore=false
+
+# menubar definition
+#
+# Each of the strings that follow form a key to be 
+# used to the actual menu definition.
+menubar=file edit debug
+
+# file Menu definition
+#
+# Each of the strings that follow form a key to be
+# used as the basis of a menu item definition.
+#
+# open ->  Notepad.openAction
+# new  ->  Notepad.newAction
+# save ->  Notepad.saveAction
+# exit ->  Notepad.exitAction
+file=new open save - exit
+fileLabel=File
+openLabel=Open
+openImage=resources/open.gif
+newLabel=New
+newImage=resources/new.gif
+saveLabel=Save
+saveImage=resources/save.gif
+exitLabel=Exit
+
+#
+# edit Menu definition
+#
+# cut   -> JTextComponent.cutAction
+# copy  -> JTextComponent.copyAction
+# paste -> JTextComponent.pasteAction
+edit=cut copy paste - undo redo
+editLabel=Edit
+cutLabel=Cut
+cutAction=cut-to-clipboard
+cutImage=resources/cut.gif
+copyLabel=Copy
+copyAction=copy-to-clipboard
+copyImage=resources/copy.gif
+pasteLabel=Paste
+pasteAction=paste-from-clipboard
+pasteImage=resources/paste.gif
+undoLabel=Undo
+undoAction=Undo
+redoLabel=Redo
+redoAction=Redo
+
+#
+# debug Menu definition
+#
+debug=dump showElementTree
+debugLabel=Debug
+dumpLabel=Dump model to System.err
+dumpAction=dump-model
+showElementTreeLabel=Show Elements
+
+# toolbar definition
+#
+# Each of the strings that follow form a key to be
+# used as the basis of the tool definition.  Actions
+# are of course sharable, and in this case are shared
+# with the menu items.
+toolbar=new open save - cut copy paste
+newTooltip=Create a new file
+openTooltip=Open a file
+saveTooltip=Save to a file
+cutTooltip=Move selection to clipboard
+copyTooltip=Copy selection to clipboard
+pasteTooltip=Paste clipboard to selection
--- a/src/share/javavm/export/jvm.h	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/javavm/export/jvm.h	Fri Apr 25 09:03:20 2008 -0400
@@ -591,6 +591,80 @@
 JNIEXPORT jboolean JNICALL
 JVM_SupportsCX8(void);
 
+/*
+ * com.sun.dtrace.jsdt support
+ */
+
+#define JVM_TRACING_DTRACE_VERSION 1
+
+/*
+ * Structure to pass one probe description to JVM
+ */
+typedef struct {
+    jmethodID method;
+    jstring   function;
+    jstring   name;
+    void*            reserved[4];     // for future use
+} JVM_DTraceProbe;
+
+/**
+ * Encapsulates the stability ratings for a DTrace provider field
+ */
+typedef struct {
+    jint nameStability;
+    jint dataStability;
+    jint dependencyClass;
+} JVM_DTraceInterfaceAttributes;
+
+/*
+ * Structure to pass one provider description to JVM
+ */
+typedef struct {
+    jstring                       name;
+    JVM_DTraceProbe*              probes;
+    jint                          probe_count;
+    JVM_DTraceInterfaceAttributes providerAttributes;
+    JVM_DTraceInterfaceAttributes moduleAttributes;
+    JVM_DTraceInterfaceAttributes functionAttributes;
+    JVM_DTraceInterfaceAttributes nameAttributes;
+    JVM_DTraceInterfaceAttributes argsAttributes;
+    void*                         reserved[4]; // for future use
+} JVM_DTraceProvider;
+
+/*
+ * Get the version number the JVM was built with
+ */
+JNIEXPORT jint JNICALL
+JVM_DTraceGetVersion(JNIEnv* env);
+
+/*
+ * Register new probe with given signature, return global handle
+ *
+ * The version passed in is the version that the library code was
+ * built with.
+ */
+JNIEXPORT jlong JNICALL
+JVM_DTraceActivate(JNIEnv* env, jint version, jstring module_name,
+  jint providers_count, JVM_DTraceProvider* providers);
+
+/*
+ * Check JSDT probe
+ */
+JNIEXPORT jboolean JNICALL
+JVM_DTraceIsProbeEnabled(JNIEnv* env, jmethodID method);
+
+/*
+ * Destroy custom DOF
+ */
+JNIEXPORT void JNICALL
+JVM_DTraceDispose(JNIEnv* env, jlong activation_handle);
+
+/*
+ * Check to see if DTrace is supported by OS
+ */
+JNIEXPORT jboolean JNICALL
+JVM_DTraceIsSupported(JNIEnv* env);
+
 /*************************************************************************
  PART 2: Support for the Verifier and Class File Format Checker
  ************************************************************************/
--- a/src/share/native/java/net/net_util.c	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/native/java/net/net_util.c	Fri Apr 25 09:03:20 2008 -0400
@@ -112,6 +112,7 @@
             (*env)->SetIntField(env, iaObj, ia_familyID, IPv4);
         } else {
             static jclass inet6Cls = 0;
+            jint scope;
             if (inet6Cls == 0) {
                 jclass c = (*env)->FindClass(env, "java/net/Inet6Address");
                 CHECK_NULL_RETURN(c, NULL);
@@ -129,7 +130,10 @@
             (*env)->SetObjectField(env, iaObj, ia6_ipaddressID, ipaddress);
 
             (*env)->SetIntField(env, iaObj, ia_familyID, IPv6);
-            (*env)->SetIntField(env, iaObj, ia6_scopeidID, getScopeID(him));
+            scope = getScopeID(him);
+            (*env)->SetIntField(env, iaObj, ia6_scopeidID, scope);
+            if (scope > 0)
+                (*env)->SetBooleanField(env, iaObj, ia6_scopeidsetID, JNI_TRUE);
         }
         *port = ntohs(him6->sin6_port);
     } else
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/native/sun/tracing/dtrace/JVM.c	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,304 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+#include <stdlib.h>
+
+#include "jvm.h"
+#include "jni.h"
+#include "jni_util.h"
+
+#include "jvm_symbols.h"
+#include "sun_tracing_dtrace_JVM.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+static JvmSymbols* jvm_symbols = NULL;
+
+static void initialize() {
+    static int initialized = 0;
+    if (initialized == 0) {
+        jvm_symbols = lookupJvmSymbols();
+        initialized = 1;
+    }
+}
+
+/*
+ * Class:     sun_tracing_dtrace_JVM
+ * Method:    isSupported0
+ * Signature: ()I
+ */
+JNIEXPORT jboolean JNICALL Java_sun_tracing_dtrace_JVM_isSupported0(
+        JNIEnv* env, jclass cls) {
+    initialize();
+    if (jvm_symbols != NULL) {
+        return jvm_symbols->IsSupported(env) ? JNI_TRUE : JNI_FALSE;
+    } else {
+        return JNI_FALSE;
+    }
+}
+
+// Macros that cause an immediate return if we detect an exception
+#define CHECK if ((*env)->ExceptionOccurred(env)) { return; }
+#define CHECK_(x) if ((*env)->ExceptionOccurred(env)) { return x; }
+
+static void readProbeData (
+        JNIEnv* env, jobject probe, JVM_DTraceProbe* jvm_probe) {
+    jclass clazz;
+    jmethodID mid;
+    jobject method;
+
+    if (jvm_probe == NULL) {
+        return; // just in case
+    }
+
+    clazz = (*env)->GetObjectClass(env, probe); CHECK
+
+    mid = (*env)->GetMethodID(
+        env, clazz, "getFunctionName", "()Ljava/lang/String;"); CHECK
+    jvm_probe->function = (jstring)(*env)->CallObjectMethod(
+        env, probe, mid); CHECK
+
+    mid = (*env)->GetMethodID(
+        env, clazz, "getProbeName", "()Ljava/lang/String;"); CHECK
+    jvm_probe->name = (jstring)(*env)->CallObjectMethod(env, probe, mid); CHECK
+
+    mid = (*env)->GetMethodID(
+        env, clazz, "getMethod", "()Ljava/lang/reflect/Method;"); CHECK
+    method = (*env)->CallObjectMethod(env, probe, mid); CHECK
+    jvm_probe->method = (*env)->FromReflectedMethod(env, method); CHECK
+}
+
+static void readFieldInterfaceAttributes(
+        char* annotationName, JNIEnv* env, jobject provider,
+        JVM_DTraceInterfaceAttributes* attrs) {
+    jobject result;
+    jobject result_clazz;
+    jclass provider_clazz;
+    jclass annotation_clazz;
+    jmethodID get;
+    jmethodID enc;
+
+    provider_clazz = (*env)->GetObjectClass(env, provider); CHECK
+    annotation_clazz = (*env)->FindClass(env, annotationName); CHECK
+
+    get = (*env)->GetMethodID(env, provider_clazz, "getNameStabilityFor",
+        "(Ljava/lang/Class;)Lcom/sun/tracing/dtrace/StabilityLevel;"); CHECK
+    result = (*env)->CallObjectMethod(
+        env, provider, get, annotation_clazz); CHECK
+    result_clazz = (*env)->GetObjectClass(env, result); CHECK
+    enc = (*env)->GetMethodID(env, result_clazz, "getEncoding", "()I"); CHECK
+    attrs->nameStability = (*env)->CallIntMethod(env, result, enc); CHECK
+
+    get = (*env)->GetMethodID(env, provider_clazz, "getDataStabilityFor",
+        "(Ljava/lang/Class;)Lcom/sun/tracing/dtrace/StabilityLevel;"); CHECK
+    result = (*env)->CallObjectMethod(
+        env, provider, get, annotation_clazz); CHECK
+    result_clazz = (*env)->GetObjectClass(env, result); CHECK
+    enc = (*env)->GetMethodID(env, result_clazz, "getEncoding", "()I"); CHECK
+    attrs->dataStability = (*env)->CallIntMethod(env, result, enc); CHECK
+
+    get = (*env)->GetMethodID(env, provider_clazz, "getDependencyClassFor",
+        "(Ljava/lang/Class;)Lcom/sun/tracing/dtrace/DependencyClass;"); CHECK
+    result = (*env)->CallObjectMethod(
+        env, provider, get, annotation_clazz); CHECK
+    result_clazz = (*env)->GetObjectClass(env, result); CHECK
+    enc = (*env)->GetMethodID(env, result_clazz, "getEncoding", "()I"); CHECK
+    attrs->dependencyClass = (*env)->CallIntMethod(env, result, enc); CHECK
+}
+
+static void readInterfaceAttributes(
+        JNIEnv* env, jobject provider, JVM_DTraceProvider* jvm_provider) {
+    readFieldInterfaceAttributes("com/sun/tracing/dtrace/ProviderAttributes",
+        env, provider, &(jvm_provider->providerAttributes));
+    readFieldInterfaceAttributes("com/sun/tracing/dtrace/ModuleAttributes",
+        env, provider, &(jvm_provider->moduleAttributes));
+    readFieldInterfaceAttributes("com/sun/tracing/dtrace/FunctionAttributes",
+        env, provider, &(jvm_provider->functionAttributes));
+    readFieldInterfaceAttributes("com/sun/tracing/dtrace/NameAttributes",
+        env, provider, &(jvm_provider->nameAttributes));
+    readFieldInterfaceAttributes("com/sun/tracing/dtrace/ArgsAttributes",
+        env, provider, &(jvm_provider->argsAttributes));
+}
+
+static void readProviderData(
+        JNIEnv* env, jobject provider, JVM_DTraceProvider* jvm_provider) {
+    jmethodID mid;
+    jobjectArray probes;
+    jsize i;
+    jclass clazz = (*env)->GetObjectClass(env, provider); CHECK
+    mid = (*env)->GetMethodID(
+        env, clazz, "getProbes", "()[Lsun/tracing/dtrace/DTraceProbe;"); CHECK
+    probes = (jobjectArray)(*env)->CallObjectMethod(
+        env, provider, mid); CHECK
+
+    // Fill JVM structure, describing provider
+    jvm_provider->probe_count = (*env)->GetArrayLength(env, probes); CHECK
+    jvm_provider->probes = (JVM_DTraceProbe*)calloc(
+        jvm_provider->probe_count, sizeof(*jvm_provider->probes));
+    mid = (*env)->GetMethodID(
+        env, clazz, "getProviderName", "()Ljava/lang/String;"); CHECK
+    jvm_provider->name = (jstring)(*env)->CallObjectMethod(
+        env, provider, mid); CHECK
+
+    readInterfaceAttributes(env, provider, jvm_provider); CHECK
+
+    for (i = 0; i < jvm_provider->probe_count; ++i) {
+        jobject probe = (*env)->GetObjectArrayElement(env, probes, i); CHECK
+        readProbeData(env, probe, &jvm_provider->probes[i]); CHECK
+    }
+}
+
+/*
+ * Class:     sun_tracing_dtrace_JVM
+ * Method:    activate0
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_sun_tracing_dtrace_JVM_activate0(
+        JNIEnv* env, jclass cls, jstring moduleName, jobjectArray providers) {
+    jlong handle = 0;
+    jsize num_providers;
+    jsize i;
+    JVM_DTraceProvider* jvm_providers;
+
+    initialize();
+
+    if (jvm_symbols == NULL) {
+      return 0;
+    }
+
+    num_providers = (*env)->GetArrayLength(env, providers); CHECK_(0L)
+
+    jvm_providers = (JVM_DTraceProvider*)calloc(
+        num_providers, sizeof(*jvm_providers));
+
+    for (i = 0; i < num_providers; ++i) {
+        JVM_DTraceProvider* p = &(jvm_providers[i]);
+        jobject provider = (*env)->GetObjectArrayElement(
+            env, providers, i);
+        readProviderData(env, provider, p);
+    }
+
+    handle = jvm_symbols->Activate(
+        env, JVM_TRACING_DTRACE_VERSION, moduleName,
+        num_providers, jvm_providers);
+
+    for (i = 0; i < num_providers; ++i) {
+        JVM_DTraceProvider* p = &(jvm_providers[i]);
+        free(p->probes);
+    }
+    free(jvm_providers);
+
+    return handle;
+}
+
+/*
+ * Class:     sun_tracing_dtrace_JVM
+ * Method:    dispose0
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_sun_tracing_dtrace_JVM_dispose0(
+        JNIEnv* env, jclass cls, jlong handle) {
+    if (jvm_symbols != NULL && handle != 0) {
+        jvm_symbols->Dispose(env, handle);
+    }
+}
+
+/*
+ * Class:     sun_tracing_dtrace_JVM
+ * Method:    isEnabled0
+ * Signature: (Ljava/lang/String;Ljava/lang/String;)Z
+ */
+JNIEXPORT jboolean JNICALL Java_sun_tracing_dtrace_JVM_isEnabled0(
+        JNIEnv* env, jclass cls, jobject method) {
+    jmethodID mid;
+    if (jvm_symbols != NULL && method != NULL) {
+        mid = (*env)->FromReflectedMethod(env, method);
+        return jvm_symbols->IsProbeEnabled(env, mid);
+    }
+    return JNI_FALSE;
+}
+
+/*
+ * Class:     sun_tracing_dtrace_JVM
+ * Method:    defineClass0
+ * Signature: (Ljava/lang/ClassLoader;Ljava/lang/String;[BII)Ljava/lang/Class;
+ *
+ * The implementation of this native static method is a copy of that of
+ * the native instance method Java_java_lang_ClassLoader_defineClass0()
+ * with the implicit "this" parameter becoming the "loader" parameter.
+ *
+ * This code was cloned and modified from java_lang_reflect_Proxy
+ */
+JNIEXPORT jclass JNICALL
+Java_sun_tracing_dtrace_JVM_defineClass0(
+        JNIEnv *env, jclass ignore, jobject loader, jstring name, jbyteArray data,
+        jint offset, jint length)
+{
+    jbyte *body;
+    char *utfName;
+    jclass result = 0;
+    char buf[128];
+
+    if (data == NULL) {
+        return 0;
+    }
+
+    /* Work around 4153825. malloc crashes on Solaris when passed a
+     * negative size.
+     */
+    if (length < 0) {
+        return 0;
+    }
+
+    body = (jbyte *)malloc(length);
+
+    if (body == 0) {
+        return 0;
+    }
+
+    (*env)->GetByteArrayRegion(env, data, offset, length, body);
+
+    if ((*env)->ExceptionOccurred(env))
+        goto free_body;
+
+    if (name != NULL) {
+        int i;
+        int len = (*env)->GetStringUTFLength(env, name);
+        int unicode_len = (*env)->GetStringLength(env, name);
+        if (len >= sizeof(buf)) {
+            utfName = malloc(len + 1);
+            if (utfName == NULL) {
+                goto free_body;
+            }
+        } else {
+            utfName = buf;
+        }
+        (*env)->GetStringUTFRegion(env, name, 0, unicode_len, utfName);
+
+        // Convert '.' to '/' in the package name
+        for (i = 0; i < unicode_len; ++i) {
+            if (utfName[i] == '.') {
+                utfName[i] = '/';
+            }
+        }
+    } else {
+        utfName = NULL;
+    }
+
+    result = (*env)->DefineClass(env, utfName, loader, body, length);
+
+    if (utfName && utfName != buf)
+        free(utfName);
+
+ free_body:
+    free(body);
+    return result;
+}
+
+#ifdef __cplusplus
+}
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/native/sun/tracing/dtrace/jvm_symbols.h	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+#ifndef _JVM_SYMBOLS_H
+#define _JVM_SYMBOLS_H
+
+#include "jvm.h"
+
+typedef jint (JNICALL* GetVersion_t)(JNIEnv*);
+typedef jboolean (JNICALL *IsSupported_t)(JNIEnv*);
+typedef jlong (JNICALL* Activate_t)(
+    JNIEnv*, jint, jstring, jint, JVM_DTraceProvider*);
+typedef void (JNICALL *Dispose_t)(JNIEnv*, jlong);
+typedef jboolean (JNICALL *IsProbeEnabled_t)(JNIEnv*, jmethodID);
+
+typedef struct {
+    GetVersion_t     GetVersion;
+    IsSupported_t    IsSupported;
+    Activate_t       Activate;
+    Dispose_t        Dispose;
+    IsProbeEnabled_t IsProbeEnabled;
+} JvmSymbols;
+
+// Platform-dependent implementation.
+// Returns NULL if the symbols are not found
+extern JvmSymbols* lookupJvmSymbols();
+
+#endif // def _JVM_SYMBOLS_H
--- a/src/share/sample/vm/clr-jvm/Makefile	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/sample/vm/clr-jvm/Makefile	Fri Apr 25 09:03:20 2008 -0400
@@ -29,16 +29,16 @@
 # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #
 
-all: jinvoker.dll invoked.class invoker.exe
-
-jinvoker.dll: jinvoker.obj Makefile
-	cl /LD /o jinvoker.dll jinvoker.obj
-
-jinvoker.obj: jinvoker.cpp jinvokerExp.h Makefile
-	cl /Fojinvoker.obj /DJINVOKEREEXPORT /c jinvoker.cpp
-
-invoked.class: invoked.java Makefile
-	javac invoked.java
-
-invoker.exe: invoker.cs Makefile
-	csc /unsafe invoker.cs
+all: jinvoker.dll invoked.class invoker.exe
+
+jinvoker.dll: jinvoker.obj Makefile
+	cl /LD /o jinvoker.dll jinvoker.obj
+
+jinvoker.obj: jinvoker.cpp jinvokerExp.h Makefile
+	cl /Fojinvoker.obj /DJINVOKEREEXPORT /c jinvoker.cpp
+
+invoked.class: invoked.java Makefile
+	javac invoked.java
+
+invoker.exe: invoker.cs Makefile
+	csc /unsafe invoker.cs
--- a/src/share/sample/vm/clr-jvm/README.txt	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/sample/vm/clr-jvm/README.txt	Fri Apr 25 09:03:20 2008 -0400
@@ -1,54 +1,54 @@
-This sample provides Java "Hello World" program that is invoked
-from C# application in the same process.
-
-The problem of direct call of the JVM API from CLR applications
-by PInvoke interface is the JVM API functions do not have static
-adresses, they need to be got by JNI_CreateJavaVM() call.
-The sample contains C++ libraty that wraps JVM API calls by the
-static functions that are called from the C# application by
-PInvoke interface.
-
-The sample contains the following files:
-
-Makefile      - make file
-README.txt    - this readme
-invoked.java  - the invoked HelloWorld Java program
-invoker.cs    - C# invoker application
-jinvoker.cpp  - C++ wrapper
-jinvokerExp.h - wrapper library exports
-
-After the success making the following files are produced:
-
-invoked.class - the compiled HelloWorld class
-invoker.exe   - the executable .NET program that invokes Java
-jinvoker.dll  - the wrapper library
-
-The following environment needs to be set for the correct sample
-build and execution:
-
-INCLUDE must contain the paths to:
-  1. MS Visual C++ standard include
-  2. .NET SDK include
-  3. Java includes
-  Example: %MSDEV%/VC98/Include;%DOTNET%/Include;%JAVA_HOME%/include;%JAVA_HOME%/include/win32
-
-LIB must contain the paths to:
-  1. MS Visual C++ standard libraries
-  2. .NET SDK libraries
-  3. jvm.dll
-  Example: %MSDEV%/VC98/Lib;%DOTNET%/Lib;%JAVA_HOME%/jre/bin/client
-
-PATH must contain the paths to:
-  1. MS Visual C++ standard bin
-  2. MS Dev common bin
-  3. .NET SDK libraries
-  4. Java bin
-  5. jvm.dll
-  Example: %MSDEV%/VC98/Bin;%MSDEV%/Common/MSDev98/Bin;%DOTNET%/Lib;%JAVA_HOME%/bin;%JAVA_HOME%/jre/bin/client;%PATH%
-
-To run the sample please do:
-
-  invoker.exe invoked
-
-
---Dmitry Ryashchentsev
+This sample provides Java "Hello World" program that is invoked
+from C# application in the same process.
+
+The problem of direct call of the JVM API from CLR applications
+by PInvoke interface is the JVM API functions do not have static
+adresses, they need to be got by JNI_CreateJavaVM() call.
+The sample contains C++ libraty that wraps JVM API calls by the
+static functions that are called from the C# application by
+PInvoke interface.
+
+The sample contains the following files:
+
+Makefile      - make file
+README.txt    - this readme
+invoked.java  - the invoked HelloWorld Java program
+invoker.cs    - C# invoker application
+jinvoker.cpp  - C++ wrapper
+jinvokerExp.h - wrapper library exports
+
+After the success making the following files are produced:
+
+invoked.class - the compiled HelloWorld class
+invoker.exe   - the executable .NET program that invokes Java
+jinvoker.dll  - the wrapper library
+
+The following environment needs to be set for the correct sample
+build and execution:
+
+INCLUDE must contain the paths to:
+  1. MS Visual C++ standard include
+  2. .NET SDK include
+  3. Java includes
+  Example: %MSDEV%/VC98/Include;%DOTNET%/Include;%JAVA_HOME%/include;%JAVA_HOME%/include/win32
+
+LIB must contain the paths to:
+  1. MS Visual C++ standard libraries
+  2. .NET SDK libraries
+  3. jvm.dll
+  Example: %MSDEV%/VC98/Lib;%DOTNET%/Lib;%JAVA_HOME%/jre/bin/client
+
+PATH must contain the paths to:
+  1. MS Visual C++ standard bin
+  2. MS Dev common bin
+  3. .NET SDK libraries
+  4. Java bin
+  5. jvm.dll
+  Example: %MSDEV%/VC98/Bin;%MSDEV%/Common/MSDev98/Bin;%DOTNET%/Lib;%JAVA_HOME%/bin;%JAVA_HOME%/jre/bin/client;%PATH%
+
+To run the sample please do:
+
+  invoker.exe invoked
+
+
+--Dmitry Ryashchentsev
--- a/src/share/sample/vm/clr-jvm/invoker.cs	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/sample/vm/clr-jvm/invoker.cs	Fri Apr 25 09:03:20 2008 -0400
@@ -29,30 +29,30 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
-*/
-
+/*
+*/
+
 using System;
 using System.Runtime.InteropServices;
 
 class jinvoker{
 
     public static int Main(string[] aArgs){
-        
-        // Print Hello to show we are in CLR
-        Console.WriteLine("Hello from C#");
-        if(aArgs.Length > 0)
-            // invoke JVM
-            return InvokeMain(aArgs[0]);
-        else
-            return -1;
+        
+        // Print Hello to show we are in CLR
+        Console.WriteLine("Hello from C#");
+        if(aArgs.Length > 0)
+            // invoke JVM
+            return InvokeMain(aArgs[0]);
+        else
+            return -1;
     }
 
     // Link the JVM API functions and the wrappers
 
     [DllImport("jvm.dll")]      public unsafe static extern int  JNI_CreateJavaVM(void** ppVm, void** ppEnv, void* pArgs);
     [DllImport("jinvoker.dll")] public unsafe static extern int  MakeJavaVMInitArgs( void** ppArgs );
-    [DllImport("jinvoker.dll")] public unsafe static extern void FreeJavaVMInitArgs( void* pArgs );
+    [DllImport("jinvoker.dll")] public unsafe static extern void FreeJavaVMInitArgs( void* pArgs );
     [DllImport("jinvoker.dll")] public unsafe static extern int  FindClass( void* pEnv, String sClass, void** ppClass );
     [DllImport("jinvoker.dll")] public unsafe static extern int  GetStaticMethodID( void*  pEnv,
                                                                                     void*  pClass, 
@@ -73,7 +73,7 @@
     [DllImport("jinvoker.dll")] public unsafe static extern int DestroyJavaVM( void* pJVM );
 
 	public unsafe static int InvokeMain( String sClass ){
-	    
+	    
         void*  pJVM;    // JVM struct
         void*  pEnv;    // JVM environment
         void*  pVMArgs; // VM args
@@ -81,23 +81,23 @@
         void*  pMethod; // The executed method struct
         void*  pArgs;   // The executed method arguments struct
 
-        // Fill the pVMArgs structs
+        // Fill the pVMArgs structs
         MakeJavaVMInitArgs( &pVMArgs );
 
-        // Create JVM
+        // Create JVM
         int nRes = JNI_CreateJavaVM( &pJVM, &pEnv, pVMArgs );
         if( nRes == 0 ){
-			
-            // Find the executed method class 
+			
+            // Find the executed method class 
             if(FindClass( pEnv, sClass, &pClass) == 0 )
-				
-                // Find the executed method
+				
+                // Find the executed method
                 if( GetStaticMethodID( pEnv, pClass, "main", "([Ljava/lang/String;)V", &pMethod ) == 0 )
-					
-                    // Create empty String[] array to pass to the main()
+					
+                    // Create empty String[] array to pass to the main()
                     if( NewObjectArray( pEnv, 0, "java/lang/String", &pArgs ) == 0 ){
-
-                        // Call main()
+
+                        // Call main()
                         nRes = CallStaticVoidMethod( pEnv, pClass, pMethod, pArgs );
                         if( nRes != -1 )
                             Console.WriteLine("Result:"+nRes);
@@ -116,16 +116,16 @@
                 Console.WriteLine("can not find class:"+sClass);
                 nRes = -102;
             }
-			
-            // Destroy the JVM
+			
+            // Destroy the JVM
             DestroyJavaVM( pJVM );
 
         }else
-            Console.WriteLine("Can not create Java VM");
-
-        // Free the JVM args structs
+            Console.WriteLine("Can not create Java VM");
+
+        // Free the JVM args structs
         FreeJavaVMInitArgs(pVMArgs);
-		
+		
         return nRes;
     }
 }
--- a/src/share/sample/vm/jvm-clr/README.txt	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/sample/vm/jvm-clr/README.txt	Fri Apr 25 09:03:20 2008 -0400
@@ -42,10 +42,10 @@
   3. .NET SDK libraries
   4. Java bin
   Example: %MSDEV%/VC98/Bin;%MSDEV%/Common/MSDev98/Bin;%DOTNET%/Lib;%JAVA_HOME%/bin;%PATH%
-
-To run the sample please do:
-
-java invoker invoked.exe
-
-
---Dmitry Ryashchentsev
+
+To run the sample please do:
+
+java invoker invoked.exe
+
+
+--Dmitry Ryashchentsev
--- a/src/share/sample/vm/jvm-clr/invoked.cs	Fri Apr 25 08:58:07 2008 -0400
+++ b/src/share/sample/vm/jvm-clr/invoked.cs	Fri Apr 25 09:03:20 2008 -0400
@@ -29,17 +29,17 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
-*/
-
-
+/*
+*/
+
+
 using System;
 
 class App{
 
     public static int Main(){
-
-        // Print Hello to show we are in CLR
+
+        // Print Hello to show we are in CLR
         Console.WriteLine("Hello from C#!!!");
         return 0;
     }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/solaris/native/sun/tracing/dtrace/jvm_symbols_md.c	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+#include <dlfcn.h>
+#include <stdlib.h>
+
+#include <jvm.h>
+
+#include "jvm_symbols.h"
+
+JvmSymbols* lookupJvmSymbols() {
+    JvmSymbols* syms = (JvmSymbols*)malloc(sizeof(JvmSymbols));
+    if (syms != NULL) {
+        syms->GetVersion = (GetVersion_t)
+            dlsym(RTLD_DEFAULT, "JVM_DTraceGetVersion");
+        syms->IsSupported = (IsSupported_t)
+            dlsym(RTLD_DEFAULT, "JVM_DTraceIsSupported");
+        syms->Activate = (Activate_t)
+            dlsym(RTLD_DEFAULT, "JVM_DTraceActivate");
+        syms->Dispose = (Dispose_t)
+            dlsym(RTLD_DEFAULT, "JVM_DTraceDispose");
+        syms->IsProbeEnabled = (IsProbeEnabled_t)
+            dlsym(RTLD_DEFAULT, "JVM_DTraceIsProbeEnabled");
+
+        if ( syms->GetVersion == NULL || syms->Activate == NULL ||
+             syms->IsProbeEnabled == NULL || syms->Dispose == NULL ||
+             syms->IsSupported == NULL) {
+            free(syms);
+            syms = NULL;
+        }
+    }
+    return syms;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/windows/native/sun/tracing/dtrace/jvm_symbols_md.c	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+#include <windows.h>
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+
+#include <jvm.h>
+
+#include "jvm_symbols.h"
+
+JvmSymbols* lookupJvmSymbols() {
+    JvmSymbols* syms = (JvmSymbols*)malloc(sizeof(JvmSymbols));
+    if (syms != NULL) {
+        HINSTANCE jvm = LoadLibrary("jvm.dll");
+        if (jvm == NULL) {
+            free(syms);
+            return NULL;
+        }
+        syms->GetVersion = (GetVersion_t)
+            GetProcAddress(jvm, "JVM_DTraceGetVersion");
+        syms->IsSupported = (IsSupported_t)
+            GetProcAddress(jvm, "JVM_DTraceIsSupported");
+        syms->Activate = (Activate_t)
+            GetProcAddress(jvm, "JVM_DTraceActivate");
+        syms->Dispose = (Dispose_t)
+            GetProcAddress(jvm, "JVM_DTraceDispose");
+        syms->IsProbeEnabled = (IsProbeEnabled_t)
+            GetProcAddress(jvm, "JVM_DTraceIsProbeEnabled");
+
+        (void)FreeLibrary(jvm);
+        if ( syms->GetVersion == NULL || syms->IsSupported == NULL ||
+             syms->Activate == NULL || syms->Dispose == NULL ||
+             syms->IsProbeEnabled == NULL) {
+            free(syms);
+            syms = NULL;
+        }
+
+    }
+    return syms;
+}
--- a/test/com/sun/management/HotSpotDiagnosticMXBean/DumpHeap.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/test/com/sun/management/HotSpotDiagnosticMXBean/DumpHeap.java	Fri Apr 25 09:03:20 2008 -0400
@@ -29,14 +29,14 @@
  */
 
 import java.lang.management.*;
+import java.util.List;
 import javax.management.MBeanServer;
 import com.sun.management.HotSpotDiagnosticMXBean;
 
 public class DumpHeap {
     public static void main(String[] argv) throws Exception {
-         MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
-         HotSpotDiagnosticMXBean dm = sun.management.ManagementFactory.getDiagnosticMXBean();
+         List<HotSpotDiagnosticMXBean> list = ManagementFactory.getPlatformMXBeans(HotSpotDiagnosticMXBean.class);
          System.out.println("Dumping to file: " + argv[0] + " ....");
-         dm.dumpHeap(argv[0], true);
+         list.get(0).dumpHeap(argv[0], true);
     }
 }
--- a/test/com/sun/management/HotSpotDiagnosticMXBean/GetDiagnosticOptions.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/test/com/sun/management/HotSpotDiagnosticMXBean/GetDiagnosticOptions.java	Fri Apr 25 09:03:20 2008 -0400
@@ -41,8 +41,9 @@
         "com.sun.management:type=HotSpotDiagnostic";
 
     public static void main(String[] args) throws Exception {
-        HotSpotDiagnosticMXBean mbean =
-            sun.management.ManagementFactory.getDiagnosticMXBean();
+        List<HotSpotDiagnosticMXBean> list =
+            ManagementFactory.getPlatformMXBeans(HotSpotDiagnosticMXBean.class);
+        HotSpotDiagnosticMXBean mbean = list.get(0);
         checkDiagnosticOptions(mbean);
 
         MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
--- a/test/com/sun/management/HotSpotDiagnosticMXBean/GetVMOption.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/test/com/sun/management/HotSpotDiagnosticMXBean/GetVMOption.java	Fri Apr 25 09:03:20 2008 -0400
@@ -34,6 +34,7 @@
 import com.sun.management.VMOption;
 import com.sun.management.VMOption.Origin;
 import java.lang.management.ManagementFactory;
+import java.util.List;
 import javax.management.MBeanServer;
 
 public class GetVMOption {
@@ -44,8 +45,9 @@
         "com.sun.management:type=HotSpotDiagnostic";
 
     public static void main(String[] args) throws Exception {
-        HotSpotDiagnosticMXBean mbean =
-            sun.management.ManagementFactory.getDiagnosticMXBean();
+        List<HotSpotDiagnosticMXBean> list =
+            ManagementFactory.getPlatformMXBeans(HotSpotDiagnosticMXBean.class);
+        HotSpotDiagnosticMXBean mbean = list.get(0);
         checkVMOption(mbean);
 
         MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
--- a/test/com/sun/management/HotSpotDiagnosticMXBean/SetVMOption.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/test/com/sun/management/HotSpotDiagnosticMXBean/SetVMOption.java	Fri Apr 25 09:03:20 2008 -0400
@@ -31,11 +31,11 @@
  * @run main/othervm -XX:+PrintGCDetails SetVMOption
  */
 
+import java.lang.management.ManagementFactory;
 import java.util.*;
 import com.sun.management.HotSpotDiagnosticMXBean;
 import com.sun.management.VMOption;
 import com.sun.management.VMOption.Origin;
-import sun.management.ManagementFactory;
 import sun.misc.Version;
 
 public class SetVMOption {
@@ -44,10 +44,11 @@
     private static String BAD_VALUE = "yes";
     private static String NEW_VALUE = "false";
     private static String MANAGEMENT_SERVER = "ManagementServer";
-    private static HotSpotDiagnosticMXBean mbean =
-        ManagementFactory.getDiagnosticMXBean();
+    private static HotSpotDiagnosticMXBean mbean;
 
     public static void main(String[] args) throws Exception {
+        List<HotSpotDiagnosticMXBean> list =
+            ManagementFactory.getPlatformMXBeans(HotSpotDiagnosticMXBean.class);
 
         // The following test is transitional only and should be removed
         // once build 52 is promoted.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/com/sun/security/auth/login/ConfigFile/IllegalURL.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6689000
+ * @summary Changes in 6675606 causing regression test failures on windows-i586
+ */
+
+import com.sun.security.auth.login.*;
+import java.io.*;
+import java.net.URL;
+
+public class IllegalURL {
+    public static void main(String[] args) throws Exception {
+        FileOutputStream fos = new FileOutputStream("x.conf");
+        fos.close();
+        use("file:" + System.getProperty("user.dir") + "/x.conf");
+        use("file:x.conf");
+        System.out.println("Test passed");
+    }
+
+    static void use(String f) throws Exception {
+        System.out.println("Testing " + f  + "...");
+        System.setProperty("java.security.auth.login.config", f);
+        try {
+            new FileInputStream(new URL(f).getFile().replace('/', File.separatorChar));
+        } catch (Exception e) {
+            System.out.println("Even old implementation does not support it. Ignored.");
+            return;
+        }
+        new ConfigFile();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/com/sun/tracing/BasicFunctionality.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,146 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/**
+ * @test
+ * @bug 6537506
+ * @summary Basic unit test for tracing framework
+ */
+
+import com.sun.tracing.*;
+import java.lang.reflect.Method;
+
+@ProviderName("NamedProvider")
+interface BasicProvider extends Provider {
+    void plainProbe();
+    void probeWithArgs(int a, float f, String s, Long l);
+    @ProbeName("namedProbe") void probeWithName();
+    void overloadedProbe();
+    void overloadedProbe(int i);
+}
+
+interface InvalidProvider extends Provider {
+    int nonVoidProbe();
+}
+
+public class BasicFunctionality {
+
+    public static ProviderFactory factory;
+    public static BasicProvider bp;
+
+    public static void main(String[] args) throws Exception {
+
+        factory = ProviderFactory.getDefaultFactory();
+        if (factory != null) {
+            bp = factory.createProvider(BasicProvider.class);
+        }
+
+        testProviderFactory();
+        testProbe();
+        testProvider();
+    }
+
+    static void fail(String s) throws Exception {
+        throw new Exception(s);
+    }
+
+    static void testProviderFactory() throws Exception {
+        if (factory == null) {
+            fail("ProviderFactory.getDefaultFactory: Did not create factory");
+        }
+        if (bp == null) {
+            fail("ProviderFactory.createProvider: Did not create provider");
+        }
+        try {
+            factory.createProvider(null);
+            fail("ProviderFactory.createProvider: Did not throw NPE for null");
+        } catch (NullPointerException e) {}
+
+       try {
+           factory.createProvider(InvalidProvider.class);
+           fail("Factory.createProvider: Should error with non-void probes");
+       } catch (IllegalArgumentException e) {}
+    }
+
+    public static void testProvider() throws Exception {
+
+       // These just shouldn't throw any exeptions:
+       bp.plainProbe();
+       bp.probeWithArgs(42, (float)3.14, "spam", new Long(2L));
+       bp.probeWithArgs(42, (float)3.14, null, null);
+       bp.probeWithName();
+       bp.overloadedProbe();
+       bp.overloadedProbe(42);
+
+       Method m = BasicProvider.class.getMethod("plainProbe");
+       Probe p = bp.getProbe(m);
+       if (p == null) {
+           fail("Provider.getProbe: Did not return probe");
+       }
+
+       Method m2 = BasicFunctionality.class.getMethod("testProvider");
+       p = bp.getProbe(m2);
+       if (p != null) {
+           fail("Provider.getProbe: Got probe with invalid spec");
+       }
+
+       bp.dispose();
+       // These just shouldn't throw any exeptions:
+       bp.plainProbe();
+       bp.probeWithArgs(42, (float)3.14, "spam", new Long(2L));
+       bp.probeWithArgs(42, (float)3.14, null, null);
+       bp.probeWithName();
+       bp.overloadedProbe();
+       bp.overloadedProbe(42);
+
+       if (bp.getProbe(m) != null) {
+           fail("Provider.getProbe: Should return null after dispose()");
+       }
+
+       bp.dispose(); // just to make sure nothing bad happens
+    }
+
+    static void testProbe() throws Exception {
+       Method m = BasicProvider.class.getMethod("plainProbe");
+       Probe p = bp.getProbe(m);
+       p.isEnabled(); // just make sure it doesn't do anything bad
+       p.trigger();
+
+       try {
+         p.trigger(0);
+         fail("Probe.trigger: too many arguments not caught");
+       } catch (IllegalArgumentException e) {}
+
+       p = bp.getProbe(BasicProvider.class.getMethod(
+           "probeWithArgs", int.class, float.class, String.class, Long.class));
+       try {
+         p.trigger();
+         fail("Probe.trigger: too few arguments not caught");
+       } catch (IllegalArgumentException e) {}
+
+       try {
+         p.trigger((float)3.14, (float)3.14, "", new Long(0L));
+         fail("Probe.trigger: wrong type primitive arguments not caught");
+       } catch (IllegalArgumentException e) {}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/java/lang/management/ManagementFactory/GetPlatformMXBeans.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,180 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug     6610094
+ * @summary Basic unit test of ManagementFactory.getPlatformMXBeans()
+ *          and also PlatformManagedObject.getObjectName()
+ * @author  Mandy Chung
+ *
+ * @run main GetPlatformMXBeans
+ */
+
+import java.lang.management.*;
+import static java.lang.management.ManagementFactory.*;
+import java.util.*;
+import javax.management.*;
+
+public class GetPlatformMXBeans {
+    private static MBeanServer platformMBeanServer =
+            getPlatformMBeanServer();
+    public static void main(String[] argv) throws Exception {
+        checkPlatformMXBean(getClassLoadingMXBean(),
+                            ClassLoadingMXBean.class,
+                            CLASS_LOADING_MXBEAN_NAME);
+        checkPlatformMXBean(getCompilationMXBean(),
+                            CompilationMXBean.class,
+                            COMPILATION_MXBEAN_NAME);
+        checkPlatformMXBean(getMemoryMXBean(),
+                            MemoryMXBean.class,
+                            MEMORY_MXBEAN_NAME);
+        checkPlatformMXBean(getOperatingSystemMXBean(),
+                            OperatingSystemMXBean.class,
+                            OPERATING_SYSTEM_MXBEAN_NAME);
+        checkPlatformMXBean(getRuntimeMXBean(),
+                            RuntimeMXBean.class,
+                            RUNTIME_MXBEAN_NAME);
+        checkPlatformMXBean(getThreadMXBean(),
+                            ThreadMXBean.class,
+                            THREAD_MXBEAN_NAME);
+        checkGarbageCollectorMXBeans(getGarbageCollectorMXBeans());
+        checkMemoryManagerMXBeans(getMemoryManagerMXBeans());
+        checkMemoryPoolMXBeans(getMemoryPoolMXBeans());
+    }
+
+    private static <T extends PlatformManagedObject>
+        void checkPlatformMXBean(T obj, Class<T> mxbeanInterface,
+                                 String mxbeanName) throws Exception
+    {
+        int numElements = (obj != null ? 1 : 0);
+        // verify local list of platform MXBeans
+        List<? extends PlatformManagedObject> mxbeans =
+            getPlatformMXBeans(mxbeanInterface);
+        if (mxbeans.size() != numElements) {
+            throw new RuntimeException("Unmatched number of platform MXBeans "
+                + mxbeans.size() + ". Expected = " + numElements);
+        }
+
+        if (obj != null) {
+            PlatformManagedObject pmo = mxbeans.get(0);
+            if (obj != pmo) {
+                throw new RuntimeException("The list returned by getPlatformMXBeans"
+                    + " not matched");
+            }
+            ObjectName on = new ObjectName(mxbeanName);
+            if (!on.equals(pmo.getObjectName())) {
+                throw new RuntimeException("Unmatched ObjectName " +
+                    pmo.getObjectName() + " Expected = " + on);
+            }
+        }
+
+        // verify platform MXBeans in the platform MBeanServer
+        mxbeans = getPlatformMXBeans(platformMBeanServer, mxbeanInterface);
+        if (mxbeans.size() != numElements) {
+            throw new RuntimeException("Unmatched number of platform MXBeans "
+                + mxbeans.size() + ". Expected = " + numElements);
+        }
+    }
+
+    private static void checkMemoryManagerMXBeans(List<MemoryManagerMXBean> objs)
+        throws Exception
+    {
+        checkPlatformMXBeans(objs, MemoryManagerMXBean.class);
+        for (MemoryManagerMXBean mxbean : objs) {
+            String domainAndType;
+            if (mxbean instanceof GarbageCollectorMXBean) {
+                domainAndType = GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE;
+            } else {
+                domainAndType = MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE;
+            }
+            ObjectName on = new ObjectName(domainAndType +
+                                           ",name=" + mxbean.getName());
+            if (!on.equals(mxbean.getObjectName())) {
+                throw new RuntimeException("Unmatched ObjectName " +
+                    mxbean.getObjectName() + " Expected = " + on);
+            }
+        }
+    }
+    private static void checkMemoryPoolMXBeans(List<MemoryPoolMXBean> objs)
+        throws Exception
+    {
+        checkPlatformMXBeans(objs, MemoryPoolMXBean.class);
+        for (MemoryPoolMXBean mxbean : objs) {
+            ObjectName on = new ObjectName(MEMORY_POOL_MXBEAN_DOMAIN_TYPE +
+                                           ",name=" + mxbean.getName());
+            if (!on.equals(mxbean.getObjectName())) {
+                throw new RuntimeException("Unmatched ObjectName " +
+                    mxbean.getObjectName() + " Expected = " + on);
+            }
+        }
+    }
+
+    private static void checkGarbageCollectorMXBeans(List<GarbageCollectorMXBean> objs)
+        throws Exception
+    {
+        checkPlatformMXBeans(objs, GarbageCollectorMXBean.class);
+        for (GarbageCollectorMXBean mxbean : objs) {
+            ObjectName on = new ObjectName(GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE +
+                                           ",name=" + mxbean.getName());
+            if (!on.equals(mxbean.getObjectName())) {
+                throw new RuntimeException("Unmatched ObjectName " +
+                    mxbean.getObjectName() + " Expected = " + on);
+            }
+        }
+    }
+
+    private static <T extends PlatformManagedObject>
+        void checkPlatformMXBeans(List<T> objs, Class<T> mxbeanInterface)
+            throws Exception
+    {
+        // verify local list of platform MXBeans
+        List<? extends PlatformManagedObject> mxbeans =
+            getPlatformMXBeans(mxbeanInterface);
+        if (objs.size() != mxbeans.size()) {
+            throw new RuntimeException("Unmatched number of platform MXBeans "
+                + mxbeans.size() + ". Expected = " + objs.size());
+        }
+        List<T> list = new ArrayList<T>(objs);
+        for (PlatformManagedObject pmo : mxbeans) {
+            if (list.contains(pmo)) {
+                list.remove(pmo);
+            } else {
+                throw new RuntimeException(pmo +
+                    " not in the platform MXBean list");
+            }
+        }
+
+        if (!list.isEmpty()) {
+            throw new RuntimeException("The list returned by getPlatformMXBeans"
+                + " not matched");
+        }
+
+        // verify platform MXBeans in the platform MBeanServer
+        mxbeans = getPlatformMXBeans(platformMBeanServer, mxbeanInterface);
+        if (objs.size() != mxbeans.size()) {
+            throw new RuntimeException("Unmatched number of platform MXBeans "
+                + mxbeans.size() + ". Expected = " + objs.size());
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/java/lang/management/OperatingSystemMXBean/PlatformMXBeanTest.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug     6610094
+ * @summary Test the OperatingSystemMXBean instance returned by
+ *          ManagementFactory.getPlatformMXBeans()
+ * @author  Mandy Chung
+ *
+ * @run main PlatformMXBeanTest
+ */
+
+import java.lang.management.*;
+import java.util.List;
+
+public class PlatformMXBeanTest {
+    public static void main(String[] argv) throws Exception {
+        OperatingSystemMXBean osMBean = getOSPlatformMXBean(OperatingSystemMXBean.class);
+
+        // There should have only one single MXBean for the OS MXBean interfaces:
+        //   java.lang.management.OperatingSystemMXBean
+        //   com.sun.management.OperatingSystemMXBean
+        //   com.sun.management.UnixOperatingSystemMXBean
+        if (osMBean != getOSPlatformMXBean(com.sun.management.OperatingSystemMXBean.class)) {
+            throw new RuntimeException(
+                "Invalid com.sun.management.OperatingSystemMXBean instance");
+        }
+
+        if (!System.getProperty("os.name").startsWith("Windows") &&
+                osMBean != getOSPlatformMXBean(com.sun.management.UnixOperatingSystemMXBean.class)) {
+            throw new RuntimeException(
+                "Invalid com.sun.management.UnixOperatingSystemMXBean instance");
+        }
+    }
+
+    private static <T extends OperatingSystemMXBean>
+            T getOSPlatformMXBean(Class<T> c) {
+        List<T> result = ManagementFactory.getPlatformMXBeans(c);
+        if (result.isEmpty()) {
+            return null;
+        } else if (result.size() == 1) {
+            return result.get(0);
+        } else {
+            throw new RuntimeException(c.getName() + " has " +
+                result.size() + " number of instances");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/java/net/CookieHandler/B6644726.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,189 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6644726
+ * @summary Cookie management issues
+ */
+
+import java.net.*;
+import java.util.*;
+
+public class B6644726 {
+    public static void main(String[] args) throws Exception {
+        testCookieStore();
+    }
+
+    private static void testCookieStore() throws Exception {
+        CookieManager cm = new CookieManager();
+        CookieStore cs = cm.getCookieStore();
+        URI uri = new URI("http://www.s1.sun.com/dir/foo/doc.html");
+        URI suri = new URI("https://www.s1.sun.com/dir/foo/index.html");
+        cm.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
+
+        ArrayList<String> lst = new ArrayList<String>();
+        // Let's test the default path
+        lst.add("myCookie1=foo");
+        // Then some alternate expires format
+        lst.add("myCookie2=bar; path=/dir; expires=Tue, 19 Aug 2025 16:00:00 GMT");
+        lst.add("myCookie3=test; path=/dir; expires=Tue Aug 19 2025 16:00:00 GMT-0100");
+        // Then Netscape draft cookies and domains
+        lst.add("myCookie4=test; domain=.sun.com; path=/dir/foo");
+        HashMap<String, List<String>> map = new HashMap<String, List<String>>();
+        map.put("Set-Cookie", lst);
+        cm.put(uri, map);
+        map.clear();
+        lst.clear();
+        // Test for secure tag
+        lst.add("myCookie5=test; secure");
+        // Test for passing cookies between http and https
+        map.put("Set-Cookie", lst);
+        cm.put(suri, map);
+
+        List<HttpCookie> cookies = cs.getCookies();
+        // There should be 5 cookies if all dates parsed correctly
+        if (cookies.size() != 5) {
+            fail("Should have 5 cookies. Got only "+ cookies.size() + ", expires probably didn't parse correctly");
+        }
+        // Check Path for first Cookie
+        for (HttpCookie c : cookies) {
+            if (c.getName().equals("myCookie1")) {
+                if (!"/dir/foo/".equals(c.getPath())) {
+                    fail("Default path for myCookie1 is " + c.getPath());
+                }
+            }
+        }
+
+        HashMap<String, List<String>> emptyMap = new HashMap<String, List<String>>();
+        // We should get 1 Cookie: MyCookie4, because of the domain
+        Map<String, List<String>>m = cm.get(new URI("http://www.s2.sun.com/dir/foo/doc2.html"),
+                emptyMap);
+        List<String> clst = m.get("Cookie");
+        if (clst.size() != 1) {
+            fail("We should have only 1 cookie, not " + clst.size());
+        } else {
+            if (!clst.get(0).startsWith("myCookie4")) {
+                fail("The cookie should be myCookie4, not " + clst.get(0));
+            }
+        }
+        // We should get 4 cookies for non secure URI, and 5 for the secure one
+        m = cm.get(suri, emptyMap);
+        clst = m.get("Cookie");
+        if (clst.size() != 5) {
+            fail("Cookies didn't cross from http to https. Got only " + clst.size());
+        }
+
+        m = cm.get(uri, emptyMap);
+        clst = m.get("Cookie");
+        if (clst.size() != 4) {
+            fail("We should have gotten only 4 cookies over http (non secure), got " +
+                    clst.size());
+        }
+        if (isIn(clst, "myCookie5=")) {
+            // myCookie5 (the secure one) shouldn't be here
+            fail("Got the secure cookie over a non secure link");
+        }
+
+        // Let's check that empty path is treated correctly
+        uri = new URI("http://www.sun.com/");
+        lst.clear();
+        lst.add("myCookie6=foo");
+        map.clear();
+        map.put("Set-Cookie", lst);
+        cm.put(uri, map);
+        uri = new URI("http://www.sun.com");
+        m = cm.get(uri, emptyMap);
+        clst = m.get("Cookie");
+        if (clst.size() != 1) {
+            fail("Missing a cookie when using an empty path");
+        }
+
+        // And now, the other way around:
+
+        uri = new URI("http://www.sun.com");
+        lst.clear();
+        lst.add("myCookie7=foo");
+        map.clear();
+        map.put("Set-Cookie", lst);
+        cm.put(uri, map);
+        uri = new URI("http://www.sun.com/");
+        m = cm.get(uri, emptyMap);
+        clst = m.get("Cookie");
+        if (!isIn(clst, "myCookie7=")) {
+            fail("Missing a cookie when using an empty path");
+        }
+
+        // Let's make sure the 'Port' optional attributes is enforced
+
+        lst.clear();
+        lst.add("myCookie8=porttest; port");
+        lst.add("myCookie9=porttest; port=\"80,8000\"");
+        lst.add("myCookie10=porttest; port=\"8000\"");
+        map.clear();
+        map.put("Set-Cookie", lst);
+        uri = new URI("http://www.sun.com/");
+        cm.put(uri, map);
+
+        // myCookie10 should have been rejected
+        cookies = cs.getCookies();
+        for (HttpCookie c : cookies) {
+            if (c.getName().equals("myCookie10")) {
+                fail("A cookie with an invalid port list was accepted");
+            }
+        }
+
+        uri = new URI("http://www.sun.com:80/");
+        m = cm.get(uri, emptyMap);
+        clst = m.get("Cookie");
+        // We should find both myCookie8 and myCookie9 but not myCookie10
+        if (!isIn(clst, "myCookie8=") || !isIn(clst, "myCookie9=")) {
+            fail("Missing a cookie on port 80");
+        }
+        uri = new URI("http://www.sun.com:8000/");
+        m = cm.get(uri, emptyMap);
+        clst = m.get("Cookie");
+        // We should find only myCookie9
+        if (!isIn(clst, "myCookie9=")) {
+            fail("Missing a cookie on port 80");
+        }
+        if (isIn(clst, "myCookie8=")) {
+            fail("A cookie with an invalid port list was returned");
+        }
+    }
+
+    private static boolean isIn(List<String> lst, String cookie) {
+        if (lst == null || lst.isEmpty()) {
+            return false;
+        }
+        for (String s : lst) {
+            if (s.startsWith(cookie))
+                return true;
+        }
+        return false;
+    }
+
+    private static void fail(String msg) throws Exception {
+        throw new RuntimeException(msg);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/java/net/Inet6Address/B6558853.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/**
+ * @test
+ * @bug 6558853
+ * @summary  getHostAddress() on connections using IPv6 link-local addrs should have zone id
+ */
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.*;
+import java.util.Enumeration;
+
+public class B6558853 implements Runnable {
+    private InetAddress addr = null;
+    private int port = 0;
+
+    public static void main(String[] args) throws Exception {
+        ServerSocket ss = new ServerSocket(0);
+        int port = ss.getLocalPort();
+        Enumeration<NetworkInterface> l = NetworkInterface.getNetworkInterfaces();
+        InetAddress dest = null;
+        while (l.hasMoreElements() && dest == null) {
+            NetworkInterface nif = l.nextElement();
+            for (InterfaceAddress a : nif.getInterfaceAddresses()) {
+                if (a.getAddress() instanceof Inet6Address) {
+                    Inet6Address a6 = (Inet6Address) a.getAddress();
+                    if (a6.isLinkLocalAddress()) {
+                        dest = a6;
+                    }
+                    break;
+                }
+            }
+        }
+        if (dest != null) {
+            B6558853 test = new B6558853(dest, port);
+            Thread thread = new Thread(test);
+            thread.start();
+            Socket s = ss.accept();
+            InetAddress a = s.getInetAddress();
+            OutputStream out = s.getOutputStream();
+            out.write(1);
+            out.close();
+            if (!(a instanceof Inet6Address) || a.getHostAddress().indexOf("%") == -1) {
+                // No Scope found in the address String
+                throw new RuntimeException("Wrong address: " + a.getHostAddress());
+            }
+        }
+    }
+
+    public B6558853(InetAddress a, int port) {
+        addr = a;
+        this.port = port;
+    }
+
+    public void run() {
+        try {
+            Socket s = new Socket(addr, port);
+            InputStream in = s.getInputStream();
+            int i = in.read();
+            in.close();
+        } catch (IOException iOException) {
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/management/query/CustomQueryTest.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,116 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6692027
+ * @summary Check that custom subclasses of QueryEval can be serialized.
+ * @author Eamonn McManus
+ */
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.lang.management.ManagementFactory;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
+import javax.management.MBeanServer;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+import javax.management.QueryEval;
+import javax.management.QueryExp;
+
+public class CustomQueryTest {
+    public static interface CountMBean {
+        public int getCount();
+        public void increment();
+    }
+
+    public static class Count implements CountMBean {
+        private AtomicInteger count = new AtomicInteger();
+
+        public int getCount() {
+            return count.get();
+        }
+
+        public void increment() {
+            count.incrementAndGet();
+        }
+
+    }
+
+    public static final ObjectName countName;
+    static {
+        try {
+            countName = new ObjectName("d:type=Count");
+        } catch (MalformedObjectNameException e) {
+            throw new AssertionError(e);
+        }
+    }
+
+    /* A query that calls the increment method of the Count MBean every time
+     * it is evaluated.  If there is no ObjectName filter, the query will be
+     * evaluated for every MBean in the MBean Server, so the count will be
+     * incremented by the number of MBeans.
+     */
+    public static class IncrQuery extends QueryEval implements QueryExp {
+        public boolean apply(ObjectName name) {
+            try {
+                getMBeanServer().invoke(countName, "increment", null, null);
+                return true;
+            } catch (Throwable t) {
+                t.printStackTrace();
+                System.exit(1);
+                throw new AssertionError(); // not reached
+            }
+        }
+    }
+
+    public static void main(String[] args) throws Exception {
+        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+        mbs.registerMBean(new Count(), countName);
+        int mbeanCount = mbs.getMBeanCount();
+        QueryExp query = new IncrQuery();
+        Set<ObjectName> names = mbs.queryNames(null, query);
+        assertEquals(mbeanCount, names.size());
+        assertEquals(mbeanCount, mbs.getAttribute(countName, "Count"));
+        ByteArrayOutputStream bout = new ByteArrayOutputStream();
+        ObjectOutputStream oout = new ObjectOutputStream(bout);
+        oout.writeObject(query);
+        oout.close();
+        ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
+        ObjectInputStream oin = new ObjectInputStream(bin);
+        query = (QueryExp) oin.readObject();
+        names = mbs.queryNames(null, query);
+        assertEquals(mbeanCount * 2, mbs.getAttribute(countName, "Count"));
+    }
+
+    private static void assertEquals(Object expected, Object actual)
+            throws Exception {
+        if (!expected.equals(actual)) {
+            String failure = "FAILED: expected " + expected + ", got " + actual;
+            throw new Exception(failure);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/javax/management/query/QueryNotifFilterTest.java	Fri Apr 25 09:03:20 2008 -0400
@@ -0,0 +1,347 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test QueryNotifFilterTest
+ * @bug 6610917
+ * @summary Test the QueryNotificationFilter class
+ * @author Eamonn McManus
+ */
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import javax.management.Attribute;
+import javax.management.AttributeChangeNotification;
+import javax.management.MBeanAttributeInfo;
+import javax.management.MBeanInfo;
+import javax.management.MBeanServer;
+import javax.management.MalformedObjectNameException;
+import javax.management.Notification;
+import javax.management.NotificationFilter;
+import javax.management.ObjectInstance;
+import javax.management.ObjectName;
+import javax.management.Query;
+import javax.management.QueryEval;
+import javax.management.QueryExp;
+import javax.management.QueryNotificationFilter;
+
+public class QueryNotifFilterTest {
+    private static class Case {
+        final Notification notif;
+        final QueryExp query;
+        final boolean expect;
+        final Class<? extends Notification> notifClass;
+        Case(Notification notif, String query, boolean expect) {
+            this(notif, query, notif.getClass(), expect);
+        }
+        Case(Notification notif, String query,
+                Class<? extends Notification> notifClass, boolean expect) {
+            this(notif, Query.fromString(query), notifClass, expect);
+        }
+        Case(Notification notif, QueryExp query, boolean expect) {
+            this(notif, query, notif.getClass(), expect);
+        }
+        Case(Notification notif, QueryExp query,
+                Class<? extends Notification> notifClass, boolean expect) {
+            this.notif = notif;
+            this.query = query;
+            this.expect = expect;
+            this.notifClass = notifClass;
+        }
+    }
+
+    /* In principle users can create their own implementations of QueryExp
+     * and use them with QueryNotificationFilter.  If they do so, then
+     * they can call any MBeanServer method.  Not all of those methods
+     * will work with the special MBeanServer we concoct to analyze a
+     * Notification, but some will, including some that are not called
+     * by the standard queries.  So we check each of those cases too.
+     */
+    private static class ExoticCase {
+        final Notification trueNotif;
+        final Notification falseNotif;
+        final QueryExp query;
+        ExoticCase(Notification trueNotif, Notification falseNotif, QueryExp query) {
+            this.trueNotif = trueNotif;
+            this.falseNotif = falseNotif;
+            this.query = query;
+        }
+    }
+
+    private static abstract class ExoticQuery
+            extends QueryEval implements QueryExp {
+        private final String queryString;
+        ExoticQuery(String queryString) {
+            this.queryString = queryString;
+        }
+        abstract boolean apply(MBeanServer mbs, ObjectName name) throws Exception;
+        @Override
+        public boolean apply(ObjectName name) {
+            try {
+                return apply(getMBeanServer(), name);
+            } catch (Exception e) {
+                e.printStackTrace(System.out);
+                return false;
+            }
+        }
+        @Override
+        public String toString() {
+            return queryString;
+        }
+    }
+
+    private static ObjectName makeObjectName(String s) {
+        try {
+            return new ObjectName(s);
+        } catch (MalformedObjectNameException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    public static class CustomNotification extends Notification {
+        public CustomNotification(String type, Object source, long seqNo) {
+            super(type, source, seqNo);
+        }
+
+        public String getName() {
+            return "claude";
+        }
+
+        public boolean isInteresting() {
+            return true;
+        }
+    }
+
+    private static final Notification simpleNotif =
+            new Notification("mytype", "source", 0L);
+    private static final Notification attrChangeNotif =
+            new AttributeChangeNotification(
+                    "x", 0L, 0L, "msg", "AttrName", "int", 2, 3);
+    private static final ObjectName testObjectName = makeObjectName("a:b=c");
+    private static final Notification sourcedNotif =
+            new Notification("mytype", testObjectName, 0L);
+    private static final Notification customNotif =
+            new CustomNotification("mytype", testObjectName, 0L);
+
+    private static final Case[] testCases = {
+        new Case(simpleNotif, "Type = 'mytype'", true),
+        new Case(simpleNotif, "Type = 'mytype'",
+                Notification.class, true),
+        new Case(simpleNotif, "Type = 'mytype'",
+                AttributeChangeNotification.class, false),
+        new Case(simpleNotif, "Type != 'mytype'", false),
+        new Case(simpleNotif, "Type = 'somethingelse'", false),
+        new Case(attrChangeNotif, "AttributeName = 'AttrName'", true),
+        new Case(attrChangeNotif,
+                "instanceof 'javax.management.AttributeChangeNotification'",
+                true),
+        new Case(attrChangeNotif,
+                "instanceof 'javax.management.Notification'",
+                true),
+        new Case(attrChangeNotif,
+                "instanceof 'javax.management.relation.MBeanServerNotification'",
+                false),
+        new Case(attrChangeNotif,
+                "class = 'javax.management.AttributeChangeNotification'",
+                true),
+        new Case(attrChangeNotif,
+                "javax.management.AttributeChangeNotification#AttributeName = 'AttrName'",
+                true),
+        new Case(sourcedNotif,
+                testObjectName,
+                true),
+        new Case(sourcedNotif,
+                makeObjectName("a*:b=*"),
+                true),
+        new Case(sourcedNotif,
+                makeObjectName("a*:c=*"),
+                false),
+        new Case(customNotif, "Name = 'claude'", true),
+        new Case(customNotif, "Name = 'tiddly'", false),
+        new Case(customNotif, "Interesting = true", true),
+        new Case(customNotif, "Interesting = false", false),
+    };
+
+    private static final ExoticCase[] exoticTestCases = {
+        new ExoticCase(
+                simpleNotif, new Notification("notmytype", "source", 0L),
+                new ExoticQuery("getAttributes") {
+                    boolean apply(MBeanServer mbs, ObjectName name)
+                            throws Exception {
+                        List<Attribute> attrs = mbs.getAttributes(
+                                name, new String[] {"Type", "Source"}).asList();
+                        return (attrs.get(0).equals(new Attribute("Type", "mytype")) &&
+                                attrs.get(1).equals(new Attribute("Source", "source")));
+                    }
+                }),
+        new ExoticCase(
+                new Notification("mytype", "source", 0L) {},
+                simpleNotif,
+                new ExoticQuery("getClassLoaderFor") {
+                    boolean apply(MBeanServer mbs, ObjectName name)
+                            throws Exception {
+                        return (mbs.getClassLoaderFor(name) ==
+                                this.getClass().getClassLoader());
+                    }
+                }),
+        new ExoticCase(
+                sourcedNotif, simpleNotif,
+                new ExoticQuery("getDomains") {
+                    boolean apply(MBeanServer mbs, ObjectName name)
+                            throws Exception {
+                        return Arrays.equals(mbs.getDomains(),
+                                new String[] {testObjectName.getDomain()});
+                    }
+                }),
+        new ExoticCase(
+                simpleNotif, attrChangeNotif,
+                new ExoticQuery("getMBeanInfo") {
+                    boolean apply(MBeanServer mbs, ObjectName name)
+                            throws Exception {
+                        MBeanInfo mbi = mbs.getMBeanInfo(name);
+                        // If we ever add a constructor to Notification then
+                        // we will have to change the 4 below.
+                        if (mbi.getOperations().length > 0 ||
+                                mbi.getConstructors().length != 4 ||
+                                mbi.getNotifications().length > 0)
+                            return false;
+                        Set<String> expect = new HashSet<String>(
+                            Arrays.asList(
+                                "Class", "Message", "SequenceNumber", "Source",
+                                "TimeStamp", "Type", "UserData"));
+                        Set<String> actual = new HashSet<String>();
+                        for (MBeanAttributeInfo mbai : mbi.getAttributes())
+                            actual.add(mbai.getName());
+                        return actual.equals(expect);
+                    }
+                }),
+        new ExoticCase(
+                simpleNotif, attrChangeNotif,
+                new ExoticQuery("getObjectInstance") {
+                    boolean apply(MBeanServer mbs, ObjectName name)
+                            throws Exception {
+                        ObjectInstance oi = mbs.getObjectInstance(name);
+                        return oi.getClassName().equals(Notification.class.getName());
+                    }
+                }),
+        new ExoticCase(
+                sourcedNotif, simpleNotif,
+                new ExoticQuery("queryNames") {
+                    boolean apply(MBeanServer mbs, ObjectName name)
+                            throws Exception {
+                        Set<ObjectName> names = mbs.queryNames(null,
+                                Query.eq(Query.attr("Type"), Query.value("mytype")));
+                        return names.equals(Collections.singleton(testObjectName));
+                    }
+                }),
+        new ExoticCase(
+                sourcedNotif, simpleNotif,
+                new ExoticQuery("queryMBeans") {
+                    boolean apply(MBeanServer mbs, ObjectName name)
+                            throws Exception {
+                        Set<ObjectInstance> insts = mbs.queryMBeans(null,
+                                Query.eq(Query.attr("Type"), Query.value("mytype")));
+                        if (insts.size() != 1)
+                            return false;
+                        ObjectInstance inst = insts.iterator().next();
+                        return (inst.getObjectName().equals(testObjectName) &&
+                                inst.getClassName().equals(Notification.class.getName()));
+                    }
+                }),
+    };
+
+    private static enum Test {
+        QUERY_EXP("query"), STRING("string"), STRING_PLUS_CLASS("string with class");
+        private final String name;
+        Test(String name) {
+            this.name = name;
+        }
+        @Override
+        public String toString() {
+            return name;
+        }
+    }
+
+    public static void main(String[] args) throws Exception {
+        boolean allok = true;
+        for (Case testCase : testCases) {
+            for (Test test : Test.values()) {
+                QueryNotificationFilter nf;
+                String queryString;
+                switch (test) {
+                case QUERY_EXP: {
+                    QueryExp inst = Query.isInstanceOf(
+                            Query.value(testCase.notifClass.getName()));
+                    QueryExp and = Query.and(inst, testCase.query);
+                    queryString = Query.toString(and);
+                    nf = new QueryNotificationFilter(and);
+                    break;
+                }
+                case STRING: {
+                    String s = "instanceof '" + testCase.notifClass.getName() + "'";
+                    queryString = s + " and " + Query.toString(testCase.query);
+                    nf = new QueryNotificationFilter(queryString);
+                    break;
+                }
+                case STRING_PLUS_CLASS:
+                    queryString = null;
+                    nf = new QueryNotificationFilter(
+                            testCase.notifClass, Query.toString(testCase.query));
+                    break;
+                default:
+                    throw new AssertionError();
+                }
+                boolean accept = nf.isNotificationEnabled(testCase.notif);
+                if (queryString != null) {
+                    queryString = Query.toString(Query.fromString(queryString));
+                    if (!queryString.equals(Query.toString(nf.getQuery()))) {
+                        System.out.println("FAIL: query string mismatch: expected " +
+                                "\"" + queryString + "\", got \"" +
+                                Query.toString(nf.getQuery()));
+                        allok = false;
+                    }
+                }
+                boolean ok = (accept == testCase.expect);
+                System.out.println((ok ? "pass" : "FAIL") + ": " +
+                        testCase.query + " (" + test + ")");
+                allok &= ok;
+            }
+        }
+        for (ExoticCase testCase : exoticTestCases) {
+            NotificationFilter nf = new QueryNotificationFilter(testCase.query);
+            for (boolean expect : new boolean[] {true, false}) {
+                Notification n = expect ? testCase.trueNotif : testCase.falseNotif;
+                boolean accept = nf.isNotificationEnabled(n);
+                boolean ok = (accept == expect);
+                System.out.println((ok ? "pass" : "FAIL") + ": " +
+                        testCase.query + ": " + n);
+                allok &= ok;
+            }
+        }
+        if (!allok)
+            throw new Exception("TEST FAILED");
+    }
+}
--- a/test/sun/management/HotspotClassLoadingMBean/GetClassInitializationTime.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/test/sun/management/HotspotClassLoadingMBean/GetClassInitializationTime.java	Fri Apr 25 09:03:20 2008 -0400
@@ -37,7 +37,7 @@
 public class GetClassInitializationTime {
 
     private static HotspotClassLoadingMBean mbean =
-        (HotspotClassLoadingMBean)ManagementFactory.getHotspotClassLoadingMBean();
+        (HotspotClassLoadingMBean)ManagementFactoryHelper.getHotspotClassLoadingMBean();
 
     // Careful with these values.
     private static final long MIN_TIME_FOR_PASS = 1;
--- a/test/sun/management/HotspotClassLoadingMBean/GetClassLoadingTime.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/test/sun/management/HotspotClassLoadingMBean/GetClassLoadingTime.java	Fri Apr 25 09:03:20 2008 -0400
@@ -39,7 +39,7 @@
 public class GetClassLoadingTime {
 
     private static HotspotClassLoadingMBean mbean =
-        (HotspotClassLoadingMBean)ManagementFactory.getHotspotClassLoadingMBean();
+        (HotspotClassLoadingMBean)ManagementFactoryHelper.getHotspotClassLoadingMBean();
 
     // Careful with these values.
     private static final long MIN_TIME_FOR_PASS = 1;
--- a/test/sun/management/HotspotClassLoadingMBean/GetInitializedClassCount.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/test/sun/management/HotspotClassLoadingMBean/GetInitializedClassCount.java	Fri Apr 25 09:03:20 2008 -0400
@@ -37,7 +37,7 @@
 public class GetInitializedClassCount {
 
     private static HotspotClassLoadingMBean mbean =
-        (HotspotClassLoadingMBean)ManagementFactory.getHotspotClassLoadingMBean();
+        (HotspotClassLoadingMBean)ManagementFactoryHelper.getHotspotClassLoadingMBean();
 
     // Careful with these values.
     private static final long MIN_VALUE_FOR_PASS = 1;
--- a/test/sun/management/HotspotClassLoadingMBean/GetLoadedClassSize.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/test/sun/management/HotspotClassLoadingMBean/GetLoadedClassSize.java	Fri Apr 25 09:03:20 2008 -0400
@@ -37,7 +37,7 @@
 public class GetLoadedClassSize {
 
     private static HotspotClassLoadingMBean mbean =
-        (HotspotClassLoadingMBean)ManagementFactory.getHotspotClassLoadingMBean();
+        (HotspotClassLoadingMBean)ManagementFactoryHelper.getHotspotClassLoadingMBean();
 
     // Careful with these values.
     private static final long MIN_VALUE_FOR_PASS = 1;
--- a/test/sun/management/HotspotClassLoadingMBean/GetMethodDataSize.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/test/sun/management/HotspotClassLoadingMBean/GetMethodDataSize.java	Fri Apr 25 09:03:20 2008 -0400
@@ -37,7 +37,7 @@
 public class GetMethodDataSize {
 
     private static HotspotClassLoadingMBean mbean =
-        (HotspotClassLoadingMBean)ManagementFactory.getHotspotClassLoadingMBean();
+        (HotspotClassLoadingMBean)ManagementFactoryHelper.getHotspotClassLoadingMBean();
 
     // Careful with these values.
     private static final long MIN_VALUE_FOR_PASS = 1;
--- a/test/sun/management/HotspotClassLoadingMBean/GetUnloadedClassSize.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/test/sun/management/HotspotClassLoadingMBean/GetUnloadedClassSize.java	Fri Apr 25 09:03:20 2008 -0400
@@ -37,7 +37,7 @@
 public class GetUnloadedClassSize {
 
     private static HotspotClassLoadingMBean mbean =
-        (HotspotClassLoadingMBean)ManagementFactory.getHotspotClassLoadingMBean();
+        (HotspotClassLoadingMBean)ManagementFactoryHelper.getHotspotClassLoadingMBean();
 
     // Careful with these values.
     private static final long MIN_VALUE_FOR_PASS = 0;
--- a/test/sun/management/HotspotRuntimeMBean/GetSafepointCount.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/test/sun/management/HotspotRuntimeMBean/GetSafepointCount.java	Fri Apr 25 09:03:20 2008 -0400
@@ -37,7 +37,7 @@
 public class GetSafepointCount {
 
     private static HotspotRuntimeMBean mbean =
-        (HotspotRuntimeMBean)ManagementFactory.getHotspotRuntimeMBean();
+        (HotspotRuntimeMBean)ManagementFactoryHelper.getHotspotRuntimeMBean();
 
     private static final long NUM_THREAD_DUMPS = 5;
 
--- a/test/sun/management/HotspotRuntimeMBean/GetSafepointSyncTime.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/test/sun/management/HotspotRuntimeMBean/GetSafepointSyncTime.java	Fri Apr 25 09:03:20 2008 -0400
@@ -37,7 +37,7 @@
 public class GetSafepointSyncTime {
 
     private static HotspotRuntimeMBean mbean =
-        (HotspotRuntimeMBean)ManagementFactory.getHotspotRuntimeMBean();
+        (HotspotRuntimeMBean)ManagementFactoryHelper.getHotspotRuntimeMBean();
 
     private static final long NUM_THREAD_DUMPS = 300;
 
--- a/test/sun/management/HotspotRuntimeMBean/GetTotalSafepointTime.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/test/sun/management/HotspotRuntimeMBean/GetTotalSafepointTime.java	Fri Apr 25 09:03:20 2008 -0400
@@ -37,7 +37,7 @@
 public class GetTotalSafepointTime {
 
     private static HotspotRuntimeMBean mbean =
-        (HotspotRuntimeMBean)ManagementFactory.getHotspotRuntimeMBean();
+        (HotspotRuntimeMBean)ManagementFactoryHelper.getHotspotRuntimeMBean();
 
     private static final long NUM_THREAD_DUMPS = 100;
 
--- a/test/sun/management/HotspotThreadMBean/GetInternalThreads.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/test/sun/management/HotspotThreadMBean/GetInternalThreads.java	Fri Apr 25 09:03:20 2008 -0400
@@ -32,10 +32,11 @@
 import sun.management.*;
 import java.util.*;
 import java.lang.management.ThreadMXBean;
+import java.lang.management.ManagementFactory;
 
 public class GetInternalThreads {
     private static HotspotThreadMBean mbean =
-        ManagementFactory.getHotspotThreadMBean();
+        ManagementFactoryHelper.getHotspotThreadMBean();
 
     // Minimum number of VM internal threads
     //   VM thread, watcher thread, Low memory detector, compiler thread
@@ -55,7 +56,7 @@
         System.out.println("Internal Thread Count = " + value);
 
         ThreadMXBean thread =
-            java.lang.management.ManagementFactory.getThreadMXBean();
+            ManagementFactory.getThreadMXBean();
         if (!thread.isThreadCpuTimeSupported()) {
             System.out.println("Thread Cpu Time is not supported.");
             return;
--- a/test/tools/launcher/Arrrghs.java	Fri Apr 25 08:58:07 2008 -0400
+++ b/test/tools/launcher/Arrrghs.java	Fri Apr 25 09:03:20 2008 -0400
@@ -1,17 +1,5 @@
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.StringTokenizer;
-
 /*
- * Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -33,8 +21,19 @@
  * have any questions.
  */
 
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.StringTokenizer;
 
-public class Arrrghs{
+public class Arrrghs {
 
     /**
      * A group of tests to ensure that arguments are passed correctly to
@@ -113,12 +112,10 @@
         return retval;
     }
 
-
-
     private static boolean doExec0(ProcessBuilder pb, String expectedArguments) {
         boolean retval = false;
         try {
-            pb.redirectErrorStream(_debug);
+            pb.redirectErrorStream(true);
             Process p = pb.start();
             retval = detectCookie(p.getInputStream(), expectedArguments);
             p.waitFor();
@@ -167,7 +164,6 @@
             }
         }
 
-
         if (_debug) System.out.println("Starting Arrrghs tests");
         // Basic test
         if (!doExec("-a -b -c -d")) exitValue++;
--- a/test/tools/launcher/Arrrghs.sh	Fri Apr 25 08:58:07 2008 -0400
+++ b/test/tools/launcher/Arrrghs.sh	Fri Apr 25 09:03:20 2008 -0400
@@ -1,13 +1,13 @@
 #!/bin/sh
 # @test Arrrghs.sh
-# @bug 5030233 6214916 6356475 6571029
+# @bug 5030233 6214916 6356475 6571029 6684582
 # @build Arrrghs
 # @run shell Arrrghs.sh
 # @summary Argument parsing validation.
 # @author Joseph E. Kowalski
 
 #
-# Copyright 2004-2007 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 2004-2008 Sun Microsystems, Inc.  All Rights Reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -104,6 +104,44 @@
 }
 
 #
+# Test to ensure that a missing main class is indicated in the error message
+#
+TestMissingMainClass() {
+	# First create a small jar file with no main
+        printf "public class Foo {}\n" > Foo.java
+	$TESTJAVA/bin/javac Foo.java
+	if [ $? -ne 0 ]; then
+		printf "Error: compilation of Foo.java failed\n" 
+ 		exit 1
+	fi
+	printf "Main-Class: Bar\n" > manifest
+	$TESTJAVA/bin/jar -cvfm some.jar manifest Foo.class
+	if [ ! -f some.jar ]; then
+		printf "Error: did not find some.jar\n" 
+ 		exit 1
+	fi
+
+	# test a non-existence main-class using -jar 
+	mess="`$TESTJAVA/bin/java -jar some.jar 2>&1 1>/dev/null`"
+	echo $mess | grep 'Bar' 2>&1 > /dev/null
+	if [ $? -ne 0 ]; then
+		printf "Error: did not find main class missing message\n"
+		exit 1
+	fi
+
+	# test a non-existent main-class using classpath
+	mess="`$TESTJAVA/bin/java -cp some.jar Bar 2>&1 1>/dev/null`"
+	echo $mess | grep 'Bar' 2>&1 > /dev/null
+	if [ $? -ne 0 ]; then
+		printf "Error: did not find main class missing message\n"
+		exit 1
+	fi
+
+	# cleanup
+	rm -f some.jar Foo.* manifest
+}
+
+#
 # Main processing:
 #
 
@@ -117,6 +155,7 @@
 TestCP javac -classpath
 TestXUsage
 TestHelp
+TestMissingMainClass
 
 #
 # Tests for 6214916